OSDN Git Service

Check in a new gcc-4.4.0 toolchain.
authorJing Yu <jingyu@google.com>
Wed, 3 Jun 2009 18:11:52 +0000 (11:11 -0700)
committerJing Yu <jingyu@google.com>
Wed, 3 Jun 2009 18:11:52 +0000 (11:11 -0700)
gcc from google_vendor_src_branch @29689,
binutils, gdb, gmp, mpfr from android-toolchain @149396
This 32bit toolchain is built on gHardy.

175 files changed:
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ar
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/as
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/c++
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/g++
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/gcc
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ld
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/nm
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/objcopy
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/objdump
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ranlib
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/strip
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/lib/ldscripts/armelf.x
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/lib/ldscripts/armelf.xbn
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/lib/ldscripts/armelf.xc
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/lib/ldscripts/armelf.xn
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/lib/ldscripts/armelf.xs
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/lib/ldscripts/armelf.xsc
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/lib/ldscripts/armelf.xsw
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/lib/ldscripts/armelf.xw
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-addr2line
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ar
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-as
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-c++
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-c++filt
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-cpp
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-g++
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc-4.4.0
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gccbug
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcov
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdb
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdbtui
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gprof
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ld
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-nm
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-objcopy
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-objdump
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ranlib
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-readelf
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-run
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-size
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-strings
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-strip
linux-x86/toolchain/arm-eabi-4.4.0/info/as.info
linux-x86/toolchain/arm-eabi-4.4.0/info/bfd.info
linux-x86/toolchain/arm-eabi-4.4.0/info/cpp.info
linux-x86/toolchain/arm-eabi-4.4.0/info/cppinternals.info
linux-x86/toolchain/arm-eabi-4.4.0/info/dir [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/info/dir.old [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/info/gcc.info
linux-x86/toolchain/arm-eabi-4.4.0/info/gccinstall.info
linux-x86/toolchain/arm-eabi-4.4.0/info/gccint.info
linux-x86/toolchain/arm-eabi-4.4.0/info/gdb.info
linux-x86/toolchain/arm-eabi-4.4.0/info/gdbint.info
linux-x86/toolchain/arm-eabi-4.4.0/info/ld.info
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtbegin.o [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtend.o [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crti.o [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtn.o [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/libgcc.a [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/libgcov.a [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtbegin.o
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/include-fixed/limits.h
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/include-fixed/stdio.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/include-fixed/sys/types.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/install-tools/include/limits.h
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/install-tools/mkheaders.conf
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtbegin.o [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtend.o [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crti.o [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtn.o [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/libgcc.a [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/libgcov.a [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/libgcc.a
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/libgcov.a
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/ada/gcc-interface/ada-tree.def [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/alias.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/all-tree.def [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/ansidecl.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/auto-host.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/basic-block.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/bitmap.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/builtins.def [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/c-common.def [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cfghooks.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/aout.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/arm.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/bpabi.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/eabi.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/elf.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/unknown-elf.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/dbxelf.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/elfos.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/configargs.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/coretypes.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cp/cp-tree.def [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/defaults.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/double-int.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/filenames.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/function.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/gcc-plugin.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/ggc.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/gimple.def [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/gimple.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/gsstruct.def [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/gtype-desc.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/hard-reg-set.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/hashtab.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/hwint.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/input.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/insn-constants.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/insn-flags.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/insn-modes.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/intl.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/java/java-tree.def [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/libiberty.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/line-map.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/machmode.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/mode-classes.def [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/objc/objc-tree.def [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/obstack.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/omp-builtins.def [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/options.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/partition.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/plugin-version.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/pointer-set.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/predict.def [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/predict.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/safe-ctype.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/sbitmap.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/statistics.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/symtab.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/sync-builtins.def [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/system.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/target.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tm.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/toplev.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-check.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-pass.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-ssa-operands.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree.def [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/treestruct.def [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/varray.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/vec.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtbegin.o [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtend.o [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crti.o [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtn.o [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/libgcc.a [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/libgcov.a [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtbegin.o
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtbegin.o [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtend.o [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crti.o [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtn.o [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/libgcc.a [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/libgcov.a [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/libgcc.a
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/libgcov.a
linux-x86/toolchain/arm-eabi-4.4.0/lib/libarm-elf-linux-sim.a
linux-x86/toolchain/arm-eabi-4.4.0/lib/libiberty.a
linux-x86/toolchain/arm-eabi-4.4.0/lib32/libiberty.a [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/cc1
linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/cc1plus
linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/collect2
linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/install-tools/fixincl
linux-x86/toolchain/arm-eabi-4.4.0/man/man1/arm-eabi-cpp.1
linux-x86/toolchain/arm-eabi-4.4.0/man/man1/arm-eabi-g++.1
linux-x86/toolchain/arm-eabi-4.4.0/man/man1/arm-eabi-gcc.1
linux-x86/toolchain/arm-eabi-4.4.0/man/man1/arm-eabi-gcov.1
linux-x86/toolchain/arm-eabi-4.4.0/man/man7/fsf-funding.7
linux-x86/toolchain/arm-eabi-4.4.0/man/man7/gfdl.7
linux-x86/toolchain/arm-eabi-4.4.0/man/man7/gpl.7

index 4ac99da..0224fb7 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ar and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ar differ
index ecfa285..6d00662 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/as and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/as differ
index 4ea765c..f5d2a17 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/c++ and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/c++ differ
index 4ea765c..f5d2a17 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/g++ and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/g++ differ
index 6160094..8793799 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/gcc and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/gcc differ
index 7f849bd..be2a537 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ld and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ld differ
index f91a704..32b7594 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/nm and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/nm differ
index 7d3190e..06b6b2a 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/objcopy and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/objcopy differ
index 2f87bac..b485dc9 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/objdump and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/objdump differ
index b5de055..b8db0ae 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ranlib and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ranlib differ
index 1f5d591..1722826 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/strip and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/strip differ
index 9407806..9af2288 100644 (file)
@@ -3,7 +3,7 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
              "elf32-littlearm")
 OUTPUT_ARCH(arm)
 ENTRY(_start)
-SEARCH_DIR("/usr/local/arm-eabi/lib");
+SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
index c649238..d429b51 100644 (file)
@@ -3,7 +3,7 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
              "elf32-littlearm")
 OUTPUT_ARCH(arm)
 ENTRY(_start)
-SEARCH_DIR("/usr/local/arm-eabi/lib");
+SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
index 277d70a..0b9d953 100644 (file)
@@ -3,7 +3,7 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
              "elf32-littlearm")
 OUTPUT_ARCH(arm)
 ENTRY(_start)
-SEARCH_DIR("/usr/local/arm-eabi/lib");
+SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
index f02c34b..0dc4582 100644 (file)
@@ -3,7 +3,7 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
              "elf32-littlearm")
 OUTPUT_ARCH(arm)
 ENTRY(_start)
-SEARCH_DIR("/usr/local/arm-eabi/lib");
+SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
index 6cd7876..09af8a2 100644 (file)
@@ -3,7 +3,7 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
              "elf32-littlearm")
 OUTPUT_ARCH(arm)
 ENTRY(_start)
-SEARCH_DIR("/usr/local/arm-eabi/lib");
+SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
index 33dee15..ea16770 100644 (file)
@@ -3,7 +3,7 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
              "elf32-littlearm")
 OUTPUT_ARCH(arm)
 ENTRY(_start)
-SEARCH_DIR("/usr/local/arm-eabi/lib");
+SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
index 3fd8489..87d8d82 100644 (file)
@@ -3,7 +3,7 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
              "elf32-littlearm")
 OUTPUT_ARCH(arm)
 ENTRY(_start)
-SEARCH_DIR("/usr/local/arm-eabi/lib");
+SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
index ea6f619..adcf23f 100644 (file)
@@ -3,7 +3,7 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
              "elf32-littlearm")
 OUTPUT_ARCH(arm)
 ENTRY(_start)
-SEARCH_DIR("/usr/local/arm-eabi/lib");
+SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
index 4264bf2..6a526be 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-addr2line and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-addr2line differ
index 4ac99da..0224fb7 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ar and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ar differ
index ecfa285..6d00662 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-as and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-as differ
index 4ea765c..f5d2a17 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-c++ and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-c++ differ
index fadf302..a32268e 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-c++filt and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-c++filt differ
index bf37a1d..b38150d 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-cpp and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-cpp differ
index 4ea765c..f5d2a17 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-g++ and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-g++ differ
index 6160094..8793799 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc differ
index 6160094..8793799 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc-4.4.0 and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc-4.4.0 differ
index 355617c..9b8b15a 100755 (executable)
@@ -344,12 +344,12 @@ SEND-PR: support             I need help with gcc.
 `[ -n "$ARCH" ] && echo Architecture: $ARCH`
 `[ -n "$MACHINE" ] && echo Machine: $MACHINE`
        $ENVIRONMENT_C
-host: i686-pc-linux-gnu
-build: i686-pc-linux-gnu
+host: i686-unknown-linux-gnu
+build: i686-unknown-linux-gnu
 target: arm-unknown-eabi
 __EOF__
       cat >> $file << \__EOF__
-configured with: ../../../gcc-4.4.0/configure --prefix=/usr/local --target=arm-eabi --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --enable-languages=c,c++ --with-gmp=/usr/local/google/home/projects/toolchain/android-toolchain/install_4.4_checkin/obj/temp-install --with-mpfr=/usr/local/google/home/projects/toolchain/android-toolchain/install_4.4_checkin/obj/temp-install --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --with-abi=aapcs --with-gcc-version=4.4.0 --with-binutils-version=2.19 --with-gmp-version=4.2.4 --with-mpfr-version=2.4.1 --with-gdb-version=6.6 --with-arch=armv5te --program-transform-name='s,^,arm-eabi-,'
+configured with: ../../../gcc-4.4.0/configure --prefix=/usr/local --target=arm-eabi --host=i686-unknown-linux-gnu --build=i686-unknown-linux-gnu --enable-languages=c,c++ --with-gmp=/usr/local/google/home/projects/toolchain/android-toolchain/install_4.4_checkin/obj/temp-install --with-mpfr=/usr/local/google/home/projects/toolchain/android-toolchain/install_4.4_checkin/obj/temp-install --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --with-abi=aapcs --with-gcc-version=4.4.0 --with-binutils-version=2.19 --with-arch=armv5te --with-sysroot=/usr/local/google/home/projects/toolchain/android-toolchain/install_4.4_bin2.19/cupcake_rel_root --with-gmp-version=4.2.4 --with-mpfr-version=2.4.1 --with-gdb-version=6.6 --program-transform-name='s,^,arm-eabi-,'
 __EOF__
       cat >> $file << __EOF__
 >Description:
index 39d8e59..8d5f1d3 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcov and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcov differ
index 12fba59..84a562c 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdb and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdb differ
index 54fc3fc..3ed0f74 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdbtui and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdbtui differ
index ed04c2c..cb4bec9 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gprof and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gprof differ
index 7f849bd..be2a537 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ld and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ld differ
index f91a704..32b7594 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-nm and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-nm differ
index 7d3190e..06b6b2a 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-objcopy and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-objcopy differ
index 2f87bac..b485dc9 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-objdump and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-objdump differ
index b5de055..b8db0ae 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ranlib and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ranlib differ
index 3b7fef6..e2af727 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-readelf and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-readelf differ
index 8ae343b..8fcee1d 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-run and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-run differ
index a8905a7..51bdfc3 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-size and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-size differ
index a01c50b..928f367 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-strings and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-strings differ
index 1f5d591..1722826 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-strip and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-strip differ
index 6f98edc..3566e6d 100644 (file)
@@ -1,5 +1,4 @@
-This is as.info, produced by makeinfo version 4.8 from
-../../../../../binutils-2.19/gas/doc/as.texinfo.
+This is as.info, produced by makeinfo version 4.11 from ../../../../../binutils-2.19/gas/doc/as.texinfo.
 
 START-INFO-DIR-ENTRY
 * As: (as).                     The GNU assembler.
@@ -54,7 +53,7 @@ File: as.info,  Node: Overview,  Next: Invoking,  Prev: Top,  Up: Top
 1 Overview
 **********
 
-Here is a brief summary of how to invoke `as'.  For details, see *Note
+Here is a brief summary of how to invoke `as'.  For details, see *note
 Command-Line Options: Invoking.
 
      as [-a[cdghlns][=FILE]] [-alternate] [-D]
@@ -557,7 +556,7 @@ Motorola 68000 series.
 
 
    For details about the PDP-11 machine dependent features options, see
-*Note PDP-11-Options::.
+*note PDP-11-Options::.
 
 `-mpic | -mno-pic'
      Generate position-independent (or position-dependent) code.  The
@@ -1070,7 +1069,7 @@ line number in a physical file; the other refers to a line number in a
 directives; they bear no relation to physical files.  Logical file
 names help error messages reflect the original source file, when `as'
 source is itself synthesized from other files.  `as' understands the
-`#' directives emitted by the `gcc' preprocessor.  See also *Note
+`#' directives emitted by the `gcc' preprocessor.  See also *note
 `.file': File.
 
 \1f
@@ -1130,7 +1129,7 @@ File: as.info,  Node: Invoking,  Next: Syntax,  Prev: Overview,  Up: Top
 **********************
 
 This chapter describes command-line options available in _all_ versions
-of the GNU assembler; see *Note Machine Dependencies::, for options
+of the GNU assembler; see *note Machine Dependencies::, for options
 specific to particular machine architectures.
 
    If you are invoking `as' via the GNU C compiler, you can use the
@@ -1220,7 +1219,7 @@ File: as.info,  Node: alternate,  Next: D,  Prev: a,  Up: Invoking
 2.2 `--alternate'
 =================
 
-Begin in alternate macro mode, see *Note `.altmacro': Altmacro.
+Begin in alternate macro mode, see *note `.altmacro': Altmacro.
 
 \1f
 File: as.info,  Node: D,  Next: f,  Prev: alternate,  Up: Invoking
@@ -1617,8 +1616,7 @@ else you may get from your C compiler's preprocessor.  You can do
 include file processing with the `.include' directive (*note
 `.include': Include.).  You can use the GNU C compiler driver to get
 other "CPP" style preprocessing by giving the input file a `.S' suffix.
-*Note Options Controlling the Kind of Output: (gcc.info)Overall
-Options.
+*Note Options Controlling the Kind of Output: (gcc.info)Overall Options.
 
    Excess whitespace, comments, and character constants cannot be used
 in the portions of the input text that are not preprocessed.
@@ -1670,7 +1668,7 @@ for picoJava; `#' for Motorola PowerPC; `!' for the Renesas / SuperH SH;
 `!' on the SPARC; `#' on the ip2k; `#' on the m32c; `#' on the m32r;
 `|' on the 680x0; `#' on the 68HC11 and 68HC12; `#' on the Vax; `;' for
 the Z80; `!' for the Z8000; `#' on the V850; `#' for Xtensa systems;
-see *Note Machine Dependencies::.
+see *note Machine Dependencies::.
 
    On some machines there are two different line comment characters.
 One character only begins a comment if it is the first non-whitespace
@@ -1706,7 +1704,7 @@ File: as.info,  Node: Symbol Intro,  Next: Statements,  Prev: Comments,  Up: Syn
 A "symbol" is one or more characters chosen from the set of all letters
 (both upper and lower case), digits and the three characters `_.$'.  On
 most machines, you can also use `$' in symbol names; exceptions are
-noted in *Note Machine Dependencies::.  No symbol may begin with a
+noted in *note Machine Dependencies::.  No symbol may begin with a
 digit.  Case is significant.  There is no length limit: all characters
 are significant.  Symbols are delimited by characters not in that set,
 or by the beginning of a file (since the source program must end with a
@@ -1721,7 +1719,7 @@ File: as.info,  Node: Statements,  Next: Constants,  Prev: Symbol Intro,  Up: Sy
 
 A "statement" ends at a newline character (`\n') or line separator
 character.  (The line separator is usually `;', unless this conflicts
-with the comment character; see *Note Machine Dependencies::.)  The
+with the comment character; see *note Machine Dependencies::.)  The
 newline or separator character is considered part of the preceding
 statement.  Newlines and separators within character constants are an
 exception: they do not end statements.
@@ -2250,14 +2248,14 @@ to load into it before your program executes.  When your program starts
 running, all the contents of the bss section are zeroed bytes.
 
    The `.lcomm' pseudo-op defines a symbol in the bss section; see
-*Note `.lcomm': Lcomm.
+*note `.lcomm': Lcomm.
 
    The `.comm' pseudo-op may be used to declare a common symbol, which
-is another form of uninitialized symbol; see *Note `.comm': Comm.
+is another form of uninitialized symbol; see *note `.comm': Comm.
 
    When assembling for a target which supports multiple sections, such
 as ELF or COFF, you may switch into the `.bss' section and define
-symbols as usual; see *Note `.section': Section.  You may only assemble
+symbols as usual; see *note `.section': Section.  You may only assemble
 zero values into the section.  Typically the section will only contain
 symbol definitions and `.skip' directives (*note `.skip': Skip.).
 
@@ -2320,7 +2318,7 @@ File: as.info,  Node: Symbol Names,  Next: Dot,  Prev: Setting Symbols,  Up: Sym
 
 Symbol names begin with a letter or with one of `._'.  On most
 machines, you can also use `$' in symbol names; exceptions are noted in
-*Note Machine Dependencies::.  That character may be followed by any
+*note Machine Dependencies::.  That character may be followed by any
 string of digits, letters, dollar signs (unless otherwise noted for a
 particular target machine), and underscores.
 
@@ -3358,7 +3356,7 @@ File: as.info,  Node: Else,  Next: Elseif,  Prev: Eject,  Up: Pseudo Ops
 7.38 `.else'
 ============
 
-`.else' is part of the `as' support for conditional assembly; see *Note
+`.else' is part of the `as' support for conditional assembly; see *note
 `.if': If.  It marks the beginning of a section of code to be assembled
 if the condition for the preceding `.if' was false.
 
@@ -3369,7 +3367,7 @@ File: as.info,  Node: Elseif,  Next: End,  Prev: Else,  Up: Pseudo Ops
 ==============
 
 `.elseif' is part of the `as' support for conditional assembly; see
-*Note `.if': If.  It is shorthand for beginning a new `.if' block that
+*note `.if': If.  It is shorthand for beginning a new `.if' block that
 would otherwise fill the entire `.else' section.
 
 \1f
@@ -3414,13 +3412,13 @@ File: as.info,  Node: Equ,  Next: Equiv,  Prev: Endif,  Up: Pseudo Ops
 ==============================
 
 This directive sets the value of SYMBOL to EXPRESSION.  It is
-synonymous with `.set'; see *Note `.set': Set.
+synonymous with `.set'; see *note `.set': Set.
 
    The syntax for `equ' on the HPPA is `SYMBOL .equ EXPRESSION'.
 
    The syntax for `equ' on the Z80 is `SYMBOL equ EXPRESSION'.  On the
 Z80 it is an eror if SYMBOL is already defined, but the symbol is not
-protected from later redefinition.  Compare *Note Equiv::.
+protected from later redefinition.  Compare *note Equiv::.
 
 \1f
 File: as.info,  Node: Equiv,  Next: Eqv,  Prev: Equ,  Up: Pseudo Ops
@@ -3800,7 +3798,7 @@ statements, use \SYMBOL.
              move    d2,sp@-
              move    d3,sp@-
 
-   For some caveats with the spelling of SYMBOL, see also *Note Macro::.
+   For some caveats with the spelling of SYMBOL, see also *note Macro::.
 
 \1f
 File: as.info,  Node: Irpc,  Next: Lcomm,  Prev: Irp,  Up: Pseudo Ops
@@ -4807,7 +4805,7 @@ File: as.info,  Node: String,  Next: Struct,  Prev: Stab,  Up: Pseudo Ops
 than one string to copy, separated by commas.  Unless otherwise
 specified for a particular machine, the assembler marks the end of each
 string with a 0 byte.  You can use any of the escape sequences
-described in *Note Strings: Strings.
+described in *note Strings: Strings.
 
    The variants `string16', `string32' and `string64' differ from the
 `string' pseudo opcode in that each 8-bit character from STR is copied
@@ -5180,9 +5178,9 @@ like `gdb' can use it to process the linked file correctly.
 attributes.  Each attribute has a "vendor", "tag", and "value".  The
 vendor is a string, and indicates who sets the meaning of the tag.  The
 tag is an integer, and indicates what property the attribute describes.
-The value may be a string or an integer, and indicates how the
-property affects this object.  Missing attributes are the same as
-attributes with a zero value or empty string value.
+The value may be a string or an integer, and indicates how the property
+affects this object.  Missing attributes are the same as attributes
+with a zero value or empty string value.
 
    Object attributes were developed as part of the ABI for the ARM
 Architecture.  The file format is documented in `ELF for the ARM
@@ -5451,8 +5449,8 @@ File: as.info,  Node: Alpha Options,  Next: Alpha Syntax,  Prev: Alpha Notes,  U
 
 `-g'
      This option is used when the compiler generates debug information.
-     When `gcc' is using `mips-tfile' to generate debug information
-     for ECOFF, local labels must be passed through to the object file.
+     When `gcc' is using `mips-tfile' to generate debug information for
+     ECOFF, local labels must be passed through to the object file.
      Otherwise this option has no effect.
 
 `-GSIZE'
@@ -9309,7 +9307,7 @@ syntax.  Notable differences between the two syntaxes are:
      `source, dest' convention is maintained for compatibility with
      previous Unix assemblers.  Note that `bound', `invlpga', and
      instructions with 2 immediate operands, such as the `enter'
-     instruction, do _not_ have reversed order.  *Note i386-Bugs::.
+     instruction, do _not_ have reversed order.  *note i386-Bugs::.
 
    * In AT&T syntax the size of memory operands is determined from the
      last character of the instruction mnemonic.  Mnemonic suffixes of
@@ -11748,7 +11746,7 @@ The MIPS configurations of GNU `as' support these special options:
      `-mips32', `-mips32r2', `-mips64', and `-mips64r2' correspond to
      generic MIPS V, MIPS32, MIPS32 RELEASE 2, MIPS64, and MIPS64
      RELEASE 2 ISA processors, respectively.  You can also switch
-     instruction sets during the assembly; see *Note Directives to
+     instruction sets during the assembly; see *note Directives to
      override the ISA level: MIPS ISA.
 
 `-mgp32'
@@ -12204,7 +12202,7 @@ File: as.info,  Node: MMIX-Opts,  Next: MMIX-Expand,  Up: MMIX-Dependent
 The MMIX version of `as' has some machine-dependent options.
 
    When `--fixed-special-register-names' is specified, only the register
-names specified in *Note MMIX-Regs:: are recognized in the instructions
+names specified in *note MMIX-Regs:: are recognized in the instructions
 `PUT' and `GET'.
 
    You can use the `--globalize-symbols' to make all symbols global.
@@ -17204,13 +17202,12 @@ leave it out, state it!
    Often people omit facts because they think they know what causes the
 problem and assume that some details do not matter.  Thus, you might
 assume that the name of a symbol you use in an example does not matter.
-Well, probably it does not, but one cannot be sure.  Perhaps the bug
-is a stray memory reference which happens to fetch from the location
-where that name is stored in memory; perhaps, if the name were
-different, the contents of that location would fool the assembler into
-doing the right thing despite the bug.  Play it safe and give a
-specific, complete example.  That is the easiest thing for you to do,
-and the most helpful.
+Well, probably it does not, but one cannot be sure.  Perhaps the bug is
+a stray memory reference which happens to fetch from the location where
+that name is stored in memory; perhaps, if the name were different, the
+contents of that location would fool the assembler into doing the right
+thing despite the bug.  Play it safe and give a specific, complete
+example.  That is the easiest thing for you to do, and the most helpful.
 
    Keep in mind that the purpose of a bug report is to enable us to fix
 the bug if it is new to us.  Therefore, always write your bug reports
@@ -17629,20 +17626,19 @@ Appendix A GNU Free Documentation License
      H. Include an unaltered copy of this License.
      I. Preserve the section entitled "History", and its title, and add
      to    it an item stating at least the title, year, new authors, and
-       publisher of the Modified Version as given on the Title Page.
-     If    there is no section entitled "History" in the Document,
-     create one    stating the title, year, authors, and publisher of
-     the Document as    given on its Title Page, then add an item
+       publisher of the Modified Version as given on the Title Page.  If
+       there is no section entitled "History" in the Document, create
+     one    stating the title, year, authors, and publisher of the
+     Document as    given on its Title Page, then add an item
      describing the Modified    Version as stated in the previous
      sentence.
      J. Preserve the network location, if any, given in the Document for
-       public access to a Transparent copy of the Document, and
-     likewise    the network locations given in the Document for
-     previous versions    it was based on.  These may be placed in the
-     "History" section.     You may omit a network location for a work
-     that was published at    least four years before the Document
-     itself, or if the original    publisher of the version it refers
-     to gives permission.
+       public access to a Transparent copy of the Document, and likewise
+       the network locations given in the Document for previous versions
+       it was based on.  These may be placed in the "History" section.
+       You may omit a network location for a work that was published at
+       least four years before the Document itself, or if the original
+      publisher of the version it refers to gives permission.
      K. In any section entitled "Acknowledgements" or "Dedications",
      preserve the section's title, and preserve in the section all the
       substance and tone of each of the contributor acknowledgements
@@ -17821,8 +17817,8 @@ AS Index
 * Menu:
 
 * #:                                     Comments.            (line  38)
-* #APP:                                  Preprocessing.       (line  27)
-* #NO_APP:                               Preprocessing.       (line  27)
+* #APP:                                  Preprocessing.       (line  26)
+* #NO_APP:                               Preprocessing.       (line  26)
 * $ in symbol names <1>:                 SH64-Chars.          (line  10)
 * $ in symbol names <2>:                 SH-Chars.            (line  10)
 * $ in symbol names <3>:                 D30V-Chars.          (line  63)
@@ -19317,7 +19313,7 @@ AS Index
 * prefix operators:                      Prefix Ops.          (line   6)
 * prefixes, i386:                        i386-Prefixes.       (line   6)
 * preprocessing:                         Preprocessing.       (line   6)
-* preprocessing, turning on and off:     Preprocessing.       (line  27)
+* preprocessing, turning on and off:     Preprocessing.       (line  26)
 * previous directive:                    Previous.            (line   6)
 * primary attributes, COFF symbols:      COFF Symbols.        (line  13)
 * print directive:                       Print.               (line   6)
@@ -19646,7 +19642,7 @@ AS Index
 * tp register, V850:                     V850-Regs.           (line  20)
 * transform directive:                   Transform Directive. (line   6)
 * trusted compiler:                      f.                   (line   6)
-* turning preprocessing on and off:      Preprocessing.       (line  27)
+* turning preprocessing on and off:      Preprocessing.       (line  26)
 * type directive (COFF version):         Type.                (line  11)
 * type directive (ELF version):          Type.                (line  22)
 * type of a symbol:                      Symbol Type.         (line   6)
@@ -19781,494 +19777,494 @@ AS Index
 
 \1f
 Tag Table:
-Node: Top\7f795
-Node: Overview\7f1781
-Node: Manual\7f29672
-Node: GNU Assembler\7f30616
-Node: Object Formats\7f31787
-Node: Command Line\7f32239
-Node: Input Files\7f33326
-Node: Object\7f35307
-Node: Errors\7f36203
-Node: Invoking\7f37398
-Node: a\7f39353
-Node: alternate\7f41264
-Node: D\7f41436
-Node: f\7f41669
-Node: I\7f42177
-Node: K\7f42721
-Node: L\7f43025
-Node: listing\7f43764
-Node: M\7f45423
-Node: MD\7f49824
-Node: o\7f50250
-Node: R\7f50705
-Node: statistics\7f51735
-Node: traditional-format\7f52142
-Node: v\7f52615
-Node: W\7f52890
-Node: Z\7f53797
-Node: Syntax\7f54319
-Node: Preprocessing\7f54910
-Node: Whitespace\7f56473
-Node: Comments\7f56869
-Node: Symbol Intro\7f59022
-Node: Statements\7f59712
-Node: Constants\7f61633
-Node: Characters\7f62264
-Node: Strings\7f62766
-Node: Chars\7f64932
-Node: Numbers\7f65686
-Node: Integers\7f66226
-Node: Bignums\7f66882
-Node: Flonums\7f67238
-Node: Sections\7f68985
-Node: Secs Background\7f69363
-Node: Ld Sections\7f74402
-Node: As Sections\7f76786
-Node: Sub-Sections\7f77696
-Node: bss\7f80841
-Node: Symbols\7f81791
-Node: Labels\7f82439
-Node: Setting Symbols\7f83170
-Node: Symbol Names\7f83666
-Node: Dot\7f88729
-Node: Symbol Attributes\7f89176
-Node: Symbol Value\7f89913
-Node: Symbol Type\7f90958
-Node: a.out Symbols\7f91346
-Node: Symbol Desc\7f91608
-Node: Symbol Other\7f91903
-Node: COFF Symbols\7f92072
-Node: SOM Symbols\7f92745
-Node: Expressions\7f93187
-Node: Empty Exprs\7f93936
-Node: Integer Exprs\7f94283
-Node: Arguments\7f94678
-Node: Operators\7f95784
-Node: Prefix Ops\7f96119
-Node: Infix Ops\7f96447
-Node: Pseudo Ops\7f98837
-Node: Abort\7f104243
-Node: ABORT (COFF)\7f104655
-Node: Align\7f104863
-Node: Ascii\7f107145
-Node: Asciz\7f107454
-Node: Balign\7f107699
-Node: Byte\7f109562
-Node: Comm\7f109800
-Node: CFI directives\7f111174
-Node: LNS directives\7f116369
-Node: Data\7f118444
-Node: Def\7f118771
-Node: Desc\7f119003
-Node: Dim\7f119503
-Node: Double\7f119760
-Node: Eject\7f120098
-Node: Else\7f120273
-Node: Elseif\7f120573
-Node: End\7f120867
-Node: Endef\7f121082
-Node: Endfunc\7f121259
-Node: Endif\7f121434
-Node: Equ\7f121695
-Node: Equiv\7f122209
-Node: Eqv\7f122765
-Node: Err\7f123129
-Node: Error\7f123440
-Node: Exitm\7f123885
-Node: Extern\7f124054
-Node: Fail\7f124315
-Node: File\7f124760
-Node: Fill\7f125237
-Node: Float\7f126201
-Node: Func\7f126543
-Node: Global\7f127133
-Node: Gnu_attribute\7f127890
-Node: Hidden\7f128115
-Node: hword\7f128701
-Node: Ident\7f129029
-Node: If\7f129603
-Node: Incbin\7f132662
-Node: Include\7f133357
-Node: Int\7f133908
-Node: Internal\7f134289
-Node: Irp\7f134937
-Node: Irpc\7f135816
-Node: Lcomm\7f136733
-Node: Lflags\7f137481
-Node: Line\7f137675
-Node: Linkonce\7f138594
-Node: Ln\7f139823
-Node: MRI\7f139984
-Node: List\7f140322
-Node: Long\7f140930
-Node: Macro\7f141117
-Node: Altmacro\7f147039
-Node: Noaltmacro\7f148370
-Node: Nolist\7f148539
-Node: Octa\7f148969
-Node: Org\7f149303
-Node: P2align\7f150586
-Node: Previous\7f152514
-Node: PopSection\7f153927
-Node: Print\7f154435
-Node: Protected\7f154664
-Node: Psize\7f155311
-Node: Purgem\7f155995
-Node: PushSection\7f156216
-Node: Quad\7f156959
-Node: Reloc\7f157415
-Node: Rept\7f158176
-Node: Sbttl\7f158590
-Node: Scl\7f158955
-Node: Section\7f159296
-Node: Set\7f164433
-Node: Short\7f165070
-Node: Single\7f165391
-Node: Size\7f165736
-Node: Sleb128\7f166408
-Node: Skip\7f166732
-Node: Space\7f167056
-Node: Stab\7f167697
-Node: String\7f169701
-Node: Struct\7f170695
-Node: SubSection\7f171420
-Node: Symver\7f171983
-Node: Tag\7f174376
-Node: Text\7f174758
-Node: Title\7f175079
-Node: Type\7f175460
-Node: Uleb128\7f177183
-Node: Val\7f177507
-Node: Version\7f177757
-Node: VTableEntry\7f178032
-Node: VTableInherit\7f178322
-Node: Warning\7f178772
-Node: Weak\7f179006
-Node: Weakref\7f179675
-Node: Word\7f180640
-Node: Deprecated\7f182486
-Node: Object Attributes\7f182721
-Node: GNU Object Attributes\7f184441
-Node: Defining New Object Attributes\7f186994
-Node: Machine Dependencies\7f187791
-Node: Alpha-Dependent\7f190675
-Node: Alpha Notes\7f191089
-Node: Alpha Options\7f191370
-Node: Alpha Syntax\7f193568
-Node: Alpha-Chars\7f194037
-Node: Alpha-Regs\7f194268
-Node: Alpha-Relocs\7f194655
-Node: Alpha Floating Point\7f200913
-Node: Alpha Directives\7f201135
-Node: Alpha Opcodes\7f206658
-Node: ARC-Dependent\7f206953
-Node: ARC Options\7f207336
-Node: ARC Syntax\7f208405
-Node: ARC-Chars\7f208637
-Node: ARC-Regs\7f208769
-Node: ARC Floating Point\7f208893
-Node: ARC Directives\7f209204
-Node: ARC Opcodes\7f215176
-Node: ARM-Dependent\7f215402
-Node: ARM Options\7f215867
-Node: ARM Syntax\7f222000
-Node: ARM-Chars\7f222269
-Node: ARM-Regs\7f222793
-Node: ARM Floating Point\7f223002
-Node: ARM-Relocations\7f223201
-Node: ARM Directives\7f224154
-Ref: arm_fnstart\7f228169
-Ref: arm_fnend\7f228244
-Ref: arm_save\7f229261
-Ref: arm_pad\7f230591
-Ref: arm_movsp\7f230797
-Ref: arm_setfp\7f230975
-Node: ARM Opcodes\7f232526
-Node: ARM Mapping Symbols\7f234614
-Node: ARM Unwinding Tutorial\7f235424
-Node: AVR-Dependent\7f241626
-Node: AVR Options\7f241912
-Node: AVR Syntax\7f244743
-Node: AVR-Chars\7f245030
-Node: AVR-Regs\7f245436
-Node: AVR-Modifiers\7f246015
-Node: AVR Opcodes\7f248075
-Node: BFIN-Dependent\7f253321
-Node: BFIN Syntax\7f253575
-Node: BFIN Directives\7f259271
-Node: CR16-Dependent\7f259678
-Node: CR16 Operand Qualifiers\7f259922
-Node: CRIS-Dependent\7f261688
-Node: CRIS-Opts\7f262034
-Ref: march-option\7f263652
-Node: CRIS-Expand\7f265469
-Node: CRIS-Symbols\7f266652
-Node: CRIS-Syntax\7f267821
-Node: CRIS-Chars\7f268157
-Node: CRIS-Pic\7f268708
-Ref: crispic\7f268904
-Node: CRIS-Regs\7f272444
-Node: CRIS-Pseudos\7f272861
-Ref: crisnous\7f273637
-Node: D10V-Dependent\7f274919
-Node: D10V-Opts\7f275270
-Node: D10V-Syntax\7f276233
-Node: D10V-Size\7f276762
-Node: D10V-Subs\7f277735
-Node: D10V-Chars\7f278770
-Node: D10V-Regs\7f280374
-Node: D10V-Addressing\7f281419
-Node: D10V-Word\7f282105
-Node: D10V-Float\7f282620
-Node: D10V-Opcodes\7f282931
-Node: D30V-Dependent\7f283324
-Node: D30V-Opts\7f283677
-Node: D30V-Syntax\7f284352
-Node: D30V-Size\7f284884
-Node: D30V-Subs\7f285855
-Node: D30V-Chars\7f286890
-Node: D30V-Guarded\7f289188
-Node: D30V-Regs\7f289868
-Node: D30V-Addressing\7f291007
-Node: D30V-Float\7f291675
-Node: D30V-Opcodes\7f291986
-Node: H8/300-Dependent\7f292379
-Node: H8/300 Options\7f292791
-Node: H8/300 Syntax\7f293058
-Node: H8/300-Chars\7f293359
-Node: H8/300-Regs\7f293658
-Node: H8/300-Addressing\7f294577
-Node: H8/300 Floating Point\7f295618
-Node: H8/300 Directives\7f295945
-Node: H8/300 Opcodes\7f297073
-Node: HPPA-Dependent\7f305395
-Node: HPPA Notes\7f305830
-Node: HPPA Options\7f306588
-Node: HPPA Syntax\7f306783
-Node: HPPA Floating Point\7f308053
-Node: HPPA Directives\7f308259
-Node: HPPA Opcodes\7f316945
-Node: ESA/390-Dependent\7f317204
-Node: ESA/390 Notes\7f317664
-Node: ESA/390 Options\7f318455
-Node: ESA/390 Syntax\7f318665
-Node: ESA/390 Floating Point\7f320838
-Node: ESA/390 Directives\7f321117
-Node: ESA/390 Opcodes\7f324406
-Node: i386-Dependent\7f324668
-Node: i386-Options\7f325792
-Node: i386-Directives\7f329494
-Node: i386-Syntax\7f330232
-Node: i386-Mnemonics\7f332665
-Node: i386-Regs\7f335733
-Node: i386-Prefixes\7f337778
-Node: i386-Memory\7f340538
-Node: i386-Jumps\7f343475
-Node: i386-Float\7f344596
-Node: i386-SIMD\7f346427
-Node: i386-16bit\7f347538
-Node: i386-Bugs\7f349578
-Node: i386-Arch\7f350332
-Node: i386-Notes\7f352837
-Node: i860-Dependent\7f353695
-Node: Notes-i860\7f354091
-Node: Options-i860\7f354996
-Node: Directives-i860\7f356359
-Node: Opcodes for i860\7f357428
-Node: i960-Dependent\7f359595
-Node: Options-i960\7f359998
-Node: Floating Point-i960\7f363883
-Node: Directives-i960\7f364151
-Node: Opcodes for i960\7f366185
-Node: callj-i960\7f366802
-Node: Compare-and-branch-i960\7f367291
-Node: IA-64-Dependent\7f369195
-Node: IA-64 Options\7f369496
-Node: IA-64 Syntax\7f372656
-Node: IA-64-Chars\7f373019
-Node: IA-64-Regs\7f373249
-Node: IA-64-Bits\7f374175
-Node: IA-64 Opcodes\7f374684
-Node: IP2K-Dependent\7f374956
-Node: IP2K-Opts\7f375184
-Node: M32C-Dependent\7f375664
-Node: M32C-Opts\7f376188
-Node: M32C-Modifiers\7f376611
-Node: M32R-Dependent\7f378398
-Node: M32R-Opts\7f378719
-Node: M32R-Directives\7f382886
-Node: M32R-Warnings\7f386861
-Node: M68K-Dependent\7f389867
-Node: M68K-Opts\7f390334
-Node: M68K-Syntax\7f397726
-Node: M68K-Moto-Syntax\7f399566
-Node: M68K-Float\7f402156
-Node: M68K-Directives\7f402676
-Node: M68K-opcodes\7f404004
-Node: M68K-Branch\7f404230
-Node: M68K-Chars\7f408428
-Node: M68HC11-Dependent\7f408841
-Node: M68HC11-Opts\7f409372
-Node: M68HC11-Syntax\7f413193
-Node: M68HC11-Modifiers\7f415407
-Node: M68HC11-Directives\7f417235
-Node: M68HC11-Float\7f418611
-Node: M68HC11-opcodes\7f419139
-Node: M68HC11-Branch\7f419321
-Node: MIPS-Dependent\7f421770
-Node: MIPS Opts\7f422930
-Node: MIPS Object\7f432516
-Node: MIPS Stabs\7f434082
-Node: MIPS symbol sizes\7f434804
-Node: MIPS ISA\7f436473
-Node: MIPS autoextend\7f437947
-Node: MIPS insn\7f438677
-Node: MIPS option stack\7f439174
-Node: MIPS ASE instruction generation overrides\7f439948
-Node: MIPS floating-point\7f441762
-Node: MMIX-Dependent\7f442648
-Node: MMIX-Opts\7f443028
-Node: MMIX-Expand\7f446632
-Node: MMIX-Syntax\7f447947
-Ref: mmixsite\7f448304
-Node: MMIX-Chars\7f449145
-Node: MMIX-Symbols\7f449799
-Node: MMIX-Regs\7f451867
-Node: MMIX-Pseudos\7f452892
-Ref: MMIX-loc\7f453033
-Ref: MMIX-local\7f454113
-Ref: MMIX-is\7f454645
-Ref: MMIX-greg\7f454916
-Ref: GREG-base\7f455835
-Ref: MMIX-byte\7f457152
-Ref: MMIX-constants\7f457623
-Ref: MMIX-prefix\7f458269
-Ref: MMIX-spec\7f458643
-Node: MMIX-mmixal\7f458977
-Node: MSP430-Dependent\7f462475
-Node: MSP430 Options\7f462941
-Node: MSP430 Syntax\7f463227
-Node: MSP430-Macros\7f463543
-Node: MSP430-Chars\7f464274
-Node: MSP430-Regs\7f464587
-Node: MSP430-Ext\7f465147
-Node: MSP430 Floating Point\7f466968
-Node: MSP430 Directives\7f467192
-Node: MSP430 Opcodes\7f467983
-Node: MSP430 Profiling Capability\7f468378
-Node: PDP-11-Dependent\7f470707
-Node: PDP-11-Options\7f471096
-Node: PDP-11-Pseudos\7f476167
-Node: PDP-11-Syntax\7f476512
-Node: PDP-11-Mnemonics\7f477264
-Node: PDP-11-Synthetic\7f477566
-Node: PJ-Dependent\7f477784
-Node: PJ Options\7f478009
-Node: PPC-Dependent\7f478286
-Node: PowerPC-Opts\7f478573
-Node: PowerPC-Pseudo\7f481092
-Node: SH-Dependent\7f481691
-Node: SH Options\7f482103
-Node: SH Syntax\7f483111
-Node: SH-Chars\7f483384
-Node: SH-Regs\7f483678
-Node: SH-Addressing\7f484292
-Node: SH Floating Point\7f485201
-Node: SH Directives\7f486295
-Node: SH Opcodes\7f486665
-Node: SH64-Dependent\7f490987
-Node: SH64 Options\7f491350
-Node: SH64 Syntax\7f493147
-Node: SH64-Chars\7f493430
-Node: SH64-Regs\7f493730
-Node: SH64-Addressing\7f494826
-Node: SH64 Directives\7f496009
-Node: SH64 Opcodes\7f497119
-Node: Sparc-Dependent\7f497835
-Node: Sparc-Opts\7f498245
-Node: Sparc-Aligned-Data\7f500502
-Node: Sparc-Syntax\7f501334
-Node: Sparc-Chars\7f501908
-Node: Sparc-Regs\7f502141
-Node: Sparc-Constants\7f507252
-Node: Sparc-Relocs\7f512012
-Node: Sparc-Size-Translations\7f516692
-Node: Sparc-Float\7f518341
-Node: Sparc-Directives\7f518536
-Node: TIC54X-Dependent\7f520496
-Node: TIC54X-Opts\7f521222
-Node: TIC54X-Block\7f522265
-Node: TIC54X-Env\7f522625
-Node: TIC54X-Constants\7f522973
-Node: TIC54X-Subsyms\7f523375
-Node: TIC54X-Locals\7f525284
-Node: TIC54X-Builtins\7f526028
-Node: TIC54X-Ext\7f528499
-Node: TIC54X-Directives\7f529070
-Node: TIC54X-Macros\7f539972
-Node: TIC54X-MMRegs\7f542083
-Node: Z80-Dependent\7f542299
-Node: Z80 Options\7f542687
-Node: Z80 Syntax\7f544110
-Node: Z80-Chars\7f544782
-Node: Z80-Regs\7f545316
-Node: Z80-Case\7f545668
-Node: Z80 Floating Point\7f546113
-Node: Z80 Directives\7f546307
-Node: Z80 Opcodes\7f547932
-Node: Z8000-Dependent\7f549276
-Node: Z8000 Options\7f550237
-Node: Z8000 Syntax\7f550454
-Node: Z8000-Chars\7f550744
-Node: Z8000-Regs\7f550977
-Node: Z8000-Addressing\7f551767
-Node: Z8000 Directives\7f552884
-Node: Z8000 Opcodes\7f554493
-Node: Vax-Dependent\7f564435
-Node: VAX-Opts\7f564952
-Node: VAX-float\7f568687
-Node: VAX-directives\7f569319
-Node: VAX-opcodes\7f570180
-Node: VAX-branch\7f570569
-Node: VAX-operands\7f573076
-Node: VAX-no\7f573839
-Node: V850-Dependent\7f574076
-Node: V850 Options\7f574474
-Node: V850 Syntax\7f576863
-Node: V850-Chars\7f577103
-Node: V850-Regs\7f577268
-Node: V850 Floating Point\7f578836
-Node: V850 Directives\7f579042
-Node: V850 Opcodes\7f580185
-Node: Xtensa-Dependent\7f586077
-Node: Xtensa Options\7f586806
-Node: Xtensa Syntax\7f589616
-Node: Xtensa Opcodes\7f591505
-Node: Xtensa Registers\7f593299
-Node: Xtensa Optimizations\7f593932
-Node: Density Instructions\7f594384
-Node: Xtensa Automatic Alignment\7f595486
-Node: Xtensa Relaxation\7f597933
-Node: Xtensa Branch Relaxation\7f598841
-Node: Xtensa Call Relaxation\7f600213
-Node: Xtensa Immediate Relaxation\7f601999
-Node: Xtensa Directives\7f604573
-Node: Schedule Directive\7f606282
-Node: Longcalls Directive\7f606622
-Node: Transform Directive\7f607166
-Node: Literal Directive\7f607908
-Ref: Literal Directive-Footnote-1\7f611447
-Node: Literal Position Directive\7f611589
-Node: Literal Prefix Directive\7f613288
-Node: Absolute Literals Directive\7f614186
-Node: Reporting Bugs\7f615493
-Node: Bug Criteria\7f616219
-Node: Bug Reporting\7f616986
-Node: Acknowledgements\7f623635
-Ref: Acknowledgements-Footnote-1\7f628533
-Node: GNU Free Documentation License\7f628559
-Node: AS Index\7f648289
+Node: Top\7f796
+Node: Overview\7f1782
+Node: Manual\7f29673
+Node: GNU Assembler\7f30617
+Node: Object Formats\7f31788
+Node: Command Line\7f32240
+Node: Input Files\7f33327
+Node: Object\7f35308
+Node: Errors\7f36204
+Node: Invoking\7f37399
+Node: a\7f39354
+Node: alternate\7f41265
+Node: D\7f41437
+Node: f\7f41670
+Node: I\7f42178
+Node: K\7f42722
+Node: L\7f43026
+Node: listing\7f43765
+Node: M\7f45424
+Node: MD\7f49825
+Node: o\7f50251
+Node: R\7f50706
+Node: statistics\7f51736
+Node: traditional-format\7f52143
+Node: v\7f52616
+Node: W\7f52891
+Node: Z\7f53798
+Node: Syntax\7f54320
+Node: Preprocessing\7f54911
+Node: Whitespace\7f56474
+Node: Comments\7f56870
+Node: Symbol Intro\7f59023
+Node: Statements\7f59713
+Node: Constants\7f61634
+Node: Characters\7f62265
+Node: Strings\7f62767
+Node: Chars\7f64933
+Node: Numbers\7f65687
+Node: Integers\7f66227
+Node: Bignums\7f66883
+Node: Flonums\7f67239
+Node: Sections\7f68986
+Node: Secs Background\7f69364
+Node: Ld Sections\7f74403
+Node: As Sections\7f76787
+Node: Sub-Sections\7f77697
+Node: bss\7f80842
+Node: Symbols\7f81792
+Node: Labels\7f82440
+Node: Setting Symbols\7f83171
+Node: Symbol Names\7f83667
+Node: Dot\7f88730
+Node: Symbol Attributes\7f89177
+Node: Symbol Value\7f89914
+Node: Symbol Type\7f90959
+Node: a.out Symbols\7f91347
+Node: Symbol Desc\7f91609
+Node: Symbol Other\7f91904
+Node: COFF Symbols\7f92073
+Node: SOM Symbols\7f92746
+Node: Expressions\7f93188
+Node: Empty Exprs\7f93937
+Node: Integer Exprs\7f94284
+Node: Arguments\7f94679
+Node: Operators\7f95785
+Node: Prefix Ops\7f96120
+Node: Infix Ops\7f96448
+Node: Pseudo Ops\7f98838
+Node: Abort\7f104244
+Node: ABORT (COFF)\7f104656
+Node: Align\7f104864
+Node: Ascii\7f107146
+Node: Asciz\7f107455
+Node: Balign\7f107700
+Node: Byte\7f109563
+Node: Comm\7f109801
+Node: CFI directives\7f111175
+Node: LNS directives\7f116370
+Node: Data\7f118445
+Node: Def\7f118772
+Node: Desc\7f119004
+Node: Dim\7f119504
+Node: Double\7f119761
+Node: Eject\7f120099
+Node: Else\7f120274
+Node: Elseif\7f120574
+Node: End\7f120868
+Node: Endef\7f121083
+Node: Endfunc\7f121260
+Node: Endif\7f121435
+Node: Equ\7f121696
+Node: Equiv\7f122210
+Node: Eqv\7f122766
+Node: Err\7f123130
+Node: Error\7f123441
+Node: Exitm\7f123886
+Node: Extern\7f124055
+Node: Fail\7f124316
+Node: File\7f124761
+Node: Fill\7f125238
+Node: Float\7f126202
+Node: Func\7f126544
+Node: Global\7f127134
+Node: Gnu_attribute\7f127891
+Node: Hidden\7f128116
+Node: hword\7f128702
+Node: Ident\7f129030
+Node: If\7f129604
+Node: Incbin\7f132663
+Node: Include\7f133358
+Node: Int\7f133909
+Node: Internal\7f134290
+Node: Irp\7f134938
+Node: Irpc\7f135817
+Node: Lcomm\7f136734
+Node: Lflags\7f137482
+Node: Line\7f137676
+Node: Linkonce\7f138595
+Node: Ln\7f139824
+Node: MRI\7f139985
+Node: List\7f140323
+Node: Long\7f140931
+Node: Macro\7f141118
+Node: Altmacro\7f147040
+Node: Noaltmacro\7f148371
+Node: Nolist\7f148540
+Node: Octa\7f148970
+Node: Org\7f149304
+Node: P2align\7f150587
+Node: Previous\7f152515
+Node: PopSection\7f153928
+Node: Print\7f154436
+Node: Protected\7f154665
+Node: Psize\7f155312
+Node: Purgem\7f155996
+Node: PushSection\7f156217
+Node: Quad\7f156960
+Node: Reloc\7f157416
+Node: Rept\7f158177
+Node: Sbttl\7f158591
+Node: Scl\7f158956
+Node: Section\7f159297
+Node: Set\7f164434
+Node: Short\7f165071
+Node: Single\7f165392
+Node: Size\7f165737
+Node: Sleb128\7f166409
+Node: Skip\7f166733
+Node: Space\7f167057
+Node: Stab\7f167698
+Node: String\7f169702
+Node: Struct\7f170696
+Node: SubSection\7f171421
+Node: Symver\7f171984
+Node: Tag\7f174377
+Node: Text\7f174759
+Node: Title\7f175080
+Node: Type\7f175461
+Node: Uleb128\7f177184
+Node: Val\7f177508
+Node: Version\7f177758
+Node: VTableEntry\7f178033
+Node: VTableInherit\7f178323
+Node: Warning\7f178773
+Node: Weak\7f179007
+Node: Weakref\7f179676
+Node: Word\7f180641
+Node: Deprecated\7f182487
+Node: Object Attributes\7f182722
+Node: GNU Object Attributes\7f184442
+Node: Defining New Object Attributes\7f186995
+Node: Machine Dependencies\7f187792
+Node: Alpha-Dependent\7f190676
+Node: Alpha Notes\7f191090
+Node: Alpha Options\7f191371
+Node: Alpha Syntax\7f193569
+Node: Alpha-Chars\7f194038
+Node: Alpha-Regs\7f194269
+Node: Alpha-Relocs\7f194656
+Node: Alpha Floating Point\7f200914
+Node: Alpha Directives\7f201136
+Node: Alpha Opcodes\7f206659
+Node: ARC-Dependent\7f206954
+Node: ARC Options\7f207337
+Node: ARC Syntax\7f208406
+Node: ARC-Chars\7f208638
+Node: ARC-Regs\7f208770
+Node: ARC Floating Point\7f208894
+Node: ARC Directives\7f209205
+Node: ARC Opcodes\7f215177
+Node: ARM-Dependent\7f215403
+Node: ARM Options\7f215868
+Node: ARM Syntax\7f222001
+Node: ARM-Chars\7f222270
+Node: ARM-Regs\7f222794
+Node: ARM Floating Point\7f223003
+Node: ARM-Relocations\7f223202
+Node: ARM Directives\7f224155
+Ref: arm_fnstart\7f228170
+Ref: arm_fnend\7f228245
+Ref: arm_save\7f229262
+Ref: arm_pad\7f230592
+Ref: arm_movsp\7f230798
+Ref: arm_setfp\7f230976
+Node: ARM Opcodes\7f232527
+Node: ARM Mapping Symbols\7f234615
+Node: ARM Unwinding Tutorial\7f235425
+Node: AVR-Dependent\7f241627
+Node: AVR Options\7f241913
+Node: AVR Syntax\7f244744
+Node: AVR-Chars\7f245031
+Node: AVR-Regs\7f245437
+Node: AVR-Modifiers\7f246016
+Node: AVR Opcodes\7f248076
+Node: BFIN-Dependent\7f253322
+Node: BFIN Syntax\7f253576
+Node: BFIN Directives\7f259272
+Node: CR16-Dependent\7f259679
+Node: CR16 Operand Qualifiers\7f259923
+Node: CRIS-Dependent\7f261689
+Node: CRIS-Opts\7f262035
+Ref: march-option\7f263653
+Node: CRIS-Expand\7f265470
+Node: CRIS-Symbols\7f266653
+Node: CRIS-Syntax\7f267822
+Node: CRIS-Chars\7f268158
+Node: CRIS-Pic\7f268709
+Ref: crispic\7f268905
+Node: CRIS-Regs\7f272445
+Node: CRIS-Pseudos\7f272862
+Ref: crisnous\7f273638
+Node: D10V-Dependent\7f274920
+Node: D10V-Opts\7f275271
+Node: D10V-Syntax\7f276234
+Node: D10V-Size\7f276763
+Node: D10V-Subs\7f277736
+Node: D10V-Chars\7f278771
+Node: D10V-Regs\7f280375
+Node: D10V-Addressing\7f281420
+Node: D10V-Word\7f282106
+Node: D10V-Float\7f282621
+Node: D10V-Opcodes\7f282932
+Node: D30V-Dependent\7f283325
+Node: D30V-Opts\7f283678
+Node: D30V-Syntax\7f284353
+Node: D30V-Size\7f284885
+Node: D30V-Subs\7f285856
+Node: D30V-Chars\7f286891
+Node: D30V-Guarded\7f289189
+Node: D30V-Regs\7f289869
+Node: D30V-Addressing\7f291008
+Node: D30V-Float\7f291676
+Node: D30V-Opcodes\7f291987
+Node: H8/300-Dependent\7f292380
+Node: H8/300 Options\7f292792
+Node: H8/300 Syntax\7f293059
+Node: H8/300-Chars\7f293360
+Node: H8/300-Regs\7f293659
+Node: H8/300-Addressing\7f294578
+Node: H8/300 Floating Point\7f295619
+Node: H8/300 Directives\7f295946
+Node: H8/300 Opcodes\7f297074
+Node: HPPA-Dependent\7f305396
+Node: HPPA Notes\7f305831
+Node: HPPA Options\7f306589
+Node: HPPA Syntax\7f306784
+Node: HPPA Floating Point\7f308054
+Node: HPPA Directives\7f308260
+Node: HPPA Opcodes\7f316946
+Node: ESA/390-Dependent\7f317205
+Node: ESA/390 Notes\7f317665
+Node: ESA/390 Options\7f318456
+Node: ESA/390 Syntax\7f318666
+Node: ESA/390 Floating Point\7f320839
+Node: ESA/390 Directives\7f321118
+Node: ESA/390 Opcodes\7f324407
+Node: i386-Dependent\7f324669
+Node: i386-Options\7f325793
+Node: i386-Directives\7f329495
+Node: i386-Syntax\7f330233
+Node: i386-Mnemonics\7f332666
+Node: i386-Regs\7f335734
+Node: i386-Prefixes\7f337779
+Node: i386-Memory\7f340539
+Node: i386-Jumps\7f343476
+Node: i386-Float\7f344597
+Node: i386-SIMD\7f346428
+Node: i386-16bit\7f347539
+Node: i386-Bugs\7f349579
+Node: i386-Arch\7f350333
+Node: i386-Notes\7f352838
+Node: i860-Dependent\7f353696
+Node: Notes-i860\7f354092
+Node: Options-i860\7f354997
+Node: Directives-i860\7f356360
+Node: Opcodes for i860\7f357429
+Node: i960-Dependent\7f359596
+Node: Options-i960\7f359999
+Node: Floating Point-i960\7f363884
+Node: Directives-i960\7f364152
+Node: Opcodes for i960\7f366186
+Node: callj-i960\7f366803
+Node: Compare-and-branch-i960\7f367292
+Node: IA-64-Dependent\7f369196
+Node: IA-64 Options\7f369497
+Node: IA-64 Syntax\7f372657
+Node: IA-64-Chars\7f373020
+Node: IA-64-Regs\7f373250
+Node: IA-64-Bits\7f374176
+Node: IA-64 Opcodes\7f374685
+Node: IP2K-Dependent\7f374957
+Node: IP2K-Opts\7f375185
+Node: M32C-Dependent\7f375665
+Node: M32C-Opts\7f376189
+Node: M32C-Modifiers\7f376612
+Node: M32R-Dependent\7f378399
+Node: M32R-Opts\7f378720
+Node: M32R-Directives\7f382887
+Node: M32R-Warnings\7f386862
+Node: M68K-Dependent\7f389868
+Node: M68K-Opts\7f390335
+Node: M68K-Syntax\7f397727
+Node: M68K-Moto-Syntax\7f399567
+Node: M68K-Float\7f402157
+Node: M68K-Directives\7f402677
+Node: M68K-opcodes\7f404005
+Node: M68K-Branch\7f404231
+Node: M68K-Chars\7f408429
+Node: M68HC11-Dependent\7f408842
+Node: M68HC11-Opts\7f409373
+Node: M68HC11-Syntax\7f413194
+Node: M68HC11-Modifiers\7f415408
+Node: M68HC11-Directives\7f417236
+Node: M68HC11-Float\7f418612
+Node: M68HC11-opcodes\7f419140
+Node: M68HC11-Branch\7f419322
+Node: MIPS-Dependent\7f421771
+Node: MIPS Opts\7f422931
+Node: MIPS Object\7f432517
+Node: MIPS Stabs\7f434083
+Node: MIPS symbol sizes\7f434805
+Node: MIPS ISA\7f436474
+Node: MIPS autoextend\7f437948
+Node: MIPS insn\7f438678
+Node: MIPS option stack\7f439175
+Node: MIPS ASE instruction generation overrides\7f439949
+Node: MIPS floating-point\7f441763
+Node: MMIX-Dependent\7f442649
+Node: MMIX-Opts\7f443029
+Node: MMIX-Expand\7f446633
+Node: MMIX-Syntax\7f447948
+Ref: mmixsite\7f448305
+Node: MMIX-Chars\7f449146
+Node: MMIX-Symbols\7f449800
+Node: MMIX-Regs\7f451868
+Node: MMIX-Pseudos\7f452893
+Ref: MMIX-loc\7f453034
+Ref: MMIX-local\7f454114
+Ref: MMIX-is\7f454646
+Ref: MMIX-greg\7f454917
+Ref: GREG-base\7f455836
+Ref: MMIX-byte\7f457153
+Ref: MMIX-constants\7f457624
+Ref: MMIX-prefix\7f458270
+Ref: MMIX-spec\7f458644
+Node: MMIX-mmixal\7f458978
+Node: MSP430-Dependent\7f462476
+Node: MSP430 Options\7f462942
+Node: MSP430 Syntax\7f463228
+Node: MSP430-Macros\7f463544
+Node: MSP430-Chars\7f464275
+Node: MSP430-Regs\7f464588
+Node: MSP430-Ext\7f465148
+Node: MSP430 Floating Point\7f466969
+Node: MSP430 Directives\7f467193
+Node: MSP430 Opcodes\7f467984
+Node: MSP430 Profiling Capability\7f468379
+Node: PDP-11-Dependent\7f470708
+Node: PDP-11-Options\7f471097
+Node: PDP-11-Pseudos\7f476168
+Node: PDP-11-Syntax\7f476513
+Node: PDP-11-Mnemonics\7f477265
+Node: PDP-11-Synthetic\7f477567
+Node: PJ-Dependent\7f477785
+Node: PJ Options\7f478010
+Node: PPC-Dependent\7f478287
+Node: PowerPC-Opts\7f478574
+Node: PowerPC-Pseudo\7f481093
+Node: SH-Dependent\7f481692
+Node: SH Options\7f482104
+Node: SH Syntax\7f483112
+Node: SH-Chars\7f483385
+Node: SH-Regs\7f483679
+Node: SH-Addressing\7f484293
+Node: SH Floating Point\7f485202
+Node: SH Directives\7f486296
+Node: SH Opcodes\7f486666
+Node: SH64-Dependent\7f490988
+Node: SH64 Options\7f491351
+Node: SH64 Syntax\7f493148
+Node: SH64-Chars\7f493431
+Node: SH64-Regs\7f493731
+Node: SH64-Addressing\7f494827
+Node: SH64 Directives\7f496010
+Node: SH64 Opcodes\7f497120
+Node: Sparc-Dependent\7f497836
+Node: Sparc-Opts\7f498246
+Node: Sparc-Aligned-Data\7f500503
+Node: Sparc-Syntax\7f501335
+Node: Sparc-Chars\7f501909
+Node: Sparc-Regs\7f502142
+Node: Sparc-Constants\7f507253
+Node: Sparc-Relocs\7f512013
+Node: Sparc-Size-Translations\7f516693
+Node: Sparc-Float\7f518342
+Node: Sparc-Directives\7f518537
+Node: TIC54X-Dependent\7f520497
+Node: TIC54X-Opts\7f521223
+Node: TIC54X-Block\7f522266
+Node: TIC54X-Env\7f522626
+Node: TIC54X-Constants\7f522974
+Node: TIC54X-Subsyms\7f523376
+Node: TIC54X-Locals\7f525285
+Node: TIC54X-Builtins\7f526029
+Node: TIC54X-Ext\7f528500
+Node: TIC54X-Directives\7f529071
+Node: TIC54X-Macros\7f539973
+Node: TIC54X-MMRegs\7f542084
+Node: Z80-Dependent\7f542300
+Node: Z80 Options\7f542688
+Node: Z80 Syntax\7f544111
+Node: Z80-Chars\7f544783
+Node: Z80-Regs\7f545317
+Node: Z80-Case\7f545669
+Node: Z80 Floating Point\7f546114
+Node: Z80 Directives\7f546308
+Node: Z80 Opcodes\7f547933
+Node: Z8000-Dependent\7f549277
+Node: Z8000 Options\7f550238
+Node: Z8000 Syntax\7f550455
+Node: Z8000-Chars\7f550745
+Node: Z8000-Regs\7f550978
+Node: Z8000-Addressing\7f551768
+Node: Z8000 Directives\7f552885
+Node: Z8000 Opcodes\7f554494
+Node: Vax-Dependent\7f564436
+Node: VAX-Opts\7f564953
+Node: VAX-float\7f568688
+Node: VAX-directives\7f569320
+Node: VAX-opcodes\7f570181
+Node: VAX-branch\7f570570
+Node: VAX-operands\7f573077
+Node: VAX-no\7f573840
+Node: V850-Dependent\7f574077
+Node: V850 Options\7f574475
+Node: V850 Syntax\7f576864
+Node: V850-Chars\7f577104
+Node: V850-Regs\7f577269
+Node: V850 Floating Point\7f578837
+Node: V850 Directives\7f579043
+Node: V850 Opcodes\7f580186
+Node: Xtensa-Dependent\7f586078
+Node: Xtensa Options\7f586807
+Node: Xtensa Syntax\7f589617
+Node: Xtensa Opcodes\7f591506
+Node: Xtensa Registers\7f593300
+Node: Xtensa Optimizations\7f593933
+Node: Density Instructions\7f594385
+Node: Xtensa Automatic Alignment\7f595487
+Node: Xtensa Relaxation\7f597934
+Node: Xtensa Branch Relaxation\7f598842
+Node: Xtensa Call Relaxation\7f600214
+Node: Xtensa Immediate Relaxation\7f602000
+Node: Xtensa Directives\7f604574
+Node: Schedule Directive\7f606283
+Node: Longcalls Directive\7f606623
+Node: Transform Directive\7f607167
+Node: Literal Directive\7f607909
+Ref: Literal Directive-Footnote-1\7f611448
+Node: Literal Position Directive\7f611590
+Node: Literal Prefix Directive\7f613289
+Node: Absolute Literals Directive\7f614187
+Node: Reporting Bugs\7f615494
+Node: Bug Criteria\7f616220
+Node: Bug Reporting\7f616987
+Node: Acknowledgements\7f623636
+Ref: Acknowledgements-Footnote-1\7f628534
+Node: GNU Free Documentation License\7f628560
+Node: AS Index\7f648278
 \1f
 End Tag Table
index 770b8f5..f2b7d64 100644 (file)
@@ -1,5 +1,4 @@
-This is bfd.info, produced by makeinfo version 4.8 from
-../../../../../gdb-6.6/bfd/doc/bfd.texinfo.
+This is bfd.info, produced by makeinfo version 4.11 from ../../../../../gdb-6.6/bfd/doc/bfd.texinfo.
 
 START-INFO-DIR-ENTRY
 * Bfd: (bfd).                   The Binary File Descriptor library.
@@ -13,8 +12,8 @@ Inc.
    Permission is granted to copy, distribute and/or modify this document
      under the terms of the GNU Free Documentation License, Version 1.1
      or any later version published by the Free Software Foundation;
-   with no Invariant Sections, with no Front-Cover Texts, and with no
-    Back-Cover Texts.  A copy of the license is included in the
+  with no Invariant Sections, with no Front-Cover Texts, and with no
+  Back-Cover Texts.  A copy of the license is included in the
 section entitled "GNU Free Documentation License".
 
 \1f
@@ -6975,9 +6974,9 @@ The linker proper will call the `_bfd_link_add_symbols' entry point for
 each object file or archive which is to be linked (typically these are
 the files named on the command line, but some may also come from the
 linker script).  The entry point is responsible for examining the file.
-For an object file, BFD must add any relevant symbol information to
-the hash table.  For an archive, BFD must determine which elements of
-the archive should be used and adding them to the link.
+For an object file, BFD must add any relevant symbol information to the
+hash table.  For an archive, BFD must determine which elements of the
+archive should be used and adding them to the link.
 
    The a.out version of this entry point is
 `NAME(aout,link_add_symbols)'.
@@ -8866,20 +8865,19 @@ Appendix A GNU Free Documentation License
      H. Include an unaltered copy of this License.
      I. Preserve the section entitled "History", and its title, and add
      to    it an item stating at least the title, year, new authors, and
-       publisher of the Modified Version as given on the Title Page.
-     If    there is no section entitled "History" in the Document,
-     create one    stating the title, year, authors, and publisher of
-     the Document as    given on its Title Page, then add an item
+       publisher of the Modified Version as given on the Title Page.  If
+       there is no section entitled "History" in the Document, create
+     one    stating the title, year, authors, and publisher of the
+     Document as    given on its Title Page, then add an item
      describing the Modified    Version as stated in the previous
      sentence.
      J. Preserve the network location, if any, given in the Document for
-       public access to a Transparent copy of the Document, and
-     likewise    the network locations given in the Document for
-     previous versions    it was based on.  These may be placed in the
-     "History" section.     You may omit a network location for a work
-     that was published at    least four years before the Document
-     itself, or if the original    publisher of the version it refers
-     to gives permission.
+       public access to a Transparent copy of the Document, and likewise
+       the network locations given in the Document for previous versions
+       it was based on.  These may be placed in the "History" section.
+       You may omit a network location for a work that was published at
+       least four years before the Document itself, or if the original
+      publisher of the version it refers to gives permission.
      K. In any section entitled "Acknowledgements" or "Dedications",
      preserve the section's title, and preserve in the section all the
       substance and tone of each of the contributor acknowledgements
@@ -10445,67 +10443,67 @@ BFD Index
 
 \1f
 Tag Table:
-Node: Top\7f729
-Node: Overview\7f1068
-Node: History\7f2119
-Node: How It Works\7f3065
-Node: What BFD Version 2 Can Do\7f4608
-Node: BFD information loss\7f5923
-Node: Canonical format\7f8455
-Node: BFD front end\7f12827
-Node: Memory Usage\7f39747
-Node: Initialization\7f40975
-Node: Sections\7f41434
-Node: Section Input\7f41917
-Node: Section Output\7f43282
-Node: typedef asection\7f45768
-Node: section prototypes\7f70369
-Node: Symbols\7f80049
-Node: Reading Symbols\7f81644
-Node: Writing Symbols\7f82751
-Node: Mini Symbols\7f84460
-Node: typedef asymbol\7f85434
-Node: symbol handling functions\7f90352
-Node: Archives\7f95694
-Node: Formats\7f99420
-Node: Relocations\7f102368
-Node: typedef arelent\7f103095
-Node: howto manager\7f118906
-Node: Core Files\7f184001
-Node: Targets\7f185818
-Node: bfd_target\7f187788
-Node: Architectures\7f207964
-Node: Opening and Closing\7f229605
-Node: Internal\7f240607
-Node: File Caching\7f246940
-Node: Linker Functions\7f248854
-Node: Creating a Linker Hash Table\7f250527
-Node: Adding Symbols to the Hash Table\7f252265
-Node: Differing file formats\7f253165
-Node: Adding symbols from an object file\7f254913
-Node: Adding symbols from an archive\7f257064
-Node: Performing the Final Link\7f259478
-Node: Information provided by the linker\7f260720
-Node: Relocating the section contents\7f261874
-Node: Writing the symbol table\7f263625
-Node: Hash Tables\7f266667
-Node: Creating and Freeing a Hash Table\7f267865
-Node: Looking Up or Entering a String\7f269115
-Node: Traversing a Hash Table\7f270368
-Node: Deriving a New Hash Table Type\7f271157
-Node: Define the Derived Structures\7f272223
-Node: Write the Derived Creation Routine\7f273304
-Node: Write Other Derived Routines\7f275928
-Node: BFD back ends\7f277243
-Node: What to Put Where\7f277513
-Node: aout\7f277693
-Node: coff\7f284011
-Node: elf\7f308488
-Node: mmo\7f309351
-Node: File layout\7f310279
-Node: Symbol-table\7f315926
-Node: mmo section mapping\7f319695
-Node: GNU Free Documentation License\7f323347
-Node: BFD Index\7f343076
+Node: Top\7f727
+Node: Overview\7f1066
+Node: History\7f2117
+Node: How It Works\7f3063
+Node: What BFD Version 2 Can Do\7f4606
+Node: BFD information loss\7f5921
+Node: Canonical format\7f8453
+Node: BFD front end\7f12825
+Node: Memory Usage\7f39745
+Node: Initialization\7f40973
+Node: Sections\7f41432
+Node: Section Input\7f41915
+Node: Section Output\7f43280
+Node: typedef asection\7f45766
+Node: section prototypes\7f70367
+Node: Symbols\7f80047
+Node: Reading Symbols\7f81642
+Node: Writing Symbols\7f82749
+Node: Mini Symbols\7f84458
+Node: typedef asymbol\7f85432
+Node: symbol handling functions\7f90350
+Node: Archives\7f95692
+Node: Formats\7f99418
+Node: Relocations\7f102366
+Node: typedef arelent\7f103093
+Node: howto manager\7f118904
+Node: Core Files\7f183999
+Node: Targets\7f185816
+Node: bfd_target\7f187786
+Node: Architectures\7f207962
+Node: Opening and Closing\7f229603
+Node: Internal\7f240605
+Node: File Caching\7f246938
+Node: Linker Functions\7f248852
+Node: Creating a Linker Hash Table\7f250525
+Node: Adding Symbols to the Hash Table\7f252263
+Node: Differing file formats\7f253163
+Node: Adding symbols from an object file\7f254911
+Node: Adding symbols from an archive\7f257062
+Node: Performing the Final Link\7f259476
+Node: Information provided by the linker\7f260718
+Node: Relocating the section contents\7f261872
+Node: Writing the symbol table\7f263623
+Node: Hash Tables\7f266665
+Node: Creating and Freeing a Hash Table\7f267863
+Node: Looking Up or Entering a String\7f269113
+Node: Traversing a Hash Table\7f270366
+Node: Deriving a New Hash Table Type\7f271155
+Node: Define the Derived Structures\7f272221
+Node: Write the Derived Creation Routine\7f273302
+Node: Write Other Derived Routines\7f275926
+Node: BFD back ends\7f277241
+Node: What to Put Where\7f277511
+Node: aout\7f277691
+Node: coff\7f284009
+Node: elf\7f308486
+Node: mmo\7f309349
+Node: File layout\7f310277
+Node: Symbol-table\7f315924
+Node: mmo section mapping\7f319693
+Node: GNU Free Documentation License\7f323345
+Node: BFD Index\7f343062
 \1f
 End Tag Table
index fb2b4cf..f02b19b 100644 (file)
@@ -1,7 +1,7 @@
-This is doc/cpp.info, produced by makeinfo version 4.8 from
+This is doc/cpp.info, produced by makeinfo version 4.11 from
 ../../../../gcc-4.4.0/gcc/doc/cpp.texi.
 
-   Copyright (C) 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+Copyright (C) 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free
 Software Foundation, Inc.
 
@@ -205,7 +205,7 @@ diagnostics, you must also use `-pedantic'.  *Note Invocation::.
 minimize gratuitous differences, where the ISO preprocessor's behavior
 does not conflict with traditional semantics, the traditional
 preprocessor should behave the same way.  The various differences that
-do exist are detailed in the section *Note Traditional Mode::.
+do exist are detailed in the section *note Traditional Mode::.
 
    For clarity, unless noted otherwise, references to `CPP' in this
 manual refer to GNU CPP.
@@ -1041,10 +1041,10 @@ runtime libraries often cannot be written in strictly conforming C.
 Therefore, GCC gives code found in "system headers" special treatment.
 All warnings, other than those generated by `#warning' (*note
 Diagnostics::), are suppressed while GCC is processing a system header.
-Macros defined in a system header are immune to a few warnings
-wherever they are expanded.  This immunity is granted on an ad-hoc
-basis, when we find that a warning generates lots of false positives
-because of code in macros defined in system headers.
+Macros defined in a system header are immune to a few warnings wherever
+they are expanded.  This immunity is granted on an ad-hoc basis, when
+we find that a warning generates lots of false positives because of
+code in macros defined in system headers.
 
    Normally, only the headers found in specific directories are
 considered system headers.  These directories are determined when GCC
@@ -1383,7 +1383,7 @@ in the string.
 
    The `do' and `while (0)' are a kludge to make it possible to write
 `WARN_IF (ARG);', which the resemblance of `WARN_IF' to a function
-would make C programmers want to do; see *Note Swallowing the
+would make C programmers want to do; see *note Swallowing the
 Semicolon::.
 
    Stringification in C involves more than putting double-quote
@@ -3558,14 +3558,13 @@ it.
      controlled using the `-fexec-charset' and `-fwide-exec-charset'
      options.
 
-   * Identifier characters.
-
-     The C and C++ standards allow identifiers to be composed of `_'
-     and the alphanumeric characters.  C++ and C99 also allow universal
-     character names, and C99 further permits implementation-defined
-     characters.  GCC currently only permits universal character names
-     if `-fextended-identifiers' is used, because the implementation of
-     universal character names in identifiers is experimental.
+   * Identifier characters.  The C and C++ standards allow identifiers
+     to be composed of `_' and the alphanumeric characters.  C++ and
+     C99 also allow universal character names, and C99 further permits
+     implementation-defined characters.  GCC currently only permits
+     universal character names if `-fextended-identifiers' is used,
+     because the implementation of universal character names in
+     identifiers is experimental.
 
      GCC allows the `$' character in identifiers as an extension for
      most targets.  This is true regardless of the `std=' switch, since
@@ -3615,7 +3614,7 @@ it.
    * Source file inclusion.
 
      For a discussion on how the preprocessor locates header files,
-     *Note Include Operation::.
+     *note Include Operation::.
 
    * Interpretation of the filename resulting from a macro-expanded
      `#include' directive.
@@ -4542,7 +4541,7 @@ in turn take precedence over the configuration of GCC.
      `CPATH' is `:/special/include', that has the same effect as
      `-I. -I/special/include'.
 
-     See also *Note Search Path::.
+     See also *note Search Path::.
 
 `DEPENDENCIES_OUTPUT'
      If this variable is set, its value specifies how to output
@@ -5273,79 +5272,79 @@ Concept Index
 
 \1f
 Tag Table:
-Node: Top\7f1092
-Node: Overview\7f3806
-Node: Character sets\7f6627
-Ref: Character sets-Footnote-1\7f8810
-Node: Initial processing\7f8991
-Ref: trigraphs\7f10550
-Node: Tokenization\7f14752
-Ref: Tokenization-Footnote-1\7f21888
-Node: The preprocessing language\7f21999
-Node: Header Files\7f24877
-Node: Include Syntax\7f26793
-Node: Include Operation\7f28430
-Node: Search Path\7f30278
-Node: Once-Only Headers\7f33468
-Node: Alternatives to Wrapper #ifndef\7f35127
-Node: Computed Includes\7f36870
-Node: Wrapper Headers\7f40028
-Node: System Headers\7f42454
-Node: Macros\7f44504
-Node: Object-like Macros\7f45645
-Node: Function-like Macros\7f49235
-Node: Macro Arguments\7f50851
-Node: Stringification\7f54996
-Node: Concatenation\7f58202
-Node: Variadic Macros\7f61310
-Node: Predefined Macros\7f66097
-Node: Standard Predefined Macros\7f66685
-Node: Common Predefined Macros\7f72621
-Node: System-specific Predefined Macros\7f85531
-Node: C++ Named Operators\7f87552
-Node: Undefining and Redefining Macros\7f88516
-Node: Directives Within Macro Arguments\7f90620
-Node: Macro Pitfalls\7f92168
-Node: Misnesting\7f92701
-Node: Operator Precedence Problems\7f93813
-Node: Swallowing the Semicolon\7f95679
-Node: Duplication of Side Effects\7f97702
-Node: Self-Referential Macros\7f99885
-Node: Argument Prescan\7f102294
-Node: Newlines in Arguments\7f106048
-Node: Conditionals\7f106999
-Node: Conditional Uses\7f108829
-Node: Conditional Syntax\7f110187
-Node: Ifdef\7f110507
-Node: If\7f113668
-Node: Defined\7f115972
-Node: Else\7f117255
-Node: Elif\7f117825
-Node: Deleted Code\7f119114
-Node: Diagnostics\7f120361
-Node: Line Control\7f121978
-Node: Pragmas\7f125782
-Node: Other Directives\7f130052
-Node: Preprocessor Output\7f131159
-Node: Traditional Mode\7f134360
-Node: Traditional lexical analysis\7f135418
-Node: Traditional macros\7f137921
-Node: Traditional miscellany\7f141723
-Node: Traditional warnings\7f142720
-Node: Implementation Details\7f144917
-Node: Implementation-defined behavior\7f145538
-Ref: Identifier characters\7f146290
-Node: Implementation limits\7f149365
-Node: Obsolete Features\7f152039
-Node: Differences from previous versions\7f154876
-Node: Invocation\7f159084
-Ref: Wtrigraphs\7f163536
-Ref: dashMF\7f168311
-Ref: fdollars-in-identifiers\7f177694
-Node: Environment Variables\7f185857
-Node: GNU Free Documentation License\7f188823
-Node: Index of Directives\7f211256
-Node: Option Index\7f213190
-Node: Concept Index\7f219374
+Node: Top\7f1090
+Node: Overview\7f3804
+Node: Character sets\7f6625
+Ref: Character sets-Footnote-1\7f8808
+Node: Initial processing\7f8989
+Ref: trigraphs\7f10548
+Node: Tokenization\7f14750
+Ref: Tokenization-Footnote-1\7f21886
+Node: The preprocessing language\7f21997
+Node: Header Files\7f24875
+Node: Include Syntax\7f26791
+Node: Include Operation\7f28428
+Node: Search Path\7f30276
+Node: Once-Only Headers\7f33466
+Node: Alternatives to Wrapper #ifndef\7f35125
+Node: Computed Includes\7f36868
+Node: Wrapper Headers\7f40026
+Node: System Headers\7f42452
+Node: Macros\7f44502
+Node: Object-like Macros\7f45643
+Node: Function-like Macros\7f49233
+Node: Macro Arguments\7f50849
+Node: Stringification\7f54994
+Node: Concatenation\7f58200
+Node: Variadic Macros\7f61308
+Node: Predefined Macros\7f66095
+Node: Standard Predefined Macros\7f66683
+Node: Common Predefined Macros\7f72619
+Node: System-specific Predefined Macros\7f85529
+Node: C++ Named Operators\7f87550
+Node: Undefining and Redefining Macros\7f88514
+Node: Directives Within Macro Arguments\7f90618
+Node: Macro Pitfalls\7f92166
+Node: Misnesting\7f92699
+Node: Operator Precedence Problems\7f93811
+Node: Swallowing the Semicolon\7f95677
+Node: Duplication of Side Effects\7f97700
+Node: Self-Referential Macros\7f99883
+Node: Argument Prescan\7f102292
+Node: Newlines in Arguments\7f106046
+Node: Conditionals\7f106997
+Node: Conditional Uses\7f108827
+Node: Conditional Syntax\7f110185
+Node: Ifdef\7f110505
+Node: If\7f113666
+Node: Defined\7f115970
+Node: Else\7f117253
+Node: Elif\7f117823
+Node: Deleted Code\7f119112
+Node: Diagnostics\7f120359
+Node: Line Control\7f121976
+Node: Pragmas\7f125780
+Node: Other Directives\7f130050
+Node: Preprocessor Output\7f131157
+Node: Traditional Mode\7f134358
+Node: Traditional lexical analysis\7f135416
+Node: Traditional macros\7f137919
+Node: Traditional miscellany\7f141721
+Node: Traditional warnings\7f142718
+Node: Implementation Details\7f144915
+Node: Implementation-defined behavior\7f145536
+Ref: Identifier characters\7f146288
+Node: Implementation limits\7f149363
+Node: Obsolete Features\7f152037
+Node: Differences from previous versions\7f154874
+Node: Invocation\7f159082
+Ref: Wtrigraphs\7f163534
+Ref: dashMF\7f168309
+Ref: fdollars-in-identifiers\7f177692
+Node: Environment Variables\7f185855
+Node: GNU Free Documentation License\7f188821
+Node: Index of Directives\7f211254
+Node: Option Index\7f213188
+Node: Concept Index\7f219372
 \1f
 End Tag Table
index 936de53..20676ba 100644 (file)
@@ -1,4 +1,4 @@
-This is doc/cppinternals.info, produced by makeinfo version 4.8 from
+This is doc/cppinternals.info, produced by makeinfo version 4.11 from
 ../../../../gcc-4.4.0/gcc/doc/cppinternals.texi.
 
 INFO-DIR-SECTION Software development
@@ -1020,17 +1020,17 @@ Concept Index
 
 \1f
 Tag Table:
-Node: Top\7f969
-Node: Conventions\7f2654
-Node: Lexer\7f3596
-Ref: Invalid identifiers\7f11509
-Ref: Lexing a line\7f13458
-Node: Hash Nodes\7f18231
-Node: Macro Expansion\7f21110
-Node: Token Spacing\7f30057
-Node: Line Numbering\7f35917
-Node: Guard Macros\7f40002
-Node: Files\7f44793
-Node: Concept Index\7f48259
+Node: Top\7f970
+Node: Conventions\7f2655
+Node: Lexer\7f3597
+Ref: Invalid identifiers\7f11510
+Ref: Lexing a line\7f13459
+Node: Hash Nodes\7f18232
+Node: Macro Expansion\7f21111
+Node: Token Spacing\7f30058
+Node: Line Numbering\7f35918
+Node: Guard Macros\7f40003
+Node: Files\7f44794
+Node: Concept Index\7f48260
 \1f
 End Tag Table
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/info/dir b/linux-x86/toolchain/arm-eabi-4.4.0/info/dir
new file mode 100644 (file)
index 0000000..86ad4ff
--- /dev/null
@@ -0,0 +1,273 @@
+-*- Text -*-
+This is the file .../info/dir, which contains the topmost node of
+the Info hierarchy.  The first time you invoke Info you start off
+looking at that node, which is (dir)Top.
+\1f
+File: dir      Node: Top       This is the top of the INFO tree
+  This (the Directory node) gives a menu of major topics.
+  Typing "q" exits, "?" lists all Info commands, "d" returns here,
+  "mCoreutils<Return>" visits Coreutils topic, etc.
+  Or click mouse button 2 on a menu item or cross reference to select
+  it.
+  --- PLEASE ADD DOCUMENTATION TO THIS TREE. (See INFO topic first.) ---
+
+In Ubuntu, Info `dir' entries are added with the command
+`install-info'.  Please refer to install-info(8) for usage details.
+
+* Menu: The list of major topics begins on the next line.
+
+Basics
+* Coreutils: (coreutils).              Core GNU (file, text, shell)
+                                       utilities.
+* Common options: (coreutils)Common options.
+                                       Common options.
+* File permissions: (coreutils)File permissions.
+                                       Access modes.
+* Date input formats: (coreutils)Date input formats.
+* Finding files: (find).               Operating on files matching certain
+                                       criteria.
+
+Miscellaneous:
+* Rluserman: (rluserman).              GNU Readline Library API
+* Tasks: (tasks).                      The GNU Task List.
+
+Utilities
+* Enscript: (enscript).                GNU Enscript
+* Gzip: (gzip).                        The gzip command for compressing
+                                       files.
+
+Development
+* Com_err: (com_err).                  A Common Error Description Library for
+                                       UNIX.
+* Flex: (flex).                        A fast scanner generator
+* Gdb: (gdb).                          The GNU debugger.
+* Gdb-Internals: (gdbint).             The GNU debugger's internals.
+* gettext: (gettext).                  GNU gettext utilities.
+* autopoint: (gettext)autopoint Invocation.
+                                       Copy gettext infrastructure.
+* envsubst: (gettext)envsubst Invocation.
+                                       Expand environment variables.
+* gettextize: (gettext)gettextize Invocation.
+                                       Prepare a package for gettext.
+* Gperf: (gperf).                      Perfect Hash Function Generator.
+* M4: (m4).                            The GNU m4 macro preprocessor.
+* msgattrib: (gettext)msgattrib Invocation.
+                                       Select part of a PO file.
+* msgcat: (gettext)msgcat Invocation.  Combine several PO files.
+* msgcmp: (gettext)msgcmp Invocation.  Compare a PO file and template.
+* msgcomm: (gettext)msgcomm Invocation. Match two PO files.
+* msgconv: (gettext)msgconv Invocation. Convert PO file to encoding.
+* msgen: (gettext)msgen Invocation.    Create an English PO file.
+* msgexec: (gettext)msgexec Invocation. Process a PO file.
+* msgfilter: (gettext)msgfilter Invocation.
+                                       Pipe a PO file through a filter.
+* msgfmt: (gettext)msgfmt Invocation.  Make MO files out of PO files.
+* msggrep: (gettext)msggrep Invocation. Select part of a PO file.
+* msginit: (gettext)msginit Invocation. Create a fresh PO file.
+* msgmerge: (gettext)msgmerge Invocation.
+                                       Update a PO file from template.
+* msgunfmt: (gettext)msgunfmt Invocation.
+                                       Uncompile MO file into PO file.
+* msguniq: (gettext)msguniq Invocation. Unify duplicates for PO file.
+* ngettext: (gettext)ngettext Invocation.
+                                       Translate a message with plural.
+* xgettext: (gettext)xgettext Invocation.
+                                       Extract strings into a PO file.
+* ISO639: (gettext)Language Codes.     ISO 639 language codes.
+* ISO3166: (gettext)Country Codes.     ISO 3166 country codes.
+* CVS: (cvs).                          Concurrent Versions System
+* CVS client/server: (cvsclient).      Describes the client/server protocol
+                                       used by CVS.
+* Ipc: (ipc).                          System V interprocess communication
+                                       facilities
+
+Disk Management
+* Fdutils: (fdutils).                  Linux floppy utilities
+
+Editors
+* nano: (nano).                        Small and friendly text editor.
+
+Network Applications
+* Wget: (wget).                        The non-interactive network
+                                       downloader.
+
+SoundINFO-DIR-SECTION Development
+* Festival: (festival).                Speech synthesis system.
+
+Information:
+* Debian menu: (menu).                 The Debian menu system
+
+GNU Utilities
+* gpg2: (gnupg2).                      OpenPGP encryption and signing tool.
+* gpgsm: (gnupg2).                     S/MIME encryption and signing tool.
+* dirmngr: (dirmngr).                  X.509 CRL and OCSP server.
+* dirmngr-client: (dirmngr).           X.509 CRL and OCSP client.
+
+GNU Packages
+* Ocrad: (ocrad).                      The GNU OCR program.
+
+TeX
+* LaTeX2e: (latex).                    LaTeXe help 1.6.
+* Web2c: (web2c).                      TeX, Metafont, and companion programs.
+* bibtex: (web2c)bibtex invocation.    Maintaining bibliographies.
+* dmp: (web2c)dmp invocation.          Troff->MPX (MetaPost pictures).
+* dvicopy: (web2c)dvicopy invocation.  Virtual font expansion
+* dvitomp: (web2c)dvitomp invocation.  DVI to MPX (MetaPost pictures).
+* dvitype: (web2c)dvitype invocation.  DVI to human-readable text.
+* gftodvi: (web2c)gftodvi invocation.  Generic font proofsheets.
+* gftopk: (web2c)gftopk invocation.    Generic to packed fonts.
+* gftype: (web2c)gftype invocation.    GF to human-readable text.
+* makempx: (web2c)makempx invocation.  MetaPost label typesetting.
+* mf: (web2c)mf invocation.            Creating typeface families.
+* mft: (web2c)mft invocation.          Prettyprinting Metafont source.
+* mltex: (web2c)MLTeX.                 Multi-lingual TeX.
+* mpost: (web2c)mpost invocation.      Creating technical diagrams.
+* mpto: (web2c)mpto invocation.        MetaPost label extraction.
+* newer: (web2c)newer invocation.      Compare modification times.
+* patgen: (web2c)patgen invocation.    Creating hyphenation patterns.
+* pktogf: (web2c)pktogf invocation.    Packed to generic fonts.
+* pktype: (web2c)pktype invocation.    PK to human-readable text.
+* pltotf: (web2c)pltotf invocation.    Property list to TFM.
+* pooltype: (web2c)pooltype invocation. Display WEB pool files.
+* tangle: (web2c)tangle invocation.    WEB to Pascal.
+* tex: (web2c)tex invocation.          Typesetting.
+* tftopl: (web2c)tftopl invocation.    TFM -> property list.
+* vftovp: (web2c)vftovp invocation.    Virtual font -> virtual pl.
+* vptovf: (web2c)vptovf invocation.    Virtual pl -> virtual font.
+* weave: (web2c)weave invocation.      WEB to TeX.
+* Kpathsea: (kpathsea).                File lookup along search paths.
+* kpsewhich: (kpathsea)Invoking kpsewhich.
+                                       TeX file searching.
+* mktexmf: (kpathsea)mktex scripts.    MF source generation.
+* mktexpk: (kpathsea)mktex scripts.    PK bitmap generation.
+* mktextex: (kpathsea)mktex scripts.   TeX source generation.
+* mktextfm: (kpathsea)mktex scripts.   TeX font metric generation.
+* mktexlsr: (kpathsea)Filename database.
+                                       Update ls-R.
+* DVI-to-Postscript: (dvips).          Translating TeX DVI files to
+                                       PostScript.
+* afm2tfm: (dvips)Invoking afm2tfm.    Making Type 1 fonts available to TeX.
+* dvips: (dvips)Invoking Dvips.        DVI-to-PostScript translator.
+* TeX Directories: (tds).              A directory structure for TeX files.
+
+Video CD Tools
+* VCDImager: (vcdimager).              GNU Video CD imaging utilities
+* vcdimager: (vcdimager)vcdimager.     Video CD simple formatter
+* vcd-info:  (vcdimager)vcd-info.      Video CD diagnostic tool
+* cdxa2mpeg: (vcdimager)cdxa2mpeg.     Strip RIFF/CD-XA container
+* vcdxminfo: (vcdimager)vcdxminfo.     Display MPEG stream properties
+* vcdxgen: (vcdimager)vcdxgen.         Video CD XML template generator
+* vcdxbuild: (vcdimager)vcdxbuild.     Video CD XML formatter
+* vcd-info: (vcd-info).                Video CD Information tool
+* vcdxrip: (vcdxrip).                  Video CD Ripping tool
+
+Programming & development tools.
+* DDD: (ddd).                          The Data Display Debugger.
+* DDD-Themes: (ddd-themes).            Writing DDD Themes.
+* DejaGnu: (dejagnu).                  The GNU testing framework.
+
+Emacs 22
+* Ada mode (emacs22): (emacs22/ada-mode).
+                                       Emacs mode for editing and compiling
+                                       Ada code.
+* Autotype (emacs22): (emacs22/autotype).
+                                       Convenient features for text that you
+                                       enter frequently in Emacs.
+* Calc (emacs22): (emacs22/calc).      Advanced desk calculator and
+                                       mathematical tool.
+* CC Mode (emacs22): (emacs22/ccmode). Emacs mode for editing C, C++,
+                                       Objective-C, Java, Pike, AWK, and
+                                       CORBA IDL code.
+* CL (emacs22): (emacs22/cl).          Partial Common Lisp support for Emacs
+                                       Lisp.
+* Dired-X (emacs22): (emacs22/dired-x). Dired Extra Features.
+* Ebrowse (emacs22): (emacs22/ebrowse). A C++ class browser for Emacs.
+* Ediff (emacs22): (emacs22/ediff).    A visual interface for comparing and
+                                       merging programs.
+* Elisp (emacs22): (emacs22/elisp).    The Emacs Lisp Reference Manual.
+* Emacs (emacs22): (emacs22/emacs).    The extensible self-documenting text
+                                       editor.
+* Emacs FAQ (emacs22): (emacs22/efaq). Frequently Asked Questions about
+                                       Emacs.
+* Emacs Lisp Intro (emacs22): (emacs22/eintr).
+                                       A simple introduction to Emacs Lisp
+                                       programming.
+* Emacs MIME (emacs22): (emacs22/emacs-mime).
+                                       Emacs MIME de/composition library.
+* Emacs-Goodies-el: (emacs-goodies-el). Miscellaneous add-ons for Emacs
+* ERC (emacs22): (emacs22/erc).        Powerful, modular, and extensible IRC
+                                       client for Emacs.
+* Eshell (emacs22): (emacs22/eshell).  A command shell implemented in Emacs
+                                       Lisp.
+* EUDC (emacs22): (emacs22/eudc).      An Emacs client for directory servers
+                                       (LDAP, PH).
+* Flymake (emacs22): (emacs22/flymake). A universal on-the-fly syntax checker.
+* Forms (emacs22): (emacs22/forms).    Emacs package for editing data bases
+                                       by filling in forms.
+* Gnus (emacs22): (emacs22/gnus).      The newsreader Gnus.
+* IDLWAVE (emacs22): (emacs22/idlwave). Major mode and shell for IDL files.
+* Info (emacs22): (emacs22/info).      How to use the documentation browsing
+                                       system.
+* Message (emacs22): (emacs22/message). Mail and news composition mode that
+                                       goes with Gnus.
+* MH-E (emacs22): (emacs22/mh-e).      Emacs interface to the MH mail system.
+* Newsticker (emacs22): (emacs22/newsticker).
+                                       A Newsticker for Emacs.
+* Org Mode (emacs22): (emacs22/org).   Outline-based notes management and
+                                       organizer
+* PCL-CVS (emacs22): (emacs22/pcl-cvs). Emacs front-end to CVS.
+* PGG (emacs22): (emacs22/pgg).        Emacs interface to various PGP
+                                       implementations.
+* Rcirc (emacs22): (emacs22/rcirc).    Internet Relay Chat (IRC) client.
+* RefTeX (emacs22): (emacs22/reftex).  Emacs support for LaTeX
+                                       cross-references and citations.
+* SC (emacs22): (emacs22/sc).          Supercite lets you cite parts of
+                                       messages you're replying to, in
+                                       flexible ways.
+* SES (emacs22): (emacs22/ses).        Simple Emacs Spreadsheet
+* Sieve (emacs22): (emacs22/sieve).    Managing Sieve scripts in Emacs.
+* SMTP (emacs22): (emacs22/smtpmail).  Emacs library for sending mail via
+                                       SMTP.
+* Speedbar (emacs22): (emacs22/speedbar).
+                                       File/Tag summarizing utility.
+* TRAMP (emacs22): (emacs22/tramp).    Transparent Remote Access, Multiple
+                                       Protocol GNU Emacs remote file access
+                                       via rsh and rcp.
+* URL (emacs22): (emacs22/url).        URL loading package.
+* VIP (emacs22): (emacs22/vip).        An older VI-emulation for Emacs.
+* VIPER (emacs22): (emacs22/viper).    The newest Emacs VI-emulation mode.
+                                       (also, A VI Plan for Emacs Rescue or
+                                       the VI PERil.)
+* Widget (emacs22): (emacs22/widget).  The "widget" package used by the Emacs
+                                       Customization facility.
+* WoMan (emacs22): (emacs22/woman).    Browse UN*X Manual Pages "W.O.
+                                       (without) Man".
+
+Viewers
+* gv: (gv).                            The GNU PostScript and PDF viewer.
+
+Software development
+* Cpplib: (cppinternals).              Cpplib internals.
+* gcc: (gcc).                          The GNU Compiler Collection.
+* g++: (gcc).                          The GNU C++ compiler.
+* Cpp: (cpp).                          The GNU C preprocessor.
+* gccinstall: (gccinstall).            Installing the GNU Compiler
+                                       Collection.
+* gccint: (gccint).                    Internals of the GNU Compiler
+                                       Collection.
+
+General Commands
+* Cpio: (cpio).                        A program to manage archives of files.
+* dc: (dc).                            Arbitrary precision RPN "Desktop
+                                       Calculator".
+* Ed: (ed).                            The GNU line editor.
+* Recode: (recode).                    Character set conversion utility.
+* Screen: (screen).                    Full-screen window manager.
+* sed: (sed).                          Stream EDitor.
+* Shar utilities: (sharutils).         Shell archiver, uuencode/uudecode.
+* Time: (time).                        A utility to time the execution of a
+                                       command
+* Maplev: (maplev).                    MapleV, a GNU Emacs major mode for
+                                       developing code for Maple V, a
+                                       computer algebra system (CAS) produced
+                                       by Waterloo Maple Inc.
\ No newline at end of file
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/info/dir.old b/linux-x86/toolchain/arm-eabi-4.4.0/info/dir.old
new file mode 100644 (file)
index 0000000..3b1d5fa
--- /dev/null
@@ -0,0 +1,271 @@
+-*- Text -*-
+This is the file .../info/dir, which contains the topmost node of
+the Info hierarchy.  The first time you invoke Info you start off
+looking at that node, which is (dir)Top.
+\1f
+File: dir      Node: Top       This is the top of the INFO tree
+  This (the Directory node) gives a menu of major topics.
+  Typing "q" exits, "?" lists all Info commands, "d" returns here,
+  "mCoreutils<Return>" visits Coreutils topic, etc.
+  Or click mouse button 2 on a menu item or cross reference to select
+  it.
+  --- PLEASE ADD DOCUMENTATION TO THIS TREE. (See INFO topic first.) ---
+
+In Ubuntu, Info `dir' entries are added with the command
+`install-info'.  Please refer to install-info(8) for usage details.
+
+* Menu: The list of major topics begins on the next line.
+
+Basics
+* Coreutils: (coreutils).              Core GNU (file, text, shell)
+                                       utilities.
+* Common options: (coreutils)Common options.
+                                       Common options.
+* File permissions: (coreutils)File permissions.
+                                       Access modes.
+* Date input formats: (coreutils)Date input formats.
+* Finding files: (find).               Operating on files matching certain
+                                       criteria.
+
+Miscellaneous:
+* Rluserman: (rluserman).              GNU Readline Library API
+* Tasks: (tasks).                      The GNU Task List.
+
+Utilities
+* Enscript: (enscript).                GNU Enscript
+* Gzip: (gzip).                        The gzip command for compressing
+                                       files.
+
+Development
+* Com_err: (com_err).                  A Common Error Description Library for
+                                       UNIX.
+* Flex: (flex).                        A fast scanner generator
+* Gdb: (gdb).                          The GNU debugger.
+* Gdb-Internals: (gdbint).             The GNU debugger's internals.
+* gettext: (gettext).                  GNU gettext utilities.
+* autopoint: (gettext)autopoint Invocation.
+                                       Copy gettext infrastructure.
+* envsubst: (gettext)envsubst Invocation.
+                                       Expand environment variables.
+* gettextize: (gettext)gettextize Invocation.
+                                       Prepare a package for gettext.
+* Gperf: (gperf).                      Perfect Hash Function Generator.
+* M4: (m4).                            The GNU m4 macro preprocessor.
+* msgattrib: (gettext)msgattrib Invocation.
+                                       Select part of a PO file.
+* msgcat: (gettext)msgcat Invocation.  Combine several PO files.
+* msgcmp: (gettext)msgcmp Invocation.  Compare a PO file and template.
+* msgcomm: (gettext)msgcomm Invocation. Match two PO files.
+* msgconv: (gettext)msgconv Invocation. Convert PO file to encoding.
+* msgen: (gettext)msgen Invocation.    Create an English PO file.
+* msgexec: (gettext)msgexec Invocation. Process a PO file.
+* msgfilter: (gettext)msgfilter Invocation.
+                                       Pipe a PO file through a filter.
+* msgfmt: (gettext)msgfmt Invocation.  Make MO files out of PO files.
+* msggrep: (gettext)msggrep Invocation. Select part of a PO file.
+* msginit: (gettext)msginit Invocation. Create a fresh PO file.
+* msgmerge: (gettext)msgmerge Invocation.
+                                       Update a PO file from template.
+* msgunfmt: (gettext)msgunfmt Invocation.
+                                       Uncompile MO file into PO file.
+* msguniq: (gettext)msguniq Invocation. Unify duplicates for PO file.
+* ngettext: (gettext)ngettext Invocation.
+                                       Translate a message with plural.
+* xgettext: (gettext)xgettext Invocation.
+                                       Extract strings into a PO file.
+* ISO639: (gettext)Language Codes.     ISO 639 language codes.
+* ISO3166: (gettext)Country Codes.     ISO 3166 country codes.
+* CVS: (cvs).                          Concurrent Versions System
+* CVS client/server: (cvsclient).      Describes the client/server protocol
+                                       used by CVS.
+* Ipc: (ipc).                          System V interprocess communication
+                                       facilities
+
+Disk Management
+* Fdutils: (fdutils).                  Linux floppy utilities
+
+Editors
+* nano: (nano).                        Small and friendly text editor.
+
+Network Applications
+* Wget: (wget).                        The non-interactive network
+                                       downloader.
+
+SoundINFO-DIR-SECTION Development
+* Festival: (festival).                Speech synthesis system.
+
+Information:
+* Debian menu: (menu).                 The Debian menu system
+
+GNU Utilities
+* gpg2: (gnupg2).                      OpenPGP encryption and signing tool.
+* gpgsm: (gnupg2).                     S/MIME encryption and signing tool.
+* dirmngr: (dirmngr).                  X.509 CRL and OCSP server.
+* dirmngr-client: (dirmngr).           X.509 CRL and OCSP client.
+
+GNU Packages
+* Ocrad: (ocrad).                      The GNU OCR program.
+
+TeX
+* LaTeX2e: (latex).                    LaTeXe help 1.6.
+* Web2c: (web2c).                      TeX, Metafont, and companion programs.
+* bibtex: (web2c)bibtex invocation.    Maintaining bibliographies.
+* dmp: (web2c)dmp invocation.          Troff->MPX (MetaPost pictures).
+* dvicopy: (web2c)dvicopy invocation.  Virtual font expansion
+* dvitomp: (web2c)dvitomp invocation.  DVI to MPX (MetaPost pictures).
+* dvitype: (web2c)dvitype invocation.  DVI to human-readable text.
+* gftodvi: (web2c)gftodvi invocation.  Generic font proofsheets.
+* gftopk: (web2c)gftopk invocation.    Generic to packed fonts.
+* gftype: (web2c)gftype invocation.    GF to human-readable text.
+* makempx: (web2c)makempx invocation.  MetaPost label typesetting.
+* mf: (web2c)mf invocation.            Creating typeface families.
+* mft: (web2c)mft invocation.          Prettyprinting Metafont source.
+* mltex: (web2c)MLTeX.                 Multi-lingual TeX.
+* mpost: (web2c)mpost invocation.      Creating technical diagrams.
+* mpto: (web2c)mpto invocation.        MetaPost label extraction.
+* newer: (web2c)newer invocation.      Compare modification times.
+* patgen: (web2c)patgen invocation.    Creating hyphenation patterns.
+* pktogf: (web2c)pktogf invocation.    Packed to generic fonts.
+* pktype: (web2c)pktype invocation.    PK to human-readable text.
+* pltotf: (web2c)pltotf invocation.    Property list to TFM.
+* pooltype: (web2c)pooltype invocation. Display WEB pool files.
+* tangle: (web2c)tangle invocation.    WEB to Pascal.
+* tex: (web2c)tex invocation.          Typesetting.
+* tftopl: (web2c)tftopl invocation.    TFM -> property list.
+* vftovp: (web2c)vftovp invocation.    Virtual font -> virtual pl.
+* vptovf: (web2c)vptovf invocation.    Virtual pl -> virtual font.
+* weave: (web2c)weave invocation.      WEB to TeX.
+* Kpathsea: (kpathsea).                File lookup along search paths.
+* kpsewhich: (kpathsea)Invoking kpsewhich.
+                                       TeX file searching.
+* mktexmf: (kpathsea)mktex scripts.    MF source generation.
+* mktexpk: (kpathsea)mktex scripts.    PK bitmap generation.
+* mktextex: (kpathsea)mktex scripts.   TeX source generation.
+* mktextfm: (kpathsea)mktex scripts.   TeX font metric generation.
+* mktexlsr: (kpathsea)Filename database.
+                                       Update ls-R.
+* DVI-to-Postscript: (dvips).          Translating TeX DVI files to
+                                       PostScript.
+* afm2tfm: (dvips)Invoking afm2tfm.    Making Type 1 fonts available to TeX.
+* dvips: (dvips)Invoking Dvips.        DVI-to-PostScript translator.
+* TeX Directories: (tds).              A directory structure for TeX files.
+
+Video CD Tools
+* VCDImager: (vcdimager).              GNU Video CD imaging utilities
+* vcdimager: (vcdimager)vcdimager.     Video CD simple formatter
+* vcd-info:  (vcdimager)vcd-info.      Video CD diagnostic tool
+* cdxa2mpeg: (vcdimager)cdxa2mpeg.     Strip RIFF/CD-XA container
+* vcdxminfo: (vcdimager)vcdxminfo.     Display MPEG stream properties
+* vcdxgen: (vcdimager)vcdxgen.         Video CD XML template generator
+* vcdxbuild: (vcdimager)vcdxbuild.     Video CD XML formatter
+* vcd-info: (vcd-info).                Video CD Information tool
+* vcdxrip: (vcdxrip).                  Video CD Ripping tool
+
+Programming & development tools.
+* DDD: (ddd).                          The Data Display Debugger.
+* DDD-Themes: (ddd-themes).            Writing DDD Themes.
+* DejaGnu: (dejagnu).                  The GNU testing framework.
+
+Emacs 22
+* Ada mode (emacs22): (emacs22/ada-mode).
+                                       Emacs mode for editing and compiling
+                                       Ada code.
+* Autotype (emacs22): (emacs22/autotype).
+                                       Convenient features for text that you
+                                       enter frequently in Emacs.
+* Calc (emacs22): (emacs22/calc).      Advanced desk calculator and
+                                       mathematical tool.
+* CC Mode (emacs22): (emacs22/ccmode). Emacs mode for editing C, C++,
+                                       Objective-C, Java, Pike, AWK, and
+                                       CORBA IDL code.
+* CL (emacs22): (emacs22/cl).          Partial Common Lisp support for Emacs
+                                       Lisp.
+* Dired-X (emacs22): (emacs22/dired-x). Dired Extra Features.
+* Ebrowse (emacs22): (emacs22/ebrowse). A C++ class browser for Emacs.
+* Ediff (emacs22): (emacs22/ediff).    A visual interface for comparing and
+                                       merging programs.
+* Elisp (emacs22): (emacs22/elisp).    The Emacs Lisp Reference Manual.
+* Emacs (emacs22): (emacs22/emacs).    The extensible self-documenting text
+                                       editor.
+* Emacs FAQ (emacs22): (emacs22/efaq). Frequently Asked Questions about
+                                       Emacs.
+* Emacs Lisp Intro (emacs22): (emacs22/eintr).
+                                       A simple introduction to Emacs Lisp
+                                       programming.
+* Emacs MIME (emacs22): (emacs22/emacs-mime).
+                                       Emacs MIME de/composition library.
+* Emacs-Goodies-el: (emacs-goodies-el). Miscellaneous add-ons for Emacs
+* ERC (emacs22): (emacs22/erc).        Powerful, modular, and extensible IRC
+                                       client for Emacs.
+* Eshell (emacs22): (emacs22/eshell).  A command shell implemented in Emacs
+                                       Lisp.
+* EUDC (emacs22): (emacs22/eudc).      An Emacs client for directory servers
+                                       (LDAP, PH).
+* Flymake (emacs22): (emacs22/flymake). A universal on-the-fly syntax checker.
+* Forms (emacs22): (emacs22/forms).    Emacs package for editing data bases
+                                       by filling in forms.
+* Gnus (emacs22): (emacs22/gnus).      The newsreader Gnus.
+* IDLWAVE (emacs22): (emacs22/idlwave). Major mode and shell for IDL files.
+* Info (emacs22): (emacs22/info).      How to use the documentation browsing
+                                       system.
+* Message (emacs22): (emacs22/message). Mail and news composition mode that
+                                       goes with Gnus.
+* MH-E (emacs22): (emacs22/mh-e).      Emacs interface to the MH mail system.
+* Newsticker (emacs22): (emacs22/newsticker).
+                                       A Newsticker for Emacs.
+* Org Mode (emacs22): (emacs22/org).   Outline-based notes management and
+                                       organizer
+* PCL-CVS (emacs22): (emacs22/pcl-cvs). Emacs front-end to CVS.
+* PGG (emacs22): (emacs22/pgg).        Emacs interface to various PGP
+                                       implementations.
+* Rcirc (emacs22): (emacs22/rcirc).    Internet Relay Chat (IRC) client.
+* RefTeX (emacs22): (emacs22/reftex).  Emacs support for LaTeX
+                                       cross-references and citations.
+* SC (emacs22): (emacs22/sc).          Supercite lets you cite parts of
+                                       messages you're replying to, in
+                                       flexible ways.
+* SES (emacs22): (emacs22/ses).        Simple Emacs Spreadsheet
+* Sieve (emacs22): (emacs22/sieve).    Managing Sieve scripts in Emacs.
+* SMTP (emacs22): (emacs22/smtpmail).  Emacs library for sending mail via
+                                       SMTP.
+* Speedbar (emacs22): (emacs22/speedbar).
+                                       File/Tag summarizing utility.
+* TRAMP (emacs22): (emacs22/tramp).    Transparent Remote Access, Multiple
+                                       Protocol GNU Emacs remote file access
+                                       via rsh and rcp.
+* URL (emacs22): (emacs22/url).        URL loading package.
+* VIP (emacs22): (emacs22/vip).        An older VI-emulation for Emacs.
+* VIPER (emacs22): (emacs22/viper).    The newest Emacs VI-emulation mode.
+                                       (also, A VI Plan for Emacs Rescue or
+                                       the VI PERil.)
+* Widget (emacs22): (emacs22/widget).  The "widget" package used by the Emacs
+                                       Customization facility.
+* WoMan (emacs22): (emacs22/woman).    Browse UN*X Manual Pages "W.O.
+                                       (without) Man".
+
+Viewers
+* gv: (gv).                            The GNU PostScript and PDF viewer.
+
+Software development
+* Cpplib: (cppinternals).              Cpplib internals.
+* gcc: (gcc).                          The GNU Compiler Collection.
+* g++: (gcc).                          The GNU C++ compiler.
+* Cpp: (cpp).                          The GNU C preprocessor.
+* gccinstall: (gccinstall).            Installing the GNU Compiler
+                                       Collection.
+
+General Commands
+* Cpio: (cpio).                        A program to manage archives of files.
+* dc: (dc).                            Arbitrary precision RPN "Desktop
+                                       Calculator".
+* Ed: (ed).                            The GNU line editor.
+* Recode: (recode).                    Character set conversion utility.
+* Screen: (screen).                    Full-screen window manager.
+* sed: (sed).                          Stream EDitor.
+* Shar utilities: (sharutils).         Shell archiver, uuencode/uudecode.
+* Time: (time).                        A utility to time the execution of a
+                                       command
+* Maplev: (maplev).                    MapleV, a GNU Emacs major mode for
+                                       developing code for Maple V, a
+                                       computer algebra system (CAS) produced
+                                       by Waterloo Maple Inc.
\ No newline at end of file
index b77860c..b68ce2b 100644 (file)
@@ -1,7 +1,7 @@
-This is doc/gcc.info, produced by makeinfo version 4.8 from
+This is doc/gcc.info, produced by makeinfo version 4.11 from
 ../../../../gcc-4.4.0/gcc/doc/gcc.texi.
 
- Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free
 Software Foundation, Inc.
 
@@ -686,6 +686,7 @@ _Machine Dependent Options_
           -mtp=NAME
           -mword-relocations
           -mfix-cortex-m3-ldrd
+          -mandroid
 
      _AVR Options_
           -mmcu=MCU  -msize  -minit-stack=N  -mno-interrupts
@@ -1748,10 +1749,10 @@ accepts:
 
 `-ffreestanding'
      Assert that compilation takes place in a freestanding environment.
-     This implies `-fno-builtin'.  A freestanding environment is one
-     in which the standard library may not exist, and program startup
-     may not necessarily be at `main'.  The most obvious example is an
-     OS kernel.  This is equivalent to `-fno-hosted'.
+     This implies `-fno-builtin'.  A freestanding environment is one in
+     which the standard library may not exist, and program startup may
+     not necessarily be at `main'.  The most obvious example is an OS
+     kernel.  This is equivalent to `-fno-hosted'.
 
      *Note Language Standards Supported by GCC: Standards, for details
      of freestanding and hosted environments.
@@ -2109,8 +2110,8 @@ have meanings only for C++ programs:
      the vendor-neutral C++ ABI.  Although an effort has been made to
      warn about all such cases, there are probably some cases that are
      not warned about, even though G++ is generating incompatible code.
-     There may also be cases where warnings are emitted even though
-     the code that is generated will be compatible.
+     There may also be cases where warnings are emitted even though the
+     code that is generated will be compatible.
 
      You should rewrite your code to avoid these warnings if you are
      concerned about the fact that code generated by G++ may not be
@@ -2676,8 +2677,8 @@ for example `-Wimplicit' to request warnings on implicit declarations.
 Each of these specific warning options also has a negative form
 beginning `-Wno-' to turn off warnings; for example, `-Wno-implicit'.
 This manual lists only one of the two forms, whichever is not the
-default.  For further, language-specific options also refer to *Note
-C++ Dialect Options:: and *Note Objective-C and Objective-C++ Dialect
+default.  For further, language-specific options also refer to *note
+C++ Dialect Options:: and *note Objective-C and Objective-C++ Dialect
 Options::.
 
 `-pedantic'
@@ -2730,8 +2731,8 @@ Options::.
      This enables all the warnings about constructions that some users
      consider questionable, and that are easy to avoid (or modify to
      prevent the warning), even in conjunction with macros.  This also
-     enables some language-specific warnings described in *Note C++
-     Dialect Options:: and *Note Objective-C and Objective-C++ Dialect
+     enables some language-specific warnings described in *note C++
+     Dialect Options:: and *note Objective-C and Objective-C++ Dialect
      Options::.
 
      `-Wall' turns on the following warning flags:
@@ -4275,13 +4276,14 @@ program or GCC:
 `-dLETTERS'
 `-fdump-rtl-PASS'
      Says to make debugging dumps during compilation at times specified
-     by LETTERS.    This is used for debugging the RTL-based passes of
-     the compiler.  The file names for most of the dumps are made by
-     appending a pass number and a word to the DUMPNAME.  DUMPNAME is
-     generated from the name of the output file, if explicitly
-     specified and it is not an executable, otherwise it is the
-     basename of the source file. These switches may have different
-     effects when `-E' is used for preprocessing.
+     by LETTERS.  This is used for debugging the RTL-based passes of the
+     compiler.  The file names for most of the dumps are made by
+     appending a pass number and a word to the DUMPNAME, and the files
+     are created in the directory of the output file.  DUMPNAME is
+     generated from the name of the output file, if explicitly specified
+     and it is not an executable, otherwise it is the basename of the
+     source file. These switches may have different effects when `-E'
+     is used for preprocessing.
 
      Debug dumps can be enabled with a `-fdump-rtl' switch or some `-d'
      option LETTERS.  Here are the possible letters for use in PASS and
@@ -4527,7 +4529,8 @@ program or GCC:
 `-fdump-translation-unit-OPTIONS (C++ only)'
      Dump a representation of the tree structure for the entire
      translation unit to a file.  The file name is made by appending
-     `.tu' to the source file name.  If the `-OPTIONS' form is used,
+     `.tu' to the source file name, and the file is created in the same
+     directory as the output file.  If the `-OPTIONS' form is used,
      OPTIONS controls the details of the dump as described for the
      `-fdump-tree' options.
 
@@ -4535,14 +4538,16 @@ program or GCC:
 `-fdump-class-hierarchy-OPTIONS (C++ only)'
      Dump a representation of each class's hierarchy and virtual
      function table layout to a file.  The file name is made by
-     appending `.class' to the source file name.  If the `-OPTIONS'
-     form is used, OPTIONS controls the details of the dump as
-     described for the `-fdump-tree' options.
+     appending `.class' to the source file name, and the file is
+     created in the same directory as the output file.  If the
+     `-OPTIONS' form is used, OPTIONS controls the details of the dump
+     as described for the `-fdump-tree' options.
 
 `-fdump-ipa-SWITCH'
      Control the dumping at various stages of inter-procedural analysis
-     language tree to a file.  The file name is generated by appending
-     a switch specific suffix to the source file name.  The following
+     language tree to a file.  The file name is generated by appending a
+     switch specific suffix to the source file name, and the file is
+     created in the same directory as the output file.  The following
      dumps are possible:
 
     `all'
@@ -4559,7 +4564,8 @@ program or GCC:
 `-fdump-statistics-OPTION'
      Enable and control dumping of pass statistics in a separate file.
      The file name is generated by appending a suffix ending in
-     `.statistics' to the source file name.  If the `-OPTION' form is
+     `.statistics' to the source file name, and the file is created in
+     the same directory as the output file.  If the `-OPTION' form is
      used, `-stats' will cause counters to be summed over the whole
      compilation unit while `-details' will dump every event as the
      passes generate them.  The default with no option is to sum
@@ -4569,7 +4575,8 @@ program or GCC:
 `-fdump-tree-SWITCH-OPTIONS'
      Control the dumping at various stages of processing the
      intermediate language tree to a file.  The file name is generated
-     by appending a switch specific suffix to the source file name.  If
+     by appending a switch specific suffix to the source file name, and
+     the file is created in the same directory as the output file.  If
      the `-OPTIONS' form is used, OPTIONS is a list of `-' separated
      options that control the details of the dump.  Not all options are
      applicable to all dumps, those which are not meaningful will be
@@ -7264,6 +7271,27 @@ includes experimental options that may produce broken code.
           performed on them.  The default value of the parameter is
           1000 for -O1 and 10000 for -O2 and above.
 
+    `ctrl-regpre'
+          This is a switch to turn on live range shrinking optimization.
+
+    `ctrl-regpre-mode'
+          This is used as a control knob to enable different
+          transformations in the live range shrinking phase. Values of
+          1, 2, and 4 are used to enable upward motion, downward
+          motion, and tree reshaping transformations  respectively. The
+          values can be bitwise ORed.
+
+    `reg-pressure-min-bb-factor'
+          A performance tuning knob to control register pressure. When
+          the size (in the number of gimple statements) of a basic
+          block in a loop is larger than the threshold specified by
+          this parameter multiplied by the number of available
+          registers, live range shrinking optimization is enabled.
+
+    `reg-pressure-min-tree'
+          The minimal size (number of leaves) of a tree to be reshaped
+          in the Live Range Shrinking optimization.
+
 
 \1f
 File: gcc.info,  Node: Preprocessor Options,  Next: Assembler Options,  Prev: Optimize Options,  Up: Invoking GCC
@@ -8096,8 +8124,8 @@ doing a link step.
      shared libraries by default.  Otherwise, it will take advantage of
      the linker and optimize away the linking with the shared version
      of `libgcc', linking with the static version of libgcc by default.
-     This allows exceptions to propagate through such shared
-     libraries, without incurring relocation costs at library load time.
+     This allows exceptions to propagate through such shared libraries,
+     without incurring relocation costs at library load time.
 
      However, if a library or main executable is supposed to throw or
      catch exceptions, you must link it using the G++ or GCJ driver, as
@@ -9188,6 +9216,35 @@ architectures:
      SymbianOS) where the runtime loader imposes this restriction, and
      when `-fpic' or `-fPIC' is specified.
 
+`-mandroid'
+     Enable Android specific compilier options.
+
+     If this option is used, a preprocessor macro `__ANDROID__' is
+     defined and has the value 1 during compilation. The option also
+     implies C/C++ options `-fno-exceptions' `-fpic' `-mthumb-interwork'
+     `-fno-short-enums' and C++ option `-fno-rtti'. These implied
+     options can be overridden. For example RTTI in C++ code can still
+     be enabled with -frtti even when -mandroid is also used.
+
+     Linking options depend on whether a static executable, a dynamic
+     executable or a shared library is built. When `-static' is given,
+     `-mandroid' implies linking flag `-Bstatic', start file
+     `crtbegin_static.o' and end file `crtend_android.o'.
+
+     When `-shared' is given, `-mandroid' implies the linking flag
+     `-Bsymbolic' and no start and end files.
+
+     When none of `-static' and `-shared' is given, `-mandroid' implies
+     linking flags `-Bdynamic -dynamic-linker /system/bin/linker',
+     start file `crtbegin_dynamic.o' and end file `crtend_android.o'.
+     The dynamic linker used can be overriden by another
+     `-dynamic-linker' in command line.
+
+     The linking option `-ldl' is also added if `-static' is not given.
+
+     If more than one of `-dynamic', `-static' and `-shared' are given,
+     behaviour of `-mandroid' is undefined.
+
 
 \1f
 File: gcc.info,  Node: AVR Options,  Next: Blackfin Options,  Prev: ARM Options,  Up: Submodel Options
@@ -9593,13 +9650,13 @@ its input files.
      subframework header.  Two subframeworks are siblings if they occur
      in the same framework.  A subframework should not have the same
      name as a framework, a warning will be issued if this is violated.
-     Currently a subframework cannot have subframeworks, in the
-     future, the mechanism may be extended to support this.  The
-     standard frameworks can be found in `"/System/Library/Frameworks"'
-     and `"/Library/Frameworks"'.  An example include looks like
-     `#include <Framework/header.h>', where `Framework' denotes the
-     name of the framework and header.h is found in the
-     `"PrivateHeaders"' or `"Headers"' directory.
+     Currently a subframework cannot have subframeworks, in the future,
+     the mechanism may be extended to support this.  The standard
+     frameworks can be found in `"/System/Library/Frameworks"' and
+     `"/Library/Frameworks"'.  An example include looks like `#include
+     <Framework/header.h>', where `Framework' denotes the name of the
+     framework and header.h is found in the `"PrivateHeaders"' or
+     `"Headers"' directory.
 
 `-iframeworkDIR'
      Like `-F' except the directory is a treated as a system directory.
@@ -10989,7 +11046,7 @@ computers:
      These switches enable or disable the use of instructions in the
      MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, AVX, AES, PCLMUL, SSE4A,
      SSE5, ABM or 3DNow! extended instruction sets.  These extensions
-     are also available as built-in functions: see *Note X86 Built-in
+     are also available as built-in functions: see *note X86 Built-in
      Functions::, for details of the functions enabled and disabled by
      these switches.
 
@@ -11028,7 +11085,7 @@ computers:
      128-bit double quadword (or oword) data types.  This is useful for
      high resolution counters that could be updated by multiple
      processors (or cores).  This instruction is generated as part of
-     atomic built-in functions: see *Note Atomic Builtins:: for details.
+     atomic built-in functions: see *note Atomic Builtins:: for details.
 
 `-msahf'
      This option will enable GCC to use SAHF instruction in generated
@@ -11037,7 +11094,7 @@ computers:
      step in December 2005.  LAHF and SAHF are load and store
      instructions, respectively, for certain status flags.  In 64-bit
      mode, SAHF instruction is used to optimize `fmod', `drem' or
-     `remainder' built-in functions: see *Note Other Builtins:: for
+     `remainder' built-in functions: see *note Other Builtins:: for
      details.
 
 `-mrecip'
@@ -14585,7 +14642,7 @@ These additional options are available for Windows targets:
      specifies that a GUI application is to be generated by instructing
      the linker to set the PE header subsystem type appropriately.
 
- See also under *Note i386 and x86-64 Options:: for standard options.
+ See also under *note i386 and x86-64 Options:: for standard options.
 
 \1f
 File: gcc.info,  Node: Xstormy16 Options,  Next: Xtensa Options,  Prev: x86-64 Options,  Up: Submodel Options
@@ -15497,7 +15554,7 @@ good sense, and the constraints of your build system.
 ignore the precompiled header if the conditions aren't met.  If you
 find an option combination that doesn't work and doesn't cause the
 precompiled header to be ignored, please consider filing a bug report,
-see *Note Bugs::.
+see *note Bugs::.
 
  If you do use differing options when generating and using the
 precompiled header, the actual behavior will be a mixture of the
@@ -16017,7 +16074,7 @@ File: gcc.info,  Node: Hints implementation,  Next: Structures unions enumeratio
      ways:
 
         * When used as part of the register variable extension, see
-          *Note Explicit Reg Vars::.
+          *note Explicit Reg Vars::.
 
         * When `-O0' is in use, the compiler allocates distinct stack
           memory for all variables that do not have the `register'
@@ -18106,8 +18163,8 @@ attributes.
      On the Intel 386, the `fastcall' attribute causes the compiler to
      pass the first argument (if of integral type) in the register ECX
      and the second argument (if of integral type) in the register EDX.
-     Subsequent and other typed arguments are passed on the stack.
-     The called function will pop the arguments off the stack.  If the
+     Subsequent and other typed arguments are passed on the stack.  The
+     called function will pop the arguments off the stack.  If the
      number of arguments is variable all arguments are pushed on the
      stack.
 
@@ -19720,14 +19777,14 @@ attributes.
      compilers.
 
 `weak'
-     The `weak' attribute is described in *Note Function Attributes::.
+     The `weak' attribute is described in *note Function Attributes::.
 
 `dllimport'
-     The `dllimport' attribute is described in *Note Function
+     The `dllimport' attribute is described in *note Function
      Attributes::.
 
 `dllexport'
-     The `dllexport' attribute is described in *Note Function
+     The `dllexport' attribute is described in *note Function
      Attributes::.
 
 
@@ -19897,16 +19954,16 @@ Three attributes currently are defined for PowerPC configurations:
 `altivec', `ms_struct' and `gcc_struct'.
 
  For full documentation of the struct attributes please see the
-documentation in *Note i386 Variable Attributes::.
+documentation in *note i386 Variable Attributes::.
 
  For documentation of `altivec' attribute please see the documentation
-in *Note PowerPC Type Attributes::.
+in *note PowerPC Type Attributes::.
 
 5.34.5 SPU Variable Attributes
 ------------------------------
 
 The SPU supports the `spu_vector' attribute for variables.  For
-documentation of this attribute please see the documentation in *Note
+documentation of this attribute please see the documentation in *note
 SPU Type Attributes::.
 
 5.34.6 Xstormy16 Variable Attributes
@@ -20262,7 +20319,7 @@ Three attributes currently are defined for PowerPC configurations:
 `altivec', `ms_struct' and `gcc_struct'.
 
  For full documentation of the `ms_struct' and `gcc_struct' attributes
-please see the documentation in *Note i386 Type Attributes::.
+please see the documentation in *note i386 Type Attributes::.
 
  The `altivec' attribute allows one to declare AltiVec vector data
 types supported by the AltiVec Programming Interface Manual.  The
@@ -22617,7 +22674,7 @@ linker that do not start with an underscore.
 
  It does not make sense to use this feature with a non-static local
 variable since such variables do not have assembler names.  If you are
-trying to put the variable in a particular register, see *Note Explicit
+trying to put the variable in a particular register, see *note Explicit
 Reg Vars::.  GCC presently accepts such code with a warning, but will
 probably be changed to issue an error, rather than a warning, in the
 future.
@@ -34751,7 +34808,7 @@ linkage (and debugging information) in a particular translation unit.
 
  _Note:_ As of GCC 2.7.2, these `#pragma's are not useful in most
 cases, because of COMDAT support and the "key method" heuristic
-mentioned in *Note Vague Linkage::.  Using them can actually cause your
+mentioned in *note Vague Linkage::.  Using them can actually cause your
 program to grow due to unnecessary out-of-line copies of inline
 functions.  Currently (3.4) the only benefit of these `#pragma's is
 reduced duplication of debugging information, and that should be
@@ -35035,7 +35092,7 @@ Some attributes only make sense for C++ programs.
      mechanism, instead of regular virtual table dispatch.
 
 
- See also *Note Namespace Association::.
+ See also *note Namespace Association::.
 
 \1f
 File: gcc.info,  Node: Namespace Association,  Next: Type Traits,  Prev: C++ Attributes,  Up: C++ Extensions
@@ -40106,7 +40163,7 @@ look up both forms.
 * Menu:
 
 * ###:                                   Overall Options.    (line  204)
-* -fdump-statistics:                     Debugging Options.  (line  619)
+* -fdump-statistics:                     Debugging Options.  (line  623)
 * A:                                     Preprocessor Options.
                                                              (line  538)
 * all_load:                              Darwin Options.     (line  112)
@@ -40139,30 +40196,30 @@ look up both forms.
 * D:                                     Preprocessor Options.
                                                              (line   33)
 * d:                                     Debugging Options.  (line  336)
-* dA:                                    Debugging Options.  (line  538)
+* dA:                                    Debugging Options.  (line  539)
 * dD <1>:                                Preprocessor Options.
                                                              (line  570)
-* dD:                                    Debugging Options.  (line  542)
+* dD:                                    Debugging Options.  (line  543)
 * dead_strip:                            Darwin Options.     (line  199)
 * dependency-file:                       Darwin Options.     (line  199)
-* dH:                                    Debugging Options.  (line  546)
+* dH:                                    Debugging Options.  (line  547)
 * dI:                                    Preprocessor Options.
                                                              (line  579)
 * dM:                                    Preprocessor Options.
                                                              (line  554)
-* dm:                                    Debugging Options.  (line  549)
+* dm:                                    Debugging Options.  (line  550)
 * dN:                                    Preprocessor Options.
                                                              (line  576)
-* dP:                                    Debugging Options.  (line  558)
-* dp:                                    Debugging Options.  (line  553)
+* dP:                                    Debugging Options.  (line  559)
+* dp:                                    Debugging Options.  (line  554)
 * dU:                                    Preprocessor Options.
                                                              (line  583)
-* dumpmachine:                           Debugging Options.  (line  946)
-* dumpspecs:                             Debugging Options.  (line  954)
-* dumpversion:                           Debugging Options.  (line  950)
-* dv:                                    Debugging Options.  (line  562)
-* dx:                                    Debugging Options.  (line  567)
-* dy:                                    Debugging Options.  (line  571)
+* dumpmachine:                           Debugging Options.  (line  952)
+* dumpspecs:                             Debugging Options.  (line  960)
+* dumpversion:                           Debugging Options.  (line  956)
+* dv:                                    Debugging Options.  (line  563)
+* dx:                                    Debugging Options.  (line  568)
+* dy:                                    Debugging Options.  (line  572)
 * dylib_file:                            Darwin Options.     (line  199)
 * dylinker_install_name:                 Darwin Options.     (line  199)
 * dynamic:                               Darwin Options.     (line  199)
@@ -40230,109 +40287,109 @@ look up both forms.
 * fdollars-in-identifiers:               Preprocessor Options.
                                                              (line  468)
 * fdse:                                  Optimize Options.   (line  465)
-* fdump-class-hierarchy:                 Debugging Options.  (line  595)
-* fdump-ipa:                             Debugging Options.  (line  602)
-* fdump-noaddr:                          Debugging Options.  (line  574)
-* fdump-rtl-alignments:                  Debugging Options.  (line  350)
-* fdump-rtl-all:                         Debugging Options.  (line  535)
-* fdump-rtl-asmcons:                     Debugging Options.  (line  353)
-* fdump-rtl-auto_inc_dec:                Debugging Options.  (line  357)
-* fdump-rtl-barriers:                    Debugging Options.  (line  361)
-* fdump-rtl-bbpart:                      Debugging Options.  (line  364)
-* fdump-rtl-bbro:                        Debugging Options.  (line  367)
-* fdump-rtl-btl2:                        Debugging Options.  (line  371)
-* fdump-rtl-bypass:                      Debugging Options.  (line  375)
-* fdump-rtl-ce1:                         Debugging Options.  (line  386)
-* fdump-rtl-ce2:                         Debugging Options.  (line  386)
-* fdump-rtl-ce3:                         Debugging Options.  (line  386)
-* fdump-rtl-combine:                     Debugging Options.  (line  378)
-* fdump-rtl-compgotos:                   Debugging Options.  (line  381)
-* fdump-rtl-cprop_hardreg:               Debugging Options.  (line  390)
-* fdump-rtl-csa:                         Debugging Options.  (line  393)
-* fdump-rtl-cse1:                        Debugging Options.  (line  397)
-* fdump-rtl-cse2:                        Debugging Options.  (line  397)
-* fdump-rtl-dbr:                         Debugging Options.  (line  404)
-* fdump-rtl-dce:                         Debugging Options.  (line  401)
-* fdump-rtl-dce1:                        Debugging Options.  (line  408)
-* fdump-rtl-dce2:                        Debugging Options.  (line  408)
-* fdump-rtl-dfinish:                     Debugging Options.  (line  532)
-* fdump-rtl-dfinit:                      Debugging Options.  (line  532)
-* fdump-rtl-eh:                          Debugging Options.  (line  412)
-* fdump-rtl-eh_ranges:                   Debugging Options.  (line  415)
-* fdump-rtl-expand:                      Debugging Options.  (line  418)
-* fdump-rtl-fwprop1:                     Debugging Options.  (line  422)
-* fdump-rtl-fwprop2:                     Debugging Options.  (line  422)
-* fdump-rtl-gcse1:                       Debugging Options.  (line  427)
-* fdump-rtl-gcse2:                       Debugging Options.  (line  427)
-* fdump-rtl-init-regs:                   Debugging Options.  (line  431)
-* fdump-rtl-initvals:                    Debugging Options.  (line  434)
-* fdump-rtl-into_cfglayout:              Debugging Options.  (line  437)
-* fdump-rtl-ira:                         Debugging Options.  (line  440)
-* fdump-rtl-jump:                        Debugging Options.  (line  443)
-* fdump-rtl-loop2:                       Debugging Options.  (line  446)
-* fdump-rtl-mach:                        Debugging Options.  (line  450)
-* fdump-rtl-mode_sw:                     Debugging Options.  (line  454)
-* fdump-rtl-outof_cfglayout:             Debugging Options.  (line  460)
-* fdump-rtl-peephole2:                   Debugging Options.  (line  463)
-* fdump-rtl-postreload:                  Debugging Options.  (line  466)
-* fdump-rtl-pro_and_epilogue:            Debugging Options.  (line  469)
-* fdump-rtl-regclass:                    Debugging Options.  (line  532)
-* fdump-rtl-regmove:                     Debugging Options.  (line  472)
-* fdump-rtl-rnreg:                       Debugging Options.  (line  457)
-* fdump-rtl-sched1:                      Debugging Options.  (line  476)
-* fdump-rtl-sched2:                      Debugging Options.  (line  476)
-* fdump-rtl-see:                         Debugging Options.  (line  480)
-* fdump-rtl-seqabstr:                    Debugging Options.  (line  483)
-* fdump-rtl-shorten:                     Debugging Options.  (line  486)
-* fdump-rtl-sibling:                     Debugging Options.  (line  489)
-* fdump-rtl-sms:                         Debugging Options.  (line  502)
-* fdump-rtl-split1:                      Debugging Options.  (line  496)
-* fdump-rtl-split2:                      Debugging Options.  (line  496)
-* fdump-rtl-split3:                      Debugging Options.  (line  496)
-* fdump-rtl-split4:                      Debugging Options.  (line  496)
-* fdump-rtl-split5:                      Debugging Options.  (line  496)
-* fdump-rtl-stack:                       Debugging Options.  (line  506)
-* fdump-rtl-subreg1:                     Debugging Options.  (line  512)
-* fdump-rtl-subreg2:                     Debugging Options.  (line  512)
-* fdump-rtl-subregs_of_mode_finish:      Debugging Options.  (line  532)
-* fdump-rtl-subregs_of_mode_init:        Debugging Options.  (line  532)
-* fdump-rtl-unshare:                     Debugging Options.  (line  516)
-* fdump-rtl-vartrack:                    Debugging Options.  (line  519)
-* fdump-rtl-vregs:                       Debugging Options.  (line  522)
-* fdump-rtl-web:                         Debugging Options.  (line  525)
-* fdump-translation-unit:                Debugging Options.  (line  587)
-* fdump-tree:                            Debugging Options.  (line  629)
-* fdump-tree-alias:                      Debugging Options.  (line  713)
-* fdump-tree-all:                        Debugging Options.  (line  798)
-* fdump-tree-ccp:                        Debugging Options.  (line  717)
-* fdump-tree-cfg:                        Debugging Options.  (line  693)
-* fdump-tree-ch:                         Debugging Options.  (line  705)
-* fdump-tree-copyprop:                   Debugging Options.  (line  733)
-* fdump-tree-copyrename:                 Debugging Options.  (line  779)
-* fdump-tree-dce:                        Debugging Options.  (line  741)
-* fdump-tree-dom:                        Debugging Options.  (line  759)
-* fdump-tree-dse:                        Debugging Options.  (line  764)
-* fdump-tree-forwprop:                   Debugging Options.  (line  774)
-* fdump-tree-fre:                        Debugging Options.  (line  729)
-* fdump-tree-gimple:                     Debugging Options.  (line  688)
-* fdump-tree-mudflap:                    Debugging Options.  (line  745)
-* fdump-tree-nrv:                        Debugging Options.  (line  784)
-* fdump-tree-phiopt:                     Debugging Options.  (line  769)
-* fdump-tree-pre:                        Debugging Options.  (line  725)
-* fdump-tree-sink:                       Debugging Options.  (line  755)
-* fdump-tree-sra:                        Debugging Options.  (line  750)
-* fdump-tree-ssa:                        Debugging Options.  (line  709)
-* fdump-tree-store_copyprop:             Debugging Options.  (line  737)
-* fdump-tree-storeccp:                   Debugging Options.  (line  721)
-* fdump-tree-vcg:                        Debugging Options.  (line  697)
-* fdump-tree-vect:                       Debugging Options.  (line  789)
-* fdump-tree-vrp:                        Debugging Options.  (line  794)
-* fdump-unnumbered:                      Debugging Options.  (line  580)
+* fdump-class-hierarchy:                 Debugging Options.  (line  597)
+* fdump-ipa:                             Debugging Options.  (line  605)
+* fdump-noaddr:                          Debugging Options.  (line  575)
+* fdump-rtl-alignments:                  Debugging Options.  (line  351)
+* fdump-rtl-all:                         Debugging Options.  (line  536)
+* fdump-rtl-asmcons:                     Debugging Options.  (line  354)
+* fdump-rtl-auto_inc_dec:                Debugging Options.  (line  358)
+* fdump-rtl-barriers:                    Debugging Options.  (line  362)
+* fdump-rtl-bbpart:                      Debugging Options.  (line  365)
+* fdump-rtl-bbro:                        Debugging Options.  (line  368)
+* fdump-rtl-btl2:                        Debugging Options.  (line  372)
+* fdump-rtl-bypass:                      Debugging Options.  (line  376)
+* fdump-rtl-ce1:                         Debugging Options.  (line  387)
+* fdump-rtl-ce2:                         Debugging Options.  (line  387)
+* fdump-rtl-ce3:                         Debugging Options.  (line  387)
+* fdump-rtl-combine:                     Debugging Options.  (line  379)
+* fdump-rtl-compgotos:                   Debugging Options.  (line  382)
+* fdump-rtl-cprop_hardreg:               Debugging Options.  (line  391)
+* fdump-rtl-csa:                         Debugging Options.  (line  394)
+* fdump-rtl-cse1:                        Debugging Options.  (line  398)
+* fdump-rtl-cse2:                        Debugging Options.  (line  398)
+* fdump-rtl-dbr:                         Debugging Options.  (line  405)
+* fdump-rtl-dce:                         Debugging Options.  (line  402)
+* fdump-rtl-dce1:                        Debugging Options.  (line  409)
+* fdump-rtl-dce2:                        Debugging Options.  (line  409)
+* fdump-rtl-dfinish:                     Debugging Options.  (line  533)
+* fdump-rtl-dfinit:                      Debugging Options.  (line  533)
+* fdump-rtl-eh:                          Debugging Options.  (line  413)
+* fdump-rtl-eh_ranges:                   Debugging Options.  (line  416)
+* fdump-rtl-expand:                      Debugging Options.  (line  419)
+* fdump-rtl-fwprop1:                     Debugging Options.  (line  423)
+* fdump-rtl-fwprop2:                     Debugging Options.  (line  423)
+* fdump-rtl-gcse1:                       Debugging Options.  (line  428)
+* fdump-rtl-gcse2:                       Debugging Options.  (line  428)
+* fdump-rtl-init-regs:                   Debugging Options.  (line  432)
+* fdump-rtl-initvals:                    Debugging Options.  (line  435)
+* fdump-rtl-into_cfglayout:              Debugging Options.  (line  438)
+* fdump-rtl-ira:                         Debugging Options.  (line  441)
+* fdump-rtl-jump:                        Debugging Options.  (line  444)
+* fdump-rtl-loop2:                       Debugging Options.  (line  447)
+* fdump-rtl-mach:                        Debugging Options.  (line  451)
+* fdump-rtl-mode_sw:                     Debugging Options.  (line  455)
+* fdump-rtl-outof_cfglayout:             Debugging Options.  (line  461)
+* fdump-rtl-peephole2:                   Debugging Options.  (line  464)
+* fdump-rtl-postreload:                  Debugging Options.  (line  467)
+* fdump-rtl-pro_and_epilogue:            Debugging Options.  (line  470)
+* fdump-rtl-regclass:                    Debugging Options.  (line  533)
+* fdump-rtl-regmove:                     Debugging Options.  (line  473)
+* fdump-rtl-rnreg:                       Debugging Options.  (line  458)
+* fdump-rtl-sched1:                      Debugging Options.  (line  477)
+* fdump-rtl-sched2:                      Debugging Options.  (line  477)
+* fdump-rtl-see:                         Debugging Options.  (line  481)
+* fdump-rtl-seqabstr:                    Debugging Options.  (line  484)
+* fdump-rtl-shorten:                     Debugging Options.  (line  487)
+* fdump-rtl-sibling:                     Debugging Options.  (line  490)
+* fdump-rtl-sms:                         Debugging Options.  (line  503)
+* fdump-rtl-split1:                      Debugging Options.  (line  497)
+* fdump-rtl-split2:                      Debugging Options.  (line  497)
+* fdump-rtl-split3:                      Debugging Options.  (line  497)
+* fdump-rtl-split4:                      Debugging Options.  (line  497)
+* fdump-rtl-split5:                      Debugging Options.  (line  497)
+* fdump-rtl-stack:                       Debugging Options.  (line  507)
+* fdump-rtl-subreg1:                     Debugging Options.  (line  513)
+* fdump-rtl-subreg2:                     Debugging Options.  (line  513)
+* fdump-rtl-subregs_of_mode_finish:      Debugging Options.  (line  533)
+* fdump-rtl-subregs_of_mode_init:        Debugging Options.  (line  533)
+* fdump-rtl-unshare:                     Debugging Options.  (line  517)
+* fdump-rtl-vartrack:                    Debugging Options.  (line  520)
+* fdump-rtl-vregs:                       Debugging Options.  (line  523)
+* fdump-rtl-web:                         Debugging Options.  (line  526)
+* fdump-translation-unit:                Debugging Options.  (line  588)
+* fdump-tree:                            Debugging Options.  (line  634)
+* fdump-tree-alias:                      Debugging Options.  (line  719)
+* fdump-tree-all:                        Debugging Options.  (line  804)
+* fdump-tree-ccp:                        Debugging Options.  (line  723)
+* fdump-tree-cfg:                        Debugging Options.  (line  699)
+* fdump-tree-ch:                         Debugging Options.  (line  711)
+* fdump-tree-copyprop:                   Debugging Options.  (line  739)
+* fdump-tree-copyrename:                 Debugging Options.  (line  785)
+* fdump-tree-dce:                        Debugging Options.  (line  747)
+* fdump-tree-dom:                        Debugging Options.  (line  765)
+* fdump-tree-dse:                        Debugging Options.  (line  770)
+* fdump-tree-forwprop:                   Debugging Options.  (line  780)
+* fdump-tree-fre:                        Debugging Options.  (line  735)
+* fdump-tree-gimple:                     Debugging Options.  (line  694)
+* fdump-tree-mudflap:                    Debugging Options.  (line  751)
+* fdump-tree-nrv:                        Debugging Options.  (line  790)
+* fdump-tree-phiopt:                     Debugging Options.  (line  775)
+* fdump-tree-pre:                        Debugging Options.  (line  731)
+* fdump-tree-sink:                       Debugging Options.  (line  761)
+* fdump-tree-sra:                        Debugging Options.  (line  756)
+* fdump-tree-ssa:                        Debugging Options.  (line  715)
+* fdump-tree-store_copyprop:             Debugging Options.  (line  743)
+* fdump-tree-storeccp:                   Debugging Options.  (line  727)
+* fdump-tree-vcg:                        Debugging Options.  (line  703)
+* fdump-tree-vect:                       Debugging Options.  (line  795)
+* fdump-tree-vrp:                        Debugging Options.  (line  800)
+* fdump-unnumbered:                      Debugging Options.  (line  581)
 * fdwarf2-cfi-asm:                       Debugging Options.  (line  223)
 * fearly-inlining:                       Optimize Options.   (line  220)
 * feliminate-dwarf2-dups:                Debugging Options.  (line  136)
 * feliminate-unused-debug-symbols:       Debugging Options.  (line   52)
-* feliminate-unused-debug-types:         Debugging Options.  (line  958)
+* feliminate-unused-debug-types:         Debugging Options.  (line  964)
 * fexceptions:                           Code Gen Options.   (line   34)
 * fexec-charset:                         Preprocessor Options.
                                                              (line  495)
@@ -40534,7 +40591,7 @@ look up both forms.
 * fprofile-generate:                     Optimize Options.   (line 1316)
 * fprofile-use:                          Optimize Options.   (line 1329)
 * fprofile-values:                       Optimize Options.   (line 1563)
-* frandom-string:                        Debugging Options.  (line  827)
+* frandom-string:                        Debugging Options.  (line  833)
 * freciprocal-math:                      Optimize Options.   (line 1426)
 * frecord-gcc-switches:                  Code Gen Options.   (line  174)
 * freg-struct-return:                    Code Gen Options.   (line   88)
@@ -40557,7 +40614,7 @@ look up both forms.
 * fsched-spec-load-dangerous:            Optimize Options.   (line  598)
 * fsched-stalled-insns:                  Optimize Options.   (line  604)
 * fsched-stalled-insns-dep:              Optimize Options.   (line  614)
-* fsched-verbose:                        Debugging Options.  (line  837)
+* fsched-verbose:                        Debugging Options.  (line  843)
 * fsched2-use-superblocks:               Optimize Options.   (line  624)
 * fsched2-use-traces:                    Optimize Options.   (line  635)
 * fschedule-insns:                       Optimize Options.   (line  564)
@@ -40625,7 +40682,7 @@ look up both forms.
 * ftree-ter:                             Optimize Options.   (line  960)
 * ftree-vect-loop-version:               Optimize Options.   (line  972)
 * ftree-vectorize:                       Optimize Options.   (line  968)
-* ftree-vectorizer-verbose:              Debugging Options.  (line  802)
+* ftree-vectorizer-verbose:              Debugging Options.  (line  808)
 * ftree-vrp:                             Optimize Options.   (line  984)
 * funit-at-a-time:                       Optimize Options.   (line 1247)
 * funroll-all-loops:                     Optimize Options.   (line 1004)
@@ -40643,7 +40700,7 @@ look up both forms.
 * funwind-tables:                        Code Gen Options.   (line   57)
 * fuse-cxa-atexit:                       C++ Dialect Options.
                                                              (line  178)
-* fvar-tracking:                         Debugging Options.  (line  882)
+* fvar-tracking:                         Debugging Options.  (line  888)
 * fvariable-expansion-in-unroller:       Optimize Options.   (line 1024)
 * fvect-cost-model:                      Optimize Options.   (line  981)
 * fverbose-asm:                          Code Gen Options.   (line  165)
@@ -40841,6 +40898,7 @@ look up both forms.
 * maltivec:                              RS/6000 and PowerPC Options.
                                                              (line  183)
 * mam33:                                 MN10300 Options.    (line   17)
+* mandroid:                              ARM Options.        (line  264)
 * mapcs:                                 ARM Options.        (line   22)
 * mapcs-frame:                           ARM Options.        (line   14)
 * mapp-regs <1>:                         V850 Options.       (line   57)
@@ -41880,16 +41938,16 @@ look up both forms.
 * prebind_all_twolevel_modules:          Darwin Options.     (line  199)
 * preprocessor:                          Preprocessor Options.
                                                              (line   24)
-* print-file-name:                       Debugging Options.  (line  892)
-* print-libgcc-file-name:                Debugging Options.  (line  913)
-* print-multi-directory:                 Debugging Options.  (line  898)
-* print-multi-lib:                       Debugging Options.  (line  903)
+* print-file-name:                       Debugging Options.  (line  898)
+* print-libgcc-file-name:                Debugging Options.  (line  919)
+* print-multi-directory:                 Debugging Options.  (line  904)
+* print-multi-lib:                       Debugging Options.  (line  909)
 * print-objc-runtime-info:               Objective-C and Objective-C++ Dialect Options.
                                                              (line  244)
-* print-prog-name:                       Debugging Options.  (line  910)
-* print-search-dirs:                     Debugging Options.  (line  921)
-* print-sysroot:                         Debugging Options.  (line  934)
-* print-sysroot-headers-suffix:          Debugging Options.  (line  941)
+* print-prog-name:                       Debugging Options.  (line  916)
+* print-search-dirs:                     Debugging Options.  (line  927)
+* print-sysroot:                         Debugging Options.  (line  940)
+* print-sysroot-headers-suffix:          Debugging Options.  (line  947)
 * private_bundle:                        Darwin Options.     (line  199)
 * pthread <1>:                           SPARC Options.      (line  242)
 * pthread <2>:                           RS/6000 and PowerPC Options.
@@ -41906,7 +41964,7 @@ look up both forms.
 * s:                                     Link Options.       (line  105)
 * S <1>:                                 Link Options.       (line   20)
 * S:                                     Overall Options.    (line  170)
-* save-temps:                            Debugging Options.  (line  854)
+* save-temps:                            Debugging Options.  (line  860)
 * sectalign:                             Darwin Options.     (line  199)
 * sectcreate:                            Darwin Options.     (line  199)
 * sectobjectsymbols:                     Darwin Options.     (line  199)
@@ -41945,7 +42003,7 @@ look up both forms.
 * target-help:                           Overall Options.    (line  240)
 * threads <1>:                           SPARC Options.      (line  230)
 * threads:                               HPPA Options.       (line  205)
-* time:                                  Debugging Options.  (line  868)
+* time:                                  Debugging Options.  (line  874)
 * tls:                                   FRV Options.        (line   75)
 * TLS:                                   FRV Options.        (line   72)
 * traditional <1>:                       Incompatibilities.  (line    6)
@@ -43788,252 +43846,252 @@ Node: G++ and GCC\7f3758
 Node: Standards\7f5823
 Node: Invoking GCC\7f14798
 Node: Option Summary\7f18627
-Node: Overall Options\7f51322
-Node: Invoking G++\7f65659
-Node: C Dialect Options\7f67182
-Node: C++ Dialect Options\7f81073
-Node: Objective-C and Objective-C++ Dialect Options\7f102063
-Node: Language Independent Options\7f113844
-Node: Warning Options\7f116614
-Node: Debugging Options\7f174961
-Node: Optimize Options\7f214162
-Ref: Type-punning\7f260964
-Node: Preprocessor Options\7f317363
-Ref: Wtrigraphs\7f321448
-Ref: dashMF\7f326196
-Ref: fdollars-in-identifiers\7f336715
-Node: Assembler Options\7f345276
-Node: Link Options\7f345981
-Ref: Link Options-Footnote-1\7f355451
-Node: Directory Options\7f355785
-Node: Spec Files\7f361847
-Node: Target Options\7f382186
-Node: Submodel Options\7f383704
-Node: ARC Options\7f385403
-Node: ARM Options\7f386890
-Node: AVR Options\7f399124
-Node: Blackfin Options\7f401342
-Node: CRIS Options\7f409234
-Node: CRX Options\7f412975
-Node: Darwin Options\7f413400
-Node: DEC Alpha Options\7f420893
-Node: DEC Alpha/VMS Options\7f432809
-Node: FR30 Options\7f433195
-Node: FRV Options\7f433770
-Node: GNU/Linux Options\7f440487
-Node: H8/300 Options\7f440945
-Node: HPPA Options\7f442012
-Node: i386 and x86-64 Options\7f451512
-Node: IA-64 Options\7f479497
-Node: M32C Options\7f486822
-Node: M32R/D Options\7f488113
-Node: M680x0 Options\7f491700
-Node: M68hc1x Options\7f505520
-Node: MCore Options\7f507088
-Node: MIPS Options\7f508596
-Node: MMIX Options\7f534631
-Node: MN10300 Options\7f537113
-Node: PDP-11 Options\7f538535
-Node: picoChip Options\7f540375
-Node: PowerPC Options\7f542574
-Node: RS/6000 and PowerPC Options\7f542810
-Node: S/390 and zSeries Options\7f573557
-Node: Score Options\7f581505
-Node: SH Options\7f582333
-Node: SPARC Options\7f592611
-Node: SPU Options\7f603584
-Node: System V Options\7f606872
-Node: V850 Options\7f607695
-Node: VAX Options\7f610835
-Node: VxWorks Options\7f611383
-Node: x86-64 Options\7f612538
-Node: i386 and x86-64 Windows Options\7f612756
-Node: Xstormy16 Options\7f615075
-Node: Xtensa Options\7f615364
-Node: zSeries Options\7f619511
-Node: Code Gen Options\7f619707
-Node: Environment Variables\7f644286
-Node: Precompiled Headers\7f652182
-Node: Running Protoize\7f658408
-Node: C Implementation\7f664745
-Node: Translation implementation\7f666408
-Node: Environment implementation\7f666982
-Node: Identifiers implementation\7f667532
-Node: Characters implementation\7f668586
-Node: Integers implementation\7f671392
-Node: Floating point implementation\7f673217
-Node: Arrays and pointers implementation\7f676146
-Ref: Arrays and pointers implementation-Footnote-1\7f677581
-Node: Hints implementation\7f677705
-Node: Structures unions enumerations and bit-fields implementation\7f679171
-Node: Qualifiers implementation\7f681157
-Node: Declarators implementation\7f682929
-Node: Statements implementation\7f683271
-Node: Preprocessing directives implementation\7f683598
-Node: Library functions implementation\7f685703
-Node: Architecture implementation\7f686343
-Node: Locale-specific behavior implementation\7f687046
-Node: C Extensions\7f687351
-Node: Statement Exprs\7f691962
-Node: Local Labels\7f696475
-Node: Labels as Values\7f699454
-Ref: Labels as Values-Footnote-1\7f701827
-Node: Nested Functions\7f702010
-Node: Constructing Calls\7f705904
-Node: Typeof\7f710627
-Node: Conditionals\7f713793
-Node: Long Long\7f714684
-Node: Complex\7f716185
-Node: Floating Types\7f718755
-Node: Decimal Float\7f719874
-Node: Hex Floats\7f721863
-Node: Fixed-Point\7f722904
-Node: Zero Length\7f726189
-Node: Empty Structures\7f729467
-Node: Variable Length\7f729883
-Node: Variadic Macros\7f732650
-Node: Escaped Newlines\7f735032
-Node: Subscripting\7f735871
-Node: Pointer Arith\7f736594
-Node: Initializers\7f737162
-Node: Compound Literals\7f737658
-Node: Designated Inits\7f739833
-Node: Case Ranges\7f743488
-Node: Cast to Union\7f744171
-Node: Mixed Declarations\7f745267
-Node: Function Attributes\7f745773
-Node: Attribute Syntax\7f808388
-Node: Function Prototypes\7f818658
-Node: C++ Comments\7f820439
-Node: Dollar Signs\7f820958
-Node: Character Escapes\7f821423
-Node: Alignment\7f821717
-Node: Variable Attributes\7f823091
-Ref: i386 Variable Attributes\7f837681
-Node: Type Attributes\7f843666
-Ref: i386 Type Attributes\7f857287
-Ref: PowerPC Type Attributes\7f858127
-Ref: SPU Type Attributes\7f858989
-Node: Inline\7f859280
-Node: Extended Asm\7f864227
-Ref: Example of asm with clobbered asm reg\7f870313
-Node: Constraints\7f884532
-Node: Simple Constraints\7f885382
-Node: Multi-Alternative\7f892053
-Node: Modifiers\7f893770
-Node: Machine Constraints\7f896664
-Node: Asm Labels\7f928877
-Node: Explicit Reg Vars\7f930553
-Node: Global Reg Vars\7f932161
-Node: Local Reg Vars\7f936711
-Node: Alternate Keywords\7f939152
-Node: Incomplete Enums\7f940580
-Node: Function Names\7f941337
-Node: Return Address\7f943499
-Node: Vector Extensions\7f946296
-Node: Offsetof\7f949798
-Node: Atomic Builtins\7f950612
-Node: Object Size Checking\7f955990
-Node: Other Builtins\7f961418
-Node: Target Builtins\7f986226
-Node: Alpha Built-in Functions\7f987120
-Node: ARM iWMMXt Built-in Functions\7f990119
-Node: ARM NEON Intrinsics\7f996838
-Node: Blackfin Built-in Functions\7f1204676
-Node: FR-V Built-in Functions\7f1205290
-Node: Argument Types\7f1206149
-Node: Directly-mapped Integer Functions\7f1207905
-Node: Directly-mapped Media Functions\7f1208987
-Node: Raw read/write Functions\7f1216019
-Node: Other Built-in Functions\7f1216931
-Node: X86 Built-in Functions\7f1218120
-Node: MIPS DSP Built-in Functions\7f1262511
-Node: MIPS Paired-Single Support\7f1274958
-Node: MIPS Loongson Built-in Functions\7f1276459
-Node: Paired-Single Arithmetic\7f1282977
-Node: Paired-Single Built-in Functions\7f1283923
-Node: MIPS-3D Built-in Functions\7f1286593
-Node: picoChip Built-in Functions\7f1291968
-Node: Other MIPS Built-in Functions\7f1293330
-Node: PowerPC AltiVec Built-in Functions\7f1293854
-Node: SPARC VIS Built-in Functions\7f1395278
-Node: SPU Built-in Functions\7f1396970
-Node: Target Format Checks\7f1398752
-Node: Solaris Format Checks\7f1399159
-Node: Pragmas\7f1399556
-Node: ARM Pragmas\7f1400250
-Node: M32C Pragmas\7f1400853
-Node: RS/6000 and PowerPC Pragmas\7f1401429
-Node: Darwin Pragmas\7f1402171
-Node: Solaris Pragmas\7f1403238
-Node: Symbol-Renaming Pragmas\7f1404399
-Node: Structure-Packing Pragmas\7f1407021
-Node: Weak Pragmas\7f1408673
-Node: Diagnostic Pragmas\7f1409475
-Node: Visibility Pragmas\7f1412109
-Node: Push/Pop Macro Pragmas\7f1412861
-Node: Function Specific Option Pragmas\7f1413834
-Node: Unnamed Fields\7f1416049
-Node: Thread-Local\7f1417559
-Node: C99 Thread-Local Edits\7f1419668
-Node: C++98 Thread-Local Edits\7f1421680
-Node: Binary constants\7f1425125
-Node: C++ Extensions\7f1425796
-Node: Volatiles\7f1427438
-Node: Restricted Pointers\7f1430114
-Node: Vague Linkage\7f1431708
-Node: C++ Interface\7f1435364
-Ref: C++ Interface-Footnote-1\7f1439661
-Node: Template Instantiation\7f1439798
-Node: Bound member functions\7f1446810
-Node: C++ Attributes\7f1448353
-Node: Namespace Association\7f1450011
-Node: Type Traits\7f1451425
-Node: Java Exceptions\7f1456972
-Node: Deprecated Features\7f1458369
-Node: Backwards Compatibility\7f1461334
-Node: Objective-C\7f1462692
-Node: Executing code before main\7f1463273
-Node: What you can and what you cannot do in +load\7f1465879
-Node: Type encoding\7f1468046
-Node: Garbage Collection\7f1471433
-Node: Constant string objects\7f1474057
-Node: compatibility_alias\7f1476565
-Node: Compatibility\7f1477443
-Node: Gcov\7f1484010
-Node: Gcov Intro\7f1484541
-Node: Invoking Gcov\7f1487257
-Node: Gcov and Optimization\7f1499338
-Node: Gcov Data Files\7f1501991
-Node: Cross-profiling\7f1503129
-Node: Trouble\7f1504955
-Node: Actual Bugs\7f1506511
-Node: Cross-Compiler Problems\7f1507251
-Node: Interoperation\7f1507665
-Node: Incompatibilities\7f1514802
-Node: Fixed Headers\7f1522952
-Node: Standard Libraries\7f1524615
-Node: Disappointments\7f1525987
-Node: C++ Misunderstandings\7f1530345
-Node: Static Definitions\7f1531164
-Node: Name lookup\7f1532217
-Ref: Name lookup-Footnote-1\7f1536995
-Node: Temporaries\7f1537182
-Node: Copy Assignment\7f1539158
-Node: Protoize Caveats\7f1540965
-Node: Non-bugs\7f1544938
-Node: Warnings and Errors\7f1555442
-Node: Bugs\7f1557206
-Node: Bug Criteria\7f1557770
-Node: Bug Reporting\7f1559980
-Node: Service\7f1560201
-Node: Contributing\7f1561020
-Node: Funding\7f1561760
-Node: GNU Project\7f1564249
-Node: Copying\7f1564895
-Node: GNU Free Documentation License\7f1602423
-Node: Contributors\7f1624829
-Node: Option Index\7f1661156
-Node: Keyword Index\7f1820335
+Node: Overall Options\7f51342
+Node: Invoking G++\7f65679
+Node: C Dialect Options\7f67202
+Node: C++ Dialect Options\7f81093
+Node: Objective-C and Objective-C++ Dialect Options\7f102083
+Node: Language Independent Options\7f113864
+Node: Warning Options\7f116634
+Node: Debugging Options\7f174981
+Node: Optimize Options\7f214603
+Ref: Type-punning\7f261405
+Node: Preprocessor Options\7f318749
+Ref: Wtrigraphs\7f322834
+Ref: dashMF\7f327582
+Ref: fdollars-in-identifiers\7f338101
+Node: Assembler Options\7f346662
+Node: Link Options\7f347367
+Ref: Link Options-Footnote-1\7f356837
+Node: Directory Options\7f357171
+Node: Spec Files\7f363233
+Node: Target Options\7f383572
+Node: Submodel Options\7f385090
+Node: ARC Options\7f386789
+Node: ARM Options\7f388276
+Node: AVR Options\7f401852
+Node: Blackfin Options\7f404070
+Node: CRIS Options\7f411962
+Node: CRX Options\7f415703
+Node: Darwin Options\7f416128
+Node: DEC Alpha Options\7f423621
+Node: DEC Alpha/VMS Options\7f435537
+Node: FR30 Options\7f435923
+Node: FRV Options\7f436498
+Node: GNU/Linux Options\7f443215
+Node: H8/300 Options\7f443673
+Node: HPPA Options\7f444740
+Node: i386 and x86-64 Options\7f454240
+Node: IA-64 Options\7f482225
+Node: M32C Options\7f489550
+Node: M32R/D Options\7f490841
+Node: M680x0 Options\7f494428
+Node: M68hc1x Options\7f508248
+Node: MCore Options\7f509816
+Node: MIPS Options\7f511324
+Node: MMIX Options\7f537359
+Node: MN10300 Options\7f539841
+Node: PDP-11 Options\7f541263
+Node: picoChip Options\7f543103
+Node: PowerPC Options\7f545302
+Node: RS/6000 and PowerPC Options\7f545538
+Node: S/390 and zSeries Options\7f576285
+Node: Score Options\7f584233
+Node: SH Options\7f585061
+Node: SPARC Options\7f595339
+Node: SPU Options\7f606312
+Node: System V Options\7f609600
+Node: V850 Options\7f610423
+Node: VAX Options\7f613563
+Node: VxWorks Options\7f614111
+Node: x86-64 Options\7f615266
+Node: i386 and x86-64 Windows Options\7f615484
+Node: Xstormy16 Options\7f617803
+Node: Xtensa Options\7f618092
+Node: zSeries Options\7f622239
+Node: Code Gen Options\7f622435
+Node: Environment Variables\7f647014
+Node: Precompiled Headers\7f654910
+Node: Running Protoize\7f661136
+Node: C Implementation\7f667473
+Node: Translation implementation\7f669136
+Node: Environment implementation\7f669710
+Node: Identifiers implementation\7f670260
+Node: Characters implementation\7f671314
+Node: Integers implementation\7f674120
+Node: Floating point implementation\7f675945
+Node: Arrays and pointers implementation\7f678874
+Ref: Arrays and pointers implementation-Footnote-1\7f680309
+Node: Hints implementation\7f680433
+Node: Structures unions enumerations and bit-fields implementation\7f681899
+Node: Qualifiers implementation\7f683885
+Node: Declarators implementation\7f685657
+Node: Statements implementation\7f685999
+Node: Preprocessing directives implementation\7f686326
+Node: Library functions implementation\7f688431
+Node: Architecture implementation\7f689071
+Node: Locale-specific behavior implementation\7f689774
+Node: C Extensions\7f690079
+Node: Statement Exprs\7f694690
+Node: Local Labels\7f699203
+Node: Labels as Values\7f702182
+Ref: Labels as Values-Footnote-1\7f704555
+Node: Nested Functions\7f704738
+Node: Constructing Calls\7f708632
+Node: Typeof\7f713355
+Node: Conditionals\7f716521
+Node: Long Long\7f717412
+Node: Complex\7f718913
+Node: Floating Types\7f721483
+Node: Decimal Float\7f722602
+Node: Hex Floats\7f724591
+Node: Fixed-Point\7f725632
+Node: Zero Length\7f728917
+Node: Empty Structures\7f732195
+Node: Variable Length\7f732611
+Node: Variadic Macros\7f735378
+Node: Escaped Newlines\7f737760
+Node: Subscripting\7f738599
+Node: Pointer Arith\7f739322
+Node: Initializers\7f739890
+Node: Compound Literals\7f740386
+Node: Designated Inits\7f742561
+Node: Case Ranges\7f746216
+Node: Cast to Union\7f746899
+Node: Mixed Declarations\7f747995
+Node: Function Attributes\7f748501
+Node: Attribute Syntax\7f811117
+Node: Function Prototypes\7f821387
+Node: C++ Comments\7f823168
+Node: Dollar Signs\7f823687
+Node: Character Escapes\7f824152
+Node: Alignment\7f824446
+Node: Variable Attributes\7f825820
+Ref: i386 Variable Attributes\7f840410
+Node: Type Attributes\7f846395
+Ref: i386 Type Attributes\7f860016
+Ref: PowerPC Type Attributes\7f860856
+Ref: SPU Type Attributes\7f861718
+Node: Inline\7f862009
+Node: Extended Asm\7f866956
+Ref: Example of asm with clobbered asm reg\7f873042
+Node: Constraints\7f887261
+Node: Simple Constraints\7f888111
+Node: Multi-Alternative\7f894782
+Node: Modifiers\7f896499
+Node: Machine Constraints\7f899393
+Node: Asm Labels\7f931606
+Node: Explicit Reg Vars\7f933282
+Node: Global Reg Vars\7f934890
+Node: Local Reg Vars\7f939440
+Node: Alternate Keywords\7f941881
+Node: Incomplete Enums\7f943309
+Node: Function Names\7f944066
+Node: Return Address\7f946228
+Node: Vector Extensions\7f949025
+Node: Offsetof\7f952527
+Node: Atomic Builtins\7f953341
+Node: Object Size Checking\7f958719
+Node: Other Builtins\7f964147
+Node: Target Builtins\7f988955
+Node: Alpha Built-in Functions\7f989849
+Node: ARM iWMMXt Built-in Functions\7f992848
+Node: ARM NEON Intrinsics\7f999567
+Node: Blackfin Built-in Functions\7f1207405
+Node: FR-V Built-in Functions\7f1208019
+Node: Argument Types\7f1208878
+Node: Directly-mapped Integer Functions\7f1210634
+Node: Directly-mapped Media Functions\7f1211716
+Node: Raw read/write Functions\7f1218748
+Node: Other Built-in Functions\7f1219660
+Node: X86 Built-in Functions\7f1220849
+Node: MIPS DSP Built-in Functions\7f1265240
+Node: MIPS Paired-Single Support\7f1277687
+Node: MIPS Loongson Built-in Functions\7f1279188
+Node: Paired-Single Arithmetic\7f1285706
+Node: Paired-Single Built-in Functions\7f1286652
+Node: MIPS-3D Built-in Functions\7f1289322
+Node: picoChip Built-in Functions\7f1294697
+Node: Other MIPS Built-in Functions\7f1296059
+Node: PowerPC AltiVec Built-in Functions\7f1296583
+Node: SPARC VIS Built-in Functions\7f1398007
+Node: SPU Built-in Functions\7f1399699
+Node: Target Format Checks\7f1401481
+Node: Solaris Format Checks\7f1401888
+Node: Pragmas\7f1402285
+Node: ARM Pragmas\7f1402979
+Node: M32C Pragmas\7f1403582
+Node: RS/6000 and PowerPC Pragmas\7f1404158
+Node: Darwin Pragmas\7f1404900
+Node: Solaris Pragmas\7f1405967
+Node: Symbol-Renaming Pragmas\7f1407128
+Node: Structure-Packing Pragmas\7f1409750
+Node: Weak Pragmas\7f1411402
+Node: Diagnostic Pragmas\7f1412204
+Node: Visibility Pragmas\7f1414838
+Node: Push/Pop Macro Pragmas\7f1415590
+Node: Function Specific Option Pragmas\7f1416563
+Node: Unnamed Fields\7f1418778
+Node: Thread-Local\7f1420288
+Node: C99 Thread-Local Edits\7f1422397
+Node: C++98 Thread-Local Edits\7f1424409
+Node: Binary constants\7f1427854
+Node: C++ Extensions\7f1428525
+Node: Volatiles\7f1430167
+Node: Restricted Pointers\7f1432843
+Node: Vague Linkage\7f1434437
+Node: C++ Interface\7f1438093
+Ref: C++ Interface-Footnote-1\7f1442390
+Node: Template Instantiation\7f1442527
+Node: Bound member functions\7f1449539
+Node: C++ Attributes\7f1451082
+Node: Namespace Association\7f1452740
+Node: Type Traits\7f1454154
+Node: Java Exceptions\7f1459701
+Node: Deprecated Features\7f1461098
+Node: Backwards Compatibility\7f1464063
+Node: Objective-C\7f1465421
+Node: Executing code before main\7f1466002
+Node: What you can and what you cannot do in +load\7f1468608
+Node: Type encoding\7f1470775
+Node: Garbage Collection\7f1474162
+Node: Constant string objects\7f1476786
+Node: compatibility_alias\7f1479294
+Node: Compatibility\7f1480172
+Node: Gcov\7f1486739
+Node: Gcov Intro\7f1487270
+Node: Invoking Gcov\7f1489986
+Node: Gcov and Optimization\7f1502067
+Node: Gcov Data Files\7f1504720
+Node: Cross-profiling\7f1505858
+Node: Trouble\7f1507684
+Node: Actual Bugs\7f1509240
+Node: Cross-Compiler Problems\7f1509980
+Node: Interoperation\7f1510394
+Node: Incompatibilities\7f1517531
+Node: Fixed Headers\7f1525681
+Node: Standard Libraries\7f1527344
+Node: Disappointments\7f1528716
+Node: C++ Misunderstandings\7f1533074
+Node: Static Definitions\7f1533893
+Node: Name lookup\7f1534946
+Ref: Name lookup-Footnote-1\7f1539724
+Node: Temporaries\7f1539911
+Node: Copy Assignment\7f1541887
+Node: Protoize Caveats\7f1543694
+Node: Non-bugs\7f1547667
+Node: Warnings and Errors\7f1558171
+Node: Bugs\7f1559935
+Node: Bug Criteria\7f1560499
+Node: Bug Reporting\7f1562709
+Node: Service\7f1562930
+Node: Contributing\7f1563749
+Node: Funding\7f1564489
+Node: GNU Project\7f1566978
+Node: Copying\7f1567624
+Node: GNU Free Documentation License\7f1605152
+Node: Contributors\7f1627558
+Node: Option Index\7f1663885
+Node: Keyword Index\7f1823137
 \1f
 End Tag Table
index 934fa9d..f6941bd 100644 (file)
@@ -1,7 +1,7 @@
-This is doc/gccinstall.info, produced by makeinfo version 4.8 from
+This is doc/gccinstall.info, produced by makeinfo version 4.11 from
 ../../../../gcc-4.4.0/gcc/doc/install.texi.
 
-   Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free
 Software Foundation, Inc.
 
@@ -81,7 +81,7 @@ as well as detailing some target specific installation instructions.
 distributions with their own installation instructions.  This document
 supersedes all package specific installation instructions.
 
-   _Before_ starting the build/install procedure please check the *Note
+   _Before_ starting the build/install procedure please check the *note
 host/target specific installation notes: Specific.  We recommend you
 browse the entire generic installation instructions before you proceed.
 
@@ -2138,7 +2138,7 @@ following information:
      build status list will include a link to the archived copy of your
      message.
 
-   We'd also like to know if the *Note host/target specific
+   We'd also like to know if the *note host/target specific
 installation notes: Specific.  didn't include your host/target
 information or if that information is incomplete or out of date.  Send
 a note to <gcc@gcc.gnu.org> detailing how the information should be
@@ -3628,7 +3628,7 @@ main manual.
      irrelevant, and will be ignored.  So you might as well specify the
      version if you know it.
 
-     See *Note Configurations::, for a list of supported configuration
+     See *note Configurations::, for a list of supported configuration
      names and notes on many of the configurations.  You should check
      the notes in that section before proceeding any further with the
      installation of GCC.
@@ -4183,84 +4183,84 @@ Concept Index
 
 \1f
 Tag Table:
-Node: Top\7f1940
-Node: Installing GCC\7f2498
-Node: Prerequisites\7f4013
-Node: Downloading the source\7f13018
-Node: Configuration\7f14939
-Ref: with-gnu-as\7f29515
-Ref: with-as\7f30413
-Ref: with-gnu-ld\7f31826
-Node: Building\7f69379
-Node: Testing\7f81322
-Node: Final install\7f89102
-Node: Binaries\7f94332
-Node: Specific\7f96305
-Ref: alpha-x-x\7f96811
-Ref: alpha-dec-osf\7f97300
-Ref: arc-x-elf\7f100423
-Ref: arm-x-elf\7f100523
-Ref: arm-x-coff\7f100743
-Ref: arm-x-aout\7f100945
-Ref: avr\7f101067
-Ref: bfin\7f101751
-Ref: cris\7f101993
-Ref: crx\7f102809
-Ref: dos\7f103472
-Ref: x-x-freebsd\7f103795
-Ref: h8300-hms\7f106178
-Ref: hppa-hp-hpux\7f106530
-Ref: hppa-hp-hpux10\7f108901
-Ref: hppa-hp-hpux11\7f109534
-Ref: x-x-linux-gnu\7f115193
-Ref: ix86-x-linux\7f115386
-Ref: ix86-x-solaris210\7f115699
-Ref: ia64-x-linux\7f116085
-Ref: ia64-x-hpux\7f116855
-Ref: x-ibm-aix\7f117410
-Ref: iq2000-x-elf\7f123393
-Ref: m32c-x-elf\7f123533
-Ref: m32r-x-elf\7f123635
-Ref: m6811-elf\7f123737
-Ref: m6812-elf\7f123887
-Ref: m68k-x-x\7f124037
-Ref: m68k-x-uclinux\7f125042
-Ref: mips-x-x\7f125405
-Ref: mips-sgi-irix5\7f128082
-Ref: mips-sgi-irix6\7f129030
-Ref: powerpc-x-x\7f131837
-Ref: powerpc-x-darwin\7f132042
-Ref: powerpc-x-elf\7f132589
-Ref: powerpc-x-linux-gnu\7f132674
-Ref: powerpc-x-netbsd\7f132769
-Ref: powerpc-x-eabisim\7f132857
-Ref: powerpc-x-eabi\7f132983
-Ref: powerpcle-x-elf\7f133059
-Ref: powerpcle-x-eabisim\7f133151
-Ref: powerpcle-x-eabi\7f133284
-Ref: s390-x-linux\7f133367
-Ref: s390x-x-linux\7f133439
-Ref: s390x-ibm-tpf\7f133526
-Ref: x-x-solaris2\7f133657
-Ref: sparc-sun-solaris2\7f137534
-Ref: sparc-sun-solaris27\7f140255
-Ref: sparc-x-linux\7f142719
-Ref: sparc64-x-solaris2\7f142944
-Ref: sparcv9-x-solaris2\7f143589
-Ref: x-x-vxworks\7f143674
-Ref: x86-64-x-x\7f145196
-Ref: xtensa-x-elf\7f145524
-Ref: xtensa-x-linux\7f146195
-Ref: windows\7f146536
-Ref: x-x-cygwin\7f148491
-Ref: x-x-interix\7f148761
-Ref: x-x-mingw32\7f149127
-Ref: os2\7f149353
-Ref: older\7f149544
-Ref: elf\7f151661
-Node: Old\7f151919
-Node: Configurations\7f155056
-Node: GNU Free Documentation License\7f159038
-Node: Concept Index\7f181454
+Node: Top\7f1938
+Node: Installing GCC\7f2496
+Node: Prerequisites\7f4011
+Node: Downloading the source\7f13016
+Node: Configuration\7f14937
+Ref: with-gnu-as\7f29513
+Ref: with-as\7f30411
+Ref: with-gnu-ld\7f31824
+Node: Building\7f69377
+Node: Testing\7f81320
+Node: Final install\7f89100
+Node: Binaries\7f94330
+Node: Specific\7f96303
+Ref: alpha-x-x\7f96809
+Ref: alpha-dec-osf\7f97298
+Ref: arc-x-elf\7f100421
+Ref: arm-x-elf\7f100521
+Ref: arm-x-coff\7f100741
+Ref: arm-x-aout\7f100943
+Ref: avr\7f101065
+Ref: bfin\7f101749
+Ref: cris\7f101991
+Ref: crx\7f102807
+Ref: dos\7f103470
+Ref: x-x-freebsd\7f103793
+Ref: h8300-hms\7f106176
+Ref: hppa-hp-hpux\7f106528
+Ref: hppa-hp-hpux10\7f108899
+Ref: hppa-hp-hpux11\7f109532
+Ref: x-x-linux-gnu\7f115191
+Ref: ix86-x-linux\7f115384
+Ref: ix86-x-solaris210\7f115697
+Ref: ia64-x-linux\7f116083
+Ref: ia64-x-hpux\7f116853
+Ref: x-ibm-aix\7f117408
+Ref: iq2000-x-elf\7f123391
+Ref: m32c-x-elf\7f123531
+Ref: m32r-x-elf\7f123633
+Ref: m6811-elf\7f123735
+Ref: m6812-elf\7f123885
+Ref: m68k-x-x\7f124035
+Ref: m68k-x-uclinux\7f125040
+Ref: mips-x-x\7f125403
+Ref: mips-sgi-irix5\7f128080
+Ref: mips-sgi-irix6\7f129028
+Ref: powerpc-x-x\7f131835
+Ref: powerpc-x-darwin\7f132040
+Ref: powerpc-x-elf\7f132587
+Ref: powerpc-x-linux-gnu\7f132672
+Ref: powerpc-x-netbsd\7f132767
+Ref: powerpc-x-eabisim\7f132855
+Ref: powerpc-x-eabi\7f132981
+Ref: powerpcle-x-elf\7f133057
+Ref: powerpcle-x-eabisim\7f133149
+Ref: powerpcle-x-eabi\7f133282
+Ref: s390-x-linux\7f133365
+Ref: s390x-x-linux\7f133437
+Ref: s390x-ibm-tpf\7f133524
+Ref: x-x-solaris2\7f133655
+Ref: sparc-sun-solaris2\7f137532
+Ref: sparc-sun-solaris27\7f140253
+Ref: sparc-x-linux\7f142717
+Ref: sparc64-x-solaris2\7f142942
+Ref: sparcv9-x-solaris2\7f143587
+Ref: x-x-vxworks\7f143672
+Ref: x86-64-x-x\7f145194
+Ref: xtensa-x-elf\7f145522
+Ref: xtensa-x-linux\7f146193
+Ref: windows\7f146534
+Ref: x-x-cygwin\7f148489
+Ref: x-x-interix\7f148759
+Ref: x-x-mingw32\7f149125
+Ref: os2\7f149351
+Ref: older\7f149542
+Ref: elf\7f151659
+Node: Old\7f151917
+Node: Configurations\7f155054
+Node: GNU Free Documentation License\7f159036
+Node: Concept Index\7f181452
 \1f
 End Tag Table
index 1fa1af5..559e5b0 100644 (file)
@@ -1,7 +1,7 @@
-This is doc/gccint.info, produced by makeinfo version 4.8 from
+This is doc/gccint.info, produced by makeinfo version 4.11 from
 ../../../../gcc-4.4.0/gcc/doc/gccint.texi.
 
- Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free
 Software Foundation, Inc.
 
@@ -253,7 +253,7 @@ that needs them.
 
  GCC will also generate calls to C library routines, such as `memcpy'
 and `memset', in some cases.  The set of routines that GCC may possibly
-use is documented in *Note Other Builtins: (gcc)Other Builtins.
+use is documented in *note Other Builtins: (gcc)Other Builtins.
 
  These routines take arguments and return values of a specific machine
 mode, not a specific C type.  *Note Machine Modes::, for an explanation
@@ -3482,7 +3482,7 @@ by mistake), and avoids spurious bootstrap comparison failures(1).
 
 `profiledbootstrap'
      Builds a compiler with profiling feedback information.  For more
-     information, see *Note Building with profile feedback:
+     information, see *note Building with profile feedback:
      (gccinstall)Building.
 
 `restrap'
@@ -5308,7 +5308,7 @@ dump anything.
 
  TODO: describe the global variables set up by the pass manager, and a
 brief description of how a new pass should use it.  I need to look at
-what info rtl passes use first....
+what info rtl passes use first...
 
 \1f
 File: gccint.info,  Node: Tree-SSA passes,  Next: RTL passes,  Prev: Pass manager,  Up: Passes
@@ -5632,8 +5632,7 @@ run after gimplification and what source files they are located in.
      branch probabilities nor it uses more than a single range per SSA
      name. This means that the current implementation cannot be used
      for branch prediction (though adapting it would not be difficult).
-     The pass is located in `tree-vrp.c' and is described by
-     `pass_vrp'.
+     The pass is located in `tree-vrp.c' and is described by `pass_vrp'.
 
    * Folding built-in functions
 
@@ -6815,7 +6814,7 @@ File: gccint.info,  Node: Declarations,  Next: Attributes,  Prev: Functions,  Up
 
 This section covers the various kinds of declarations that appear in the
 internal representation, except for declarations of functions
-(represented by `FUNCTION_DECL' nodes), which are described in *Note
+(represented by `FUNCTION_DECL' nodes), which are described in *note
 Functions::.
 
 * Menu:
@@ -6876,7 +6875,7 @@ Some macros can be used with any kind of declaration.  These include:
  The various kinds of declarations include:
 `LABEL_DECL'
      These nodes are used to represent labels in function bodies.  For
-     more information, see *Note Functions::.  These nodes only appear
+     more information, see *note Functions::.  These nodes only appear
      in block scopes.
 
 `CONST_DECL'
@@ -9699,7 +9698,7 @@ possible mode classes are:
 `MODE_CC'
      Modes representing condition code values.  These are `CCmode' plus
      any `CC_MODE' modes listed in the `MACHINE-modes.def'.  *Note Jump
-     Patterns::, also see *Note Condition Code::.
+     Patterns::, also see *note Condition Code::.
 
 `MODE_RANDOM'
      This is a catchall mode class for modes which don't fit into the
@@ -11689,7 +11688,7 @@ values that are only used in `LOG_LINKS'.
      stack slot is properly initialized by making the replacement in
      the initial copy instruction as well.  This is used on machines
      for which the calling convention allocates stack space for
-     register parameters.  See `REG_PARM_STACK_SPACE' in *Note Stack
+     register parameters.  See `REG_PARM_STACK_SPACE' in *note Stack
      Arguments::.
 
      In the case of `REG_EQUAL', the register that is set by this insn
@@ -16749,8 +16748,8 @@ substitution of the operands.
 
 `(match_operand:M N PREDICATE CONSTRAINT)'
      This expression is a placeholder for operand number N of the insn.
-     When constructing an insn, operand number N will be substituted
-     at this point.  When matching an insn, whatever appears at this
+     When constructing an insn, operand number N will be substituted at
+     this point.  When matching an insn, whatever appears at this
      position in the insn will be taken as operand number N; but it
      must satisfy PREDICATE or this instruction pattern will not match
      at all.
@@ -19632,7 +19631,7 @@ that match `const_double's or `const_int's.
  Each docstring in a constraint definition should be one or more
 complete sentences, marked up in Texinfo format.  _They are currently
 unused._ In the future they will be copied into the GCC manual, in
-*Note Machine Constraints::, replacing the hand-maintained tables
+*note Machine Constraints::, replacing the hand-maintained tables
 currently found in that section.  Also, in the future the compiler may
 use this to give more helpful diagnostics when poor choice of `asm'
 constraints causes a reload failure.
@@ -19652,7 +19651,7 @@ It is occasionally useful to test a constraint from C code rather than
 implicitly via the constraint string in a `match_operand'.  The
 generated file `tm_p.h' declares a few interfaces for working with
 machine-specific constraints.  None of these interfaces work with the
-generic constraints described in *Note Simple Constraints::.  This may
+generic constraints described in *note Simple Constraints::.  This may
 change in the future.
 
  *Warning:* `tm_p.h' may declare other functions that operate on
@@ -24155,8 +24154,8 @@ You can control the compilation driver.
      If defined, this macro is an additional prefix to try after
      `STANDARD_EXEC_PREFIX'.  `MD_EXEC_PREFIX' is not searched when the
      `-b' option is used, or the compiler is built as a cross compiler.
-     If you define `MD_EXEC_PREFIX', then be sure to add it to the
-     list of directories used to find the assembler in `configure.in'.
+     If you define `MD_EXEC_PREFIX', then be sure to add it to the list
+     of directories used to find the assembler in `configure.in'.
 
  -- Macro: STANDARD_STARTFILE_PREFIX
      Define this macro as a C string constant if you wish to override
@@ -25411,10 +25410,10 @@ This section explains how to describe what registers the target machine
 has, and how (in general) they can be used.
 
  The description of which registers a specific instruction can use is
-done with register classes; see *Note Register Classes::.  For
-information on using registers to access a stack frame, see *Note Frame
-Registers::.  For passing values in registers, see *Note Register
-Arguments::.  For returning values in registers, see *Note Scalar
+done with register classes; see *note Register Classes::.  For
+information on using registers to access a stack frame, see *note Frame
+Registers::.  For passing values in registers, see *note Register
+Arguments::.  For returning values in registers, see *note Scalar
 Return::.
 
 * Menu:
@@ -26361,7 +26360,7 @@ File: gccint.info,  Node: Old Constraints,  Next: Stack and Calling,  Prev: Regi
 =============================================
 
 Machine-specific constraints can be defined with these macros instead
-of the machine description constructs described in *Note Define
+of the machine description constructs described in *note Define
 Constraints::.  This mechanism is obsolete.  New ports should not use
 it; old ports should convert to the new mechanism.
 
@@ -27511,9 +27510,8 @@ the stack.
  -- Macro: INIT_CUMULATIVE_LIBCALL_ARGS (CUM, MODE, LIBNAME)
      Like `INIT_CUMULATIVE_ARGS' but only used for outgoing libcalls,
      it gets a `MODE' argument instead of FNTYPE, that would be `NULL'.
-     INDIRECT would always be zero, too.  If this macro is not
-     defined, `INIT_CUMULATIVE_ARGS (cum, NULL_RTX, libname, 0)' is
-     used instead.
+     INDIRECT would always be zero, too.  If this macro is not defined,
+     `INIT_CUMULATIVE_ARGS (cum, NULL_RTX, libname, 0)' is used instead.
 
  -- Macro: INIT_CUMULATIVE_INCOMING_ARGS (CUM, FNTYPE, LIBNAME)
      Like `INIT_CUMULATIVE_ARGS' but overrides it for the purposes of
@@ -29023,8 +29021,8 @@ machine-specific information by defining `CC_STATUS_MDEP'.
      reflecting.  For example, on the 68000, insns that store in address
      registers do not set the condition code, which means that usually
      `NOTICE_UPDATE_CC' can leave `cc_status' unaltered for such insns.
-     But suppose that the previous insn set the condition code based
-     on location `a4@(102)' and the current insn stores a new value in
+     But suppose that the previous insn set the condition code based on
+     location `a4@(102)' and the current insn stores a new value in
      `a4'.  Although the condition code is not changed by this, it will
      no longer be true that it reflects the contents of `a4@(102)'.
      Therefore, `NOTICE_UPDATE_CC' must alter `cc_status' in this case
@@ -29982,8 +29980,8 @@ target does not provide them.
           machine_mode MODE, rtx X, unsigned HOST_WIDE_INT ALIGN)
      Return the section into which a constant X, of mode MODE, should
      be placed.  You can assume that X is some kind of constant in RTL.
-     The argument MODE is redundant except in the case of a
-     `const_int' rtx.  ALIGN is the constant alignment in bits.
+     The argument MODE is redundant except in the case of a `const_int'
+     rtx.  ALIGN is the constant alignment in bits.
 
      The default version of this function takes care of putting symbolic
      constants in `flag_pic' mode in `data_section' and everything else
@@ -30389,8 +30387,8 @@ File: gccint.info,  Node: Data Output,  Next: Uninitialized Data,  Prev: File Fr
      The argument FILE is the standard I/O stream to output the
      assembler code on.  X is the RTL expression for the constant to
      output, and MODE is the machine mode (in case X is a `const_int').
-     ALIGN is the required alignment for the value X; you should
-     output an assembler directive to force this much alignment.
+     ALIGN is the required alignment for the value X; you should output
+     an assembler directive to force this much alignment.
 
      The argument LABELNO is a number to use in an internal label for
      the address of this pool entry.  The definition of this macro is
@@ -32686,11 +32684,11 @@ Here are several miscellaneous parameters.
  -- Macro: HAS_LONG_COND_BRANCH
      Define this boolean macro to indicate whether or not your
      architecture has conditional branches that can span all of memory.
-     It is used in conjunction with an optimization that partitions
-     hot and cold basic blocks into separate sections of the
-     executable.  If this macro is set to false, gcc will convert any
-     conditional branches that attempt to cross between sections into
-     unconditional branches or indirect jumps.
+     It is used in conjunction with an optimization that partitions hot
+     and cold basic blocks into separate sections of the executable.
+     If this macro is set to false, gcc will convert any conditional
+     branches that attempt to cross between sections into unconditional
+     branches or indirect jumps.
 
  -- Macro: HAS_LONG_UNCOND_BRANCH
      Define this boolean macro to indicate whether or not your
@@ -40635,7 +40633,7 @@ Concept Index
 * block statement iterators:             Basic Blocks.       (line   68)
 * BLOCK_FOR_INSN, bb_for_stmt:           Maintaining the CFG.
                                                              (line   40)
-* BLOCK_REG_PADDING:                     Register Arguments. (line  229)
+* BLOCK_REG_PADDING:                     Register Arguments. (line  228)
 * blockage instruction pattern:          Standard Names.     (line 1408)
 * Blocks:                                Blocks.             (line    6)
 * bool <1>:                              Exception Region Output.
@@ -41363,11 +41361,11 @@ Concept Index
                                                              (line  180)
 * function-call insns:                   Calls.              (line    6)
 * FUNCTION_ARG:                          Register Arguments. (line   11)
-* FUNCTION_ARG_ADVANCE:                  Register Arguments. (line  186)
-* FUNCTION_ARG_BOUNDARY:                 Register Arguments. (line  239)
-* FUNCTION_ARG_OFFSET:                   Register Arguments. (line  197)
-* FUNCTION_ARG_PADDING:                  Register Arguments. (line  204)
-* FUNCTION_ARG_REGNO_P:                  Register Arguments. (line  244)
+* FUNCTION_ARG_ADVANCE:                  Register Arguments. (line  185)
+* FUNCTION_ARG_BOUNDARY:                 Register Arguments. (line  238)
+* FUNCTION_ARG_OFFSET:                   Register Arguments. (line  196)
+* FUNCTION_ARG_PADDING:                  Register Arguments. (line  203)
+* FUNCTION_ARG_REGNO_P:                  Register Arguments. (line  243)
 * FUNCTION_BOUNDARY:                     Storage Layout.     (line  170)
 * FUNCTION_DECL:                         Functions.          (line    6)
 * FUNCTION_INCOMING_ARG:                 Register Arguments. (line   68)
@@ -41939,7 +41937,7 @@ Concept Index
 * INDIRECT_REF:                          Expression trees.   (line    6)
 * INIT_ARRAY_SECTION_ASM_OP:             Sections.           (line   98)
 * INIT_CUMULATIVE_ARGS:                  Register Arguments. (line  149)
-* INIT_CUMULATIVE_INCOMING_ARGS:         Register Arguments. (line  177)
+* INIT_CUMULATIVE_INCOMING_ARGS:         Register Arguments. (line  176)
 * INIT_CUMULATIVE_LIBCALL_ARGS:          Register Arguments. (line  170)
 * INIT_ENVIRONMENT:                      Driver.             (line  369)
 * INIT_EXPANDERS:                        Per-Function Data.  (line   39)
@@ -42463,7 +42461,7 @@ Concept Index
 * OVL_CURRENT:                           Functions.          (line    6)
 * OVL_NEXT:                              Functions.          (line    6)
 * p in constraint:                       Simple Constraints. (line  154)
-* PAD_VARARGS_DOWN:                      Register Arguments. (line  221)
+* PAD_VARARGS_DOWN:                      Register Arguments. (line  220)
 * parallel:                              Side Effects.       (line  204)
 * param_is:                              GTY Options.        (line  114)
 * parameters, c++ abi:                   C++ ABI.            (line    6)
@@ -43195,7 +43193,7 @@ Concept Index
 * TARGET_BINDS_LOCAL_P:                  Sections.           (line  284)
 * TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED: Misc.          (line  816)
 * TARGET_BRANCH_TARGET_REGISTER_CLASS:   Misc.               (line  808)
-* TARGET_BUILD_BUILTIN_VA_LIST:          Register Arguments. (line  264)
+* TARGET_BUILD_BUILTIN_VA_LIST:          Register Arguments. (line  263)
 * TARGET_BUILTIN_RECIPROCAL:             Addressing Modes.   (line  240)
 * TARGET_BUILTIN_SETJMP_FRAME_VALUE:     Frame Layout.       (line  109)
 * TARGET_C99_FUNCTIONS:                  Library Calls.      (line   77)
@@ -43203,7 +43201,7 @@ Concept Index
 * TARGET_CAN_INLINE_P:                   Target Attributes.  (line  126)
 * TARGET_CANNOT_FORCE_CONST_MEM:         Addressing Modes.   (line  221)
 * TARGET_CANNOT_MODIFY_JUMPS_P:          Misc.               (line  795)
-* TARGET_CANONICAL_VA_LIST_TYPE:         Register Arguments. (line  273)
+* TARGET_CANONICAL_VA_LIST_TYPE:         Register Arguments. (line  272)
 * TARGET_COMMUTATIVE_P:                  Misc.               (line  713)
 * TARGET_COMP_TYPE_ATTRIBUTES:           Target Attributes.  (line   19)
 * TARGET_CPU_CPP_BUILTINS:               Run-time Target.    (line    9)
@@ -43259,14 +43257,14 @@ Concept Index
 * TARGET_FIXED_POINT_SUPPORTED_P:        Storage Layout.     (line  509)
 * target_flags:                          Run-time Target.    (line   52)
 * TARGET_FLT_EVAL_METHOD:                Type Layout.        (line  141)
-* TARGET_FN_ABI_VA_LIST:                 Register Arguments. (line  268)
+* TARGET_FN_ABI_VA_LIST:                 Register Arguments. (line  267)
 * TARGET_FOLD_BUILTIN:                   Misc.               (line  685)
 * TARGET_FORMAT_TYPES:                   Misc.               (line  868)
 * TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P: Target Attributes.  (line   86)
 * TARGET_FUNCTION_OK_FOR_SIBCALL:        Tail Calls.         (line    8)
 * TARGET_FUNCTION_VALUE:                 Scalar Return.      (line   11)
 * TARGET_GET_DRAP_RTX:                   Misc.               (line  948)
-* TARGET_GIMPLIFY_VA_ARG_EXPR:           Register Arguments. (line  279)
+* TARGET_GIMPLIFY_VA_ARG_EXPR:           Register Arguments. (line  278)
 * TARGET_HANDLE_C_OPTION:                Run-time Target.    (line   78)
 * TARGET_HANDLE_OPTION:                  Run-time Target.    (line   61)
 * TARGET_HARD_REGNO_SCRATCH_OK:          Values in Registers.
@@ -43332,7 +43330,7 @@ Concept Index
 * TARGET_RETURN_IN_MEMORY:               Aggregate Return.   (line   16)
 * TARGET_RETURN_IN_MSB:                  Scalar Return.      (line  100)
 * TARGET_RTX_COSTS:                      Costs.              (line  210)
-* TARGET_SCALAR_MODE_SUPPORTED_P:        Register Arguments. (line  291)
+* TARGET_SCALAR_MODE_SUPPORTED_P:        Register Arguments. (line  290)
 * TARGET_SCHED_ADJUST_COST:              Scheduling.         (line   37)
 * TARGET_SCHED_ADJUST_PRIORITY:          Scheduling.         (line   52)
 * TARGET_SCHED_CLEAR_SCHED_CONTEXT:      Scheduling.         (line  261)
@@ -43374,7 +43372,7 @@ Concept Index
 * TARGET_SET_DEFAULT_TYPE_ATTRIBUTES:    Target Attributes.  (line   26)
 * TARGET_SETUP_INCOMING_VARARGS:         Varargs.            (line  101)
 * TARGET_SHIFT_TRUNCATION_MASK:          Misc.               (line  154)
-* TARGET_SPLIT_COMPLEX_ARG:              Register Arguments. (line  252)
+* TARGET_SPLIT_COMPLEX_ARG:              Register Arguments. (line  251)
 * TARGET_STACK_PROTECT_FAIL:             Stack Smashing Protection.
                                                              (line   17)
 * TARGET_STACK_PROTECT_GUARD:            Stack Smashing Protection.
@@ -43393,8 +43391,8 @@ Concept Index
 * TARGET_USES_WEAK_UNWIND_INFO:          Exception Handling. (line  129)
 * TARGET_VALID_DLLIMPORT_ATTRIBUTE_P:    Target Attributes.  (line   59)
 * TARGET_VALID_OPTION_ATTRIBUTE_P:       Target Attributes.  (line   93)
-* TARGET_VALID_POINTER_MODE:             Register Arguments. (line  285)
-* TARGET_VECTOR_MODE_SUPPORTED_P:        Register Arguments. (line  303)
+* TARGET_VALID_POINTER_MODE:             Register Arguments. (line  284)
+* TARGET_VECTOR_MODE_SUPPORTED_P:        Register Arguments. (line  302)
 * TARGET_VECTOR_OPAQUE_P:                Storage Layout.     (line  472)
 * TARGET_VECTORIZE_BUILTIN_CONVERSION:   Addressing Modes.   (line  300)
 * TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD: Addressing Modes.  (line  249)
@@ -43835,265 +43833,265 @@ Node: Passes\7f239594
 Node: Parsing pass\7f240336
 Node: Gimplification pass\7f243864
 Node: Pass manager\7f245691
-Node: Tree-SSA passes\7f247174
-Node: RTL passes\7f269005
-Node: Trees\7f281590
-Node: Deficiencies\7f284316
-Node: Tree overview\7f284553
-Node: Macros and Functions\7f288676
-Node: Identifiers\7f288822
-Node: Containers\7f290347
-Node: Types\7f291502
-Node: Scopes\7f307205
-Node: Namespaces\7f307967
-Node: Classes\7f310779
-Node: Declarations\7f315536
-Node: Working with declarations\7f316031
-Node: Internal structure\7f322488
-Node: Current structure hierarchy\7f322870
-Node: Adding new DECL node types\7f324962
-Node: Functions\7f329033
-Node: Function Basics\7f331436
-Node: Function Bodies\7f339166
-Node: Attributes\7f350408
-Node: Expression trees\7f351649
-Node: RTL\7f394258
-Node: RTL Objects\7f396357
-Node: RTL Classes\7f400231
-Node: Accessors\7f405183
-Node: Special Accessors\7f407577
-Node: Flags\7f412795
-Node: Machine Modes\7f428663
-Node: Constants\7f440979
-Node: Regs and Memory\7f447008
-Node: Arithmetic\7f464909
-Node: Comparisons\7f474429
-Node: Bit-Fields\7f478721
-Node: Vector Operations\7f480273
-Node: Conversions\7f481899
-Node: RTL Declarations\7f486397
-Node: Side Effects\7f487218
-Node: Incdec\7f503541
-Node: Assembler\7f506876
-Node: Insns\7f508408
-Node: Calls\7f532297
-Node: Sharing\7f534890
-Node: Reading RTL\7f538000
-Node: GENERIC\7f538990
-Node: Statements\7f540627
-Node: Blocks\7f541072
-Node: Statement Sequences\7f542325
-Node: Empty Statements\7f542658
-Node: Jumps\7f543232
-Node: Cleanups\7f543885
-Node: GIMPLE\7f545638
-Node: Tuple representation\7f549259
-Node: GIMPLE instruction set\7f557914
-Node: GIMPLE Exception Handling\7f559582
-Node: Temporaries\7f561497
-Ref: Temporaries-Footnote-1\7f562816
-Node: Operands\7f562879
-Node: Compound Expressions\7f563653
-Node: Compound Lvalues\7f563887
-Node: Conditional Expressions\7f564653
-Node: Logical Operators\7f565323
-Node: Manipulating GIMPLE statements\7f571414
-Node: Tuple specific accessors\7f577342
-Node: `GIMPLE_ASM'\7f578175
-Node: `GIMPLE_ASSIGN'\7f580780
-Node: `GIMPLE_BIND'\7f584726
-Node: `GIMPLE_CALL'\7f586533
-Node: `GIMPLE_CATCH'\7f590792
-Node: `GIMPLE_CHANGE_DYNAMIC_TYPE'\7f591950
-Node: `GIMPLE_COND'\7f593283
-Node: `GIMPLE_EH_FILTER'\7f596089
-Node: `GIMPLE_LABEL'\7f597575
-Node: `GIMPLE_NOP'\7f598550
-Node: `GIMPLE_OMP_ATOMIC_LOAD'\7f598919
-Node: `GIMPLE_OMP_ATOMIC_STORE'\7f599829
-Node: `GIMPLE_OMP_CONTINUE'\7f600468
-Node: `GIMPLE_OMP_CRITICAL'\7f601818
-Node: `GIMPLE_OMP_FOR'\7f602754
-Node: `GIMPLE_OMP_MASTER'\7f606264
-Node: `GIMPLE_OMP_ORDERED'\7f606647
-Node: `GIMPLE_OMP_PARALLEL'\7f607047
-Node: `GIMPLE_OMP_RETURN'\7f609816
-Node: `GIMPLE_OMP_SECTION'\7f610466
-Node: `GIMPLE_OMP_SECTIONS'\7f611132
-Node: `GIMPLE_OMP_SINGLE'\7f612736
-Node: `GIMPLE_PHI'\7f613672
-Node: `GIMPLE_RESX'\7f615085
-Node: `GIMPLE_RETURN'\7f615804
-Node: `GIMPLE_SWITCH'\7f616372
-Node: `GIMPLE_TRY'\7f618502
-Node: `GIMPLE_WITH_CLEANUP_EXPR'\7f620292
-Node: GIMPLE sequences\7f621175
-Node: Sequence iterators\7f624381
-Node: Adding a new GIMPLE statement code\7f632836
-Node: Statement and operand traversals\7f634116
-Node: Tree SSA\7f636726
-Node: Annotations\7f638455
-Node: SSA Operands\7f638981
-Node: SSA\7f653512
-Node: Alias analysis\7f665803
-Node: Loop Analysis and Representation\7f673259
-Node: Loop representation\7f674440
-Node: Loop querying\7f681360
-Node: Loop manipulation\7f684193
-Node: LCSSA\7f686561
-Node: Scalar evolutions\7f688633
-Node: loop-iv\7f691877
-Node: Number of iterations\7f693803
-Node: Dependency analysis\7f696612
-Node: Lambda\7f702980
-Node: Omega\7f704650
-Node: Control Flow\7f706215
-Node: Basic Blocks\7f707215
-Node: Edges\7f711783
-Node: Profile information\7f720345
-Node: Maintaining the CFG\7f725031
-Node: Liveness information\7f731913
-Node: Machine Desc\7f734040
-Node: Overview\7f736508
-Node: Patterns\7f738549
-Node: Example\7f741987
-Node: RTL Template\7f743422
-Node: Output Template\7f754077
-Node: Output Statement\7f758043
-Node: Predicates\7f762005
-Node: Machine-Independent Predicates\7f764923
-Node: Defining Predicates\7f769555
-Node: Constraints\7f775520
-Node: Simple Constraints\7f776768
-Node: Multi-Alternative\7f788974
-Node: Class Preferences\7f791815
-Node: Modifiers\7f792707
-Node: Machine Constraints\7f796839
-Node: Disable Insn Alternatives\7f829562
-Node: Define Constraints\7f832455
-Node: C Constraint Interface\7f839235
-Node: Standard Names\7f842876
-Ref: shift patterns\7f861804
-Ref: prologue instruction pattern\7f902822
-Ref: epilogue instruction pattern\7f903315
-Node: Pattern Ordering\7f912858
-Node: Dependent Patterns\7f914094
-Node: Jump Patterns\7f916908
-Node: Looping Patterns\7f922604
-Node: Insn Canonicalizations\7f927332
-Node: Expander Definitions\7f931716
-Node: Insn Splitting\7f939834
-Node: Including Patterns\7f949437
-Node: Peephole Definitions\7f951217
-Node: define_peephole\7f952470
-Node: define_peephole2\7f958801
-Node: Insn Attributes\7f961868
-Node: Defining Attributes\7f962974
-Node: Expressions\7f965494
-Node: Tagging Insns\7f972096
-Node: Attr Example\7f976449
-Node: Insn Lengths\7f978823
-Node: Constant Attributes\7f981882
-Node: Delay Slots\7f983051
-Node: Processor pipeline description\7f986275
-Ref: Processor pipeline description-Footnote-1\7f1003641
-Node: Conditional Execution\7f1003963
-Node: Constant Definitions\7f1006816
-Node: Iterators\7f1008411
-Node: Mode Iterators\7f1008858
-Node: Defining Mode Iterators\7f1009836
-Node: Substitutions\7f1011330
-Node: Examples\7f1013571
-Node: Code Iterators\7f1015019
-Node: Target Macros\7f1017276
-Node: Target Structure\7f1020299
-Node: Driver\7f1021568
-Node: Run-time Target\7f1045249
-Node: Per-Function Data\7f1052373
-Node: Storage Layout\7f1055136
-Node: Type Layout\7f1080252
-Node: Registers\7f1093209
-Node: Register Basics\7f1094183
-Node: Allocation Order\7f1099750
-Node: Values in Registers\7f1101771
-Node: Leaf Functions\7f1109260
-Node: Stack Registers\7f1112118
-Node: Register Classes\7f1113234
-Node: Old Constraints\7f1139946
-Node: Stack and Calling\7f1147097
-Node: Frame Layout\7f1147631
-Node: Exception Handling\7f1158477
-Node: Stack Checking\7f1164855
-Node: Frame Registers\7f1169242
-Node: Elimination\7f1175848
-Node: Stack Arguments\7f1179879
-Node: Register Arguments\7f1186682
-Node: Scalar Return\7f1202135
-Node: Aggregate Return\7f1207681
-Node: Caller Saves\7f1211340
-Node: Function Entry\7f1212518
-Node: Profiling\7f1225133
-Node: Tail Calls\7f1226832
-Node: Stack Smashing Protection\7f1228199
-Node: Varargs\7f1229311
-Node: Trampolines\7f1237271
-Node: Library Calls\7f1243937
-Node: Addressing Modes\7f1248787
-Node: Anchored Addresses\7f1264705
-Node: Condition Code\7f1267366
-Node: Costs\7f1275655
-Node: Scheduling\7f1288754
-Node: Sections\7f1307315
-Node: PIC\7f1321965
-Node: Assembler Format\7f1323955
-Node: File Framework\7f1325093
-Ref: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS\7f1329999
-Node: Data Output\7f1333265
-Node: Uninitialized Data\7f1341024
-Node: Label Output\7f1346095
-Node: Initialization\7f1367762
-Node: Macros for Initialization\7f1373724
-Node: Instruction Output\7f1380176
-Node: Dispatch Tables\7f1389170
-Node: Exception Region Output\7f1392965
-Node: Alignment Output\7f1398725
-Node: Debugging Info\7f1402888
-Node: All Debuggers\7f1403558
-Node: DBX Options\7f1406413
-Node: DBX Hooks\7f1411862
-Node: File Names and DBX\7f1413788
-Node: SDB and DWARF\7f1415899
-Node: VMS Debug\7f1419891
-Node: Floating Point\7f1420461
-Node: Mode Switching\7f1425284
-Node: Target Attributes\7f1429210
-Node: Emulated TLS\7f1435974
-Node: MIPS Coprocessors\7f1439364
-Node: PCH Target\7f1440933
-Node: C++ ABI\7f1442454
-Node: Misc\7f1447073
-Ref: TARGET_SHIFT_TRUNCATION_MASK\7f1454444
-Node: Host Config\7f1495389
-Node: Host Common\7f1496457
-Node: Filesystem\7f1498836
-Node: Host Misc\7f1502951
-Node: Fragments\7f1505090
-Node: Target Fragment\7f1506285
-Node: Host Fragment\7f1512175
-Node: Collect2\7f1512415
-Node: Header Dirs\7f1514958
-Node: Type Information\7f1516381
-Node: GTY Options\7f1518672
-Node: GGC Roots\7f1529352
-Node: Files\7f1530072
-Node: Invoking the garbage collector\7f1532536
-Node: Plugins\7f1533589
-Node: Funding\7f1538237
-Node: GNU Project\7f1540724
-Node: Copying\7f1541373
-Node: GNU Free Documentation License\7f1578904
-Node: Contributors\7f1601313
-Node: Option Index\7f1637643
-Node: Concept Index\7f1638228
+Node: Tree-SSA passes\7f247173
+Node: RTL passes\7f268999
+Node: Trees\7f281584
+Node: Deficiencies\7f284310
+Node: Tree overview\7f284547
+Node: Macros and Functions\7f288670
+Node: Identifiers\7f288816
+Node: Containers\7f290341
+Node: Types\7f291496
+Node: Scopes\7f307199
+Node: Namespaces\7f307961
+Node: Classes\7f310773
+Node: Declarations\7f315530
+Node: Working with declarations\7f316025
+Node: Internal structure\7f322482
+Node: Current structure hierarchy\7f322864
+Node: Adding new DECL node types\7f324956
+Node: Functions\7f329027
+Node: Function Basics\7f331430
+Node: Function Bodies\7f339160
+Node: Attributes\7f350402
+Node: Expression trees\7f351643
+Node: RTL\7f394252
+Node: RTL Objects\7f396351
+Node: RTL Classes\7f400225
+Node: Accessors\7f405177
+Node: Special Accessors\7f407571
+Node: Flags\7f412789
+Node: Machine Modes\7f428657
+Node: Constants\7f440973
+Node: Regs and Memory\7f447002
+Node: Arithmetic\7f464903
+Node: Comparisons\7f474423
+Node: Bit-Fields\7f478715
+Node: Vector Operations\7f480267
+Node: Conversions\7f481893
+Node: RTL Declarations\7f486391
+Node: Side Effects\7f487212
+Node: Incdec\7f503535
+Node: Assembler\7f506870
+Node: Insns\7f508402
+Node: Calls\7f532291
+Node: Sharing\7f534884
+Node: Reading RTL\7f537994
+Node: GENERIC\7f538984
+Node: Statements\7f540621
+Node: Blocks\7f541066
+Node: Statement Sequences\7f542319
+Node: Empty Statements\7f542652
+Node: Jumps\7f543226
+Node: Cleanups\7f543879
+Node: GIMPLE\7f545632
+Node: Tuple representation\7f549253
+Node: GIMPLE instruction set\7f557908
+Node: GIMPLE Exception Handling\7f559576
+Node: Temporaries\7f561491
+Ref: Temporaries-Footnote-1\7f562810
+Node: Operands\7f562873
+Node: Compound Expressions\7f563647
+Node: Compound Lvalues\7f563881
+Node: Conditional Expressions\7f564647
+Node: Logical Operators\7f565317
+Node: Manipulating GIMPLE statements\7f571408
+Node: Tuple specific accessors\7f577336
+Node: `GIMPLE_ASM'\7f578169
+Node: `GIMPLE_ASSIGN'\7f580774
+Node: `GIMPLE_BIND'\7f584720
+Node: `GIMPLE_CALL'\7f586527
+Node: `GIMPLE_CATCH'\7f590786
+Node: `GIMPLE_CHANGE_DYNAMIC_TYPE'\7f591944
+Node: `GIMPLE_COND'\7f593277
+Node: `GIMPLE_EH_FILTER'\7f596083
+Node: `GIMPLE_LABEL'\7f597569
+Node: `GIMPLE_NOP'\7f598544
+Node: `GIMPLE_OMP_ATOMIC_LOAD'\7f598913
+Node: `GIMPLE_OMP_ATOMIC_STORE'\7f599823
+Node: `GIMPLE_OMP_CONTINUE'\7f600462
+Node: `GIMPLE_OMP_CRITICAL'\7f601812
+Node: `GIMPLE_OMP_FOR'\7f602748
+Node: `GIMPLE_OMP_MASTER'\7f606258
+Node: `GIMPLE_OMP_ORDERED'\7f606641
+Node: `GIMPLE_OMP_PARALLEL'\7f607041
+Node: `GIMPLE_OMP_RETURN'\7f609810
+Node: `GIMPLE_OMP_SECTION'\7f610460
+Node: `GIMPLE_OMP_SECTIONS'\7f611126
+Node: `GIMPLE_OMP_SINGLE'\7f612730
+Node: `GIMPLE_PHI'\7f613666
+Node: `GIMPLE_RESX'\7f615079
+Node: `GIMPLE_RETURN'\7f615798
+Node: `GIMPLE_SWITCH'\7f616366
+Node: `GIMPLE_TRY'\7f618496
+Node: `GIMPLE_WITH_CLEANUP_EXPR'\7f620286
+Node: GIMPLE sequences\7f621169
+Node: Sequence iterators\7f624375
+Node: Adding a new GIMPLE statement code\7f632830
+Node: Statement and operand traversals\7f634110
+Node: Tree SSA\7f636720
+Node: Annotations\7f638449
+Node: SSA Operands\7f638975
+Node: SSA\7f653506
+Node: Alias analysis\7f665797
+Node: Loop Analysis and Representation\7f673253
+Node: Loop representation\7f674434
+Node: Loop querying\7f681354
+Node: Loop manipulation\7f684187
+Node: LCSSA\7f686555
+Node: Scalar evolutions\7f688627
+Node: loop-iv\7f691871
+Node: Number of iterations\7f693797
+Node: Dependency analysis\7f696606
+Node: Lambda\7f702974
+Node: Omega\7f704644
+Node: Control Flow\7f706209
+Node: Basic Blocks\7f707209
+Node: Edges\7f711777
+Node: Profile information\7f720339
+Node: Maintaining the CFG\7f725025
+Node: Liveness information\7f731907
+Node: Machine Desc\7f734034
+Node: Overview\7f736502
+Node: Patterns\7f738543
+Node: Example\7f741981
+Node: RTL Template\7f743416
+Node: Output Template\7f754071
+Node: Output Statement\7f758037
+Node: Predicates\7f761999
+Node: Machine-Independent Predicates\7f764917
+Node: Defining Predicates\7f769549
+Node: Constraints\7f775514
+Node: Simple Constraints\7f776762
+Node: Multi-Alternative\7f788968
+Node: Class Preferences\7f791809
+Node: Modifiers\7f792701
+Node: Machine Constraints\7f796833
+Node: Disable Insn Alternatives\7f829556
+Node: Define Constraints\7f832449
+Node: C Constraint Interface\7f839229
+Node: Standard Names\7f842870
+Ref: shift patterns\7f861798
+Ref: prologue instruction pattern\7f902816
+Ref: epilogue instruction pattern\7f903309
+Node: Pattern Ordering\7f912852
+Node: Dependent Patterns\7f914088
+Node: Jump Patterns\7f916902
+Node: Looping Patterns\7f922598
+Node: Insn Canonicalizations\7f927326
+Node: Expander Definitions\7f931710
+Node: Insn Splitting\7f939828
+Node: Including Patterns\7f949431
+Node: Peephole Definitions\7f951211
+Node: define_peephole\7f952464
+Node: define_peephole2\7f958795
+Node: Insn Attributes\7f961862
+Node: Defining Attributes\7f962968
+Node: Expressions\7f965488
+Node: Tagging Insns\7f972090
+Node: Attr Example\7f976443
+Node: Insn Lengths\7f978817
+Node: Constant Attributes\7f981876
+Node: Delay Slots\7f983045
+Node: Processor pipeline description\7f986269
+Ref: Processor pipeline description-Footnote-1\7f1003635
+Node: Conditional Execution\7f1003957
+Node: Constant Definitions\7f1006810
+Node: Iterators\7f1008405
+Node: Mode Iterators\7f1008852
+Node: Defining Mode Iterators\7f1009830
+Node: Substitutions\7f1011324
+Node: Examples\7f1013565
+Node: Code Iterators\7f1015013
+Node: Target Macros\7f1017270
+Node: Target Structure\7f1020293
+Node: Driver\7f1021562
+Node: Run-time Target\7f1045243
+Node: Per-Function Data\7f1052367
+Node: Storage Layout\7f1055130
+Node: Type Layout\7f1080246
+Node: Registers\7f1093203
+Node: Register Basics\7f1094177
+Node: Allocation Order\7f1099744
+Node: Values in Registers\7f1101765
+Node: Leaf Functions\7f1109254
+Node: Stack Registers\7f1112112
+Node: Register Classes\7f1113228
+Node: Old Constraints\7f1139940
+Node: Stack and Calling\7f1147091
+Node: Frame Layout\7f1147625
+Node: Exception Handling\7f1158471
+Node: Stack Checking\7f1164849
+Node: Frame Registers\7f1169236
+Node: Elimination\7f1175842
+Node: Stack Arguments\7f1179873
+Node: Register Arguments\7f1186676
+Node: Scalar Return\7f1202124
+Node: Aggregate Return\7f1207670
+Node: Caller Saves\7f1211329
+Node: Function Entry\7f1212507
+Node: Profiling\7f1225122
+Node: Tail Calls\7f1226821
+Node: Stack Smashing Protection\7f1228188
+Node: Varargs\7f1229300
+Node: Trampolines\7f1237260
+Node: Library Calls\7f1243926
+Node: Addressing Modes\7f1248776
+Node: Anchored Addresses\7f1264694
+Node: Condition Code\7f1267355
+Node: Costs\7f1275644
+Node: Scheduling\7f1288743
+Node: Sections\7f1307304
+Node: PIC\7f1321954
+Node: Assembler Format\7f1323944
+Node: File Framework\7f1325082
+Ref: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS\7f1329988
+Node: Data Output\7f1333254
+Node: Uninitialized Data\7f1341013
+Node: Label Output\7f1346084
+Node: Initialization\7f1367751
+Node: Macros for Initialization\7f1373713
+Node: Instruction Output\7f1380165
+Node: Dispatch Tables\7f1389159
+Node: Exception Region Output\7f1392954
+Node: Alignment Output\7f1398714
+Node: Debugging Info\7f1402877
+Node: All Debuggers\7f1403547
+Node: DBX Options\7f1406402
+Node: DBX Hooks\7f1411851
+Node: File Names and DBX\7f1413777
+Node: SDB and DWARF\7f1415888
+Node: VMS Debug\7f1419880
+Node: Floating Point\7f1420450
+Node: Mode Switching\7f1425273
+Node: Target Attributes\7f1429199
+Node: Emulated TLS\7f1435963
+Node: MIPS Coprocessors\7f1439353
+Node: PCH Target\7f1440922
+Node: C++ ABI\7f1442443
+Node: Misc\7f1447062
+Ref: TARGET_SHIFT_TRUNCATION_MASK\7f1454432
+Node: Host Config\7f1495377
+Node: Host Common\7f1496445
+Node: Filesystem\7f1498824
+Node: Host Misc\7f1502939
+Node: Fragments\7f1505078
+Node: Target Fragment\7f1506273
+Node: Host Fragment\7f1512163
+Node: Collect2\7f1512403
+Node: Header Dirs\7f1514946
+Node: Type Information\7f1516369
+Node: GTY Options\7f1518660
+Node: GGC Roots\7f1529340
+Node: Files\7f1530060
+Node: Invoking the garbage collector\7f1532524
+Node: Plugins\7f1533577
+Node: Funding\7f1538225
+Node: GNU Project\7f1540712
+Node: Copying\7f1541361
+Node: GNU Free Documentation License\7f1578892
+Node: Contributors\7f1601301
+Node: Option Index\7f1637631
+Node: Concept Index\7f1638216
 \1f
 End Tag Table
index f4eb76f..6067bba 100644 (file)
@@ -1,4 +1,4 @@
-This is gdb.info, produced by makeinfo version 4.8 from
+This is gdb.info, produced by makeinfo version 4.11 from
 ../../../../../gdb-6.6/gdb/doc/gdb.texinfo.
 
 INFO-DIR-SECTION Software development
@@ -110,11 +110,11 @@ these) to help you catch bugs in the act:
      correcting the effects of one bug and go on to learn about another.
 
    You can use GDB to debug programs written in C and C++.  For more
-information, see *Note Supported languages: Supported languages.  For
-more information, see *Note C and C++: C.
+information, see *note Supported languages: Supported languages.  For
+more information, see *note C and C++: C.
 
    Support for Modula-2 is partial.  For information on Modula-2, see
-*Note Modula-2: Modula-2.
+*note Modula-2: Modula-2.
 
    Debugging Pascal programs which use sets, subranges, file variables,
 or nested functions does not currently work.  GDB does not support
@@ -1138,7 +1138,7 @@ to the `help' command.
 previous command.  Certain commands (for example, `run') will not
 repeat this way; these are commands whose unintentional repetition
 might cause trouble and which you are unlikely to want to repeat.
-User-defined commands can disable this feature; see *Note dont-repeat:
+User-defined commands can disable this feature; see *note dont-repeat:
 Define.
 
    The `list' and `x' commands, when you repeat them with <RET>,
@@ -1251,9 +1251,9 @@ In general, GDB can tell that a quote is needed (and inserts it) if you
 have not yet started typing the argument list when you ask for
 completion on an overloaded symbol.
 
-   For more information about overloaded functions, see *Note C++
+   For more information about overloaded functions, see *note C++
 expressions: C plus plus expressions.  You can use the command `set
-overload-resolution off' to disable overload resolution; see *Note GDB
+overload-resolution off' to disable overload resolution; see *note GDB
 features for C++: Debugging C plus plus.
 
 \1f
@@ -1584,11 +1584,11 @@ breakpoints.
      `start' or `run'.
 
      It is sometimes necessary to debug the program during elaboration.
-     In these cases, using the `start' command would stop the
-     execution of your program too late, as the program would have
-     already completed the elaboration phase.  Under these
-     circumstances, insert breakpoints in your elaboration code before
-     running your program.
+     In these cases, using the `start' command would stop the execution
+     of your program too late, as the program would have already
+     completed the elaboration phase.  Under these circumstances,
+     insert breakpoints in your elaboration code before running your
+     program.
 
 \1f
 File: gdb.info,  Node: Arguments,  Next: Environment,  Prev: Starting,  Up: Running
@@ -2308,7 +2308,7 @@ exception or the loading of a library.  As with watchpoints, you use a
 different command to set a catchpoint (*note Setting catchpoints: Set
 Catchpoints.), but aside from that, you can manage a catchpoint like any
 other breakpoint.  (To stop when your program receives a signal, use the
-`handle' command; see *Note Signals: Signals.)
+`handle' command; see *note Signals: Signals.)
 
    GDB assigns a number to each breakpoint, watchpoint, or catchpoint
 when you create it; these numbers are successive integers starting with
@@ -2344,7 +2344,7 @@ File: gdb.info,  Node: Set Breaks,  Next: Set Watchpoints,  Up: Breakpoints
 
 Breakpoints are set with the `break' command (abbreviated `b').  The
 debugger convenience variable `$bpnum' records the number of the
-breakpoint you've set most recently; see *Note Convenience variables:
+breakpoint you've set most recently; see *note Convenience variables:
 Convenience Vars, for a discussion of what you can do with convenience
 variables.
 
@@ -2434,7 +2434,7 @@ variables.
      unused hardware breakpoints before setting new ones (*note
      Disabling: Disabling.).  *Note Break conditions: Conditions.  For
      remote targets, you can restrict the number of hardware
-     breakpoints GDB will use, see *Note set remote
+     breakpoints GDB will use, see *note set remote
      hardware-breakpoint-limit::.
 
 `thbreak ARGS'
@@ -2445,7 +2445,7 @@ variables.
      program stops there.  Also, like the `hbreak' command, the
      breakpoint requires hardware support and some target hardware may
      not have this support.  *Note Disabling breakpoints: Disabling.
-     See also *Note Break conditions: Conditions.
+     See also *note Break conditions: Conditions.
 
 `rbreak REGEX'
      Set breakpoints on all functions matching the regular expression
@@ -2658,7 +2658,7 @@ use the hardware mechanism of watching expressiion values.)
      Show the current mode of using hardware watchpoints.
 
    For remote targets, you can restrict the number of hardware
-watchpoints GDB will use, see *Note set remote
+watchpoints GDB will use, see *note set remote
 hardware-breakpoint-limit::.
 
    When you issue the `watch' command, GDB reports
@@ -2943,7 +2943,7 @@ breakpoints: Set Breaks.), breakpoints that you set are initially
 enabled; subsequently, they become disabled or enabled only when you
 use one of the commands above.  (The command `until' can set and delete
 a breakpoint of its own, but it does not change the state of your other
-breakpoints; see *Note Continuing and stepping: Continuing and
+breakpoints; see *note Continuing and stepping: Continuing and
 Stepping.)
 
 \1f
@@ -4054,7 +4054,7 @@ execution in that frame has stopped.  You can print other portions of
 source files by explicit command.
 
    If you use GDB through its GNU Emacs interface, you may prefer to
-use Emacs facilities to view source; see *Note Using GDB under GNU
+use Emacs facilities to view source; see *note Using GDB under GNU
 Emacs: Emacs.
 
 * Menu:
@@ -4302,7 +4302,7 @@ specifies how to rewrite source directories stored in the program's
 debug information in case the sources were moved to a different
 directory between compilation and debugging.  A rule is made of two
 strings, the first specifying what needs to be rewritten in the path,
-and the second specifying how it should be rewritten.  In *Note set
+and the second specifying how it should be rewritten.  In *note set
 substitute-path::, we name these two parts FROM and TO respectively.
 GDB does a simple string replacement of FROM with TO at the start of
 the directory part of the source file name, and uses that result
@@ -4516,7 +4516,7 @@ written in (*note Using GDB with Different Languages: Languages.).
      EXPR is an expression (in the source language).  By default the
      value of EXPR is printed in a format appropriate to its data type;
      you can choose a different format by specifying `/F', where F is a
-     letter specifying the format; see *Note Output formats: Output
+     letter specifying the format; see *note Output formats: Output
      Formats.
 
 `print'
@@ -4567,7 +4567,7 @@ its value.  Any kind of constant, variable or operator defined by the
 programming language you are using is valid in an expression in GDB.
 This includes conditional expressions, function calls, casts, and
 string constants.  It also includes preprocessor macros, if you
-compiled your program to include this information; see *Note
+compiled your program to include this information; see *note
 Compilation::.
 
    GDB supports array constants in expressions input by the user.  The
@@ -4834,7 +4834,7 @@ expression.  For example, `p/x' reprints the last value in hex.
    ---------- Footnotes ----------
 
    (1) `b' cannot be used because these format letters are also used
-with the `x' command, where `b' stands for "byte"; see *Note Examining
+with the `x' command, where `b' stands for "byte"; see *note Examining
 memory: Memory.
 
 \1f
@@ -4914,7 +4914,7 @@ the count N must come first; `wx4' does not work.)
 you might still want to use a count N; for example, `3i' specifies that
 you want to see three machine instructions, including any operands.
 The command `disassemble' gives an alternative way of inspecting
-machine instructions; see *Note Source and machine code: Machine Code.
+machine instructions; see *note Source and machine code: Machine Code.
 
    All the defaults for the arguments to `x' are designed to make it
 easy to continue scanning memory with minimal specifications each time
@@ -5633,7 +5633,7 @@ where stacks grow downward in memory (most machines, nowadays).  This
 assumes that the innermost stack frame is selected; setting `$sp' is
 not allowed when other stack frames are selected.  To pop entire frames
 off the stack, regardless of machine architecture, use `return'; see
-*Note Returning from a function: Returning.
+*note Returning from a function: Returning.
 
 \1f
 File: gdb.info,  Node: Floating Point Hardware,  Next: Vector Unit,  Prev: Registers,  Up: Data
@@ -5693,7 +5693,7 @@ identified by an integer tag; the meanings are well-known but
 system-specific.  Depending on the configuration and operating system
 facilities, GDB may be able to show you this information.  For remote
 targets, this functionality may further depend on the remote stub's
-support of the `qXfer:auxv:read' packet, see *Note qXfer auxiliary
+support of the `qXfer:auxv:read' packet, see *note qXfer auxiliary
 vector read::.
 
 `info auxv'
@@ -5955,8 +5955,8 @@ command, described below.
      `set host-charset' command.
 
      GDB can only use certain character sets as its host character set.
-     We list the character set names GDB recognizes below, and
-     indicate which can be host character sets, but if you type `set
+     We list the character set names GDB recognizes below, and indicate
+     which can be host character sets, but if you type `set
      target-charset' followed by <TAB><TAB>, GDB will list the host
      character sets it supports.
 
@@ -6162,7 +6162,7 @@ different points in the program, a macro may have different
 definitions, or have no definition at all.  If there is a current stack
 frame, GDB uses the macros in scope at that frame's source code line.
 Otherwise, GDB uses the macros in scope at the current listing location;
-see *Note List::.
+see *note List::.
 
    At the moment, GDB does not support the `##' token-splicing
 operator, the `#' stringification operator, or variable-arity macros.
@@ -6366,7 +6366,7 @@ targets.  *Note Targets::.  In addition, your remote target must know
 how to collect trace data.  This functionality is implemented in the
 remote stub; however, none of the stubs distributed with GDB support
 tracepoints as of this writing.  The format of the remote packets used
-to implement tracepoints are described in *Note Tracepoint Packets::.
+to implement tracepoints are described in *note Tracepoint Packets::.
 
    This chapter describes the tracepoint commands and features.
 
@@ -7003,7 +7003,7 @@ program:
      be relocated and its symbols defined as if the overlay were at its
      mapped address.  You can use GNU linker scripts to specify
      different load and relocation addresses for pieces of your
-     program; see *Note Overlay Description: (ld.info)Overlay
+     program; see *note Overlay Description: (ld.info)Overlay
      Description.
 
    * The procedure for loading executable files onto your system must
@@ -7080,7 +7080,7 @@ abbreviate this as `ov' or `ovly'.  The commands are:
 `overlay auto'
      Enable "automatic" overlay debugging.  In this mode, GDB consults
      a data structure the overlay manager maintains in the inferior to
-     see which overlays are mapped.  For details, see *Note Automatic
+     see which overlays are mapped.  For details, see *note Automatic
      Overlay Debugging::.
 
 `overlay load-target'
@@ -7903,7 +7903,7 @@ GDB expression handling can interpret most C++ expressions.
      explicit function signature to call an overloaded function, as in
           p 'foo(char,int)'('x', 13)
 
-     The GDB command-completion facility can simplify this; see *Note
+     The GDB command-completion facility can simplify this; see *note
      Command completion: Completion.
 
   4. GDB understands variables declared as C++ references; you can use
@@ -8036,7 +8036,7 @@ designed specifically for use with C++.  Here is a summary:
      Enable overload resolution for C++ expression evaluation.  The
      default is on.  For overloaded functions, GDB evaluates the
      arguments and searches for a function whose signature matches the
-     argument types, using the standard C++ conversion rules (see *Note
+     argument types, using the standard C++ conversion rules (see *note
      C++ expressions: C plus plus expressions, for details).  If it
      cannot find a match, it emits a message.
 
@@ -8067,8 +8067,8 @@ File: gdb.info,  Node: Objective-C,  Next: Fortran,  Prev: C,  Up: Supported lan
 ------------------
 
 This section provides information about some commands and command
-options that are useful for debugging Objective-C code.  See also *Note
-info classes: Symbols, and *Note info selectors: Symbols, for a few
+options that are useful for debugging Objective-C code.  See also *note
+info classes: Symbols, and *note info selectors: Symbols, for a few
 more commands specific to Objective-C support.
 
 * Menu:
@@ -8195,7 +8195,7 @@ File: gdb.info,  Node: Fortran Defaults,  Next: Special Fortran commands,  Prev:
 
 Fortran symbols are usually case-insensitive, so GDB by default uses
 case-insensitive matches for Fortran symbols.  You can change that with
-the `set case-insensitive' command, see *Note Symbols::, for the
+the `set case-insensitive' command, see *note Symbols::, for the
 details.
 
 \1f
@@ -9226,7 +9226,7 @@ looks up the value of `x' in the scope of the file `foo.c'.
           Symbol repeat is a local variable at frame offset -8, length 4.
 
      This command is especially useful for determining what data to
-     collect during a "trace experiment", see *Note collect: Tracepoint
+     collect during a "trace experiment", see *note collect: Tracepoint
      Actions.
 
 `info source'
@@ -10484,7 +10484,7 @@ configuration):
      device drivers, or even basic I/O is available, although some
      simulators do provide these.  For info about any
      processor-specific simulator details, see the appropriate section
-     in *Note Embedded Processors: Embedded Processors.
+     in *note Embedded Processors: Embedded Processors.
 
 
    Some configurations may include these targets as well:
@@ -10828,7 +10828,7 @@ File: gdb.info,  Node: Remote configuration,  Next: remote stub,  Prev: Server,
 
 This section documents the configuration options available when
 debugging remote programs.  For the options related to the File I/O
-extensions of the remote protocol, see *Note system-call-allowed:
+extensions of the remote protocol, see *note system-call-allowed:
 system.
 
 `set remoteaddresssize BITS'
@@ -10906,7 +10906,7 @@ these commands to enable or disable individual packets.  Each packet
 can be set to `on' (the remote target supports this packet), `off' (the
 remote target does not support this packet), or `auto' (detect remote
 target support for this packet).  They all default to `auto'.  For more
-information about each packet, see *Note Remote Protocol::.
+information about each packet, see *note Remote Protocol::.
 
    During normal use, you should not have to use any of these commands.
 If you do, that may be a bug in your remote debugging stub, or a bug in
@@ -12238,7 +12238,7 @@ the names of the program's sections, and a `*' for each 2K of data
 downloaded.  (If you want to refresh GDB data on symbols or on the
 executable file without downloading, use the GDB commands `file' or
 `symbol-file'.  These commands, and `load' itself, are described in
-*Note Commands to specify files: Files.)
+*note Commands to specify files: Files.)
 
      (eg-C:\H8300\TEST) gdb t.x
      GDB is free software and you are welcome to distribute copies
@@ -13260,7 +13260,7 @@ File: gdb.info,  Node: Controlling GDB,  Next: Sequences,  Prev: Configurations,
 ******************
 
 You can alter the way GDB interacts with you by using the `set'
-command.  For commands controlling how GDB displays data, see *Note
+command.  For commands controlling how GDB displays data, see *note
 Print settings: Print Settings.  Other settings are described here.
 
 * Menu:
@@ -13592,7 +13592,7 @@ will not think it has crashed.
 
    Currently, the messages controlled by `set verbose' are those which
 announce that the symbol table for a source file is being read; see
-`symbol-file' in *Note Commands to specify files: Files.
+`symbol-file' in *note Commands to specify files: Files.
 
 `set verbose on'
      Enables GDB output of certain informational messages.
@@ -13879,7 +13879,7 @@ been passed.  This expands to a number in the range 0...10.
      infinite recursion and aborts the command.
 
    In addition to the above commands, user-defined commands frequently
-use control flow commands, described in *Note Command Files::.
+use control flow commands, described in *note Command Files::.
 
    When user-defined commands are executed, the commands of the
 definition are not printed.  An error in any command stops execution of
@@ -14136,7 +14136,7 @@ include:
 `mi'
      The newest GDB/MI interface (currently `mi2').  Used primarily by
      programs wishing to use GDB as a backend for a debugger GUI or an
-     IDE.  For more information, see *Note The GDB/MI Interface: GDB/MI.
+     IDE.  For more information, see *note The GDB/MI Interface: GDB/MI.
 
 `mi2'
      The current GDB/MI interface.
@@ -16242,8 +16242,8 @@ Synopsis
 
    Starts execution of the inferior from the beginning.  The inferior
 executes until either a breakpoint is encountered or the program exits.
-In the latter case the output will include an exit code, if the
-program has exited exceptionally.
+In the latter case the output will include an exit code, if the program
+has exited exceptionally.
 
 GDB Command
 ...........
@@ -16897,8 +16897,7 @@ Synopsis
 ........
 
       -var-list-children [PRINT-VALUES] NAME
-
-   Return a list of the children of the specified variable object and
+Return a list of the children of the specified variable object and
 create variable objects for them, if they do not already exist.  With a
 single argument or if PRINT-VALUES has a value for of 0 or
 `--no-values', print only the names of the variables; if PRINT-VALUES
@@ -17186,7 +17185,7 @@ Example
 .......
 
 In the following example, the numbers that precede the commands are the
-"tokens" described in *Note GDB/MI Command Syntax: GDB/MI Command
+"tokens" described in *note GDB/MI Command Syntax: GDB/MI Command
 Syntax.  Notice how GDB/MI returns the same tokens in its output.
 
      211-data-evaluate-expression A
@@ -18365,8 +18364,7 @@ Synopsis
 --------
 
      -interpreter-exec INTERPRETER COMMAND
-
-   Execute the specified COMMAND in the given INTERPRETER.
+Execute the specified COMMAND in the given INTERPRETER.
 
 GDB Command
 -----------
@@ -20713,7 +20711,7 @@ Appendix C Maintenance Commands
 In addition to commands intended for GDB users, GDB includes a number
 of commands intended for GDB developers, that are not documented
 elsewhere in this manual.  These commands are provided here for
-reference.  (For commands that turn on debugging messages, see *Note
+reference.  (For commands that turn on debugging messages, see *note
 Debugging Output::.)
 
 `maint agent EXPRESSION'
@@ -21084,10 +21082,10 @@ remote protocol.
 syntax, followed by an explanation of the packet's meaning.  We include
 spaces in some of the templates for clarity; these are not part of the
 packet's syntax.  No GDB packet uses spaces to separate its components.
-For example, a template like `foo BAR BAZ' describes a packet
-beginning with the three ASCII bytes `foo', followed by a BAR, followed
-directly by a BAZ.  GDB does not transmit a space character between the
-`foo' and the BAR, or between the BAR and the BAZ.
+For example, a template like `foo BAR BAZ' describes a packet beginning
+with the three ASCII bytes `foo', followed by a BAR, followed directly
+by a BAZ.  GDB does not transmit a space character between the `foo'
+and the BAR, or between the BAR and the BAZ.
 
    Note that all packet forms beginning with an upper- or lower-case
 letter, other than those described here, are reserved for future use.
@@ -21296,7 +21294,7 @@ letter, other than those described here, are reserved for future use.
 `q NAME PARAMS...'
 `Q NAME PARAMS...'
      General query (`q') and set (`Q').  These packets are described
-     fully in *Note General Query Packets::.
+     fully in *note General Query Packets::.
 
 `r'
      Reset the entire system.
@@ -22150,7 +22148,7 @@ Tracepoints::).
 
     `X LEN,EXPR'
           Evaluate EXPR, whose length is LEN, and collect memory as it
-          directs.  EXPR is an agent expression, as described in *Note
+          directs.  EXPR is an agent expression, as described in *note
           Agent Expressions::.  Each byte of the expression is encoded
           as a two-digit hex number in the packet; LEN is the number of
           bytes in the expression (and thus one-half the number of hex
@@ -22161,10 +22159,10 @@ Tracepoints::).
      packet, as long as the packet does not exceed the maximum packet
      length (400 bytes, for many stubs).  There may be only one `R'
      action per tracepoint, and it must precede any `M' or `X' actions.
-     Any registers referred to by `M' and `X' actions must be
-     collected by a preceding `R' action.  (The "while-stepping"
-     actions are treated as if they were attached to a separate
-     tracepoint, as far as these restrictions are concerned.)
+     Any registers referred to by `M' and `X' actions must be collected
+     by a preceding `R' action.  (The "while-stepping" actions are
+     treated as if they were attached to a separate tracepoint, as far
+     as these restrictions are concerned.)
 
      Replies:
     `OK'
@@ -23147,7 +23145,7 @@ as follows:
      };
 
    The integral datatypes conform to the definitions given in the
-appropriate section (see *Note Integral datatypes::, for details) so
+appropriate section (see *note Integral datatypes::, for details) so
 this structure is of size 64 bytes.
 
    The values of several fields have a restricted meaning and/or range
@@ -23160,7 +23158,7 @@ of values.
      No valid meaning for the target.  Transmitted unchanged.
 
 `st_mode'
-     Valid mode bits are described in *Note Constants::.  Any other
+     Valid mode bits are described in *note Constants::.  Any other
      bits have currently no meaning for the target.
 
 `st_uid'
@@ -23198,7 +23196,7 @@ defined as follows:
      };
 
    The integral datatypes conform to the definitions given in the
-appropriate section (see *Note Integral datatypes::, for details) so
+appropriate section (see *note Integral datatypes::, for details) so
 this structure is of size 8 bytes.
 
 \1f
@@ -23876,7 +23874,7 @@ expressions fit into the process.
 
    * The agent arranges to be notified when a trace point is hit.  Note
      that, on some systems, the target operating system is completely
-     responsible for collecting the data; see *Note Tracing on
+     responsible for collecting the data; see *note Tracing on
      Symmetrix::.
 
    * When execution on the target reaches a trace point, the agent
@@ -25157,9 +25155,9 @@ Index
 * -gdb-version:                          GDB/MI Miscellaneous Commands.
                                                               (line  97)
 * -inferior-tty-set:                     GDB/MI Miscellaneous Commands.
-                                                              (line 157)
+                                                              (line 156)
 * -inferior-tty-show:                    GDB/MI Miscellaneous Commands.
-                                                              (line 180)
+                                                              (line 179)
 * -interpreter-exec:                     GDB/MI Miscellaneous Commands.
                                                               (line 131)
 * -l:                                    Mode Options.        (line 124)
@@ -25222,29 +25220,29 @@ Index
 * -thread-select:                        GDB/MI Thread Commands.
                                                               (line  79)
 * -var-assign:                           GDB/MI Variable Objects.
-                                                              (line 266)
+                                                              (line 265)
 * -var-create:                           GDB/MI Variable Objects.
                                                               (line  86)
 * -var-delete:                           GDB/MI Variable Objects.
                                                               (line 127)
 * -var-evaluate-expression:              GDB/MI Variable Objects.
-                                                              (line 249)
+                                                              (line 248)
 * -var-info-expression:                  GDB/MI Variable Objects.
-                                                              (line 221)
+                                                              (line 220)
 * -var-info-num-children:                GDB/MI Variable Objects.
                                                               (line 168)
 * -var-info-type:                        GDB/MI Variable Objects.
-                                                              (line 208)
+                                                              (line 207)
 * -var-list-children:                    GDB/MI Variable Objects.
                                                               (line 180)
 * -var-set-format:                       GDB/MI Variable Objects.
                                                               (line 139)
 * -var-show-attributes:                  GDB/MI Variable Objects.
-                                                              (line 235)
+                                                              (line 234)
 * -var-show-format:                      GDB/MI Variable Objects.
                                                               (line 155)
 * -var-update:                           GDB/MI Variable Objects.
-                                                              (line 290)
+                                                              (line 289)
 * -w:                                    Mode Options.        (line  76)
 * -x:                                    File Options.        (line  55)
 * ., Modula-2 scope operator:            M2 Scope.            (line   6)
@@ -27314,384 +27312,384 @@ Index
 
 \1f
 Tag Table:
-Node: Top\7f1154
-Node: Summary\7f3580
-Node: Free Software\7f5216
-Node: Contributors\7f10784
-Node: Sample Session\7f18768
-Node: Invocation\7f25604
-Node: Invoking GDB\7f26148
-Node: File Options\7f28461
-Node: Mode Options\7f31221
-Node: Startup\7f37633
-Ref: Startup-Footnote-1\7f40088
-Node: Quitting GDB\7f40197
-Node: Shell Commands\7f41094
-Node: Logging output\7f41936
-Node: Commands\7f42782
-Node: Command Syntax\7f43420
-Node: Completion\7f45586
-Node: Help\7f49921
-Node: Running\7f55151
-Node: Compilation\7f56333
-Node: Starting\7f58972
-Node: Arguments\7f63861
-Node: Environment\7f65131
-Node: Working Directory\7f68399
-Node: Input/Output\7f69507
-Node: Attach\7f71478
-Node: Kill Process\7f73914
-Node: Threads\7f74880
-Node: Processes\7f81024
-Node: Checkpoint/Restart\7f86075
-Ref: Checkpoint/Restart-Footnote-1\7f90608
-Node: Stopping\7f90643
-Node: Breakpoints\7f91790
-Node: Set Breaks\7f95208
-Node: Set Watchpoints\7f106927
-Node: Set Catchpoints\7f114765
-Node: Delete Breaks\7f118243
-Node: Disabling\7f119960
-Node: Conditions\7f122727
-Node: Break Commands\7f127675
-Node: Breakpoint Menus\7f130560
-Node: Error in Breakpoints\7f132292
-Node: Breakpoint related warnings\7f133870
-Node: Continuing and Stepping\7f136197
-Node: Signals\7f145537
-Node: Thread Stops\7f149809
-Node: Stack\7f154414
-Node: Frames\7f155889
-Node: Backtrace\7f158641
-Ref: Backtrace-Footnote-1\7f163531
-Node: Selection\7f163719
-Node: Frame Info\7f166583
-Node: Source\7f168914
-Node: List\7f169918
-Node: Edit\7f173447
-Ref: Edit-Footnote-1\7f175178
-Node: Search\7f175413
-Node: Source Path\7f176221
-Ref: set substitute-path\7f181975
-Node: Machine Code\7f184196
-Node: Data\7f187606
-Node: Expressions\7f189987
-Node: Variables\7f191955
-Node: Arrays\7f195941
-Node: Output Formats\7f198470
-Ref: Output Formats-Footnote-1\7f200692
-Node: Memory\7f200849
-Node: Auto Display\7f205885
-Node: Print Settings\7f209657
-Node: Value History\7f221443
-Node: Convenience Vars\7f223859
-Node: Registers\7f227383
-Ref: Registers-Footnote-1\7f232058
-Node: Floating Point Hardware\7f232453
-Node: Vector Unit\7f232983
-Node: OS Information\7f233368
-Node: Memory Region Attributes\7f235366
-Node: Dump/Restore Files\7f239182
-Node: Core File Generation\7f241485
-Node: Character Sets\7f242717
-Node: Caching Remote Data\7f249549
-Node: Macros\7f250687
-Node: Tracepoints\7f257638
-Node: Set Tracepoints\7f259480
-Node: Create and Delete Tracepoints\7f260679
-Node: Enable and Disable Tracepoints\7f262323
-Node: Tracepoint Passcounts\7f263022
-Node: Tracepoint Actions\7f264446
-Node: Listing Tracepoints\7f267446
-Node: Starting and Stopping Trace Experiment\7f268567
-Node: Analyze Collected Data\7f269745
-Node: tfind\7f271050
-Node: tdump\7f275443
-Node: save-tracepoints\7f277102
-Node: Tracepoint Variables\7f277521
-Node: Overlays\7f278536
-Node: How Overlays Work\7f279256
-Ref: A code overlay\7f281816
-Node: Overlay Commands\7f285254
-Node: Automatic Overlay Debugging\7f289444
-Node: Overlay Sample Program\7f291585
-Node: Languages\7f293345
-Node: Setting\7f294508
-Node: Filenames\7f296210
-Node: Manually\7f296996
-Node: Automatically\7f298205
-Node: Show\7f299266
-Node: Checks\7f300588
-Node: Type Checking\7f301978
-Node: Range Checking\7f304711
-Node: Supported languages\7f307112
-Node: C\7f308285
-Node: C Operators\7f309516
-Node: C Constants\7f313897
-Node: C plus plus expressions\7f316384
-Node: C Defaults\7f319927
-Node: C Checks\7f320610
-Node: Debugging C\7f321333
-Node: Debugging C plus plus\7f321853
-Node: Objective-C\7f324939
-Node: Method Names in Commands\7f325400
-Node: The Print Command with Objective-C\7f327115
-Node: Fortran\7f327766
-Node: Fortran Operators\7f328491
-Node: Fortran Defaults\7f329081
-Node: Special Fortran commands\7f329466
-Node: Pascal\7f329966
-Node: Modula-2\7f330481
-Node: M2 Operators\7f331456
-Node: Built-In Func/Proc\7f334454
-Node: M2 Constants\7f337232
-Node: M2 Types\7f338833
-Node: M2 Defaults\7f342106
-Node: Deviations\7f342711
-Node: M2 Checks\7f343812
-Node: M2 Scope\7f344630
-Node: GDB/M2\7f345654
-Node: Ada\7f346566
-Node: Ada Mode Intro\7f347365
-Node: Omissions from Ada\7f349237
-Node: Additions to Ada\7f353198
-Node: Stopping Before Main Program\7f357096
-Node: Ada Glitches\7f357628
-Node: Unsupported languages\7f359606
-Node: Symbols\7f360296
-Node: Altering\7f373657
-Node: Assignment\7f374626
-Node: Jumping\7f377731
-Node: Signaling\7f379888
-Node: Returning\7f381019
-Node: Calling\7f382221
-Node: Patching\7f384114
-Node: GDB Files\7f385191
-Node: Files\7f385732
-Node: Separate Debug Files\7f403473
-Node: Symbol Errors\7f411815
-Node: Targets\7f415418
-Node: Active Targets\7f416947
-Node: Target Commands\7f418526
-Node: Byte Order\7f423766
-Node: Remote\7f424758
-Node: Remote Debugging\7f425868
-Node: Connecting\7f426258
-Node: Server\7f431126
-Ref: Server-Footnote-1\7f435489
-Node: Remote configuration\7f435609
-Ref: set remotebreak\7f436633
-Ref: set remote hardware-watchpoint-limit\7f438358
-Ref: set remote hardware-breakpoint-limit\7f438358
-Node: remote stub\7f440272
-Node: Stub Contents\7f443169
-Node: Bootstrapping\7f445280
-Node: Debug Session\7f449089
-Node: Configurations\7f450649
-Node: Native\7f451418
-Node: HP-UX\7f452012
-Node: BSD libkvm Interface\7f452301
-Node: SVR4 Process Information\7f453372
-Node: DJGPP Native\7f456802
-Node: Cygwin Native\7f463382
-Node: Non-debug DLL symbols\7f466780
-Node: Hurd Native\7f471330
-Node: Neutrino\7f476593
-Node: Embedded OS\7f476968
-Node: VxWorks\7f477444
-Node: VxWorks Connection\7f479661
-Node: VxWorks Download\7f480595
-Node: VxWorks Attach\7f482330
-Node: Embedded Processors\7f482728
-Node: ARM\7f484105
-Node: H8/300\7f487059
-Node: Renesas Boards\7f488558
-Node: Renesas ICE\7f492982
-Node: Renesas Special\7f494709
-Node: H8/500\7f495159
-Node: M32R/D\7f495534
-Node: M68K\7f497239
-Node: MIPS Embedded\7f497873
-Node: OpenRISC 1000\7f502818
-Node: PowerPC\7f505672
-Node: PA\7f506336
-Node: SH\7f506616
-Node: Sparclet\7f507077
-Node: Sparclet File\7f508549
-Node: Sparclet Connection\7f509431
-Node: Sparclet Download\7f509911
-Node: Sparclet Execution\7f510962
-Node: Sparclite\7f511555
-Node: ST2000\7f511931
-Node: Z8000\7f513476
-Node: AVR\7f514857
-Node: CRIS\7f515220
-Node: Super-H\7f516198
-Node: WinCE\7f516454
-Node: Architectures\7f517362
-Node: i386\7f517710
-Node: A29K\7f518394
-Node: Alpha\7f519233
-Node: MIPS\7f519366
-Node: HPPA\7f522678
-Node: Controlling GDB\7f523184
-Node: Prompt\7f523945
-Node: Editing\7f524724
-Node: Command History\7f525667
-Node: Screen Size\7f529047
-Node: Numbers\7f530752
-Node: ABI\7f532729
-Node: Messages/Warnings\7f535658
-Node: Debugging Output\7f538151
-Node: Sequences\7f542358
-Node: Define\7f542960
-Node: Hooks\7f546311
-Node: Command Files\7f548501
-Node: Output\7f552354
-Node: Interpreters\7f554768
-Node: TUI\7f556859
-Node: TUI Overview\7f557553
-Node: TUI Keys\7f560638
-Node: TUI Single Key Mode\7f563139
-Node: TUI Commands\7f563982
-Node: TUI Configuration\7f565919
-Node: Emacs\7f567397
-Node: GDB/MI\7f572505
-Node: GDB/MI Command Syntax\7f574296
-Node: GDB/MI Input Syntax\7f574509
-Node: GDB/MI Output Syntax\7f576063
-Node: GDB/MI Compatibility with CLI\7f579481
-Node: GDB/MI Development and Front Ends\7f580218
-Node: GDB/MI Output Records\7f582020
-Node: GDB/MI Result Records\7f582302
-Node: GDB/MI Stream Records\7f583029
-Node: GDB/MI Out-of-band Records\7f584300
-Node: GDB/MI Simple Examples\7f585737
-Node: GDB/MI Command Description Format\7f587550
-Node: GDB/MI Breakpoint Commands\7f588430
-Node: GDB/MI Program Context\7f604799
-Node: GDB/MI Thread Commands\7f609281
-Node: GDB/MI Program Execution\7f611357
-Node: GDB/MI Stack Manipulation\7f619966
-Node: GDB/MI Variable Objects\7f629600
-Ref: -var-list-children\7f635364
-Node: GDB/MI Data Manipulation\7f638597
-Node: GDB/MI Tracepoint Commands\7f652963
-Node: GDB/MI Symbol Query\7f653207
-Node: GDB/MI File Commands\7f656495
-Node: GDB/MI Target Manipulation\7f660601
-Node: GDB/MI Miscellaneous Commands\7f667780
-Ref: -interpreter-exec\7f669912
-Node: Annotations\7f671134
-Node: Annotations Overview\7f671974
-Node: Prompting\7f674432
-Node: Errors\7f675956
-Node: Invalidation\7f676852
-Node: Annotations for Running\7f677329
-Node: Source Annotations\7f678849
-Node: GDB Bugs\7f679774
-Node: Bug Criteria\7f680500
-Node: Bug Reporting\7f681377
-Node: Command Line Editing\7f688999
-Node: Introduction and Notation\7f689667
-Node: Readline Interaction\7f691287
-Node: Readline Bare Essentials\7f692476
-Node: Readline Movement Commands\7f694263
-Node: Readline Killing Commands\7f695226
-Node: Readline Arguments\7f697144
-Node: Searching\7f698186
-Node: Readline Init File\7f700335
-Node: Readline Init File Syntax\7f701398
-Node: Conditional Init Constructs\7f713330
-Node: Sample Init File\7f715861
-Node: Bindable Readline Commands\7f718976
-Node: Commands For Moving\7f720031
-Node: Commands For History\7f720890
-Node: Commands For Text\7f724012
-Node: Commands For Killing\7f726736
-Node: Numeric Arguments\7f728876
-Node: Commands For Completion\7f730013
-Node: Keyboard Macros\7f731555
-Node: Miscellaneous Commands\7f732124
-Node: Readline vi Mode\7f735483
-Node: Using History Interactively\7f736400
-Node: History Interaction\7f736905
-Node: Event Designators\7f738327
-Node: Word Designators\7f739260
-Node: Modifiers\7f740897
-Node: Formatting Documentation\7f742122
-Ref: Formatting Documentation-Footnote-1\7f745442
-Node: Installing GDB\7f745506
-Node: Requirements\7f746018
-Node: Running Configure\7f747099
-Node: Separate Objdir\7f750638
-Node: Config Names\7f753522
-Node: Configure Options\7f754967
-Node: Maintenance Commands\7f757304
-Ref: maint info breakpoints\7f757963
-Node: Remote Protocol\7f767471
-Node: Overview\7f767878
-Ref: Binary Data\7f770064
-Node: Packets\7f771870
-Ref: read registers packet\7f775476
-Ref: cycle step packet\7f776629
-Ref: write register packet\7f778505
-Ref: step with signal packet\7f779383
-Ref: X packet\7f783054
-Ref: insert breakpoint or watchpoint packet\7f783344
-Node: Stop Reply Packets\7f785790
-Node: General Query Packets\7f788849
-Ref: qSupported\7f795835
-Ref: qXfer read\7f803339
-Ref: qXfer auxiliary vector read\7f803837
-Ref: qXfer memory map read\7f804182
-Ref: General Query Packets-Footnote-1\7f806984
-Node: Register Packet Format\7f807311
-Node: Tracepoint Packets\7f808229
-Node: Interrupts\7f814318
-Node: Examples\7f815781
-Node: File-I/O remote protocol extension\7f816394
-Node: File-I/O Overview\7f816852
-Node: Protocol basics\7f818999
-Node: The F request packet\7f821229
-Node: The F reply packet\7f822128
-Node: The Ctrl-C message\7f823044
-Node: Console I/O\7f824671
-Node: List of supported calls\7f825887
-Node: open\7f826247
-Node: close\7f828741
-Node: read\7f829123
-Node: write\7f829730
-Node: lseek\7f830497
-Node: rename\7f831375
-Node: unlink\7f832771
-Node: stat/fstat\7f833710
-Node: gettimeofday\7f834597
-Node: isatty\7f835032
-Node: system\7f835628
-Node: Protocol specific representation of datatypes\7f837170
-Node: Integral datatypes\7f837545
-Node: Pointer values\7f838352
-Node: Memory transfer\7f839060
-Node: struct stat\7f839680
-Node: struct timeval\7f841882
-Node: Constants\7f842399
-Node: Open flags\7f842846
-Node: mode_t values\7f843187
-Node: Errno values\7f843679
-Node: Lseek flags\7f844490
-Node: Limits\7f844675
-Node: File-I/O Examples\7f845035
-Node: Memory map format\7f846149
-Node: Agent Expressions\7f848604
-Node: General Bytecode Design\7f851525
-Node: Bytecode Descriptions\7f856325
-Node: Using Agent Expressions\7f867011
-Node: Varying Target Capabilities\7f868544
-Node: Tracing on Symmetrix\7f869717
-Node: Rationale\7f875539
-Node: Copying\7f882918
-Node: GNU Free Documentation License\7f902134
-Node: Index\7f924569
+Node: Top\7f1155
+Node: Summary\7f3581
+Node: Free Software\7f5217
+Node: Contributors\7f10785
+Node: Sample Session\7f18769
+Node: Invocation\7f25605
+Node: Invoking GDB\7f26149
+Node: File Options\7f28462
+Node: Mode Options\7f31222
+Node: Startup\7f37634
+Ref: Startup-Footnote-1\7f40089
+Node: Quitting GDB\7f40198
+Node: Shell Commands\7f41095
+Node: Logging output\7f41937
+Node: Commands\7f42783
+Node: Command Syntax\7f43421
+Node: Completion\7f45587
+Node: Help\7f49922
+Node: Running\7f55152
+Node: Compilation\7f56334
+Node: Starting\7f58973
+Node: Arguments\7f63862
+Node: Environment\7f65132
+Node: Working Directory\7f68400
+Node: Input/Output\7f69508
+Node: Attach\7f71479
+Node: Kill Process\7f73915
+Node: Threads\7f74881
+Node: Processes\7f81025
+Node: Checkpoint/Restart\7f86076
+Ref: Checkpoint/Restart-Footnote-1\7f90609
+Node: Stopping\7f90644
+Node: Breakpoints\7f91791
+Node: Set Breaks\7f95209
+Node: Set Watchpoints\7f106928
+Node: Set Catchpoints\7f114766
+Node: Delete Breaks\7f118244
+Node: Disabling\7f119961
+Node: Conditions\7f122728
+Node: Break Commands\7f127676
+Node: Breakpoint Menus\7f130561
+Node: Error in Breakpoints\7f132293
+Node: Breakpoint related warnings\7f133871
+Node: Continuing and Stepping\7f136198
+Node: Signals\7f145538
+Node: Thread Stops\7f149810
+Node: Stack\7f154415
+Node: Frames\7f155890
+Node: Backtrace\7f158642
+Ref: Backtrace-Footnote-1\7f163532
+Node: Selection\7f163720
+Node: Frame Info\7f166584
+Node: Source\7f168915
+Node: List\7f169919
+Node: Edit\7f173448
+Ref: Edit-Footnote-1\7f175179
+Node: Search\7f175414
+Node: Source Path\7f176222
+Ref: set substitute-path\7f181976
+Node: Machine Code\7f184197
+Node: Data\7f187607
+Node: Expressions\7f189988
+Node: Variables\7f191956
+Node: Arrays\7f195942
+Node: Output Formats\7f198471
+Ref: Output Formats-Footnote-1\7f200693
+Node: Memory\7f200850
+Node: Auto Display\7f205886
+Node: Print Settings\7f209658
+Node: Value History\7f221444
+Node: Convenience Vars\7f223860
+Node: Registers\7f227384
+Ref: Registers-Footnote-1\7f232059
+Node: Floating Point Hardware\7f232454
+Node: Vector Unit\7f232984
+Node: OS Information\7f233369
+Node: Memory Region Attributes\7f235367
+Node: Dump/Restore Files\7f239183
+Node: Core File Generation\7f241486
+Node: Character Sets\7f242718
+Node: Caching Remote Data\7f249550
+Node: Macros\7f250688
+Node: Tracepoints\7f257639
+Node: Set Tracepoints\7f259481
+Node: Create and Delete Tracepoints\7f260680
+Node: Enable and Disable Tracepoints\7f262324
+Node: Tracepoint Passcounts\7f263023
+Node: Tracepoint Actions\7f264447
+Node: Listing Tracepoints\7f267447
+Node: Starting and Stopping Trace Experiment\7f268568
+Node: Analyze Collected Data\7f269746
+Node: tfind\7f271051
+Node: tdump\7f275444
+Node: save-tracepoints\7f277103
+Node: Tracepoint Variables\7f277522
+Node: Overlays\7f278537
+Node: How Overlays Work\7f279257
+Ref: A code overlay\7f281817
+Node: Overlay Commands\7f285255
+Node: Automatic Overlay Debugging\7f289445
+Node: Overlay Sample Program\7f291586
+Node: Languages\7f293346
+Node: Setting\7f294509
+Node: Filenames\7f296211
+Node: Manually\7f296997
+Node: Automatically\7f298206
+Node: Show\7f299267
+Node: Checks\7f300589
+Node: Type Checking\7f301979
+Node: Range Checking\7f304712
+Node: Supported languages\7f307113
+Node: C\7f308286
+Node: C Operators\7f309517
+Node: C Constants\7f313898
+Node: C plus plus expressions\7f316385
+Node: C Defaults\7f319928
+Node: C Checks\7f320611
+Node: Debugging C\7f321334
+Node: Debugging C plus plus\7f321854
+Node: Objective-C\7f324940
+Node: Method Names in Commands\7f325401
+Node: The Print Command with Objective-C\7f327116
+Node: Fortran\7f327767
+Node: Fortran Operators\7f328492
+Node: Fortran Defaults\7f329082
+Node: Special Fortran commands\7f329467
+Node: Pascal\7f329967
+Node: Modula-2\7f330482
+Node: M2 Operators\7f331457
+Node: Built-In Func/Proc\7f334455
+Node: M2 Constants\7f337233
+Node: M2 Types\7f338834
+Node: M2 Defaults\7f342107
+Node: Deviations\7f342712
+Node: M2 Checks\7f343813
+Node: M2 Scope\7f344631
+Node: GDB/M2\7f345655
+Node: Ada\7f346567
+Node: Ada Mode Intro\7f347366
+Node: Omissions from Ada\7f349238
+Node: Additions to Ada\7f353199
+Node: Stopping Before Main Program\7f357097
+Node: Ada Glitches\7f357629
+Node: Unsupported languages\7f359607
+Node: Symbols\7f360297
+Node: Altering\7f373658
+Node: Assignment\7f374627
+Node: Jumping\7f377732
+Node: Signaling\7f379889
+Node: Returning\7f381020
+Node: Calling\7f382222
+Node: Patching\7f384115
+Node: GDB Files\7f385192
+Node: Files\7f385733
+Node: Separate Debug Files\7f403474
+Node: Symbol Errors\7f411816
+Node: Targets\7f415419
+Node: Active Targets\7f416948
+Node: Target Commands\7f418527
+Node: Byte Order\7f423767
+Node: Remote\7f424759
+Node: Remote Debugging\7f425869
+Node: Connecting\7f426259
+Node: Server\7f431127
+Ref: Server-Footnote-1\7f435490
+Node: Remote configuration\7f435610
+Ref: set remotebreak\7f436634
+Ref: set remote hardware-watchpoint-limit\7f438359
+Ref: set remote hardware-breakpoint-limit\7f438359
+Node: remote stub\7f440273
+Node: Stub Contents\7f443170
+Node: Bootstrapping\7f445281
+Node: Debug Session\7f449090
+Node: Configurations\7f450650
+Node: Native\7f451419
+Node: HP-UX\7f452013
+Node: BSD libkvm Interface\7f452302
+Node: SVR4 Process Information\7f453373
+Node: DJGPP Native\7f456803
+Node: Cygwin Native\7f463383
+Node: Non-debug DLL symbols\7f466781
+Node: Hurd Native\7f471331
+Node: Neutrino\7f476594
+Node: Embedded OS\7f476969
+Node: VxWorks\7f477445
+Node: VxWorks Connection\7f479662
+Node: VxWorks Download\7f480596
+Node: VxWorks Attach\7f482331
+Node: Embedded Processors\7f482729
+Node: ARM\7f484106
+Node: H8/300\7f487060
+Node: Renesas Boards\7f488559
+Node: Renesas ICE\7f492983
+Node: Renesas Special\7f494710
+Node: H8/500\7f495160
+Node: M32R/D\7f495535
+Node: M68K\7f497240
+Node: MIPS Embedded\7f497874
+Node: OpenRISC 1000\7f502819
+Node: PowerPC\7f505673
+Node: PA\7f506337
+Node: SH\7f506617
+Node: Sparclet\7f507078
+Node: Sparclet File\7f508550
+Node: Sparclet Connection\7f509432
+Node: Sparclet Download\7f509912
+Node: Sparclet Execution\7f510963
+Node: Sparclite\7f511556
+Node: ST2000\7f511932
+Node: Z8000\7f513477
+Node: AVR\7f514858
+Node: CRIS\7f515221
+Node: Super-H\7f516199
+Node: WinCE\7f516455
+Node: Architectures\7f517363
+Node: i386\7f517711
+Node: A29K\7f518395
+Node: Alpha\7f519234
+Node: MIPS\7f519367
+Node: HPPA\7f522679
+Node: Controlling GDB\7f523185
+Node: Prompt\7f523946
+Node: Editing\7f524725
+Node: Command History\7f525668
+Node: Screen Size\7f529048
+Node: Numbers\7f530753
+Node: ABI\7f532730
+Node: Messages/Warnings\7f535659
+Node: Debugging Output\7f538152
+Node: Sequences\7f542359
+Node: Define\7f542961
+Node: Hooks\7f546312
+Node: Command Files\7f548502
+Node: Output\7f552355
+Node: Interpreters\7f554769
+Node: TUI\7f556860
+Node: TUI Overview\7f557554
+Node: TUI Keys\7f560639
+Node: TUI Single Key Mode\7f563140
+Node: TUI Commands\7f563983
+Node: TUI Configuration\7f565920
+Node: Emacs\7f567398
+Node: GDB/MI\7f572506
+Node: GDB/MI Command Syntax\7f574297
+Node: GDB/MI Input Syntax\7f574510
+Node: GDB/MI Output Syntax\7f576064
+Node: GDB/MI Compatibility with CLI\7f579482
+Node: GDB/MI Development and Front Ends\7f580219
+Node: GDB/MI Output Records\7f582021
+Node: GDB/MI Result Records\7f582303
+Node: GDB/MI Stream Records\7f583030
+Node: GDB/MI Out-of-band Records\7f584301
+Node: GDB/MI Simple Examples\7f585738
+Node: GDB/MI Command Description Format\7f587551
+Node: GDB/MI Breakpoint Commands\7f588431
+Node: GDB/MI Program Context\7f604800
+Node: GDB/MI Thread Commands\7f609282
+Node: GDB/MI Program Execution\7f611358
+Node: GDB/MI Stack Manipulation\7f619967
+Node: GDB/MI Variable Objects\7f629601
+Ref: -var-list-children\7f635365
+Node: GDB/MI Data Manipulation\7f638594
+Node: GDB/MI Tracepoint Commands\7f652960
+Node: GDB/MI Symbol Query\7f653204
+Node: GDB/MI File Commands\7f656492
+Node: GDB/MI Target Manipulation\7f660598
+Node: GDB/MI Miscellaneous Commands\7f667777
+Ref: -interpreter-exec\7f669909
+Node: Annotations\7f671127
+Node: Annotations Overview\7f671967
+Node: Prompting\7f674425
+Node: Errors\7f675949
+Node: Invalidation\7f676845
+Node: Annotations for Running\7f677322
+Node: Source Annotations\7f678842
+Node: GDB Bugs\7f679767
+Node: Bug Criteria\7f680493
+Node: Bug Reporting\7f681370
+Node: Command Line Editing\7f688992
+Node: Introduction and Notation\7f689660
+Node: Readline Interaction\7f691280
+Node: Readline Bare Essentials\7f692469
+Node: Readline Movement Commands\7f694256
+Node: Readline Killing Commands\7f695219
+Node: Readline Arguments\7f697137
+Node: Searching\7f698179
+Node: Readline Init File\7f700328
+Node: Readline Init File Syntax\7f701391
+Node: Conditional Init Constructs\7f713323
+Node: Sample Init File\7f715854
+Node: Bindable Readline Commands\7f718969
+Node: Commands For Moving\7f720024
+Node: Commands For History\7f720883
+Node: Commands For Text\7f724005
+Node: Commands For Killing\7f726729
+Node: Numeric Arguments\7f728869
+Node: Commands For Completion\7f730006
+Node: Keyboard Macros\7f731548
+Node: Miscellaneous Commands\7f732117
+Node: Readline vi Mode\7f735476
+Node: Using History Interactively\7f736393
+Node: History Interaction\7f736898
+Node: Event Designators\7f738320
+Node: Word Designators\7f739253
+Node: Modifiers\7f740890
+Node: Formatting Documentation\7f742115
+Ref: Formatting Documentation-Footnote-1\7f745435
+Node: Installing GDB\7f745499
+Node: Requirements\7f746011
+Node: Running Configure\7f747092
+Node: Separate Objdir\7f750631
+Node: Config Names\7f753515
+Node: Configure Options\7f754960
+Node: Maintenance Commands\7f757297
+Ref: maint info breakpoints\7f757956
+Node: Remote Protocol\7f767464
+Node: Overview\7f767871
+Ref: Binary Data\7f770057
+Node: Packets\7f771863
+Ref: read registers packet\7f775469
+Ref: cycle step packet\7f776622
+Ref: write register packet\7f778498
+Ref: step with signal packet\7f779376
+Ref: X packet\7f783047
+Ref: insert breakpoint or watchpoint packet\7f783337
+Node: Stop Reply Packets\7f785783
+Node: General Query Packets\7f788842
+Ref: qSupported\7f795828
+Ref: qXfer read\7f803332
+Ref: qXfer auxiliary vector read\7f803830
+Ref: qXfer memory map read\7f804175
+Ref: General Query Packets-Footnote-1\7f806977
+Node: Register Packet Format\7f807304
+Node: Tracepoint Packets\7f808222
+Node: Interrupts\7f814311
+Node: Examples\7f815774
+Node: File-I/O remote protocol extension\7f816387
+Node: File-I/O Overview\7f816845
+Node: Protocol basics\7f818992
+Node: The F request packet\7f821222
+Node: The F reply packet\7f822121
+Node: The Ctrl-C message\7f823037
+Node: Console I/O\7f824664
+Node: List of supported calls\7f825880
+Node: open\7f826240
+Node: close\7f828734
+Node: read\7f829116
+Node: write\7f829723
+Node: lseek\7f830490
+Node: rename\7f831368
+Node: unlink\7f832764
+Node: stat/fstat\7f833703
+Node: gettimeofday\7f834590
+Node: isatty\7f835025
+Node: system\7f835621
+Node: Protocol specific representation of datatypes\7f837163
+Node: Integral datatypes\7f837538
+Node: Pointer values\7f838345
+Node: Memory transfer\7f839053
+Node: struct stat\7f839673
+Node: struct timeval\7f841875
+Node: Constants\7f842392
+Node: Open flags\7f842839
+Node: mode_t values\7f843180
+Node: Errno values\7f843672
+Node: Lseek flags\7f844483
+Node: Limits\7f844668
+Node: File-I/O Examples\7f845028
+Node: Memory map format\7f846142
+Node: Agent Expressions\7f848597
+Node: General Bytecode Design\7f851518
+Node: Bytecode Descriptions\7f856318
+Node: Using Agent Expressions\7f867004
+Node: Varying Target Capabilities\7f868537
+Node: Tracing on Symmetrix\7f869710
+Node: Rationale\7f875532
+Node: Copying\7f882911
+Node: GNU Free Documentation License\7f902127
+Node: Index\7f924562
 \1f
 End Tag Table
index 96a9406..b33313f 100644 (file)
@@ -1,4 +1,4 @@
-This is gdbint.info, produced by makeinfo version 4.8 from
+This is gdbint.info, produced by makeinfo version 4.11 from
 ../../../../../gdb-6.6/gdb/doc/gdbint.texinfo.
 
 INFO-DIR-SECTION Software development
@@ -841,7 +841,7 @@ previously available.  This new interface needed to be strongly typed,
 easy to extend, and versatile enough to be used as the standard
 interface when adding new notifications.
 
-   See *Note GDB Observers:: for a brief description of the observers
+   See *note GDB Observers:: for a brief description of the observers
 currently implemented in GDB. The rationale for the current
 implementation is also briefly discussed.
 
@@ -1811,7 +1811,7 @@ The IBM RS/6000 running AIX uses an object file format called XCOFF.
 The COFF sections, symbols, and line numbers are used, but debugging
 symbols are `dbx'-style stabs whose strings are located in the `.debug'
 section (rather than the string table).  For more information, see
-*Note Top: (stabs)Top.
+*note Top: (stabs)Top.
 
    The shared library scheme has a clean interface for figuring out what
 shared libraries are in use, but the catch is that everything which
@@ -2642,7 +2642,7 @@ pointers, GDB might show the following behavior:
 
 _Maintainer note: This section is pretty much obsolete.  The
 functionality described here has largely been replaced by
-pseudo-registers and the mechanisms described in *Note Using Different
+pseudo-registers and the mechanisms described in *note Using Different
 Register and Memory Data Representations: Target Architecture
 Definition.  See also Bug Tracking Database
 (http://www.gnu.org/software/gdb/bugs/) and ARI Index
@@ -3229,7 +3229,7 @@ machine.
 
 `I386_USE_GENERIC_WATCHPOINTS'
      An x86-based target can define this to use the generic x86
-     watchpoint support; see *Note I386_USE_GENERIC_WATCHPOINTS:
+     watchpoint support; see *note I386_USE_GENERIC_WATCHPOINTS:
      Algorithms.
 
 `SYMBOLS_CAN_START_WITH_DOLLAR'
@@ -3582,7 +3582,7 @@ machine.
      Define this to increase ADDR so that it meets the alignment
      requirements for the processor's stack.
 
-     Unlike *Note frame_align::, this function always adjusts ADDR
+     Unlike *note frame_align::, this function always adjusts ADDR
      upwards.
 
      By default, no stack alignment is performed.
@@ -4232,7 +4232,7 @@ the same.  These macros should be defined (or left undefined) in
 
 `I386_USE_GENERIC_WATCHPOINTS'
      An x86-based machine can define this to use the generic x86
-     watchpoint support; see *Note I386_USE_GENERIC_WATCHPOINTS:
+     watchpoint support; see *note I386_USE_GENERIC_WATCHPOINTS:
      Algorithms.
 
 `KERNEL_U_ADDR'
@@ -7768,54 +7768,54 @@ Index
 
 \1f
 Tag Table:
-Node: Top\7f919
-Node: Requirements\7f1758
-Node: Overall Structure\7f3246
-Node: Algorithms\7f8179
-Node: User Interface\7f37887
-Ref: User Interface-Footnote-1\7f61664
-Ref: User Interface-Footnote-2\7f61713
-Node: libgdb\7f61948
-Node: Symbol Handling\7f65908
-Node: Language Support\7f81008
-Node: Host Definition\7f86409
-Node: Target Architecture Definition\7f93766
-Ref: BREAKPOINT_FROM_PC\7f121388
-Ref: DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS\7f127556
-Ref: frame_align\7f128388
-Ref: DEPRECATED_FRAME_SAVED_PC\7f130767
-Ref: unwind_pc\7f130953
-Ref: unwind_sp\7f131506
-Ref: stabs_argument_has_addr\7f143969
-Ref: push_dummy_call\7f144743
-Ref: push_dummy_code\7f145329
-Ref: DEPRECATED_REG_STRUCT_HAS_ADDR\7f146174
-Ref: SAVE_DUMMY_FRAME_TOS\7f146408
-Ref: gdbarch_return_value\7f147027
-Ref: DEPRECATED_STACK_ALIGN\7f150312
-Ref: TARGET_WRITE_PC\7f152939
-Ref: TARGET_READ_SP\7f152973
-Ref: unwind_dummy_id\7f154646
-Ref: Target Architecture Definition-Footnote-1\7f163199
-Ref: Target Architecture Definition-Footnote-2\7f163442
-Node: Target Vector Definition\7f163561
-Node: Managing Execution State\7f164104
-Node: Existing Targets\7f165917
-Node: Native Debugging\7f168238
-Node: Support Libraries\7f178677
-Node: Coding\7f190083
-Node: Porting GDB\7f215802
-Node: Versions and Branches\7f217711
-Ref: Tags\7f223670
-Ref: experimental branch tags\7f224001
-Node: Start of New Year Procedure\7f224733
-Node: Releasing GDB\7f225731
-Node: Testsuite\7f244075
-Node: Hints\7f251028
-Node: Getting Started\7f251350
-Node: Debugging GDB\7f255493
-Node: GDB Observers\7f260855
-Node: GNU Free Documentation License\7f265220
-Node: Index\7f287664
+Node: Top\7f920
+Node: Requirements\7f1759
+Node: Overall Structure\7f3247
+Node: Algorithms\7f8180
+Node: User Interface\7f37888
+Ref: User Interface-Footnote-1\7f61665
+Ref: User Interface-Footnote-2\7f61714
+Node: libgdb\7f61949
+Node: Symbol Handling\7f65909
+Node: Language Support\7f81009
+Node: Host Definition\7f86410
+Node: Target Architecture Definition\7f93767
+Ref: BREAKPOINT_FROM_PC\7f121389
+Ref: DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS\7f127557
+Ref: frame_align\7f128389
+Ref: DEPRECATED_FRAME_SAVED_PC\7f130768
+Ref: unwind_pc\7f130954
+Ref: unwind_sp\7f131507
+Ref: stabs_argument_has_addr\7f143970
+Ref: push_dummy_call\7f144744
+Ref: push_dummy_code\7f145330
+Ref: DEPRECATED_REG_STRUCT_HAS_ADDR\7f146175
+Ref: SAVE_DUMMY_FRAME_TOS\7f146409
+Ref: gdbarch_return_value\7f147028
+Ref: DEPRECATED_STACK_ALIGN\7f150313
+Ref: TARGET_WRITE_PC\7f152940
+Ref: TARGET_READ_SP\7f152974
+Ref: unwind_dummy_id\7f154647
+Ref: Target Architecture Definition-Footnote-1\7f163200
+Ref: Target Architecture Definition-Footnote-2\7f163443
+Node: Target Vector Definition\7f163562
+Node: Managing Execution State\7f164105
+Node: Existing Targets\7f165918
+Node: Native Debugging\7f168239
+Node: Support Libraries\7f178678
+Node: Coding\7f190084
+Node: Porting GDB\7f215803
+Node: Versions and Branches\7f217712
+Ref: Tags\7f223671
+Ref: experimental branch tags\7f224002
+Node: Start of New Year Procedure\7f224734
+Node: Releasing GDB\7f225732
+Node: Testsuite\7f244076
+Node: Hints\7f251029
+Node: Getting Started\7f251351
+Node: Debugging GDB\7f255494
+Node: GDB Observers\7f260856
+Node: GNU Free Documentation License\7f265221
+Node: Index\7f287665
 \1f
 End Tag Table
index e88f356..5ebf46b 100644 (file)
@@ -1,5 +1,4 @@
-This is ld.info, produced by makeinfo version 4.8 from
-../../../../binutils-2.19/ld/ld.texinfo.
+This is ld.info, produced by makeinfo version 4.11 from ../../../../binutils-2.19/ld/ld.texinfo.
 
 START-INFO-DIR-ENTRY
 * Ld: (ld).                       The GNU linker.
@@ -223,14 +222,14 @@ GNU linker:
 
      The default format is taken from the environment variable
      `GNUTARGET'.  *Note Environment::.  You can also define the input
-     format from a script, using the command `TARGET'; see *Note Format
+     format from a script, using the command `TARGET'; see *note Format
      Commands::.
 
 `-c MRI-COMMANDFILE'
 `--mri-script=MRI-COMMANDFILE'
      For compatibility with linkers produced by MRI, `ld' accepts script
      files written in an alternate, restricted command language,
-     described in *Note MRI Compatible Script Files: MRI.  Introduce
+     described in *note MRI Compatible Script Files: MRI.  Introduce
      MRI script files with the option `-c'; use the `-T' option to run
      linker scripts written in the general-purpose `ld' scripting
      language.  If MRI-CMDFILE does not exist, `ld' looks for it in the
@@ -471,7 +470,7 @@ GNU linker:
                   [0x0000000c]                foo = (foo * 0x4)
                   [0x0000000c]                foo = (foo + 0x8)
 
-          See *Note Expressions:: for more information about
+          See *note Expressions:: for more information about
           expressions in linker scripts.
 
 `-n'
@@ -753,10 +752,10 @@ GNU linker:
      Tells the linker to accept input files whose architecture cannot be
      recognised.  The assumption is that the user knows what they are
      doing and deliberately wants to link in these unknown input files.
-     This was the default behaviour of the linker, before release
-     2.14.  The default behaviour from release 2.14 onwards is to
-     reject such input files, and so the `--accept-unknown-input-arch'
-     option has been added to restore the old behaviour.
+     This was the default behaviour of the linker, before release 2.14.
+     The default behaviour from release 2.14 onwards is to reject such
+     input files, and so the `--accept-unknown-input-arch' option has
+     been added to restore the old behaviour.
 
 `--as-needed'
 `--no-as-needed'
@@ -838,7 +837,7 @@ GNU linker:
      meaningful on ELF platforms which support shared libraries.
 
      The format of the dynamic list is the same as the version node
-     without scope and node name.  See *Note VERSION:: for more
+     without scope and node name.  See *note VERSION:: for more
      information.
 
 `--dynamic-list-data'
@@ -2221,7 +2220,7 @@ Several linker script commands deal with files.
      the "sysroot prefix".  Otherwise, the linker will try to open the
      file in the current directory.  If it is not found, the linker
      will search through the archive library search path.  See the
-     description of `-L' in *Note Command Line Options: Options.
+     description of `-L' in *note Command Line Options: Options.
 
      If you use `INPUT (-lFILE)', `ld' will transform the name to
      `libFILE.a', as with the command line argument `-l'.
@@ -2235,7 +2234,7 @@ Several linker script commands deal with files.
      The `GROUP' command is like `INPUT', except that the named files
      should all be archives, and they are searched repeatedly until no
      new undefined references are created.  See the description of `-('
-     in *Note Command Line Options: Options.
+     in *note Command Line Options: Options.
 
 `AS_NEEDED(FILE, FILE, ...)'
 `AS_NEEDED(FILE FILE ...)'
@@ -2435,14 +2434,14 @@ only use this within a `SECTIONS' command.  *Note Location Counter::.
 
    The semicolon after EXPRESSION is required.
 
-   Expressions are defined below; see *Note Expressions::.
+   Expressions are defined below; see *note Expressions::.
 
    You may write symbol assignments as commands in their own right, or
 as statements within a `SECTIONS' command, or as part of an output
 section description in a `SECTIONS' command.
 
    The section of the symbol will be set from the section of the
-expression; for more information, see *Note Expression Section::.
+expression; for more information, see *note Expression Section::.
 
    Here is an example showing the three different places that symbol
 assignments may be used:
@@ -2699,7 +2698,7 @@ the name should be supplied as a quoted numeric string.  A section name
 may consist of any sequence of characters, but a name which contains
 any unusual characters such as commas must be quoted.
 
-   The output section name `/DISCARD/' is special; *Note Output Section
+   The output section name `/DISCARD/' is special; *note Output Section
 Discarding::.
 
 \1f
@@ -2730,7 +2729,7 @@ output section to the current value of the location counter.  The
 second will set it to the current value of the location counter aligned
 to the strictest alignment of a `.text' input section.
 
-   The ADDRESS may be an arbitrary expression; *Note Expressions::.
+   The ADDRESS may be an arbitrary expression; *note Expressions::.
 For example, if you want to align the section on a 0x10 byte boundary,
 so that the lowest four bits of the section address are zero, you could
 do something like this:
@@ -3202,9 +3201,8 @@ like this:
          OUTPUT-SECTION-COMMAND
          ...
        } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP]
-We've already described SECTION, ADDRESS, and
-OUTPUT-SECTION-COMMAND.  In this section we will describe the remaining
-section attributes.
+We've already described SECTION, ADDRESS, and OUTPUT-SECTION-COMMAND.
+In this section we will describe the remaining section attributes.
 
 * Menu:
 
@@ -3256,7 +3254,7 @@ File: ld.info,  Node: Output Section LMA,  Next: Forced Output Alignment,  Prev:
 ..........................
 
 Every section has a virtual address (VMA) and a load address (LMA); see
-*Note Basic Script Concepts::.  The address expression which may appear
+*note Basic Script Concepts::.  The address expression which may appear
 in an output section description sets the VMA (*note Output Section
 Address::).
 
@@ -3459,10 +3457,10 @@ section.
           .text0 { o1/*.o(.text) }
           .text1 { o2/*.o(.text) }
         }
-This will define both `.text0' and `.text1' to start at address
-0x1000.  `.text0' will be loaded at address 0x4000, and `.text1' will
-be loaded immediately after `.text0'.  The following symbols will be
-defined if referenced: `__load_start_text0', `__load_stop_text0',
+This will define both `.text0' and `.text1' to start at address 0x1000.
+`.text0' will be loaded at address 0x4000, and `.text1' will be loaded
+immediately after `.text0'.  The following symbols will be defined if
+referenced: `__load_start_text0', `__load_stop_text0',
 `__load_start_text1', `__load_stop_text1'.
 
    C code to copy overlay `.text1' into the overlay area might look
@@ -3502,8 +3500,8 @@ regions that become too full.  The linker will not shuffle sections
 around to fit into the available regions.
 
    A linker script may contain at most one use of the `MEMORY' command.
-However, you can define as many blocks of memory within it as you
-wish.  The syntax is:
+However, you can define as many blocks of memory within it as you wish.
+The syntax is:
      MEMORY
        {
          NAME [(ATTR)] : ORIGIN = ORIGIN, LENGTH = LEN
@@ -3518,7 +3516,7 @@ have a distinct name.
 
    The ATTR string is an optional list of attributes that specify
 whether to use a particular memory region for an input section which is
-not explicitly mapped in the linker script.  As described in *Note
+not explicitly mapped in the linker script.  As described in *note
 SECTIONS::, if you do not specify an output section for some input
 section, the linker will create an output section with the same name as
 the input section.  If you define region attributes, the linker will use
@@ -4259,11 +4257,10 @@ use in linker script expressions.
               variable = ALIGN(0x8000);
             }
           ... }
-     The first use of `ALIGN' in this example specifies the
-     location of a section because it is used as the optional ADDRESS
-     attribute of a section definition (*note Output Section
-     Address::).  The second use of `ALIGN' is used to defines the
-     value of a symbol.
+     The first use of `ALIGN' in this example specifies the location of
+     a section because it is used as the optional ADDRESS attribute of
+     a section definition (*note Output Section Address::).  The second
+     use of `ALIGN' is used to defines the value of a symbol.
 
      The builtin function `NEXT' is closely related to `ALIGN'.
 
@@ -5055,7 +5052,7 @@ File: ld.info,  Node: WIN32,  Next: Xtensa,  Prev: TI COFF,  Up: Machine Depende
 ==================================
 
 This section describes some of the win32 specific `ld' issues.  See
-*Note Command Line Options: Options. for detailed description of the
+*note Command Line Options: Options. for detailed description of the
 command line options mentioned here.
 
 _import libraries_
@@ -5773,13 +5770,12 @@ leave it out, state it!
    Often people omit facts because they think they know what causes the
 problem and assume that some details do not matter.  Thus, you might
 assume that the name of a symbol you use in an example does not matter.
-Well, probably it does not, but one cannot be sure.  Perhaps the bug
-is a stray memory reference which happens to fetch from the location
-where that name is stored in memory; perhaps, if the name were
-different, the contents of that location would fool the linker into
-doing the right thing despite the bug.  Play it safe and give a
-specific, complete example.  That is the easiest thing for you to do,
-and the most helpful.
+Well, probably it does not, but one cannot be sure.  Perhaps the bug is
+a stray memory reference which happens to fetch from the location where
+that name is stored in memory; perhaps, if the name were different, the
+contents of that location would fool the linker into doing the right
+thing despite the bug.  Play it safe and give a specific, complete
+example.  That is the easiest thing for you to do, and the most helpful.
 
    Keep in mind that the purpose of a bug report is to enable us to fix
 the bug if it is new to us.  Therefore, always write your bug reports
@@ -5911,7 +5907,7 @@ Appendix A MRI Compatible Script Files
 
 To aid users making the transition to GNU `ld' from the MRI linker,
 `ld' can use MRI compatible linker scripts as an alternative to the
-more general-purpose linker scripting language described in *Note
+more general-purpose linker scripting language described in *note
 Scripts::.  MRI compatible linker scripts have a much simpler command
 set than the scripting language otherwise used with `ld'.  GNU `ld'
 supports the most commonly used MRI linker commands; these commands are
@@ -6213,20 +6209,19 @@ Appendix B GNU Free Documentation License
      H. Include an unaltered copy of this License.
      I. Preserve the section entitled "History", and its title, and add
      to    it an item stating at least the title, year, new authors, and
-       publisher of the Modified Version as given on the Title Page.
-     If    there is no section entitled "History" in the Document,
-     create one    stating the title, year, authors, and publisher of
-     the Document as    given on its Title Page, then add an item
+       publisher of the Modified Version as given on the Title Page.  If
+       there is no section entitled "History" in the Document, create
+     one    stating the title, year, authors, and publisher of the
+     Document as    given on its Title Page, then add an item
      describing the Modified    Version as stated in the previous
      sentence.
      J. Preserve the network location, if any, given in the Document for
-       public access to a Transparent copy of the Document, and
-     likewise    the network locations given in the Document for
-     previous versions    it was based on.  These may be placed in the
-     "History" section.     You may omit a network location for a work
-     that was published at    least four years before the Document
-     itself, or if the original    publisher of the version it refers
-     to gives permission.
+       public access to a Transparent copy of the Document, and likewise
+       the network locations given in the Document for previous versions
+       it was based on.  These may be placed in the "History" section.
+       You may omit a network location for a work that was published at
+       least four years before the Document itself, or if the original
+      publisher of the version it refers to gives permission.
      K. In any section entitled "Acknowledgements" or "Dedications",
      preserve the section's title, and preserve in the section all the
       substance and tone of each of the contributor acknowledgements
@@ -6683,7 +6678,7 @@ LD Index
 * ALIGN(EXP,ALIGN):                      Builtin Functions.  (line   36)
 * ALIGN(SECTION_ALIGN):                  Forced Output Alignment.
                                                              (line    6)
-* ALIGNOF(SECTION):                      Builtin Functions.  (line   62)
+* ALIGNOF(SECTION):                      Builtin Functions.  (line   61)
 * allocating memory:                     MEMORY.             (line    6)
 * architecture:                          Miscellaneous Commands.
                                                              (line   72)
@@ -6709,7 +6704,7 @@ LD Index
 * BFD requirements:                      BFD.                (line   16)
 * big-endian objects:                    Options.            (line  200)
 * binary input format:                   Options.            (line  117)
-* BLOCK(EXP):                            Builtin Functions.  (line   75)
+* BLOCK(EXP):                            Builtin Functions.  (line   74)
 * bug criteria:                          Bug Criteria.       (line    6)
 * bug reports:                           Bug Reporting.      (line    6)
 * bugs in ld:                            Reporting Bugs.     (line    6)
@@ -6745,14 +6740,14 @@ LD Index
 * data:                                  Output Section Data.
                                                              (line    6)
 * DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE): Builtin Functions.
-                                                             (line   80)
-* DATA_SEGMENT_END(EXP):                 Builtin Functions.  (line  101)
-* DATA_SEGMENT_RELRO_END(OFFSET, EXP):   Builtin Functions.  (line  107)
+                                                             (line   79)
+* DATA_SEGMENT_END(EXP):                 Builtin Functions.  (line  100)
+* DATA_SEGMENT_RELRO_END(OFFSET, EXP):   Builtin Functions.  (line  106)
 * dbx:                                   Options.            (line 1174)
 * DEF files, creating:                   Options.            (line 1597)
 * default emulation:                     Environment.        (line   21)
 * default input format:                  Environment.        (line    9)
-* DEFINED(SYMBOL):                       Builtin Functions.  (line  118)
+* DEFINED(SYMBOL):                       Builtin Functions.  (line  117)
 * deleting local symbols:                Options.            (line  536)
 * demangling, default:                   Environment.        (line   29)
 * demangling, from command line:         Options.            (line  818)
@@ -6818,7 +6813,7 @@ LD Index
 * grouping input files:                  File Commands.      (line   47)
 * groups of archives:                    Options.            (line  645)
 * H8/300 support:                        H8/300.             (line    6)
-* header size:                           Builtin Functions.  (line  183)
+* header size:                           Builtin Functions.  (line  182)
 * heap size:                             Options.            (line 1539)
 * help:                                  Options.            (line  883)
 * holes:                                 Location Counter.   (line   12)
@@ -6870,7 +6865,7 @@ LD Index
 * LDEMULATION:                           Environment.        (line   21)
 * len =:                                 MEMORY.             (line   72)
 * LENGTH =:                              MEMORY.             (line   72)
-* LENGTH(MEMORY):                        Builtin Functions.  (line  135)
+* LENGTH(MEMORY):                        Builtin Functions.  (line  134)
 * library search path in linker script:  File Commands.      (line   74)
 * link map:                              Options.            (line  352)
 * link-time runtime library search path: Options.            (line 1063)
@@ -6887,7 +6882,7 @@ LD Index
 * little-endian objects:                 Options.            (line  203)
 * LOAD (MRI):                            MRI.                (line   84)
 * load address:                          Output Section LMA. (line    6)
-* LOADADDR(SECTION):                     Builtin Functions.  (line  138)
+* LOADADDR(SECTION):                     Builtin Functions.  (line  137)
 * loading, preventing:                   Output Section Type.
                                                              (line   22)
 * local symbols, deleting:               Options.            (line  540)
@@ -6900,14 +6895,14 @@ LD Index
                                                              (line   72)
 * machine dependencies:                  Machine Dependent.  (line    6)
 * mapping input sections to output sections: Input Section.  (line    6)
-* MAX:                                   Builtin Functions.  (line  143)
+* MAX:                                   Builtin Functions.  (line  142)
 * MEMORY:                                MEMORY.             (line    6)
 * memory region attributes:              MEMORY.             (line   32)
 * memory regions:                        MEMORY.             (line    6)
 * memory regions and sections:           Output Section Region.
                                                              (line    6)
 * memory usage:                          Options.            (line  895)
-* MIN:                                   Builtin Functions.  (line  146)
+* MIN:                                   Builtin Functions.  (line  145)
 * Motorola 68K GOT generation:           M68K.               (line    6)
 * MRI compatibility:                     MRI.                (line    6)
 * MSP430 extra sections:                 MSP430.             (line   11)
@@ -6916,7 +6911,7 @@ LD Index
                                                              (line    6)
 * names:                                 Symbols.            (line    6)
 * naming the output file:                Options.            (line  409)
-* NEXT(EXP):                             Builtin Functions.  (line  150)
+* NEXT(EXP):                             Builtin Functions.  (line  149)
 * NMAGIC:                                Options.            (line  389)
 * NO_ENUM_SIZE_WARNING:                  ARM.                (line  106)
 * NO_WCHAR_SIZE_WARNING:                 ARM.                (line  113)
@@ -6924,7 +6919,7 @@ LD Index
                                                              (line   56)
 * NOLOAD:                                Output Section Type.
                                                              (line   22)
-* not enough room for program headers:   Builtin Functions.  (line  188)
+* not enough room for program headers:   Builtin Functions.  (line  187)
 * o =:                                   MEMORY.             (line   67)
 * objdump -i:                            BFD.                (line    6)
 * object file management:                BFD.                (line    6)
@@ -6938,7 +6933,7 @@ LD Index
 * ORDER (MRI):                           MRI.                (line   95)
 * org =:                                 MEMORY.             (line   67)
 * ORIGIN =:                              MEMORY.             (line   67)
-* ORIGIN(MEMORY):                        Builtin Functions.  (line  156)
+* ORIGIN(MEMORY):                        Builtin Functions.  (line  155)
 * orphan:                                Orphan Sections.    (line    6)
 * output file after errors:              Options.            (line  965)
 * output file format in linker script:   Format Commands.    (line   10)
@@ -6982,7 +6977,7 @@ LD Index
 * program headers:                       PHDRS.              (line    6)
 * program headers and sections:          Output Section Phdr.
                                                              (line    6)
-* program headers, not enough room:      Builtin Functions.  (line  188)
+* program headers, not enough room:      Builtin Functions.  (line  187)
 * program segments:                      PHDRS.              (line    6)
 * PROVIDE:                               PROVIDE.            (line    6)
 * PROVIDE_HIDDEN:                        PROVIDE_HIDDEN.     (line    6)
@@ -7025,19 +7020,19 @@ LD Index
 * section address:                       Output Section Address.
                                                              (line    6)
 * section address in expression:         Builtin Functions.  (line   17)
-* section alignment:                     Builtin Functions.  (line   62)
+* section alignment:                     Builtin Functions.  (line   61)
 * section alignment, warnings on:        Options.            (line 1329)
 * section data:                          Output Section Data.
                                                              (line    6)
 * section fill pattern:                  Output Section Fill.
                                                              (line    6)
 * section load address:                  Output Section LMA. (line    6)
-* section load address in expression:    Builtin Functions.  (line  138)
+* section load address in expression:    Builtin Functions.  (line  137)
 * section name:                          Output Section Name.
                                                              (line    6)
 * section name wildcard patterns:        Input Section Wildcards.
                                                              (line    6)
-* section size:                          Builtin Functions.  (line  167)
+* section size:                          Builtin Functions.  (line  166)
 * section, assigning to memory region:   Output Section Region.
                                                              (line    6)
 * section, assigning to program header:  Output Section Phdr.
@@ -7046,13 +7041,13 @@ LD Index
 * sections, discarding:                  Output Section Discarding.
                                                              (line    6)
 * segment origins, cmd line:             Options.            (line 1190)
-* SEGMENT_START(SEGMENT, DEFAULT):       Builtin Functions.  (line  159)
+* SEGMENT_START(SEGMENT, DEFAULT):       Builtin Functions.  (line  158)
 * segments, ELF:                         PHDRS.              (line    6)
 * shared libraries:                      Options.            (line 1120)
 * SHORT(EXPRESSION):                     Output Section Data.
                                                              (line    6)
-* SIZEOF(SECTION):                       Builtin Functions.  (line  167)
-* SIZEOF_HEADERS:                        Builtin Functions.  (line  183)
+* SIZEOF(SECTION):                       Builtin Functions.  (line  166)
+* SIZEOF_HEADERS:                        Builtin Functions.  (line  182)
 * small common symbols:                  Input Section Common.
                                                              (line   20)
 * SORT:                                  Input Section Wildcards.
@@ -7081,7 +7076,7 @@ LD Index
 * SUBALIGN(SUBSECTION_ALIGN):            Forced Input Alignment.
                                                              (line    6)
 * suffixes for integers:                 Constants.          (line   12)
-* symbol defaults:                       Builtin Functions.  (line  118)
+* symbol defaults:                       Builtin Functions.  (line  117)
 * symbol definition, scripts:            Assignments.        (line    6)
 * symbol names:                          Symbols.            (line    6)
 * symbol tracing:                        Options.            (line  546)
@@ -7100,7 +7095,7 @@ LD Index
 * traditional format:                    Options.            (line 1169)
 * trampoline generation on M68HC11:      M68HC11/68HC12.     (line   31)
 * trampoline generation on M68HC12:      M68HC11/68HC12.     (line   31)
-* unallocated address, next:             Builtin Functions.  (line  150)
+* unallocated address, next:             Builtin Functions.  (line  149)
 * undefined symbol:                      Options.            (line  503)
 * undefined symbol in linker script:     Miscellaneous Commands.
                                                              (line   13)
@@ -7135,10 +7130,10 @@ LD Index
 
 \1f
 Tag Table:
-Node: Top\7f776
-Node: Overview\7f1547
-Node: Invocation\7f2661
-Node: Options\7f3069
+Node: Top\7f777
+Node: Overview\7f1548
+Node: Invocation\7f2662
+Node: Options\7f3070
 Node: Environment\7f85534
 Node: Scripts\7f87294
 Node: Basic Script Concepts\7f89028
@@ -7168,51 +7163,51 @@ Node: Output Section Data\7f130667
 Node: Output Section Keywords\7f133444
 Node: Output Section Discarding\7f137013
 Node: Output Section Attributes\7f138194
-Node: Output Section Type\7f139198
-Node: Output Section LMA\7f140352
-Node: Forced Output Alignment\7f142865
-Node: Forced Input Alignment\7f143133
-Node: Output Section Region\7f143518
-Node: Output Section Phdr\7f143948
-Node: Output Section Fill\7f144612
-Node: Overlay Description\7f145754
-Node: MEMORY\7f150057
-Node: PHDRS\7f154257
-Node: VERSION\7f159296
-Node: Expressions\7f167088
-Node: Constants\7f167966
-Node: Symbols\7f168527
-Node: Orphan Sections\7f169265
-Node: Location Counter\7f170429
-Node: Operators\7f174865
-Node: Evaluation\7f175787
-Node: Expression Section\7f177151
-Node: Builtin Functions\7f178640
-Node: Implicit Linker Scripts\7f186607
-Node: Machine Dependent\7f187382
-Node: H8/300\7f188398
-Node: i960\7f190023
-Node: M68HC11/68HC12\7f191708
-Node: ARM\7f193162
-Node: HPPA ELF32\7f200412
-Node: M68K\7f202035
-Node: MMIX\7f202944
-Node: MSP430\7f204109
-Node: PowerPC ELF32\7f205158
-Node: PowerPC64 ELF64\7f207772
-Node: SPU ELF\7f212188
-Node: TI COFF\7f214820
-Node: WIN32\7f215346
-Node: Xtensa\7f233703
-Node: BFD\7f236825
-Node: BFD outline\7f238280
-Node: BFD information loss\7f239566
-Node: Canonical format\7f242083
-Node: Reporting Bugs\7f246440
-Node: Bug Criteria\7f247134
-Node: Bug Reporting\7f247833
-Node: MRI\7f254872
-Node: GNU Free Documentation License\7f259515
-Node: LD Index\7f279232
+Node: Output Section Type\7f139197
+Node: Output Section LMA\7f140351
+Node: Forced Output Alignment\7f142864
+Node: Forced Input Alignment\7f143132
+Node: Output Section Region\7f143517
+Node: Output Section Phdr\7f143947
+Node: Output Section Fill\7f144611
+Node: Overlay Description\7f145753
+Node: MEMORY\7f150055
+Node: PHDRS\7f154254
+Node: VERSION\7f159293
+Node: Expressions\7f167085
+Node: Constants\7f167963
+Node: Symbols\7f168524
+Node: Orphan Sections\7f169262
+Node: Location Counter\7f170426
+Node: Operators\7f174862
+Node: Evaluation\7f175784
+Node: Expression Section\7f177148
+Node: Builtin Functions\7f178637
+Node: Implicit Linker Scripts\7f186599
+Node: Machine Dependent\7f187374
+Node: H8/300\7f188390
+Node: i960\7f190015
+Node: M68HC11/68HC12\7f191700
+Node: ARM\7f193154
+Node: HPPA ELF32\7f200404
+Node: M68K\7f202027
+Node: MMIX\7f202936
+Node: MSP430\7f204101
+Node: PowerPC ELF32\7f205150
+Node: PowerPC64 ELF64\7f207764
+Node: SPU ELF\7f212180
+Node: TI COFF\7f214812
+Node: WIN32\7f215338
+Node: Xtensa\7f233695
+Node: BFD\7f236817
+Node: BFD outline\7f238272
+Node: BFD information loss\7f239558
+Node: Canonical format\7f242075
+Node: Reporting Bugs\7f246432
+Node: Bug Criteria\7f247126
+Node: Bug Reporting\7f247825
+Node: MRI\7f254864
+Node: GNU Free Documentation License\7f259507
+Node: LD Index\7f279212
 \1f
 End Tag Table
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtbegin.o b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtbegin.o
new file mode 100644 (file)
index 0000000..dd7dfac
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtbegin.o differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtend.o b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtend.o
new file mode 100644 (file)
index 0000000..b66aa7f
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtend.o differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crti.o b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crti.o
new file mode 100644 (file)
index 0000000..ef47dba
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crti.o differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtn.o b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtn.o
new file mode 100644 (file)
index 0000000..478d123
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtn.o differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/libgcc.a b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/libgcc.a
new file mode 100644 (file)
index 0000000..a499b33
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/libgcc.a differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/libgcov.a b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/libgcov.a
new file mode 100644 (file)
index 0000000..e291f93
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/libgcov.a differ
index da2a777..08f895e 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtbegin.o and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtbegin.o differ
index 710cbb5..30e08a7 100644 (file)
@@ -1,3 +1,15 @@
+/* This administrivia gets added to the beginning of limits.h
+   if the system has its own version of limits.h.  */
+
+/* We use _GCC_LIMITS_H_ because we want this not to match
+   any macros that the system's limits.h uses for its own purposes.  */
+#ifndef _GCC_LIMITS_H_  /* Terminated in limity.h.  */
+#define _GCC_LIMITS_H_
+
+#ifndef _LIBC_LIMITS_H_
+/* Use "..." so that we find syslimits.h only in this same directory.  */
+#include "syslimits.h"
+#endif
 #ifndef _LIMITS_H___
 #define _LIMITS_H___
 
 #endif
 
 #endif /* _LIMITS_H___ */
+/* This administrivia gets added to the end of limits.h
+   if the system has its own version of limits.h.  */
+
+#else /* not _GCC_LIMITS_H_ */
+
+#ifdef _GCC_NEXT_LIMITS_H
+#include_next <limits.h>               /* recurse down to the real one */
+#endif
+
+#endif /* not _GCC_LIMITS_H_ */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/include-fixed/stdio.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/include-fixed/stdio.h
new file mode 100644 (file)
index 0000000..83e6ed7
--- /dev/null
@@ -0,0 +1,446 @@
+/*  DO NOT EDIT THIS FILE.
+
+    It has been auto-edited by fixincludes from:
+
+       "/usr/local/google/home/projects/toolchain/android-toolchain/install_4.4_bin2.19/cupcake_rel_root/usr/include/stdio.h"
+
+    This had to be done to correct non-standard usages in the
+    original, manufacturer supplied header file.  */
+
+/*     $OpenBSD: stdio.h,v 1.35 2006/01/13 18:10:09 miod Exp $ */
+/*     $NetBSD: stdio.h,v 1.18 1996/04/25 18:29:21 jtc Exp $   */
+
+/*-
+ * Copyright (c) 1990 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *     @(#)stdio.h     5.17 (Berkeley) 6/3/91
+ */
+
+#ifndef        _STDIO_H_
+#define        _STDIO_H_
+
+#include <sys/cdefs.h>
+#include <sys/_types.h>
+
+/* __gnuc_va_list and size_t must be defined by stdio.h according to Posix */
+#define __need___va_list
+#include <stdarg.h>
+
+/* note that this forces stddef.h to *only* define size_t */
+#define __need_size_t
+#include <stddef.h>
+
+#include <stddef.h>
+
+#if __BSD_VISIBLE || __POSIX_VISIBLE || __XPG_VISIBLE
+#include <sys/types.h> /* XXX should be removed */
+#endif
+
+#ifndef        _SIZE_T_DEFINED_
+#define        _SIZE_T_DEFINED_
+typedef        unsigned long    size_t;
+#endif
+
+#ifndef        _OFF_T_DEFINED_
+#define        _OFF_T_DEFINED_
+typedef        long    off_t;
+#endif
+
+#ifndef NULL
+#ifdef         __GNUG__
+#define        NULL    __null
+#else
+#define        NULL    0L
+#endif
+#endif
+
+#define        _FSTDIO                 /* Define for new stdio with functions. */
+
+typedef off_t fpos_t;          /* stdio file position type */
+
+/*
+ * NB: to fit things in six character monocase externals, the stdio
+ * code uses the prefix `__s' for stdio objects, typically followed
+ * by a three-character attempt at a mnemonic.
+ */
+
+/* stdio buffers */
+struct __sbuf {
+       unsigned char *_base;
+       int     _size;
+};
+
+/*
+ * stdio state variables.
+ *
+ * The following always hold:
+ *
+ *     if (_flags&(__SLBF|__SWR)) == (__SLBF|__SWR),
+ *             _lbfsize is -_bf._size, else _lbfsize is 0
+ *     if _flags&__SRD, _w is 0
+ *     if _flags&__SWR, _r is 0
+ *
+ * This ensures that the getc and putc macros (or inline functions) never
+ * try to write or read from a file that is in `read' or `write' mode.
+ * (Moreover, they can, and do, automatically switch from read mode to
+ * write mode, and back, on "r+" and "w+" files.)
+ *
+ * _lbfsize is used only to make the inline line-buffered output stream
+ * code as compact as possible.
+ *
+ * _ub, _up, and _ur are used when ungetc() pushes back more characters
+ * than fit in the current _bf, or when ungetc() pushes back a character
+ * that does not match the previous one in _bf.  When this happens,
+ * _ub._base becomes non-nil (i.e., a stream has ungetc() data iff
+ * _ub._base!=NULL) and _up and _ur save the current values of _p and _r.
+ */
+typedef        struct __sFILE {
+       unsigned char *_p;      /* current position in (some) buffer */
+       int     _r;             /* read space left for getc() */
+       int     _w;             /* write space left for putc() */
+       short   _flags;         /* flags, below; this FILE is free if 0 */
+       short   _file;          /* fileno, if Unix descriptor, else -1 */
+       struct  __sbuf _bf;     /* the buffer (at least 1 byte, if !NULL) */
+       int     _lbfsize;       /* 0 or -_bf._size, for inline putc */
+
+       /* operations */
+       void    *_cookie;       /* cookie passed to io functions */
+       int     (*_close)(void *);
+       int     (*_read)(void *, char *, int);
+       fpos_t  (*_seek)(void *, fpos_t, int);
+       int     (*_write)(void *, const char *, int);
+
+       /* extension data, to avoid further ABI breakage */
+       struct  __sbuf _ext;
+       /* data for long sequences of ungetc() */
+       unsigned char *_up;     /* saved _p when _p is doing ungetc data */
+       int     _ur;            /* saved _r when _r is counting ungetc data */
+
+       /* tricks to meet minimum requirements even when malloc() fails */
+       unsigned char _ubuf[3]; /* guarantee an ungetc() buffer */
+       unsigned char _nbuf[1]; /* guarantee a getc() buffer */
+
+       /* separate buffer for fgetln() when line crosses buffer boundary */
+       struct  __sbuf _lb;     /* buffer for fgetln() */
+
+       /* Unix stdio files get aligned to block boundaries on fseek() */
+       int     _blksize;       /* stat.st_blksize (may be != _bf._size) */
+       fpos_t  _offset;        /* current lseek offset */
+} FILE;
+
+__BEGIN_DECLS
+extern FILE __sF[];
+__END_DECLS
+
+#define        __SLBF  0x0001          /* line buffered */
+#define        __SNBF  0x0002          /* unbuffered */
+#define        __SRD   0x0004          /* OK to read */
+#define        __SWR   0x0008          /* OK to write */
+       /* RD and WR are never simultaneously asserted */
+#define        __SRW   0x0010          /* open for reading & writing */
+#define        __SEOF  0x0020          /* found EOF */
+#define        __SERR  0x0040          /* found error */
+#define        __SMBF  0x0080          /* _buf is from malloc */
+#define        __SAPP  0x0100          /* fdopen()ed in append mode */
+#define        __SSTR  0x0200          /* this is an sprintf/snprintf string */
+#define        __SOPT  0x0400          /* do fseek() optimisation */
+#define        __SNPT  0x0800          /* do not do fseek() optimisation */
+#define        __SOFF  0x1000          /* set iff _offset is in fact correct */
+#define        __SMOD  0x2000          /* true => fgetln modified _p text */
+#define        __SALC  0x4000          /* allocate string space dynamically */
+
+/*
+ * The following three definitions are for ANSI C, which took them
+ * from System V, which brilliantly took internal interface macros and
+ * made them official arguments to setvbuf(), without renaming them.
+ * Hence, these ugly _IOxxx names are *supposed* to appear in user code.
+ *
+ * Although numbered as their counterparts above, the implementation
+ * does not rely on this.
+ */
+#define        _IOFBF  0               /* setvbuf should set fully buffered */
+#define        _IOLBF  1               /* setvbuf should set line buffered */
+#define        _IONBF  2               /* setvbuf should set unbuffered */
+
+#define        BUFSIZ  1024            /* size of buffer used by setbuf */
+
+#define        EOF     (-1)
+
+/*
+ * FOPEN_MAX is a minimum maximum, and should be the number of descriptors
+ * that the kernel can provide without allocation of a resource that can
+ * fail without the process sleeping.  Do not use this for anything.
+ */
+#define        FOPEN_MAX       20      /* must be <= OPEN_MAX <sys/syslimits.h> */
+#define        FILENAME_MAX    1024    /* must be <= PATH_MAX <sys/syslimits.h> */
+
+/* System V/ANSI C; this is the wrong way to do this, do *not* use these. */
+#if __BSD_VISIBLE || __XPG_VISIBLE
+#define        P_tmpdir        "/tmp/"
+#endif
+#define        L_tmpnam        1024    /* XXX must be == PATH_MAX */
+#define        TMP_MAX         308915776
+
+#ifndef SEEK_SET
+#define        SEEK_SET        0       /* set file offset to offset */
+#endif
+#ifndef SEEK_CUR
+#define        SEEK_CUR        1       /* set file offset to current plus offset */
+#endif
+#ifndef SEEK_END
+#define        SEEK_END        2       /* set file offset to EOF plus offset */
+#endif
+
+#define        stdin   (&__sF[0])
+#define        stdout  (&__sF[1])
+#define        stderr  (&__sF[2])
+
+/*
+ * Functions defined in ANSI C standard.
+ */
+__BEGIN_DECLS
+void    clearerr(FILE *);
+int     fclose(FILE *);
+int     feof(FILE *);
+int     ferror(FILE *);
+int     fflush(FILE *);
+int     fgetc(FILE *);
+int     fgetpos(FILE *, fpos_t *);
+char   *fgets(char *, int, FILE *);
+FILE   *fopen(const char *, const char *);
+int     fprintf(FILE *, const char *, ...);
+int     fputc(int, FILE *);
+int     fputs(const char *, FILE *);
+size_t  fread(void *, size_t, size_t, FILE *);
+FILE   *freopen(const char *, const char *, FILE *);
+int     fscanf(FILE *, const char *, ...);
+int     fseek(FILE *, long, int);
+int     fseeko(FILE *, off_t, int);
+int     fsetpos(FILE *, const fpos_t *);
+long    ftell(FILE *);
+off_t   ftello(FILE *);
+size_t  fwrite(const void *, size_t, size_t, FILE *);
+int     getc(FILE *);
+int     getchar(void);
+char   *gets(char *);
+#if __BSD_VISIBLE && !defined(__SYS_ERRLIST)
+#define __SYS_ERRLIST
+
+extern int sys_nerr;                   /* perror(3) external variables */
+extern char *sys_errlist[];
+#endif
+void    perror(const char *);
+int     printf(const char *, ...);
+int     putc(int, FILE *);
+int     putchar(int);
+int     puts(const char *);
+int     remove(const char *);
+int     rename(const char *, const char *);
+void    rewind(FILE *);
+int     scanf(const char *, ...);
+void    setbuf(FILE *, char *);
+int     setvbuf(FILE *, char *, int, size_t);
+int     sprintf(char *, const char *, ...);
+int     sscanf(const char *, const char *, ...);
+FILE   *tmpfile(void);
+char   *tmpnam(char *);
+int     ungetc(int, FILE *);
+int     vfprintf(FILE *, const char *, __gnuc_va_list);
+int     vprintf(const char *, __gnuc_va_list);
+int     vsprintf(char *, const char *, __gnuc_va_list);
+
+#if __ISO_C_VISIBLE >= 1999 || __BSD_VISIBLE
+int     snprintf(char *, size_t, const char *, ...)
+               __attribute__((__format__ (printf, 3, 4)))
+               __attribute__((__nonnull__ (3)));
+int     vfscanf(FILE *, const char *, __gnuc_va_list)
+               __attribute__((__format__ (scanf, 2, 0)))
+               __attribute__((__nonnull__ (2)));
+int     vscanf(const char *, __gnuc_va_list)
+               __attribute__((__format__ (scanf, 1, 0)))
+               __attribute__((__nonnull__ (1)));
+int     vsnprintf(char *, size_t, const char *, __gnuc_va_list)
+               __attribute__((__format__ (printf, 3, 0)))
+               __attribute__((__nonnull__ (3)));
+int     vsscanf(const char *, const char *, __gnuc_va_list)
+               __attribute__((__format__ (scanf, 2, 0)))
+               __attribute__((__nonnull__ (2)));
+#endif /* __ISO_C_VISIBLE >= 1999 || __BSD_VISIBLE */
+
+__END_DECLS
+
+
+/*
+ * Functions defined in POSIX 1003.1.
+ */
+#if __BSD_VISIBLE || __POSIX_VISIBLE || __XPG_VISIBLE
+#define        L_ctermid       1024    /* size for ctermid(); PATH_MAX */
+#define L_cuserid      9       /* size for cuserid(); UT_NAMESIZE + 1 */
+
+__BEGIN_DECLS
+char   *ctermid(char *);
+char   *cuserid(char *);
+FILE   *fdopen(int, const char *);
+int     fileno(FILE *);
+
+#if (__POSIX_VISIBLE >= 199209) || 1 /* ANDROID: Bionic does include this */
+int     pclose(FILE *);
+FILE   *popen(const char *, const char *);
+#endif
+
+#if __POSIX_VISIBLE >= 199506
+void    flockfile(FILE *);
+int     ftrylockfile(FILE *);
+void    funlockfile(FILE *);
+
+/*
+ * These are normally used through macros as defined below, but POSIX
+ * requires functions as well.
+ */
+int     getc_unlocked(FILE *);
+int     getchar_unlocked(void);
+int     putc_unlocked(int, FILE *);
+int     putchar_unlocked(int);
+#endif /* __POSIX_VISIBLE >= 199506 */
+
+#if __XPG_VISIBLE
+char   *tempnam(const char *, const char *);
+#endif
+__END_DECLS
+
+#endif /* __BSD_VISIBLE || __POSIX_VISIBLE || __XPG_VISIBLE */
+
+/*
+ * Routines that are purely local.
+ */
+#if __BSD_VISIBLE
+__BEGIN_DECLS
+int     asprintf(char **, const char *, ...)
+               __attribute__((__format__ (printf, 2, 3)))
+               __attribute__((__nonnull__ (2)));
+char   *fgetln(FILE *, size_t *);
+int     fpurge(FILE *);
+int     getw(FILE *);
+int     putw(int, FILE *);
+void    setbuffer(FILE *, char *, int);
+int     setlinebuf(FILE *);
+int     vasprintf(char **, const char *, __gnuc_va_list)
+               __attribute__((__format__ (printf, 2, 0)))
+               __attribute__((__nonnull__ (2)));
+__END_DECLS
+
+/*
+ * Stdio function-access interface.
+ */
+__BEGIN_DECLS
+FILE   *funopen(const void *,
+               int (*)(void *, char *, int),
+               int (*)(void *, const char *, int),
+               fpos_t (*)(void *, fpos_t, int),
+               int (*)(void *));
+__END_DECLS
+#define        fropen(cookie, fn) funopen(cookie, fn, 0, 0, 0)
+#define        fwopen(cookie, fn) funopen(cookie, 0, fn, 0, 0)
+#endif /* __BSD_VISIBLE */
+
+/*
+ * Functions internal to the implementation.
+ */
+__BEGIN_DECLS
+int    __srget(FILE *);
+int    __swbuf(int, FILE *);
+__END_DECLS
+
+/*
+ * The __sfoo macros are here so that we can
+ * define function versions in the C library.
+ */
+#define        __sgetc(p) (--(p)->_r < 0 ? __srget(p) : (int)(*(p)->_p++))
+#if defined(__GNUC__)
+static __inline int __sputc(int _c, FILE *_p) {
+       if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
+               return (*_p->_p++ = _c);
+       else
+               return (__swbuf(_c, _p));
+}
+#else
+/*
+ * This has been tuned to generate reasonable code on the vax using pcc.
+ */
+#define        __sputc(c, p) \
+       (--(p)->_w < 0 ? \
+               (p)->_w >= (p)->_lbfsize ? \
+                       (*(p)->_p = (c)), *(p)->_p != '\n' ? \
+                               (int)*(p)->_p++ : \
+                               __swbuf('\n', p) : \
+                       __swbuf((int)(c), p) : \
+               (*(p)->_p = (c), (int)*(p)->_p++))
+#endif
+
+#define        __sfeof(p)      (((p)->_flags & __SEOF) != 0)
+#define        __sferror(p)    (((p)->_flags & __SERR) != 0)
+#define        __sclearerr(p)  ((void)((p)->_flags &= ~(__SERR|__SEOF)))
+#define        __sfileno(p)    ((p)->_file)
+
+#define        feof(p)         __sfeof(p)
+#define        ferror(p)       __sferror(p)
+
+#ifndef _POSIX_THREADS
+#define        clearerr(p)     __sclearerr(p)
+#endif
+
+#if __POSIX_VISIBLE
+#define        fileno(p)       __sfileno(p)
+#endif
+
+#ifndef lint
+#ifndef _POSIX_THREADS
+#define        getc(fp)        __sgetc(fp)
+#endif /* _POSIX_THREADS */
+#define        getc_unlocked(fp)       __sgetc(fp)
+/*
+ * The macro implementations of putc and putc_unlocked are not
+ * fully POSIX compliant; they do not set errno on failure
+ */
+#if __BSD_VISIBLE
+#ifndef _POSIX_THREADS
+#define putc(x, fp)    __sputc(x, fp)
+#endif /* _POSIX_THREADS */
+#define putc_unlocked(x, fp)   __sputc(x, fp)
+#endif /* __BSD_VISIBLE */
+#endif /* lint */
+
+#define        getchar()       getc(stdin)
+#define        putchar(x)      putc(x, stdout)
+#define getchar_unlocked()     getc_unlocked(stdin)
+#define putchar_unlocked(c)    putc_unlocked(c, stdout)
+
+#endif /* _STDIO_H_ */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/include-fixed/sys/types.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/include-fixed/sys/types.h
new file mode 100644 (file)
index 0000000..351dacb
--- /dev/null
@@ -0,0 +1,138 @@
+/*  DO NOT EDIT THIS FILE.
+
+    It has been auto-edited by fixincludes from:
+
+       "/usr/local/google/home/projects/toolchain/android-toolchain/install_4.4_bin2.19/cupcake_rel_root/usr/include/sys/types.h"
+
+    This had to be done to correct non-standard usages in the
+    original, manufacturer supplied header file.  */
+
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _SYS_TYPES_H_
+#define _SYS_TYPES_H_
+
+#define __need_size_t
+#define __need_ptrdiff_t
+#include <stddef.h>
+#include <stdint.h>
+#include <sys/cdefs.h>
+
+#include <linux/posix_types.h>
+#include <asm/types.h>
+#include <linux/types.h>
+#include <machine/kernel.h>
+
+typedef __u32    __kernel_dev_t;
+
+/* be careful with __kernel_gid_t and __kernel_uid_t
+ * these are defined as 16-bit for legacy reason, but
+ * the kernel uses 32-bits instead.
+ *
+ * 32-bit valuea are required for Android, so use
+ * __kernel_uid32_t and __kernel_gid32_t
+ */
+
+typedef __kernel_blkcnt_t    blkcnt_t;
+typedef __kernel_blksize_t   blksize_t;
+typedef __kernel_clock_t     clock_t;
+typedef __kernel_clockid_t   clockid_t;
+typedef __kernel_dev_t       dev_t;
+typedef __kernel_fsblkcnt_t  fsblkcnt_t;
+typedef __kernel_fsfilcnt_t  fsfilcnt_t;
+typedef __kernel_gid32_t     gid_t;
+typedef __kernel_id_t        id_t;
+typedef __kernel_ino_t       ino_t;
+typedef __kernel_key_t       key_t;
+typedef __kernel_mode_t      mode_t;
+typedef __kernel_nlink_t        nlink_t;
+#define _OFF_T_DEFINED_
+typedef __kernel_off_t       off_t;
+typedef __kernel_loff_t      loff_t;
+typedef loff_t               off64_t;  /* GLibc-specific */
+
+typedef __kernel_pid_t          pid_t;
+
+/* while POSIX wants these in <sys/types.h>, we
+ * declare then in <pthread.h> instead */
+#if 0
+typedef  .... pthread_attr_t;
+typedef  .... pthread_cond_t;
+typedef  .... pthread_condattr_t;
+typedef  .... pthread_key_t;
+typedef  .... pthread_mutex_t;
+typedef  .... pthread_once_t;
+typedef  .... pthread_rwlock_t;
+typedef  .... pthread_rwlock_attr_t;
+typedef  .... pthread_t;
+#endif
+
+#ifndef _SIZE_T_DEFINED_
+#define _SIZE_T_DEFINED_
+#if !defined(_GCC_SIZE_T)
+#define _GCC_SIZE_T
+typedef __SIZE_TYPE__ size_t;
+#endif
+
+#endif
+
+/* size_t is defined by the GCC-specific <stddef.h> */
+#ifndef _SSIZE_T_DEFINED_
+#define _SSIZE_T_DEFINED_
+typedef long int  ssize_t;
+#endif
+
+typedef __kernel_suseconds_t  suseconds_t;
+typedef __kernel_time_t       time_t;
+typedef __kernel_uid32_t        uid_t;
+typedef signed long           useconds_t;
+
+typedef __kernel_daddr_t       daddr_t;
+typedef __kernel_timer_t       timer_t;
+typedef __kernel_mqd_t         mqd_t;
+
+typedef __kernel_caddr_t    caddr_t;
+typedef unsigned int        uint_t;
+typedef unsigned int        uint;
+
+/* for some applications */
+#include <sys/sysmacros.h>
+
+#ifdef __BSD_VISIBLE
+typedef        unsigned char   u_char;
+typedef        unsigned short  u_short;
+typedef        unsigned int    u_int;
+typedef        unsigned long   u_long;
+
+typedef uint32_t       u_int32_t;
+typedef uint16_t       u_int16_t;
+typedef uint8_t        u_int8_t;
+typedef uint64_t       u_int64_t;
+#endif
+
+#endif
index 710cbb5..30e08a7 100644 (file)
@@ -1,3 +1,15 @@
+/* This administrivia gets added to the beginning of limits.h
+   if the system has its own version of limits.h.  */
+
+/* We use _GCC_LIMITS_H_ because we want this not to match
+   any macros that the system's limits.h uses for its own purposes.  */
+#ifndef _GCC_LIMITS_H_  /* Terminated in limity.h.  */
+#define _GCC_LIMITS_H_
+
+#ifndef _LIBC_LIMITS_H_
+/* Use "..." so that we find syslimits.h only in this same directory.  */
+#include "syslimits.h"
+#endif
 #ifndef _LIMITS_H___
 #define _LIMITS_H___
 
 #endif
 
 #endif /* _LIMITS_H___ */
+/* This administrivia gets added to the end of limits.h
+   if the system has its own version of limits.h.  */
+
+#else /* not _GCC_LIMITS_H_ */
+
+#ifdef _GCC_NEXT_LIMITS_H
+#include_next <limits.h>               /* recurse down to the real one */
+#endif
+
+#endif /* not _GCC_LIMITS_H_ */
index f67cd86..17779d9 100644 (file)
@@ -1,4 +1,4 @@
-SYSTEM_HEADER_DIR="/usr/local/google/home/projects/toolchain/android-toolchain/install_4.4_checkin/install/arm-eabi/sys-include"
+SYSTEM_HEADER_DIR="/usr/local/google/home/projects/toolchain/android-toolchain/install_4.4_bin2.19/cupcake_rel_root${sysroot_headers_suffix}/usr/include"
 OTHER_FIXINCLUDES_DIRS=""
 FIXPROTO_DEFINES=""
 STMP_FIXPROTO=""
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtbegin.o b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtbegin.o
new file mode 100644 (file)
index 0000000..08f895e
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtbegin.o differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtend.o b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtend.o
new file mode 100644 (file)
index 0000000..59e1f9b
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtend.o differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crti.o b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crti.o
new file mode 100644 (file)
index 0000000..ef47dba
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crti.o differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtn.o b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtn.o
new file mode 100644 (file)
index 0000000..478d123
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtn.o differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/libgcc.a b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/libgcc.a
new file mode 100644 (file)
index 0000000..c119d59
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/libgcc.a differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/libgcov.a b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/libgcov.a
new file mode 100644 (file)
index 0000000..ea2b706
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/libgcov.a differ
index a2084b9..e294807 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/libgcc.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/libgcc.a differ
index 705ecee..afcf389 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/libgcov.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/libgcov.a differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/ada/gcc-interface/ada-tree.def b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/ada/gcc-interface/ada-tree.def
new file mode 100644 (file)
index 0000000..04643c5
--- /dev/null
@@ -0,0 +1,89 @@
+/****************************************************************************
+ *                                                                          *
+ *                         GNAT COMPILER COMPONENTS                         *
+ *                                                                          *
+ *                       GNAT-SPECIFIC GCC TREE CODES                       *
+ *                                                                          *
+ *                              Specification                               *
+ *                                                                          *
+ *            Copyright (C) 1992-2008, Free Software Foundation, Inc.       *
+ *                                                                          *
+ * GNAT is free software;  you can  redistribute it  and/or modify it under *
+ * terms of the  GNU General Public License as published  by the Free Soft- *
+ * ware  Foundation;  either version 3,  or (at your option) any later ver- *
+ * sion.  GNAT is distributed in the hope that it will be useful, but WITH- *
+ * OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY *
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License *
+ * for  more details.  You should have received a copy of the GNU General   *
+ * Public License along with GCC; see the file COPYING3.  If not see        *
+ * <http://www.gnu.org/licenses/>.                                          *
+ *                                                                          *
+ * GNAT was originally developed  by the GNAT team at  New York University. *
+ * Extensive contributions were provided by Ada Core Technologies Inc.      *
+ *                                                                          *
+ ****************************************************************************/
+
+/* A type that is an unconstrained array itself.  This node is never passed
+   to GCC. TREE_TYPE is the type of the fat pointer and TYPE_OBJECT_RECORD_TYPE
+   is the type of a record containing the template and data.  */
+
+DEFTREECODE (UNCONSTRAINED_ARRAY_TYPE, "unconstrained_array_type", tcc_type, 0)
+
+/* A reference to an unconstrained array.  This node only exists as an
+   intermediate node during the translation of a GNAT tree to a GCC tree;
+   it is never passed to GCC.  The only field used is operand 0, which
+   is the fat pointer object.  */
+
+DEFTREECODE (UNCONSTRAINED_ARRAY_REF, "unconstrained_array_ref",
+           tcc_reference, 1)
+
+/* An expression that returns an RTL suitable for its type.  Operand 0
+   is an expression to be evaluated for side effects only.  */
+DEFTREECODE (NULL_EXPR, "null_expr", tcc_expression, 1)
+
+/* Same as PLUS_EXPR, except that no modulo reduction is applied.
+   This is used for loops and never shows up in the tree.  */
+DEFTREECODE (PLUS_NOMOD_EXPR, "plus_nomod_expr", tcc_binary, 2)
+
+/* Same as MINUS_EXPR, except that no modulo reduction is applied.
+   This is used for loops and never shows up in the tree.  */
+DEFTREECODE (MINUS_NOMOD_EXPR, "minus_nomod_expr", tcc_binary, 2)
+
+/* Same as ADDR_EXPR, except that if the operand represents a bit field,
+   return the address of the byte containing the bit.  This is used
+   for the 'Address attribute and never shows up in the tree.  */
+DEFTREECODE (ATTR_ADDR_EXPR, "attr_addr_expr", tcc_reference, 1)
+
+/* Here are the tree codes for the statement types known to Ada.  These
+   must be at the end of this file to allow IS_ADA_STMT to work.  */
+
+/* This is how record_code_position and insert_code_for work.  The former
+   makes this tree node, whose operand is a statement.  The latter inserts
+   the actual statements into this node.  Gimplification consists of
+   just returning the inner statement.  */
+DEFTREECODE (STMT_STMT, "stmt_stmt", tcc_statement, 1)
+
+/* A loop.  LOOP_STMT_TOP_COND and LOOP_STMT_BOT_COND are the tests to exit a
+   loop at the top and bottom, respectively.  LOOP_STMT_UPDATE is the statement
+   to update the loop iterator at the continue point.  LOOP_STMT_BODY are the
+   statements in the body of the loop.  LOOP_STMT_LABEL points to the LABEL_DECL
+   of the end label of the loop.  */
+DEFTREECODE (LOOP_STMT, "loop_stmt", tcc_statement, 5)
+
+/* Conditionally exit a loop.  EXIT_STMT_COND is the condition, which, if
+   true, will cause the loop to be exited.  If no condition is specified,
+   the loop is unconditionally exited.  EXIT_STMT_LABEL is the end label
+   corresponding to the loop to exit.  */
+DEFTREECODE (EXIT_STMT, "exit_stmt", tcc_statement, 2)
+
+/* A exception region.  REGION_STMT_BODY is the statement to be executed
+   inside the region.  REGION_STMT_HANDLE is a statement that represents
+   the exception handlers (usually a BLOCK_STMT of HANDLE_STMTs).
+   REGION_STMT_BLOCK is the BLOCK node for the declarative region, if any.  */
+DEFTREECODE (REGION_STMT, "region_stmt", tcc_statement, 3)
+
+/* An exception handler.  HANDLER_STMT_ARG is the value to pass to 
+   expand_start_catch, HANDLER_STMT_LIST is the list of statements for the
+   handler itself, and HANDLER_STMT_BLOCK is the BLOCK node for this
+   binding. */
+DEFTREECODE (HANDLER_STMT, "handler_stmt", tcc_statement, 3)
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/alias.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/alias.h
new file mode 100644 (file)
index 0000000..c760392
--- /dev/null
@@ -0,0 +1,53 @@
+/* Exported functions from alias.c
+   Copyright (C) 2004, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_ALIAS_H
+#define GCC_ALIAS_H
+
+#include "coretypes.h"
+
+/* The type of an alias set.  Code currently assumes that variables of
+   this type can take the values 0 (the alias set which aliases
+   everything) and -1 (sometimes indicating that the alias set is
+   unknown, sometimes indicating a memory barrier) and -2 (indicating
+   that the alias set should be set to a unique value but has not been
+   set yet).  */
+typedef int alias_set_type;
+
+extern alias_set_type new_alias_set (void);
+extern alias_set_type get_alias_set (tree);
+extern alias_set_type get_varargs_alias_set (void);
+extern alias_set_type get_frame_alias_set (void);
+extern bool component_uses_parent_alias_set (const_tree);
+extern bool alias_set_subset_of (alias_set_type, alias_set_type);
+extern void record_alias_subset (alias_set_type, alias_set_type);
+extern void record_component_aliases (tree);
+extern int alias_sets_conflict_p (alias_set_type, alias_set_type);
+extern int alias_sets_must_conflict_p (alias_set_type, alias_set_type);
+extern int objects_must_conflict_p (tree, tree);
+extern int nonoverlapping_memrefs_p (const_rtx, const_rtx);
+extern bool insn_alias_sets_conflict_p (rtx, rtx);
+
+/* This alias set can be used to force a memory to conflict with all
+   other memories, creating a barrier across which no memory reference
+   can move.  Note that there are other legacy ways to create such
+   memory barriers, including an address of SCRATCH.  */
+#define ALIAS_SET_MEMORY_BARRIER       ((alias_set_type) -1)
+
+#endif /* GCC_ALIAS_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/all-tree.def b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/all-tree.def
new file mode 100644 (file)
index 0000000..76dfbc3
--- /dev/null
@@ -0,0 +1,7 @@
+#include "tree.def"
+END_OF_BASE_TREE_CODES
+#include "c-common.def"
+#include "ada/gcc-interface/ada-tree.def"
+#include "cp/cp-tree.def"
+#include "java/java-tree.def"
+#include "objc/objc-tree.def"
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/ansidecl.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/ansidecl.h
new file mode 100644 (file)
index 0000000..c19955a
--- /dev/null
@@ -0,0 +1,393 @@
+/* ANSI and traditional C compatability macros
+   Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+   Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/* ANSI and traditional C compatibility macros
+
+   ANSI C is assumed if __STDC__ is #defined.
+
+   Macro               ANSI C definition       Traditional C definition
+   -----               ---- - ----------       ----------- - ----------
+   ANSI_PROTOTYPES     1                       not defined
+   PTR                 `void *'                `char *'
+   PTRCONST            `void *const'           `char *'
+   LONG_DOUBLE         `long double'           `double'
+   const               not defined             `'
+   volatile            not defined             `'
+   signed              not defined             `'
+   VA_START(ap, var)   va_start(ap, var)       va_start(ap)
+
+   Note that it is safe to write "void foo();" indicating a function
+   with no return value, in all K+R compilers we have been able to test.
+
+   For declaring functions with prototypes, we also provide these:
+
+   PARAMS ((prototype))
+   -- for functions which take a fixed number of arguments.  Use this
+   when declaring the function.  When defining the function, write a
+   K+R style argument list.  For example:
+
+       char *strcpy PARAMS ((char *dest, char *source));
+       ...
+       char *
+       strcpy (dest, source)
+            char *dest;
+            char *source;
+       { ... }
+
+
+   VPARAMS ((prototype, ...))
+   -- for functions which take a variable number of arguments.  Use
+   PARAMS to declare the function, VPARAMS to define it.  For example:
+
+       int printf PARAMS ((const char *format, ...));
+       ...
+       int
+       printf VPARAMS ((const char *format, ...))
+       {
+          ...
+       }
+
+   For writing functions which take variable numbers of arguments, we
+   also provide the VA_OPEN, VA_CLOSE, and VA_FIXEDARG macros.  These
+   hide the differences between K+R <varargs.h> and C89 <stdarg.h> more
+   thoroughly than the simple VA_START() macro mentioned above.
+
+   VA_OPEN and VA_CLOSE are used *instead of* va_start and va_end.
+   Immediately after VA_OPEN, put a sequence of VA_FIXEDARG calls
+   corresponding to the list of fixed arguments.  Then use va_arg
+   normally to get the variable arguments, or pass your va_list object
+   around.  You do not declare the va_list yourself; VA_OPEN does it
+   for you.
+
+   Here is a complete example:
+
+       int
+       printf VPARAMS ((const char *format, ...))
+       {
+          int result;
+
+          VA_OPEN (ap, format);
+          VA_FIXEDARG (ap, const char *, format);
+
+          result = vfprintf (stdout, format, ap);
+          VA_CLOSE (ap);
+
+          return result;
+       }
+
+
+   You can declare variables either before or after the VA_OPEN,
+   VA_FIXEDARG sequence.  Also, VA_OPEN and VA_CLOSE are the beginning
+   and end of a block.  They must appear at the same nesting level,
+   and any variables declared after VA_OPEN go out of scope at
+   VA_CLOSE.  Unfortunately, with a K+R compiler, that includes the
+   argument list.  You can have multiple instances of VA_OPEN/VA_CLOSE
+   pairs in a single function in case you need to traverse the
+   argument list more than once.
+
+   For ease of writing code which uses GCC extensions but needs to be
+   portable to other compilers, we provide the GCC_VERSION macro that
+   simplifies testing __GNUC__ and __GNUC_MINOR__ together, and various
+   wrappers around __attribute__.  Also, __extension__ will be #defined
+   to nothing if it doesn't work.  See below.
+
+   This header also defines a lot of obsolete macros:
+   CONST, VOLATILE, SIGNED, PROTO, EXFUN, DEFUN, DEFUN_VOID,
+   AND, DOTS, NOARGS.  Don't use them.  */
+
+#ifndef        _ANSIDECL_H
+#define _ANSIDECL_H    1
+
+/* Every source file includes this file,
+   so they will all get the switch for lint.  */
+/* LINTLIBRARY */
+
+/* Using MACRO(x,y) in cpp #if conditionals does not work with some
+   older preprocessors.  Thus we can't define something like this:
+
+#define HAVE_GCC_VERSION(MAJOR, MINOR) \
+  (__GNUC__ > (MAJOR) || (__GNUC__ == (MAJOR) && __GNUC_MINOR__ >= (MINOR)))
+
+and then test "#if HAVE_GCC_VERSION(2,7)".
+
+So instead we use the macro below and test it against specific values.  */
+
+/* This macro simplifies testing whether we are using gcc, and if it
+   is of a particular minimum version. (Both major & minor numbers are
+   significant.)  This macro will evaluate to 0 if we are not using
+   gcc at all.  */
+#ifndef GCC_VERSION
+#define GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__)
+#endif /* GCC_VERSION */
+
+#if defined (__STDC__) || defined (_AIX) || (defined (__mips) && defined (_SYSTYPE_SVR4)) || defined(_WIN32) || (defined(__alpha) && defined(__cplusplus))
+/* All known AIX compilers implement these things (but don't always
+   define __STDC__).  The RISC/OS MIPS compiler defines these things
+   in SVR4 mode, but does not define __STDC__.  */
+/* eraxxon@alumni.rice.edu: The Compaq C++ compiler, unlike many other
+   C++ compilers, does not define __STDC__, though it acts as if this
+   was so. (Verified versions: 5.7, 6.2, 6.3, 6.5) */
+
+#define ANSI_PROTOTYPES        1
+#define PTR            void *
+#define PTRCONST       void *const
+#define LONG_DOUBLE    long double
+
+/* PARAMS is often defined elsewhere (e.g. by libintl.h), so wrap it in
+   a #ifndef.  */
+#ifndef PARAMS
+#define PARAMS(ARGS)           ARGS
+#endif
+
+#define VPARAMS(ARGS)          ARGS
+#define VA_START(VA_LIST, VAR) va_start(VA_LIST, VAR)
+
+/* variadic function helper macros */
+/* "struct Qdmy" swallows the semicolon after VA_OPEN/VA_FIXEDARG's
+   use without inhibiting further decls and without declaring an
+   actual variable.  */
+#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
+
+/* inline requires special treatment; it's in C99, and GCC >=2.7 supports
+   it too, but it's not in C89.  */
+#undef inline
+#if __STDC_VERSION__ > 199901L
+/* it's a keyword */
+#else
+# if GCC_VERSION >= 2007
+#  define inline __inline__   /* __inline__ prevents -pedantic warnings */
+# else
+#  define inline  /* nothing */
+# endif
+#endif
+
+/* These are obsolete.  Do not use.  */
+#ifndef IN_GCC
+#define CONST          const
+#define VOLATILE       volatile
+#define SIGNED         signed
+
+#define PROTO(type, name, arglist)     type name arglist
+#define EXFUN(name, proto)             name proto
+#define DEFUN(name, arglist, args)     name(args)
+#define DEFUN_VOID(name)               name(void)
+#define AND            ,
+#define DOTS           , ...
+#define NOARGS         void
+#endif /* ! IN_GCC */
+
+#else  /* Not ANSI C.  */
+
+#undef  ANSI_PROTOTYPES
+#define PTR            char *
+#define PTRCONST       PTR
+#define LONG_DOUBLE    double
+
+#define PARAMS(args)           ()
+#define VPARAMS(args)          (va_alist) va_dcl
+#define VA_START(va_list, var) va_start(va_list)
+
+#define VA_OPEN(AP, VAR)               { va_list AP; va_start(AP); { struct Qdmy
+#define VA_CLOSE(AP)                   } va_end(AP); }
+#define VA_FIXEDARG(AP, TYPE, NAME)    TYPE NAME = va_arg(AP, TYPE)
+
+/* some systems define these in header files for non-ansi mode */
+#undef const
+#undef volatile
+#undef signed
+#undef inline
+#define const
+#define volatile
+#define signed
+#define inline
+
+#ifndef IN_GCC
+#define CONST
+#define VOLATILE
+#define SIGNED
+
+#define PROTO(type, name, arglist)     type name ()
+#define EXFUN(name, proto)             name()
+#define DEFUN(name, arglist, args)     name arglist args;
+#define DEFUN_VOID(name)               name()
+#define AND            ;
+#define DOTS
+#define NOARGS
+#endif /* ! IN_GCC */
+
+#endif /* ANSI C.  */
+
+/* Define macros for some gcc attributes.  This permits us to use the
+   macros freely, and know that they will come into play for the
+   version of gcc in which they are supported.  */
+
+#if (GCC_VERSION < 2007)
+# define __attribute__(x)
+#endif
+
+/* Attribute __malloc__ on functions was valid as of gcc 2.96. */
+#ifndef ATTRIBUTE_MALLOC
+# if (GCC_VERSION >= 2096)
+#  define ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
+# else
+#  define ATTRIBUTE_MALLOC
+# endif /* GNUC >= 2.96 */
+#endif /* ATTRIBUTE_MALLOC */
+
+/* Attributes on labels were valid as of gcc 2.93. */
+#ifndef ATTRIBUTE_UNUSED_LABEL
+# if (!defined (__cplusplus) && GCC_VERSION >= 2093)
+#  define ATTRIBUTE_UNUSED_LABEL ATTRIBUTE_UNUSED
+# else
+#  define ATTRIBUTE_UNUSED_LABEL
+# endif /* !__cplusplus && GNUC >= 2.93 */
+#endif /* ATTRIBUTE_UNUSED_LABEL */
+
+#ifndef ATTRIBUTE_UNUSED
+#define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+#endif /* ATTRIBUTE_UNUSED */
+
+/* Before GCC 3.4, the C++ frontend couldn't parse attributes placed after the
+   identifier name.  */
+#if ! defined(__cplusplus) || (GCC_VERSION >= 3004)
+# define ARG_UNUSED(NAME) NAME ATTRIBUTE_UNUSED
+#else /* !__cplusplus || GNUC >= 3.4 */
+# define ARG_UNUSED(NAME) NAME
+#endif /* !__cplusplus || GNUC >= 3.4 */
+
+#ifndef ATTRIBUTE_NORETURN
+#define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
+#endif /* ATTRIBUTE_NORETURN */
+
+/* Attribute `nonnull' was valid as of gcc 3.3.  */
+#ifndef ATTRIBUTE_NONNULL
+# if (GCC_VERSION >= 3003)
+#  define ATTRIBUTE_NONNULL(m) __attribute__ ((__nonnull__ (m)))
+# else
+#  define ATTRIBUTE_NONNULL(m)
+# endif /* GNUC >= 3.3 */
+#endif /* ATTRIBUTE_NONNULL */
+
+/* Attribute `pure' was valid as of gcc 3.0.  */
+#ifndef ATTRIBUTE_PURE
+# if (GCC_VERSION >= 3000)
+#  define ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+#  define ATTRIBUTE_PURE
+# endif /* GNUC >= 3.0 */
+#endif /* ATTRIBUTE_PURE */
+
+/* Use ATTRIBUTE_PRINTF when the format specifier must not be NULL.
+   This was the case for the `printf' format attribute by itself
+   before GCC 3.3, but as of 3.3 we need to add the `nonnull'
+   attribute to retain this behavior.  */
+#ifndef ATTRIBUTE_PRINTF
+#define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n))) ATTRIBUTE_NONNULL(m)
+#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)
+#endif /* ATTRIBUTE_PRINTF */
+
+/* Use ATTRIBUTE_FPTR_PRINTF when the format attribute is to be set on
+   a function pointer.  Format attributes were allowed on function
+   pointers as of gcc 3.1.  */
+#ifndef ATTRIBUTE_FPTR_PRINTF
+# if (GCC_VERSION >= 3001)
+#  define ATTRIBUTE_FPTR_PRINTF(m, n) ATTRIBUTE_PRINTF(m, n)
+# else
+#  define ATTRIBUTE_FPTR_PRINTF(m, n)
+# endif /* GNUC >= 3.1 */
+# define ATTRIBUTE_FPTR_PRINTF_1 ATTRIBUTE_FPTR_PRINTF(1, 2)
+# define ATTRIBUTE_FPTR_PRINTF_2 ATTRIBUTE_FPTR_PRINTF(2, 3)
+# define ATTRIBUTE_FPTR_PRINTF_3 ATTRIBUTE_FPTR_PRINTF(3, 4)
+# define ATTRIBUTE_FPTR_PRINTF_4 ATTRIBUTE_FPTR_PRINTF(4, 5)
+# define ATTRIBUTE_FPTR_PRINTF_5 ATTRIBUTE_FPTR_PRINTF(5, 6)
+#endif /* ATTRIBUTE_FPTR_PRINTF */
+
+/* Use ATTRIBUTE_NULL_PRINTF when the format specifier may be NULL.  A
+   NULL format specifier was allowed as of gcc 3.3.  */
+#ifndef ATTRIBUTE_NULL_PRINTF
+# if (GCC_VERSION >= 3003)
+#  define ATTRIBUTE_NULL_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n)))
+# else
+#  define ATTRIBUTE_NULL_PRINTF(m, n)
+# endif /* GNUC >= 3.3 */
+# define ATTRIBUTE_NULL_PRINTF_1 ATTRIBUTE_NULL_PRINTF(1, 2)
+# define ATTRIBUTE_NULL_PRINTF_2 ATTRIBUTE_NULL_PRINTF(2, 3)
+# define ATTRIBUTE_NULL_PRINTF_3 ATTRIBUTE_NULL_PRINTF(3, 4)
+# define ATTRIBUTE_NULL_PRINTF_4 ATTRIBUTE_NULL_PRINTF(4, 5)
+# define ATTRIBUTE_NULL_PRINTF_5 ATTRIBUTE_NULL_PRINTF(5, 6)
+#endif /* ATTRIBUTE_NULL_PRINTF */
+
+/* Attribute `sentinel' was valid as of gcc 3.5.  */
+#ifndef ATTRIBUTE_SENTINEL
+# if (GCC_VERSION >= 3005)
+#  define ATTRIBUTE_SENTINEL __attribute__ ((__sentinel__))
+# else
+#  define ATTRIBUTE_SENTINEL
+# endif /* GNUC >= 3.5 */
+#endif /* ATTRIBUTE_SENTINEL */
+
+
+#ifndef ATTRIBUTE_ALIGNED_ALIGNOF
+# if (GCC_VERSION >= 3000)
+#  define ATTRIBUTE_ALIGNED_ALIGNOF(m) __attribute__ ((__aligned__ (__alignof__ (m))))
+# else
+#  define ATTRIBUTE_ALIGNED_ALIGNOF(m)
+# endif /* GNUC >= 3.0 */
+#endif /* ATTRIBUTE_ALIGNED_ALIGNOF */
+
+/* Useful for structures whose layout must much some binary specification
+   regardless of the alignment and padding qualities of the compiler.  */
+#ifndef ATTRIBUTE_PACKED
+# define ATTRIBUTE_PACKED __attribute__ ((packed))
+#endif
+
+/* Attribute `hot' and `cold' was valid as of gcc 4.3.  */
+#ifndef ATTRIBUTE_COLD
+# if (GCC_VERSION >= 4003)
+#  define ATTRIBUTE_COLD __attribute__ ((__cold__))
+# else
+#  define ATTRIBUTE_COLD
+# endif /* GNUC >= 4.3 */
+#endif /* ATTRIBUTE_COLD */
+#ifndef ATTRIBUTE_HOT
+# if (GCC_VERSION >= 4003)
+#  define ATTRIBUTE_HOT __attribute__ ((__hot__))
+# else
+#  define ATTRIBUTE_HOT
+# endif /* GNUC >= 4.3 */
+#endif /* ATTRIBUTE_HOT */
+
+/* We use __extension__ in some places to suppress -pedantic warnings
+   about GCC extensions.  This feature didn't work properly before
+   gcc 2.8.  */
+#if GCC_VERSION < 2008
+#define __extension__
+#endif
+
+#endif /* ansidecl.h   */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/auto-host.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/auto-host.h
new file mode 100644 (file)
index 0000000..f98a3a2
--- /dev/null
@@ -0,0 +1,1615 @@
+/* auto-host.h.  Generated by configure.  */
+/* config.in.  Generated from configure.ac by autoheader.  */
+
+/* Define as the number of bits in a byte, if `limits.h' doesn't. */
+#ifndef USED_FOR_TARGET
+/* #undef CHAR_BIT */
+#endif
+
+
+/* Define 0/1 to force the choice for exception handling model. */
+#ifndef USED_FOR_TARGET
+#define CONFIG_SJLJ_EXCEPTIONS 0
+#endif
+
+
+/* Define to enable the use of a default assembler. */
+#ifndef USED_FOR_TARGET
+/* #undef DEFAULT_ASSEMBLER */
+#endif
+
+
+/* Define to enable the use of a default linker. */
+#ifndef USED_FOR_TARGET
+/* #undef DEFAULT_LINKER */
+#endif
+
+
+/* Define if you want to use __cxa_atexit, rather than atexit, to register C++
+   destructors for local statics and global objects. This is essential for
+   fully standards-compliant handling of destructors, but requires
+   __cxa_atexit in libc. */
+#ifndef USED_FOR_TARGET
+#define DEFAULT_USE_CXA_ATEXIT 2
+#endif
+
+
+/* Define if you want assertions enabled. This is a cheap check. */
+#ifndef USED_FOR_TARGET
+#define ENABLE_ASSERT_CHECKING 1
+#endif
+
+
+/* Define if you want more run-time sanity checks. This one gets a grab bag of
+   miscellaneous but relatively cheap checks. */
+#ifndef USED_FOR_TARGET
+/* #undef ENABLE_CHECKING */
+#endif
+
+
+/* Define to 1 to specify that we are using the BID decimal floating point
+   format instead of DPD */
+#ifndef USED_FOR_TARGET
+#define ENABLE_DECIMAL_BID_FORMAT 0
+#endif
+
+
+/* Define to 1 to enable decimal float extension to C. */
+#ifndef USED_FOR_TARGET
+#define ENABLE_DECIMAL_FLOAT 0
+#endif
+
+
+/* Define if you want more run-time sanity checks for dataflow. */
+#ifndef USED_FOR_TARGET
+/* #undef ENABLE_DF_CHECKING */
+#endif
+
+
+/* Define to 1 to enable fixed-point arithmetic extension to C. */
+#ifndef USED_FOR_TARGET
+#define ENABLE_FIXED_POINT 0
+#endif
+
+
+/* Define if you want fold checked that it never destructs its argument. This
+   is quite expensive. */
+#ifndef USED_FOR_TARGET
+/* #undef ENABLE_FOLD_CHECKING */
+#endif
+
+
+/* Define if you want the garbage collector to operate in maximally paranoid
+   mode, validating the entire heap and collecting garbage at every
+   opportunity. This is extremely expensive. */
+#ifndef USED_FOR_TARGET
+/* #undef ENABLE_GC_ALWAYS_COLLECT */
+#endif
+
+
+/* Define if you want the garbage collector to do object poisoning and other
+   memory allocation checks. This is quite expensive. */
+#ifndef USED_FOR_TARGET
+/* #undef ENABLE_GC_CHECKING */
+#endif
+
+
+/* Define if you want operations on GIMPLE (the basic data structure of the
+   high-level optimizers) to be checked for dynamic type safety at runtime.
+   This is moderately expensive. */
+#ifndef USED_FOR_TARGET
+/* #undef ENABLE_GIMPLE_CHECKING */
+#endif
+
+
+/* Define if gcc should always pass --build-id to linker. */
+#ifndef USED_FOR_TARGET
+/* #undef ENABLE_LD_BUILDID */
+#endif
+
+
+/* Define to 1 if translation of program messages to the user's native
+   language is requested. */
+#ifndef USED_FOR_TARGET
+/* #undef ENABLE_NLS */
+#endif
+
+
+/* Define to enable plugin support. */
+#ifndef USED_FOR_TARGET
+#define ENABLE_PLUGIN 1
+#endif
+
+
+/* Define if you want all operations on RTL (the basic data structure of the
+   optimizer and back end) to be checked for dynamic type safety at runtime.
+   This is quite expensive. */
+#ifndef USED_FOR_TARGET
+/* #undef ENABLE_RTL_CHECKING */
+#endif
+
+
+/* Define if you want RTL flag accesses to be checked against the RTL codes
+   that are supported for each access macro. This is relatively cheap. */
+#ifndef USED_FOR_TARGET
+/* #undef ENABLE_RTL_FLAG_CHECKING */
+#endif
+
+
+/* Define if you want runtime assertions enabled. This is a cheap check. */
+#define ENABLE_RUNTIME_CHECKING 1
+
+/* Define if you want all operations on trees (the basic data structure of the
+   front ends) to be checked for dynamic type safety at runtime. This is
+   moderately expensive. The tree browser debugging routines will also be
+   enabled by this option. */
+#ifndef USED_FOR_TARGET
+/* #undef ENABLE_TREE_CHECKING */
+#endif
+
+
+/* Define if you want all gimple types to be verified after gimplifiation.
+   This is cheap. */
+#ifndef USED_FOR_TARGET
+/* #undef ENABLE_TYPES_CHECKING */
+#endif
+
+
+/* Define if you want to run subprograms and generated programs through
+   valgrind (a memory checker). This is extremely expensive. */
+#ifndef USED_FOR_TARGET
+/* #undef ENABLE_VALGRIND_CHECKING */
+#endif
+
+
+/* Define to 1 if installation paths should be looked up in the Windows
+   Registry. Ignored on non-Windows hosts. */
+#ifndef USED_FOR_TARGET
+/* #undef ENABLE_WIN32_REGISTRY */
+#endif
+
+
+/* Define to the name of a file containing a list of extra machine modes for
+   this architecture. */
+#ifndef USED_FOR_TARGET
+#define EXTRA_MODES_FILE "config/arm/arm-modes.def"
+#endif
+
+
+/* Define to enable detailed memory allocation stats gathering. */
+#ifndef USED_FOR_TARGET
+/* #undef GATHER_STATISTICS */
+#endif
+
+
+/* Define to the type of elements in the array set by `getgroups'. Usually
+   this is either `int' or `gid_t'. */
+#ifndef USED_FOR_TARGET
+#define GETGROUPS_T gid_t
+#endif
+
+
+/* Define if the zone collector is in use */
+#ifndef USED_FOR_TARGET
+/* #undef GGC_ZONE */
+#endif
+
+
+/* mcontext_t fields start with __ */
+#ifndef USED_FOR_TARGET
+/* #undef HAS_MCONTEXT_T_UNDERSCORES */
+#endif
+
+
+/* Define if your assembler supports cmpb. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_CMPB */
+#endif
+
+
+/* Define if your assembler supports the --debug-prefix-map option. */
+#ifndef USED_FOR_TARGET
+#define HAVE_AS_DEBUG_PREFIX_MAP 1
+#endif
+
+
+/* Define if your assembler supports DFP instructions. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_DFP */
+#endif
+
+
+/* Define if your assembler supports .dtprelword. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_DTPRELWORD */
+#endif
+
+
+/* Define if your assembler supports dwarf2 .file/.loc directives, and
+   preserves file table indices exactly as given. */
+#ifndef USED_FOR_TARGET
+#define HAVE_AS_DWARF2_DEBUG_LINE 1
+#endif
+
+
+/* Define if your assembler supports explicit relocations. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_EXPLICIT_RELOCS */
+#endif
+
+
+/* Define if your assembler supports fprnd. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_FPRND */
+#endif
+
+
+/* Define if your assembler supports the --gdwarf2 option. */
+#ifndef USED_FOR_TARGET
+#define HAVE_AS_GDWARF2_DEBUG_FLAG 1
+#endif
+
+
+/* Define if your assembler supports .gnu_attribute. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_GNU_ATTRIBUTE */
+#endif
+
+
+/* Define true if the assembler supports '.long foo@GOTOFF'. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_GOTOFF_IN_DATA */
+#endif
+
+
+/* Define if your assembler supports the --gstabs option. */
+#ifndef USED_FOR_TARGET
+#define HAVE_AS_GSTABS_DEBUG_FLAG 1
+#endif
+
+
+/* Define if your assembler supports the Sun syntax for cmov. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_IX86_CMOV_SUN_SYNTAX */
+#endif
+
+
+/* Define if your assembler supports the subtraction of symbols in different
+   sections. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_IX86_DIFF_SECT_DELTA */
+#endif
+
+
+/* Define if your assembler supports the ffreep mnemonic. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_IX86_FFREEP */
+#endif
+
+
+/* Define if your assembler supports the sahf mnemonic. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_IX86_SAHF */
+#endif
+
+
+/* Define if your assembler supports the lituse_jsrdirect relocation. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_JSRDIRECT_RELOCS */
+#endif
+
+
+/* Define if your assembler supports .sleb128 and .uleb128. */
+#ifndef USED_FOR_TARGET
+#define HAVE_AS_LEB128 1
+#endif
+
+
+/* Define if the assembler won't complain about a line such as # 0 "" 2. */
+#ifndef USED_FOR_TARGET
+#define HAVE_AS_LINE_ZERO 1
+#endif
+
+
+/* Define if your assembler supports ltoffx and ldxmov relocations. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_LTOFFX_LDXMOV_RELOCS */
+#endif
+
+
+/* Define if your assembler supports mfcr field. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_MFCRF */
+#endif
+
+
+/* Define if your assembler supports mffgpr and mftgpr. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_MFPGPR */
+#endif
+
+
+/* Define if your assembler supports the -no-mul-bug-abort option. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_NO_MUL_BUG_ABORT_OPTION */
+#endif
+
+
+/* Define if the assembler understands -mno-shared. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_NO_SHARED */
+#endif
+
+
+/* Define if your assembler supports offsetable %lo(). */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_OFFSETABLE_LO10 */
+#endif
+
+
+/* Define if your assembler supports popcntb field. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_POPCNTB */
+#endif
+
+
+/* Define if your assembler supports .register. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_REGISTER_PSEUDO_OP */
+#endif
+
+
+/* Define if your assembler supports R_PPC_REL16 relocs. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_REL16 */
+#endif
+
+
+/* Define if your assembler supports -relax option. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_RELAX_OPTION */
+#endif
+
+
+/* Define if your assembler and linker support unaligned PC relative relocs.
+   */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_SPARC_UA_PCREL */
+#endif
+
+
+/* Define if your assembler and linker support unaligned PC relative relocs
+   against hidden symbols. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_SPARC_UA_PCREL_HIDDEN */
+#endif
+
+
+/* Define if your assembler supports thread-local storage. */
+#ifndef USED_FOR_TARGET
+#define HAVE_AS_TLS 1
+#endif
+
+
+/* Define if your assembler supports VSX instructions. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_AS_VSX */
+#endif
+
+
+/* Define to 1 if you have the `atoll' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_ATOLL 1
+#endif
+
+
+/* Define to 1 if you have the `atoq' function. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_ATOQ */
+#endif
+
+
+/* Define to 1 if you have the `clearerr_unlocked' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_CLEARERR_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if you have the `clock' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_CLOCK 1
+#endif
+
+
+/* Define if <time.h> defines clock_t. */
+#ifndef USED_FOR_TARGET
+#define HAVE_CLOCK_T 1
+#endif
+
+
+/* Define 0/1 if your assembler and linker support COMDAT groups. */
+#ifndef USED_FOR_TARGET
+#define HAVE_COMDAT_GROUP 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'abort', otherwise define to 0.
+   */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_ABORT 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'asprintf', otherwise define to
+   0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_ASPRINTF 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'atof', otherwise define to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_ATOF 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'atol', otherwise define to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_ATOL 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'basename', otherwise define to
+   0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_BASENAME 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'calloc', otherwise define to 0.
+   */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_CALLOC 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'clearerr_unlocked', otherwise
+   define to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_CLEARERR_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'clock', otherwise define to 0.
+   */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_CLOCK 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'errno', otherwise define to 0.
+   */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_ERRNO 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'feof_unlocked', otherwise define
+   to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_FEOF_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'ferror_unlocked', otherwise
+   define to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_FERROR_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'fflush_unlocked', otherwise
+   define to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_FFLUSH_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'fgetc_unlocked', otherwise
+   define to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_FGETC_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'fgets_unlocked', otherwise
+   define to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_FGETS_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'fileno_unlocked', otherwise
+   define to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_FILENO_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'fprintf_unlocked', otherwise
+   define to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_FPRINTF_UNLOCKED 0
+#endif
+
+
+/* Define to 1 if we found a declaration for 'fputc_unlocked', otherwise
+   define to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_FPUTC_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'fputs_unlocked', otherwise
+   define to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_FPUTS_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'fread_unlocked', otherwise
+   define to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_FREAD_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'free', otherwise define to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_FREE 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'fwrite_unlocked', otherwise
+   define to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_FWRITE_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'getchar_unlocked', otherwise
+   define to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_GETCHAR_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'getcwd', otherwise define to 0.
+   */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_GETCWD 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'getc_unlocked', otherwise define
+   to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_GETC_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'getenv', otherwise define to 0.
+   */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_GETENV 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'getopt', otherwise define to 0.
+   */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_GETOPT 0
+#endif
+
+
+/* Define to 1 if we found a declaration for 'getpagesize', otherwise define
+   to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_GETPAGESIZE 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'getrlimit', otherwise define to
+   0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_GETRLIMIT 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'getrusage', otherwise define to
+   0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_GETRUSAGE 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'getwd', otherwise define to 0.
+   */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_GETWD 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'ldgetname', otherwise define to
+   0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_LDGETNAME 0
+#endif
+
+
+/* Define to 1 if we found a declaration for 'malloc', otherwise define to 0.
+   */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_MALLOC 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'putchar_unlocked', otherwise
+   define to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_PUTCHAR_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'putc_unlocked', otherwise define
+   to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_PUTC_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'realloc', otherwise define to 0.
+   */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_REALLOC 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'sbrk', otherwise define to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_SBRK 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'setrlimit', otherwise define to
+   0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_SETRLIMIT 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'sigaltstack', otherwise define
+   to 0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_SIGALTSTACK 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'snprintf', otherwise define to
+   0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_SNPRINTF 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'strsignal', otherwise define to
+   0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_STRSIGNAL 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'strstr', otherwise define to 0.
+   */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_STRSTR 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'strverscmp', otherwise define to
+   0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_STRVERSCMP 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'times', otherwise define to 0.
+   */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_TIMES 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'vasprintf', otherwise define to
+   0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_VASPRINTF 1
+#endif
+
+
+/* Define to 1 if we found a declaration for 'vsnprintf', otherwise define to
+   0. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DECL_VSNPRINTF 1
+#endif
+
+
+/* Define to 1 if you have the <direct.h> header file. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_DIRECT_H */
+#endif
+
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_DLFCN_H 1
+#endif
+
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_FCNTL_H 1
+#endif
+
+
+/* Define to 1 if you have the `feof_unlocked' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_FEOF_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if you have the `ferror_unlocked' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_FERROR_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if you have the `fflush_unlocked' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_FFLUSH_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if you have the `fgetc_unlocked' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_FGETC_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if you have the `fgets_unlocked' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_FGETS_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if you have the `fileno_unlocked' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_FILENO_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if you have the `fork' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_FORK 1
+#endif
+
+
+/* Define to 1 if you have the `fprintf_unlocked' function. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_FPRINTF_UNLOCKED */
+#endif
+
+
+/* Define to 1 if you have the `fputc_unlocked' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_FPUTC_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if you have the `fputs_unlocked' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_FPUTS_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if you have the `fread_unlocked' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_FREAD_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if you have the `fwrite_unlocked' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_FWRITE_UNLOCKED 1
+#endif
+
+
+/* Define if your assembler supports .balign and .p2align. */
+#ifndef USED_FOR_TARGET
+#define HAVE_GAS_BALIGN_AND_P2ALIGN 1
+#endif
+
+
+/* Define 0/1 if your assembler supports CFI directives. */
+#ifndef USED_FOR_TARGET
+#define HAVE_GAS_CFI_DIRECTIVE 0
+#endif
+
+
+/* Define 0/1 if your assembler supports .cfi_personality. */
+#ifndef USED_FOR_TARGET
+#define HAVE_GAS_CFI_PERSONALITY_DIRECTIVE 1
+#endif
+
+
+/* Define if your assembler uses the new HImode fild and fist notation. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_GAS_FILDS_FISTS */
+#endif
+
+
+/* Define if your assembler and linker support .hidden. */
+#define HAVE_GAS_HIDDEN 1
+
+/* Define if your assembler supports .lcomm with an alignment field. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_GAS_LCOMM_WITH_ALIGNMENT */
+#endif
+
+
+/* Define if your assembler supports .literal16. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_GAS_LITERAL16 */
+#endif
+
+
+/* Define if your assembler supports specifying the maximum number of bytes to
+   skip when using the GAS .p2align command. */
+#ifndef USED_FOR_TARGET
+#define HAVE_GAS_MAX_SKIP_P2ALIGN 1
+#endif
+
+
+/* Define if your assembler supports .nsubspa comdat option. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_GAS_NSUBSPA_COMDAT */
+#endif
+
+
+/* Define if your assembler and linker support 32-bit section relative relocs
+   via '.secrel32 label'. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_GAS_PE_SECREL32_RELOC */
+#endif
+
+
+/* Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.
+   */
+#ifndef USED_FOR_TARGET
+#define HAVE_GAS_SHF_MERGE 1
+#endif
+
+
+/* Define if your assembler supports .subsection and .subsection -1 starts
+   emitting at the beginning of your section. */
+#ifndef USED_FOR_TARGET
+#define HAVE_GAS_SUBSECTION_ORDERING 1
+#endif
+
+
+/* Define if your assembler supports .weak. */
+#ifndef USED_FOR_TARGET
+#define HAVE_GAS_WEAK 1
+#endif
+
+
+/* Define if your assembler supports .weakref. */
+#ifndef USED_FOR_TARGET
+#define HAVE_GAS_WEAKREF 1
+#endif
+
+
+/* Define to 1 if you have the `getchar_unlocked' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_GETCHAR_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if you have the `getc_unlocked' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_GETC_UNLOCKED 1
+#endif
+
+
+/* Define if _Unwind_GetIPInfo is available. */
+#ifndef USED_FOR_TARGET
+#define HAVE_GETIPINFO 1
+#endif
+
+
+/* Define to 1 if you have the `getrlimit' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_GETRLIMIT 1
+#endif
+
+
+/* Define to 1 if you have the `getrusage' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_GETRUSAGE 1
+#endif
+
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_GETTIMEOFDAY 1
+#endif
+
+
+/* Define if using GNU as. */
+#ifndef USED_FOR_TARGET
+#define HAVE_GNU_AS 0
+#endif
+
+
+/* Define if using GNU ld. */
+#ifndef USED_FOR_TARGET
+#define HAVE_GNU_LD 0
+#endif
+
+
+/* Define if you have the iconv() function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_ICONV 1
+#endif
+
+
+/* Define to 1 if you have the <iconv.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_ICONV_H 1
+#endif
+
+
+/* Define .init_array/.fini_array sections are available and working. */
+#ifndef USED_FOR_TARGET
+#define HAVE_INITFINI_ARRAY 1
+#endif
+
+
+/* Define if you have a working <inttypes.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_INTTYPES_H 1
+#endif
+
+
+/* Define to 1 if you have the `kill' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_KILL 1
+#endif
+
+
+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+#ifndef USED_FOR_TARGET
+#define HAVE_LANGINFO_CODESET 1
+#endif
+
+
+/* Define to 1 if you have the <langinfo.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_LANGINFO_H 1
+#endif
+
+
+/* Define if your <locale.h> file defines LC_MESSAGES. */
+#ifndef USED_FOR_TARGET
+#define HAVE_LC_MESSAGES 1
+#endif
+
+
+/* Define to 1 if you have the <ldfcn.h> header file. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_LDFCN_H */
+#endif
+
+
+/* Define if your linker supports --as-needed and --no-as-needed options. */
+#ifndef USED_FOR_TARGET
+#define HAVE_LD_AS_NEEDED 1
+#endif
+
+
+/* Define if your linker supports --build-id. */
+#ifndef USED_FOR_TARGET
+#define HAVE_LD_BUILDID 1
+#endif
+
+
+/* Define if your linker supports --demangle option. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_LD_DEMANGLE */
+#endif
+
+
+/* Define if your linker supports --eh-frame-hdr option. */
+#define HAVE_LD_EH_FRAME_HDR 1
+
+/* Define if your linker supports garbage collection of sections in presence
+   of EH frames. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_LD_EH_GC_SECTIONS */
+#endif
+
+
+/* Define if your PowerPC64 linker only needs function descriptor syms. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_LD_NO_DOT_SYMS */
+#endif
+
+
+/* Define if your linker supports -pie option. */
+#ifndef USED_FOR_TARGET
+#define HAVE_LD_PIE 1
+#endif
+
+
+/* Define if your linker links a mix of read-only and read-write sections into
+   a read-write section. */
+#ifndef USED_FOR_TARGET
+#define HAVE_LD_RO_RW_SECTION_MIXING 1
+#endif
+
+
+/* Define if your linker supports -Bstatic/-Bdynamic option. */
+#ifndef USED_FOR_TARGET
+#define HAVE_LD_STATIC_DYNAMIC 1
+#endif
+
+
+/* Define if your linker supports --sysroot. */
+#ifndef USED_FOR_TARGET
+#define HAVE_LD_SYSROOT 1
+#endif
+
+
+/* Define to 1 if you have the <limits.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_LIMITS_H 1
+#endif
+
+
+/* Define to 1 if you have the <locale.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_LOCALE_H 1
+#endif
+
+
+/* Define to 1 if the system has the type `long long'. */
+#ifndef USED_FOR_TARGET
+#define HAVE_LONG_LONG 1
+#endif
+
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_MALLOC_H 1
+#endif
+
+
+/* Define to 1 if you have the `mbstowcs' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_MBSTOWCS 1
+#endif
+
+
+/* Define if valgrind's memcheck.h header is installed. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_MEMCHECK_H */
+#endif
+
+
+/* Define to 1 if you have the <memory.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_MEMORY_H 1
+#endif
+
+
+/* Define to 1 if you have the `mincore' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_MINCORE 1
+#endif
+
+
+/* Define to 1 if you have the `mmap' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_MMAP 1
+#endif
+
+
+/* Define if mmap with MAP_ANON(YMOUS) works. */
+#ifndef USED_FOR_TARGET
+#define HAVE_MMAP_ANON 1
+#endif
+
+
+/* Define if mmap of /dev/zero works. */
+#ifndef USED_FOR_TARGET
+#define HAVE_MMAP_DEV_ZERO 1
+#endif
+
+
+/* Define if read-only mmap of a plain file works. */
+#ifndef USED_FOR_TARGET
+#define HAVE_MMAP_FILE 1
+#endif
+
+
+/* Define to 1 if you have the `nl_langinfo' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_NL_LANGINFO 1
+#endif
+
+
+/* Define to 1 if you have the `putchar_unlocked' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_PUTCHAR_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if you have the `putc_unlocked' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_PUTC_UNLOCKED 1
+#endif
+
+
+/* Define to 1 if you have the `setlocale' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_SETLOCALE 1
+#endif
+
+
+/* Define to 1 if you have the `setrlimit' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_SETRLIMIT 1
+#endif
+
+
+/* Define to 1 if you have the <stddef.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_STDDEF_H 1
+#endif
+
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_STDINT_H 1
+#endif
+
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_STDLIB_H 1
+#endif
+
+
+/* Define to 1 if you have the <strings.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_STRINGS_H 1
+#endif
+
+
+/* Define to 1 if you have the <string.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_STRING_H 1
+#endif
+
+
+/* Define to 1 if you have the `strsignal' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_STRSIGNAL 1
+#endif
+
+
+/* Define if <sys/times.h> defines struct tms. */
+#ifndef USED_FOR_TARGET
+#define HAVE_STRUCT_TMS 1
+#endif
+
+
+/* Define to 1 if you have the `sysconf' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_SYSCONF 1
+#endif
+
+
+/* Define to 1 if you have the <sys/file.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_SYS_FILE_H 1
+#endif
+
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_SYS_MMAN_H 1
+#endif
+
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_SYS_PARAM_H 1
+#endif
+
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_SYS_RESOURCE_H 1
+#endif
+
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_SYS_STAT_H 1
+#endif
+
+
+/* Define to 1 if you have the <sys/times.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_SYS_TIMES_H 1
+#endif
+
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_SYS_TIME_H 1
+#endif
+
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_SYS_TYPES_H 1
+#endif
+
+
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+#ifndef USED_FOR_TARGET
+#define HAVE_SYS_WAIT_H 1
+#endif
+
+
+/* Define to 1 if you have the `times' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_TIMES 1
+#endif
+
+
+/* Define to 1 if you have the <time.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_TIME_H 1
+#endif
+
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_UNISTD_H 1
+#endif
+
+
+/* Define if valgrind's valgrind/memcheck.h header is installed. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_VALGRIND_MEMCHECK_H */
+#endif
+
+
+/* Define to 1 if you have the `vfork' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_VFORK 1
+#endif
+
+
+/* Define to 1 if you have the <vfork.h> header file. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_VFORK_H */
+#endif
+
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#ifndef USED_FOR_TARGET
+#define HAVE_WCHAR_H 1
+#endif
+
+
+/* Define to 1 if you have the `wcswidth' function. */
+#ifndef USED_FOR_TARGET
+#define HAVE_WCSWIDTH 1
+#endif
+
+
+/* Define to 1 if `fork' works. */
+#ifndef USED_FOR_TARGET
+#define HAVE_WORKING_FORK 1
+#endif
+
+
+/* Define this macro if mbstowcs does not crash when its first argument is
+   NULL. */
+#ifndef USED_FOR_TARGET
+#define HAVE_WORKING_MBSTOWCS 1
+#endif
+
+
+/* Define to 1 if `vfork' works. */
+#ifndef USED_FOR_TARGET
+#define HAVE_WORKING_VFORK 1
+#endif
+
+
+/* Define to 1 if the system has the type `__int64'. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE___INT64 */
+#endif
+
+
+/* Define if cloog is in use. */
+#ifndef USED_FOR_TARGET
+/* #undef HAVE_cloog */
+#endif
+
+
+/* Define as const if the declaration of iconv() needs const. */
+#ifndef USED_FOR_TARGET
+#define ICONV_CONST 
+#endif
+
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#ifndef USED_FOR_TARGET
+#define LT_OBJDIR ".libs/"
+#endif
+
+
+/* Define if host mkdir takes a single argument. */
+#ifndef USED_FOR_TARGET
+/* #undef MKDIR_TAKES_ONE_ARG */
+#endif
+
+
+/* Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h). */
+#ifndef USED_FOR_TARGET
+#define NEED_64BIT_HOST_WIDE_INT 1
+#endif
+
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#ifndef USED_FOR_TARGET
+/* #undef NO_MINUS_C_MINUS_O */
+#endif
+
+
+/* Define to the address where bug reports for this package should be sent. */
+#ifndef USED_FOR_TARGET
+#define PACKAGE_BUGREPORT ""
+#endif
+
+
+/* Define to the full name of this package. */
+#ifndef USED_FOR_TARGET
+#define PACKAGE_NAME ""
+#endif
+
+
+/* Define to the full name and version of this package. */
+#ifndef USED_FOR_TARGET
+#define PACKAGE_STRING ""
+#endif
+
+
+/* Define to the one symbol short name of this package. */
+#ifndef USED_FOR_TARGET
+#define PACKAGE_TARNAME ""
+#endif
+
+
+/* Define to the version of this package. */
+#ifndef USED_FOR_TARGET
+#define PACKAGE_VERSION ""
+#endif
+
+
+/* Define to PREFIX/include if cpp should also search that directory. */
+#ifndef USED_FOR_TARGET
+/* #undef PREFIX_INCLUDE_DIR */
+#endif
+
+
+/* The size of a `int', as computed by sizeof. */
+#ifndef USED_FOR_TARGET
+#define SIZEOF_INT 4
+#endif
+
+
+/* The size of a `long', as computed by sizeof. */
+#ifndef USED_FOR_TARGET
+#define SIZEOF_LONG 4
+#endif
+
+
+/* The size of a `long long', as computed by sizeof. */
+#ifndef USED_FOR_TARGET
+#define SIZEOF_LONG_LONG 8
+#endif
+
+
+/* The size of a `short', as computed by sizeof. */
+#ifndef USED_FOR_TARGET
+#define SIZEOF_SHORT 2
+#endif
+
+
+/* The size of a `void *', as computed by sizeof. */
+#ifndef USED_FOR_TARGET
+#define SIZEOF_VOID_P 4
+#endif
+
+
+/* The size of a `__int64', as computed by sizeof. */
+#ifndef USED_FOR_TARGET
+/* #undef SIZEOF___INT64 */
+#endif
+
+
+/* Define to 1 if you have the ANSI C header files. */
+#ifndef USED_FOR_TARGET
+#define STDC_HEADERS 1
+#endif
+
+
+/* Define if you can safely include both <string.h> and <strings.h>. */
+#ifndef USED_FOR_TARGET
+#define STRING_WITH_STRINGS 1
+#endif
+
+
+/* Define if TFmode long double should be the default */
+#ifndef USED_FOR_TARGET
+/* #undef TARGET_DEFAULT_LONG_DOUBLE_128 */
+#endif
+
+
+/* Define if your target C library provides stack protector support */
+#ifndef USED_FOR_TARGET
+/* #undef TARGET_LIBC_PROVIDES_SSP */
+#endif
+
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#ifndef USED_FOR_TARGET
+#define TIME_WITH_SYS_TIME 1
+#endif
+
+
+/* Define if your assembler mis-optimizes .eh_frame data. */
+#ifndef USED_FOR_TARGET
+/* #undef USE_AS_TRADITIONAL_FORMAT */
+#endif
+
+
+/* Define to 1 if the 'long long' (or '__int64') is wider than 'long' but
+   still efficiently supported by the host hardware. */
+#ifndef USED_FOR_TARGET
+/* #undef USE_LONG_LONG_FOR_WIDEST_FAST_INT */
+#endif
+
+
+/* Define to be the last component of the Windows registry key under which to
+   look for installation paths. The full key used will be
+   HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
+   The default is the GCC version number. */
+#ifndef USED_FOR_TARGET
+/* #undef WIN32_REGISTRY_KEY */
+#endif
+
+
+/* Define to 1 if your processor stores words with the most significant byte
+   first (like Motorola and SPARC, unlike Intel and VAX). */
+#ifndef USED_FOR_TARGET
+/* #undef WORDS_BIGENDIAN */
+#endif
+
+
+/* Define to 1 if on MINIX. */
+#ifndef USED_FOR_TARGET
+/* #undef _MINIX */
+#endif
+
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+#ifndef USED_FOR_TARGET
+/* #undef _POSIX_1_SOURCE */
+#endif
+
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#ifndef USED_FOR_TARGET
+/* #undef _POSIX_SOURCE */
+#endif
+
+
+/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+# define _ALL_SOURCE 1
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# define _POSIX_PTHREAD_SEMANTICS 1
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# define _TANDEM_SOURCE 1
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# define __EXTENSIONS__ 1
+#endif
+
+
+/* Define to `char *' if <sys/types.h> does not define. */
+#ifndef USED_FOR_TARGET
+/* #undef caddr_t */
+#endif
+
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#ifndef USED_FOR_TARGET
+/* #undef gid_t */
+#endif
+
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+#ifndef __cplusplus
+/* #undef inline */
+#endif
+
+/* Define to `int' if <sys/types.h> does not define. */
+#ifndef USED_FOR_TARGET
+/* #undef pid_t */
+#endif
+
+
+/* Define to `long' if <sys/resource.h> doesn't define. */
+#ifndef USED_FOR_TARGET
+/* #undef rlim_t */
+#endif
+
+
+/* Define to `int' if <sys/types.h> does not define. */
+#ifndef USED_FOR_TARGET
+/* #undef ssize_t */
+#endif
+
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#ifndef USED_FOR_TARGET
+/* #undef uid_t */
+#endif
+
+
+/* Define as `fork' if `vfork' does not work. */
+#ifndef USED_FOR_TARGET
+/* #undef vfork */
+#endif
+
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/basic-block.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/basic-block.h
new file mode 100644 (file)
index 0000000..2a10d26
--- /dev/null
@@ -0,0 +1,1016 @@
+/* Define control and data flow tables, and regsets.
+   Copyright (C) 1987, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_BASIC_BLOCK_H
+#define GCC_BASIC_BLOCK_H
+
+#include "bitmap.h"
+#include "sbitmap.h"
+#include "varray.h"
+#include "partition.h"
+#include "hard-reg-set.h"
+#include "predict.h"
+#include "vec.h"
+#include "function.h"
+
+/* Head of register set linked list.  */
+typedef bitmap_head regset_head;
+
+/* A pointer to a regset_head.  */
+typedef bitmap regset;
+
+/* Allocate a register set with oballoc.  */
+#define ALLOC_REG_SET(OBSTACK) BITMAP_ALLOC (OBSTACK)
+
+/* Do any cleanup needed on a regset when it is no longer used.  */
+#define FREE_REG_SET(REGSET) BITMAP_FREE (REGSET)
+
+/* Initialize a new regset.  */
+#define INIT_REG_SET(HEAD) bitmap_initialize (HEAD, &reg_obstack)
+
+/* Clear a register set by freeing up the linked list.  */
+#define CLEAR_REG_SET(HEAD) bitmap_clear (HEAD)
+
+/* Copy a register set to another register set.  */
+#define COPY_REG_SET(TO, FROM) bitmap_copy (TO, FROM)
+
+/* Compare two register sets.  */
+#define REG_SET_EQUAL_P(A, B) bitmap_equal_p (A, B)
+
+/* `and' a register set with a second register set.  */
+#define AND_REG_SET(TO, FROM) bitmap_and_into (TO, FROM)
+
+/* `and' the complement of a register set with a register set.  */
+#define AND_COMPL_REG_SET(TO, FROM) bitmap_and_compl_into (TO, FROM)
+
+/* Inclusive or a register set with a second register set.  */
+#define IOR_REG_SET(TO, FROM) bitmap_ior_into (TO, FROM)
+
+/* Exclusive or a register set with a second register set.  */
+#define XOR_REG_SET(TO, FROM) bitmap_xor_into (TO, FROM)
+
+/* Or into TO the register set FROM1 `and'ed with the complement of FROM2.  */
+#define IOR_AND_COMPL_REG_SET(TO, FROM1, FROM2) \
+  bitmap_ior_and_compl_into (TO, FROM1, FROM2)
+
+/* Clear a single register in a register set.  */
+#define CLEAR_REGNO_REG_SET(HEAD, REG) bitmap_clear_bit (HEAD, REG)
+
+/* Set a single register in a register set.  */
+#define SET_REGNO_REG_SET(HEAD, REG) bitmap_set_bit (HEAD, REG)
+
+/* Return true if a register is set in a register set.  */
+#define REGNO_REG_SET_P(TO, REG) bitmap_bit_p (TO, REG)
+
+/* Copy the hard registers in a register set to the hard register set.  */
+extern void reg_set_to_hard_reg_set (HARD_REG_SET *, const_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)
+
+typedef bitmap_iterator reg_set_iterator;
+
+/* Loop over all registers in REGSET, starting with MIN, setting REGNUM to the
+   register number and executing CODE for all registers that are set.  */
+#define EXECUTE_IF_SET_IN_REG_SET(REGSET, MIN, REGNUM, RSI)    \
+  EXECUTE_IF_SET_IN_BITMAP (REGSET, MIN, REGNUM, RSI)
+
+/* Loop over all registers in REGSET1 and REGSET2, starting with MIN, setting
+   REGNUM to the register number and executing CODE for all registers that are
+   set in the first regset and not set in the second.  */
+#define EXECUTE_IF_AND_COMPL_IN_REG_SET(REGSET1, REGSET2, MIN, REGNUM, RSI) \
+  EXECUTE_IF_AND_COMPL_IN_BITMAP (REGSET1, REGSET2, MIN, REGNUM, RSI)
+
+/* Loop over all registers in REGSET1 and REGSET2, starting with MIN, setting
+   REGNUM to the register number and executing CODE for all registers that are
+   set in both regsets.  */
+#define EXECUTE_IF_AND_IN_REG_SET(REGSET1, REGSET2, MIN, REGNUM, RSI) \
+  EXECUTE_IF_AND_IN_BITMAP (REGSET1, REGSET2, MIN, REGNUM, RSI)        \
+
+/* Same information as REGS_INVALIDATED_BY_CALL but in regset form to be used
+   in dataflow more conveniently.  */
+
+extern regset regs_invalidated_by_call_regset;
+
+/* Type we use to hold basic block counters.  Should be at least
+   64bit.  Although a counter cannot be negative, we use a signed
+   type, because erroneous negative counts can be generated when the
+   flow graph is manipulated by various optimizations.  A signed type
+   makes those easy to detect.  */
+typedef HOST_WIDEST_INT gcov_type;
+
+/* Control flow edge information.  */
+struct edge_def GTY(())
+{
+  /* The two blocks at the ends of the edge.  */
+  struct basic_block_def *src;
+  struct basic_block_def *dest;
+
+  /* Instructions queued on the edge.  */
+  union edge_def_insns {
+    gimple_seq GTY ((tag ("true"))) g;
+    rtx GTY ((tag ("false"))) r;
+  } GTY ((desc ("current_ir_type () == IR_GIMPLE"))) insns;
+
+  /* Auxiliary info specific to a pass.  */
+  PTR GTY ((skip (""))) aux;
+
+  /* Location of any goto implicit in the edge and associated BLOCK.  */
+  tree goto_block;
+  location_t goto_locus;
+
+  /* The index number corresponding to this edge in the edge vector
+     dest->preds.  */
+  unsigned int dest_idx;
+
+  int flags;                   /* see EDGE_* below  */
+  int probability;             /* biased by REG_BR_PROB_BASE */
+  gcov_type count;             /* Expected number of executions calculated
+                                  in profile.c  */
+};
+
+typedef struct edge_def *edge;
+typedef const struct edge_def *const_edge;
+DEF_VEC_P(edge);
+DEF_VEC_ALLOC_P(edge,gc);
+DEF_VEC_ALLOC_P(edge,heap);
+
+#define EDGE_FALLTHRU          1       /* 'Straight line' flow */
+#define EDGE_ABNORMAL          2       /* Strange flow, like computed
+                                          label, or eh */
+#define EDGE_ABNORMAL_CALL     4       /* Call with abnormal exit
+                                          like an exception, or sibcall */
+#define EDGE_EH                        8       /* Exception throw */
+#define EDGE_FAKE              16      /* Not a real edge (profile.c) */
+#define EDGE_DFS_BACK          32      /* A backwards edge */
+#define EDGE_CAN_FALLTHRU      64      /* Candidate for straight line
+                                          flow.  */
+#define EDGE_IRREDUCIBLE_LOOP  128     /* Part of irreducible loop.  */
+#define EDGE_SIBCALL           256     /* Edge from sibcall to exit.  */
+#define EDGE_LOOP_EXIT         512     /* Exit of a loop.  */
+#define EDGE_TRUE_VALUE                1024    /* Edge taken when controlling
+                                          predicate is nonzero.  */
+#define EDGE_FALSE_VALUE       2048    /* Edge taken when controlling
+                                          predicate is zero.  */
+#define EDGE_EXECUTABLE                4096    /* Edge is executable.  Only
+                                          valid during SSA-CCP.  */
+#define EDGE_CROSSING          8192    /* Edge crosses between hot
+                                          and cold sections, when we
+                                          do partitioning.  */
+#define EDGE_ALL_FLAGS        16383
+
+#define EDGE_COMPLEX   (EDGE_ABNORMAL | EDGE_ABNORMAL_CALL | EDGE_EH)
+
+/* Counter summary from the last set of coverage counts read by
+   profile.c.  */
+extern const struct gcov_ctr_summary *profile_info;
+
+/* Declared in cfgloop.h.  */
+struct loop;
+
+/* Declared in tree-flow.h.  */
+struct edge_prediction;
+struct rtl_bb_info;
+
+/* A basic block is a sequence of instructions with only entry and
+   only one exit.  If any one of the instructions are executed, they
+   will all be executed, and in sequence from first to last.
+
+   There may be COND_EXEC instructions in the basic block.  The
+   COND_EXEC *instructions* will be executed -- but if the condition
+   is false the conditionally executed *expressions* will of course
+   not be executed.  We don't consider the conditionally executed
+   expression (which might have side-effects) to be in a separate
+   basic block because the program counter will always be at the same
+   location after the COND_EXEC instruction, regardless of whether the
+   condition is true or not.
+
+   Basic blocks need not start with a label nor end with a jump insn.
+   For example, a previous basic block may just "conditionally fall"
+   into the succeeding basic block, and the last basic block need not
+   end with a jump insn.  Block 0 is a descendant of the entry block.
+
+   A basic block beginning with two labels cannot have notes between
+   the labels.
+
+   Data for jump tables are stored in jump_insns that occur in no
+   basic block even though these insns can follow or precede insns in
+   basic blocks.  */
+
+/* Basic block information indexed by block number.  */
+struct basic_block_def GTY((chain_next ("%h.next_bb"), chain_prev ("%h.prev_bb")))
+{
+  /* The edges into and out of the block.  */
+  VEC(edge,gc) *preds;
+  VEC(edge,gc) *succs;
+
+  /* Auxiliary info specific to a pass.  */
+  PTR GTY ((skip (""))) aux;
+
+  /* Innermost loop containing the block.  */
+  struct loop *loop_father;
+
+  /* The dominance and postdominance information node.  */
+  struct et_node * GTY ((skip (""))) dom[2];
+
+  /* Previous and next blocks in the chain.  */
+  struct basic_block_def *prev_bb;
+  struct basic_block_def *next_bb;
+
+  union basic_block_il_dependent {
+      struct gimple_bb_info * GTY ((tag ("0"))) gimple;
+      struct rtl_bb_info * GTY ((tag ("1"))) rtl;
+    } GTY ((desc ("((%1.flags & BB_RTL) != 0)"))) il;
+
+  /* Expected number of executions: calculated in profile.c.  */
+  gcov_type count;
+
+  /* The index of this block.  */
+  int index;
+
+  /* The loop depth of this block.  */
+  int loop_depth;
+
+  /* Expected frequency.  Normalized to be in range 0 to BB_FREQ_MAX.  */
+  int frequency;
+
+  /* Various flags.  See BB_* below.  */
+  int flags;
+};
+
+struct rtl_bb_info GTY(())
+{
+  /* The first and last insns of the block.  */
+  rtx head_;
+  rtx end_;
+
+  /* In CFGlayout mode points to insn notes/jumptables to be placed just before
+     and after the block.   */
+  rtx header;
+  rtx footer;
+
+  /* This field is used by the bb-reorder and tracer passes.  */
+  int visited;
+};
+
+struct gimple_bb_info GTY(())
+{
+  /* Sequence of statements in this block.  */
+  gimple_seq seq;
+
+  /* PHI nodes for this block.  */
+  gimple_seq phi_nodes;
+};
+
+typedef struct basic_block_def *basic_block;
+typedef const struct basic_block_def *const_basic_block;
+
+DEF_VEC_P(basic_block);
+DEF_VEC_ALLOC_P(basic_block,gc);
+DEF_VEC_ALLOC_P(basic_block,heap);
+
+#define BB_FREQ_MAX 10000
+
+/* Masks for basic_block.flags.
+
+   BB_HOT_PARTITION and BB_COLD_PARTITION should be preserved throughout
+   the compilation, so they are never cleared.
+
+   All other flags may be cleared by clear_bb_flags().  It is generally
+   a bad idea to rely on any flags being up-to-date.  */
+
+enum bb_flags
+{
+  /* Only set on blocks that have just been created by create_bb.  */
+  BB_NEW = 1 << 0,
+
+  /* Set by find_unreachable_blocks.  Do not rely on this being set in any
+     pass.  */
+  BB_REACHABLE = 1 << 1,
+
+  /* Set for blocks in an irreducible loop by loop analysis.  */
+  BB_IRREDUCIBLE_LOOP = 1 << 2,
+
+  /* Set on blocks that may actually not be single-entry single-exit block.  */
+  BB_SUPERBLOCK = 1 << 3,
+
+  /* Set on basic blocks that the scheduler should not touch.  This is used
+     by SMS to prevent other schedulers from messing with the loop schedule.  */
+  BB_DISABLE_SCHEDULE = 1 << 4,
+
+  /* Set on blocks that should be put in a hot section.  */
+  BB_HOT_PARTITION = 1 << 5,
+
+  /* Set on blocks that should be put in a cold section.  */
+  BB_COLD_PARTITION = 1 << 6,
+
+  /* Set on block that was duplicated.  */
+  BB_DUPLICATED = 1 << 7,
+
+  /* Set if the label at the top of this block is the target of a non-local goto.  */
+  BB_NON_LOCAL_GOTO_TARGET = 1 << 8,
+
+  /* Set on blocks that are in RTL format.  */
+  BB_RTL = 1 << 9 ,
+
+  /* Set on blocks that are forwarder blocks.
+     Only used in cfgcleanup.c.  */
+  BB_FORWARDER_BLOCK = 1 << 10,
+
+  /* Set on blocks that cannot be threaded through.
+     Only used in cfgcleanup.c.  */
+  BB_NONTHREADABLE_BLOCK = 1 << 11
+};
+
+/* Dummy flag for convenience in the hot/cold partitioning code.  */
+#define BB_UNPARTITIONED       0
+
+/* Partitions, to be used when partitioning hot and cold basic blocks into
+   separate sections.  */
+#define BB_PARTITION(bb) ((bb)->flags & (BB_HOT_PARTITION|BB_COLD_PARTITION))
+#define BB_SET_PARTITION(bb, part) do {                                        \
+  basic_block bb_ = (bb);                                              \
+  bb_->flags = ((bb_->flags & ~(BB_HOT_PARTITION|BB_COLD_PARTITION))   \
+               | (part));                                              \
+} while (0)
+
+#define BB_COPY_PARTITION(dstbb, srcbb) \
+  BB_SET_PARTITION (dstbb, BB_PARTITION (srcbb))
+
+/* State of dominance information.  */
+
+enum dom_state
+{
+  DOM_NONE,            /* Not computed at all.  */
+  DOM_NO_FAST_QUERY,   /* The data is OK, but the fast query data are not usable.  */
+  DOM_OK               /* Everything is ok.  */
+};
+
+/* A structure to group all the per-function control flow graph data.
+   The x_* prefixing is necessary because otherwise references to the
+   fields of this struct are interpreted as the defines for backward
+   source compatibility following the definition of this struct.  */
+struct control_flow_graph GTY(())
+{
+  /* Block pointers for the exit and entry of a function.
+     These are always the head and tail of the basic block list.  */
+  basic_block x_entry_block_ptr;
+  basic_block x_exit_block_ptr;
+
+  /* Index by basic block number, get basic block struct info.  */
+  VEC(basic_block,gc) *x_basic_block_info;
+
+  /* Number of basic blocks in this flow graph.  */
+  int x_n_basic_blocks;
+
+  /* Number of edges in this flow graph.  */
+  int x_n_edges;
+
+  /* The first free basic block number.  */
+  int x_last_basic_block;
+
+  /* Mapping of labels to their associated blocks.  At present
+     only used for the gimple CFG.  */
+  VEC(basic_block,gc) *x_label_to_block_map;
+
+  enum profile_status {
+    PROFILE_ABSENT,
+    PROFILE_GUESSED,
+    PROFILE_READ
+  } x_profile_status;
+
+  /* Whether the dominators and the postdominators are available.  */
+  enum dom_state x_dom_computed[2];
+
+  /* Number of basic blocks in the dominance tree.  */
+  unsigned x_n_bbs_in_dom_tree[2];
+
+  /* Maximal number of entities in the single jumptable.  Used to estimate
+     final flowgraph size.  */
+  int max_jumptable_ents;
+
+  /* UIDs for LABEL_DECLs.  */
+  int last_label_uid;
+};
+
+/* Defines for accessing the fields of the CFG structure for function FN.  */
+#define ENTRY_BLOCK_PTR_FOR_FUNCTION(FN)     ((FN)->cfg->x_entry_block_ptr)
+#define EXIT_BLOCK_PTR_FOR_FUNCTION(FN)             ((FN)->cfg->x_exit_block_ptr)
+#define basic_block_info_for_function(FN)    ((FN)->cfg->x_basic_block_info)
+#define n_basic_blocks_for_function(FN)             ((FN)->cfg->x_n_basic_blocks)
+#define n_edges_for_function(FN)            ((FN)->cfg->x_n_edges)
+#define last_basic_block_for_function(FN)    ((FN)->cfg->x_last_basic_block)
+#define label_to_block_map_for_function(FN)  ((FN)->cfg->x_label_to_block_map)
+#define profile_status_for_function(FN)             ((FN)->cfg->x_profile_status)
+
+#define BASIC_BLOCK_FOR_FUNCTION(FN,N) \
+  (VEC_index (basic_block, basic_block_info_for_function(FN), (N)))
+#define SET_BASIC_BLOCK_FOR_FUNCTION(FN,N,BB) \
+  (VEC_replace (basic_block, basic_block_info_for_function(FN), (N), (BB)))
+
+/* Defines for textual backward source compatibility.  */
+#define ENTRY_BLOCK_PTR                (cfun->cfg->x_entry_block_ptr)
+#define EXIT_BLOCK_PTR         (cfun->cfg->x_exit_block_ptr)
+#define basic_block_info       (cfun->cfg->x_basic_block_info)
+#define n_basic_blocks         (cfun->cfg->x_n_basic_blocks)
+#define n_edges                        (cfun->cfg->x_n_edges)
+#define last_basic_block       (cfun->cfg->x_last_basic_block)
+#define label_to_block_map     (cfun->cfg->x_label_to_block_map)
+#define profile_status         (cfun->cfg->x_profile_status)
+
+#define BASIC_BLOCK(N)         (VEC_index (basic_block, basic_block_info, (N)))
+#define SET_BASIC_BLOCK(N,BB)  (VEC_replace (basic_block, basic_block_info, (N), (BB)))
+
+/* For iterating over basic blocks.  */
+#define FOR_BB_BETWEEN(BB, FROM, TO, DIR) \
+  for (BB = FROM; BB != TO; BB = BB->DIR)
+
+#define FOR_EACH_BB_FN(BB, FN) \
+  FOR_BB_BETWEEN (BB, (FN)->cfg->x_entry_block_ptr->next_bb, (FN)->cfg->x_exit_block_ptr, next_bb)
+
+#define FOR_EACH_BB(BB) FOR_EACH_BB_FN (BB, cfun)
+
+#define FOR_EACH_BB_REVERSE_FN(BB, FN) \
+  FOR_BB_BETWEEN (BB, (FN)->cfg->x_exit_block_ptr->prev_bb, (FN)->cfg->x_entry_block_ptr, prev_bb)
+
+#define FOR_EACH_BB_REVERSE(BB) FOR_EACH_BB_REVERSE_FN(BB, cfun)
+
+/* For iterating over insns in basic block.  */
+#define FOR_BB_INSNS(BB, INSN)                 \
+  for ((INSN) = BB_HEAD (BB);                  \
+       (INSN) && (INSN) != NEXT_INSN (BB_END (BB));    \
+       (INSN) = NEXT_INSN (INSN))
+
+/* For iterating over insns in basic block when we might remove the
+   current insn.  */
+#define FOR_BB_INSNS_SAFE(BB, INSN, CURR)                      \
+  for ((INSN) = BB_HEAD (BB), (CURR) = (INSN) ? NEXT_INSN ((INSN)): NULL;      \
+       (INSN) && (INSN) != NEXT_INSN (BB_END (BB));    \
+       (INSN) = (CURR), (CURR) = (INSN) ? NEXT_INSN ((INSN)) : NULL)
+       
+#define FOR_BB_INSNS_REVERSE(BB, INSN)         \
+  for ((INSN) = BB_END (BB);                   \
+       (INSN) && (INSN) != PREV_INSN (BB_HEAD (BB));   \
+       (INSN) = PREV_INSN (INSN))
+
+#define FOR_BB_INSNS_REVERSE_SAFE(BB, INSN, CURR)      \
+  for ((INSN) = BB_END (BB),(CURR) = (INSN) ? PREV_INSN ((INSN)) : NULL;       \
+       (INSN) && (INSN) != PREV_INSN (BB_HEAD (BB));   \
+       (INSN) = (CURR), (CURR) = (INSN) ? PREV_INSN ((INSN)) : NULL)
+
+/* Cycles through _all_ basic blocks, even the fake ones (entry and
+   exit block).  */
+
+#define FOR_ALL_BB(BB) \
+  for (BB = ENTRY_BLOCK_PTR; BB; BB = BB->next_bb)
+
+#define FOR_ALL_BB_FN(BB, FN) \
+  for (BB = ENTRY_BLOCK_PTR_FOR_FUNCTION (FN); BB; BB = BB->next_bb)
+
+extern bitmap_obstack reg_obstack;
+
+\f
+/* Stuff for recording basic block info.  */
+
+#define BB_HEAD(B)      (B)->il.rtl->head_
+#define BB_END(B)       (B)->il.rtl->end_
+
+/* Special block numbers [markers] for entry and exit.  */
+#define ENTRY_BLOCK (0)
+#define EXIT_BLOCK (1)
+
+/* The two blocks that are always in the cfg.  */
+#define NUM_FIXED_BLOCKS (2)
+
+
+#define BLOCK_NUM(INSN)              (BLOCK_FOR_INSN (INSN)->index + 0)
+#define set_block_for_insn(INSN, BB)  (BLOCK_FOR_INSN (INSN) = BB)
+
+extern bool profile_info_available_p (void);
+extern void compute_bb_for_insn (void);
+extern unsigned int free_bb_for_insn (void);
+extern void update_bb_for_insn (basic_block);
+
+extern void insert_insn_on_edge (rtx, edge);
+basic_block split_edge_and_insert (edge, rtx);
+
+extern bool commit_edge_insertions (void);
+
+extern void remove_fake_edges (void);
+extern void remove_fake_exit_edges (void);
+extern void add_noreturn_fake_exit_edges (void);
+extern void connect_infinite_loops_to_exit (void);
+extern edge unchecked_make_edge (basic_block, basic_block, int);
+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_raw (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 (rtx, rtx, rtx, basic_block);
+extern void clear_bb_flags (void);
+extern int post_order_compute (int *, bool, bool);
+extern int inverted_post_order_compute (int *);
+extern int pre_and_rev_post_order_compute (int *, int *, bool);
+extern int dfs_enumerate_from (basic_block, int,
+                              bool (*)(const_basic_block, const void *),
+                              basic_block *, int, const void *);
+extern void compute_dominance_frontiers (bitmap *);
+extern bitmap compute_idf (bitmap, bitmap *);
+extern void dump_bb_info (basic_block, bool, bool, int, const char *, FILE *);
+extern void dump_edge_info (FILE *, edge, int);
+extern void brief_dump_cfg (FILE *);
+extern void clear_edges (void);
+extern void scale_bbs_frequencies_int (basic_block *, int, int, int);
+extern void scale_bbs_frequencies_gcov_type (basic_block *, int, gcov_type,
+                                            gcov_type);
+
+/* Structure to group all of the information to process IF-THEN and
+   IF-THEN-ELSE blocks for the conditional execution support.  This
+   needs to be in a public file in case the IFCVT macros call
+   functions passing the ce_if_block data structure.  */
+
+typedef struct ce_if_block
+{
+  basic_block test_bb;                 /* First test block.  */
+  basic_block then_bb;                 /* THEN block.  */
+  basic_block else_bb;                 /* ELSE block or NULL.  */
+  basic_block join_bb;                 /* Join THEN/ELSE blocks.  */
+  basic_block last_test_bb;            /* Last bb to hold && or || tests.  */
+  int num_multiple_test_blocks;                /* # of && and || basic blocks.  */
+  int num_and_and_blocks;              /* # of && blocks.  */
+  int num_or_or_blocks;                        /* # of || blocks.  */
+  int num_multiple_test_insns;         /* # of insns in && and || blocks.  */
+  int and_and_p;                       /* Complex test is &&.  */
+  int num_then_insns;                  /* # of insns in THEN block.  */
+  int num_else_insns;                  /* # of insns in ELSE block.  */
+  int pass;                            /* Pass number.  */
+
+#ifdef IFCVT_EXTRA_FIELDS
+  IFCVT_EXTRA_FIELDS                   /* Any machine dependent fields.  */
+#endif
+
+} ce_if_block_t;
+
+/* This structure maintains an edge list vector.  */
+struct edge_list
+{
+  int num_blocks;
+  int num_edges;
+  edge *index_to_edge;
+};
+
+/* The base value for branch probability notes and edge probabilities.  */
+#define REG_BR_PROB_BASE  10000
+
+/* This is the value which indicates no edge is present.  */
+#define EDGE_INDEX_NO_EDGE     -1
+
+/* EDGE_INDEX returns an integer index for an edge, or EDGE_INDEX_NO_EDGE
+   if there is no edge between the 2 basic blocks.  */
+#define EDGE_INDEX(el, pred, succ) (find_edge_index ((el), (pred), (succ)))
+
+/* INDEX_EDGE_PRED_BB and INDEX_EDGE_SUCC_BB return a pointer to the basic
+   block which is either the pred or succ end of the indexed edge.  */
+#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)
+
+/* INDEX_EDGE returns a pointer to the edge.  */
+#define INDEX_EDGE(el, index)           ((el)->index_to_edge[(index)])
+
+/* Number of edges in the compressed edge list.  */
+#define NUM_EDGES(el)                  ((el)->num_edges)
+
+/* BB is assumed to contain conditional jump.  Return the fallthru edge.  */
+#define FALLTHRU_EDGE(bb)              (EDGE_SUCC ((bb), 0)->flags & EDGE_FALLTHRU \
+                                        ? EDGE_SUCC ((bb), 0) : EDGE_SUCC ((bb), 1))
+
+/* BB is assumed to contain conditional jump.  Return the branch edge.  */
+#define BRANCH_EDGE(bb)                        (EDGE_SUCC ((bb), 0)->flags & EDGE_FALLTHRU \
+                                        ? EDGE_SUCC ((bb), 1) : EDGE_SUCC ((bb), 0))
+
+/* Return expected execution frequency of the edge E.  */
+#define EDGE_FREQUENCY(e)              (((e)->src->frequency \
+                                         * (e)->probability \
+                                         + REG_BR_PROB_BASE / 2) \
+                                        / REG_BR_PROB_BASE)
+
+/* Return nonzero if edge is critical.  */
+#define EDGE_CRITICAL_P(e)             (EDGE_COUNT ((e)->src->succs) >= 2 \
+                                        && EDGE_COUNT ((e)->dest->preds) >= 2)
+
+#define EDGE_COUNT(ev)                 VEC_length (edge, (ev))
+#define EDGE_I(ev,i)                   VEC_index  (edge, (ev), (i))
+#define EDGE_PRED(bb,i)                        VEC_index  (edge, (bb)->preds, (i))
+#define EDGE_SUCC(bb,i)                        VEC_index  (edge, (bb)->succs, (i))
+
+/* Returns true if BB has precisely one successor.  */
+
+static inline bool
+single_succ_p (const_basic_block bb)
+{
+  return EDGE_COUNT (bb->succs) == 1;
+}
+
+/* Returns true if BB has precisely one predecessor.  */
+
+static inline bool
+single_pred_p (const_basic_block bb)
+{
+  return EDGE_COUNT (bb->preds) == 1;
+}
+
+/* Returns the single successor edge of basic block BB.  Aborts if
+   BB does not have exactly one successor.  */
+
+static inline edge
+single_succ_edge (const_basic_block bb)
+{
+  gcc_assert (single_succ_p (bb));
+  return EDGE_SUCC (bb, 0);
+}
+
+/* Returns the single predecessor edge of basic block BB.  Aborts
+   if BB does not have exactly one predecessor.  */
+
+static inline edge
+single_pred_edge (const_basic_block bb)
+{
+  gcc_assert (single_pred_p (bb));
+  return EDGE_PRED (bb, 0);
+}
+
+/* Returns the single successor block of basic block BB.  Aborts
+   if BB does not have exactly one successor.  */
+
+static inline basic_block
+single_succ (const_basic_block bb)
+{
+  return single_succ_edge (bb)->dest;
+}
+
+/* Returns the single predecessor block of basic block BB.  Aborts
+   if BB does not have exactly one predecessor.*/
+
+static inline basic_block
+single_pred (const_basic_block bb)
+{
+  return single_pred_edge (bb)->src;
+}
+
+/* Iterator object for edges.  */
+
+typedef struct {
+  unsigned index;
+  VEC(edge,gc) **container;
+} edge_iterator;
+
+static inline VEC(edge,gc) *
+ei_container (edge_iterator i)
+{
+  gcc_assert (i.container);
+  return *i.container;
+}
+
+#define ei_start(iter) ei_start_1 (&(iter))
+#define ei_last(iter) ei_last_1 (&(iter))
+
+/* Return an iterator pointing to the start of an edge vector.  */
+static inline edge_iterator
+ei_start_1 (VEC(edge,gc) **ev)
+{
+  edge_iterator i;
+
+  i.index = 0;
+  i.container = ev;
+
+  return i;
+}
+
+/* Return an iterator pointing to the last element of an edge
+   vector.  */
+static inline edge_iterator
+ei_last_1 (VEC(edge,gc) **ev)
+{
+  edge_iterator i;
+
+  i.index = EDGE_COUNT (*ev) - 1;
+  i.container = ev;
+
+  return i;
+}
+
+/* Is the iterator `i' at the end of the sequence?  */
+static inline bool
+ei_end_p (edge_iterator i)
+{
+  return (i.index == EDGE_COUNT (ei_container (i)));
+}
+
+/* Is the iterator `i' at one position before the end of the
+   sequence?  */
+static inline bool
+ei_one_before_end_p (edge_iterator i)
+{
+  return (i.index + 1 == EDGE_COUNT (ei_container (i)));
+}
+
+/* Advance the iterator to the next element.  */
+static inline void
+ei_next (edge_iterator *i)
+{
+  gcc_assert (i->index < EDGE_COUNT (ei_container (*i)));
+  i->index++;
+}
+
+/* Move the iterator to the previous element.  */
+static inline void
+ei_prev (edge_iterator *i)
+{
+  gcc_assert (i->index > 0);
+  i->index--;
+}
+
+/* Return the edge pointed to by the iterator `i'.  */
+static inline edge
+ei_edge (edge_iterator i)
+{
+  return EDGE_I (ei_container (i), i.index);
+}
+
+/* Return an edge pointed to by the iterator.  Do it safely so that
+   NULL is returned when the iterator is pointing at the end of the
+   sequence.  */
+static inline edge
+ei_safe_edge (edge_iterator i)
+{
+  return !ei_end_p (i) ? ei_edge (i) : NULL;
+}
+
+/* Return 1 if we should continue to iterate.  Return 0 otherwise.
+   *Edge P is set to the next edge if we are to continue to iterate
+   and NULL otherwise.  */
+
+static inline bool
+ei_cond (edge_iterator ei, edge *p)
+{
+  if (!ei_end_p (ei))
+    {
+      *p = ei_edge (ei);
+      return 1;
+    }
+  else
+    {
+      *p = NULL;
+      return 0;
+    }
+}
+
+/* This macro serves as a convenient way to iterate each edge in a
+   vector of predecessor or successor edges.  It must not be used when
+   an element might be removed during the traversal, otherwise
+   elements will be missed.  Instead, use a for-loop like that shown
+   in the following pseudo-code:
+
+   FOR (ei = ei_start (bb->succs); (e = ei_safe_edge (ei)); )
+     {
+       IF (e != taken_edge)
+         remove_edge (e);
+       ELSE
+         ei_next (&ei);
+     }
+*/
+
+#define FOR_EACH_EDGE(EDGE,ITER,EDGE_VEC)      \
+  for ((ITER) = ei_start ((EDGE_VEC));         \
+       ei_cond ((ITER), &(EDGE));              \
+       ei_next (&(ITER)))
+
+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);
+edge find_edge (basic_block, basic_block);
+
+#define CLEANUP_EXPENSIVE      1       /* Do relatively expensive optimizations
+                                          except for edge forwarding */
+#define CLEANUP_CROSSJUMP      2       /* Do crossjumping.  */
+#define CLEANUP_POST_REGSTACK  4       /* We run after reg-stack and need
+                                          to care REG_DEAD notes.  */
+#define CLEANUP_THREADING      8       /* Do jump threading.  */
+#define CLEANUP_NO_INSN_DEL    16      /* Do not try to delete trivially dead
+                                          insns.  */
+#define CLEANUP_CFGLAYOUT      32      /* Do cleanup in cfglayout mode.  */
+
+/* In lcm.c */
+extern struct edge_list *pre_edge_lcm (int, sbitmap *, sbitmap *,
+                                      sbitmap *, sbitmap *, sbitmap **,
+                                      sbitmap **);
+extern struct edge_list *pre_edge_rev_lcm (int, sbitmap *,
+                                          sbitmap *, sbitmap *,
+                                          sbitmap *, sbitmap **,
+                                          sbitmap **);
+extern void compute_available (sbitmap *, sbitmap *, sbitmap *, sbitmap *);
+
+/* In predict.c */
+extern bool maybe_hot_bb_p (const_basic_block);
+extern bool maybe_hot_edge_p (edge);
+extern bool probably_never_executed_bb_p (const_basic_block);
+extern bool optimize_bb_for_size_p (const_basic_block);
+extern bool optimize_bb_for_speed_p (const_basic_block);
+extern bool optimize_edge_for_size_p (edge);
+extern bool optimize_edge_for_speed_p (edge);
+extern bool optimize_function_for_size_p (struct function *);
+extern bool optimize_function_for_speed_p (struct function *);
+extern bool optimize_loop_for_size_p (struct loop *);
+extern bool optimize_loop_for_speed_p (struct loop *);
+extern bool optimize_loop_nest_for_size_p (struct loop *);
+extern bool optimize_loop_nest_for_speed_p (struct loop *);
+extern bool gimple_predicted_by_p (const_basic_block, enum br_predictor);
+extern bool rtl_predicted_by_p (const_basic_block, enum br_predictor);
+extern void gimple_predict_edge (edge, enum br_predictor, int);
+extern void rtl_predict_edge (edge, enum br_predictor, int);
+extern void predict_edge_def (edge, enum br_predictor, enum prediction);
+extern void guess_outgoing_edge_probabilities (basic_block);
+extern void remove_predictions_associated_with_edge (edge);
+extern bool edge_probability_reliable_p (const_edge);
+extern bool br_prob_note_reliable_p (const_rtx);
+extern bool predictable_edge_p (edge);
+extern unsigned int tree_estimate_probability (void);
+
+/* In cfg.c  */
+extern void dump_regset (regset, FILE *);
+extern void debug_regset (regset);
+extern void init_flow (struct function *);
+extern void debug_bb (basic_block);
+extern basic_block debug_bb_n (int);
+extern void dump_regset (regset, FILE *);
+extern void debug_regset (regset);
+extern void expunge_block (basic_block);
+extern void link_block (basic_block, basic_block);
+extern void unlink_block (basic_block);
+extern void compact_blocks (void);
+extern basic_block alloc_block (void);
+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);
+extern 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);
+
+/* In cfganal.c  */
+extern void find_unreachable_blocks (void);
+extern bool forwarder_block_p (const_basic_block);
+extern bool can_fallthru (basic_block, basic_block);
+extern bool could_fall_through (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 *);
+
+/* In cfgrtl.c  */
+extern basic_block force_nonfallthru (edge);
+extern rtx block_label (basic_block);
+extern bool purge_all_dead_edges (void);
+extern bool purge_dead_edges (basic_block);
+
+/* In cfgbuild.c.  */
+extern void find_many_sub_basic_blocks (sbitmap);
+extern void rtl_make_eh_edge (sbitmap, basic_block, rtx);
+extern void find_basic_blocks (rtx);
+
+/* In cfgcleanup.c.  */
+extern bool cleanup_cfg (int);
+extern bool delete_unreachable_blocks (void);
+
+extern bool mark_dfs_back_edges (void);
+extern void set_edge_can_fallthru_flag (void);
+extern void update_br_prob_note (basic_block);
+extern void fixup_abnormal_edges (void);
+extern bool inside_basic_block_p (const_rtx);
+extern bool control_flow_insn_p (const_rtx);
+extern rtx get_last_bb_insn (basic_block);
+
+/* In bb-reorder.c */
+extern void reorder_basic_blocks (void);
+
+/* In dominance.c */
+
+enum cdi_direction
+{
+  CDI_DOMINATORS = 1,
+  CDI_POST_DOMINATORS = 2
+};
+
+extern enum dom_state dom_info_state (enum cdi_direction);
+extern void set_dom_info_availability (enum cdi_direction, enum dom_state);
+extern bool dom_info_available_p (enum cdi_direction);
+extern void calculate_dominance_info (enum cdi_direction);
+extern void free_dominance_info (enum cdi_direction);
+extern basic_block nearest_common_dominator (enum cdi_direction,
+                                            basic_block, basic_block);
+extern basic_block nearest_common_dominator_for_set (enum cdi_direction,
+                                                    bitmap);
+extern void set_immediate_dominator (enum cdi_direction, basic_block,
+                                    basic_block);
+extern basic_block get_immediate_dominator (enum cdi_direction, basic_block);
+extern bool dominated_by_p (enum cdi_direction, const_basic_block, const_basic_block);
+extern VEC (basic_block, heap) *get_dominated_by (enum cdi_direction, basic_block);
+extern VEC (basic_block, heap) *get_dominated_by_region (enum cdi_direction,
+                                                        basic_block *,
+                                                        unsigned);
+extern void add_to_dominance_info (enum cdi_direction, basic_block);
+extern void delete_from_dominance_info (enum cdi_direction, basic_block);
+basic_block recompute_dominator (enum cdi_direction, basic_block);
+extern void redirect_immediate_dominators (enum cdi_direction, basic_block,
+                                          basic_block);
+extern void iterate_fix_dominators (enum cdi_direction,
+                                   VEC (basic_block, heap) *, bool);
+extern void verify_dominators (enum cdi_direction);
+extern basic_block first_dom_son (enum cdi_direction, basic_block);
+extern basic_block next_dom_son (enum cdi_direction, basic_block);
+unsigned bb_dom_dfs_in (enum cdi_direction, basic_block);
+unsigned bb_dom_dfs_out (enum cdi_direction, basic_block);
+
+extern edge try_redirect_by_replacing_jump (edge, basic_block, bool);
+extern void break_superblocks (void);
+extern void relink_block_chain (bool);
+extern void check_bb_profile (basic_block, FILE *);
+extern void update_bb_profile_for_threading (basic_block, int, gcov_type, edge);
+extern void init_rtl_bb_info (basic_block);
+
+extern void initialize_original_copy_tables (void);
+extern void free_original_copy_tables (void);
+extern void set_bb_original (basic_block, basic_block);
+extern basic_block get_bb_original (basic_block);
+extern void set_bb_copy (basic_block, basic_block);
+extern basic_block get_bb_copy (basic_block);
+void set_loop_copy (struct loop *, struct loop *);
+struct loop *get_loop_copy (struct loop *);
+
+
+extern rtx insert_insn_end_bb_new (rtx, basic_block);
+
+#include "cfghooks.h"
+
+/* Return true when one of the predecessor edges of BB is marked with EDGE_EH.  */
+static inline bool
+bb_has_eh_pred (basic_block bb)
+{
+  edge e;
+  edge_iterator ei;
+
+  FOR_EACH_EDGE (e, ei, bb->preds)
+    {
+      if (e->flags & EDGE_EH)
+       return true;
+    }
+  return false;
+}
+
+/* Return true when one of the predecessor edges of BB is marked with EDGE_ABNORMAL.  */
+static inline bool
+bb_has_abnormal_pred (basic_block bb)
+{
+  edge e;
+  edge_iterator ei;
+
+  FOR_EACH_EDGE (e, ei, bb->preds)
+    {
+      if (e->flags & EDGE_ABNORMAL)
+       return true;
+    }
+  return false;
+}
+
+/* In cfgloopmanip.c.  */
+extern edge mfb_kj_edge;
+extern bool mfb_keep_just (edge);
+
+/* In cfgexpand.c.  */
+extern void rtl_profile_for_bb (basic_block);
+extern void rtl_profile_for_edge (edge);
+extern void default_rtl_profile (void);
+
+#endif /* GCC_BASIC_BLOCK_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/bitmap.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/bitmap.h
new file mode 100644 (file)
index 0000000..a5b0528
--- /dev/null
@@ -0,0 +1,587 @@
+/* Functions to support general ended bitmaps.
+   Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+   2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_BITMAP_H
+#define GCC_BITMAP_H
+#include "hashtab.h"
+#include "statistics.h"
+#include "obstack.h"
+
+/* Fundamental storage type for bitmap.  */
+
+typedef unsigned long BITMAP_WORD;
+/* BITMAP_WORD_BITS needs to be unsigned, but cannot contain casts as
+   it is used in preprocessor directives -- hence the 1u.  */
+#define BITMAP_WORD_BITS (CHAR_BIT * SIZEOF_LONG * 1u)
+
+/* Number of words to use for each element in the linked list.  */
+
+#ifndef BITMAP_ELEMENT_WORDS
+#define BITMAP_ELEMENT_WORDS ((128 + BITMAP_WORD_BITS - 1) / BITMAP_WORD_BITS)
+#endif
+
+/* Number of bits in each actual element of a bitmap.  */
+
+#define BITMAP_ELEMENT_ALL_BITS (BITMAP_ELEMENT_WORDS * BITMAP_WORD_BITS)
+
+/* Obstack for allocating bitmaps and elements from.  */
+typedef struct bitmap_obstack GTY (())
+{
+  struct bitmap_element_def *elements;
+  struct bitmap_head_def *heads;
+  struct obstack GTY ((skip)) obstack;
+} bitmap_obstack;
+
+/* Bitmap set element.  We use a linked list to hold only the bits that
+   are set.  This allows for use to grow the bitset dynamically without
+   having to realloc and copy a giant bit array.
+
+   The free list is implemented as a list of lists.  There is one
+   outer list connected together by prev fields.  Each element of that
+   outer is an inner list (that may consist only of the outer list
+   element) that are connected by the next fields.  The prev pointer
+   is undefined for interior elements.  This allows
+   bitmap_elt_clear_from to be implemented in unit time rather than
+   linear in the number of elements to be freed.  */
+
+typedef struct bitmap_element_def GTY(())
+{
+  struct bitmap_element_def *next;             /* Next element.  */
+  struct bitmap_element_def *prev;             /* Previous element.  */
+  unsigned int indx;                   /* regno/BITMAP_ELEMENT_ALL_BITS.  */
+  BITMAP_WORD bits[BITMAP_ELEMENT_WORDS]; /* Bits that are set.  */
+} bitmap_element;
+
+struct bitmap_descriptor;
+/* Head of bitmap linked list.  gengtype ignores ifdefs, but for
+   statistics we need to add a bitmap descriptor pointer.  As it is
+   not collected, we can just GTY((skip)) it.   */
+
+typedef struct bitmap_head_def GTY(()) {
+  bitmap_element *first;       /* First element in linked list.  */
+  bitmap_element *current;     /* Last element looked at.  */
+  unsigned int indx;           /* Index of last element looked at.  */
+  bitmap_obstack *obstack;     /* Obstack to allocate elements from.
+                                  If NULL, then use ggc_alloc.  */
+#ifdef GATHER_STATISTICS
+  struct bitmap_descriptor GTY((skip)) *desc;
+#endif
+} bitmap_head;
+
+/* Global data */
+extern bitmap_element bitmap_zero_bits;        /* Zero bitmap element */
+extern bitmap_obstack bitmap_default_obstack;   /* Default bitmap obstack */
+
+/* Clear a bitmap by freeing up the linked list.  */
+extern void bitmap_clear (bitmap);
+
+/* Copy a bitmap to another bitmap.  */
+extern void bitmap_copy (bitmap, const_bitmap);
+
+/* True if two bitmaps are identical.  */
+extern bool bitmap_equal_p (const_bitmap, const_bitmap);
+
+/* True if the bitmaps intersect (their AND is non-empty).  */
+extern bool bitmap_intersect_p (const_bitmap, const_bitmap);
+
+/* True if the complement of the second intersects the first (their
+   AND_COMPL is non-empty).  */
+extern bool bitmap_intersect_compl_p (const_bitmap, const_bitmap);
+
+/* True if MAP is an empty bitmap.  */
+#define bitmap_empty_p(MAP) (!(MAP)->first)
+
+/* True if the bitmap has only a single bit set.  */
+extern bool bitmap_single_bit_set_p (const_bitmap);
+
+/* Count the number of bits set in the bitmap.  */
+extern unsigned long bitmap_count_bits (const_bitmap);
+
+/* Boolean operations on bitmaps.  The _into variants are two operand
+   versions that modify the first source operand.  The other variants
+   are three operand versions that to not destroy the source bitmaps.
+   The operations supported are &, & ~, |, ^.  */
+extern void bitmap_and (bitmap, const_bitmap, const_bitmap);
+extern void bitmap_and_into (bitmap, const_bitmap);
+extern bool bitmap_and_compl (bitmap, const_bitmap, const_bitmap);
+extern bool bitmap_and_compl_into (bitmap, const_bitmap);
+#define bitmap_compl_and(DST, A, B) bitmap_and_compl (DST, B, A)
+extern void bitmap_compl_and_into (bitmap, const_bitmap);
+extern void bitmap_clear_range (bitmap, unsigned int, unsigned int);
+extern void bitmap_set_range (bitmap, unsigned int, unsigned int);
+extern bool bitmap_ior (bitmap, const_bitmap, const_bitmap);
+extern bool bitmap_ior_into (bitmap, const_bitmap);
+extern void bitmap_xor (bitmap, const_bitmap, const_bitmap);
+extern void bitmap_xor_into (bitmap, const_bitmap);
+
+/* DST = A | (B & ~C).  Return true if DST changes.  */
+extern bool bitmap_ior_and_compl (bitmap DST, const_bitmap A, const_bitmap B, const_bitmap C);
+/* A |= (B & ~C).  Return true if A changes.  */
+extern bool bitmap_ior_and_compl_into (bitmap DST, const_bitmap B, const_bitmap C);
+
+/* Clear a single bit in a bitmap.  Return true if the bit changed.  */
+extern bool bitmap_clear_bit (bitmap, int);
+
+/* Set a single bit in a bitmap.  Return true if the bit changed.  */
+extern bool bitmap_set_bit (bitmap, int);
+
+/* Return true if a register is set in a register set.  */
+extern int bitmap_bit_p (bitmap, int);
+
+/* Debug functions to print a bitmap linked list.  */
+extern void debug_bitmap (const_bitmap);
+extern void debug_bitmap_file (FILE *, const_bitmap);
+
+/* Print a bitmap.  */
+extern void bitmap_print (FILE *, const_bitmap, const char *, const char *);
+
+/* Initialize and release a bitmap obstack.  */
+extern void bitmap_obstack_initialize (bitmap_obstack *);
+extern void bitmap_obstack_release (bitmap_obstack *);
+extern void bitmap_register (bitmap MEM_STAT_DECL);
+extern void dump_bitmap_statistics (void);
+
+/* Initialize a bitmap header.  OBSTACK indicates the bitmap obstack
+   to allocate from, NULL for GC'd bitmap.  */
+
+static inline void
+bitmap_initialize_stat (bitmap head, bitmap_obstack *obstack MEM_STAT_DECL)
+{
+  head->first = head->current = NULL;
+  head->obstack = obstack;
+#ifdef GATHER_STATISTICS
+  bitmap_register (head PASS_MEM_STAT);
+#endif
+}
+#define bitmap_initialize(h,o) bitmap_initialize_stat (h,o MEM_STAT_INFO)
+
+/* Allocate and free bitmaps from obstack, malloc and gc'd memory.  */
+extern bitmap bitmap_obstack_alloc_stat (bitmap_obstack *obstack MEM_STAT_DECL);
+#define bitmap_obstack_alloc(t) bitmap_obstack_alloc_stat (t MEM_STAT_INFO)
+extern bitmap bitmap_gc_alloc_stat (ALONE_MEM_STAT_DECL);
+#define bitmap_gc_alloc() bitmap_gc_alloc_stat (ALONE_MEM_STAT_INFO)
+extern void bitmap_obstack_free (bitmap);
+
+/* A few compatibility/functions macros for compatibility with sbitmaps */
+#define dump_bitmap(file, bitmap) bitmap_print (file, bitmap, "", "\n")
+#define bitmap_zero(a) bitmap_clear (a)
+extern unsigned bitmap_first_set_bit (const_bitmap);
+
+/* Compute bitmap hash (for purposes of hashing etc.)  */
+extern hashval_t bitmap_hash(const_bitmap);
+
+/* Allocate a bitmap from a bit obstack.  */
+#define BITMAP_ALLOC(OBSTACK) bitmap_obstack_alloc (OBSTACK)
+
+/* Allocate a gc'd bitmap.  */
+#define BITMAP_GGC_ALLOC() bitmap_gc_alloc ()
+
+/* Do any cleanup needed on a bitmap when it is no longer used.  */
+#define BITMAP_FREE(BITMAP) \
+       ((void) (bitmap_obstack_free ((bitmap) BITMAP), (BITMAP) = (bitmap) NULL))
+
+/* Iterator for bitmaps.  */
+
+typedef struct
+{
+  /* Pointer to the current bitmap element.  */
+  bitmap_element *elt1;
+
+  /* Pointer to 2nd bitmap element when two are involved.  */
+  bitmap_element *elt2;
+
+  /* Word within the current element.  */
+  unsigned word_no;
+
+  /* Contents of the actually processed word.  When finding next bit
+     it is shifted right, so that the actual bit is always the least
+     significant bit of ACTUAL.  */
+  BITMAP_WORD bits;
+} bitmap_iterator;
+
+/* Initialize a single bitmap iterator.  START_BIT is the first bit to
+   iterate from.  */
+
+static inline void
+bmp_iter_set_init (bitmap_iterator *bi, const_bitmap map,
+                  unsigned start_bit, unsigned *bit_no)
+{
+  bi->elt1 = map->first;
+  bi->elt2 = NULL;
+
+  /* Advance elt1 until it is not before the block containing start_bit.  */
+  while (1)
+    {
+      if (!bi->elt1)
+       {
+         bi->elt1 = &bitmap_zero_bits;
+         break;
+       }
+
+      if (bi->elt1->indx >= start_bit / BITMAP_ELEMENT_ALL_BITS)
+       break;
+      bi->elt1 = bi->elt1->next;
+    }
+
+  /* We might have gone past the start bit, so reinitialize it.  */
+  if (bi->elt1->indx != start_bit / BITMAP_ELEMENT_ALL_BITS)
+    start_bit = bi->elt1->indx * BITMAP_ELEMENT_ALL_BITS;
+
+  /* Initialize for what is now start_bit.  */
+  bi->word_no = start_bit / BITMAP_WORD_BITS % BITMAP_ELEMENT_WORDS;
+  bi->bits = bi->elt1->bits[bi->word_no];
+  bi->bits >>= start_bit % BITMAP_WORD_BITS;
+
+  /* If this word is zero, we must make sure we're not pointing at the
+     first bit, otherwise our incrementing to the next word boundary
+     will fail.  It won't matter if this increment moves us into the
+     next word.  */
+  start_bit += !bi->bits;
+
+  *bit_no = start_bit;
+}
+
+/* Initialize an iterator to iterate over the intersection of two
+   bitmaps.  START_BIT is the bit to commence from.  */
+
+static inline void
+bmp_iter_and_init (bitmap_iterator *bi, const_bitmap map1, const_bitmap map2,
+                  unsigned start_bit, unsigned *bit_no)
+{
+  bi->elt1 = map1->first;
+  bi->elt2 = map2->first;
+
+  /* Advance elt1 until it is not before the block containing
+     start_bit.  */
+  while (1)
+    {
+      if (!bi->elt1)
+       {
+         bi->elt2 = NULL;
+         break;
+       }
+
+      if (bi->elt1->indx >= start_bit / BITMAP_ELEMENT_ALL_BITS)
+       break;
+      bi->elt1 = bi->elt1->next;
+    }
+
+  /* Advance elt2 until it is not before elt1.  */
+  while (1)
+    {
+      if (!bi->elt2)
+       {
+         bi->elt1 = bi->elt2 = &bitmap_zero_bits;
+         break;
+       }
+
+      if (bi->elt2->indx >= bi->elt1->indx)
+       break;
+      bi->elt2 = bi->elt2->next;
+    }
+
+  /* If we're at the same index, then we have some intersecting bits.  */
+  if (bi->elt1->indx == bi->elt2->indx)
+    {
+      /* We might have advanced beyond the start_bit, so reinitialize
+        for that.  */
+      if (bi->elt1->indx != start_bit / BITMAP_ELEMENT_ALL_BITS)
+       start_bit = bi->elt1->indx * BITMAP_ELEMENT_ALL_BITS;
+
+      bi->word_no = start_bit / BITMAP_WORD_BITS % BITMAP_ELEMENT_WORDS;
+      bi->bits = bi->elt1->bits[bi->word_no] & bi->elt2->bits[bi->word_no];
+      bi->bits >>= start_bit % BITMAP_WORD_BITS;
+    }
+  else
+    {
+      /* Otherwise we must immediately advance elt1, so initialize for
+        that.  */
+      bi->word_no = BITMAP_ELEMENT_WORDS - 1;
+      bi->bits = 0;
+    }
+
+  /* If this word is zero, we must make sure we're not pointing at the
+     first bit, otherwise our incrementing to the next word boundary
+     will fail.  It won't matter if this increment moves us into the
+     next word.  */
+  start_bit += !bi->bits;
+
+  *bit_no = start_bit;
+}
+
+/* Initialize an iterator to iterate over the bits in MAP1 & ~MAP2.
+   */
+
+static inline void
+bmp_iter_and_compl_init (bitmap_iterator *bi, const_bitmap map1, const_bitmap map2,
+                        unsigned start_bit, unsigned *bit_no)
+{
+  bi->elt1 = map1->first;
+  bi->elt2 = map2->first;
+
+  /* Advance elt1 until it is not before the block containing start_bit.  */
+  while (1)
+    {
+      if (!bi->elt1)
+       {
+         bi->elt1 = &bitmap_zero_bits;
+         break;
+       }
+
+      if (bi->elt1->indx >= start_bit / BITMAP_ELEMENT_ALL_BITS)
+       break;
+      bi->elt1 = bi->elt1->next;
+    }
+
+  /* Advance elt2 until it is not before elt1.  */
+  while (bi->elt2 && bi->elt2->indx < bi->elt1->indx)
+    bi->elt2 = bi->elt2->next;
+
+  /* We might have advanced beyond the start_bit, so reinitialize for
+     that.  */
+  if (bi->elt1->indx != start_bit / BITMAP_ELEMENT_ALL_BITS)
+    start_bit = bi->elt1->indx * BITMAP_ELEMENT_ALL_BITS;
+
+  bi->word_no = start_bit / BITMAP_WORD_BITS % BITMAP_ELEMENT_WORDS;
+  bi->bits = bi->elt1->bits[bi->word_no];
+  if (bi->elt2 && bi->elt1->indx == bi->elt2->indx)
+    bi->bits &= ~bi->elt2->bits[bi->word_no];
+  bi->bits >>= start_bit % BITMAP_WORD_BITS;
+
+  /* If this word is zero, we must make sure we're not pointing at the
+     first bit, otherwise our incrementing to the next word boundary
+     will fail.  It won't matter if this increment moves us into the
+     next word.  */
+  start_bit += !bi->bits;
+
+  *bit_no = start_bit;
+}
+
+/* Advance to the next bit in BI.  We don't advance to the next
+   nonzero bit yet.  */
+
+static inline void
+bmp_iter_next (bitmap_iterator *bi, unsigned *bit_no)
+{
+  bi->bits >>= 1;
+  *bit_no += 1;
+}
+
+/* Advance to the next nonzero bit of a single bitmap, we will have
+   already advanced past the just iterated bit.  Return true if there
+   is a bit to iterate.  */
+
+static inline bool
+bmp_iter_set (bitmap_iterator *bi, unsigned *bit_no)
+{
+  /* If our current word is nonzero, it contains the bit we want.  */
+  if (bi->bits)
+    {
+    next_bit:
+      while (!(bi->bits & 1))
+       {
+         bi->bits >>= 1;
+         *bit_no += 1;
+       }
+      return true;
+    }
+
+  /* Round up to the word boundary.  We might have just iterated past
+     the end of the last word, hence the -1.  It is not possible for
+     bit_no to point at the beginning of the now last word.  */
+  *bit_no = ((*bit_no + BITMAP_WORD_BITS - 1)
+            / BITMAP_WORD_BITS * BITMAP_WORD_BITS);
+  bi->word_no++;
+
+  while (1)
+    {
+      /* Find the next nonzero word in this elt.  */
+      while (bi->word_no != BITMAP_ELEMENT_WORDS)
+       {
+         bi->bits = bi->elt1->bits[bi->word_no];
+         if (bi->bits)
+           goto next_bit;
+         *bit_no += BITMAP_WORD_BITS;
+         bi->word_no++;
+       }
+
+      /* Advance to the next element.  */
+      bi->elt1 = bi->elt1->next;
+      if (!bi->elt1)
+       return false;
+      *bit_no = bi->elt1->indx * BITMAP_ELEMENT_ALL_BITS;
+      bi->word_no = 0;
+    }
+}
+
+/* Advance to the next nonzero bit of an intersecting pair of
+   bitmaps.  We will have already advanced past the just iterated bit.
+   Return true if there is a bit to iterate.  */
+
+static inline bool
+bmp_iter_and (bitmap_iterator *bi, unsigned *bit_no)
+{
+  /* If our current word is nonzero, it contains the bit we want.  */
+  if (bi->bits)
+    {
+    next_bit:
+      while (!(bi->bits & 1))
+       {
+         bi->bits >>= 1;
+         *bit_no += 1;
+       }
+      return true;
+    }
+
+  /* Round up to the word boundary.  We might have just iterated past
+     the end of the last word, hence the -1.  It is not possible for
+     bit_no to point at the beginning of the now last word.  */
+  *bit_no = ((*bit_no + BITMAP_WORD_BITS - 1)
+            / BITMAP_WORD_BITS * BITMAP_WORD_BITS);
+  bi->word_no++;
+
+  while (1)
+    {
+      /* Find the next nonzero word in this elt.  */
+      while (bi->word_no != BITMAP_ELEMENT_WORDS)
+       {
+         bi->bits = bi->elt1->bits[bi->word_no] & bi->elt2->bits[bi->word_no];
+         if (bi->bits)
+           goto next_bit;
+         *bit_no += BITMAP_WORD_BITS;
+         bi->word_no++;
+       }
+
+      /* Advance to the next identical element.  */
+      do
+       {
+         /* Advance elt1 while it is less than elt2.  We always want
+            to advance one elt.  */
+         do
+           {
+             bi->elt1 = bi->elt1->next;
+             if (!bi->elt1)
+               return false;
+           }
+         while (bi->elt1->indx < bi->elt2->indx);
+
+         /* Advance elt2 to be no less than elt1.  This might not
+            advance.  */
+         while (bi->elt2->indx < bi->elt1->indx)
+           {
+             bi->elt2 = bi->elt2->next;
+             if (!bi->elt2)
+               return false;
+           }
+       }
+      while (bi->elt1->indx != bi->elt2->indx);
+
+      *bit_no = bi->elt1->indx * BITMAP_ELEMENT_ALL_BITS;
+      bi->word_no = 0;
+    }
+}
+
+/* Advance to the next nonzero bit in the intersection of
+   complemented bitmaps.  We will have already advanced past the just
+   iterated bit.  */
+
+static inline bool
+bmp_iter_and_compl (bitmap_iterator *bi, unsigned *bit_no)
+{
+  /* If our current word is nonzero, it contains the bit we want.  */
+  if (bi->bits)
+    {
+    next_bit:
+      while (!(bi->bits & 1))
+       {
+         bi->bits >>= 1;
+         *bit_no += 1;
+       }
+      return true;
+    }
+
+  /* Round up to the word boundary.  We might have just iterated past
+     the end of the last word, hence the -1.  It is not possible for
+     bit_no to point at the beginning of the now last word.  */
+  *bit_no = ((*bit_no + BITMAP_WORD_BITS - 1)
+            / BITMAP_WORD_BITS * BITMAP_WORD_BITS);
+  bi->word_no++;
+
+  while (1)
+    {
+      /* Find the next nonzero word in this elt.  */
+      while (bi->word_no != BITMAP_ELEMENT_WORDS)
+       {
+         bi->bits = bi->elt1->bits[bi->word_no];
+         if (bi->elt2 && bi->elt2->indx == bi->elt1->indx)
+           bi->bits &= ~bi->elt2->bits[bi->word_no];
+         if (bi->bits)
+           goto next_bit;
+         *bit_no += BITMAP_WORD_BITS;
+         bi->word_no++;
+       }
+
+      /* Advance to the next element of elt1.  */
+      bi->elt1 = bi->elt1->next;
+      if (!bi->elt1)
+       return false;
+
+      /* Advance elt2 until it is no less than elt1.  */
+      while (bi->elt2 && bi->elt2->indx < bi->elt1->indx)
+       bi->elt2 = bi->elt2->next;
+
+      *bit_no = bi->elt1->indx * BITMAP_ELEMENT_ALL_BITS;
+      bi->word_no = 0;
+    }
+}
+
+/* Loop over all bits set in BITMAP, starting with MIN and setting
+   BITNUM to the bit number.  ITER is a bitmap iterator.  BITNUM
+   should be treated as a read-only variable as it contains loop
+   state.  */
+
+#define EXECUTE_IF_SET_IN_BITMAP(BITMAP, MIN, BITNUM, ITER)            \
+  for (bmp_iter_set_init (&(ITER), (BITMAP), (MIN), &(BITNUM));                \
+       bmp_iter_set (&(ITER), &(BITNUM));                              \
+       bmp_iter_next (&(ITER), &(BITNUM)))
+
+/* Loop over all the bits set in BITMAP1 & BITMAP2, starting with MIN
+   and setting BITNUM to the bit number.  ITER is a bitmap iterator.
+   BITNUM should be treated as a read-only variable as it contains
+   loop state.  */
+
+#define EXECUTE_IF_AND_IN_BITMAP(BITMAP1, BITMAP2, MIN, BITNUM, ITER)  \
+  for (bmp_iter_and_init (&(ITER), (BITMAP1), (BITMAP2), (MIN),                \
+                         &(BITNUM));                                   \
+       bmp_iter_and (&(ITER), &(BITNUM));                              \
+       bmp_iter_next (&(ITER), &(BITNUM)))
+
+/* Loop over all the bits set in BITMAP1 & ~BITMAP2, starting with MIN
+   and setting BITNUM to the bit number.  ITER is a bitmap iterator.
+   BITNUM should be treated as a read-only variable as it contains
+   loop state.  */
+
+#define EXECUTE_IF_AND_COMPL_IN_BITMAP(BITMAP1, BITMAP2, MIN, BITNUM, ITER) \
+  for (bmp_iter_and_compl_init (&(ITER), (BITMAP1), (BITMAP2), (MIN),  \
+                               &(BITNUM));                             \
+       bmp_iter_and_compl (&(ITER), &(BITNUM));                                \
+       bmp_iter_next (&(ITER), &(BITNUM)))
+
+#endif /* GCC_BITMAP_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/builtins.def b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/builtins.def
new file mode 100644 (file)
index 0000000..7a98c76
--- /dev/null
@@ -0,0 +1,765 @@
+/* This file contains the definitions and documentation for the
+   builtins used in the GNU compiler.
+   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+   Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* Before including this file, you should define a macro:
+
+     DEF_BUILTIN (ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P,
+                  FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND)
+
+   This macro will be called once for each builtin function.  The
+   ENUM will be of type `enum built_in_function', and will indicate
+   which builtin function is being processed.  The NAME of the builtin
+   function (which will always start with `__builtin_') is a string
+   literal.  The CLASS is of type `enum built_in_class' and indicates
+   what kind of builtin is being processed.
+
+   Some builtins are actually two separate functions.  For example,
+   for `strcmp' there are two builtin functions; `__builtin_strcmp'
+   and `strcmp' itself.  Both behave identically.  Other builtins
+   define only the `__builtin' variant.  If BOTH_P is TRUE, then this
+   builtin has both variants; otherwise, it is has only the first
+   variant.
+
+   TYPE indicates the type of the function.  The symbols correspond to
+   enumerals from builtin-types.def.  If BOTH_P is true, then LIBTYPE
+   is the type of the non-`__builtin_' variant.  Otherwise, LIBTYPE
+   should be ignored.
+
+   If FALLBACK_P is true then, if for some reason, the compiler cannot
+   expand the builtin function directly, it will call the
+   corresponding library function (which does not have the
+   `__builtin_' prefix.
+
+   If NONANSI_P is true, then the non-`__builtin_' variant is not an
+   ANSI/ISO library function, and so we should pretend it does not
+   exist when compiling in ANSI conformant mode.
+
+   ATTRs is an attribute list as defined in builtin-attrs.def that
+   describes the attributes of this builtin function.
+
+   IMPLICIT specifies condition when the builtin can be produced by
+   compiler.  For instance C90 reserves floorf function, but does not
+   define it's meaning.  When user uses floorf we may assume that the
+   floorf has the meaning we expect, but we can't produce floorf by
+   simplifying floor((double)float) since the runtime need not implement
+   it.
+
+   The builtins is registered only if COND is true.  */
+
+/* A GCC builtin (like __builtin_saveregs) is provided by the
+   compiler, but does not correspond to a function in the standard
+   library.  */
+#undef DEF_GCC_BUILTIN
+#define DEF_GCC_BUILTIN(ENUM, NAME, TYPE, ATTRS)               \
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, BT_LAST,        \
+              false, false, false, ATTRS, true, true)
+
+/* Like DEF_GCC_BUILTIN, except we don't prepend "__builtin_".  */
+#undef DEF_SYNC_BUILTIN
+#define DEF_SYNC_BUILTIN(ENUM, NAME, TYPE, ATTRS)              \
+  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, BT_LAST,     \
+              false, false, false, ATTRS, true, true)
+
+/* A library builtin (like __builtin_strchr) is a builtin equivalent
+   of an ANSI/ISO standard library function.  In addition to the
+   `__builtin' version, we will create an ordinary version (e.g,
+   `strchr') as well.  If we cannot compute the answer using the
+   builtin function, we will fall back to the standard library
+   version.  */
+#undef DEF_LIB_BUILTIN
+#define DEF_LIB_BUILTIN(ENUM, NAME, TYPE, ATTRS)       \
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,   \
+              true, true, false, ATTRS, true, true)
+
+/* Like DEF_LIB_BUILTIN, except that the function is not one that is
+   specified by ANSI/ISO C.  So, when we're being fully conformant we
+   ignore the version of these builtins that does not begin with
+   __builtin.  */
+#undef DEF_EXT_LIB_BUILTIN
+#define DEF_EXT_LIB_BUILTIN(ENUM, NAME, TYPE, ATTRS)   \
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,   \
+              true, true, true, ATTRS, false, true)
+
+/* Like DEF_LIB_BUILTIN, except that the function is only a part of
+   the standard in C94 or above.  */
+#undef DEF_C94_BUILTIN
+#define DEF_C94_BUILTIN(ENUM, NAME, TYPE, ATTRS)       \
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,   \
+              true, true, !flag_isoc94, ATTRS, TARGET_C99_FUNCTIONS, true)
+
+/* Like DEF_LIB_BUILTIN, except that the function is only a part of
+   the standard in C99 or above.  */
+#undef DEF_C99_BUILTIN
+#define DEF_C99_BUILTIN(ENUM, NAME, TYPE, ATTRS)       \
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,   \
+              true, true, !flag_isoc99, ATTRS, TARGET_C99_FUNCTIONS, true)
+
+/* Builtin that is specified by C99 and C90 reserve the name for future use.
+   We can still recognize the builtin in C90 mode but we can't produce it
+   implicitly.  */
+#undef DEF_C99_C90RES_BUILTIN
+#define DEF_C99_C90RES_BUILTIN(ENUM, NAME, TYPE, ATTRS)        \
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,   \
+              true, true, !flag_isoc99, ATTRS, TARGET_C99_FUNCTIONS, true)
+
+/* Builtin that C99 reserve the name for future use. We can still recognize
+   the builtin in C99 mode but we can't produce it implicitly.  */
+#undef DEF_EXT_C99RES_BUILTIN
+#define DEF_EXT_C99RES_BUILTIN(ENUM, NAME, TYPE, ATTRS)        \
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,   \
+             true, true, true, ATTRS, false, true)
+
+/* Allocate the enum and the name for a builtin, but do not actually
+   define it here at all.  */
+#undef DEF_BUILTIN_STUB
+#define DEF_BUILTIN_STUB(ENUM, NAME) \
+  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, 0, 0, false, false, \
+              false, 0, false, false)
+
+/* Builtin used by the implementation of GNU OpenMP.  None of these are
+   actually implemented in the compiler; they're all in libgomp.  */
+#undef DEF_GOMP_BUILTIN
+#define DEF_GOMP_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
+               false, true, true, ATTRS, false, \
+              (flag_openmp || flag_tree_parallelize_loops))
+
+/* Define an attribute list for math functions that are normally
+   "impure" because some of them may write into global memory for
+   `errno'.  If !flag_errno_math they are instead "const".  */
+#undef ATTR_MATHFN_ERRNO
+#define ATTR_MATHFN_ERRNO (flag_errno_math ? \
+       ATTR_NOTHROW_LIST : ATTR_CONST_NOTHROW_LIST)
+
+/* Define an attribute list for math functions that are normally
+   "const" but if flag_rounding_math is set they are instead "pure".
+   This distinction accounts for the fact that some math functions
+   check the rounding mode which is akin to examining global
+   memory.  */
+#undef ATTR_MATHFN_FPROUNDING
+#define ATTR_MATHFN_FPROUNDING (flag_rounding_math ? \
+       ATTR_PURE_NOTHROW_NOVOPS_LIST : ATTR_CONST_NOTHROW_LIST)
+
+/* Define an attribute list for math functions that are normally
+   "impure" because some of them may write into global memory for
+   `errno'.  If !flag_errno_math, we can possibly use "pure" or
+   "const" depending on whether we care about FP rounding.  */
+#undef ATTR_MATHFN_FPROUNDING_ERRNO
+#define ATTR_MATHFN_FPROUNDING_ERRNO (flag_errno_math ? \
+       ATTR_NOTHROW_LIST : ATTR_MATHFN_FPROUNDING)
+
+/* Define an attribute list for math functions that need to mind FP
+   rounding, but because they store into memory they are never "const"
+   or "pure".  Use of this macro is mainly for documentation and
+   maintenance purposes.  */
+#undef ATTR_MATHFN_FPROUNDING_STORE
+#define ATTR_MATHFN_FPROUNDING_STORE ATTR_NOTHROW_LIST
+
+/* Category: math builtins.  */
+DEF_LIB_BUILTIN        (BUILT_IN_ACOS, "acos", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ACOSF, "acosf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ACOSH, "acosh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ACOSHF, "acoshf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ACOSHL, "acoshl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ACOSL, "acosl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_ASIN, "asin", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ASINF, "asinf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ASINH, "asinh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_ASINHF, "asinhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_ASINHL, "asinhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ASINL, "asinl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_ATAN, "atan", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_ATAN2, "atan2", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ATAN2F, "atan2f", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ATAN2L, "atan2l", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ATANF, "atanf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_ATANH, "atanh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ATANHF, "atanhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ATANHL, "atanhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ATANL, "atanl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CBRT, "cbrt", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CBRTF, "cbrtf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CBRTL, "cbrtl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_CEIL, "ceil", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_CEILF, "ceilf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_CEILL, "ceill", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_COPYSIGN, "copysign", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_COPYSIGNF, "copysignf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_COPYSIGNL, "copysignl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_COS, "cos", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_COSF, "cosf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_COSH, "cosh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_COSHF, "coshf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_COSHL, "coshl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_COSL, "cosl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREM, "drem", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREMF, "dremf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREML, "dreml", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ERF, "erf", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_ERFC, "erfc", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ERFCF, "erfcf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ERFCL, "erfcl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ERFF, "erff", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_ERFL, "erfl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_EXP, "exp", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_EXP10, "exp10", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_EXP10F, "exp10f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_EXP10L, "exp10l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_EXP2, "exp2", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_EXP2F, "exp2f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_EXP2L, "exp2l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_EXPF, "expf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_EXPL, "expl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_EXPM1, "expm1", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_EXPM1F, "expm1f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_EXPM1L, "expm1l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_FABS, "fabs", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FABSF, "fabsf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FABSL, "fabsl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FDIM, "fdim", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_FDIMF, "fdimf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_FDIML, "fdiml", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_FLOOR, "floor", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FLOORF, "floorf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FLOORL, "floorl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FMA, "fma", BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_FMAF, "fmaf", BT_FN_FLOAT_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_FMAL, "fmal", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_FMAX, "fmax", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FMAXF, "fmaxf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FMAXL, "fmaxl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FMIN, "fmin", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FMINF, "fminf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FMINL, "fminl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_FMOD, "fmod", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FMODF, "fmodf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FMODL, "fmodl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_FREXP, "frexp", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FREXPF, "frexpf", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FREXPL, "frexpl", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMA, "gamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAF, "gammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAL, "gammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMA_R, "gamma_r", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAF_R, "gammaf_r", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAL_R, "gammal_r", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VAL, "huge_val", BT_FN_DOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VALF, "huge_valf", BT_FN_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VALL, "huge_vall", BT_FN_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_HYPOT, "hypot", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_HYPOTF, "hypotf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_HYPOTL, "hypotl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ILOGB, "ilogb", BT_FN_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ILOGBF, "ilogbf", BT_FN_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ILOGBL, "ilogbl", BT_FN_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_INF, "inf", BT_FN_DOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_INFF, "inff", BT_FN_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_INFL, "infl", BT_FN_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN               (BUILT_IN_INFD32, "infd32", BT_FN_DFLOAT32, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_INFD64, "infd64", BT_FN_DFLOAT64, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_INFD128, "infd128", BT_FN_DFLOAT128, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_J0, "j0", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_J0F, "j0f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_J0L, "j0l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_J1, "j1", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_J1F, "j1f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_J1L, "j1l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_JN, "jn", BT_FN_DOUBLE_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_JNF, "jnf", BT_FN_FLOAT_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_JNL, "jnl", BT_FN_LONGDOUBLE_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_LCEIL, "lceil", BT_FN_LONG_DOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LCEILF, "lceilf", BT_FN_LONG_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LCEILL, "lceill", BT_FN_LONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_LDEXP, "ldexp", BT_FN_DOUBLE_DOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_LDEXPF, "ldexpf", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_LDEXPL, "ldexpl", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_LFLOOR, "lfloor", BT_FN_LONG_DOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LFLOORF, "lfloorf", BT_FN_LONG_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LFLOORL, "lfloorl", BT_FN_LONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_LGAMMA, "lgamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_BUILTIN        (BUILT_IN_LGAMMAF, "lgammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_BUILTIN        (BUILT_IN_LGAMMAL, "lgammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMA_R, "lgamma_r", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMAF_R, "lgammaf_r", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMAL_R, "lgammal_r", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_GCC_BUILTIN        (BUILT_IN_LLCEIL, "llceil", BT_FN_LONGLONG_DOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LLCEILF, "llceilf", BT_FN_LONGLONG_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LLCEILL, "llceill", BT_FN_LONGLONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LLFLOOR, "llfloor", BT_FN_LONGLONG_DOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LLFLOORF, "llfloorf", BT_FN_LONGLONG_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LLFLOORL, "llfloorl", BT_FN_LONGLONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_LLRINT, "llrint", BT_FN_LONGLONG_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LLRINTF, "llrintf", BT_FN_LONGLONG_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LLRINTL, "llrintl", BT_FN_LONGLONG_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LLROUND, "llround", BT_FN_LONGLONG_DOUBLE, ATTR_MATHFN_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LLROUNDF, "llroundf", BT_FN_LONGLONG_FLOAT, ATTR_MATHFN_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LLROUNDL, "llroundl", BT_FN_LONGLONG_LONGDOUBLE, ATTR_MATHFN_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_LOG, "log", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_LOG10, "log10", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_LOG10F, "log10f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_LOG10L, "log10l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOG1P, "log1p", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOG1PF, "log1pf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOG1PL, "log1pl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOG2, "log2", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOG2F, "log2f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOG2L, "log2l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOGB, "logb", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOGBF, "logbf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOGBL, "logbl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_LOGF, "logf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_LOGL, "logl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LRINT, "lrint", BT_FN_LONG_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LRINTF, "lrintf", BT_FN_LONG_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LRINTL, "lrintl", BT_FN_LONG_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LROUND, "lround", BT_FN_LONG_DOUBLE, ATTR_MATHFN_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LROUNDF, "lroundf", BT_FN_LONG_FLOAT, ATTR_MATHFN_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LROUNDL, "lroundl", BT_FN_LONG_LONGDOUBLE, ATTR_MATHFN_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_MODF, "modf", BT_FN_DOUBLE_DOUBLE_DOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_MODFF, "modff", BT_FN_FLOAT_FLOAT_FLOATPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_MODFL, "modfl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_BUILTIN        (BUILT_IN_NAN, "nan", BT_FN_DOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_C99_BUILTIN        (BUILT_IN_NANF, "nanf", BT_FN_FLOAT_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_C99_BUILTIN        (BUILT_IN_NANL, "nanl", BT_FN_LONGDOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_GCC_BUILTIN        (BUILT_IN_NAND32, "nand32", BT_FN_DFLOAT32_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_GCC_BUILTIN        (BUILT_IN_NAND64, "nand64", BT_FN_DFLOAT64_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_GCC_BUILTIN        (BUILT_IN_NAND128, "nand128", BT_FN_DFLOAT128_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_GCC_BUILTIN        (BUILT_IN_NANS, "nans", BT_FN_DOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_GCC_BUILTIN        (BUILT_IN_NANSF, "nansf", BT_FN_FLOAT_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_GCC_BUILTIN        (BUILT_IN_NANSL, "nansl", BT_FN_LONGDOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_C99_BUILTIN        (BUILT_IN_NEARBYINT, "nearbyint", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_NEARBYINTF, "nearbyintf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_NEARBYINTL, "nearbyintl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTER, "nextafter", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTERF, "nextafterf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTERL, "nextafterl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARD, "nexttoward", BT_FN_DOUBLE_DOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARDF, "nexttowardf", BT_FN_FLOAT_FLOAT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARDL, "nexttowardl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_POW, "pow", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_POW10, "pow10", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_POW10F, "pow10f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_POW10L, "pow10l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_POWF, "powf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_POWI, "powi", BT_FN_DOUBLE_DOUBLE_INT, ATTR_MATHFN_FPROUNDING)
+DEF_GCC_BUILTIN        (BUILT_IN_POWIF, "powif", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING)
+DEF_GCC_BUILTIN        (BUILT_IN_POWIL, "powil", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_POWL, "powl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_REMAINDER, "remainder", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_REMAINDERF, "remainderf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_REMAINDERL, "remainderl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_REMQUO, "remquo", BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_BUILTIN        (BUILT_IN_REMQUOF, "remquof", BT_FN_FLOAT_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_BUILTIN        (BUILT_IN_REMQUOL, "remquol", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_BUILTIN        (BUILT_IN_RINT, "rint", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_RINTF, "rintf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_RINTL, "rintl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ROUND, "round", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_ROUNDF, "roundf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_ROUNDL, "roundl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SCALB, "scalb", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SCALBF, "scalbf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SCALBL, "scalbl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_SCALBLN, "scalbln", BT_FN_DOUBLE_DOUBLE_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_SCALBLNF, "scalblnf", BT_FN_FLOAT_FLOAT_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_SCALBLNL, "scalblnl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_SCALBN, "scalbn", BT_FN_DOUBLE_DOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_SCALBNF, "scalbnf", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_SCALBNL, "scalbnl", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBIT, "signbit", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITF, "signbitf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITL, "signbitl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITD32, "signbitd32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITD64, "signbitd64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITD128, "signbitd128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNIFICAND, "significand", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNIFICANDF, "significandf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNIFICANDL, "significandl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_SIN, "sin", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SINCOS, "sincos", BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SINCOSF, "sincosf", BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SINCOSL, "sincosl", BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_SINF, "sinf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_SINH, "sinh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_SINHF, "sinhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_SINHL, "sinhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_SINL, "sinl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_SQRT, "sqrt", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_SQRTF, "sqrtf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_SQRTL, "sqrtl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_TAN, "tan", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_TANF, "tanf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_TANH, "tanh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_TANHF, "tanhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_TANHL, "tanhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_TANL, "tanl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_TGAMMA, "tgamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_TGAMMAF, "tgammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_TGAMMAL, "tgammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_TRUNC, "trunc", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_TRUNCF, "truncf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_TRUNCL, "truncl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y0, "y0", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y0F, "y0f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y0L, "y0l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y1, "y1", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y1F, "y1f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y1L, "y1l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_YN, "yn", BT_FN_DOUBLE_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_YNF, "ynf", BT_FN_FLOAT_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_YNL, "ynl", BT_FN_LONGDOUBLE_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+
+/* Category: _Complex math builtins.  */
+DEF_C99_BUILTIN        (BUILT_IN_CABS, "cabs", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CABSF, "cabsf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CABSL, "cabsl", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CACOS, "cacos", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CACOSF, "cacosf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CACOSH, "cacosh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CACOSHF, "cacoshf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CACOSHL, "cacoshl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CACOSL, "cacosl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CARG, "carg", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CARGF, "cargf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CARGL, "cargl", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CASIN, "casin", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CASINF, "casinf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CASINH, "casinh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CASINHF, "casinhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CASINHL, "casinhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CASINL, "casinl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CATAN, "catan", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CATANF, "catanf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CATANH, "catanh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CATANHF, "catanhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CATANHL, "catanhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CATANL, "catanl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CCOS, "ccos", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CCOSF, "ccosf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CCOSH, "ccosh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CCOSHF, "ccoshf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CCOSHL, "ccoshl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CCOSL, "ccosl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CEXP, "cexp", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CEXPF, "cexpf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CEXPL, "cexpl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_GCC_BUILTIN        (BUILT_IN_CEXPI, "cexpi", BT_FN_COMPLEX_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_GCC_BUILTIN        (BUILT_IN_CEXPIF, "cexpif", BT_FN_COMPLEX_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_GCC_BUILTIN        (BUILT_IN_CEXPIL, "cexpil", BT_FN_COMPLEX_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CIMAG, "cimag", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_CIMAGF, "cimagf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_CIMAGL, "cimagl", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_CLOG, "clog", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CLOGF, "clogf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CLOGL, "clogl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10, "clog10", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10F, "clog10f", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10L, "clog10l", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CONJ, "conj", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_CONJF, "conjf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_CONJL, "conjl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_CPOW, "cpow", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CPOWF, "cpowf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CPOWL, "cpowl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CPROJ, "cproj", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CPROJF, "cprojf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CPROJL, "cprojl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CREAL, "creal", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_CREALF, "crealf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_CREALL, "creall", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_CSIN, "csin", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CSINF, "csinf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CSINH, "csinh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CSINHF, "csinhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CSINHL, "csinhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CSINL, "csinl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CSQRT, "csqrt", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CSQRTF, "csqrtf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CSQRTL, "csqrtl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CTAN, "ctan", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CTANF, "ctanf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CTANH, "ctanh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CTANHF, "ctanhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CTANHL, "ctanhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CTANL, "ctanl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+
+/* Category: string/memory builtins.  */
+/* bcmp, bcopy and bzero have traditionally accepted NULL pointers
+   when the length parameter is zero, so don't apply attribute "nonnull".  */
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_BCMP, "bcmp", BT_FN_INT_CONST_PTR_CONST_PTR_SIZE, ATTR_PURE_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_BCOPY, "bcopy", BT_FN_VOID_CONST_PTR_PTR_SIZE, ATTR_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_BZERO, "bzero", BT_FN_VOID_PTR_SIZE, ATTR_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_INDEX, "index", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL)
+DEF_LIB_BUILTIN        (BUILT_IN_MEMCHR, "memchr", BT_FN_PTR_CONST_PTR_INT_SIZE, ATTR_PURE_NOTHROW_NONNULL)
+DEF_LIB_BUILTIN        (BUILT_IN_MEMCMP, "memcmp", BT_FN_INT_CONST_PTR_CONST_PTR_SIZE, ATTR_PURE_NOTHROW_NONNULL)
+DEF_LIB_BUILTIN        (BUILT_IN_MEMCPY, "memcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_NOTHROW_NONNULL)
+DEF_LIB_BUILTIN        (BUILT_IN_MEMMOVE, "memmove", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_NOTHROW_NONNULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMPCPY, "mempcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_NOTHROW_NONNULL)
+DEF_LIB_BUILTIN        (BUILT_IN_MEMSET, "memset", BT_FN_PTR_PTR_INT_SIZE, ATTR_NOTHROW_NONNULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_RINDEX, "rindex", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPCPY, "stpcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPNCPY, "stpncpy", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCASECMP, "strcasecmp", BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL)
+DEF_LIB_BUILTIN        (BUILT_IN_STRCAT, "strcat", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL)
+DEF_LIB_BUILTIN        (BUILT_IN_STRCHR, "strchr", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL)
+DEF_LIB_BUILTIN        (BUILT_IN_STRCMP, "strcmp", BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL)
+DEF_LIB_BUILTIN        (BUILT_IN_STRCPY, "strcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL)
+DEF_LIB_BUILTIN        (BUILT_IN_STRCSPN, "strcspn", BT_FN_SIZE_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRDUP, "strdup", BT_FN_STRING_CONST_STRING, ATTR_MALLOC_NOTHROW_NONNULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNDUP, "strndup", BT_FN_STRING_CONST_STRING_SIZE, ATTR_MALLOC_NOTHROW_NONNULL)
+DEF_LIB_BUILTIN        (BUILT_IN_STRLEN, "strlen", BT_FN_SIZE_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCASECMP, "strncasecmp", BT_FN_INT_CONST_STRING_CONST_STRING_SIZE, ATTR_PURE_NOTHROW_NONNULL)
+DEF_LIB_BUILTIN        (BUILT_IN_STRNCAT, "strncat", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL)
+DEF_LIB_BUILTIN        (BUILT_IN_STRNCMP, "strncmp", BT_FN_INT_CONST_STRING_CONST_STRING_SIZE, ATTR_PURE_NOTHROW_NONNULL)
+DEF_LIB_BUILTIN        (BUILT_IN_STRNCPY, "strncpy", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL)
+DEF_LIB_BUILTIN        (BUILT_IN_STRPBRK, "strpbrk", BT_FN_STRING_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL)
+DEF_LIB_BUILTIN        (BUILT_IN_STRRCHR, "strrchr", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL)
+DEF_LIB_BUILTIN        (BUILT_IN_STRSPN, "strspn", BT_FN_SIZE_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL)
+DEF_LIB_BUILTIN        (BUILT_IN_STRSTR, "strstr", BT_FN_STRING_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL)
+
+/* Category: stdio builtins.  */
+DEF_LIB_BUILTIN        (BUILT_IN_FPRINTF, "fprintf", BT_FN_INT_FILEPTR_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_2_3)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPRINTF_UNLOCKED, "fprintf_unlocked", BT_FN_INT_FILEPTR_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_2_3)
+DEF_LIB_BUILTIN        (BUILT_IN_PUTC, "putc", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_PUTC_UNLOCKED, "putc_unlocked", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_FPUTC, "fputc", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPUTC_UNLOCKED, "fputc_unlocked", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_FPUTS, "fputs", BT_FN_INT_CONST_STRING_FILEPTR, ATTR_NONNULL_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPUTS_UNLOCKED, "fputs_unlocked", BT_FN_INT_CONST_STRING_FILEPTR, ATTR_NONNULL_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_FSCANF, "fscanf", BT_FN_INT_FILEPTR_CONST_STRING_VAR, ATTR_FORMAT_SCANF_2_3)
+DEF_LIB_BUILTIN        (BUILT_IN_FWRITE, "fwrite", BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR, ATTR_NONNULL_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FWRITE_UNLOCKED, "fwrite_unlocked", BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR, ATTR_NONNULL_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_PRINTF, "printf", BT_FN_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_1_2)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_PRINTF_UNLOCKED, "printf_unlocked", BT_FN_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_1_2)
+DEF_LIB_BUILTIN        (BUILT_IN_PUTCHAR, "putchar", BT_FN_INT_INT, ATTR_NULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_PUTCHAR_UNLOCKED, "putchar_unlocked", BT_FN_INT_INT, ATTR_NULL)
+DEF_LIB_BUILTIN        (BUILT_IN_PUTS, "puts", BT_FN_INT_CONST_STRING, ATTR_NONNULL_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_PUTS_UNLOCKED, "puts_unlocked", BT_FN_INT_CONST_STRING, ATTR_NONNULL_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_SCANF, "scanf", BT_FN_INT_CONST_STRING_VAR, ATTR_FORMAT_SCANF_1_2)
+DEF_C99_BUILTIN        (BUILT_IN_SNPRINTF, "snprintf", BT_FN_INT_STRING_SIZE_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_3_4)
+DEF_LIB_BUILTIN        (BUILT_IN_SPRINTF, "sprintf", BT_FN_INT_STRING_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_2_3)
+DEF_LIB_BUILTIN        (BUILT_IN_SSCANF, "sscanf", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_FORMAT_SCANF_NOTHROW_2_3)
+DEF_LIB_BUILTIN        (BUILT_IN_VFPRINTF, "vfprintf", BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_2_0)
+DEF_C99_BUILTIN        (BUILT_IN_VFSCANF, "vfscanf", BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG, ATTR_FORMAT_SCANF_2_0)
+DEF_LIB_BUILTIN        (BUILT_IN_VPRINTF, "vprintf", BT_FN_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_1_0)
+DEF_C99_BUILTIN        (BUILT_IN_VSCANF, "vscanf", BT_FN_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_SCANF_1_0)
+DEF_C99_BUILTIN        (BUILT_IN_VSNPRINTF, "vsnprintf", BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_3_0)
+DEF_LIB_BUILTIN        (BUILT_IN_VSPRINTF, "vsprintf", BT_FN_INT_STRING_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_2_0)
+DEF_C99_BUILTIN        (BUILT_IN_VSSCANF, "vsscanf", BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG, ATTR_FORMAT_SCANF_NOTHROW_2_0)
+
+/* Category: ctype builtins.  */
+DEF_LIB_BUILTIN        (BUILT_IN_ISALNUM, "isalnum", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISALPHA, "isalpha", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISASCII, "isascii", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_ISBLANK, "isblank", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISCNTRL, "iscntrl", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISDIGIT, "isdigit", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISGRAPH, "isgraph", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISLOWER, "islower", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISPRINT, "isprint", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISPUNCT, "ispunct", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISSPACE, "isspace", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISUPPER, "isupper", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISXDIGIT, "isxdigit", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_TOASCII, "toascii", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_TOLOWER, "tolower", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_TOUPPER, "toupper", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LIST)
+
+/* Category: wctype builtins.  */
+DEF_C94_BUILTIN        (BUILT_IN_ISWALNUM, "iswalnum", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWALPHA, "iswalpha", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_ISWBLANK, "iswblank", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWCNTRL, "iswcntrl", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWDIGIT, "iswdigit", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWGRAPH, "iswgraph", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWLOWER, "iswlower", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWPRINT, "iswprint", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWPUNCT, "iswpunct", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWSPACE, "iswspace", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWUPPER, "iswupper", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWXDIGIT, "iswxdigit", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_TOWLOWER, "towlower", BT_FN_WINT_WINT, ATTR_PURE_NOTHROW_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_TOWUPPER, "towupper", BT_FN_WINT_WINT, ATTR_PURE_NOTHROW_LIST)
+
+/* Category: miscellaneous builtins.  */
+DEF_LIB_BUILTIN        (BUILT_IN_ABORT, "abort", BT_FN_VOID, ATTR_NORETURN_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ABS, "abs", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_AGGREGATE_INCOMING_ADDRESS, "aggregate_incoming_address", BT_FN_PTR_VAR, ATTR_NULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ALLOCA, "alloca", BT_FN_PTR_SIZE, ATTR_MALLOC_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_APPLY, "apply", BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_APPLY_ARGS, "apply_args", BT_FN_PTR_VAR, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_ARGS_INFO, "args_info", BT_FN_INT_INT, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_BSWAP32, "bswap32", BT_FN_UINT32_UINT32, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_BSWAP64, "bswap64", BT_FN_UINT64_UINT64, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_CLEAR_CACHE, "__clear_cache", BT_FN_VOID_PTR_PTR, ATTR_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_CALLOC, "calloc", BT_FN_PTR_SIZE_SIZE, ATTR_MALLOC_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLASSIFY_TYPE, "classify_type", BT_FN_INT_VAR, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_CLZ, "clz", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLZIMAX, "clzimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLZL, "clzl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLZLL, "clzll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CONSTANT_P, "constant_p", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CTZ, "ctz", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CTZIMAX, "ctzimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CTZL, "ctzl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CTZLL, "ctzll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_DCGETTEXT, "dcgettext", BT_FN_STRING_CONST_STRING_CONST_STRING_INT, ATTR_FORMAT_ARG_2)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_DGETTEXT, "dgettext", BT_FN_STRING_CONST_STRING_CONST_STRING, ATTR_FORMAT_ARG_2)
+DEF_GCC_BUILTIN        (BUILT_IN_DWARF_CFA, "dwarf_cfa", BT_FN_PTR, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_DWARF_SP_COLUMN, "dwarf_sp_column", BT_FN_UINT, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_EH_RETURN, "eh_return", BT_FN_VOID_PTRMODE_PTR, ATTR_NORETURN_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_EH_RETURN_DATA_REGNO, "eh_return_data_regno", BT_FN_INT_INT, ATTR_NULL)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECL, "execl", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_SENTINEL_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECLP, "execlp", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_SENTINEL_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECLE, "execle", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_NOTHROW_SENTINEL_1)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECV, "execv", BT_FN_INT_CONST_STRING_PTR_CONST_STRING, ATTR_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECVP, "execvp", BT_FN_INT_CONST_STRING_PTR_CONST_STRING, ATTR_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECVE, "execve", BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING, ATTR_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_EXIT, "exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_EXPECT, "expect", BT_FN_LONG_LONG_LONG, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_EXTEND_POINTER, "extend_pointer", BT_FN_UNWINDWORD_PTR, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_EXTRACT_RETURN_ADDR, "extract_return_addr", BT_FN_PTR_PTR, ATTR_NULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFS, "ffs", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFSIMAX, "ffsimax", BT_FN_INT_INTMAX, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFSL, "ffsl", BT_FN_INT_LONG, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFSLL, "ffsll", BT_FN_INT_LONGLONG, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_FORK, "fork", BT_FN_PID, ATTR_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_FRAME_ADDRESS, "frame_address", BT_FN_PTR_UINT, ATTR_NULL)
+DEF_LIB_BUILTIN        (BUILT_IN_FREE, "free", BT_FN_VOID_PTR, ATTR_NOTHROW_LIST) 
+DEF_GCC_BUILTIN        (BUILT_IN_FROB_RETURN_ADDR, "frob_return_addr", BT_FN_PTR_PTR, ATTR_NULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GETTEXT, "gettext", BT_FN_STRING_CONST_STRING, ATTR_FORMAT_ARG_1)
+DEF_C99_BUILTIN        (BUILT_IN_IMAXABS, "imaxabs", BT_FN_INTMAX_INTMAX, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_INIT_DWARF_REG_SIZES, "init_dwarf_reg_size_table", BT_FN_VOID_PTR, ATTR_NULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITE, "finite", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITEF, "finitef", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITEL, "finitel", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITED32, "finited32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITED64, "finited64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITED128, "finited128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_FPCLASSIFY, "fpclassify", BT_FN_INT_INT_INT_INT_INT_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC)
+DEF_GCC_BUILTIN        (BUILT_IN_ISFINITE, "isfinite", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC)
+DEF_GCC_BUILTIN        (BUILT_IN_ISINF_SIGN, "isinf_sign", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ISINF, "isinf", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFF, "isinff", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFL, "isinfl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFD32, "isinfd32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFD64, "isinfd64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFD128, "isinfd128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ISNAN, "isnan", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNANF, "isnanf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNANL, "isnanl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNAND32, "isnand32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNAND64, "isnand64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNAND128, "isnand128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_ISNORMAL, "isnormal", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC)
+DEF_GCC_BUILTIN        (BUILT_IN_ISGREATER, "isgreater", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC)
+DEF_GCC_BUILTIN        (BUILT_IN_ISGREATEREQUAL, "isgreaterequal", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC)
+DEF_GCC_BUILTIN        (BUILT_IN_ISLESS, "isless", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC)
+DEF_GCC_BUILTIN        (BUILT_IN_ISLESSEQUAL, "islessequal", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC)
+DEF_GCC_BUILTIN        (BUILT_IN_ISLESSGREATER, "islessgreater", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC)
+DEF_GCC_BUILTIN        (BUILT_IN_ISUNORDERED, "isunordered", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC)
+DEF_LIB_BUILTIN        (BUILT_IN_LABS, "labs", BT_FN_LONG_LONG, ATTR_CONST_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_LLABS, "llabs", BT_FN_LONGLONG_LONGLONG, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LONGJMP, "longjmp", BT_FN_VOID_PTR_INT, ATTR_NORETURN_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_MALLOC, "malloc", BT_FN_PTR_SIZE, ATTR_MALLOC_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_NEXT_ARG, "next_arg", BT_FN_PTR_VAR, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_PARITY, "parity", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_PARITYIMAX, "parityimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_PARITYL, "parityl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_PARITYLL, "parityll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNT, "popcount", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNTIMAX, "popcountimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNTL, "popcountl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNTLL, "popcountll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_PREFETCH, "prefetch", BT_FN_VOID_CONST_PTR_VAR, ATTR_NOVOPS_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_REALLOC, "realloc", BT_FN_PTR_PTR_SIZE, ATTR_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_RETURN, "return", BT_FN_VOID_PTR, ATTR_NORETURN_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_RETURN_ADDRESS, "return_address", BT_FN_PTR_UINT, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_SAVEREGS, "saveregs", BT_FN_PTR_VAR, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_SETJMP, "setjmp", BT_FN_INT_PTR, ATTR_NULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRFMON, "strfmon", BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR, ATTR_FORMAT_STRFMON_NOTHROW_3_4)
+DEF_LIB_BUILTIN        (BUILT_IN_STRFTIME, "strftime", BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR, ATTR_FORMAT_STRFTIME_NOTHROW_3_0)
+DEF_GCC_BUILTIN        (BUILT_IN_TRAP, "trap", BT_FN_VOID, ATTR_NORETURN_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_UNWIND_INIT, "unwind_init", BT_FN_VOID, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_UPDATE_SETJMP_BUF, "update_setjmp_buf", BT_FN_VOID_PTR_INT, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_VA_COPY, "va_copy", BT_FN_VOID_VALIST_REF_VALIST_ARG, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_VA_END, "va_end", BT_FN_VOID_VALIST_REF, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_VA_START, "va_start", BT_FN_VOID_VALIST_REF_VAR, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_VA_ARG_PACK, "va_arg_pack", BT_FN_INT, ATTR_PURE_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_VA_ARG_PACK_LEN, "va_arg_pack_len", BT_FN_INT, ATTR_PURE_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN__EXIT, "_exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LIST)
+DEF_C99_BUILTIN        (BUILT_IN__EXIT2, "_Exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LIST)
+
+/* Implementing nested functions.  */
+DEF_BUILTIN_STUB (BUILT_IN_INIT_TRAMPOLINE, "__builtin_init_trampoline")
+DEF_BUILTIN_STUB (BUILT_IN_ADJUST_TRAMPOLINE, "__builtin_adjust_trampoline")
+DEF_BUILTIN_STUB (BUILT_IN_NONLOCAL_GOTO, "__builtin_nonlocal_goto")
+
+/* Implementing __builtin_setjmp.  */
+DEF_BUILTIN_STUB (BUILT_IN_SETJMP_SETUP, "__builtin_setjmp_setup")
+DEF_BUILTIN_STUB (BUILT_IN_SETJMP_DISPATCHER, "__builtin_setjmp_dispatcher")
+DEF_BUILTIN_STUB (BUILT_IN_SETJMP_RECEIVER, "__builtin_setjmp_receiver")
+
+/* Implementing variable sized local variables.  */
+DEF_BUILTIN_STUB (BUILT_IN_STACK_SAVE, "__builtin_stack_save")
+DEF_BUILTIN_STUB (BUILT_IN_STACK_RESTORE, "__builtin_stack_restore")
+
+/* Object size checking builtins.  */
+DEF_GCC_BUILTIN               (BUILT_IN_OBJECT_SIZE, "object_size", BT_FN_SIZE_CONST_PTR_INT, ATTR_PURE_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMCPY_CHK, "__memcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMMOVE_CHK, "__memmove_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMPCPY_CHK, "__mempcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMSET_CHK, "__memset_chk", BT_FN_PTR_PTR_INT_SIZE_SIZE, ATTR_NOTHROW_NONNULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPCPY_CHK, "__stpcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCAT_CHK, "__strcat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCPY_CHK, "__strcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCAT_CHK, "__strncat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCPY_CHK, "__strncpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SNPRINTF_CHK, "__snprintf_chk", BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_5_6)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SPRINTF_CHK, "__sprintf_chk", BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_4_5)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_VSNPRINTF_CHK, "__vsnprintf_chk", BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_5_0)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_VSPRINTF_CHK, "__vsprintf_chk", BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_4_0)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPRINTF_CHK, "__fprintf_chk", BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_3_4)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_PRINTF_CHK, "__printf_chk", BT_FN_INT_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_2_3)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_VFPRINTF_CHK, "__vfprintf_chk", BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_3_0)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_VPRINTF_CHK, "__vprintf_chk", BT_FN_INT_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_2_0)
+
+/* Profiling hooks.  */
+DEF_BUILTIN_STUB (BUILT_IN_PROFILE_FUNC_ENTER, "profile_func_enter")
+DEF_BUILTIN_STUB (BUILT_IN_PROFILE_FUNC_EXIT, "profile_func_exit")
+
+/* TLS emulation.  */
+DEF_BUILTIN (BUILT_IN_EMUTLS_GET_ADDRESS, targetm.emutls.get_address,
+            BUILT_IN_NORMAL,
+            BT_FN_PTR_PTR,  BT_FN_PTR_PTR,
+            true, true, true, ATTR_CONST_NOTHROW_NONNULL, false,
+            !targetm.have_tls)
+DEF_BUILTIN (BUILT_IN_EMUTLS_REGISTER_COMMON,
+            targetm.emutls.register_common, BUILT_IN_NORMAL,
+            BT_FN_VOID_PTR_WORD_WORD_PTR, BT_FN_VOID_PTR_WORD_WORD_PTR,
+            true, true, true, ATTR_NOTHROW_LIST, false,
+            !targetm.have_tls)
+
+/* Synchronization Primitives.  */
+#include "sync-builtins.def"
+
+/* OpenMP builtins.  */
+#include "omp-builtins.def"
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/c-common.def b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/c-common.def
new file mode 100644 (file)
index 0000000..54ebfc4
--- /dev/null
@@ -0,0 +1,38 @@
+/* This file contains the definitions and documentation for the
+   additional tree codes used in the GNU C compiler (see tree.def
+   for the standard codes).
+   Copyright (C) 1987, 1988, 1990, 1993, 1997, 1998,
+   1999, 2000, 2001, 2004, 2005, 2007 Free Software Foundation, Inc.
+   Written by Benjamin Chelf <chelf@codesourcery.com>
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* Tree nodes used in the C frontend.  These are also shared with the
+   C++ and Objective C frontends.  */
+
+/* A COMPOUND_LITERAL_EXPR represents a C99 compound literal.  The
+   COMPOUND_LITERAL_EXPR_DECL_STMT is the a DECL_STMT containing the decl
+   for the anonymous object represented by the COMPOUND_LITERAL;
+   the DECL_INITIAL of that decl is the CONSTRUCTOR that initializes
+   the compound literal.  */
+DEFTREECODE (COMPOUND_LITERAL_EXPR, "compound_literal_expr", tcc_expression, 1)
+
+/*
+Local variables:
+mode:c
+End:
+*/
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cfghooks.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cfghooks.h
new file mode 100644 (file)
index 0000000..8d6a669
--- /dev/null
@@ -0,0 +1,197 @@
+/* Hooks for cfg representation specific functions.
+   Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
+   Free Software Foundation, Inc.
+   Contributed by Sebastian Pop <s.pop@laposte.net>
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_CFGHOOKS_H
+#define GCC_CFGHOOKS_H
+
+struct cfg_hooks
+{
+  /* Name of the corresponding ir.  */
+  const char *name;
+
+  /* Debugging.  */
+  int (*verify_flow_info) (void);
+  void (*dump_bb) (basic_block, FILE *, int, int);
+
+  /* Basic CFG manipulation.  */
+
+  /* Return new basic block.  */
+  basic_block (*create_basic_block) (void *head, void *end, basic_block after);
+
+  /* Redirect edge E to the given basic block B and update underlying program
+     representation.  Returns edge representing redirected branch (that may not
+     be equivalent to E in the case of duplicate edges being removed) or NULL
+     if edge is not easily redirectable for whatever reason.  */
+  edge (*redirect_edge_and_branch) (edge e, basic_block b);
+
+  /* Same as the above but allows redirecting of fallthru edges.  In that case
+     newly created forwarder basic block is returned.  The edge must
+     not be abnormal.  */
+  basic_block (*redirect_edge_and_branch_force) (edge, basic_block);
+
+  /* Returns true if it is possible to remove the edge by redirecting it
+     to the destination of the other edge going from its source.  */
+  bool (*can_remove_branch_p) (const_edge);
+
+  /* Remove statements corresponding to a given basic block.  */
+  void (*delete_basic_block) (basic_block);
+
+  /* Creates a new basic block just after basic block B by splitting
+     everything after specified instruction I.  */
+  basic_block (*split_block) (basic_block b, void * i);
+  
+  /* Move block B immediately after block A.  */
+  bool (*move_block_after) (basic_block b, basic_block a);
+
+  /* Return true when blocks A and B can be merged into single basic block.  */
+  bool (*can_merge_blocks_p) (basic_block a, basic_block b);
+
+  /* Merge blocks A and B.  */
+  void (*merge_blocks) (basic_block a, basic_block b);
+
+  /* Predict edge E using PREDICTOR to given PROBABILITY.  */
+  void (*predict_edge) (edge e, enum br_predictor predictor, int probability);
+
+  /* Return true if the one of outgoing edges is already predicted by
+     PREDICTOR.  */
+  bool (*predicted_by_p) (const_basic_block bb, enum br_predictor predictor);
+
+  /* Return true when block A can be duplicated.  */
+  bool (*can_duplicate_block_p) (const_basic_block a);
+
+  /* Duplicate block A.  */
+  basic_block (*duplicate_block) (basic_block a);
+
+  /* Higher level functions representable by primitive operations above if
+     we didn't have some oddities in RTL and Tree representations.  */
+  basic_block (*split_edge) (edge);
+  void (*make_forwarder_block) (edge);
+
+  /* Tries to make the edge fallthru.  */
+  void (*tidy_fallthru_edge) (edge);
+
+  /* Say whether a block ends with a call, possibly followed by some
+     other code that must stay with the call.  */
+  bool (*block_ends_with_call_p) (basic_block);
+
+  /* Say whether a block ends with a conditional branch.  Switches
+     and unconditional branches do not qualify.  */
+  bool (*block_ends_with_condjump_p) (const_basic_block);
+
+  /* Add fake edges to the function exit for any non constant and non noreturn
+     calls, volatile inline assembly in the bitmap of blocks specified by
+     BLOCKS or to the whole CFG if BLOCKS is zero.  Return the number of blocks
+     that were split.
+
+     The goal is to expose cases in which entering a basic block does not imply
+     that all subsequent instructions must be executed.  */
+  int (*flow_call_edges_add) (sbitmap);
+
+  /* This function is called immediately after edge E is added to the
+     edge vector E->dest->preds.  */
+  void (*execute_on_growing_pred) (edge);
+
+  /* This function is called immediately before edge E is removed from
+     the edge vector E->dest->preds.  */
+  void (*execute_on_shrinking_pred) (edge);
+
+  /* A hook for duplicating loop in CFG, currently this is used
+     in loop versioning.  */
+  bool (*cfg_hook_duplicate_loop_to_header_edge) (struct loop *, edge,
+                                                 unsigned, sbitmap,
+                                                 edge, VEC (edge, heap) **,
+                                                 int);
+
+  /* Add condition to new basic block and update CFG used in loop
+     versioning.  */
+  void (*lv_add_condition_to_bb) (basic_block, basic_block, basic_block,
+                                 void *);
+  /* Update the PHI nodes in case of loop versioning.  */
+  void (*lv_adjust_loop_header_phi) (basic_block, basic_block,
+                                    basic_block, edge);
+
+  /* Given a condition BB extract the true/false taken/not taken edges
+     (depending if we are on tree's or RTL). */
+  void (*extract_cond_bb_edges) (basic_block, edge *, edge *);
+
+
+  /* Add PHI arguments queued in PENDINT_STMT list on edge E to edge
+     E->dest (only in tree-ssa loop versioning.  */
+  void (*flush_pending_stmts) (edge);
+};
+
+extern void verify_flow_info (void);
+extern void dump_bb (basic_block, FILE *, int);
+extern edge redirect_edge_and_branch (edge, basic_block);
+extern basic_block redirect_edge_and_branch_force (edge, basic_block);
+extern bool can_remove_branch_p (const_edge);
+extern void remove_branch (edge);
+extern void remove_edge (edge);
+extern edge split_block (basic_block, void *);
+extern edge split_block_after_labels (basic_block);
+extern bool move_block_after (basic_block, basic_block);
+extern void delete_basic_block (basic_block);
+extern basic_block split_edge (edge);
+extern basic_block create_basic_block (void *, void *, basic_block);
+extern basic_block create_empty_bb (basic_block);
+extern bool can_merge_blocks_p (basic_block, basic_block);
+extern void merge_blocks (basic_block, basic_block);
+extern edge make_forwarder_block (basic_block, bool (*)(edge),
+                                 void (*) (basic_block));
+extern void tidy_fallthru_edge (edge);
+extern void tidy_fallthru_edges (void);
+extern void predict_edge (edge e, enum br_predictor predictor, int probability);
+extern bool predicted_by_p (const_basic_block bb, enum br_predictor predictor);
+extern bool can_duplicate_block_p (const_basic_block);
+extern basic_block duplicate_block (basic_block, edge, basic_block);
+extern bool block_ends_with_call_p (basic_block bb);
+extern bool block_ends_with_condjump_p (const_basic_block bb);
+extern int flow_call_edges_add (sbitmap);
+extern void execute_on_growing_pred (edge);
+extern void execute_on_shrinking_pred (edge);
+extern bool cfg_hook_duplicate_loop_to_header_edge (struct loop *loop, edge,
+                                                   unsigned int ndupl,
+                                                   sbitmap wont_exit,
+                                                   edge orig,
+                                                   VEC (edge, heap) **to_remove,
+                                                   int flags);
+
+extern void lv_flush_pending_stmts (edge);
+extern void extract_cond_bb_edges (basic_block, edge *, edge*);
+extern void lv_adjust_loop_header_phi (basic_block, basic_block, basic_block,
+                                      edge);
+extern void lv_add_condition_to_bb (basic_block, basic_block, basic_block,
+                                   void *);
+
+/* Hooks containers.  */
+extern struct cfg_hooks gimple_cfg_hooks;
+extern struct cfg_hooks rtl_cfg_hooks;
+extern struct cfg_hooks cfg_layout_rtl_cfg_hooks;
+
+/* Declarations.  */
+extern enum ir_type current_ir_type (void);
+extern void rtl_register_cfg_hooks (void);
+extern void cfg_layout_rtl_register_cfg_hooks (void);
+extern void gimple_register_cfg_hooks (void);
+extern struct cfg_hooks get_cfg_hooks (void);
+extern void set_cfg_hooks (struct cfg_hooks);
+
+#endif  /* GCC_CFGHOOKS_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config.h
new file mode 100644 (file)
index 0000000..aa6dd6b
--- /dev/null
@@ -0,0 +1,10 @@
+#ifndef GCC_CONFIG_H
+#define GCC_CONFIG_H
+#ifdef GENERATOR_FILE
+#error config.h is for the host, not build, machine.
+#endif
+#include "auto-host.h"
+#ifdef IN_GCC
+# include "ansidecl.h"
+#endif
+#endif /* GCC_CONFIG_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/aout.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/aout.h
new file mode 100644 (file)
index 0000000..e910422
--- /dev/null
@@ -0,0 +1,343 @@
+/* Definitions of target machine for GNU compiler, for ARM with a.out
+   Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2004, 2007, 2008
+   Free Software Foundation, Inc.
+   Contributed by Richard Earnshaw (rearnsha@armltd.co.uk).
+   
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published
+   by the Free Software Foundation; either version 3, or (at your
+   option) any later version.
+
+   GCC is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef ASM_APP_ON
+#define ASM_APP_ON             ""
+#endif
+#ifndef ASM_APP_OFF
+#define ASM_APP_OFF            ""
+#endif
+
+/* Switch to the text or data segment.  */
+#define TEXT_SECTION_ASM_OP    "\t.text"
+#define DATA_SECTION_ASM_OP    "\t.data"
+#define BSS_SECTION_ASM_OP     "\t.bss"
+
+/* Note: If USER_LABEL_PREFIX or LOCAL_LABEL_PREFIX are changed,
+   make sure that this change is reflected in the function
+   coff_arm_is_local_label_name() in bfd/coff-arm.c.  */
+#ifndef REGISTER_PREFIX
+#define REGISTER_PREFIX        ""
+#endif
+
+#ifndef USER_LABEL_PREFIX
+#define USER_LABEL_PREFIX      "_"
+#endif
+
+#ifndef LOCAL_LABEL_PREFIX
+#define LOCAL_LABEL_PREFIX     ""
+#endif
+
+/* The assembler's names for the registers.  Note that the ?xx registers are
+   there so that VFPv3/NEON registers D16-D31 have the same spacing as D0-D15
+   (each of which is overlaid on two S registers), although there are no
+   actual single-precision registers which correspond to D16-D31.  */
+#ifndef REGISTER_NAMES
+#define REGISTER_NAMES                            \
+{                                                 \
+  "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",  \
+  "r8", "r9", "sl", "fp", "ip", "sp", "lr", "pc",  \
+  "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",  \
+  "cc", "sfp", "afp",                             \
+  "mv0",   "mv1",   "mv2",   "mv3",               \
+  "mv4",   "mv5",   "mv6",   "mv7",               \
+  "mv8",   "mv9",   "mv10",  "mv11",              \
+  "mv12",  "mv13",  "mv14",  "mv15",              \
+  "wcgr0", "wcgr1", "wcgr2", "wcgr3",             \
+  "wr0",   "wr1",   "wr2",   "wr3",               \
+  "wr4",   "wr5",   "wr6",   "wr7",               \
+  "wr8",   "wr9",   "wr10",  "wr11",              \
+  "wr12",  "wr13",  "wr14",  "wr15",              \
+  "s0",  "s1",  "s2",  "s3",  "s4",  "s5",  "s6",  "s7",  \
+  "s8",  "s9",  "s10", "s11", "s12", "s13", "s14", "s15", \
+  "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \
+  "s24", "s25", "s26", "s27", "s28", "s29", "s30", "s31", \
+  "d16", "?16", "d17", "?17", "d18", "?18", "d19", "?19", \
+  "d20", "?20", "d21", "?21", "d22", "?22", "d23", "?23", \
+  "d24", "?24", "d25", "?25", "d26", "?26", "d27", "?27", \
+  "d28", "?28", "d29", "?29", "d30", "?30", "d31", "?31", \
+  "vfpcc"                                         \
+}
+#endif
+
+#ifndef ADDITIONAL_REGISTER_NAMES
+#define ADDITIONAL_REGISTER_NAMES              \
+{                                              \
+  {"a1", 0},                                   \
+  {"a2", 1},                                   \
+  {"a3", 2},                                   \
+  {"a4", 3},                                   \
+  {"v1", 4},                                   \
+  {"v2", 5},                                   \
+  {"v3", 6},                                   \
+  {"v4", 7},                                   \
+  {"v5", 8},                                   \
+  {"v6", 9},                                   \
+  {"rfp", 9}, /* Gcc used to call it this */   \
+  {"sb", 9},                                   \
+  {"v7", 10},                                  \
+  {"r10", 10}, /* sl */                        \
+  {"r11", 11}, /* fp */                        \
+  {"r12", 12}, /* ip */                        \
+  {"r13", 13}, /* sp */                        \
+  {"r14", 14}, /* lr */                        \
+  {"r15", 15}, /* pc */                        \
+  {"mvf0", 27},                                        \
+  {"mvf1", 28},                                        \
+  {"mvf2", 29},                                        \
+  {"mvf3", 30},                                        \
+  {"mvf4", 31},                                        \
+  {"mvf5", 32},                                        \
+  {"mvf6", 33},                                        \
+  {"mvf7", 34},                                        \
+  {"mvf8", 35},                                        \
+  {"mvf9", 36},                                        \
+  {"mvf10", 37},                               \
+  {"mvf11", 38},                               \
+  {"mvf12", 39},                               \
+  {"mvf13", 40},                               \
+  {"mvf14", 41},                               \
+  {"mvf15", 42},                               \
+  {"mvd0", 27},                                        \
+  {"mvd1", 28},                                        \
+  {"mvd2", 29},                                        \
+  {"mvd3", 30},                                        \
+  {"mvd4", 31},                                        \
+  {"mvd5", 32},                                        \
+  {"mvd6", 33},                                        \
+  {"mvd7", 34},                                        \
+  {"mvd8", 35},                                        \
+  {"mvd9", 36},                                        \
+  {"mvd10", 37},                               \
+  {"mvd11", 38},                               \
+  {"mvd12", 39},                               \
+  {"mvd13", 40},                               \
+  {"mvd14", 41},                               \
+  {"mvd15", 42},                               \
+  {"mvfx0", 27},                               \
+  {"mvfx1", 28},                               \
+  {"mvfx2", 29},                               \
+  {"mvfx3", 30},                               \
+  {"mvfx4", 31},                               \
+  {"mvfx5", 32},                               \
+  {"mvfx6", 33},                               \
+  {"mvfx7", 34},                               \
+  {"mvfx8", 35},                               \
+  {"mvfx9", 36},                               \
+  {"mvfx10", 37},                              \
+  {"mvfx11", 38},                              \
+  {"mvfx12", 39},                              \
+  {"mvfx13", 40},                              \
+  {"mvfx14", 41},                              \
+  {"mvfx15", 42},                              \
+  {"mvdx0", 27},                               \
+  {"mvdx1", 28},                               \
+  {"mvdx2", 29},                               \
+  {"mvdx3", 30},                               \
+  {"mvdx4", 31},                               \
+  {"mvdx5", 32},                               \
+  {"mvdx6", 33},                               \
+  {"mvdx7", 34},                               \
+  {"mvdx8", 35},                               \
+  {"mvdx9", 36},                               \
+  {"mvdx10", 37},                              \
+  {"mvdx11", 38},                              \
+  {"mvdx12", 39},                              \
+  {"mvdx13", 40},                              \
+  {"mvdx14", 41},                              \
+  {"mvdx15", 42},                              \
+  {"d0", 63}, {"q0", 63},                      \
+  {"d1", 65},                                  \
+  {"d2", 67}, {"q1", 67},                      \
+  {"d3", 69},                                  \
+  {"d4", 71}, {"q2", 71},                      \
+  {"d5", 73},                                  \
+  {"d6", 75}, {"q3", 75},                      \
+  {"d7", 77},                                  \
+  {"d8", 79}, {"q4", 79},                      \
+  {"d9", 81},                                  \
+  {"d10", 83}, {"q5", 83},                     \
+  {"d11", 85},                                 \
+  {"d12", 87}, {"q6", 87},                     \
+  {"d13", 89},                                 \
+  {"d14", 91}, {"q7", 91},                     \
+  {"d15", 93},                                 \
+  {"q8", 95},                                  \
+  {"q9", 99},                                  \
+  {"q10", 103},                                        \
+  {"q11", 107},                                        \
+  {"q12", 111},                                        \
+  {"q13", 115},                                        \
+  {"q14", 119},                                        \
+  {"q15", 123}                                 \
+}
+#endif
+
+#ifndef NO_DOLLAR_IN_LABEL
+#define NO_DOLLAR_IN_LABEL 1
+#endif
+
+/* Generate DBX debugging information.  riscix.h will undefine this because
+   the native assembler does not support stabs.  */
+#define DBX_DEBUGGING_INFO 1
+
+/* Acorn dbx moans about continuation chars, so don't use any.  */
+#ifndef DBX_CONTIN_LENGTH
+#define DBX_CONTIN_LENGTH  0
+#endif
+
+/* Output a function label definition.  */
+#ifndef ASM_DECLARE_FUNCTION_NAME
+#define ASM_DECLARE_FUNCTION_NAME(STREAM, NAME, DECL)  \
+  do                                                   \
+    {                                                  \
+      ARM_DECLARE_FUNCTION_NAME (STREAM, NAME, DECL);   \
+      ASM_OUTPUT_LABEL (STREAM, NAME);                 \
+    }                                                  \
+  while (0)
+#endif
+
+/* Globalizing directive for a label.  */
+#define GLOBAL_ASM_OP "\t.global\t"
+
+/* Make an internal label into a string.  */
+#ifndef ASM_GENERATE_INTERNAL_LABEL
+#define ASM_GENERATE_INTERNAL_LABEL(STRING, PREFIX, NUM)  \
+  sprintf (STRING, "*%s%s%u", LOCAL_LABEL_PREFIX, PREFIX, (unsigned int)(NUM))
+#endif
+     
+/* Output an element of a dispatch table.  */
+#define ASM_OUTPUT_ADDR_VEC_ELT(STREAM, VALUE)                 \
+  do                                                           \
+    {                                                          \
+      gcc_assert (!TARGET_THUMB2);                             \
+      asm_fprintf (STREAM, "\t.word\t%LL%d\n", VALUE);         \
+    }                                                          \
+  while (0)
+         
+
+/* Thumb-2 always uses addr_diff_elf so that the Table Branch instructions
+   can be used.  For non-pic code where the offsets do not suitable for
+   TBB/TBH the elements are output as absolute labels.  */
+#define ASM_OUTPUT_ADDR_DIFF_ELT(STREAM, BODY, VALUE, REL)             \
+  do                                                                   \
+    {                                                                  \
+      if (TARGET_ARM)                                                  \
+       asm_fprintf (STREAM, "\tb\t%LL%d\n", VALUE);                    \
+      else if (TARGET_THUMB1)                                          \
+       asm_fprintf (STREAM, "\t.word\t%LL%d-%LL%d\n", VALUE, REL);     \
+      else /* Thumb-2 */                                               \
+       {                                                               \
+         switch (GET_MODE(body))                                       \
+           {                                                           \
+           case QImode: /* TBB */                                      \
+             asm_fprintf (STREAM, "\t.byte\t(%LL%d-%LL%d)/2\n",        \
+                          VALUE, REL);                                 \
+             break;                                                    \
+           case HImode: /* TBH */                                      \
+             asm_fprintf (STREAM, "\t.2byte\t(%LL%d-%LL%d)/2\n",       \
+                          VALUE, REL);                                 \
+             break;                                                    \
+           case SImode:                                                \
+             if (flag_pic)                                             \
+               asm_fprintf (STREAM, "\t.word\t%LL%d+1-%LL%d\n", VALUE, REL); \
+             else                                                      \
+               asm_fprintf (STREAM, "\t.word\t%LL%d+1\n", VALUE);      \
+             break;                                                    \
+           default:                                                    \
+             gcc_unreachable();                                        \
+           }                                                           \
+       }                                                               \
+    }                                                                  \
+  while (0)
+
+
+#undef  ASM_OUTPUT_ASCII
+#define ASM_OUTPUT_ASCII(STREAM, PTR, LEN)  \
+  output_ascii_pseudo_op (STREAM, (const unsigned char *) (PTR), LEN)
+
+/* Output a gap.  In fact we fill it with nulls.  */
+#undef  ASM_OUTPUT_SKIP
+#define ASM_OUTPUT_SKIP(STREAM, NBYTES)        \
+  fprintf (STREAM, "\t.space\t%d\n", (int) (NBYTES))
+
+/* Align output to a power of two.  Horrible /bin/as.  */
+#ifndef ASM_OUTPUT_ALIGN  
+#define ASM_OUTPUT_ALIGN(STREAM, POWER)                        \
+  do                                                   \
+    {                                                  \
+      register int amount = 1 << (POWER);              \
+                                                       \
+      if (amount == 2)                                 \
+       fprintf (STREAM, "\t.even\n");                  \
+      else if (amount != 1)                            \
+       fprintf (STREAM, "\t.align\t%d\n", amount - 4); \
+    }                                                  \
+  while (0)
+#endif
+
+/* Output a common block.  */
+#ifndef ASM_OUTPUT_COMMON
+#define ASM_OUTPUT_COMMON(STREAM, NAME, SIZE, ROUNDED) \
+  do                                                   \
+    {                                                  \
+      fprintf (STREAM, "\t.comm\t");                   \
+      assemble_name (STREAM, NAME);                    \
+      asm_fprintf (STREAM, ", %d\t%@ %d\n",            \
+                  (int)(ROUNDED), (int)(SIZE));        \
+    }                                                  \
+  while (0)
+#endif
+     
+/* Output a local common block.  /bin/as can't do this, so hack a
+   `.space' into the bss segment.  Note that this is *bad* practice,
+   which is guaranteed NOT to work since it doesn't define STATIC
+   COMMON space but merely STATIC BSS space.  */
+#ifndef ASM_OUTPUT_ALIGNED_LOCAL
+#define ASM_OUTPUT_ALIGNED_LOCAL(STREAM, NAME, SIZE, ALIGN)            \
+  do                                                                   \
+    {                                                                  \
+      switch_to_section (bss_section);                                 \
+      ASM_OUTPUT_ALIGN (STREAM, floor_log2 (ALIGN / BITS_PER_UNIT));   \
+      ASM_OUTPUT_LABEL (STREAM, NAME);                                 \
+      fprintf (STREAM, "\t.space\t%d\n", (int)(SIZE));                 \
+    }                                                                  \
+  while (0)
+#endif
+     
+/* Output a zero-initialized block.  */
+#ifndef ASM_OUTPUT_ALIGNED_BSS
+#define ASM_OUTPUT_ALIGNED_BSS(STREAM, DECL, NAME, SIZE, ALIGN) \
+  asm_output_aligned_bss (STREAM, DECL, NAME, SIZE, ALIGN)
+#endif
+
+/* Output a #ident directive.  */
+#ifndef ASM_OUTPUT_IDENT
+#define ASM_OUTPUT_IDENT(STREAM,STRING)  \
+  asm_fprintf (STREAM, "%@ - - - ident %s\n", STRING)
+#endif
+     
+#ifndef ASM_COMMENT_START
+#define ASM_COMMENT_START      "@"
+#endif
+
+/* This works for GAS and some other assemblers.  */
+#define SET_ASM_OP             "\t.set\t"
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/arm.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/arm.h
new file mode 100644 (file)
index 0000000..f5ec9e7
--- /dev/null
@@ -0,0 +1,2868 @@
+/* Definitions of target machine for GNU compiler, for ARM.
+   Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+   Free Software Foundation, Inc.
+   Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
+   and Martin Simmons (@harleqn.co.uk).
+   More major hacks by Richard Earnshaw (rearnsha@arm.com)
+   Minor hacks by Nick Clifton (nickc@cygnus.com)
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published
+   by the Free Software Foundation; either version 3, or (at your
+   option) any later version.
+
+   GCC is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_ARM_H
+#define GCC_ARM_H
+
+#include "config/vxworks-dummy.h"
+
+/* The architecture define.  */
+extern char arm_arch_name[];
+
+/* Target CPU builtins.  */
+#define TARGET_CPU_CPP_BUILTINS()                      \
+  do                                                   \
+    {                                                  \
+       /* Define __arm__ even when in thumb mode, for  \
+          consistency with armcc.  */                  \
+       builtin_define ("__arm__");                     \
+       builtin_define ("__APCS_32__");                 \
+       if (TARGET_THUMB)                               \
+         builtin_define ("__thumb__");                 \
+       if (TARGET_THUMB2)                              \
+         builtin_define ("__thumb2__");                \
+                                                       \
+       if (TARGET_BIG_END)                             \
+         {                                             \
+           builtin_define ("__ARMEB__");               \
+           if (TARGET_THUMB)                           \
+             builtin_define ("__THUMBEB__");           \
+           if (TARGET_LITTLE_WORDS)                    \
+             builtin_define ("__ARMWEL__");            \
+         }                                             \
+        else                                           \
+         {                                             \
+           builtin_define ("__ARMEL__");               \
+           if (TARGET_THUMB)                           \
+             builtin_define ("__THUMBEL__");           \
+         }                                             \
+                                                       \
+       if (TARGET_SOFT_FLOAT)                          \
+         builtin_define ("__SOFTFP__");                \
+                                                       \
+       if (TARGET_VFP)                                 \
+         builtin_define ("__VFP_FP__");                \
+                                                       \
+       if (TARGET_NEON)                                \
+         builtin_define ("__ARM_NEON__");              \
+                                                       \
+       /* Add a define for interworking.               \
+          Needed when building libgcc.a.  */           \
+       if (arm_cpp_interwork)                          \
+         builtin_define ("__THUMB_INTERWORK__");       \
+                                                       \
+       builtin_assert ("cpu=arm");                     \
+       builtin_assert ("machine=arm");                 \
+                                                       \
+       builtin_define (arm_arch_name);                 \
+       if (arm_arch_cirrus)                            \
+         builtin_define ("__MAVERICK__");              \
+       if (arm_arch_xscale)                            \
+         builtin_define ("__XSCALE__");                \
+       if (arm_arch_iwmmxt)                            \
+         builtin_define ("__IWMMXT__");                \
+       if (TARGET_AAPCS_BASED)                         \
+         builtin_define ("__ARM_EABI__");              \
+    } while (0)
+
+/* The various ARM cores.  */
+enum processor_type
+{
+#define ARM_CORE(NAME, IDENT, ARCH, FLAGS, COSTS) \
+  IDENT,
+#include "arm-cores.def"
+#undef ARM_CORE
+  /* Used to indicate that no processor has been specified.  */
+  arm_none
+};
+
+enum target_cpus
+{
+#define ARM_CORE(NAME, IDENT, ARCH, FLAGS, COSTS) \
+  TARGET_CPU_##IDENT,
+#include "arm-cores.def"
+#undef ARM_CORE
+  TARGET_CPU_generic
+};
+
+/* The processor for which instructions should be scheduled.  */
+extern enum processor_type arm_tune;
+
+typedef enum arm_cond_code
+{
+  ARM_EQ = 0, ARM_NE, ARM_CS, ARM_CC, ARM_MI, ARM_PL, ARM_VS, ARM_VC,
+  ARM_HI, ARM_LS, ARM_GE, ARM_LT, ARM_GT, ARM_LE, ARM_AL, ARM_NV
+}
+arm_cc;
+
+extern arm_cc arm_current_cc;
+
+#define ARM_INVERSE_CONDITION_CODE(X)  ((arm_cc) (((int)X) ^ 1))
+
+extern int arm_target_label;
+extern int arm_ccfsm_state;
+extern GTY(()) rtx arm_target_insn;
+/* Define the information needed to generate branch insns.  This is
+   stored from the compare operation.  */
+extern GTY(()) rtx arm_compare_op0;
+extern GTY(()) rtx arm_compare_op1;
+/* The label of the current constant pool.  */
+extern rtx pool_vector_label;
+/* Set to 1 when a return insn is output, this means that the epilogue
+   is not needed.  */
+extern int return_used_this_function;
+/* Callback to output language specific object attributes.  */
+extern void (*arm_lang_output_object_attributes_hook)(void);
+\f
+/* Just in case configure has failed to define anything.  */
+#ifndef TARGET_CPU_DEFAULT
+#define TARGET_CPU_DEFAULT TARGET_CPU_generic
+#endif
+
+
+#undef  CPP_SPEC
+#define CPP_SPEC "%(subtarget_cpp_spec)                                        \
+%{msoft-float:%{mhard-float:                                           \
+       %e-msoft-float and -mhard_float may not be used together}}      \
+%{mbig-endian:%{mlittle-endian:                                                \
+       %e-mbig-endian and -mlittle-endian may not be used together}}"
+
+#ifndef CC1_SPEC
+#define CC1_SPEC ""
+#endif
+
+/* This macro defines names of additional specifications to put in the specs
+   that can be used in various specifications like CC1_SPEC.  Its definition
+   is an initializer with a subgrouping for each command option.
+
+   Each subgrouping contains a string constant, that defines the
+   specification name, and a string constant that used by the GCC driver
+   program.
+
+   Do not define this macro if it does not need to do anything.  */
+#define EXTRA_SPECS                                            \
+  { "subtarget_cpp_spec",      SUBTARGET_CPP_SPEC },           \
+  SUBTARGET_EXTRA_SPECS
+
+#ifndef SUBTARGET_EXTRA_SPECS
+#define SUBTARGET_EXTRA_SPECS
+#endif
+
+#ifndef SUBTARGET_CPP_SPEC
+#define SUBTARGET_CPP_SPEC      ""
+#endif
+\f
+/* Run-time Target Specification.  */
+#ifndef TARGET_VERSION
+#define TARGET_VERSION fputs (" (ARM/generic)", stderr);
+#endif
+
+#define TARGET_SOFT_FLOAT              (arm_float_abi == ARM_FLOAT_ABI_SOFT)
+/* Use hardware floating point instructions. */
+#define TARGET_HARD_FLOAT              (arm_float_abi != ARM_FLOAT_ABI_SOFT)
+/* Use hardware floating point calling convention.  */
+#define TARGET_HARD_FLOAT_ABI          (arm_float_abi == ARM_FLOAT_ABI_HARD)
+#define TARGET_FPA                     (arm_fp_model == ARM_FP_MODEL_FPA)
+#define TARGET_MAVERICK                        (arm_fp_model == ARM_FP_MODEL_MAVERICK)
+#define TARGET_VFP                     (arm_fp_model == ARM_FP_MODEL_VFP)
+#define TARGET_IWMMXT                  (arm_arch_iwmmxt)
+#define TARGET_REALLY_IWMMXT           (TARGET_IWMMXT && TARGET_32BIT)
+#define TARGET_IWMMXT_ABI (TARGET_32BIT && arm_abi == ARM_ABI_IWMMXT)
+#define TARGET_ARM                      (! TARGET_THUMB)
+#define TARGET_EITHER                  1 /* (TARGET_ARM | TARGET_THUMB) */
+#define TARGET_BACKTRACE               (leaf_function_p () \
+                                        ? TARGET_TPCS_LEAF_FRAME \
+                                        : TARGET_TPCS_FRAME)
+#define TARGET_LDRD                    (arm_arch5e && ARM_DOUBLEWORD_ALIGN)
+#define TARGET_AAPCS_BASED \
+    (arm_abi != ARM_ABI_APCS && arm_abi != ARM_ABI_ATPCS)
+
+#define TARGET_HARD_TP                 (target_thread_pointer == TP_CP15)
+#define TARGET_SOFT_TP                 (target_thread_pointer == TP_SOFT)
+
+/* Only 16-bit thumb code.  */
+#define TARGET_THUMB1                  (TARGET_THUMB && !arm_arch_thumb2)
+/* Arm or Thumb-2 32-bit code.  */
+#define TARGET_32BIT                   (TARGET_ARM || arm_arch_thumb2)
+/* 32-bit Thumb-2 code.  */
+#define TARGET_THUMB2                  (TARGET_THUMB && arm_arch_thumb2)
+/* Thumb-1 only.  */
+#define TARGET_THUMB1_ONLY             (TARGET_THUMB1 && !arm_arch_notm)
+
+/* The following two macros concern the ability to execute coprocessor
+   instructions for VFPv3 or NEON.  TARGET_VFP3/TARGET_VFPD32 are currently
+   only ever tested when we know we are generating for VFP hardware; we need
+   to be more careful with TARGET_NEON as noted below.  */
+
+/* FPU is has the full VFPv3/NEON register file of 32 D registers.  */
+#define TARGET_VFPD32 (arm_fp_model == ARM_FP_MODEL_VFP \
+                      && (arm_fpu_arch == FPUTYPE_VFP3 \
+                          || arm_fpu_arch == FPUTYPE_NEON))
+
+/* FPU supports VFPv3 instructions.  */
+#define TARGET_VFP3 (arm_fp_model == ARM_FP_MODEL_VFP \
+                    && (arm_fpu_arch == FPUTYPE_VFP3D16 \
+                        || TARGET_VFPD32))
+
+/* FPU supports Neon instructions.  The setting of this macro gets
+   revealed via __ARM_NEON__ so we add extra guards upon TARGET_32BIT
+   and TARGET_HARD_FLOAT to ensure that NEON instructions are
+   available.  */
+#define TARGET_NEON (TARGET_32BIT && TARGET_HARD_FLOAT \
+                    && arm_fp_model == ARM_FP_MODEL_VFP \
+                    && arm_fpu_arch == FPUTYPE_NEON)
+
+/* "DSP" multiply instructions, eg. SMULxy.  */
+#define TARGET_DSP_MULTIPLY \
+  (TARGET_32BIT && arm_arch5e && arm_arch_notm)
+/* Integer SIMD instructions, and extend-accumulate instructions.  */
+#define TARGET_INT_SIMD \
+  (TARGET_32BIT && arm_arch6 && arm_arch_notm)
+
+/* Should MOVW/MOVT be used in preference to a constant pool.  */
+#define TARGET_USE_MOVT (arm_arch_thumb2 && !optimize_size)
+
+/* We could use unified syntax for arm mode, but for now we just use it
+   for Thumb-2.  */
+#define TARGET_UNIFIED_ASM TARGET_THUMB2
+
+
+/* True iff the full BPABI is being used.  If TARGET_BPABI is true,
+   then TARGET_AAPCS_BASED must be true -- but the converse does not
+   hold.  TARGET_BPABI implies the use of the BPABI runtime library,
+   etc., in addition to just the AAPCS calling conventions.  */
+#ifndef TARGET_BPABI
+#define TARGET_BPABI false
+#endif
+
+/* Support for a compile-time default CPU, et cetera.  The rules are:
+   --with-arch is ignored if -march or -mcpu are specified.
+   --with-cpu is ignored if -march or -mcpu are specified, and is overridden
+    by --with-arch.
+   --with-tune is ignored if -mtune or -mcpu are specified (but not affected
+     by -march).
+   --with-float is ignored if -mhard-float, -msoft-float or -mfloat-abi are
+   specified.
+   --with-fpu is ignored if -mfpu is specified.
+   --with-abi is ignored is -mabi is specified.  */
+#define OPTION_DEFAULT_SPECS \
+  {"arch", "%{!march=*:%{!mcpu=*:-march=%(VALUE)}}" }, \
+  {"cpu", "%{!march=*:%{!mcpu=*:-mcpu=%(VALUE)}}" }, \
+  {"tune", "%{!mcpu=*:%{!mtune=*:-mtune=%(VALUE)}}" }, \
+  {"float", \
+    "%{!msoft-float:%{!mhard-float:%{!mfloat-abi=*:-mfloat-abi=%(VALUE)}}}" }, \
+  {"fpu", "%{!mfpu=*:-mfpu=%(VALUE)}"}, \
+  {"abi", "%{!mabi=*:-mabi=%(VALUE)}"}, \
+  {"mode", "%{!marm:%{!mthumb:-m%(VALUE)}}"},
+
+/* Which floating point model to use.  */
+enum arm_fp_model
+{
+  ARM_FP_MODEL_UNKNOWN,
+  /* FPA model (Hardware or software).  */
+  ARM_FP_MODEL_FPA,
+  /* Cirrus Maverick floating point model.  */
+  ARM_FP_MODEL_MAVERICK,
+  /* VFP floating point model.  */
+  ARM_FP_MODEL_VFP
+};
+
+extern enum arm_fp_model arm_fp_model;
+
+/* Which floating point hardware is available.  Also update
+   fp_model_for_fpu in arm.c when adding entries to this list.  */
+enum fputype
+{
+  /* No FP hardware.  */
+  FPUTYPE_NONE,
+  /* Full FPA support.  */
+  FPUTYPE_FPA,
+  /* Emulated FPA hardware, Issue 2 emulator (no LFM/SFM).  */
+  FPUTYPE_FPA_EMU2,
+  /* Emulated FPA hardware, Issue 3 emulator.  */
+  FPUTYPE_FPA_EMU3,
+  /* Cirrus Maverick floating point co-processor.  */
+  FPUTYPE_MAVERICK,
+  /* VFP.  */
+  FPUTYPE_VFP,
+  /* VFPv3-D16.  */
+  FPUTYPE_VFP3D16,
+  /* VFPv3.  */
+  FPUTYPE_VFP3,
+  /* Neon.  */
+  FPUTYPE_NEON
+};
+
+/* Recast the floating point class to be the floating point attribute.  */
+#define arm_fpu_attr ((enum attr_fpu) arm_fpu_tune)
+
+/* What type of floating point to tune for */
+extern enum fputype arm_fpu_tune;
+
+/* What type of floating point instructions are available */
+extern enum fputype arm_fpu_arch;
+
+enum float_abi_type
+{
+  ARM_FLOAT_ABI_SOFT,
+  ARM_FLOAT_ABI_SOFTFP,
+  ARM_FLOAT_ABI_HARD
+};
+
+extern enum float_abi_type arm_float_abi;
+
+#ifndef TARGET_DEFAULT_FLOAT_ABI
+#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
+#endif
+
+/* Which ABI to use.  */
+enum arm_abi_type
+{
+  ARM_ABI_APCS,
+  ARM_ABI_ATPCS,
+  ARM_ABI_AAPCS,
+  ARM_ABI_IWMMXT,
+  ARM_ABI_AAPCS_LINUX
+};
+
+extern enum arm_abi_type arm_abi;
+
+#ifndef ARM_DEFAULT_ABI
+#define ARM_DEFAULT_ABI ARM_ABI_APCS
+#endif
+
+/* Which thread pointer access sequence to use.  */
+enum arm_tp_type {
+  TP_AUTO,
+  TP_SOFT,
+  TP_CP15
+};
+
+extern enum arm_tp_type target_thread_pointer;
+
+/* Nonzero if this chip supports the ARM Architecture 3M extensions.  */
+extern int arm_arch3m;
+
+/* Nonzero if this chip supports the ARM Architecture 4 extensions.  */
+extern int arm_arch4;
+
+/* Nonzero if this chip supports the ARM Architecture 4T extensions.  */
+extern int arm_arch4t;
+
+/* Nonzero if this chip supports the ARM Architecture 5 extensions.  */
+extern int arm_arch5;
+
+/* Nonzero if this chip supports the ARM Architecture 5E extensions.  */
+extern int arm_arch5e;
+
+/* Nonzero if this chip supports the ARM Architecture 6 extensions.  */
+extern int arm_arch6;
+
+/* Nonzero if instructions not present in the 'M' profile can be used.  */
+extern int arm_arch_notm;
+
+/* Nonzero if this chip can benefit from load scheduling.  */
+extern int arm_ld_sched;
+
+/* Nonzero if generating thumb code.  */
+extern int thumb_code;
+
+/* Nonzero if this chip is a StrongARM.  */
+extern int arm_tune_strongarm;
+
+/* Nonzero if this chip is a Cirrus variant.  */
+extern int arm_arch_cirrus;
+
+/* Nonzero if this chip supports Intel XScale with Wireless MMX technology.  */
+extern int arm_arch_iwmmxt;
+
+/* Nonzero if this chip is an XScale.  */
+extern int arm_arch_xscale;
+
+/* Nonzero if tuning for XScale.  */
+extern int arm_tune_xscale;
+
+/* Nonzero if tuning for stores via the write buffer.  */
+extern int arm_tune_wbuf;
+
+/* Nonzero if tuning for Cortex-A9.  */
+extern int arm_tune_cortex_a9;
+
+/* Nonzero if we should define __THUMB_INTERWORK__ in the
+   preprocessor.
+   XXX This is a bit of a hack, it's intended to help work around
+   problems in GLD which doesn't understand that armv5t code is
+   interworking clean.  */
+extern int arm_cpp_interwork;
+
+/* Nonzero if chip supports Thumb 2.  */
+extern int arm_arch_thumb2;
+
+/* Nonzero if chip supports integer division instruction.  */
+extern int arm_arch_hwdiv;
+
+#ifndef TARGET_DEFAULT
+#define TARGET_DEFAULT  (MASK_APCS_FRAME)
+#endif
+
+/* The frame pointer register used in gcc has nothing to do with debugging;
+   that is controlled by the APCS-FRAME option.  */
+#define CAN_DEBUG_WITHOUT_FP
+
+#define OVERRIDE_OPTIONS  arm_override_options ()
+
+#define OPTIMIZATION_OPTIONS(LEVEL,SIZE)               \
+       arm_optimization_options ((LEVEL), (SIZE))
+
+/* Nonzero if PIC code requires explicit qualifiers to generate
+   PLT and GOT relocs rather than the assembler doing so implicitly.
+   Subtargets can override these if required.  */
+#ifndef NEED_GOT_RELOC
+#define NEED_GOT_RELOC 0
+#endif
+#ifndef NEED_PLT_RELOC
+#define NEED_PLT_RELOC 0
+#endif
+
+/* Nonzero if we need to refer to the GOT with a PC-relative
+   offset.  In other words, generate
+
+   .word       _GLOBAL_OFFSET_TABLE_ - [. - (.Lxx + 8)]
+
+   rather than
+
+   .word       _GLOBAL_OFFSET_TABLE_ - (.Lxx + 8)
+
+   The default is true, which matches NetBSD.  Subtargets can
+   override this if required.  */
+#ifndef GOT_PCREL
+#define GOT_PCREL   1
+#endif
+\f
+/* Target machine storage Layout.  */
+
+
+/* Define this macro if it is advisable to hold scalars in registers
+   in a wider mode than that declared by the program.  In such cases,
+   the value is constrained to be within the bounds of the declared
+   type, but kept valid in the wider mode.  The signedness of the
+   extension may differ from that of the type.  */
+
+/* It is far faster to zero extend chars than to sign extend them */
+
+#define PROMOTE_MODE(MODE, UNSIGNEDP, TYPE)    \
+  if (GET_MODE_CLASS (MODE) == MODE_INT                \
+      && GET_MODE_SIZE (MODE) < 4)             \
+    {                                          \
+      if (MODE == QImode)                      \
+       UNSIGNEDP = 1;                          \
+      else if (MODE == HImode)                 \
+       UNSIGNEDP = 1;                          \
+      (MODE) = SImode;                         \
+    }
+
+#define PROMOTE_FUNCTION_MODE(MODE, UNSIGNEDP, TYPE)   \
+  if ((GET_MODE_CLASS (MODE) == MODE_INT               \
+       || GET_MODE_CLASS (MODE) == MODE_COMPLEX_INT)    \
+      && GET_MODE_SIZE (MODE) < 4)                      \
+    (MODE) = SImode;                                   \
+
+/* Define this if most significant bit is lowest numbered
+   in instructions that operate on numbered bit-fields.  */
+#define BITS_BIG_ENDIAN  0
+
+/* Define this if most significant byte of a word is the lowest numbered.
+   Most ARM processors are run in little endian mode, so that is the default.
+   If you want to have it run-time selectable, change the definition in a
+   cover file to be TARGET_BIG_ENDIAN.  */
+#define BYTES_BIG_ENDIAN  (TARGET_BIG_END != 0)
+
+/* Define this if most significant word of a multiword number is the lowest
+   numbered.
+   This is always false, even when in big-endian mode.  */
+#define WORDS_BIG_ENDIAN  (BYTES_BIG_ENDIAN && ! TARGET_LITTLE_WORDS)
+
+/* LIBGCC2_WORDS_BIG_ENDIAN has to be a constant, so we define this based
+   on processor pre-defineds when compiling libgcc2.c.  */
+#if defined(__ARMEB__) && !defined(__ARMWEL__)
+#define LIBGCC2_WORDS_BIG_ENDIAN 1
+#else
+#define LIBGCC2_WORDS_BIG_ENDIAN 0
+#endif
+
+/* Define this if most significant word of doubles is the lowest numbered.
+   The rules are different based on whether or not we use FPA-format,
+   VFP-format or some other floating point co-processor's format doubles.  */
+#define FLOAT_WORDS_BIG_ENDIAN (arm_float_words_big_endian ())
+
+#define UNITS_PER_WORD 4
+
+/* Use the option -mvectorize-with-neon-quad to override the use of doubleword
+   registers when autovectorizing for Neon, at least until multiple vector
+   widths are supported properly by the middle-end.  */
+#define UNITS_PER_SIMD_WORD(MODE) \
+  (TARGET_NEON ? (TARGET_NEON_VECTORIZE_QUAD ? 16 : 8) : UNITS_PER_WORD)
+
+/* True if natural alignment is used for doubleword types.  */
+#define ARM_DOUBLEWORD_ALIGN   TARGET_AAPCS_BASED
+
+#define DOUBLEWORD_ALIGNMENT 64
+
+#define PARM_BOUNDARY          32
+
+#define STACK_BOUNDARY  (ARM_DOUBLEWORD_ALIGN ? DOUBLEWORD_ALIGNMENT : 32)
+
+#define PREFERRED_STACK_BOUNDARY \
+    (arm_abi == ARM_ABI_ATPCS ? 64 : STACK_BOUNDARY)
+
+#define FUNCTION_BOUNDARY  32
+
+/* The lowest bit is used to indicate Thumb-mode functions, so the
+   vbit must go into the delta field of pointers to member
+   functions.  */
+#define TARGET_PTRMEMFUNC_VBIT_LOCATION ptrmemfunc_vbit_in_delta
+
+#define EMPTY_FIELD_BOUNDARY  32
+
+#define BIGGEST_ALIGNMENT (ARM_DOUBLEWORD_ALIGN ? DOUBLEWORD_ALIGNMENT : 32)
+
+/* XXX Blah -- this macro is used directly by libobjc.  Since it
+   supports no vector modes, cut out the complexity and fall back
+   on BIGGEST_FIELD_ALIGNMENT.  */
+#ifdef IN_TARGET_LIBS
+#define BIGGEST_FIELD_ALIGNMENT 64
+#endif
+
+/* Make strings word-aligned so strcpy from constants will be faster.  */
+#define CONSTANT_ALIGNMENT_FACTOR (TARGET_THUMB || ! arm_tune_xscale ? 1 : 2)
+
+#define CONSTANT_ALIGNMENT(EXP, ALIGN)                         \
+   ((TREE_CODE (EXP) == STRING_CST                             \
+     && !optimize_size                                         \
+     && (ALIGN) < BITS_PER_WORD * CONSTANT_ALIGNMENT_FACTOR)   \
+    ? BITS_PER_WORD * CONSTANT_ALIGNMENT_FACTOR : (ALIGN))
+
+/* Align definitions of arrays, unions and structures so that
+   initializations and copies can be made more efficient.  This is not
+   ABI-changing, so it only affects places where we can see the
+   definition.  */
+#define DATA_ALIGNMENT(EXP, ALIGN)                                     \
+  ((((ALIGN) < BITS_PER_WORD)                                           \
+    && (TREE_CODE (EXP) == ARRAY_TYPE                                  \
+       || TREE_CODE (EXP) == UNION_TYPE                                \
+       || TREE_CODE (EXP) == RECORD_TYPE)) ? BITS_PER_WORD : (ALIGN))
+
+/* Similarly, make sure that objects on the stack are sensibly aligned.  */
+#define LOCAL_ALIGNMENT(EXP, ALIGN) DATA_ALIGNMENT(EXP, ALIGN)
+
+/* Setting STRUCTURE_SIZE_BOUNDARY to 32 produces more efficient code, but the
+   value set in previous versions of this toolchain was 8, which produces more
+   compact structures.  The command line option -mstructure_size_boundary=<n>
+   can be used to change this value.  For compatibility with the ARM SDK
+   however the value should be left at 32.  ARM SDT Reference Manual (ARM DUI
+   0020D) page 2-20 says "Structures are aligned on word boundaries".
+   The AAPCS specifies a value of 8.  */
+#define STRUCTURE_SIZE_BOUNDARY arm_structure_size_boundary
+extern int arm_structure_size_boundary;
+
+/* This is the value used to initialize arm_structure_size_boundary.  If a
+   particular arm target wants to change the default value it should change
+   the definition of this macro, not STRUCTURE_SIZE_BOUNDARY.  See netbsd.h
+   for an example of this.  */
+#ifndef DEFAULT_STRUCTURE_SIZE_BOUNDARY
+#define DEFAULT_STRUCTURE_SIZE_BOUNDARY 32
+#endif
+
+/* Nonzero if move instructions will actually fail to work
+   when given unaligned data.  */
+#define STRICT_ALIGNMENT 1
+
+/* wchar_t is unsigned under the AAPCS.  */
+#ifndef WCHAR_TYPE
+#define WCHAR_TYPE (TARGET_AAPCS_BASED ? "unsigned int" : "int")
+
+#define WCHAR_TYPE_SIZE BITS_PER_WORD
+#endif
+
+#ifndef SIZE_TYPE
+#define SIZE_TYPE (TARGET_AAPCS_BASED ? "unsigned int" : "long unsigned int")
+#endif
+
+#ifndef PTRDIFF_TYPE
+#define PTRDIFF_TYPE (TARGET_AAPCS_BASED ? "int" : "long int")
+#endif
+
+/* AAPCS requires that structure alignment is affected by bitfields.  */
+#ifndef PCC_BITFIELD_TYPE_MATTERS
+#define PCC_BITFIELD_TYPE_MATTERS TARGET_AAPCS_BASED
+#endif
+
+\f
+/* Standard register usage.  */
+
+/* Register allocation in ARM Procedure Call Standard (as used on RISCiX):
+   (S - saved over call).
+
+       r0         *    argument word/integer result
+       r1-r3           argument word
+
+       r4-r8        S  register variable
+       r9           S  (rfp) register variable (real frame pointer)
+
+       r10        F S  (sl) stack limit (used by -mapcs-stack-check)
+       r11        F S  (fp) argument pointer
+       r12             (ip) temp workspace
+       r13        F S  (sp) lower end of current stack frame
+       r14             (lr) link address/workspace
+       r15        F    (pc) program counter
+
+       f0              floating point result
+       f1-f3           floating point scratch
+
+       f4-f7        S  floating point variable
+
+       cc              This is NOT a real register, but is used internally
+                       to represent things that use or set the condition
+                       codes.
+       sfp             This isn't either.  It is used during rtl generation
+                       since the offset between the frame pointer and the
+                       auto's isn't known until after register allocation.
+       afp             Nor this, we only need this because of non-local
+                       goto.  Without it fp appears to be used and the
+                       elimination code won't get rid of sfp.  It tracks
+                       fp exactly at all times.
+
+   *: See CONDITIONAL_REGISTER_USAGE  */
+
+/*
+       mvf0            Cirrus floating point result
+       mvf1-mvf3       Cirrus floating point scratch
+       mvf4-mvf15   S  Cirrus floating point variable.  */
+
+/*     s0-s15          VFP scratch (aka d0-d7).
+       s16-s31       S VFP variable (aka d8-d15).
+       vfpcc           Not a real register.  Represents the VFP condition
+                       code flags.  */
+
+/* The stack backtrace structure is as follows:
+  fp points to here:  |  save code pointer  |      [fp]
+                      |  return link value  |      [fp, #-4]
+                      |  return sp value    |      [fp, #-8]
+                      |  return fp value    |      [fp, #-12]
+                     [|  saved r10 value    |]
+                     [|  saved r9 value     |]
+                     [|  saved r8 value     |]
+                     [|  saved r7 value     |]
+                     [|  saved r6 value     |]
+                     [|  saved r5 value     |]
+                     [|  saved r4 value     |]
+                     [|  saved r3 value     |]
+                     [|  saved r2 value     |]
+                     [|  saved r1 value     |]
+                     [|  saved r0 value     |]
+                     [|  saved f7 value     |]     three words
+                     [|  saved f6 value     |]     three words
+                     [|  saved f5 value     |]     three words
+                     [|  saved f4 value     |]     three words
+  r0-r3 are not normally saved in a C function.  */
+
+/* 1 for registers that have pervasive standard uses
+   and are not available for the register allocator.  */
+#define FIXED_REGISTERS \
+{                       \
+  0,0,0,0,0,0,0,0,     \
+  0,0,0,0,0,1,0,1,     \
+  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 for registers not available across function calls.
+   These must include the FIXED_REGISTERS and also any
+   registers that can be used without being saved.
+   The latter must include the registers where values are returned
+   and the register where structure-value addresses are passed.
+   Aside from that, you can include as many other registers as you like.
+   The CC is not preserved over function calls on the ARM 6, so it is
+   easier to assume this for all.  SFP is preserved, since FP is.  */
+#define CALL_USED_REGISTERS  \
+{                            \
+  1,1,1,1,0,0,0,0,          \
+  0,0,0,0,1,1,1,1,          \
+  1,1,1,1,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                         \
+}
+
+#ifndef SUBTARGET_CONDITIONAL_REGISTER_USAGE
+#define SUBTARGET_CONDITIONAL_REGISTER_USAGE
+#endif
+
+#define CONDITIONAL_REGISTER_USAGE                             \
+{                                                              \
+  int regno;                                                   \
+                                                               \
+  if (TARGET_SOFT_FLOAT || TARGET_THUMB1 || !TARGET_FPA)       \
+    {                                                          \
+      for (regno = FIRST_FPA_REGNUM;                           \
+          regno <= LAST_FPA_REGNUM; ++regno)                   \
+       fixed_regs[regno] = call_used_regs[regno] = 1;          \
+    }                                                          \
+                                                               \
+  if (TARGET_THUMB && optimize_size)                           \
+    {                                                          \
+      /* When optimizing for size, it's better not to use      \
+        the HI regs, because of the overhead of stacking       \
+        them.  */                                              \
+      /* ??? Is this still true for thumb2?  */                        \
+      for (regno = FIRST_HI_REGNUM;                            \
+          regno <= LAST_HI_REGNUM; ++regno)                    \
+       fixed_regs[regno] = call_used_regs[regno] = 1;          \
+    }                                                          \
+                                                               \
+  /* The link register can be clobbered by any branch insn,    \
+     but we have no way to track that at present, so mark      \
+     it as unavailable.  */                                    \
+  if (TARGET_THUMB1)                                           \
+    fixed_regs[LR_REGNUM] = call_used_regs[LR_REGNUM] = 1;     \
+                                                               \
+  if (TARGET_32BIT && TARGET_HARD_FLOAT)                       \
+    {                                                          \
+      if (TARGET_MAVERICK)                                     \
+       {                                                       \
+         for (regno = FIRST_FPA_REGNUM;                        \
+              regno <= LAST_FPA_REGNUM; ++ regno)              \
+           fixed_regs[regno] = call_used_regs[regno] = 1;      \
+         for (regno = FIRST_CIRRUS_FP_REGNUM;                  \
+              regno <= LAST_CIRRUS_FP_REGNUM; ++ regno)        \
+           {                                                   \
+             fixed_regs[regno] = 0;                            \
+             call_used_regs[regno] = regno < FIRST_CIRRUS_FP_REGNUM + 4; \
+           }                                                   \
+       }                                                       \
+      if (TARGET_VFP)                                          \
+       {                                                       \
+         /* VFPv3 registers are disabled when earlier VFP      \
+            versions are selected due to the definition of     \
+            LAST_VFP_REGNUM.  */                               \
+         for (regno = FIRST_VFP_REGNUM;                        \
+              regno <= LAST_VFP_REGNUM; ++ regno)              \
+           {                                                   \
+             fixed_regs[regno] = 0;                            \
+             call_used_regs[regno] = regno < FIRST_VFP_REGNUM + 16 \
+               || regno >= FIRST_VFP_REGNUM + 32;              \
+           }                                                   \
+       }                                                       \
+    }                                                          \
+                                                               \
+  if (TARGET_REALLY_IWMMXT)                                    \
+    {                                                          \
+      regno = FIRST_IWMMXT_GR_REGNUM;                          \
+      /* The 2002/10/09 revision of the XScale ABI has wCG0     \
+         and wCG1 as call-preserved registers.  The 2002/11/21  \
+         revision changed this so that all wCG registers are    \
+         scratch registers.  */                                        \
+      for (regno = FIRST_IWMMXT_GR_REGNUM;                     \
+          regno <= LAST_IWMMXT_GR_REGNUM; ++ regno)            \
+       fixed_regs[regno] = 0;                                  \
+      /* The XScale ABI has wR0 - wR9 as scratch registers,     \
+        the rest as call-preserved registers.  */              \
+      for (regno = FIRST_IWMMXT_REGNUM;                                \
+          regno <= LAST_IWMMXT_REGNUM; ++ regno)               \
+       {                                                       \
+         fixed_regs[regno] = 0;                                \
+         call_used_regs[regno] = regno < FIRST_IWMMXT_REGNUM + 10; \
+       }                                                       \
+    }                                                          \
+                                                               \
+  if ((unsigned) PIC_OFFSET_TABLE_REGNUM != INVALID_REGNUM)    \
+    {                                                          \
+      fixed_regs[PIC_OFFSET_TABLE_REGNUM] = 1;                 \
+      call_used_regs[PIC_OFFSET_TABLE_REGNUM] = 1;             \
+    }                                                          \
+  else if (TARGET_APCS_STACK)                                  \
+    {                                                          \
+      fixed_regs[10]     = 1;                                  \
+      call_used_regs[10] = 1;                                  \
+    }                                                          \
+  /* -mcaller-super-interworking reserves r11 for calls to     \
+     _interwork_r11_call_via_rN().  Making the register global \
+     is an easy way of ensuring that it remains valid for all  \
+     calls.  */                                                        \
+  if (TARGET_APCS_FRAME || TARGET_CALLER_INTERWORKING          \
+      || TARGET_TPCS_FRAME || TARGET_TPCS_LEAF_FRAME)          \
+    {                                                          \
+      fixed_regs[ARM_HARD_FRAME_POINTER_REGNUM] = 1;           \
+      call_used_regs[ARM_HARD_FRAME_POINTER_REGNUM] = 1;       \
+      if (TARGET_CALLER_INTERWORKING)                          \
+       global_regs[ARM_HARD_FRAME_POINTER_REGNUM] = 1;         \
+    }                                                          \
+  SUBTARGET_CONDITIONAL_REGISTER_USAGE                         \
+}
+
+/* These are a couple of extensions to the formats accepted
+   by asm_fprintf:
+     %@ prints out ASM_COMMENT_START
+     %r prints out REGISTER_PREFIX reg_names[arg]  */
+#define ASM_FPRINTF_EXTENSIONS(FILE, ARGS, P)          \
+  case '@':                                            \
+    fputs (ASM_COMMENT_START, FILE);                   \
+    break;                                             \
+                                                       \
+  case 'r':                                            \
+    fputs (REGISTER_PREFIX, FILE);                     \
+    fputs (reg_names [va_arg (ARGS, int)], FILE);      \
+    break;
+
+/* Round X up to the nearest word.  */
+#define ROUND_UP_WORD(X) (((X) + 3) & ~3)
+
+/* Convert fron bytes to ints.  */
+#define ARM_NUM_INTS(X) (((X) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)
+
+/* The number of (integer) registers required to hold a quantity of type MODE.
+   Also used for VFP registers.  */
+#define ARM_NUM_REGS(MODE)                             \
+  ARM_NUM_INTS (GET_MODE_SIZE (MODE))
+
+/* The number of (integer) registers required to hold a quantity of TYPE MODE.  */
+#define ARM_NUM_REGS2(MODE, TYPE)                   \
+  ARM_NUM_INTS ((MODE) == BLKmode ?            \
+  int_size_in_bytes (TYPE) : GET_MODE_SIZE (MODE))
+
+/* The number of (integer) argument register available.  */
+#define NUM_ARG_REGS           4
+
+/* Return the register number of the N'th (integer) argument.  */
+#define ARG_REGISTER(N)        (N - 1)
+
+/* Specify the registers used for certain standard purposes.
+   The values of these macros are register numbers.  */
+
+/* The number of the last argument register.  */
+#define LAST_ARG_REGNUM        ARG_REGISTER (NUM_ARG_REGS)
+
+/* The numbers of the Thumb register ranges.  */
+#define FIRST_LO_REGNUM        0
+#define LAST_LO_REGNUM         7
+#define FIRST_HI_REGNUM                8
+#define LAST_HI_REGNUM         11
+
+#ifndef TARGET_UNWIND_INFO
+/* We use sjlj exceptions for backwards compatibility.  */
+#define MUST_USE_SJLJ_EXCEPTIONS 1
+#endif
+
+/* We can generate DWARF2 Unwind info, even though we don't use it.  */
+#define DWARF2_UNWIND_INFO 1
+
+/* Use r0 and r1 to pass exception handling information.  */
+#define EH_RETURN_DATA_REGNO(N) (((N) < 2) ? N : INVALID_REGNUM)
+
+/* The register that holds the return address in exception handlers.  */
+#define ARM_EH_STACKADJ_REGNUM 2
+#define EH_RETURN_STACKADJ_RTX gen_rtx_REG (SImode, ARM_EH_STACKADJ_REGNUM)
+
+/* The native (Norcroft) Pascal compiler for the ARM passes the static chain
+   as an invisible last argument (possible since varargs don't exist in
+   Pascal), so the following is not true.  */
+#define STATIC_CHAIN_REGNUM    12
+
+/* Define this to be where the real frame pointer is if it is not possible to
+   work out the offset between the frame pointer and the automatic variables
+   until after register allocation has taken place.  FRAME_POINTER_REGNUM
+   should point to a special register that we will make sure is eliminated.
+
+   For the Thumb we have another problem.  The TPCS defines the frame pointer
+   as r11, and GCC believes that it is always possible to use the frame pointer
+   as base register for addressing purposes.  (See comments in
+   find_reloads_address()).  But - the Thumb does not allow high registers,
+   including r11, to be used as base address registers.  Hence our problem.
+
+   The solution used here, and in the old thumb port is to use r7 instead of
+   r11 as the hard frame pointer and to have special code to generate
+   backtrace structures on the stack (if required to do so via a command line
+   option) using r11.  This is the only 'user visible' use of r11 as a frame
+   pointer.  */
+#define ARM_HARD_FRAME_POINTER_REGNUM  11
+#define THUMB_HARD_FRAME_POINTER_REGNUM         7
+
+#define HARD_FRAME_POINTER_REGNUM              \
+  (TARGET_ARM                                  \
+   ? ARM_HARD_FRAME_POINTER_REGNUM             \
+   : THUMB_HARD_FRAME_POINTER_REGNUM)
+
+#define FP_REGNUM                      HARD_FRAME_POINTER_REGNUM
+
+/* Register to use for pushing function arguments.  */
+#define STACK_POINTER_REGNUM   SP_REGNUM
+
+/* ARM floating pointer registers.  */
+#define FIRST_FPA_REGNUM       16
+#define LAST_FPA_REGNUM        23
+#define IS_FPA_REGNUM(REGNUM) \
+  (((REGNUM) >= FIRST_FPA_REGNUM) && ((REGNUM) <= LAST_FPA_REGNUM))
+
+#define FIRST_IWMMXT_GR_REGNUM 43
+#define LAST_IWMMXT_GR_REGNUM  46
+#define FIRST_IWMMXT_REGNUM    47
+#define LAST_IWMMXT_REGNUM     62
+#define IS_IWMMXT_REGNUM(REGNUM) \
+  (((REGNUM) >= FIRST_IWMMXT_REGNUM) && ((REGNUM) <= LAST_IWMMXT_REGNUM))
+#define IS_IWMMXT_GR_REGNUM(REGNUM) \
+  (((REGNUM) >= FIRST_IWMMXT_GR_REGNUM) && ((REGNUM) <= LAST_IWMMXT_GR_REGNUM))
+
+/* Base register for access to local variables of the function.  */
+#define FRAME_POINTER_REGNUM   25
+
+/* Base register for access to arguments of the function.  */
+#define ARG_POINTER_REGNUM     26
+
+#define FIRST_CIRRUS_FP_REGNUM 27
+#define LAST_CIRRUS_FP_REGNUM  42
+#define IS_CIRRUS_REGNUM(REGNUM) \
+  (((REGNUM) >= FIRST_CIRRUS_FP_REGNUM) && ((REGNUM) <= LAST_CIRRUS_FP_REGNUM))
+
+#define FIRST_VFP_REGNUM       63
+#define D7_VFP_REGNUM          78  /* Registers 77 and 78 == VFP reg D7.  */
+#define LAST_VFP_REGNUM        \
+  (TARGET_VFPD32 ? LAST_HI_VFP_REGNUM : LAST_LO_VFP_REGNUM)
+
+#define IS_VFP_REGNUM(REGNUM) \
+  (((REGNUM) >= FIRST_VFP_REGNUM) && ((REGNUM) <= LAST_VFP_REGNUM))
+
+/* VFP registers are split into two types: those defined by VFP versions < 3
+   have D registers overlaid on consecutive pairs of S registers. VFP version 3
+   defines 16 new D registers (d16-d31) which, for simplicity and correctness
+   in various parts of the backend, we implement as "fake" single-precision
+   registers (which would be S32-S63, but cannot be used in that way).  The
+   following macros define these ranges of registers.  */
+#define LAST_LO_VFP_REGNUM     94
+#define FIRST_HI_VFP_REGNUM    95
+#define LAST_HI_VFP_REGNUM     126
+
+#define VFP_REGNO_OK_FOR_SINGLE(REGNUM) \
+  ((REGNUM) <= LAST_LO_VFP_REGNUM)
+
+/* DFmode values are only valid in even register pairs.  */
+#define VFP_REGNO_OK_FOR_DOUBLE(REGNUM) \
+  ((((REGNUM) - FIRST_VFP_REGNUM) & 1) == 0)
+
+/* Neon Quad values must start at a multiple of four registers.  */
+#define NEON_REGNO_OK_FOR_QUAD(REGNUM) \
+  ((((REGNUM) - FIRST_VFP_REGNUM) & 3) == 0)
+
+/* Neon structures of vectors must be in even register pairs and there
+   must be enough registers available.  Because of various patterns
+   requiring quad registers, we require them to start at a multiple of
+   four.  */
+#define NEON_REGNO_OK_FOR_NREGS(REGNUM, N) \
+  ((((REGNUM) - FIRST_VFP_REGNUM) & 3) == 0 \
+   && (LAST_VFP_REGNUM - (REGNUM) >= 2 * (N) - 1))
+
+/* The number of hard registers is 16 ARM + 8 FPA + 1 CC + 1 SFP + 1 AFP.  */
+/* + 16 Cirrus registers take us up to 43.  */
+/* Intel Wireless MMX Technology registers add 16 + 4 more.  */
+/* VFP (VFP3) adds 32 (64) + 1 more.  */
+#define FIRST_PSEUDO_REGISTER   128
+
+#define DBX_REGISTER_NUMBER(REGNO) arm_dbx_register_number (REGNO)
+
+/* Value should be nonzero if functions must have frame pointers.
+   Zero means the frame pointer need not be set up (and parms may be accessed
+   via the stack pointer) in functions that seem suitable.
+   If we have to have a frame pointer we might as well make use of it.
+   APCS says that the frame pointer does not need to be pushed in leaf
+   functions, or simple tail call functions.  */
+
+#ifndef SUBTARGET_FRAME_POINTER_REQUIRED
+#define SUBTARGET_FRAME_POINTER_REQUIRED 0
+#endif
+
+#define FRAME_POINTER_REQUIRED                                 \
+  (cfun->has_nonlocal_label                            \
+   || SUBTARGET_FRAME_POINTER_REQUIRED                         \
+   || (TARGET_ARM && TARGET_APCS_FRAME && ! leaf_function_p ()))
+
+/* Return number of consecutive hard regs needed starting at reg REGNO
+   to hold something of mode MODE.
+   This is ordinarily the length in words of a value of mode MODE
+   but can be less for certain modes in special long registers.
+
+   On the ARM regs are UNITS_PER_WORD bits wide; FPA regs can hold any FP
+   mode.  */
+#define HARD_REGNO_NREGS(REGNO, MODE)          \
+  ((TARGET_32BIT                       \
+    && REGNO >= FIRST_FPA_REGNUM       \
+    && REGNO != FRAME_POINTER_REGNUM   \
+    && REGNO != ARG_POINTER_REGNUM)    \
+    && !IS_VFP_REGNUM (REGNO)          \
+   ? 1 : ARM_NUM_REGS (MODE))
+
+/* Return true if REGNO is suitable for holding a quantity of type MODE.  */
+#define HARD_REGNO_MODE_OK(REGNO, MODE)                                        \
+  arm_hard_regno_mode_ok ((REGNO), (MODE))
+
+/* Value is 1 if it is a good idea to tie two pseudo registers
+   when one has mode MODE1 and one has mode MODE2.
+   If HARD_REGNO_MODE_OK could produce different values for MODE1 and MODE2,
+   for any hard reg, then this must be 0 for correct output.  */
+#define MODES_TIEABLE_P(MODE1, MODE2)  \
+  (GET_MODE_CLASS (MODE1) == GET_MODE_CLASS (MODE2))
+
+#define VALID_IWMMXT_REG_MODE(MODE) \
+ (arm_vector_mode_supported_p (MODE) || (MODE) == DImode)
+
+/* Modes valid for Neon D registers.  */
+#define VALID_NEON_DREG_MODE(MODE) \
+  ((MODE) == V2SImode || (MODE) == V4HImode || (MODE) == V8QImode \
+   || (MODE) == V2SFmode || (MODE) == DImode)
+
+/* Modes valid for Neon Q registers.  */
+#define VALID_NEON_QREG_MODE(MODE) \
+  ((MODE) == V4SImode || (MODE) == V8HImode || (MODE) == V16QImode \
+   || (MODE) == V4SFmode || (MODE) == V2DImode)
+
+/* Structure modes valid for Neon registers.  */
+#define VALID_NEON_STRUCT_MODE(MODE) \
+  ((MODE) == TImode || (MODE) == EImode || (MODE) == OImode \
+   || (MODE) == CImode || (MODE) == XImode)
+
+/* The order in which register should be allocated.  It is good to use ip
+   since no saving is required (though calls clobber it) and it never contains
+   function parameters.  It is quite good to use lr since other calls may
+   clobber it anyway.  Allocate r0 through r3 in reverse order since r3 is
+   least likely to contain a function parameter; in addition results are
+   returned in r0.
+   For VFP/VFPv3, allocate D16-D31 first, then caller-saved registers (D0-D7),
+   then D8-D15.  The reason for doing this is to attempt to reduce register
+   pressure when both single- and double-precision registers are used in a
+   function.  */
+
+#define REG_ALLOC_ORDER                                \
+{                                              \
+     3,  2,  1,  0, 12, 14,  4,  5,            \
+     6,  7,  8, 10,  9, 11, 13, 15,            \
+    16, 17, 18, 19, 20, 21, 22, 23,            \
+    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, 53, 54, 55, 56, 57, 58,            \
+    59, 60, 61, 62,                            \
+    24, 25, 26,                                        \
+    95,  96,  97,  98,  99, 100, 101, 102,     \
+   103, 104, 105, 106, 107, 108, 109, 110,     \
+   111, 112, 113, 114, 115, 116, 117, 118,     \
+   119, 120, 121, 122, 123, 124, 125, 126,     \
+    78,  77,  76,  75,  74,  73,  72,  71,     \
+    70,  69,  68,  67,  66,  65,  64,  63,     \
+    79,  80,  81,  82,  83,  84,  85,  86,     \
+    87,  88,  89,  90,  91,  92,  93,  94,     \
+   127                                         \
+}
+
+/* Use different register alloc ordering for Thumb.  */
+#define ORDER_REGS_FOR_LOCAL_ALLOC arm_order_regs_for_local_alloc ()
+
+/* Interrupt functions can only use registers that have already been
+   saved by the prologue, even if they would normally be
+   call-clobbered.  */
+#define HARD_REGNO_RENAME_OK(SRC, DST)                                 \
+       (! IS_INTERRUPT (cfun->machine->func_type) ||                   \
+        df_regs_ever_live_p (DST))
+\f
+/* Register and constant classes.  */
+
+/* Register classes: used to be simple, just all ARM regs or all FPA regs
+   Now that the Thumb is involved it has become more complicated.  */
+enum reg_class
+{
+  NO_REGS,
+  FPA_REGS,
+  CIRRUS_REGS,
+  VFP_D0_D7_REGS,
+  VFP_LO_REGS,
+  VFP_HI_REGS,
+  VFP_REGS,
+  IWMMXT_GR_REGS,
+  IWMMXT_REGS,
+  LO_REGS,
+  STACK_REG,
+  BASE_REGS,
+  HI_REGS,
+  CC_REG,
+  VFPCC_REG,
+  GENERAL_REGS,
+  CORE_REGS,
+  ALL_REGS,
+  LIM_REG_CLASSES
+};
+
+#define N_REG_CLASSES  (int) LIM_REG_CLASSES
+
+/* Give names of register classes as strings for dump file.  */
+#define REG_CLASS_NAMES  \
+{                      \
+  "NO_REGS",           \
+  "FPA_REGS",          \
+  "CIRRUS_REGS",       \
+  "VFP_D0_D7_REGS",    \
+  "VFP_LO_REGS",       \
+  "VFP_HI_REGS",       \
+  "VFP_REGS",          \
+  "IWMMXT_GR_REGS",    \
+  "IWMMXT_REGS",       \
+  "LO_REGS",           \
+  "STACK_REG",         \
+  "BASE_REGS",         \
+  "HI_REGS",           \
+  "CC_REG",            \
+  "VFPCC_REG",         \
+  "GENERAL_REGS",      \
+  "CORE_REGS",         \
+  "ALL_REGS",          \
+}
+
+/* Define which registers fit in which classes.
+   This is an initializer for a vector of HARD_REG_SET
+   of length N_REG_CLASSES.  */
+#define REG_CLASS_CONTENTS                                             \
+{                                                                      \
+  { 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, /* NO_REGS  */   \
+  { 0x00FF0000, 0x00000000, 0x00000000, 0x00000000 }, /* FPA_REGS */   \
+  { 0xF8000000, 0x000007FF, 0x00000000, 0x00000000 }, /* CIRRUS_REGS */        \
+  { 0x00000000, 0x80000000, 0x00007FFF, 0x00000000 }, /* VFP_D0_D7_REGS  */ \
+  { 0x00000000, 0x80000000, 0x7FFFFFFF, 0x00000000 }, /* VFP_LO_REGS  */ \
+  { 0x00000000, 0x00000000, 0x80000000, 0x7FFFFFFF }, /* VFP_HI_REGS  */ \
+  { 0x00000000, 0x80000000, 0xFFFFFFFF, 0x7FFFFFFF }, /* VFP_REGS  */  \
+  { 0x00000000, 0x00007800, 0x00000000, 0x00000000 }, /* IWMMXT_GR_REGS */ \
+  { 0x00000000, 0x7FFF8000, 0x00000000, 0x00000000 }, /* IWMMXT_REGS */        \
+  { 0x000000FF, 0x00000000, 0x00000000, 0x00000000 }, /* LO_REGS */    \
+  { 0x00002000, 0x00000000, 0x00000000, 0x00000000 }, /* STACK_REG */  \
+  { 0x000020FF, 0x00000000, 0x00000000, 0x00000000 }, /* BASE_REGS */  \
+  { 0x0000DF00, 0x00000000, 0x00000000, 0x00000000 }, /* HI_REGS */    \
+  { 0x01000000, 0x00000000, 0x00000000, 0x00000000 }, /* CC_REG */     \
+  { 0x00000000, 0x00000000, 0x00000000, 0x80000000 }, /* VFPCC_REG */  \
+  { 0x0200DFFF, 0x00000000, 0x00000000, 0x00000000 }, /* GENERAL_REGS */ \
+  { 0x0200FFFF, 0x00000000, 0x00000000, 0x00000000 }, /* CORE_REGS */  \
+  { 0xFAFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7FFFFFFF }  /* ALL_REGS */   \
+}
+
+/* Any of the VFP register classes.  */
+#define IS_VFP_CLASS(X) \
+  ((X) == VFP_D0_D7_REGS || (X) == VFP_LO_REGS \
+   || (X) == VFP_HI_REGS || (X) == VFP_REGS)
+
+/* The same information, inverted:
+   Return the class number of the smallest class containing
+   reg number REGNO.  This could be a conditional expression
+   or could index an array.  */
+#define REGNO_REG_CLASS(REGNO)  arm_regno_class (REGNO)
+
+/* The following macro defines cover classes for Integrated Register
+   Allocator.  Cover classes is a set of non-intersected register
+   classes covering all hard registers used for register allocation
+   purpose.  Any move between two registers of a cover class should be
+   cheaper than load or store of the registers.  The macro value is
+   array of register classes with LIM_REG_CLASSES used as the end
+   marker.  */
+
+#define IRA_COVER_CLASSES                                                   \
+{                                                                           \
+  GENERAL_REGS, FPA_REGS, CIRRUS_REGS, VFP_REGS, IWMMXT_GR_REGS, IWMMXT_REGS,\
+  LIM_REG_CLASSES                                                           \
+}
+
+/* FPA registers can't do subreg as all values are reformatted to internal
+   precision.  VFP registers may only be accessed in the mode they
+   were set.  */
+#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS)      \
+  (GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO)          \
+   ? reg_classes_intersect_p (FPA_REGS, (CLASS))       \
+     || reg_classes_intersect_p (VFP_REGS, (CLASS))    \
+   : 0)
+
+/* We need to define this for LO_REGS on thumb.  Otherwise we can end up
+   using r0-r4 for function arguments, r7 for the stack frame and don't
+   have enough left over to do doubleword arithmetic.  */
+#define CLASS_LIKELY_SPILLED_P(CLASS)  \
+    ((TARGET_THUMB && (CLASS) == LO_REGS)      \
+     || (CLASS) == CC_REG)
+
+/* The class value for index registers, and the one for base regs.  */
+#define INDEX_REG_CLASS  (TARGET_THUMB1 ? LO_REGS : GENERAL_REGS)
+#define BASE_REG_CLASS   (TARGET_THUMB1 ? LO_REGS : CORE_REGS)
+
+/* For the Thumb the high registers cannot be used as base registers
+   when addressing quantities in QI or HI mode; if we don't know the
+   mode, then we must be conservative.  */
+#define MODE_BASE_REG_CLASS(MODE)                                      \
+    (TARGET_32BIT ? CORE_REGS :                                        \
+     (((MODE) == SImode) ? BASE_REGS : LO_REGS))
+
+/* For Thumb we can not support SP+reg addressing, so we return LO_REGS
+   instead of BASE_REGS.  */
+#define MODE_BASE_REG_REG_CLASS(MODE) BASE_REG_CLASS
+
+/* When SMALL_REGISTER_CLASSES is nonzero, the compiler allows
+   registers explicitly used in the rtl to be used as spill registers
+   but prevents the compiler from extending the lifetime of these
+   registers.  */
+#define SMALL_REGISTER_CLASSES   TARGET_THUMB1
+
+/* Given an rtx X being reloaded into a reg required to be
+   in class CLASS, return the class of reg to actually use.
+   In general this is just CLASS, but for the Thumb core registers and
+   immediate constants we prefer a LO_REGS class or a subset.  */
+#define PREFERRED_RELOAD_CLASS(X, CLASS)               \
+  (TARGET_ARM ? (CLASS) :                              \
+   ((CLASS) == GENERAL_REGS || (CLASS) == HI_REGS      \
+    || (CLASS) == NO_REGS || (CLASS) == STACK_REG      \
+   ? LO_REGS : (CLASS)))
+
+/* Must leave BASE_REGS reloads alone */
+#define THUMB_SECONDARY_INPUT_RELOAD_CLASS(CLASS, MODE, X)             \
+  ((CLASS) != LO_REGS && (CLASS) != BASE_REGS                          \
+   ? ((true_regnum (X) == -1 ? LO_REGS                                 \
+       : (true_regnum (X) + HARD_REGNO_NREGS (0, MODE) > 8) ? LO_REGS  \
+       : NO_REGS))                                                     \
+   : NO_REGS)
+
+#define THUMB_SECONDARY_OUTPUT_RELOAD_CLASS(CLASS, MODE, X)            \
+  ((CLASS) != LO_REGS && (CLASS) != BASE_REGS                          \
+   ? ((true_regnum (X) == -1 ? LO_REGS                                 \
+       : (true_regnum (X) + HARD_REGNO_NREGS (0, MODE) > 8) ? LO_REGS  \
+       : NO_REGS))                                                     \
+   : NO_REGS)
+
+/* Return the register class of a scratch register needed to copy IN into
+   or out of a register in CLASS in MODE.  If it can be done directly,
+   NO_REGS is returned.  */
+#define SECONDARY_OUTPUT_RELOAD_CLASS(CLASS, MODE, X)          \
+  /* Restrict which direct reloads are allowed for VFP/iWMMXt regs.  */ \
+  ((TARGET_VFP && TARGET_HARD_FLOAT                            \
+    && IS_VFP_CLASS (CLASS))                                   \
+   ? coproc_secondary_reload_class (MODE, X, FALSE)            \
+   : (TARGET_IWMMXT && (CLASS) == IWMMXT_REGS)                 \
+   ? coproc_secondary_reload_class (MODE, X, TRUE)             \
+   : TARGET_32BIT                                              \
+   ? (((MODE) == HImode && ! arm_arch4 && true_regnum (X) == -1) \
+    ? GENERAL_REGS : NO_REGS)                                  \
+   : THUMB_SECONDARY_OUTPUT_RELOAD_CLASS (CLASS, MODE, X))
+
+/* If we need to load shorts byte-at-a-time, then we need a scratch.  */
+#define SECONDARY_INPUT_RELOAD_CLASS(CLASS, MODE, X)           \
+  /* Restrict which direct reloads are allowed for VFP/iWMMXt regs.  */ \
+  ((TARGET_VFP && TARGET_HARD_FLOAT                            \
+    && IS_VFP_CLASS (CLASS))                                   \
+    ? coproc_secondary_reload_class (MODE, X, FALSE) :         \
+    (TARGET_IWMMXT && (CLASS) == IWMMXT_REGS) ?                        \
+    coproc_secondary_reload_class (MODE, X, TRUE) :            \
+  /* Cannot load constants into Cirrus registers.  */          \
+   (TARGET_MAVERICK && TARGET_HARD_FLOAT                       \
+     && (CLASS) == CIRRUS_REGS                                 \
+     && (CONSTANT_P (X) || GET_CODE (X) == SYMBOL_REF))                \
+    ? GENERAL_REGS :                                           \
+  (TARGET_32BIT ?                                              \
+   (((CLASS) == IWMMXT_REGS || (CLASS) == IWMMXT_GR_REGS)      \
+      && CONSTANT_P (X))                                       \
+   ? GENERAL_REGS :                                            \
+   (((MODE) == HImode && ! arm_arch4                           \
+     && (GET_CODE (X) == MEM                                   \
+        || ((GET_CODE (X) == REG || GET_CODE (X) == SUBREG)    \
+            && true_regnum (X) == -1)))                        \
+    ? GENERAL_REGS : NO_REGS)                                  \
+   : THUMB_SECONDARY_INPUT_RELOAD_CLASS (CLASS, MODE, X)))
+
+/* Try a machine-dependent way of reloading an illegitimate address
+   operand.  If we find one, push the reload and jump to WIN.  This
+   macro is used in only one place: `find_reloads_address' in reload.c.
+
+   For the ARM, we wish to handle large displacements off a base
+   register by splitting the addend across a MOV and the mem insn.
+   This can cut the number of reloads needed.  */
+#define ARM_LEGITIMIZE_RELOAD_ADDRESS(X, MODE, OPNUM, TYPE, IND, WIN)     \
+  do                                                                      \
+    {                                                                     \
+      if (GET_CODE (X) == PLUS                                            \
+         && GET_CODE (XEXP (X, 0)) == REG                                 \
+         && REGNO (XEXP (X, 0)) < FIRST_PSEUDO_REGISTER                   \
+         && REG_MODE_OK_FOR_BASE_P (XEXP (X, 0), MODE)                    \
+         && GET_CODE (XEXP (X, 1)) == CONST_INT)                          \
+       {                                                                  \
+         HOST_WIDE_INT val = INTVAL (XEXP (X, 1));                        \
+         HOST_WIDE_INT low, high;                                         \
+                                                                          \
+         if (MODE == DImode || (MODE == DFmode && TARGET_SOFT_FLOAT))     \
+           low = ((val & 0xf) ^ 0x8) - 0x8;                               \
+         else if (TARGET_MAVERICK && TARGET_HARD_FLOAT)                   \
+           /* Need to be careful, -256 is not a valid offset.  */         \
+           low = val >= 0 ? (val & 0xff) : -((-val) & 0xff);              \
+         else if (MODE == SImode                                          \
+                  || (MODE == SFmode && TARGET_SOFT_FLOAT)                \
+                  || ((MODE == HImode || MODE == QImode) && ! arm_arch4)) \
+           /* Need to be careful, -4096 is not a valid offset.  */        \
+           low = val >= 0 ? (val & 0xfff) : -((-val) & 0xfff);            \
+         else if ((MODE == HImode || MODE == QImode) && arm_arch4)        \
+           /* Need to be careful, -256 is not a valid offset.  */         \
+           low = val >= 0 ? (val & 0xff) : -((-val) & 0xff);              \
+         else if (GET_MODE_CLASS (MODE) == MODE_FLOAT                     \
+                  && TARGET_HARD_FLOAT && TARGET_FPA)                     \
+           /* Need to be careful, -1024 is not a valid offset.  */        \
+           low = val >= 0 ? (val & 0x3ff) : -((-val) & 0x3ff);            \
+         else                                                             \
+           break;                                                         \
+                                                                          \
+         high = ((((val - low) & (unsigned HOST_WIDE_INT) 0xffffffff)     \
+                  ^ (unsigned HOST_WIDE_INT) 0x80000000)                  \
+                 - (unsigned HOST_WIDE_INT) 0x80000000);                  \
+         /* Check for overflow or zero */                                 \
+         if (low == 0 || high == 0 || (high + low != val))                \
+           break;                                                         \
+                                                                          \
+         /* Reload the high part into a base reg; leave the low part      \
+            in the mem.  */                                               \
+         X = gen_rtx_PLUS (GET_MODE (X),                                  \
+                           gen_rtx_PLUS (GET_MODE (X), XEXP (X, 0),       \
+                                         GEN_INT (high)),                 \
+                           GEN_INT (low));                                \
+         push_reload (XEXP (X, 0), NULL_RTX, &XEXP (X, 0), NULL,          \
+                      MODE_BASE_REG_CLASS (MODE), GET_MODE (X),           \
+                      VOIDmode, 0, 0, OPNUM, TYPE);                       \
+         goto WIN;                                                        \
+       }                                                                  \
+    }                                                                     \
+  while (0)
+
+/* XXX If an HImode FP+large_offset address is converted to an HImode
+   SP+large_offset address, then reload won't know how to fix it.  It sees
+   only that SP isn't valid for HImode, and so reloads the SP into an index
+   register, but the resulting address is still invalid because the offset
+   is too big.  We fix it here instead by reloading the entire address.  */
+/* We could probably achieve better results by defining PROMOTE_MODE to help
+   cope with the variances between the Thumb's signed and unsigned byte and
+   halfword load instructions.  */
+/* ??? This should be safe for thumb2, but we may be able to do better.  */
+#define THUMB_LEGITIMIZE_RELOAD_ADDRESS(X, MODE, OPNUM, TYPE, IND_L, WIN)     \
+do {                                                                         \
+  rtx new_x = thumb_legitimize_reload_address (&X, MODE, OPNUM, TYPE, IND_L); \
+  if (new_x)                                                                 \
+    {                                                                        \
+      X = new_x;                                                             \
+      goto WIN;                                                                      \
+    }                                                                        \
+} while (0)
+
+#define LEGITIMIZE_RELOAD_ADDRESS(X, MODE, OPNUM, TYPE, IND_LEVELS, WIN)   \
+  if (TARGET_ARM)                                                         \
+    ARM_LEGITIMIZE_RELOAD_ADDRESS (X, MODE, OPNUM, TYPE, IND_LEVELS, WIN); \
+  else                                                                    \
+    THUMB_LEGITIMIZE_RELOAD_ADDRESS (X, MODE, OPNUM, TYPE, IND_LEVELS, WIN)
+
+/* Return the maximum number of consecutive registers
+   needed to represent mode MODE in a register of class CLASS.
+   ARM regs are UNITS_PER_WORD bits while FPA regs can hold any FP mode */
+#define CLASS_MAX_NREGS(CLASS, MODE)  \
+  (((CLASS) == FPA_REGS || (CLASS) == CIRRUS_REGS) ? 1 : ARM_NUM_REGS (MODE))
+
+/* If defined, gives a class of registers that cannot be used as the
+   operand of a SUBREG that changes the mode of the object illegally.  */
+
+/* Moves between FPA_REGS and GENERAL_REGS are two memory insns.  */
+#define REGISTER_MOVE_COST(MODE, FROM, TO)             \
+  (TARGET_32BIT ?                                              \
+   ((FROM) == FPA_REGS && (TO) != FPA_REGS ? 20 :      \
+    (FROM) != FPA_REGS && (TO) == FPA_REGS ? 20 :      \
+    IS_VFP_CLASS (FROM) && !IS_VFP_CLASS (TO) ? 10 :   \
+    !IS_VFP_CLASS (FROM) && IS_VFP_CLASS (TO) ? 10 :   \
+    (FROM) == IWMMXT_REGS && (TO) != IWMMXT_REGS ? 4 :  \
+    (FROM) != IWMMXT_REGS && (TO) == IWMMXT_REGS ? 4 :  \
+    (FROM) == IWMMXT_GR_REGS || (TO) == IWMMXT_GR_REGS ? 20 :  \
+    (FROM) == CIRRUS_REGS && (TO) != CIRRUS_REGS ? 20 :        \
+    (FROM) != CIRRUS_REGS && (TO) == CIRRUS_REGS ? 20 :        \
+   2)                                                  \
+   :                                                   \
+   ((FROM) == HI_REGS || (TO) == HI_REGS) ? 4 : 2)
+\f
+/* Stack layout; function entry, exit and calling.  */
+
+/* Define this if pushing a word on the stack
+   makes the stack pointer a smaller address.  */
+#define STACK_GROWS_DOWNWARD  1
+
+/* Define this to nonzero if the nominal address of the stack frame
+   is at the high-address end of the local variables;
+   that is, each additional local variable allocated
+   goes at a more negative offset in the frame.  */
+#define FRAME_GROWS_DOWNWARD 1
+
+/* The amount of scratch space needed by _interwork_{r7,r11}_call_via_rN().
+   When present, it is one word in size, and sits at the top of the frame,
+   between the soft frame pointer and either r7 or r11.
+
+   We only need _interwork_rM_call_via_rN() for -mcaller-super-interworking,
+   and only then if some outgoing arguments are passed on the stack.  It would
+   be tempting to also check whether the stack arguments are passed by indirect
+   calls, but there seems to be no reason in principle why a post-reload pass
+   couldn't convert a direct call into an indirect one.  */
+#define CALLER_INTERWORKING_SLOT_SIZE                  \
+  (TARGET_CALLER_INTERWORKING                          \
+   && crtl->outgoing_args_size != 0            \
+   ? UNITS_PER_WORD : 0)
+
+/* Offset within stack frame to start allocating local variables at.
+   If FRAME_GROWS_DOWNWARD, this is the offset to the END of the
+   first local allocated.  Otherwise, it is the offset to the BEGINNING
+   of the first local allocated.  */
+#define STARTING_FRAME_OFFSET  0
+
+/* If we generate an insn to push BYTES bytes,
+   this says how many the stack pointer really advances by.  */
+/* The push insns do not do this rounding implicitly.
+   So don't define this.  */
+/* #define PUSH_ROUNDING(NPUSHED)  ROUND_UP_WORD (NPUSHED) */
+
+/* Define this if the maximum size of all the outgoing args is to be
+   accumulated and pushed during the prologue.  The amount can be
+   found in the variable crtl->outgoing_args_size.  */
+#define ACCUMULATE_OUTGOING_ARGS 1
+
+/* Offset of first parameter from the argument pointer register value.  */
+#define FIRST_PARM_OFFSET(FNDECL)  (TARGET_ARM ? 4 : 0)
+
+/* Value is the number of byte of arguments automatically
+   popped when returning from a subroutine call.
+   FUNDECL is the declaration node of the function (as a tree),
+   FUNTYPE is the data type of the function (as a tree),
+   or for a library call it is an identifier node for the subroutine name.
+   SIZE is the number of bytes of arguments passed on the stack.
+
+   On the ARM, the caller does not pop any of its arguments that were passed
+   on the stack.  */
+#define RETURN_POPS_ARGS(FUNDECL, FUNTYPE, SIZE)  0
+
+/* Define how to find the value returned by a library function
+   assuming the value has mode MODE.  */
+#define LIBCALL_VALUE(MODE)  \
+  (TARGET_32BIT && TARGET_HARD_FLOAT_ABI && TARGET_FPA                 \
+   && GET_MODE_CLASS (MODE) == MODE_FLOAT                              \
+   ? gen_rtx_REG (MODE, FIRST_FPA_REGNUM)                              \
+   : TARGET_32BIT && TARGET_HARD_FLOAT_ABI && TARGET_MAVERICK          \
+     && GET_MODE_CLASS (MODE) == MODE_FLOAT                            \
+   ? gen_rtx_REG (MODE, FIRST_CIRRUS_FP_REGNUM)                        \
+   : TARGET_IWMMXT_ABI && arm_vector_mode_supported_p (MODE)           \
+   ? gen_rtx_REG (MODE, FIRST_IWMMXT_REGNUM)                           \
+   : gen_rtx_REG (MODE, ARG_REGISTER (1)))
+
+/* Define how to find the value returned by a function.
+   VALTYPE is the data type of the value (as a tree).
+   If the precise function being called is known, FUNC is its FUNCTION_DECL;
+   otherwise, FUNC is 0.  */
+#define FUNCTION_VALUE(VALTYPE, FUNC) \
+  arm_function_value (VALTYPE, FUNC);
+
+/* 1 if N is a possible register number for a function value.
+   On the ARM, only r0 and f0 can return results.  */
+/* On a Cirrus chip, mvf0 can return results.  */
+#define FUNCTION_VALUE_REGNO_P(REGNO)  \
+  ((REGNO) == ARG_REGISTER (1) \
+   || (TARGET_32BIT && ((REGNO) == FIRST_CIRRUS_FP_REGNUM)             \
+       && TARGET_HARD_FLOAT_ABI && TARGET_MAVERICK)                    \
+   || ((REGNO) == FIRST_IWMMXT_REGNUM && TARGET_IWMMXT_ABI) \
+   || (TARGET_32BIT && ((REGNO) == FIRST_FPA_REGNUM)                   \
+       && TARGET_HARD_FLOAT_ABI && TARGET_FPA))
+
+/* Amount of memory needed for an untyped call to save all possible return
+   registers.  */
+#define APPLY_RESULT_SIZE arm_apply_result_size()
+
+/* Define DEFAULT_PCC_STRUCT_RETURN to 1 if all structure and union return
+   values must be in memory.  On the ARM, they need only do so if larger
+   than a word, or if they contain elements offset from zero in the struct.  */
+#define DEFAULT_PCC_STRUCT_RETURN 0
+
+/* These bits describe the different types of function supported
+   by the ARM backend.  They are exclusive.  i.e. a function cannot be both a
+   normal function and an interworked function, for example.  Knowing the
+   type of a function is important for determining its prologue and
+   epilogue sequences.
+   Note value 7 is currently unassigned.  Also note that the interrupt
+   function types all have bit 2 set, so that they can be tested for easily.
+   Note that 0 is deliberately chosen for ARM_FT_UNKNOWN so that when the
+   machine_function structure is initialized (to zero) func_type will
+   default to unknown.  This will force the first use of arm_current_func_type
+   to call arm_compute_func_type.  */
+#define ARM_FT_UNKNOWN          0 /* Type has not yet been determined.  */
+#define ARM_FT_NORMAL           1 /* Your normal, straightforward function.  */
+#define ARM_FT_INTERWORKED      2 /* A function that supports interworking.  */
+#define ARM_FT_ISR              4 /* An interrupt service routine.  */
+#define ARM_FT_FIQ              5 /* A fast interrupt service routine.  */
+#define ARM_FT_EXCEPTION        6 /* An ARM exception handler (subcase of ISR).  */
+
+#define ARM_FT_TYPE_MASK       ((1 << 3) - 1)
+
+/* In addition functions can have several type modifiers,
+   outlined by these bit masks:  */
+#define ARM_FT_INTERRUPT       (1 << 2) /* Note overlap with FT_ISR and above.  */
+#define ARM_FT_NAKED           (1 << 3) /* No prologue or epilogue.  */
+#define ARM_FT_VOLATILE                (1 << 4) /* Does not return.  */
+#define ARM_FT_NESTED          (1 << 5) /* Embedded inside another func.  */
+#define ARM_FT_STACKALIGN      (1 << 6) /* Called with misaligned stack.  */
+
+/* Some macros to test these flags.  */
+#define ARM_FUNC_TYPE(t)       (t & ARM_FT_TYPE_MASK)
+#define IS_INTERRUPT(t)                (t & ARM_FT_INTERRUPT)
+#define IS_VOLATILE(t)         (t & ARM_FT_VOLATILE)
+#define IS_NAKED(t)            (t & ARM_FT_NAKED)
+#define IS_NESTED(t)           (t & ARM_FT_NESTED)
+#define IS_STACKALIGN(t)               (t & ARM_FT_STACKALIGN)
+
+
+/* Structure used to hold the function stack frame layout.  Offsets are
+   relative to the stack pointer on function entry.  Positive offsets are
+   in the direction of stack growth.
+   Only soft_frame is used in thumb mode.  */
+
+typedef struct arm_stack_offsets GTY(())
+{
+  int saved_args;      /* ARG_POINTER_REGNUM.  */
+  int frame;           /* ARM_HARD_FRAME_POINTER_REGNUM.  */
+  int saved_regs;
+  int soft_frame;      /* FRAME_POINTER_REGNUM.  */
+  int locals_base;     /* THUMB_HARD_FRAME_POINTER_REGNUM.  */
+  int outgoing_args;   /* STACK_POINTER_REGNUM.  */
+  unsigned int saved_regs_mask;
+}
+arm_stack_offsets;
+
+/* A C structure for machine-specific, per-function data.
+   This is added to the cfun structure.  */
+typedef struct machine_function GTY(())
+{
+  /* Additional stack adjustment in __builtin_eh_throw.  */
+  rtx eh_epilogue_sp_ofs;
+  /* Records if LR has to be saved for far jumps.  */
+  int far_jump_used;
+  /* Records if ARG_POINTER was ever live.  */
+  int arg_pointer_live;
+  /* Records if the save of LR has been eliminated.  */
+  int lr_save_eliminated;
+  /* The size of the stack frame.  Only valid after reload.  */
+  arm_stack_offsets stack_offsets;
+  /* Records the type of the current function.  */
+  unsigned long func_type;
+  /* Record if the function has a variable argument list.  */
+  int uses_anonymous_args;
+  /* Records if sibcalls are blocked because an argument
+     register is needed to preserve stack alignment.  */
+  int sibcall_blocked;
+  /* The PIC register for this function.  This might be a pseudo.  */
+  rtx pic_reg;
+  /* Labels for per-function Thumb call-via stubs.  One per potential calling
+     register.  We can never call via LR or PC.  We can call via SP if a
+     trampoline happens to be on the top of the stack.  */
+  rtx call_via[14];
+}
+machine_function;
+
+/* As in the machine_function, a global set of call-via labels, for code 
+   that is in text_section.  */
+extern GTY(()) rtx thumb_call_via_label[14];
+
+/* A C type for declaring a variable that is used as the first argument of
+   `FUNCTION_ARG' and other related values.  For some target machines, the
+   type `int' suffices and can hold the number of bytes of argument so far.  */
+typedef struct
+{
+  /* This is the number of registers of arguments scanned so far.  */
+  int nregs;
+  /* This is the number of iWMMXt register arguments scanned so far.  */
+  int iwmmxt_nregs;
+  int named_count;
+  int nargs;
+  int can_split;
+} CUMULATIVE_ARGS;
+
+/* Define where to put the arguments to a function.
+   Value is zero to push the argument on the stack,
+   or a hard register in which to store the argument.
+
+   MODE is the argument's machine mode.
+   TYPE is the data type of the argument (as a tree).
+    This is null for libcalls where that information may
+    not be available.
+   CUM is a variable of type CUMULATIVE_ARGS which gives info about
+    the preceding args and about the function being called.
+   NAMED is nonzero if this argument is a named parameter
+    (otherwise it is an extra parameter matching an ellipsis).
+
+   On the ARM, normally the first 16 bytes are passed in registers r0-r3; all
+   other arguments are passed on the stack.  If (NAMED == 0) (which happens
+   only in assign_parms, since TARGET_SETUP_INCOMING_VARARGS is
+   defined), say it is passed in the stack (function_prologue will
+   indeed make it pass in the stack if necessary).  */
+#define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \
+  arm_function_arg (&(CUM), (MODE), (TYPE), (NAMED))
+
+#define FUNCTION_ARG_PADDING(MODE, TYPE) \
+  (arm_pad_arg_upward (MODE, TYPE) ? upward : downward)
+
+#define BLOCK_REG_PADDING(MODE, TYPE, FIRST) \
+  (arm_pad_reg_upward (MODE, TYPE, FIRST) ? upward : downward)
+
+/* For AAPCS, padding should never be below the argument. For other ABIs,
+ * mimic the default.  */
+#define PAD_VARARGS_DOWN \
+  ((TARGET_AAPCS_BASED) ? 0 : BYTES_BIG_ENDIAN)
+
+/* Initialize a variable CUM of type CUMULATIVE_ARGS
+   for a call to a function whose data type is FNTYPE.
+   For a library call, FNTYPE is 0.
+   On the ARM, the offset starts at 0.  */
+#define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, FNDECL, N_NAMED_ARGS) \
+  arm_init_cumulative_args (&(CUM), (FNTYPE), (LIBNAME), (FNDECL))
+
+/* Update the data in CUM to advance over an argument
+   of mode MODE and data type TYPE.
+   (TYPE is null for libcalls where that information may not be available.)  */
+#define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED)   \
+  (CUM).nargs += 1;                                    \
+  if (arm_vector_mode_supported_p (MODE)               \
+      && (CUM).named_count > (CUM).nargs               \
+      && TARGET_IWMMXT_ABI)                            \
+    (CUM).iwmmxt_nregs += 1;                           \
+  else                                                 \
+    (CUM).nregs += ARM_NUM_REGS2 (MODE, TYPE)
+
+/* If defined, a C expression that gives the alignment boundary, in bits, of an
+   argument with the specified mode and type.  If it is not defined,
+   `PARM_BOUNDARY' is used for all arguments.  */
+#define FUNCTION_ARG_BOUNDARY(MODE,TYPE) \
+   ((ARM_DOUBLEWORD_ALIGN && arm_needs_doubleword_align (MODE, TYPE)) \
+   ? DOUBLEWORD_ALIGNMENT \
+   : PARM_BOUNDARY )
+
+/* 1 if N is a possible register number for function argument passing.
+   On the ARM, r0-r3 are used to pass args.  */
+#define FUNCTION_ARG_REGNO_P(REGNO)    \
+   (IN_RANGE ((REGNO), 0, 3)           \
+    || (TARGET_IWMMXT_ABI              \
+       && IN_RANGE ((REGNO), FIRST_IWMMXT_REGNUM, FIRST_IWMMXT_REGNUM + 9)))
+
+\f
+/* If your target environment doesn't prefix user functions with an
+   underscore, you may wish to re-define this to prevent any conflicts.  */
+#ifndef ARM_MCOUNT_NAME
+#define ARM_MCOUNT_NAME "*mcount"
+#endif
+
+/* Call the function profiler with a given profile label.  The Acorn
+   compiler puts this BEFORE the prolog but gcc puts it afterwards.
+   On the ARM the full profile code will look like:
+       .data
+       LP1
+               .word   0
+       .text
+               mov     ip, lr
+               bl      mcount
+               .word   LP1
+
+   profile_function() in final.c outputs the .data section, FUNCTION_PROFILER
+   will output the .text section.
+
+   The ``mov ip,lr'' seems like a good idea to stick with cc convention.
+   ``prof'' doesn't seem to mind about this!
+
+   Note - this version of the code is designed to work in both ARM and
+   Thumb modes.  */
+#ifndef ARM_FUNCTION_PROFILER
+#define ARM_FUNCTION_PROFILER(STREAM, LABELNO)         \
+{                                                      \
+  char temp[20];                                       \
+  rtx sym;                                             \
+                                                       \
+  asm_fprintf (STREAM, "\tmov\t%r, %r\n\tbl\t",                \
+          IP_REGNUM, LR_REGNUM);                       \
+  assemble_name (STREAM, ARM_MCOUNT_NAME);             \
+  fputc ('\n', STREAM);                                        \
+  ASM_GENERATE_INTERNAL_LABEL (temp, "LP", LABELNO);   \
+  sym = gen_rtx_SYMBOL_REF (Pmode, temp);              \
+  assemble_aligned_integer (UNITS_PER_WORD, sym);      \
+}
+#endif
+
+#ifdef THUMB_FUNCTION_PROFILER
+#define FUNCTION_PROFILER(STREAM, LABELNO)             \
+  if (TARGET_ARM)                                      \
+    ARM_FUNCTION_PROFILER (STREAM, LABELNO)            \
+  else                                                 \
+    THUMB_FUNCTION_PROFILER (STREAM, LABELNO)
+#else
+#define FUNCTION_PROFILER(STREAM, LABELNO)             \
+    ARM_FUNCTION_PROFILER (STREAM, LABELNO)
+#endif
+
+/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
+   the stack pointer does not matter.  The value is tested only in
+   functions that have frame pointers.
+   No definition is equivalent to always zero.
+
+   On the ARM, the function epilogue recovers the stack pointer from the
+   frame.  */
+#define EXIT_IGNORE_STACK 1
+
+#define EPILOGUE_USES(REGNO) ((REGNO) == LR_REGNUM)
+
+/* Determine if the epilogue should be output as RTL.
+   You should override this if you define FUNCTION_EXTRA_EPILOGUE.  */
+/* This is disabled for Thumb-2 because it will confuse the
+   conditional insn counter.  */
+#define USE_RETURN_INSN(ISCOND)                                \
+  (TARGET_ARM ? use_return_insn (ISCOND, NULL) : 0)
+
+/* Definitions for register eliminations.
+
+   This is an array of structures.  Each structure initializes one pair
+   of eliminable registers.  The "from" register number is given first,
+   followed by "to".  Eliminations of the same "from" register are listed
+   in order of preference.
+
+   We have two registers that can be eliminated on the ARM.  First, the
+   arg pointer register can often be eliminated in favor of the stack
+   pointer register.  Secondly, the pseudo frame pointer register can always
+   be eliminated; it is replaced with either the stack or the real frame
+   pointer.  Note we have to use {ARM|THUMB}_HARD_FRAME_POINTER_REGNUM
+   because the definition of HARD_FRAME_POINTER_REGNUM is not a constant.  */
+
+#define ELIMINABLE_REGS                                                \
+{{ ARG_POINTER_REGNUM,        STACK_POINTER_REGNUM            },\
+ { ARG_POINTER_REGNUM,        FRAME_POINTER_REGNUM            },\
+ { ARG_POINTER_REGNUM,        ARM_HARD_FRAME_POINTER_REGNUM   },\
+ { ARG_POINTER_REGNUM,        THUMB_HARD_FRAME_POINTER_REGNUM },\
+ { FRAME_POINTER_REGNUM,      STACK_POINTER_REGNUM            },\
+ { FRAME_POINTER_REGNUM,      ARM_HARD_FRAME_POINTER_REGNUM   },\
+ { FRAME_POINTER_REGNUM,      THUMB_HARD_FRAME_POINTER_REGNUM }}
+
+/* Given FROM and TO register numbers, say whether this elimination is
+   allowed.  Frame pointer elimination is automatically handled.
+
+   All eliminations are permissible.  Note that ARG_POINTER_REGNUM and
+   HARD_FRAME_POINTER_REGNUM are in fact the same thing.  If we need a frame
+   pointer, we must eliminate FRAME_POINTER_REGNUM into
+   HARD_FRAME_POINTER_REGNUM and not into STACK_POINTER_REGNUM or
+   ARG_POINTER_REGNUM.  */
+#define CAN_ELIMINATE(FROM, TO)                                                \
+  (((TO) == FRAME_POINTER_REGNUM && (FROM) == ARG_POINTER_REGNUM) ? 0 :        \
+   ((TO) == STACK_POINTER_REGNUM && frame_pointer_needed) ? 0 :                \
+   ((TO) == ARM_HARD_FRAME_POINTER_REGNUM && TARGET_THUMB) ? 0 :       \
+   ((TO) == THUMB_HARD_FRAME_POINTER_REGNUM && TARGET_ARM) ? 0 :       \
+   1)
+
+/* Define the offset between two registers, one to be eliminated, and the
+   other its replacement, at the start of a routine.  */
+#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET)                   \
+  if (TARGET_ARM)                                                      \
+    (OFFSET) = arm_compute_initial_elimination_offset (FROM, TO);      \
+  else                                                                 \
+    (OFFSET) = thumb_compute_initial_elimination_offset (FROM, TO)
+
+/* Special case handling of the location of arguments passed on the stack.  */
+#define DEBUGGER_ARG_OFFSET(value, addr) value ? value : arm_debugger_arg_offset (value, addr)
+
+/* Initialize data used by insn expanders.  This is called from insn_emit,
+   once for every function before code is generated.  */
+#define INIT_EXPANDERS  arm_init_expanders ()
+
+/* Output assembler code for a block containing the constant parts
+   of a trampoline, leaving space for the variable parts.
+
+   On the ARM, (if r8 is the static chain regnum, and remembering that
+   referencing pc adds an offset of 8) the trampoline looks like:
+          ldr          r8, [pc, #0]
+          ldr          pc, [pc]
+          .word        static chain value
+          .word        function's address
+   XXX FIXME: When the trampoline returns, r8 will be clobbered.  */
+#define ARM_TRAMPOLINE_TEMPLATE(FILE)                          \
+{                                                              \
+  asm_fprintf (FILE, "\tldr\t%r, [%r, #0]\n",                  \
+              STATIC_CHAIN_REGNUM, PC_REGNUM);                 \
+  asm_fprintf (FILE, "\tldr\t%r, [%r, #0]\n",                  \
+              PC_REGNUM, PC_REGNUM);                           \
+  assemble_aligned_integer (UNITS_PER_WORD, const0_rtx);       \
+  assemble_aligned_integer (UNITS_PER_WORD, const0_rtx);       \
+}
+
+/* The Thumb-2 trampoline is similar to the arm implementation.
+   Unlike 16-bit Thumb, we enter the stub in thumb mode.  */
+#define THUMB2_TRAMPOLINE_TEMPLATE(FILE)                       \
+{                                                              \
+  asm_fprintf (FILE, "\tldr.w\t%r, [%r, #4]\n",                        \
+              STATIC_CHAIN_REGNUM, PC_REGNUM);                 \
+  asm_fprintf (FILE, "\tldr.w\t%r, [%r, #4]\n",                        \
+              PC_REGNUM, PC_REGNUM);                           \
+  assemble_aligned_integer (UNITS_PER_WORD, const0_rtx);       \
+  assemble_aligned_integer (UNITS_PER_WORD, const0_rtx);       \
+}
+
+#define THUMB1_TRAMPOLINE_TEMPLATE(FILE)       \
+{                                              \
+  ASM_OUTPUT_ALIGN(FILE, 2);                   \
+  fprintf (FILE, "\t.code\t16\n");             \
+  fprintf (FILE, ".Ltrampoline_start:\n");     \
+  asm_fprintf (FILE, "\tpush\t{r0, r1}\n");    \
+  asm_fprintf (FILE, "\tldr\tr0, [%r, #8]\n",  \
+              PC_REGNUM);                      \
+  asm_fprintf (FILE, "\tmov\t%r, r0\n",                \
+              STATIC_CHAIN_REGNUM);            \
+  asm_fprintf (FILE, "\tldr\tr0, [%r, #8]\n",  \
+              PC_REGNUM);                      \
+  asm_fprintf (FILE, "\tstr\tr0, [%r, #4]\n",  \
+              SP_REGNUM);                      \
+  asm_fprintf (FILE, "\tpop\t{r0, %r}\n",      \
+              PC_REGNUM);                      \
+  assemble_aligned_integer (UNITS_PER_WORD, const0_rtx);       \
+  assemble_aligned_integer (UNITS_PER_WORD, const0_rtx);       \
+}
+
+#define TRAMPOLINE_TEMPLATE(FILE)              \
+  if (TARGET_ARM)                              \
+    ARM_TRAMPOLINE_TEMPLATE (FILE)             \
+  else if (TARGET_THUMB2)                      \
+    THUMB2_TRAMPOLINE_TEMPLATE (FILE)          \
+  else                                         \
+    THUMB1_TRAMPOLINE_TEMPLATE (FILE)
+
+/* Thumb trampolines should be entered in thumb mode, so set the bottom bit
+   of the address.  */
+#define TRAMPOLINE_ADJUST_ADDRESS(ADDR) do                                 \
+{                                                                          \
+  if (TARGET_THUMB)                                                        \
+    (ADDR) = expand_simple_binop (Pmode, IOR, (ADDR), GEN_INT(1),          \
+                                 gen_reg_rtx (Pmode), 0, OPTAB_LIB_WIDEN); \
+} while(0)
+
+/* Length in units of the trampoline for entering a nested function.  */
+#define TRAMPOLINE_SIZE  (TARGET_32BIT ? 16 : 20)
+
+/* Alignment required for a trampoline in bits.  */
+#define TRAMPOLINE_ALIGNMENT  32
+
+
+/* Emit RTL insns to initialize the variable parts of a trampoline.
+   FNADDR is an RTX for the address of the function's pure code.
+   CXT is an RTX for the static chain value for the function.  */
+#ifndef INITIALIZE_TRAMPOLINE
+#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT)                      \
+{                                                                      \
+  emit_move_insn (gen_rtx_MEM (SImode,                                 \
+                              plus_constant (TRAMP,                    \
+                                             TARGET_32BIT ? 8 : 12)),  \
+                 CXT);                                                 \
+  emit_move_insn (gen_rtx_MEM (SImode,                                 \
+                              plus_constant (TRAMP,                    \
+                                             TARGET_32BIT ? 12 : 16)), \
+                 FNADDR);                                              \
+  emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__clear_cache"),      \
+                    0, VOIDmode, 2, TRAMP, Pmode,                      \
+                    plus_constant (TRAMP, TRAMPOLINE_SIZE), Pmode);    \
+}
+#endif
+
+\f
+/* Addressing modes, and classification of registers for them.  */
+#define HAVE_POST_INCREMENT   1
+#define HAVE_PRE_INCREMENT    TARGET_32BIT
+#define HAVE_POST_DECREMENT   TARGET_32BIT
+#define HAVE_PRE_DECREMENT    TARGET_32BIT
+#define HAVE_PRE_MODIFY_DISP  TARGET_32BIT
+#define HAVE_POST_MODIFY_DISP TARGET_32BIT
+#define HAVE_PRE_MODIFY_REG   TARGET_32BIT
+#define HAVE_POST_MODIFY_REG  TARGET_32BIT
+
+/* Macros to check register numbers against specific register classes.  */
+
+/* These assume that REGNO is a hard or pseudo reg number.
+   They give nonzero only if REGNO is a hard reg of the suitable class
+   or a pseudo reg currently allocated to a suitable hard reg.
+   Since they use reg_renumber, they are safe only once reg_renumber
+   has been allocated, which happens in local-alloc.c.  */
+#define TEST_REGNO(R, TEST, VALUE) \
+  ((R TEST VALUE) || ((unsigned) reg_renumber[R] TEST VALUE))
+
+/* Don't allow the pc to be used.  */
+#define ARM_REGNO_OK_FOR_BASE_P(REGNO)                 \
+  (TEST_REGNO (REGNO, <, PC_REGNUM)                    \
+   || TEST_REGNO (REGNO, ==, FRAME_POINTER_REGNUM)     \
+   || TEST_REGNO (REGNO, ==, ARG_POINTER_REGNUM))
+
+#define THUMB1_REGNO_MODE_OK_FOR_BASE_P(REGNO, MODE)           \
+  (TEST_REGNO (REGNO, <=, LAST_LO_REGNUM)                      \
+   || (GET_MODE_SIZE (MODE) >= 4                               \
+       && TEST_REGNO (REGNO, ==, STACK_POINTER_REGNUM)))
+
+#define REGNO_MODE_OK_FOR_BASE_P(REGNO, MODE)          \
+  (TARGET_THUMB1                                       \
+   ? THUMB1_REGNO_MODE_OK_FOR_BASE_P (REGNO, MODE)     \
+   : ARM_REGNO_OK_FOR_BASE_P (REGNO))
+
+/* Nonzero if X can be the base register in a reg+reg addressing mode.
+   For Thumb, we can not use SP + reg, so reject SP.  */
+#define REGNO_MODE_OK_FOR_REG_BASE_P(X, MODE)  \
+  REGNO_MODE_OK_FOR_BASE_P (X, QImode)
+
+/* For ARM code, we don't care about the mode, but for Thumb, the index
+   must be suitable for use in a QImode load.  */
+#define REGNO_OK_FOR_INDEX_P(REGNO)    \
+  (REGNO_MODE_OK_FOR_BASE_P (REGNO, QImode) \
+   && !TEST_REGNO (REGNO, ==, STACK_POINTER_REGNUM))
+
+/* Maximum number of registers that can appear in a valid memory address.
+   Shifts in addresses can't be by a register.  */
+#define MAX_REGS_PER_ADDRESS 2
+
+/* Recognize any constant value that is a valid address.  */
+/* XXX We can address any constant, eventually...  */
+/* ??? Should the TARGET_ARM here also apply to thumb2?  */
+#define CONSTANT_ADDRESS_P(X)                          \
+  (GET_CODE (X) == SYMBOL_REF                  \
+   && (CONSTANT_POOL_ADDRESS_P (X)             \
+       || (TARGET_ARM && optimize > 0 && SYMBOL_REF_FLAG (X))))
+
+/* True if SYMBOL + OFFSET constants must refer to something within
+   SYMBOL's section.  */
+#define ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P 0
+
+/* Nonzero if all target requires all absolute relocations be R_ARM_ABS32.  */
+#ifndef TARGET_DEFAULT_WORD_RELOCATIONS
+#define TARGET_DEFAULT_WORD_RELOCATIONS 0
+#endif
+
+/* Nonzero if the constant value X is a legitimate general operand.
+   It is given that X satisfies CONSTANT_P or is a CONST_DOUBLE.
+
+   On the ARM, allow any integer (invalid ones are removed later by insn
+   patterns), nice doubles and symbol_refs which refer to the function's
+   constant pool XXX.
+
+   When generating pic allow anything.  */
+#define ARM_LEGITIMATE_CONSTANT_P(X)   (flag_pic || ! label_mentioned_p (X))
+
+#define THUMB_LEGITIMATE_CONSTANT_P(X) \
+ (   GET_CODE (X) == CONST_INT         \
+  || GET_CODE (X) == CONST_DOUBLE      \
+  || CONSTANT_ADDRESS_P (X)            \
+  || flag_pic)
+
+#define LEGITIMATE_CONSTANT_P(X)                       \
+  (!arm_cannot_force_const_mem (X)                     \
+   && (TARGET_32BIT ? ARM_LEGITIMATE_CONSTANT_P (X)    \
+                   : THUMB_LEGITIMATE_CONSTANT_P (X)))
+
+#ifndef SUBTARGET_NAME_ENCODING_LENGTHS
+#define SUBTARGET_NAME_ENCODING_LENGTHS
+#endif
+
+/* This is a C fragment for the inside of a switch statement.
+   Each case label should return the number of characters to
+   be stripped from the start of a function's name, if that
+   name starts with the indicated character.  */
+#define ARM_NAME_ENCODING_LENGTHS              \
+  case '*':  return 1;                         \
+  SUBTARGET_NAME_ENCODING_LENGTHS
+
+/* This is how to output a reference to a user-level label named NAME.
+   `assemble_name' uses this.  */
+#undef  ASM_OUTPUT_LABELREF
+#define ASM_OUTPUT_LABELREF(FILE, NAME)                \
+   arm_asm_output_labelref (FILE, NAME)
+
+/* Output IT instructions for conditionally executed Thumb-2 instructions.  */
+#define ASM_OUTPUT_OPCODE(STREAM, PTR) \
+  if (TARGET_THUMB2)                   \
+    thumb2_asm_output_opcode (STREAM);
+
+/* The EABI specifies that constructors should go in .init_array.
+   Other targets use .ctors for compatibility.  */
+#ifndef ARM_EABI_CTORS_SECTION_OP
+#define ARM_EABI_CTORS_SECTION_OP \
+  "\t.section\t.init_array,\"aw\",%init_array"
+#endif
+#ifndef ARM_EABI_DTORS_SECTION_OP
+#define ARM_EABI_DTORS_SECTION_OP \
+  "\t.section\t.fini_array,\"aw\",%fini_array"
+#endif
+#define ARM_CTORS_SECTION_OP \
+  "\t.section\t.ctors,\"aw\",%progbits"
+#define ARM_DTORS_SECTION_OP \
+  "\t.section\t.dtors,\"aw\",%progbits"
+
+/* Define CTORS_SECTION_ASM_OP.  */
+#undef CTORS_SECTION_ASM_OP
+#undef DTORS_SECTION_ASM_OP
+#ifndef IN_LIBGCC2
+# define CTORS_SECTION_ASM_OP \
+   (TARGET_AAPCS_BASED ? ARM_EABI_CTORS_SECTION_OP : ARM_CTORS_SECTION_OP)
+# define DTORS_SECTION_ASM_OP \
+   (TARGET_AAPCS_BASED ? ARM_EABI_DTORS_SECTION_OP : ARM_DTORS_SECTION_OP)
+#else /* !defined (IN_LIBGCC2) */
+/* In libgcc, CTORS_SECTION_ASM_OP must be a compile-time constant,
+   so we cannot use the definition above.  */
+# ifdef __ARM_EABI__
+/* The .ctors section is not part of the EABI, so we do not define
+   CTORS_SECTION_ASM_OP when in libgcc; that prevents crtstuff
+   from trying to use it.  We do define it when doing normal
+   compilation, as .init_array can be used instead of .ctors.  */
+/* There is no need to emit begin or end markers when using
+   init_array; the dynamic linker will compute the size of the
+   array itself based on special symbols created by the static
+   linker.  However, we do need to arrange to set up
+   exception-handling here.  */
+#   define CTOR_LIST_BEGIN asm (ARM_EABI_CTORS_SECTION_OP)
+#   define CTOR_LIST_END /* empty */
+#   define DTOR_LIST_BEGIN asm (ARM_EABI_DTORS_SECTION_OP)
+#   define DTOR_LIST_END /* empty */
+# else /* !defined (__ARM_EABI__) */
+#   define CTORS_SECTION_ASM_OP ARM_CTORS_SECTION_OP
+#   define DTORS_SECTION_ASM_OP ARM_DTORS_SECTION_OP
+# endif /* !defined (__ARM_EABI__) */
+#endif /* !defined (IN_LIBCC2) */
+
+/* True if the operating system can merge entities with vague linkage
+   (e.g., symbols in COMDAT group) during dynamic linking.  */
+#ifndef TARGET_ARM_DYNAMIC_VAGUE_LINKAGE_P
+#define TARGET_ARM_DYNAMIC_VAGUE_LINKAGE_P true
+#endif
+
+#define ARM_OUTPUT_FN_UNWIND(F, PROLOGUE) arm_output_fn_unwind (F, PROLOGUE)
+
+#ifdef TARGET_UNWIND_INFO
+#define ARM_EABI_UNWIND_TABLES \
+  ((!USING_SJLJ_EXCEPTIONS && flag_exceptions) || flag_unwind_tables)
+#else
+#define ARM_EABI_UNWIND_TABLES 0
+#endif
+
+/* The macros REG_OK_FOR..._P assume that the arg is a REG rtx
+   and check its validity for a certain class.
+   We have two alternate definitions for each of them.
+   The usual definition accepts all pseudo regs; the other rejects
+   them unless they have been allocated suitable hard regs.
+   The symbol REG_OK_STRICT causes the latter definition to be used.
+   Thumb-2 has the same restrictions as arm.  */
+#ifndef REG_OK_STRICT
+
+#define ARM_REG_OK_FOR_BASE_P(X)               \
+  (REGNO (X) <= LAST_ARM_REGNUM                        \
+   || REGNO (X) >= FIRST_PSEUDO_REGISTER       \
+   || REGNO (X) == FRAME_POINTER_REGNUM                \
+   || REGNO (X) == ARG_POINTER_REGNUM)
+
+#define ARM_REG_OK_FOR_INDEX_P(X)              \
+  ((REGNO (X) <= LAST_ARM_REGNUM               \
+    && REGNO (X) != STACK_POINTER_REGNUM)      \
+   || REGNO (X) >= FIRST_PSEUDO_REGISTER       \
+   || REGNO (X) == FRAME_POINTER_REGNUM                \
+   || REGNO (X) == ARG_POINTER_REGNUM)
+
+#define THUMB1_REG_MODE_OK_FOR_BASE_P(X, MODE) \
+  (REGNO (X) <= LAST_LO_REGNUM                 \
+   || REGNO (X) >= FIRST_PSEUDO_REGISTER       \
+   || (GET_MODE_SIZE (MODE) >= 4               \
+       && (REGNO (X) == STACK_POINTER_REGNUM   \
+          || (X) == hard_frame_pointer_rtx     \
+          || (X) == arg_pointer_rtx)))
+
+#define REG_STRICT_P 0
+
+#else /* REG_OK_STRICT */
+
+#define ARM_REG_OK_FOR_BASE_P(X)               \
+  ARM_REGNO_OK_FOR_BASE_P (REGNO (X))
+
+#define ARM_REG_OK_FOR_INDEX_P(X)              \
+  ARM_REGNO_OK_FOR_INDEX_P (REGNO (X))
+
+#define THUMB1_REG_MODE_OK_FOR_BASE_P(X, MODE) \
+  THUMB1_REGNO_MODE_OK_FOR_BASE_P (REGNO (X), MODE)
+
+#define REG_STRICT_P 1
+
+#endif /* REG_OK_STRICT */
+
+/* Now define some helpers in terms of the above.  */
+
+#define REG_MODE_OK_FOR_BASE_P(X, MODE)                \
+  (TARGET_THUMB1                               \
+   ? THUMB1_REG_MODE_OK_FOR_BASE_P (X, MODE)   \
+   : ARM_REG_OK_FOR_BASE_P (X))
+
+/* For 16-bit Thumb, a valid index register is anything that can be used in
+   a byte load instruction.  */
+#define THUMB1_REG_OK_FOR_INDEX_P(X) \
+  THUMB1_REG_MODE_OK_FOR_BASE_P (X, QImode)
+
+/* Nonzero if X is a hard reg that can be used as an index
+   or if it is a pseudo reg.  On the Thumb, the stack pointer
+   is not suitable.  */
+#define REG_OK_FOR_INDEX_P(X)                  \
+  (TARGET_THUMB1                               \
+   ? THUMB1_REG_OK_FOR_INDEX_P (X)             \
+   : ARM_REG_OK_FOR_INDEX_P (X))
+
+/* Nonzero if X can be the base register in a reg+reg addressing mode.
+   For Thumb, we can not use SP + reg, so reject SP.  */
+#define REG_MODE_OK_FOR_REG_BASE_P(X, MODE)    \
+  REG_OK_FOR_INDEX_P (X)
+\f
+/* GO_IF_LEGITIMATE_ADDRESS recognizes an RTL expression
+   that is a valid memory address for an instruction.
+   The MODE argument is the machine mode for the MEM expression
+   that wants to use this address.  */
+
+#define ARM_BASE_REGISTER_RTX_P(X)  \
+  (GET_CODE (X) == REG && ARM_REG_OK_FOR_BASE_P (X))
+
+#define ARM_INDEX_REGISTER_RTX_P(X)  \
+  (GET_CODE (X) == REG && ARM_REG_OK_FOR_INDEX_P (X))
+
+#define ARM_GO_IF_LEGITIMATE_ADDRESS(MODE,X,WIN)               \
+  {                                                            \
+    if (arm_legitimate_address_p (MODE, X, SET, REG_STRICT_P)) \
+      goto WIN;                                                        \
+  }
+
+#define THUMB2_GO_IF_LEGITIMATE_ADDRESS(MODE,X,WIN)            \
+  {                                                            \
+    if (thumb2_legitimate_address_p (MODE, X, REG_STRICT_P))   \
+      goto WIN;                                                        \
+  }
+
+#define THUMB1_GO_IF_LEGITIMATE_ADDRESS(MODE,X,WIN)            \
+  {                                                            \
+    if (thumb1_legitimate_address_p (MODE, X, REG_STRICT_P))   \
+      goto WIN;                                                        \
+  }
+
+#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, WIN)                         \
+  if (TARGET_ARM)                                                      \
+    ARM_GO_IF_LEGITIMATE_ADDRESS (MODE, X, WIN)                        \
+  else if (TARGET_THUMB2)                                              \
+    THUMB2_GO_IF_LEGITIMATE_ADDRESS (MODE, X, WIN)                     \
+  else /* if (TARGET_THUMB1) */                                                \
+    THUMB1_GO_IF_LEGITIMATE_ADDRESS (MODE, X, WIN)
+
+\f
+/* Try machine-dependent ways of modifying an illegitimate address
+   to be legitimate.  If we find one, return the new, valid address.  */
+#define ARM_LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN)     \
+do {                                                   \
+  X = arm_legitimize_address (X, OLDX, MODE);          \
+} while (0)
+
+/* ??? Implement LEGITIMIZE_ADDRESS for thumb2.  */
+#define THUMB2_LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN)  \
+do {                                                   \
+} while (0)
+
+#define THUMB1_LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN)  \
+do {                                                   \
+  X = thumb_legitimize_address (X, OLDX, MODE);                \
+} while (0)
+
+#define LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN)         \
+do {                                                   \
+  if (TARGET_ARM)                                      \
+    ARM_LEGITIMIZE_ADDRESS (X, OLDX, MODE, WIN);       \
+  else if (TARGET_THUMB2)                              \
+    THUMB2_LEGITIMIZE_ADDRESS (X, OLDX, MODE, WIN);    \
+  else                                                 \
+    THUMB1_LEGITIMIZE_ADDRESS (X, OLDX, MODE, WIN);    \
+                                                       \
+  if (memory_address_p (MODE, X))                      \
+    goto WIN;                                          \
+} while (0)
+
+/* Go to LABEL if ADDR (a legitimate address expression)
+   has an effect that depends on the machine mode it is used for.  */
+#define ARM_GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL)                          \
+{                                                                      \
+  if (   GET_CODE (ADDR) == PRE_DEC || GET_CODE (ADDR) == POST_DEC     \
+      || GET_CODE (ADDR) == PRE_INC || GET_CODE (ADDR) == POST_INC)    \
+    goto LABEL;                                                                \
+}
+
+/* Nothing helpful to do for the Thumb */
+#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL)      \
+  if (TARGET_32BIT)                                    \
+    ARM_GO_IF_MODE_DEPENDENT_ADDRESS (ADDR, LABEL)
+\f
+
+/* Specify the machine mode that this machine uses
+   for the index in the tablejump instruction.  */
+#define CASE_VECTOR_MODE Pmode
+
+#define CASE_VECTOR_PC_RELATIVE TARGET_THUMB2
+
+#define CASE_VECTOR_SHORTEN_MODE(min, max, body)               \
+   ((min < 0 || max >= 0x2000 || !TARGET_THUMB2) ? SImode      \
+   : (max >= 0x200) ? HImode                                   \
+   : QImode)
+
+/* signed 'char' is most compatible, but RISC OS wants it unsigned.
+   unsigned is probably best, but may break some code.  */
+#ifndef DEFAULT_SIGNED_CHAR
+#define DEFAULT_SIGNED_CHAR  0
+#endif
+
+/* Max number of bytes we can move from memory to memory
+   in one reasonably fast instruction.  */
+#define MOVE_MAX 4
+
+#undef  MOVE_RATIO
+#define MOVE_RATIO(speed) (arm_tune_xscale ? 4 : 2)
+
+/* Define if operations between registers always perform the operation
+   on the full register even if a narrower mode is specified.  */
+#define WORD_REGISTER_OPERATIONS
+
+/* Define if loading in MODE, an integral mode narrower than BITS_PER_WORD
+   will either zero-extend or sign-extend.  The value of this macro should
+   be the code that says which one of the two operations is implicitly
+   done, UNKNOWN if none.  */
+#define LOAD_EXTEND_OP(MODE)                                           \
+  (TARGET_THUMB ? ZERO_EXTEND :                                                \
+   ((arm_arch4 || (MODE) == QImode) ? ZERO_EXTEND                      \
+    : ((BYTES_BIG_ENDIAN && (MODE) == HImode) ? SIGN_EXTEND : UNKNOWN)))
+
+/* Nonzero if access to memory by bytes is slow and undesirable.  */
+#define SLOW_BYTE_ACCESS 0
+
+#define SLOW_UNALIGNED_ACCESS(MODE, ALIGN) 1
+
+/* Immediate shift counts are truncated by the output routines (or was it
+   the assembler?).  Shift counts in a register are truncated by ARM.  Note
+   that the native compiler puts too large (> 32) immediate shift counts
+   into a register and shifts by the register, letting the ARM decide what
+   to do instead of doing that itself.  */
+/* This is all wrong.  Defining SHIFT_COUNT_TRUNCATED tells combine that
+   code like (X << (Y % 32)) for register X, Y is equivalent to (X << Y).
+   On the arm, Y in a register is used modulo 256 for the shift. Only for
+   rotates is modulo 32 used.  */
+/* #define SHIFT_COUNT_TRUNCATED 1 */
+
+/* All integers have the same format so truncation is easy.  */
+#define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC)  1
+
+/* Calling from registers is a massive pain.  */
+#define NO_FUNCTION_CSE 1
+
+/* The machine modes of pointers and functions */
+#define Pmode  SImode
+#define FUNCTION_MODE  Pmode
+
+#define ARM_FRAME_RTX(X)                                       \
+  (   (X) == frame_pointer_rtx || (X) == stack_pointer_rtx     \
+   || (X) == arg_pointer_rtx)
+
+/* Moves to and from memory are quite expensive */
+#define MEMORY_MOVE_COST(M, CLASS, IN)                 \
+  (TARGET_32BIT ? 10 :                                 \
+   ((GET_MODE_SIZE (M) < 4 ? 8 : 2 * GET_MODE_SIZE (M))        \
+    * (CLASS == LO_REGS ? 1 : 2)))
+
+/* Try to generate sequences that don't involve branches, we can then use
+   conditional instructions */
+#define BRANCH_COST(speed_p, predictable_p) \
+  (TARGET_32BIT ? 4 : (optimize > 0 ? 2 : 0))
+\f
+/* Position Independent Code.  */
+/* We decide which register to use based on the compilation options and
+   the assembler in use; this is more general than the APCS restriction of
+   using sb (r9) all the time.  */
+extern unsigned arm_pic_register;
+
+/* The register number of the register used to address a table of static
+   data addresses in memory.  */
+#define PIC_OFFSET_TABLE_REGNUM arm_pic_register
+
+/* We can't directly access anything that contains a symbol,
+   nor can we indirect via the constant pool.  One exception is
+   UNSPEC_TLS, which is always PIC.  */
+#define LEGITIMATE_PIC_OPERAND_P(X)                                    \
+       (!(symbol_mentioned_p (X)                                       \
+          || label_mentioned_p (X)                                     \
+          || (GET_CODE (X) == SYMBOL_REF                               \
+              && CONSTANT_POOL_ADDRESS_P (X)                           \
+              && (symbol_mentioned_p (get_pool_constant (X))           \
+                  || label_mentioned_p (get_pool_constant (X)))))      \
+        || tls_mentioned_p (X))
+
+/* We need to know when we are making a constant pool; this determines
+   whether data needs to be in the GOT or can be referenced via a GOT
+   offset.  */
+extern int making_const_table;
+\f
+/* Handle pragmas for compatibility with Intel's compilers.  */
+/* Also abuse this to register additional C specific EABI attributes.  */
+#define REGISTER_TARGET_PRAGMAS() do {                                 \
+  c_register_pragma (0, "long_calls", arm_pr_long_calls);              \
+  c_register_pragma (0, "no_long_calls", arm_pr_no_long_calls);                \
+  c_register_pragma (0, "long_calls_off", arm_pr_long_calls_off);      \
+  arm_lang_object_attributes_init(); \
+} while (0)
+
+/* Condition code information.  */
+/* Given a comparison code (EQ, NE, etc.) and the first operand of a COMPARE,
+   return the mode to be used for the comparison.  */
+
+#define SELECT_CC_MODE(OP, X, Y)  arm_select_cc_mode (OP, X, Y)
+
+#define REVERSIBLE_CC_MODE(MODE) 1
+
+#define REVERSE_CONDITION(CODE,MODE) \
+  (((MODE) == CCFPmode || (MODE) == CCFPEmode) \
+   ? reverse_condition_maybe_unordered (code) \
+   : reverse_condition (code))
+
+#define CANONICALIZE_COMPARISON(CODE, OP0, OP1)                                \
+  do                                                                   \
+    {                                                                  \
+      if (GET_CODE (OP1) == CONST_INT                                  \
+          && ! (const_ok_for_arm (INTVAL (OP1))                                \
+               || (const_ok_for_arm (- INTVAL (OP1)))))                \
+        {                                                              \
+          rtx const_op = OP1;                                          \
+          CODE = arm_canonicalize_comparison ((CODE), GET_MODE (OP0),  \
+                                             &const_op);               \
+          OP1 = const_op;                                              \
+        }                                                              \
+    }                                                                  \
+  while (0)
+
+/* The arm5 clz instruction returns 32.  */
+#define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE)  ((VALUE) = 32, 1)
+\f
+#undef  ASM_APP_OFF
+#define ASM_APP_OFF (TARGET_THUMB1 ? "\t.code\t16\n" : \
+                    TARGET_THUMB2 ? "\t.thumb\n" : "")
+
+/* Output a push or a pop instruction (only used when profiling).  */
+#define ASM_OUTPUT_REG_PUSH(STREAM, REGNO)             \
+  do                                                   \
+    {                                                  \
+      if (TARGET_ARM)                                  \
+       asm_fprintf (STREAM,"\tstmfd\t%r!,{%r}\n",      \
+                    STACK_POINTER_REGNUM, REGNO);      \
+      else                                             \
+       asm_fprintf (STREAM, "\tpush {%r}\n", REGNO);   \
+    } while (0)
+
+
+#define ASM_OUTPUT_REG_POP(STREAM, REGNO)              \
+  do                                                   \
+    {                                                  \
+      if (TARGET_ARM)                                  \
+       asm_fprintf (STREAM, "\tldmfd\t%r!,{%r}\n",     \
+                    STACK_POINTER_REGNUM, REGNO);      \
+      else                                             \
+       asm_fprintf (STREAM, "\tpop {%r}\n", REGNO);    \
+    } while (0)
+
+/* Jump table alignment is explicit in ASM_OUTPUT_CASE_LABEL.  */
+#define ADDR_VEC_ALIGN(JUMPTABLE) 0
+
+/* This is how to output a label which precedes a jumptable.  Since
+   Thumb instructions are 2 bytes, we may need explicit alignment here.  */
+#undef  ASM_OUTPUT_CASE_LABEL
+#define ASM_OUTPUT_CASE_LABEL(FILE, PREFIX, NUM, JUMPTABLE)            \
+  do                                                                   \
+    {                                                                  \
+      if (TARGET_THUMB && GET_MODE (PATTERN (JUMPTABLE)) == SImode)    \
+        ASM_OUTPUT_ALIGN (FILE, 2);                                    \
+      (*targetm.asm_out.internal_label) (FILE, PREFIX, NUM);           \
+    }                                                                  \
+  while (0)
+
+/* Make sure subsequent insns are aligned after a TBB.  */
+#define ASM_OUTPUT_CASE_END(FILE, NUM, JUMPTABLE)      \
+  do                                                   \
+    {                                                  \
+      if (GET_MODE (PATTERN (JUMPTABLE)) == QImode)    \
+       ASM_OUTPUT_ALIGN (FILE, 1);                     \
+    }                                                  \
+  while (0)
+
+#define ARM_DECLARE_FUNCTION_NAME(STREAM, NAME, DECL)  \
+  do                                                   \
+    {                                                  \
+      if (TARGET_THUMB)                                \
+        {                                              \
+          if (is_called_in_ARM_mode (DECL)             \
+             || (TARGET_THUMB1 && !TARGET_THUMB1_ONLY  \
+                 && cfun->is_thunk))   \
+            fprintf (STREAM, "\t.code 32\n") ;         \
+          else if (TARGET_THUMB1)                      \
+           fprintf (STREAM, "\t.code\t16\n\t.thumb_func\n") ;  \
+          else                                         \
+           fprintf (STREAM, "\t.thumb\n\t.thumb_func\n") ;     \
+        }                                              \
+      if (TARGET_POKE_FUNCTION_NAME)                   \
+        arm_poke_function_name (STREAM, (const char *) NAME);  \
+    }                                                  \
+  while (0)
+
+/* For aliases of functions we use .thumb_set instead.  */
+#define ASM_OUTPUT_DEF_FROM_DECLS(FILE, DECL1, DECL2)          \
+  do                                                           \
+    {                                                          \
+      const char *const LABEL1 = XSTR (XEXP (DECL_RTL (decl), 0), 0); \
+      const char *const LABEL2 = IDENTIFIER_POINTER (DECL2);   \
+                                                               \
+      if (TARGET_THUMB && TREE_CODE (DECL1) == FUNCTION_DECL)  \
+       {                                                       \
+         fprintf (FILE, "\t.thumb_set ");                      \
+         assemble_name (FILE, LABEL1);                         \
+         fprintf (FILE, ",");                                  \
+         assemble_name (FILE, LABEL2);                         \
+         fprintf (FILE, "\n");                                 \
+       }                                                       \
+      else                                                     \
+       ASM_OUTPUT_DEF (FILE, LABEL1, LABEL2);                  \
+    }                                                          \
+  while (0)
+
+#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
+/* To support -falign-* switches we need to use .p2align so
+   that alignment directives in code sections will be padded
+   with no-op instructions, rather than zeroes.  */
+#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE, LOG, MAX_SKIP)         \
+  if ((LOG) != 0)                                              \
+    {                                                          \
+      if ((MAX_SKIP) == 0)                                     \
+        fprintf ((FILE), "\t.p2align %d\n", (int) (LOG));      \
+      else                                                     \
+        fprintf ((FILE), "\t.p2align %d,,%d\n",                        \
+                 (int) (LOG), (int) (MAX_SKIP));               \
+    }
+#endif
+\f
+/* Add two bytes to the length of conditionally executed Thumb-2
+   instructions for the IT instruction.  */
+#define ADJUST_INSN_LENGTH(insn, length) \
+  if (TARGET_THUMB2 && GET_CODE (PATTERN (insn)) == COND_EXEC) \
+    length += 2;
+
+/* Only perform branch elimination (by making instructions conditional) if
+   we're optimizing.  For Thumb-2 check if any IT instructions need
+   outputting.  */
+#define FINAL_PRESCAN_INSN(INSN, OPVEC, NOPERANDS)     \
+  if (TARGET_ARM && optimize)                          \
+    arm_final_prescan_insn (INSN);                     \
+  else if (TARGET_THUMB2)                              \
+    thumb2_final_prescan_insn (INSN);                  \
+  else if (TARGET_THUMB1)                              \
+    thumb1_final_prescan_insn (INSN)
+
+#define PRINT_OPERAND_PUNCT_VALID_P(CODE)      \
+  (CODE == '@' || CODE == '|' || CODE == '.'   \
+   || CODE == '(' || CODE == ')' || CODE == '#'        \
+   || (TARGET_32BIT && (CODE == '?'))          \
+   || (TARGET_THUMB2 && (CODE == '!'))         \
+   || (TARGET_THUMB && (CODE == '_')))
+
+/* Output an operand of an instruction.  */
+#define PRINT_OPERAND(STREAM, X, CODE)  \
+  arm_print_operand (STREAM, X, CODE)
+
+#define ARM_SIGN_EXTEND(x)  ((HOST_WIDE_INT)                   \
+  (HOST_BITS_PER_WIDE_INT <= 32 ? (unsigned HOST_WIDE_INT) (x) \
+   : ((((unsigned HOST_WIDE_INT)(x)) & (unsigned HOST_WIDE_INT) 0xffffffff) |\
+      ((((unsigned HOST_WIDE_INT)(x)) & (unsigned HOST_WIDE_INT) 0x80000000) \
+       ? ((~ (unsigned HOST_WIDE_INT) 0)                       \
+         & ~ (unsigned HOST_WIDE_INT) 0xffffffff)              \
+       : 0))))
+
+/* Output the address of an operand.  */
+#define ARM_PRINT_OPERAND_ADDRESS(STREAM, X)                           \
+{                                                                      \
+    int is_minus = GET_CODE (X) == MINUS;                              \
+                                                                       \
+    if (GET_CODE (X) == REG)                                           \
+      asm_fprintf (STREAM, "[%r, #0]", REGNO (X));                     \
+    else if (GET_CODE (X) == PLUS || is_minus)                         \
+      {                                                                        \
+       rtx base = XEXP (X, 0);                                         \
+       rtx index = XEXP (X, 1);                                        \
+       HOST_WIDE_INT offset = 0;                                       \
+       if (GET_CODE (base) != REG                                      \
+           || (GET_CODE (index) == REG && REGNO (index) == SP_REGNUM)) \
+         {                                                             \
+           /* Ensure that BASE is a register.  */                      \
+            /* (one of them must be).  */                              \
+           /* Also ensure the SP is not used as in index register.  */ \
+           rtx temp = base;                                            \
+           base = index;                                               \
+           index = temp;                                               \
+         }                                                             \
+       switch (GET_CODE (index))                                       \
+         {                                                             \
+         case CONST_INT:                                               \
+           offset = INTVAL (index);                                    \
+           if (is_minus)                                               \
+             offset = -offset;                                         \
+           asm_fprintf (STREAM, "[%r, #%wd]",                          \
+                        REGNO (base), offset);                         \
+           break;                                                      \
+                                                                       \
+         case REG:                                                     \
+           asm_fprintf (STREAM, "[%r, %s%r]",                          \
+                    REGNO (base), is_minus ? "-" : "",                 \
+                    REGNO (index));                                    \
+           break;                                                      \
+                                                                       \
+         case MULT:                                                    \
+         case ASHIFTRT:                                                \
+         case LSHIFTRT:                                                \
+         case ASHIFT:                                                  \
+         case ROTATERT:                                                \
+         {                                                             \
+           asm_fprintf (STREAM, "[%r, %s%r",                           \
+                        REGNO (base), is_minus ? "-" : "",             \
+                         REGNO (XEXP (index, 0)));                     \
+           arm_print_operand (STREAM, index, 'S');                     \
+           fputs ("]", STREAM);                                        \
+           break;                                                      \
+         }                                                             \
+                                                                       \
+         default:                                                      \
+           gcc_unreachable ();                                         \
+       }                                                               \
+    }                                                                  \
+  else if (GET_CODE (X) == PRE_INC || GET_CODE (X) == POST_INC         \
+          || GET_CODE (X) == PRE_DEC || GET_CODE (X) == POST_DEC)      \
+    {                                                                  \
+      extern enum machine_mode output_memory_reference_mode;           \
+                                                                       \
+      gcc_assert (GET_CODE (XEXP (X, 0)) == REG);                      \
+                                                                       \
+      if (GET_CODE (X) == PRE_DEC || GET_CODE (X) == PRE_INC)          \
+       asm_fprintf (STREAM, "[%r, #%s%d]!",                            \
+                    REGNO (XEXP (X, 0)),                               \
+                    GET_CODE (X) == PRE_DEC ? "-" : "",                \
+                    GET_MODE_SIZE (output_memory_reference_mode));     \
+      else                                                             \
+       asm_fprintf (STREAM, "[%r], #%s%d",                             \
+                    REGNO (XEXP (X, 0)),                               \
+                    GET_CODE (X) == POST_DEC ? "-" : "",               \
+                    GET_MODE_SIZE (output_memory_reference_mode));     \
+    }                                                                  \
+  else if (GET_CODE (X) == PRE_MODIFY)                                 \
+    {                                                                  \
+      asm_fprintf (STREAM, "[%r, ", REGNO (XEXP (X, 0)));              \
+      if (GET_CODE (XEXP (XEXP (X, 1), 1)) == CONST_INT)               \
+       asm_fprintf (STREAM, "#%wd]!",                                  \
+                    INTVAL (XEXP (XEXP (X, 1), 1)));                   \
+      else                                                             \
+       asm_fprintf (STREAM, "%r]!",                                    \
+                    REGNO (XEXP (XEXP (X, 1), 1)));                    \
+    }                                                                  \
+  else if (GET_CODE (X) == POST_MODIFY)                                        \
+    {                                                                  \
+      asm_fprintf (STREAM, "[%r], ", REGNO (XEXP (X, 0)));             \
+      if (GET_CODE (XEXP (XEXP (X, 1), 1)) == CONST_INT)               \
+       asm_fprintf (STREAM, "#%wd",                                    \
+                    INTVAL (XEXP (XEXP (X, 1), 1)));                   \
+      else                                                             \
+       asm_fprintf (STREAM, "%r",                                      \
+                    REGNO (XEXP (XEXP (X, 1), 1)));                    \
+    }                                                                  \
+  else output_addr_const (STREAM, X);                                  \
+}
+
+#define THUMB_PRINT_OPERAND_ADDRESS(STREAM, X)         \
+{                                                      \
+  if (GET_CODE (X) == REG)                             \
+    asm_fprintf (STREAM, "[%r]", REGNO (X));           \
+  else if (GET_CODE (X) == POST_INC)                   \
+    asm_fprintf (STREAM, "%r!", REGNO (XEXP (X, 0)));  \
+  else if (GET_CODE (X) == PLUS)                       \
+    {                                                  \
+      gcc_assert (GET_CODE (XEXP (X, 0)) == REG);      \
+      if (GET_CODE (XEXP (X, 1)) == CONST_INT)         \
+       asm_fprintf (STREAM, "[%r, #%wd]",              \
+                    REGNO (XEXP (X, 0)),               \
+                    INTVAL (XEXP (X, 1)));             \
+      else                                             \
+       asm_fprintf (STREAM, "[%r, %r]",                \
+                    REGNO (XEXP (X, 0)),               \
+                    REGNO (XEXP (X, 1)));              \
+    }                                                  \
+  else                                                 \
+    output_addr_const (STREAM, X);                     \
+}
+
+#define PRINT_OPERAND_ADDRESS(STREAM, X)       \
+  if (TARGET_32BIT)                            \
+    ARM_PRINT_OPERAND_ADDRESS (STREAM, X)      \
+  else                                         \
+    THUMB_PRINT_OPERAND_ADDRESS (STREAM, X)
+
+#define OUTPUT_ADDR_CONST_EXTRA(file, x, fail)         \
+  if (arm_output_addr_const_extra (file, x) == FALSE)  \
+    goto fail
+
+/* A C expression whose value is RTL representing the value of the return
+   address for the frame COUNT steps up from the current frame.  */
+
+#define RETURN_ADDR_RTX(COUNT, FRAME) \
+  arm_return_addr (COUNT, FRAME)
+
+/* Mask of the bits in the PC that contain the real return address
+   when running in 26-bit mode.  */
+#define RETURN_ADDR_MASK26 (0x03fffffc)
+
+/* Pick up the return address upon entry to a procedure. Used for
+   dwarf2 unwind information.  This also enables the table driven
+   mechanism.  */
+#define INCOMING_RETURN_ADDR_RTX       gen_rtx_REG (Pmode, LR_REGNUM)
+#define DWARF_FRAME_RETURN_COLUMN      DWARF_FRAME_REGNUM (LR_REGNUM)
+
+/* Used to mask out junk bits from the return address, such as
+   processor state, interrupt status, condition codes and the like.  */
+#define MASK_RETURN_ADDR \
+  /* If we are generating code for an ARM2/ARM3 machine or for an ARM6 \
+     in 26 bit mode, the condition codes must be masked out of the     \
+     return address.  This does not apply to ARM6 and later processors \
+     when running in 32 bit mode.  */                                  \
+  ((arm_arch4 || TARGET_THUMB)                                         \
+   ? (gen_int_mode ((unsigned long)0xffffffff, Pmode))                 \
+   : arm_gen_return_addr_mask ())
+
+\f
+/* Neon defines builtins from ARM_BUILTIN_MAX upwards, though they don't have
+   symbolic names defined here (which would require too much duplication).
+   FIXME?  */
+enum arm_builtins
+{
+  ARM_BUILTIN_GETWCX,
+  ARM_BUILTIN_SETWCX,
+
+  ARM_BUILTIN_WZERO,
+
+  ARM_BUILTIN_WAVG2BR,
+  ARM_BUILTIN_WAVG2HR,
+  ARM_BUILTIN_WAVG2B,
+  ARM_BUILTIN_WAVG2H,
+
+  ARM_BUILTIN_WACCB,
+  ARM_BUILTIN_WACCH,
+  ARM_BUILTIN_WACCW,
+
+  ARM_BUILTIN_WMACS,
+  ARM_BUILTIN_WMACSZ,
+  ARM_BUILTIN_WMACU,
+  ARM_BUILTIN_WMACUZ,
+
+  ARM_BUILTIN_WSADB,
+  ARM_BUILTIN_WSADBZ,
+  ARM_BUILTIN_WSADH,
+  ARM_BUILTIN_WSADHZ,
+
+  ARM_BUILTIN_WALIGN,
+
+  ARM_BUILTIN_TMIA,
+  ARM_BUILTIN_TMIAPH,
+  ARM_BUILTIN_TMIABB,
+  ARM_BUILTIN_TMIABT,
+  ARM_BUILTIN_TMIATB,
+  ARM_BUILTIN_TMIATT,
+
+  ARM_BUILTIN_TMOVMSKB,
+  ARM_BUILTIN_TMOVMSKH,
+  ARM_BUILTIN_TMOVMSKW,
+
+  ARM_BUILTIN_TBCSTB,
+  ARM_BUILTIN_TBCSTH,
+  ARM_BUILTIN_TBCSTW,
+
+  ARM_BUILTIN_WMADDS,
+  ARM_BUILTIN_WMADDU,
+
+  ARM_BUILTIN_WPACKHSS,
+  ARM_BUILTIN_WPACKWSS,
+  ARM_BUILTIN_WPACKDSS,
+  ARM_BUILTIN_WPACKHUS,
+  ARM_BUILTIN_WPACKWUS,
+  ARM_BUILTIN_WPACKDUS,
+
+  ARM_BUILTIN_WADDB,
+  ARM_BUILTIN_WADDH,
+  ARM_BUILTIN_WADDW,
+  ARM_BUILTIN_WADDSSB,
+  ARM_BUILTIN_WADDSSH,
+  ARM_BUILTIN_WADDSSW,
+  ARM_BUILTIN_WADDUSB,
+  ARM_BUILTIN_WADDUSH,
+  ARM_BUILTIN_WADDUSW,
+  ARM_BUILTIN_WSUBB,
+  ARM_BUILTIN_WSUBH,
+  ARM_BUILTIN_WSUBW,
+  ARM_BUILTIN_WSUBSSB,
+  ARM_BUILTIN_WSUBSSH,
+  ARM_BUILTIN_WSUBSSW,
+  ARM_BUILTIN_WSUBUSB,
+  ARM_BUILTIN_WSUBUSH,
+  ARM_BUILTIN_WSUBUSW,
+
+  ARM_BUILTIN_WAND,
+  ARM_BUILTIN_WANDN,
+  ARM_BUILTIN_WOR,
+  ARM_BUILTIN_WXOR,
+
+  ARM_BUILTIN_WCMPEQB,
+  ARM_BUILTIN_WCMPEQH,
+  ARM_BUILTIN_WCMPEQW,
+  ARM_BUILTIN_WCMPGTUB,
+  ARM_BUILTIN_WCMPGTUH,
+  ARM_BUILTIN_WCMPGTUW,
+  ARM_BUILTIN_WCMPGTSB,
+  ARM_BUILTIN_WCMPGTSH,
+  ARM_BUILTIN_WCMPGTSW,
+
+  ARM_BUILTIN_TEXTRMSB,
+  ARM_BUILTIN_TEXTRMSH,
+  ARM_BUILTIN_TEXTRMSW,
+  ARM_BUILTIN_TEXTRMUB,
+  ARM_BUILTIN_TEXTRMUH,
+  ARM_BUILTIN_TEXTRMUW,
+  ARM_BUILTIN_TINSRB,
+  ARM_BUILTIN_TINSRH,
+  ARM_BUILTIN_TINSRW,
+
+  ARM_BUILTIN_WMAXSW,
+  ARM_BUILTIN_WMAXSH,
+  ARM_BUILTIN_WMAXSB,
+  ARM_BUILTIN_WMAXUW,
+  ARM_BUILTIN_WMAXUH,
+  ARM_BUILTIN_WMAXUB,
+  ARM_BUILTIN_WMINSW,
+  ARM_BUILTIN_WMINSH,
+  ARM_BUILTIN_WMINSB,
+  ARM_BUILTIN_WMINUW,
+  ARM_BUILTIN_WMINUH,
+  ARM_BUILTIN_WMINUB,
+
+  ARM_BUILTIN_WMULUM,
+  ARM_BUILTIN_WMULSM,
+  ARM_BUILTIN_WMULUL,
+
+  ARM_BUILTIN_PSADBH,
+  ARM_BUILTIN_WSHUFH,
+
+  ARM_BUILTIN_WSLLH,
+  ARM_BUILTIN_WSLLW,
+  ARM_BUILTIN_WSLLD,
+  ARM_BUILTIN_WSRAH,
+  ARM_BUILTIN_WSRAW,
+  ARM_BUILTIN_WSRAD,
+  ARM_BUILTIN_WSRLH,
+  ARM_BUILTIN_WSRLW,
+  ARM_BUILTIN_WSRLD,
+  ARM_BUILTIN_WRORH,
+  ARM_BUILTIN_WRORW,
+  ARM_BUILTIN_WRORD,
+  ARM_BUILTIN_WSLLHI,
+  ARM_BUILTIN_WSLLWI,
+  ARM_BUILTIN_WSLLDI,
+  ARM_BUILTIN_WSRAHI,
+  ARM_BUILTIN_WSRAWI,
+  ARM_BUILTIN_WSRADI,
+  ARM_BUILTIN_WSRLHI,
+  ARM_BUILTIN_WSRLWI,
+  ARM_BUILTIN_WSRLDI,
+  ARM_BUILTIN_WRORHI,
+  ARM_BUILTIN_WRORWI,
+  ARM_BUILTIN_WRORDI,
+
+  ARM_BUILTIN_WUNPCKIHB,
+  ARM_BUILTIN_WUNPCKIHH,
+  ARM_BUILTIN_WUNPCKIHW,
+  ARM_BUILTIN_WUNPCKILB,
+  ARM_BUILTIN_WUNPCKILH,
+  ARM_BUILTIN_WUNPCKILW,
+
+  ARM_BUILTIN_WUNPCKEHSB,
+  ARM_BUILTIN_WUNPCKEHSH,
+  ARM_BUILTIN_WUNPCKEHSW,
+  ARM_BUILTIN_WUNPCKEHUB,
+  ARM_BUILTIN_WUNPCKEHUH,
+  ARM_BUILTIN_WUNPCKEHUW,
+  ARM_BUILTIN_WUNPCKELSB,
+  ARM_BUILTIN_WUNPCKELSH,
+  ARM_BUILTIN_WUNPCKELSW,
+  ARM_BUILTIN_WUNPCKELUB,
+  ARM_BUILTIN_WUNPCKELUH,
+  ARM_BUILTIN_WUNPCKELUW,
+
+  ARM_BUILTIN_THREAD_POINTER,
+
+  ARM_BUILTIN_NEON_BASE,
+
+  ARM_BUILTIN_MAX = ARM_BUILTIN_NEON_BASE  /* FIXME: Wrong!  */
+};
+
+/* Do not emit .note.GNU-stack by default.  */
+#ifndef NEED_INDICATE_EXEC_STACK
+#define NEED_INDICATE_EXEC_STACK       0
+#endif
+
+#endif /* ! GCC_ARM_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/bpabi.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/bpabi.h
new file mode 100644 (file)
index 0000000..4d2974e
--- /dev/null
@@ -0,0 +1,172 @@
+/* Configuration file for ARM BPABI targets.
+   Copyright (C) 2004, 2005, 2007, 2008, 2009
+   Free Software Foundation, Inc.
+   Contributed by CodeSourcery, LLC   
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published
+   by the Free Software Foundation; either version 3, or (at your
+   option) any later version.
+
+   GCC is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Use the AAPCS ABI by default.  */
+#define ARM_DEFAULT_ABI ARM_ABI_AAPCS
+
+/* Assume that AAPCS ABIs should adhere to the full BPABI.  */ 
+#define TARGET_BPABI (TARGET_AAPCS_BASED)
+
+/* BPABI targets use EABI frame unwinding tables.  */
+#define TARGET_UNWIND_INFO 1
+
+/* Section 4.1 of the AAPCS requires the use of VFP format.  */
+#undef  FPUTYPE_DEFAULT
+#define FPUTYPE_DEFAULT FPUTYPE_VFP
+
+/* TARGET_BIG_ENDIAN_DEFAULT is set in
+   config.gcc for big endian configurations.  */
+#if TARGET_BIG_ENDIAN_DEFAULT
+#define TARGET_ENDIAN_DEFAULT MASK_BIG_END
+#else
+#define TARGET_ENDIAN_DEFAULT 0
+#endif
+
+/* EABI targets should enable interworking by default.  */
+#undef  TARGET_DEFAULT
+#define TARGET_DEFAULT (MASK_INTERWORK | TARGET_ENDIAN_DEFAULT)
+
+/* The ARM BPABI functions return a boolean; they use no special
+   calling convention.  */
+#define FLOAT_LIB_COMPARE_RETURNS_BOOL(MODE, COMPARISON) TARGET_BPABI
+
+/* The BPABI integer comparison routines return { -1, 0, 1 }.  */
+#define TARGET_LIB_INT_CMP_BIASED !TARGET_BPABI
+
+#define TARGET_FIX_V4BX_SPEC " %{mcpu=arm8|mcpu=arm810|mcpu=strongarm*|march=armv4:--fix-v4bx}"
+
+/* Tell the assembler to build BPABI binaries.  */
+#undef  SUBTARGET_EXTRA_ASM_SPEC
+#define SUBTARGET_EXTRA_ASM_SPEC "%{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu;:-meabi=5}" TARGET_FIX_V4BX_SPEC
+
+#ifndef SUBTARGET_EXTRA_LINK_SPEC
+#define SUBTARGET_EXTRA_LINK_SPEC ""
+#endif
+
+/* The generic link spec in elf.h does not support shared libraries.  */
+#define BPABI_LINK_SPEC \
+  "%{mbig-endian:-EB} %{mlittle-endian:-EL} "          \
+  "%{static:-Bstatic} %{shared:-shared} %{symbolic:-Bsymbolic} "       \
+  "-X" SUBTARGET_EXTRA_LINK_SPEC TARGET_FIX_V4BX_SPEC
+
+#undef  LINK_SPEC
+#define LINK_SPEC BPABI_LINK_SPEC
+
+#if defined (__thumb__)
+#define RENAME_LIBRARY_SET ".thumb_set"
+#else
+#define RENAME_LIBRARY_SET ".set"
+#endif
+
+/* Make __aeabi_AEABI_NAME an alias for __GCC_NAME.  */
+#define RENAME_LIBRARY(GCC_NAME, AEABI_NAME)           \
+  __asm__ (".globl\t__aeabi_" #AEABI_NAME "\n"         \
+          RENAME_LIBRARY_SET "\t__aeabi_" #AEABI_NAME  \
+            ", __" #GCC_NAME "\n");
+
+/* Give some libgcc functions an additional __aeabi name.  */
+#ifdef L_muldi3
+#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (muldi3, lmul)
+#endif
+#ifdef L_muldi3
+#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (muldi3, lmul)
+#endif
+#ifdef L_fixdfdi
+#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixdfdi, d2lz)
+#endif
+#ifdef L_fixunsdfdi
+#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunsdfdi, d2ulz)
+#endif
+#ifdef L_fixsfdi
+#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixsfdi, f2lz)
+#endif
+#ifdef L_fixunssfdi
+#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfdi, f2ulz)
+#endif
+#ifdef L_floatdidf
+#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdidf, l2d)
+#endif
+#ifdef L_floatdisf
+#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdisf, l2f)
+#endif
+
+/* These renames are needed on ARMv6M.  Other targets get them from
+   assembly routines.  */
+#ifdef L_fixunsdfsi
+#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunsdfsi, d2uiz)
+#endif
+#ifdef L_fixunssfsi
+#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfsi, f2uiz)
+#endif
+#ifdef L_floatundidf
+#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatundidf, ul2d)
+#endif
+#ifdef L_floatundisf
+#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatundisf, ul2f)
+#endif
+
+/* The BPABI requires that we always use an out-of-line implementation
+   of RTTI comparison, even if the target supports weak symbols,
+   because the same object file might be used on a target that does
+   not support merging symbols across DLL boundaries.  This macro is
+   broken out separately so that it can be used within
+   TARGET_OS_CPP_BUILTINS in configuration files for systems based on
+   the BPABI.  */
+#define TARGET_BPABI_CPP_BUILTINS()                    \
+  do                                                   \
+    {                                                  \
+      builtin_define ("__GXX_TYPEINFO_EQUALITY_INLINE=0");     \
+    }                                                  \
+  while (false)
+
+#undef TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS() \
+  TARGET_BPABI_CPP_BUILTINS()
+
+/* The BPABI specifies the use of .{init,fini}_array.  Therefore, we
+   do not want GCC to put anything into the .{init,fini} sections.  */
+#undef INIT_SECTION_ASM_OP
+#undef FINI_SECTION_ASM_OP
+#define INIT_ARRAY_SECTION_ASM_OP ARM_EABI_CTORS_SECTION_OP
+#define FINI_ARRAY_SECTION_ASM_OP ARM_EABI_DTORS_SECTION_OP
+
+/* The legacy _mcount implementation assumes r11 points to a
+    4-word APCS frame.  This is generally not true for EABI targets,
+    particularly not in Thumb mode.  We assume the mcount
+    implementation does not require a counter variable (No Counter).
+    Note that __gnu_mcount_nc will be entered with a misaligned stack.
+    This is OK because it uses a special calling convention anyway.  */
+
+#undef  NO_PROFILE_COUNTERS
+#define NO_PROFILE_COUNTERS 1
+#undef  ARM_FUNCTION_PROFILER
+#define ARM_FUNCTION_PROFILER(STREAM, LABELNO)                         \
+{                                                                      \
+  fprintf (STREAM, "\tpush\t{lr}\n");                                  \
+  fprintf (STREAM, "\tbl\t__gnu_mcount_nc\n");                         \
+}
+
+#undef SUBTARGET_FRAME_POINTER_REQUIRED
+#define SUBTARGET_FRAME_POINTER_REQUIRED 0
+
+/* __gnu_mcount_nc restores the original LR value before returning.  Ensure
+   that there is no unnecessary hook set up.  */
+#undef PROFILE_HOOK
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/eabi.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/eabi.h
new file mode 100644 (file)
index 0000000..475ce78
--- /dev/null
@@ -0,0 +1,130 @@
+/* Configuration file for ARM EABI targets.
+   Copyright (C) 2008
+   Free Software Foundation, Inc.
+   Contributed by Doug Kwan (dougkwan@google.com)
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published
+   by the Free Software Foundation; either version 3, or (at your
+   option) any later version.
+
+   GCC is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.  */
+
+/* This file contains macro overrides for EABI targets.  */
+
+#undef TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS()                       \
+  do                                                   \
+    {                                                  \
+      TARGET_BPABI_CPP_BUILTINS ();                    \
+      if (TARGET_ANDROID)                              \
+       builtin_define ("__ANDROID__");                 \
+    }                                                  \
+  while (false)
+
+#undef SUBSUBTARGET_EXTRA_SPECS
+#define SUBSUBTARGET_EXTRA_SPECS \
+  { "link_android",            ANDROID_LINK_SPEC },            \
+  { "link_default",            BPABI_LINK_SPEC },              \
+  { "cc1_android",             ANDROID_CC1_SPEC },             \
+  { "cc1_default",             CC1_DEFAULT_SPEC },             \
+  { "cc1plus_android",         ANDROID_CC1PLUS_SPEC },         \
+  { "cc1plus_default",         CC1PLUS_DEFAULT_SPEC },         \
+  { "lib_android",             ANDROID_LIB_SPEC },             \
+  { "lib_default",             LIB_DEFAULT_SPEC },             \
+  { "startfile_android",       ANDROID_STARTFILE_SPEC },       \
+  { "startfile_default",       UNKNOWN_ELF_STARTFILE_SPEC },   \
+  { "endfile_android",         ANDROID_ENDFILE_SPEC },         \
+  { "endfile_default",         UNKNOWN_ELF_ENDFILE_SPEC },     \
+
+#undef ANDROID_LINK_SPEC
+#define ANDROID_LINK_SPEC \
+"%{mbig-endian:-EB} %{mlittle-endian:-EL} "            \
+"%{static:-Bstatic} %{shared:-shared} %{symbolic:-Bsymbolic} " \
+"%{!static:" \
+   "%{shared: -Bsymbolic} " \
+   "%{!shared:" \
+      "-Bdynamic " \
+      "%{rdynamic:-export-dynamic} " \
+      "%{!dynamic-linker:-dynamic-linker /system/bin/linker}}} " \
+"-X" SUBTARGET_EXTRA_LINK_SPEC
+
+/* Override LINK_SPEC in bpabi.h. */
+#undef LINK_SPEC
+#define LINK_SPEC \
+"%{mandroid: %(link_android) ;" \
+"          : %(link_default)}"
+
+/* Android uses "-fno-exceptions -fpic -fno-short-enums -mthumb-interwork" by
+   default. */
+#undef ANDROID_CC1_SPEC
+#define ANDROID_CC1_SPEC \
+"%{!fexceptions:-fno-exceptions} " \
+"%{!fno-pic:%{!fno-PIC:-fpic}} " \
+"%{!fshort-enums:-fno-short-enums} " \
+"%{!mno-thumb-interwork:-mthumb-interwork}"
+
+/* Default CC1_SPEC as in arm.h. */
+#undef CC1_DEFAULT_SPEC
+#define CC1_DEFAULT_SPEC ""
+
+#undef CC1_SPEC
+#define CC1_SPEC \
+"%{mandroid: %(cc1_android) ;" \
+"          : %(cc1_default)}"
+
+/* Android uses -fno-rtti by default. */
+#undef ANDROID_CC1PLUS_SPEC
+#define ANDROID_CC1PLUS_SPEC "%{!frtti:-fno-rtti}"
+
+/* Default CC1PLUS_SPEC as in gcc.c. */
+#undef CC1PLUS_DEFAULT_SPEC
+#define CC1PLUS_DEFAULT_SPEC ""
+
+#undef CC1PLUS_SPEC
+#define CC1PLUS_SPEC \
+"%{mandroid: %(cc1plus_android) ;" \
+"          : %(cc1plus_default)}"
+
+#undef ANDROID_LIB_SPEC
+#define ANDROID_LIB_SPEC       "-lc %{!static:-ldl}"
+
+/* Default LIB_SPEC as in gcc.c. */
+#undef LIB_DEFAULT_SPEC
+#define LIB_DEFAULT_SPEC \
+"%{!shared:%{g*:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}}"
+
+#undef LIB_SPEC
+#define LIB_SPEC \
+"%{mandroid: %(lib_android) ;" \
+"          : %(lib_default)}"
+
+#undef ANDROID_STARTFILE_SPEC
+#define ANDROID_STARTFILE_SPEC \
+"%{!shared:" \
+   "%{static: crtbegin_static%O%s ;" \
+   "        : crtbegin_dynamic%O%s}}"
+
+/* Override STARTFILE_SPEC in unknown-elf.h. */
+#undef STARTFILE_SPEC
+#define STARTFILE_SPEC \
+"%{mandroid: %(startfile_android) ;" \
+"          : %(startfile_default)}"
+
+#undef ANDROID_ENDFILE_SPEC
+#define ANDROID_ENDFILE_SPEC   "%{!shared:crtend_android%O%s}"
+
+/* Override ENDFILE_SPEC in unknown-elf.h. */
+#undef ENDFILE_SPEC
+#define ENDFILE_SPEC \
+"%{mandroid: %(endfile_android) ;" \
+"          : %(endfile_default)}"
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/elf.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/elf.h
new file mode 100644 (file)
index 0000000..7c3eddb
--- /dev/null
@@ -0,0 +1,165 @@
+/* Definitions of target machine for GNU compiler.
+   For ARM with ELF obj format.
+   Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2004, 2005, 2007,
+   2008 Free Software Foundation, Inc.
+   Contributed by Philip Blundell <philb@gnu.org> and
+   Catherine Moore <clm@cygnus.com>
+   
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published
+   by the Free Software Foundation; either version 3, or (at your
+   option) any later version.
+
+   GCC is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef OBJECT_FORMAT_ELF
+ #error elf.h included before elfos.h
+#endif
+
+#ifndef LOCAL_LABEL_PREFIX
+#define LOCAL_LABEL_PREFIX "."
+#endif
+
+#ifndef SUBTARGET_CPP_SPEC
+#define SUBTARGET_CPP_SPEC  "-D__ELF__"
+#endif
+
+#ifndef SUBTARGET_EXTRA_SPECS
+#define SUBTARGET_EXTRA_SPECS \
+  { "subtarget_extra_asm_spec",        SUBTARGET_EXTRA_ASM_SPEC }, \
+  { "subtarget_asm_float_spec", SUBTARGET_ASM_FLOAT_SPEC }, \
+  SUBSUBTARGET_EXTRA_SPECS
+#endif
+
+#ifndef SUBTARGET_EXTRA_ASM_SPEC
+#define SUBTARGET_EXTRA_ASM_SPEC ""
+#endif
+
+#ifndef SUBTARGET_ASM_FLOAT_SPEC
+#define SUBTARGET_ASM_FLOAT_SPEC "\
+%{mapcs-float:-mfloat}"
+#endif
+
+#undef SUBSUBTARGET_EXTRA_SPECS
+#define SUBSUBTARGET_EXTRA_SPECS
+
+#ifndef ASM_SPEC
+#define ASM_SPEC "\
+%{mbig-endian:-EB} \
+%{mlittle-endian:-EL} \
+%{mcpu=*:-mcpu=%*} \
+%{march=*:-march=%*} \
+%{mapcs-*:-mapcs-%*} \
+%(subtarget_asm_float_spec) \
+%{mthumb-interwork:-mthumb-interwork} \
+%{msoft-float:-mfloat-abi=soft} %{mhard-float:-mfloat-abi=hard} \
+%{mfloat-abi=*} %{mfpu=*} \
+%(subtarget_extra_asm_spec)"
+#endif
+
+/* The ARM uses @ are a comment character so we need to redefine
+   TYPE_OPERAND_FMT.  */
+#undef  TYPE_OPERAND_FMT
+#define TYPE_OPERAND_FMT       "%%%s"
+
+/* We might need a ARM specific header to function declarations.  */
+#undef  ASM_DECLARE_FUNCTION_NAME
+#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL)            \
+  do                                                           \
+    {                                                          \
+      ARM_DECLARE_FUNCTION_NAME (FILE, NAME, DECL);            \
+      ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "function");      \
+      ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL));           \
+      ASM_OUTPUT_LABEL(FILE, NAME);                            \
+      ARM_OUTPUT_FN_UNWIND (FILE, TRUE);                       \
+    }                                                          \
+  while (0)
+
+/* We might need an ARM specific trailer for function declarations.  */
+#undef  ASM_DECLARE_FUNCTION_SIZE
+#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL)           \
+  do                                                           \
+    {                                                          \
+      ARM_OUTPUT_FN_UNWIND (FILE, FALSE);                      \
+      if (!flag_inhibit_size_directive)                                \
+       ASM_OUTPUT_MEASURED_SIZE (FILE, FNAME);                 \
+    }                                                          \
+  while (0)
+
+/* Define this macro if jump tables (for `tablejump' insns) should be
+   output in the text section, along with the assembler instructions.
+   Otherwise, the readonly data section is used.  */
+/* We put ARM and Thumb-2 jump tables in the text section, because it makes
+   the code more efficient, but for Thumb-1 it's better to put them out of
+   band.  */
+#define JUMP_TABLES_IN_TEXT_SECTION (TARGET_32BIT)
+
+#ifndef LINK_SPEC
+#define LINK_SPEC "%{mbig-endian:-EB} %{mlittle-endian:-EL} -X"
+#endif
+  
+/* Run-time Target Specification.  */
+#ifndef TARGET_VERSION
+#define TARGET_VERSION fputs (" (ARM/elf)", stderr)
+#endif
+
+#ifndef TARGET_DEFAULT
+#define TARGET_DEFAULT (MASK_APCS_FRAME)
+#endif
+
+#ifndef MULTILIB_DEFAULTS
+#define MULTILIB_DEFAULTS \
+  { "marm", "mlittle-endian", "msoft-float", "mno-thumb-interwork", "fno-leading-underscore" }
+#endif
+\f
+#define TARGET_ASM_FILE_START_APP_OFF true
+#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
+\f
+
+/* Output an element in the static constructor array.  */
+#undef TARGET_ASM_CONSTRUCTOR
+#define TARGET_ASM_CONSTRUCTOR arm_elf_asm_constructor
+
+#undef TARGET_ASM_DESTRUCTOR
+#define TARGET_ASM_DESTRUCTOR arm_elf_asm_destructor
+
+/* For PIC code we need to explicitly specify (PLT) and (GOT) relocs.  */
+#define NEED_PLT_RELOC flag_pic
+#define NEED_GOT_RELOC flag_pic
+
+/* The ELF assembler handles GOT addressing differently to NetBSD.  */
+#define GOT_PCREL      0
+
+/* Align output to a power of two.  Note ".align 0" is redundant,
+   and also GAS will treat it as ".align 2" which we do not want.  */
+#define ASM_OUTPUT_ALIGN(STREAM, POWER)                        \
+  do                                                   \
+    {                                                  \
+      if ((POWER) > 0)                                 \
+       fprintf (STREAM, "\t.align\t%d\n", POWER);      \
+    }                                                  \
+  while (0)
+
+/* Horrible hack: We want to prevent some libgcc routines being included
+   for some multilibs.  */
+#ifndef __ARM_ARCH_6M__
+#undef L_fixdfsi
+#undef L_fixunsdfsi
+#undef L_truncdfsf2
+#undef L_fixsfsi
+#undef L_fixunssfsi
+#undef L_floatdidf
+#undef L_floatdisf
+#undef L_floatundidf
+#undef L_floatundisf
+#endif
+
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/unknown-elf.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/unknown-elf.h
new file mode 100644 (file)
index 0000000..6f5839a
--- /dev/null
@@ -0,0 +1,100 @@
+/* Definitions for non-Linux based ARM systems using ELF
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008
+   Free Software Foundation, Inc.
+   Contributed by Catherine Moore <clm@cygnus.com>
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published
+   by the Free Software Foundation; either version 3, or (at your
+   option) any later version.
+
+   GCC is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.  */
+
+/* elfos.h should have already been included.  Now just override
+   any conflicting definitions and add any extras.  */
+
+/* Run-time Target Specification.  */
+#ifndef TARGET_VERSION
+#define TARGET_VERSION fputs (" (ARM/ELF)", stderr);
+#endif
+
+/* Default to using software floating point.  */
+#ifndef TARGET_DEFAULT
+#define TARGET_DEFAULT (0)
+#endif
+
+/* Now we define the strings used to build the spec file.  */
+#define UNKNOWN_ELF_STARTFILE_SPEC     " crti%O%s crtbegin%O%s crt0%O%s"
+
+#undef  STARTFILE_SPEC
+#define STARTFILE_SPEC UNKNOWN_ELF_STARTFILE_SPEC
+
+#define UNKNOWN_ELF_ENDFILE_SPEC       "crtend%O%s crtn%O%s"
+
+#undef  ENDFILE_SPEC
+#define ENDFILE_SPEC   UNKNOWN_ELF_ENDFILE_SPEC
+
+/* The __USES_INITFINI__ define is tested in newlib/libc/sys/arm/crt0.S
+   to see if it needs to invoked _init() and _fini().  */
+#undef  SUBTARGET_CPP_SPEC
+#define SUBTARGET_CPP_SPEC  "-D__USES_INITFINI__"
+
+#undef  PREFERRED_DEBUGGING_TYPE
+#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
+
+/* Return a nonzero value if DECL has a section attribute.  */
+#define IN_NAMED_SECTION(DECL)                                         \
+  ((TREE_CODE (DECL) == FUNCTION_DECL || TREE_CODE (DECL) == VAR_DECL) \
+   && DECL_SECTION_NAME (DECL) != NULL_TREE)
+
+#undef  ASM_OUTPUT_ALIGNED_BSS
+#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN)          \
+  do                                                                   \
+    {                                                                  \
+      if (IN_NAMED_SECTION (DECL))                                     \
+       switch_to_section (get_named_section (DECL, NULL, 0));          \
+      else                                                             \
+       switch_to_section (bss_section);                                \
+                                                                       \
+      ASM_OUTPUT_ALIGN (FILE, floor_log2 (ALIGN / BITS_PER_UNIT));     \
+                                                                       \
+      last_assemble_variable_decl = DECL;                              \
+      ASM_DECLARE_OBJECT_NAME (FILE, NAME, DECL);                      \
+      ASM_OUTPUT_SKIP (FILE, SIZE ? (int)(SIZE) : 1);                  \
+    }                                                                  \
+  while (0)
+
+#undef  ASM_OUTPUT_ALIGNED_DECL_LOCAL
+#define ASM_OUTPUT_ALIGNED_DECL_LOCAL(FILE, DECL, NAME, SIZE, ALIGN)   \
+  do                                                                   \
+    {                                                                  \
+      if ((DECL) != NULL && IN_NAMED_SECTION (DECL))                   \
+       switch_to_section (get_named_section (DECL, NULL, 0));          \
+      else                                                             \
+       switch_to_section (bss_section);                                \
+                                                                       \
+      ASM_OUTPUT_ALIGN (FILE, floor_log2 (ALIGN / BITS_PER_UNIT));     \
+      ASM_OUTPUT_LABEL (FILE, NAME);                                   \
+      fprintf (FILE, "\t.space\t%d\n", SIZE ? (int)(SIZE) : 1);                \
+    }                                                                  \
+  while (0)
+
+#ifndef SUBTARGET_CPU_DEFAULT
+#define SUBTARGET_CPU_DEFAULT          TARGET_CPU_arm7tdmi
+#endif
+
+/* The libgcc udivmod functions may throw exceptions.  If newlib is
+   configured to support long longs in I/O, then printf will depend on
+   udivmoddi4, which will depend on the exception unwind routines,
+   which will depend on abort, which is defined in libc.  */ 
+#undef LINK_GCC_C_SEQUENCE_SPEC
+#define LINK_GCC_C_SEQUENCE_SPEC "--start-group %G %L --end-group"
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/dbxelf.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/dbxelf.h
new file mode 100644 (file)
index 0000000..8d3c265
--- /dev/null
@@ -0,0 +1,68 @@
+/* Definitions needed when using stabs embedded in ELF sections.
+   Copyright (C) 1999, 2004, 2007, 2009 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+/* This file may be included by any ELF target which wishes to
+   support -gstabs generating stabs in sections, as produced by gas
+   and understood by gdb.  */
+
+#ifndef GCC_DBX_ELF_H
+#define GCC_DBX_ELF_H
+
+/* Output DBX (stabs) debugging information if doing -gstabs.  */
+
+#define DBX_DEBUGGING_INFO 1
+
+/* Make LBRAC and RBRAC addresses relative to the start of the
+   function.  The native Solaris stabs debugging format works this
+   way, gdb expects it, and it reduces the number of relocation
+   entries...  */
+
+#define DBX_BLOCKS_FUNCTION_RELATIVE 1
+
+/* ... but, to make this work, functions must appear prior to line info.  */
+
+#define DBX_FUNCTION_FIRST
+
+/* When generating stabs debugging, use N_BINCL entries.  */
+
+#define DBX_USE_BINCL
+
+/* There is no limit to the length of stabs strings.  */
+
+#ifndef DBX_CONTIN_LENGTH
+#define DBX_CONTIN_LENGTH 0
+#endif
+
+/* Like block addresses, stabs line numbers are relative to the
+   current function.  */
+
+#define DBX_LINES_FUNCTION_RELATIVE 1
+
+/* Generate a blank trailing N_SO to mark the end of the .o file, since
+   we can't depend upon the linker to mark .o file boundaries with
+   embedded stabs.  */
+
+#define DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END
+
+#endif /* ! GCC_DBX_ELF_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/elfos.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/elfos.h
new file mode 100644 (file)
index 0000000..2d818d1
--- /dev/null
@@ -0,0 +1,520 @@
+/* elfos.h  --  operating system specific defines to be used when
+   targeting GCC for some generic ELF system
+   Copyright (C) 1991, 1994, 1995, 1999, 2000, 2001, 2002, 2003, 2004,
+   2007, 2009 Free Software Foundation, Inc.
+   Based on svr4.h contributed by Ron Guilmette (rfg@netcom.com).
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+#define TARGET_OBJFMT_CPP_BUILTINS()           \
+  do                                           \
+    {                                          \
+       builtin_define ("__ELF__");             \
+    }                                          \
+  while (0)
+
+/* Define a symbol indicating that we are using elfos.h.
+   Some CPU specific configuration files use this.  */
+#define USING_ELFOS_H
+
+/* The prefix to add to user-visible assembler symbols.
+
+   For ELF systems the convention is *not* to prepend a leading
+   underscore onto user-level symbol names.  */
+
+#undef  USER_LABEL_PREFIX
+#define USER_LABEL_PREFIX ""
+
+/* The biggest alignment supported by ELF in bits. 32-bit ELF 
+   supports section alignment up to (0x80000000 * 8), while 
+   64-bit ELF supports (0x8000000000000000 * 8). If this macro 
+   is not defined, the default is the largest alignment supported 
+   by 32-bit ELF and representable on a 32-bit host. Use this
+   macro to limit the alignment which can be specified using
+   the `__attribute__ ((aligned (N)))' construct.  */
+#ifndef MAX_OFILE_ALIGNMENT
+#define MAX_OFILE_ALIGNMENT (((unsigned int) 1 << 28) * 8)
+#endif
+
+/* Use periods rather than dollar signs in special g++ assembler names.  */
+
+#define NO_DOLLAR_IN_LABEL
+
+/* Writing `int' for a bit-field forces int alignment for the structure.  */
+
+#ifndef PCC_BITFIELD_TYPE_MATTERS
+#define PCC_BITFIELD_TYPE_MATTERS 1
+#endif
+
+/* Handle #pragma weak and #pragma pack.  */
+
+#define HANDLE_SYSV_PRAGMA 1
+
+/* All ELF targets can support DWARF-2.  */
+
+#define DWARF2_DEBUGGING_INFO 1
+
+/* The GNU tools operate better with dwarf2, and it is required by some
+   psABI's.  Since we don't have any native tools to be compatible with,
+   default to dwarf2.  */
+
+#ifndef PREFERRED_DEBUGGING_TYPE
+#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
+#endif
+
+/* All SVR4 targets use the ELF object file format.  */
+#define OBJECT_FORMAT_ELF
+
+
+/* Output #ident as a .ident.  */
+
+#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"
+
+/* Most svr4 assemblers want a .file directive at the beginning of
+   their input file.  */
+#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
+
+/* This is how to allocate empty space in some section.  The .zero
+   pseudo-op is used for this on most svr4 assemblers.  */
+
+#define SKIP_ASM_OP    "\t.zero\t"
+
+#undef  ASM_OUTPUT_SKIP
+#define ASM_OUTPUT_SKIP(FILE, SIZE) \
+   fprintf ((FILE), "%s"HOST_WIDE_INT_PRINT_UNSIGNED"\n",\
+           SKIP_ASM_OP, (SIZE))
+
+/* This is how to store into the string LABEL
+   the symbol_ref name of an internal numbered label where
+   PREFIX is the class of label and NUM is the number within the class.
+   This is suitable for output with `assemble_name'.
+
+   For most svr4 systems, the convention is that any symbol which begins
+   with a period is not put into the linker symbol table by the assembler.  */
+
+#undef  ASM_GENERATE_INTERNAL_LABEL
+#define ASM_GENERATE_INTERNAL_LABEL(LABEL, PREFIX, NUM)                \
+  do                                                           \
+    {                                                          \
+      sprintf (LABEL, "*.%s%u", PREFIX, (unsigned) (NUM));     \
+    }                                                          \
+  while (0)
+
+/* Output the label which precedes a jumptable.  Note that for all svr4
+   systems where we actually generate jumptables (which is to say every
+   svr4 target except i386, where we use casesi instead) we put the jump-
+   tables into the .rodata section and since other stuff could have been
+   put into the .rodata section prior to any given jumptable, we have to
+   make sure that the location counter for the .rodata section gets pro-
+   perly re-aligned prior to the actual beginning of the jump table.  */
+
+#undef ALIGN_ASM_OP
+#define ALIGN_ASM_OP "\t.align\t"
+
+#ifndef ASM_OUTPUT_BEFORE_CASE_LABEL
+#define ASM_OUTPUT_BEFORE_CASE_LABEL(FILE, PREFIX, NUM, TABLE) \
+  ASM_OUTPUT_ALIGN ((FILE), 2);
+#endif
+
+#undef  ASM_OUTPUT_CASE_LABEL
+#define ASM_OUTPUT_CASE_LABEL(FILE, PREFIX, NUM, JUMPTABLE)            \
+  do                                                                   \
+    {                                                                  \
+      ASM_OUTPUT_BEFORE_CASE_LABEL (FILE, PREFIX, NUM, JUMPTABLE)      \
+       (*targetm.asm_out.internal_label) (FILE, PREFIX, NUM);                  \
+    }                                                                  \
+  while (0)
+
+/* The standard SVR4 assembler seems to require that certain builtin
+   library routines (e.g. .udiv) be explicitly declared as .globl
+   in each assembly file where they are referenced.  */
+
+#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN) \
+  (*targetm.asm_out.globalize_label) (FILE, XSTR (FUN, 0))
+
+/* This says how to output assembler code to declare an
+   uninitialized external linkage data object.  Under SVR4,
+   the linker seems to want the alignment of data objects
+   to depend on their types.  We do exactly that here.  */
+
+#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), ","HOST_WIDE_INT_PRINT_UNSIGNED",%u\n",         \
+              (SIZE), (ALIGN) / BITS_PER_UNIT);                        \
+    }                                                                  \
+  while (0)
+
+/* This says how to output assembler code to declare an
+   uninitialized internal linkage data object.  Under SVR4,
+   the linker seems to want the alignment of data objects
+   to depend on their types.  We do exactly that here.  */
+
+#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)
+
+/* This is the pseudo-op used to generate a contiguous sequence of byte
+   values from a double-quoted string WITHOUT HAVING A TERMINATING NUL
+   AUTOMATICALLY APPENDED.  This is the same for most svr4 assemblers.  */
+
+#undef  ASCII_DATA_ASM_OP
+#define ASCII_DATA_ASM_OP      "\t.ascii\t"
+
+/* Support a read-only data section.  */
+#define READONLY_DATA_SECTION_ASM_OP   "\t.section\t.rodata"
+
+/* On svr4, we *do* have support for the .init and .fini sections, and we
+   can put stuff in there to be executed before and after `main'.  We let
+   crtstuff.c and other files know this by defining the following symbols.
+   The definitions say how to change sections to the .init and .fini
+   sections.  This is the same for all known svr4 assemblers.  */
+
+#define INIT_SECTION_ASM_OP    "\t.section\t.init"
+#define FINI_SECTION_ASM_OP    "\t.section\t.fini"
+
+/* Output assembly directive to move to the beginning of current section.  */
+#ifdef HAVE_GAS_SUBSECTION_ORDERING
+# define ASM_SECTION_START_OP  "\t.subsection\t-1"
+# define ASM_OUTPUT_SECTION_START(FILE)        \
+  fprintf ((FILE), "%s\n", ASM_SECTION_START_OP)
+#endif
+
+#define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
+
+/* Switch into a generic section.  */
+#define TARGET_ASM_NAMED_SECTION  default_elf_asm_named_section
+
+#undef  TARGET_ASM_SELECT_RTX_SECTION
+#define TARGET_ASM_SELECT_RTX_SECTION default_elf_select_rtx_section
+#undef TARGET_ASM_SELECT_SECTION
+#define TARGET_ASM_SELECT_SECTION default_elf_select_section
+#undef  TARGET_HAVE_SWITCHABLE_BSS_SECTIONS
+#define TARGET_HAVE_SWITCHABLE_BSS_SECTIONS true
+
+/* Define the strings used for the special svr4 .type and .size directives.
+   These strings generally do not vary from one system running svr4 to
+   another, but if a given system (e.g. m88k running svr) needs to use
+   different pseudo-op names for these, they may be overridden in the
+   file which includes this one.  */
+
+#define TYPE_ASM_OP    "\t.type\t"
+#define SIZE_ASM_OP    "\t.size\t"
+
+/* This is how we tell the assembler that a symbol is weak.  */
+
+#define ASM_WEAKEN_LABEL(FILE, NAME)   \
+  do                                   \
+    {                                  \
+      fputs ("\t.weak\t", (FILE));     \
+      assemble_name ((FILE), (NAME));  \
+      fputc ('\n', (FILE));            \
+    }                                  \
+  while (0)
+
+/* The following macro defines the format used to output the second
+   operand of the .type assembler directive.  Different svr4 assemblers
+   expect various different forms for this operand.  The one given here
+   is just a default.  You may need to override it in your machine-
+   specific tm.h file (depending upon the particulars of your assembler).  */
+
+#define TYPE_OPERAND_FMT       "@%s"
+
+/* Write the extra assembler code needed to declare a function's result.
+   Most svr4 assemblers don't require any special declaration of the
+   result value, but there are exceptions.  */
+
+#ifndef ASM_DECLARE_RESULT
+#define ASM_DECLARE_RESULT(FILE, RESULT)
+#endif
+
+/* These macros generate the special .type and .size directives which
+   are used to set the corresponding fields of the linker symbol table
+   entries in an ELF object file under SVR4.  These macros also output
+   the starting labels for the relevant functions/objects.  */
+
+/* Write the extra assembler code needed to declare a function properly.
+   Some svr4 assemblers need to also have something extra said about the
+   function's return value.  We allow for that here.  */
+
+#ifndef ASM_DECLARE_FUNCTION_NAME
+#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL)            \
+  do                                                           \
+    {                                                          \
+      ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "function");      \
+      ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL));           \
+      ASM_OUTPUT_LABEL (FILE, NAME);                           \
+    }                                                          \
+  while (0)
+#endif
+
+/* Write the extra assembler code needed to declare an object properly.  */
+
+#define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL)              \
+  do                                                           \
+    {                                                          \
+      HOST_WIDE_INT size;                                      \
+                                                               \
+      ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object");                \
+                                                               \
+      size_directive_output = 0;                               \
+      if (!flag_inhibit_size_directive                         \
+         && (DECL) && DECL_SIZE (DECL))                        \
+       {                                                       \
+         size_directive_output = 1;                            \
+         size = int_size_in_bytes (TREE_TYPE (DECL));          \
+         ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, size);         \
+       }                                                       \
+                                                               \
+      ASM_OUTPUT_LABEL (FILE, NAME);                           \
+    }                                                          \
+  while (0)
+
+/* Output the size directive for a decl in rest_of_decl_compilation
+   in the case where we did not do so before the initializer.
+   Once we find the error_mark_node, we know that the value of
+   size_directive_output was set
+   by ASM_DECLARE_OBJECT_NAME when it was run for the same decl.  */
+
+#undef ASM_FINISH_DECLARE_OBJECT
+#define ASM_FINISH_DECLARE_OBJECT(FILE, DECL, TOP_LEVEL, AT_END)\
+  do                                                           \
+    {                                                          \
+      const char *name = XSTR (XEXP (DECL_RTL (DECL), 0), 0);  \
+      HOST_WIDE_INT size;                                      \
+                                                               \
+      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;                            \
+         size = int_size_in_bytes (TREE_TYPE (DECL));          \
+         ASM_OUTPUT_SIZE_DIRECTIVE (FILE, name, size);         \
+       }                                                       \
+    }                                                          \
+  while (0)
+
+/* This is how to declare the size of a function.  */
+#ifndef ASM_DECLARE_FUNCTION_SIZE
+#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL)           \
+  do                                                           \
+    {                                                          \
+      if (!flag_inhibit_size_directive)                                \
+       ASM_OUTPUT_MEASURED_SIZE (FILE, FNAME);                 \
+    }                                                          \
+  while (0)
+#endif
+
+/* A table of bytes codes used by the ASM_OUTPUT_ASCII and
+   ASM_OUTPUT_LIMITED_STRING macros.  Each byte in the table
+   corresponds to a particular byte value [0..255].  For any
+   given byte value, if the value in the corresponding table
+   position is zero, the given character can be output directly.
+   If the table value is 1, the byte must be output as a \ooo
+   octal escape.  If the tables value is anything else, then the
+   byte value should be output as a \ followed by the value
+   in the table.  Note that we can use standard UN*X escape
+   sequences for many control characters, but we don't use
+   \a to represent BEL because some svr4 assemblers (e.g. on
+   the i386) don't know about that.  Also, we don't use \v
+   since some versions of gas, such as 2.2 did not accept it.  */
+
+#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"
+
+/* Some svr4 assemblers have a limit on the number of characters which
+   can appear in the operand of a .string directive.  If your assembler
+   has such a limitation, you should define STRING_LIMIT to reflect that
+   limit.  Note that at least some svr4 assemblers have a limit on the
+   actual number of bytes in the double-quoted string, and that they
+   count each character in an escape sequence as one byte.  Thus, an
+   escape sequence like \377 would count as four bytes.
+
+   If your target assembler doesn't support the .string directive, you
+   should define this to zero.
+*/
+
+#define STRING_LIMIT   ((unsigned) 256)
+
+#define STRING_ASM_OP  "\t.string\t"
+
+/* The routine used to output NUL terminated strings.  We use a special
+   version of this for most svr4 targets because doing so makes the
+   generated assembly code more compact (and thus faster to assemble)
+   as well as more readable, especially for targets like the i386
+   (where the only alternative is to output character sequences as
+   comma separated lists of numbers).  */
+
+#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)
+
+/* The routine used to output sequences of byte values.  We use a special
+   version of this for most svr4 targets because doing so makes the
+   generated assembly code more compact (and thus faster to assemble)
+   as well as more readable.  Note that if we find subparts of the
+   character sequence which end with NUL (and which are shorter than
+   STRING_LIMIT) we output those using ASM_OUTPUT_LIMITED_STRING.  */
+
+#undef  ASM_OUTPUT_ASCII
+#define ASM_OUTPUT_ASCII(FILE, STR, LENGTH)                            \
+  do                                                                   \
+    {                                                                  \
+      const unsigned char *_ascii_bytes =                              \
+       (const unsigned char *) (STR);                                  \
+      const unsigned char *limit = _ascii_bytes + (LENGTH);            \
+      const unsigned char *last_null = NULL;                           \
+      unsigned bytes_in_chunk = 0;                                     \
+                                                                       \
+      for (; _ascii_bytes < limit; _ascii_bytes++)                     \
+        {                                                              \
+         const unsigned char *p;                                       \
+                                                                       \
+         if (bytes_in_chunk >= 60)                                     \
+           {                                                           \
+             fprintf ((FILE), "\"\n");                                 \
+             bytes_in_chunk = 0;                                       \
+           }                                                           \
+                                                                       \
+         if (_ascii_bytes > last_null)                                 \
+           {                                                           \
+             for (p = _ascii_bytes; p < limit && *p != '\0'; p++)      \
+               continue;                                               \
+             last_null = p;                                            \
+           }                                                           \
+         else                                                          \
+           p = last_null;                                              \
+                                                                       \
+         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)
+
+/* Allow the use of the -frecord-gcc-switches switch via the
+   elf_record_gcc_switches function defined in varasm.c.  */
+#undef  TARGET_ASM_RECORD_GCC_SWITCHES
+#define TARGET_ASM_RECORD_GCC_SWITCHES elf_record_gcc_switches
+
+/* A C statement (sans semicolon) to output to the stdio stream STREAM
+   any text necessary for declaring the name of an external symbol
+   named NAME which is referenced in this compilation but not defined.
+   It is needed to properly support non-default visibility.  */
+
+#ifndef ASM_OUTPUT_EXTERNAL
+#define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME) \
+  default_elf_asm_output_external (FILE, DECL, NAME)
+#endif
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/configargs.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/configargs.h
new file mode 100644 (file)
index 0000000..f705bea
--- /dev/null
@@ -0,0 +1,7 @@
+/* Generated automatically. */
+static const char configuration_arguments[] = "../../../gcc-4.4.0/configure --prefix=/usr/local --target=arm-eabi --host=i686-unknown-linux-gnu --build=i686-unknown-linux-gnu --enable-languages=c,c++ --with-gmp=/usr/local/google/home/projects/toolchain/android-toolchain/install_4.4_checkin/obj/temp-install --with-mpfr=/usr/local/google/home/projects/toolchain/android-toolchain/install_4.4_checkin/obj/temp-install --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --with-abi=aapcs --with-gcc-version=4.4.0 --with-binutils-version=2.19 --with-arch=armv5te --with-sysroot=/usr/local/google/home/projects/toolchain/android-toolchain/install_4.4_bin2.19/cupcake_rel_root --with-gmp-version=4.2.4 --with-mpfr-version=2.4.1 --with-gdb-version=6.6 --program-transform-name='s,^,arm-eabi-,'";
+static const char thread_model[] = "single";
+
+static const struct {
+  const char *name, *value;
+} configure_default_options[] = { { "abi", "aapcs" }, { "arch", "armv5te" }, { "float", "soft" }, { "fpu", "vfp" } };
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/coretypes.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/coretypes.h
new file mode 100644 (file)
index 0000000..ab87095
--- /dev/null
@@ -0,0 +1,113 @@
+/* GCC core type declarations.
+   Copyright (C) 2002, 2004, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+/* Provide forward declarations of core types which are referred to by
+   most of the compiler.  This allows header files to use these types
+   (e.g. in function prototypes) without concern for whether the full
+   definitions are visible.  Some other declarations that need to be
+   universally visible are here, too.
+
+   In the context of tconfig.h, most of these have special definitions
+   which prevent them from being used except in further type
+   declarations.  This is a kludge; the right thing is to avoid
+   including the "tm.h" header set in the context of tconfig.h, but
+   we're not there yet.  */
+
+#ifndef GCC_CORETYPES_H
+#define GCC_CORETYPES_H
+
+#define GTY(x)  /* nothing - marker for gengtype */
+
+#ifndef USED_FOR_TARGET
+
+struct bitmap_head_def;
+typedef struct bitmap_head_def *bitmap;
+typedef const struct bitmap_head_def *const_bitmap;
+struct rtx_def;
+typedef struct rtx_def *rtx;
+typedef const struct rtx_def *const_rtx;
+struct rtvec_def;
+typedef struct rtvec_def *rtvec;
+typedef const struct rtvec_def *const_rtvec;
+union tree_node;
+typedef union tree_node *tree;
+union gimple_statement_d;
+typedef union gimple_statement_d *gimple;
+typedef const union tree_node *const_tree;
+typedef const union gimple_statement_d *const_gimple;
+union section;
+typedef union section section;
+struct cl_target_option;
+struct cl_optimization;
+struct gimple_seq_d;
+typedef struct gimple_seq_d *gimple_seq;
+typedef const struct gimple_seq_d *const_gimple_seq;
+struct gimple_seq_node_d;
+typedef struct gimple_seq_node_d *gimple_seq_node;
+typedef const struct gimple_seq_node_d *const_gimple_seq_node;
+
+/* The major intermediate representations of GCC.  */
+enum ir_type {
+  IR_GIMPLE,
+  IR_RTL_CFGRTL,
+  IR_RTL_CFGLAYOUT
+};
+
+/* Provide forward struct declaration so that we don't have to include
+   all of cpplib.h whenever a random prototype includes a pointer.
+   Note that the cpp_reader and cpp_token typedefs remain part of
+   cpplib.h.  */
+
+struct cpp_reader;
+struct cpp_token;
+
+/* The thread-local storage model associated with a given VAR_DECL
+   or SYMBOL_REF.  This isn't used much, but both trees and RTL refer
+   to it, so it's here.  */
+enum tls_model {
+  TLS_MODEL_NONE,
+  TLS_MODEL_EMULATED,
+  TLS_MODEL_REAL,
+  TLS_MODEL_GLOBAL_DYNAMIC = TLS_MODEL_REAL,
+  TLS_MODEL_LOCAL_DYNAMIC,
+  TLS_MODEL_INITIAL_EXEC,
+  TLS_MODEL_LOCAL_EXEC
+};
+
+#else
+
+struct _dont_use_rtx_here_;
+struct _dont_use_rtvec_here_;
+union _dont_use_tree_here_;
+#define rtx struct _dont_use_rtx_here_ *
+#define const_rtx struct _dont_use_rtx_here_ *
+#define rtvec struct _dont_use_rtvec_here *
+#define const_rtvec struct _dont_use_rtvec_here *
+#define tree union _dont_use_tree_here_ *
+#define const_tree union _dont_use_tree_here_ *
+
+#endif
+
+#endif /* coretypes.h */
+
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cp/cp-tree.def b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cp/cp-tree.def
new file mode 100644 (file)
index 0000000..a43fa82
--- /dev/null
@@ -0,0 +1,430 @@
+/* This file contains the definitions and documentation for the
+   additional tree codes used in the GNU C++ compiler (see tree.def
+   for the standard codes).
+   Copyright (C) 1987, 1988, 1990, 1993, 1997, 1998, 2003, 2004, 2005,
+   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007
+   Free Software Foundation, Inc.
+   Hacked by Michael Tiemann (tiemann@cygnus.com)
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+
+/* An OFFSET_REF is used in two situations:
+
+   1. An expression of the form `A::m' where `A' is a class and `m' is
+      a non-static member.  In this case, operand 0 will be a TYPE
+      (corresponding to `A') and operand 1 will be a FIELD_DECL,
+      BASELINK, or TEMPLATE_ID_EXPR (corresponding to `m').
+
+      The expression is a pointer-to-member if its address is taken,
+      but simply denotes a member of the object if its address is not
+      taken.
+
+      This form is only used during the parsing phase; once semantic
+      analysis has taken place they are eliminated.
+
+   2. An expression of the form `x.*p'.  In this case, operand 0 will
+      be an expression corresponding to `x' and operand 1 will be an
+      expression with pointer-to-member type.  */
+DEFTREECODE (OFFSET_REF, "offset_ref", tcc_reference, 2)
+
+/* A pointer-to-member constant.  For a pointer-to-member constant
+   `X::Y' The PTRMEM_CST_CLASS is the RECORD_TYPE for `X' and the
+   PTRMEM_CST_MEMBER is the _DECL for `Y'.  */
+DEFTREECODE (PTRMEM_CST, "ptrmem_cst", tcc_constant, 0)
+
+/* For NEW_EXPR, operand 0 is the placement list.
+   Operand 1 is the new-declarator.
+   Operand 2 is the number of elements in the array.
+   Operand 3 is the initializer.  */
+DEFTREECODE (NEW_EXPR, "nw_expr", tcc_expression, 4)
+DEFTREECODE (VEC_NEW_EXPR, "vec_nw_expr", tcc_expression, 3)
+
+/* For DELETE_EXPR, operand 0 is the store to be destroyed.
+   Operand 1 is the value to pass to the destroying function
+   saying whether the store should be deallocated as well.  */
+DEFTREECODE (DELETE_EXPR, "dl_expr", tcc_expression, 2)
+DEFTREECODE (VEC_DELETE_EXPR, "vec_dl_expr", tcc_expression, 2)
+
+/* Value is reference to particular overloaded class method.
+   Operand 0 is the class, operand 1 is the field
+   The COMPLEXITY field holds the class level (usually 0).  */
+DEFTREECODE (SCOPE_REF, "scope_ref", tcc_reference, 2)
+
+/* When composing an object with a member, this is the result.
+   Operand 0 is the object.  Operand 1 is the member (usually
+   a dereferenced pointer to member).  */
+DEFTREECODE (MEMBER_REF, "member_ref", tcc_reference, 2)
+
+/* Type conversion operator in C++.  TREE_TYPE is type that this
+   operator converts to.  Operand is expression to be converted.  */
+DEFTREECODE (TYPE_EXPR, "type_expr", tcc_expression, 1)
+
+/* AGGR_INIT_EXPRs have a variably-sized representation similar to
+   that of CALL_EXPRs.  Operand 0 is an INTEGER_CST node containing the
+   operand count, operand 1 is the function which performs initialization,
+   operand 2 is the slot which was allocated for this expression, and
+   the remaining operands are the arguments to the initialization function.  */
+DEFTREECODE (AGGR_INIT_EXPR, "aggr_init_expr", tcc_vl_exp, 3)
+
+/* A throw expression.  operand 0 is the expression, if there was one,
+   else it is NULL_TREE.  */
+DEFTREECODE (THROW_EXPR, "throw_expr", tcc_expression, 1)
+
+/* An empty class object.  The TREE_TYPE gives the class type.  We use
+   these to avoid actually creating instances of the empty classes.  */
+DEFTREECODE (EMPTY_CLASS_EXPR, "empty_class_expr", tcc_expression, 0)
+
+/* A reference to a member function or member functions from a base
+   class.  BASELINK_FUNCTIONS gives the FUNCTION_DECL,
+   TEMPLATE_DECL, OVERLOAD, or TEMPLATE_ID_EXPR corresponding to the
+   functions.  BASELINK_BINFO gives the base from which the functions
+   come, i.e., the base to which the `this' pointer must be converted
+   before the functions are called.  BASELINK_ACCESS_BINFO gives the
+   base used to name the functions.
+
+   A BASELINK is an expression; the TREE_TYPE of the BASELINK gives
+   the type of the expression.  This type is either a FUNCTION_TYPE,
+   METHOD_TYPE, or `unknown_type_node' indicating that the function is
+   overloaded.  */
+DEFTREECODE (BASELINK, "baselink", tcc_exceptional, 0)
+
+/* Template definition.  The following fields have the specified uses,
+   although there are other macros in cp-tree.h that should be used for
+   accessing this data.
+       DECL_ARGUMENTS          template parm vector
+       DECL_TEMPLATE_INFO      template text &c
+       DECL_VINDEX             list of instantiations already produced;
+                               only done for functions so far
+   For class template:
+       DECL_INITIAL            associated templates (methods &c)
+       DECL_TEMPLATE_RESULT    null
+   For non-class templates:
+       TREE_TYPE               type of object to be constructed
+       DECL_TEMPLATE_RESULT    decl for object to be created
+                               (e.g., FUNCTION_DECL with tmpl parms used)
+ */
+DEFTREECODE (TEMPLATE_DECL, "template_decl", tcc_declaration, 0)
+
+/* Index into a template parameter list.  The TEMPLATE_PARM_IDX gives
+   the index (from 0) of the parameter, while the TEMPLATE_PARM_LEVEL
+   gives the level (from 1) of the parameter.
+
+   Here's an example:
+
+   template <class T> // Index 0, Level 1.
+   struct S
+   {
+      template <class U, // Index 0, Level 2.
+               class V> // Index 1, Level 2.
+      void f();
+   };
+
+   The DESCENDANTS will be a chain of TEMPLATE_PARM_INDEXs descended
+   from this one.  The first descendant will have the same IDX, but
+   its LEVEL will be one less.  The TREE_CHAIN field is used to chain
+   together the descendants.  The TEMPLATE_PARM_DECL is the
+   declaration of this parameter, either a TYPE_DECL or CONST_DECL.
+   The TEMPLATE_PARM_ORIG_LEVEL is the LEVEL of the most distant
+   parent, i.e., the LEVEL that the parameter originally had when it
+   was declared.  For example, if we instantiate S<int>, we will have:
+
+   struct S<int>
+   {
+     template <class U, // Index 0, Level 1, Orig Level 2
+              class V> // Index 1, Level 1, Orig Level 2
+     void f();
+   };
+
+   The LEVEL is the level of the parameter when we are worrying about
+   the types of things; the ORIG_LEVEL is the level when we are
+   worrying about instantiating things.  */
+DEFTREECODE (TEMPLATE_PARM_INDEX, "template_parm_index", tcc_exceptional, 0)
+
+/* Index into a template parameter list for template template parameters.
+   This parameter must be a type.  The TYPE_FIELDS value will be a
+   TEMPLATE_PARM_INDEX.
+
+   It is used without template arguments like TT in C<TT>,
+   TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO is NULL_TREE
+   and TYPE_NAME is a TEMPLATE_DECL.  */
+DEFTREECODE (TEMPLATE_TEMPLATE_PARM, "template_template_parm", tcc_type, 0)
+
+/* The ordering of the following codes is optimized for the checking
+   macros in tree.h.  Changing the order will degrade the speed of the
+   compiler.  TEMPLATE_TYPE_PARM, TYPENAME_TYPE, TYPEOF_TYPE,
+   BOUND_TEMPLATE_TEMPLATE_PARM.  */
+
+/* Index into a template parameter list.  This parameter must be a type.
+   The type.values field will be a TEMPLATE_PARM_INDEX.  */
+DEFTREECODE (TEMPLATE_TYPE_PARM, "template_type_parm", tcc_type, 0)
+
+/* A type designated by `typename T::t'.  TYPE_CONTEXT is `T',
+   TYPE_NAME is an IDENTIFIER_NODE for `t'.  If the type was named via
+   template-id, TYPENAME_TYPE_FULLNAME will hold the TEMPLATE_ID_EXPR.
+   TREE_TYPE is always NULL.  */
+DEFTREECODE (TYPENAME_TYPE, "typename_type", tcc_type, 0)
+
+/* A type designated by `__typeof (expr)'.  TYPEOF_TYPE_EXPR is the
+   expression in question.  */
+DEFTREECODE (TYPEOF_TYPE, "typeof_type", tcc_type, 0)
+
+/* Like TEMPLATE_TEMPLATE_PARM it is used with bound template arguments
+   like TT<int>.
+   In this case, TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO contains the
+   template name and its bound arguments.  TYPE_NAME is a TYPE_DECL.  */
+DEFTREECODE (BOUND_TEMPLATE_TEMPLATE_PARM, "bound_template_template_parm",
+            tcc_type, 0)
+
+/* For template template argument of the form `T::template C'.
+   TYPE_CONTEXT is `T', the template parameter dependent object.
+   TYPE_NAME is an IDENTIFIER_NODE for `C', the member class template.  */
+DEFTREECODE (UNBOUND_CLASS_TEMPLATE, "unbound_class_template", tcc_type, 0)
+
+/* A using declaration.  USING_DECL_SCOPE contains the specified
+   scope.  In a member using decl, unless DECL_DEPENDENT_P is true,
+   USING_DECL_DECLS contains the _DECL or OVERLOAD so named.  This is
+   not an alias, but is later expanded into multiple aliases.  */
+DEFTREECODE (USING_DECL, "using_decl", tcc_declaration, 0)
+
+/* A using directive. The operand is USING_STMT_NAMESPACE.  */
+DEFTREECODE (USING_STMT, "using_directive", tcc_statement, 1)
+
+/* An un-parsed default argument.  Holds a vector of input tokens and
+   a vector of places where the argument was instantiated before
+   parsing had occurred.  */
+DEFTREECODE (DEFAULT_ARG, "default_arg", tcc_exceptional, 0)
+
+/* A template-id, like foo<int>.  The first operand is the template.
+   The second is NULL if there are no explicit arguments, or a
+   TREE_VEC of arguments.  The template will be a FUNCTION_DECL,
+   TEMPLATE_DECL, or an OVERLOAD.  If the template-id refers to a
+   member template, the template may be an IDENTIFIER_NODE.  */
+DEFTREECODE (TEMPLATE_ID_EXPR, "template_id_expr", tcc_expression, 2)
+
+/* A list-like node for chaining overloading candidates. TREE_TYPE is
+   the original name, and the parameter is the FUNCTION_DECL.  */
+DEFTREECODE (OVERLOAD, "overload", tcc_exceptional, 0)
+
+/* A pseudo-destructor, of the form "OBJECT.~DESTRUCTOR" or
+   "OBJECT.SCOPE::~DESTRUCTOR.  The first operand is the OBJECT.  The
+   second operand (if non-NULL) is the SCOPE.  The third operand is
+   the TYPE node corresponding to the DESTRUCTOR.  The type of the
+   first operand will always be a scalar type.
+
+   The type of a PSEUDO_DTOR_EXPR is always "void", even though it can
+   be used as if it were a zero-argument function.  We handle the
+   function-call case specially, and giving it "void" type prevents it
+   being used in expressions in ways that are not permitted.  */
+DEFTREECODE (PSEUDO_DTOR_EXPR, "pseudo_dtor_expr", tcc_expression, 3)
+
+/* A whole bunch of tree codes for the initial, superficial parsing of
+   templates.  */
+DEFTREECODE (MODOP_EXPR, "modop_expr", tcc_expression, 3)
+DEFTREECODE (CAST_EXPR, "cast_expr", tcc_unary, 1)
+DEFTREECODE (REINTERPRET_CAST_EXPR, "reinterpret_cast_expr", tcc_unary, 1)
+DEFTREECODE (CONST_CAST_EXPR, "const_cast_expr", tcc_unary, 1)
+DEFTREECODE (STATIC_CAST_EXPR, "static_cast_expr", tcc_unary, 1)
+DEFTREECODE (DYNAMIC_CAST_EXPR, "dynamic_cast_expr", tcc_unary, 1)
+DEFTREECODE (DOTSTAR_EXPR, "dotstar_expr", tcc_expression, 2)
+DEFTREECODE (TYPEID_EXPR, "typeid_expr", tcc_expression, 1)
+
+/* A placeholder for an expression that is not type-dependent, but
+   does occur in a template.  When an expression that is not
+   type-dependent appears in a larger expression, we must compute the
+   type of that larger expression.  That computation would normally
+   modify the original expression, which would change the mangling of
+   that expression if it appeared in a template argument list.  In
+   that situation, we create a NON_DEPENDENT_EXPR to take the place of
+   the original expression.  The expression is the only operand -- it
+   is only needed for diagnostics.  */
+DEFTREECODE (NON_DEPENDENT_EXPR, "non_dependent_expr", tcc_expression, 1)
+
+/* CTOR_INITIALIZER is a placeholder in template code for a call to
+   setup_vtbl_pointer (and appears in all functions, not just ctors).  */
+DEFTREECODE (CTOR_INITIALIZER, "ctor_initializer", tcc_expression, 1)
+
+DEFTREECODE (TRY_BLOCK, "try_block", tcc_statement, 2)
+
+DEFTREECODE (EH_SPEC_BLOCK, "eh_spec_block", tcc_statement, 2)
+
+/* A HANDLER wraps a catch handler for the HANDLER_TYPE.  If this is
+   CATCH_ALL_TYPE, then the handler catches all types.  The declaration of
+   the catch variable is in HANDLER_PARMS, and the body block in
+   HANDLER_BODY.  */
+DEFTREECODE (HANDLER, "handler", tcc_statement, 2)
+
+/* A MUST_NOT_THROW_EXPR wraps an expression that may not
+   throw, and must call terminate if it does.  */
+DEFTREECODE (MUST_NOT_THROW_EXPR, "must_not_throw_expr", tcc_expression, 1)
+
+/* A CLEANUP_STMT marks the point at which a declaration is fully
+   constructed.  The CLEANUP_EXPR is run on behalf of CLEANUP_DECL
+   when CLEANUP_BODY completes.  */
+DEFTREECODE (CLEANUP_STMT, "cleanup_stmt", tcc_statement, 3)
+
+/* Represents an 'if' statement. The operands are IF_COND,
+   THEN_CLAUSE, and ELSE_CLAUSE, respectively.  */
+/* ??? It is currently still necessary to distinguish between IF_STMT
+   and COND_EXPR for the benefit of templates.  */
+DEFTREECODE (IF_STMT, "if_stmt", tcc_statement, 3)
+
+/* Used to represent a `for' statement. The operands are
+   FOR_INIT_STMT, FOR_COND, FOR_EXPR, and FOR_BODY, respectively.  */
+DEFTREECODE (FOR_STMT, "for_stmt", tcc_statement, 4)
+
+/* Used to represent a 'while' statement. The operands are WHILE_COND
+   and WHILE_BODY, respectively.  */
+DEFTREECODE (WHILE_STMT, "while_stmt", tcc_statement, 2)
+
+/* Used to represent a 'do' statement. The operands are DO_BODY and
+   DO_COND, respectively.  */
+DEFTREECODE (DO_STMT, "do_stmt", tcc_statement, 2)
+
+/* Used to represent a 'break' statement.  */
+DEFTREECODE (BREAK_STMT, "break_stmt", tcc_statement, 0)
+
+/* Used to represent a 'continue' statement.  */
+DEFTREECODE (CONTINUE_STMT, "continue_stmt", tcc_statement, 0)
+
+/* Used to represent a 'switch' statement. The operands are
+   SWITCH_STMT_COND, SWITCH_STMT_BODY and SWITCH_STMT_TYPE, respectively.  */
+DEFTREECODE (SWITCH_STMT, "switch_stmt", tcc_statement, 3)
+
+/* Used to represent an expression statement.  Use `EXPR_STMT_EXPR' to
+   obtain the expression.  */
+DEFTREECODE (EXPR_STMT, "expr_stmt", tcc_expression, 1)
+
+DEFTREECODE (TAG_DEFN, "tag_defn", tcc_expression, 0)
+
+/* Represents an 'offsetof' expression during template expansion.  */
+DEFTREECODE (OFFSETOF_EXPR, "offsetof_expr", tcc_expression, 1)
+
+/* Represents a 'sizeof' expression during template expansion.  */
+DEFTREECODE (SIZEOF_EXPR, "sizeof_expr", tcc_expression, 1)
+
+/* Represents the -> operator during template expansion.  */
+DEFTREECODE (ARROW_EXPR, "arrow_expr", tcc_expression, 1)
+
+/* Represents an '__alignof__' expression during template
+   expansion.  */
+DEFTREECODE (ALIGNOF_EXPR, "alignof_expr", tcc_expression, 1)
+
+/* A STMT_EXPR represents a statement-expression during template
+   expansion.  This is the GCC extension { ( ... ) }.  The
+   STMT_EXPR_STMT is the statement given by the expression.  */
+DEFTREECODE (STMT_EXPR, "stmt_expr", tcc_expression, 1)
+
+/* Unary plus. Operand 0 is the expression to which the unary plus
+   is applied.  */
+DEFTREECODE (UNARY_PLUS_EXPR, "unary_plus_expr", tcc_unary, 1)
+
+/** C++0x extensions. */
+
+/* A static assertion.  This is a C++0x extension.
+   STATIC_ASSERT_CONDITION contains the condition that is being
+   checked.  STATIC_ASSERT_MESSAGE contains the message (a string
+   literal) to be displayed if the condition fails to hold.  */
+DEFTREECODE (STATIC_ASSERT, "static_assert", tcc_exceptional, 0)
+
+/* Represents an argument pack of types (or templates). An argument
+   pack stores zero or more arguments that will be used to instantiate
+   a parameter pack. 
+
+   ARGUMENT_PACK_ARGS retrieves the arguments stored in the argument
+   pack.
+
+   Example:
+     template<typename... Values>
+     class tuple { ... };
+
+     tuple<int, float, double> t;
+
+   Values is a (template) parameter pack. When tuple<int, float,
+   double> is instantiated, the Values parameter pack is instantiated
+   with the argument pack <int, float, double>. ARGUMENT_PACK_ARGS will
+   be a TREE_VEC containing int, float, and double.  */
+DEFTREECODE (TYPE_ARGUMENT_PACK, "type_argument_pack", tcc_type, 0)
+
+/* Represents an argument pack of values, which can be used either for
+   non-type template arguments or function call arguments. 
+
+   NONTYPE_ARGUMENT_PACK plays precisely the same role as
+   TYPE_ARGUMENT_PACK, but will be used for packing non-type template
+   arguments (e.g., "int... Dimensions") or function arguments ("const
+   Args&... args"). */
+DEFTREECODE (NONTYPE_ARGUMENT_PACK, "nontype_argument_pack", tcc_expression, 1)
+
+/* Represents a type expression that will be expanded into a list of
+   types when instantiated with one or more argument packs.
+
+   PACK_EXPANSION_PATTERN retrieves the expansion pattern. This is
+   the type or expression that we will substitute into with each
+   argument in an argument pack.
+
+   SET_PACK_EXPANSION_PATTERN sets the expansion pattern.
+
+   PACK_EXPANSION_PARAMETER_PACKS contains a TREE_LIST of the parameter
+   packs that are used in this pack expansion.
+
+   Example:
+     template<typename... Values>
+     struct tied : tuple<Values&...> { 
+       // ...
+     };
+
+   The derivation from tuple contains a TYPE_PACK_EXPANSION for the
+   template arguments. Its EXPR_PACK_EXPANSION is "Values&" and its
+   PACK_EXPANSION_PARAMETER_PACKS will contain "Values".  */
+DEFTREECODE (TYPE_PACK_EXPANSION, "type_pack_expansion", tcc_type, 0)
+
+/* Represents an expression that will be expanded into a list of
+   expressions when instantiated with one or more argument packs.
+
+   EXPR_PACK_EXPANSION plays precisely the same role as TYPE_PACK_EXPANSION,
+   but will be used for expressions.  */
+DEFTREECODE (EXPR_PACK_EXPANSION, "expr_pack_expansion", tcc_expression, 1)
+
+/* Selects the Ith parameter out of an argument pack. This node will
+   be used when instantiating pack expansions; see
+   tsubst_pack_expansion. 
+
+   ARGUMENT_PACK_SELECT_FROM_PACK contains the *_ARGUMENT_PACK node
+   from which the argument will be selected.
+
+   ARGUMENT_PACK_SELECT_INDEX contains the index into the argument
+   pack that will be returned by this ARGUMENT_PACK_SELECT node. The
+   index is a machine integer.  */
+DEFTREECODE (ARGUMENT_PACK_SELECT, "argument_pack_select", tcc_exceptional, 0)
+
+/** C++ extensions. */
+
+/* Represents a trait expression during template expansion.  */
+DEFTREECODE (TRAIT_EXPR, "trait_expr", tcc_exceptional, 0)
+
+/* The declared type of an expression.  This is a C++0x extension.
+   DECLTYPE_TYPE_EXPR is the expression whose type we are computing.
+   DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P states whether the
+   expression was parsed as an id-expression or a member access
+   expression. When false, it was parsed as a full expression.  */
+DEFTREECODE (DECLTYPE_TYPE, "decltype_type", tcc_type, 0)
+
+/*
+Local variables:
+mode:c
+End:
+*/
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/defaults.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/defaults.h
new file mode 100644 (file)
index 0000000..809f200
--- /dev/null
@@ -0,0 +1,962 @@
+/* Definitions of various defaults for tm.h macros.
+   Copyright (C) 1992, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2007, 2008, 2009
+   Free Software Foundation, Inc.
+   Contributed by Ron Guilmette (rfg@monkeys.com)
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_DEFAULTS_H
+#define GCC_DEFAULTS_H
+
+#ifndef GET_ENVIRONMENT
+#define GET_ENVIRONMENT(VALUE, NAME) do { (VALUE) = getenv (NAME); } while (0)
+#endif
+
+#define obstack_chunk_alloc    ((void *(*) (long)) xmalloc)
+#define obstack_chunk_free     ((void (*) (void *)) free)
+#define OBSTACK_CHUNK_SIZE     0
+#define gcc_obstack_init(OBSTACK)                      \
+  _obstack_begin ((OBSTACK), OBSTACK_CHUNK_SIZE, 0,    \
+                 obstack_chunk_alloc,                  \
+                 obstack_chunk_free)
+
+/* Store in OUTPUT a string (made with alloca) containing an
+   assembler-name for a local static variable or function named NAME.
+   LABELNO is an integer which is different for each call.  */
+
+#ifndef ASM_PN_FORMAT
+# ifndef NO_DOT_IN_LABEL
+#  define ASM_PN_FORMAT "%s.%lu"
+# else
+#  ifndef NO_DOLLAR_IN_LABEL
+#   define ASM_PN_FORMAT "%s$%lu"
+#  else
+#   define ASM_PN_FORMAT "__%s_%lu"
+#  endif
+# endif
+#endif /* ! ASM_PN_FORMAT */
+
+#ifndef ASM_FORMAT_PRIVATE_NAME
+# define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO) \
+  do { const char *const name_ = (NAME); \
+       char *const output_ = (OUTPUT) = \
+        (char *) alloca (strlen (name_) + 32); \
+       sprintf (output_, ASM_PN_FORMAT, name_, (unsigned long)(LABELNO)); \
+  } while (0)
+#endif
+
+/* Choose a reasonable default for ASM_OUTPUT_ASCII.  */
+
+#ifndef ASM_OUTPUT_ASCII
+#define ASM_OUTPUT_ASCII(MYFILE, MYSTRING, MYLENGTH) \
+  do {                                                                       \
+    FILE *_hide_asm_out_file = (MYFILE);                                     \
+    const unsigned char *_hide_p = (const unsigned char *) (MYSTRING);       \
+    int _hide_thissize = (MYLENGTH);                                         \
+    {                                                                        \
+      FILE *asm_out_file = _hide_asm_out_file;                               \
+      const unsigned char *p = _hide_p;                                              \
+      int thissize = _hide_thissize;                                         \
+      int i;                                                                 \
+      fprintf (asm_out_file, "\t.ascii \"");                                 \
+                                                                             \
+      for (i = 0; i < thissize; i++)                                         \
+       {                                                                     \
+         int c = p[i];                                                       \
+         if (c == '\"' || c == '\\')                                         \
+           putc ('\\', asm_out_file);                                        \
+         if (ISPRINT(c))                                                     \
+           putc (c, asm_out_file);                                           \
+         else                                                                \
+           {                                                                 \
+             fprintf (asm_out_file, "\\%o", c);                              \
+             /* After an octal-escape, if a digit follows,                   \
+                terminate one string constant and start another.             \
+                The VAX assembler fails to stop reading the escape           \
+                after three digits, so this is the only way we               \
+                can get it to parse the data properly.  */                   \
+             if (i < thissize - 1 && ISDIGIT(p[i + 1]))                      \
+               fprintf (asm_out_file, "\"\n\t.ascii \"");                    \
+         }                                                                   \
+       }                                                                     \
+      fprintf (asm_out_file, "\"\n");                                        \
+    }                                                                        \
+  }                                                                          \
+  while (0)
+#endif
+
+/* This is how we tell the assembler to equate two values.  */
+#ifdef SET_ASM_OP
+#ifndef ASM_OUTPUT_DEF
+#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)
+#endif
+#endif
+
+#if defined (HAVE_AS_TLS) && !defined (ASM_OUTPUT_TLS_COMMON)
+#define ASM_OUTPUT_TLS_COMMON(FILE, DECL, NAME, SIZE)                  \
+  do                                                                   \
+    {                                                                  \
+      fprintf ((FILE), "\t.tls_common\t");                             \
+      assemble_name ((FILE), (NAME));                                  \
+      fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",%u\n",         \
+              (SIZE), DECL_ALIGN (DECL) / BITS_PER_UNIT);              \
+    }                                                                  \
+  while (0)
+#endif
+
+/* Decide whether to defer emitting the assembler output for an equate
+   of two values.  The default is to not defer output.  */
+#ifndef TARGET_DEFERRED_OUTPUT_DEFS
+#define TARGET_DEFERRED_OUTPUT_DEFS(DECL,TARGET) false
+#endif
+
+/* This is how to output the definition of a user-level label named
+   NAME, such as the label on a static function or variable NAME.  */
+
+#ifndef ASM_OUTPUT_LABEL
+#define ASM_OUTPUT_LABEL(FILE,NAME) \
+  do { assemble_name ((FILE), (NAME)); fputs (":\n", (FILE)); } while (0)
+#endif
+
+/* Output the definition of a compiler-generated label named NAME.  */
+#ifndef ASM_OUTPUT_INTERNAL_LABEL
+#define ASM_OUTPUT_INTERNAL_LABEL(FILE,NAME)   \
+  do {                                         \
+    assemble_name_raw ((FILE), (NAME));                \
+    fputs (":\n", (FILE));                     \
+  } while (0)
+#endif
+
+/* This is how to output a reference to a user-level label named NAME.  */
+
+#ifndef ASM_OUTPUT_LABELREF
+#define ASM_OUTPUT_LABELREF(FILE,NAME)  asm_fprintf ((FILE), "%U%s", (NAME))
+#endif
+
+/* Allow target to print debug info labels specially.  This is useful for
+   VLIW targets, since debug info labels should go into the middle of
+   instruction bundles instead of breaking them.  */
+
+#ifndef ASM_OUTPUT_DEBUG_LABEL
+#define ASM_OUTPUT_DEBUG_LABEL(FILE, PREFIX, NUM) \
+  (*targetm.asm_out.internal_label) (FILE, PREFIX, NUM)
+#endif
+
+/* This is how we tell the assembler that a symbol is weak.  */
+#ifndef ASM_OUTPUT_WEAK_ALIAS
+#if defined (ASM_WEAKEN_LABEL) && defined (ASM_OUTPUT_DEF)
+#define ASM_OUTPUT_WEAK_ALIAS(STREAM, NAME, VALUE)     \
+  do                                                   \
+    {                                                  \
+      ASM_WEAKEN_LABEL (STREAM, NAME);                 \
+      if (VALUE)                                       \
+        ASM_OUTPUT_DEF (STREAM, NAME, VALUE);          \
+    }                                                  \
+  while (0)
+#endif
+#endif
+
+/* This is how we tell the assembler that a symbol is a weak alias to
+   another symbol that doesn't require the other symbol to be defined.
+   Uses of the former will turn into weak uses of the latter, i.e.,
+   uses that, in case the latter is undefined, will not cause errors,
+   and will add it to the symbol table as weak undefined.  However, if
+   the latter is referenced directly, a strong reference prevails.  */
+#ifndef ASM_OUTPUT_WEAKREF
+#if defined HAVE_GAS_WEAKREF
+#define ASM_OUTPUT_WEAKREF(FILE, DECL, NAME, VALUE)                    \
+  do                                                                   \
+    {                                                                  \
+      fprintf ((FILE), "\t.weakref\t");                                        \
+      assemble_name ((FILE), (NAME));                                  \
+      fprintf ((FILE), ",");                                           \
+      assemble_name ((FILE), (VALUE));                                 \
+      fprintf ((FILE), "\n");                                          \
+    }                                                                  \
+  while (0)
+#endif
+#endif
+
+/* How to emit a .type directive.  */
+#ifndef ASM_OUTPUT_TYPE_DIRECTIVE
+#if defined TYPE_ASM_OP && defined TYPE_OPERAND_FMT
+#define ASM_OUTPUT_TYPE_DIRECTIVE(STREAM, NAME, TYPE)  \
+  do                                                   \
+    {                                                  \
+      fputs (TYPE_ASM_OP, STREAM);                     \
+      assemble_name (STREAM, NAME);                    \
+      fputs (", ", STREAM);                            \
+      fprintf (STREAM, TYPE_OPERAND_FMT, TYPE);                \
+      putc ('\n', STREAM);                             \
+    }                                                  \
+  while (0)
+#endif
+#endif
+
+/* How to emit a .size directive.  */
+#ifndef ASM_OUTPUT_SIZE_DIRECTIVE
+#ifdef SIZE_ASM_OP
+#define ASM_OUTPUT_SIZE_DIRECTIVE(STREAM, NAME, SIZE)  \
+  do                                                   \
+    {                                                  \
+      HOST_WIDE_INT size_ = (SIZE);                    \
+      fputs (SIZE_ASM_OP, STREAM);                     \
+      assemble_name (STREAM, NAME);                    \
+      fprintf (STREAM, ", " HOST_WIDE_INT_PRINT_DEC "\n", size_); \
+    }                                                  \
+  while (0)
+
+#define ASM_OUTPUT_MEASURED_SIZE(STREAM, NAME)         \
+  do                                                   \
+    {                                                  \
+      fputs (SIZE_ASM_OP, STREAM);                     \
+      assemble_name (STREAM, NAME);                    \
+      fputs (", .-", STREAM);                          \
+      assemble_name (STREAM, NAME);                    \
+      putc ('\n', STREAM);                             \
+    }                                                  \
+  while (0)
+
+#endif
+#endif
+
+/* This determines whether or not we support weak symbols.  */
+#ifndef SUPPORTS_WEAK
+#if defined (ASM_WEAKEN_LABEL) || defined (ASM_WEAKEN_DECL)
+#define SUPPORTS_WEAK 1
+#else
+#define SUPPORTS_WEAK 0
+#endif
+#endif
+
+/* This determines whether or not we support link-once semantics.  */
+#ifndef SUPPORTS_ONE_ONLY
+#ifdef MAKE_DECL_ONE_ONLY
+#define SUPPORTS_ONE_ONLY 1
+#else
+#define SUPPORTS_ONE_ONLY 0
+#endif
+#endif
+
+/* This determines whether weak symbols must be left out of a static
+   archive's table of contents.  Defining this macro to be nonzero has
+   the consequence that certain symbols will not be made weak that
+   otherwise would be.  The C++ ABI requires this macro to be zero;
+   see the documentation.  */
+#ifndef TARGET_WEAK_NOT_IN_ARCHIVE_TOC
+#define TARGET_WEAK_NOT_IN_ARCHIVE_TOC 0
+#endif
+
+/* This determines whether or not we need linkonce unwind information.  */
+#ifndef TARGET_USES_WEAK_UNWIND_INFO
+#define TARGET_USES_WEAK_UNWIND_INFO 0
+#endif
+
+/* By default, there is no prefix on user-defined symbols.  */
+#ifndef USER_LABEL_PREFIX
+#define USER_LABEL_PREFIX ""
+#endif
+
+/* If the target supports weak symbols, define TARGET_ATTRIBUTE_WEAK to
+   provide a weak attribute.  Else define it to nothing.
+
+   This would normally belong in ansidecl.h, but SUPPORTS_WEAK is
+   not available at that time.
+
+   Note, this is only for use by target files which we know are to be
+   compiled by GCC.  */
+#ifndef TARGET_ATTRIBUTE_WEAK
+# if SUPPORTS_WEAK
+#  define TARGET_ATTRIBUTE_WEAK __attribute__ ((weak))
+# else
+#  define TARGET_ATTRIBUTE_WEAK
+# endif
+#endif
+
+/* Determines whether we may use common symbols to represent one-only
+   semantics (a.k.a. "vague linkage").  */
+#ifndef USE_COMMON_FOR_ONE_ONLY
+# define USE_COMMON_FOR_ONE_ONLY 1
+#endif
+
+/* By default we can assume that all global symbols are in one namespace,
+   across all shared libraries.  */
+#ifndef MULTIPLE_SYMBOL_SPACES
+# define MULTIPLE_SYMBOL_SPACES 0
+#endif
+
+/* If the target supports init_priority C++ attribute, give
+   SUPPORTS_INIT_PRIORITY a nonzero value.  */
+#ifndef SUPPORTS_INIT_PRIORITY
+#define SUPPORTS_INIT_PRIORITY 1
+#endif /* SUPPORTS_INIT_PRIORITY */
+
+/* If duplicate library search directories can be removed from a
+   linker command without changing the linker's semantics, give this
+   symbol a nonzero.  */
+#ifndef LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
+#define LINK_ELIMINATE_DUPLICATE_LDIRECTORIES 0
+#endif /* LINK_ELIMINATE_DUPLICATE_LDIRECTORIES */
+
+/* If we have a definition of INCOMING_RETURN_ADDR_RTX, assume that
+   the rest of the DWARF 2 frame unwind support is also provided.  */
+#if !defined (DWARF2_UNWIND_INFO) && defined (INCOMING_RETURN_ADDR_RTX) \
+    && !defined (TARGET_UNWIND_INFO)
+#define DWARF2_UNWIND_INFO 1
+#endif
+
+/* If we have named sections, and we're using crtstuff to run ctors,
+   use them for registering eh frame information.  */
+#if defined (TARGET_ASM_NAMED_SECTION) && DWARF2_UNWIND_INFO \
+    && !defined(EH_FRAME_IN_DATA_SECTION)
+#ifndef EH_FRAME_SECTION_NAME
+#define EH_FRAME_SECTION_NAME ".eh_frame"
+#endif
+#endif
+
+/* On many systems, different EH table encodings are used under
+   difference circumstances.  Some will require runtime relocations;
+   some will not.  For those that do not require runtime relocations,
+   we would like to make the table read-only.  However, since the
+   read-only tables may need to be combined with read-write tables
+   that do require runtime relocation, it is not safe to make the
+   tables read-only unless the linker will merge read-only and
+   read-write sections into a single read-write section.  If your
+   linker does not have this ability, but your system is such that no
+   encoding used with non-PIC code will ever require a runtime
+   relocation, then you can define EH_TABLES_CAN_BE_READ_ONLY to 1 in
+   your target configuration file.  */
+#ifndef EH_TABLES_CAN_BE_READ_ONLY
+#ifdef HAVE_LD_RO_RW_SECTION_MIXING
+#define EH_TABLES_CAN_BE_READ_ONLY 1
+#else
+#define EH_TABLES_CAN_BE_READ_ONLY 0
+#endif
+#endif
+
+/* If we have named section and we support weak symbols, then use the
+   .jcr section for recording java classes which need to be registered
+   at program start-up time.  */
+#if defined (TARGET_ASM_NAMED_SECTION) && SUPPORTS_WEAK
+#ifndef JCR_SECTION_NAME
+#define JCR_SECTION_NAME ".jcr"
+#endif
+#endif
+
+/* This decision to use a .jcr section can be overridden by defining
+   USE_JCR_SECTION to 0 in target file.  This is necessary if target
+   can define JCR_SECTION_NAME but does not have crtstuff or
+   linker support for .jcr section.  */
+#ifndef TARGET_USE_JCR_SECTION
+#ifdef JCR_SECTION_NAME
+#define TARGET_USE_JCR_SECTION 1
+#else
+#define TARGET_USE_JCR_SECTION 0
+#endif
+#endif
+
+/* Number of hardware registers that go into the DWARF-2 unwind info.
+   If not defined, equals FIRST_PSEUDO_REGISTER  */
+
+#ifndef DWARF_FRAME_REGISTERS
+#define DWARF_FRAME_REGISTERS FIRST_PSEUDO_REGISTER
+#endif
+
+/* How to renumber registers for dbx and gdb.  If not defined, assume
+   no renumbering is necessary.  */
+
+#ifndef DBX_REGISTER_NUMBER
+#define DBX_REGISTER_NUMBER(REGNO) (REGNO)
+#endif
+
+/* Default sizes for base C types.  If the sizes are different for
+   your target, you should override these values by defining the
+   appropriate symbols in your tm.h file.  */
+
+#ifndef BITS_PER_UNIT
+#define BITS_PER_UNIT 8
+#endif
+
+#ifndef BITS_PER_WORD
+#define BITS_PER_WORD (BITS_PER_UNIT * UNITS_PER_WORD)
+#endif
+
+#ifndef CHAR_TYPE_SIZE
+#define CHAR_TYPE_SIZE BITS_PER_UNIT
+#endif
+
+#ifndef BOOL_TYPE_SIZE
+/* `bool' has size and alignment `1', on almost all platforms.  */
+#define BOOL_TYPE_SIZE CHAR_TYPE_SIZE
+#endif
+
+#ifndef SHORT_TYPE_SIZE
+#define SHORT_TYPE_SIZE (BITS_PER_UNIT * MIN ((UNITS_PER_WORD + 1) / 2, 2))
+#endif
+
+#ifndef INT_TYPE_SIZE
+#define INT_TYPE_SIZE BITS_PER_WORD
+#endif
+
+#ifndef LONG_TYPE_SIZE
+#define LONG_TYPE_SIZE BITS_PER_WORD
+#endif
+
+#ifndef LONG_LONG_TYPE_SIZE
+#define LONG_LONG_TYPE_SIZE (BITS_PER_WORD * 2)
+#endif
+
+#ifndef WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE INT_TYPE_SIZE
+#endif
+
+#ifndef FLOAT_TYPE_SIZE
+#define FLOAT_TYPE_SIZE BITS_PER_WORD
+#endif
+
+#ifndef DOUBLE_TYPE_SIZE
+#define DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
+#endif
+
+#ifndef LONG_DOUBLE_TYPE_SIZE
+#define LONG_DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
+#endif
+
+#ifndef DECIMAL32_TYPE_SIZE
+#define DECIMAL32_TYPE_SIZE 32
+#endif 
+
+#ifndef DECIMAL64_TYPE_SIZE 
+#define DECIMAL64_TYPE_SIZE 64
+#endif 
+
+#ifndef DECIMAL128_TYPE_SIZE
+#define DECIMAL128_TYPE_SIZE 128
+#endif
+
+#ifndef SHORT_FRACT_TYPE_SIZE
+#define SHORT_FRACT_TYPE_SIZE BITS_PER_UNIT
+#endif
+
+#ifndef FRACT_TYPE_SIZE
+#define FRACT_TYPE_SIZE (BITS_PER_UNIT * 2)
+#endif
+
+#ifndef LONG_FRACT_TYPE_SIZE
+#define LONG_FRACT_TYPE_SIZE (BITS_PER_UNIT * 4)
+#endif
+
+#ifndef LONG_LONG_FRACT_TYPE_SIZE
+#define LONG_LONG_FRACT_TYPE_SIZE (BITS_PER_UNIT * 8)
+#endif
+
+#ifndef SHORT_ACCUM_TYPE_SIZE
+#define SHORT_ACCUM_TYPE_SIZE (SHORT_FRACT_TYPE_SIZE * 2)
+#endif
+
+#ifndef ACCUM_TYPE_SIZE
+#define ACCUM_TYPE_SIZE (FRACT_TYPE_SIZE * 2)
+#endif
+
+#ifndef LONG_ACCUM_TYPE_SIZE
+#define LONG_ACCUM_TYPE_SIZE (LONG_FRACT_TYPE_SIZE * 2)
+#endif
+
+#ifndef LONG_LONG_ACCUM_TYPE_SIZE
+#define LONG_LONG_ACCUM_TYPE_SIZE (LONG_LONG_FRACT_TYPE_SIZE * 2)
+#endif
+
+/* Width in bits of a pointer.  Mind the value of the macro `Pmode'.  */
+#ifndef POINTER_SIZE
+#define POINTER_SIZE BITS_PER_WORD
+#endif
+
+#ifndef PIC_OFFSET_TABLE_REGNUM
+#define PIC_OFFSET_TABLE_REGNUM INVALID_REGNUM
+#endif
+
+#ifndef TARGET_DLLIMPORT_DECL_ATTRIBUTES
+#define TARGET_DLLIMPORT_DECL_ATTRIBUTES 0
+#endif
+
+#ifndef TARGET_DECLSPEC
+#if TARGET_DLLIMPORT_DECL_ATTRIBUTES
+/* If the target supports the "dllimport" attribute, users are
+   probably used to the "__declspec" syntax.  */
+#define TARGET_DECLSPEC 1
+#else
+#define TARGET_DECLSPEC 0
+#endif
+#endif
+
+/* By default, the preprocessor should be invoked the same way in C++
+   as in C.  */
+#ifndef CPLUSPLUS_CPP_SPEC
+#ifdef CPP_SPEC
+#define CPLUSPLUS_CPP_SPEC CPP_SPEC
+#endif
+#endif
+
+#ifndef ACCUMULATE_OUTGOING_ARGS
+#define ACCUMULATE_OUTGOING_ARGS 0
+#endif
+
+/* Supply a default definition for PUSH_ARGS.  */
+#ifndef PUSH_ARGS
+#ifdef PUSH_ROUNDING
+#define PUSH_ARGS      !ACCUMULATE_OUTGOING_ARGS
+#else
+#define PUSH_ARGS      0
+#endif
+#endif
+
+/* Decide whether a function's arguments should be processed
+   from first to last or from last to first.
+
+   They should if the stack and args grow in opposite directions, but
+   only if we have push insns.  */
+
+#ifdef PUSH_ROUNDING
+
+#ifndef PUSH_ARGS_REVERSED
+#if defined (STACK_GROWS_DOWNWARD) != defined (ARGS_GROW_DOWNWARD)
+#define PUSH_ARGS_REVERSED  PUSH_ARGS
+#endif
+#endif
+
+#endif
+
+#ifndef PUSH_ARGS_REVERSED
+#define PUSH_ARGS_REVERSED 0
+#endif
+
+/* Default value for the alignment (in bits) a C conformant malloc has to
+   provide. This default is intended to be safe and always correct.  */
+#ifndef MALLOC_ABI_ALIGNMENT
+#define MALLOC_ABI_ALIGNMENT BITS_PER_WORD
+#endif
+
+/* If PREFERRED_STACK_BOUNDARY is not defined, set it to STACK_BOUNDARY.
+   STACK_BOUNDARY is required.  */
+#ifndef PREFERRED_STACK_BOUNDARY
+#define PREFERRED_STACK_BOUNDARY STACK_BOUNDARY
+#endif
+
+/* Set INCOMING_STACK_BOUNDARY to PREFERRED_STACK_BOUNDARY if it is not
+   defined.  */
+#ifndef INCOMING_STACK_BOUNDARY
+#define INCOMING_STACK_BOUNDARY PREFERRED_STACK_BOUNDARY
+#endif
+
+#ifndef TARGET_DEFAULT_PACK_STRUCT
+#define TARGET_DEFAULT_PACK_STRUCT 0
+#endif
+
+/* By default, the C++ compiler will use function addresses in the
+   vtable entries.  Setting this nonzero tells the compiler to use
+   function descriptors instead.  The value of this macro says how
+   many words wide the descriptor is (normally 2).  It is assumed
+   that the address of a function descriptor may be treated as a
+   pointer to a function.  */
+#ifndef TARGET_VTABLE_USES_DESCRIPTORS
+#define TARGET_VTABLE_USES_DESCRIPTORS 0
+#endif
+
+/* By default, the vtable entries are void pointers, the so the alignment
+   is the same as pointer alignment.  The value of this macro specifies
+   the alignment of the vtable entry in bits.  It should be defined only
+   when special alignment is necessary.  */
+#ifndef TARGET_VTABLE_ENTRY_ALIGN
+#define TARGET_VTABLE_ENTRY_ALIGN POINTER_SIZE
+#endif
+
+/* There are a few non-descriptor entries in the vtable at offsets below
+   zero.  If these entries must be padded (say, to preserve the alignment
+   specified by TARGET_VTABLE_ENTRY_ALIGN), set this to the number of
+   words in each data entry.  */
+#ifndef TARGET_VTABLE_DATA_ENTRY_DISTANCE
+#define TARGET_VTABLE_DATA_ENTRY_DISTANCE 1
+#endif
+
+/* Decide whether it is safe to use a local alias for a virtual function
+   when constructing thunks.  */
+#ifndef TARGET_USE_LOCAL_THUNK_ALIAS_P
+#ifdef ASM_OUTPUT_DEF
+#define TARGET_USE_LOCAL_THUNK_ALIAS_P(DECL) 1
+#else
+#define TARGET_USE_LOCAL_THUNK_ALIAS_P(DECL) 0
+#endif
+#endif
+
+/* Select a format to encode pointers in exception handling data.  We
+   prefer those that result in fewer dynamic relocations.  Assume no
+   special support here and encode direct references.  */
+#ifndef ASM_PREFERRED_EH_DATA_FORMAT
+#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL)  DW_EH_PE_absptr
+#endif
+
+/* By default, the C++ compiler will use the lowest bit of the pointer
+   to function to indicate a pointer-to-member-function points to a
+   virtual member function.  However, if FUNCTION_BOUNDARY indicates
+   function addresses aren't always even, the lowest bit of the delta
+   field will be used.  */
+#ifndef TARGET_PTRMEMFUNC_VBIT_LOCATION
+#define TARGET_PTRMEMFUNC_VBIT_LOCATION \
+  (FUNCTION_BOUNDARY >= 2 * BITS_PER_UNIT \
+   ? ptrmemfunc_vbit_in_pfn : ptrmemfunc_vbit_in_delta)
+#endif
+
+#ifndef DEFAULT_GDB_EXTENSIONS
+#define DEFAULT_GDB_EXTENSIONS 1
+#endif
+
+/* If more than one debugging type is supported, you must define
+   PREFERRED_DEBUGGING_TYPE to choose the default.  */
+
+#if 1 < (defined (DBX_DEBUGGING_INFO) + defined (SDB_DEBUGGING_INFO) \
+         + defined (DWARF2_DEBUGGING_INFO) + defined (XCOFF_DEBUGGING_INFO) \
+         + defined (VMS_DEBUGGING_INFO))
+#ifndef PREFERRED_DEBUGGING_TYPE
+#error You must define PREFERRED_DEBUGGING_TYPE
+#endif /* no PREFERRED_DEBUGGING_TYPE */
+
+/* If only one debugging format is supported, define PREFERRED_DEBUGGING_TYPE
+   here so other code needn't care.  */
+#elif defined DBX_DEBUGGING_INFO
+#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
+
+#elif defined SDB_DEBUGGING_INFO
+#define PREFERRED_DEBUGGING_TYPE SDB_DEBUG
+
+#elif defined DWARF2_DEBUGGING_INFO
+#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
+
+#elif defined VMS_DEBUGGING_INFO
+#define PREFERRED_DEBUGGING_TYPE VMS_AND_DWARF2_DEBUG
+
+#elif defined XCOFF_DEBUGGING_INFO
+#define PREFERRED_DEBUGGING_TYPE XCOFF_DEBUG
+
+#else
+/* No debugging format is supported by this target.  */
+#define PREFERRED_DEBUGGING_TYPE NO_DEBUG
+#endif
+
+#ifndef LARGEST_EXPONENT_IS_NORMAL
+#define LARGEST_EXPONENT_IS_NORMAL(SIZE) 0
+#endif
+
+#ifndef ROUND_TOWARDS_ZERO
+#define ROUND_TOWARDS_ZERO 0
+#endif
+
+#ifndef FLOAT_LIB_COMPARE_RETURNS_BOOL
+#define FLOAT_LIB_COMPARE_RETURNS_BOOL(MODE, COMPARISON) false
+#endif
+
+/* True if the targets integer-comparison functions return { 0, 1, 2
+   } to indicate { <, ==, > }.  False if { -1, 0, 1 } is used
+   instead.  The libgcc routines are biased.  */
+#ifndef TARGET_LIB_INT_CMP_BIASED
+#define TARGET_LIB_INT_CMP_BIASED (true)
+#endif
+
+/* If FLOAT_WORDS_BIG_ENDIAN is not defined in the header files,
+   then the word-endianness is the same as for integers.  */
+#ifndef FLOAT_WORDS_BIG_ENDIAN
+#define FLOAT_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN
+#endif
+
+#ifndef TARGET_FLT_EVAL_METHOD
+#define TARGET_FLT_EVAL_METHOD 0
+#endif
+
+#ifndef TARGET_DEC_EVAL_METHOD
+#define TARGET_DEC_EVAL_METHOD 2
+#endif
+
+#ifndef HOT_TEXT_SECTION_NAME
+#define HOT_TEXT_SECTION_NAME ".text.hot"
+#endif
+
+#ifndef UNLIKELY_EXECUTED_TEXT_SECTION_NAME
+#define UNLIKELY_EXECUTED_TEXT_SECTION_NAME ".text.unlikely"
+#endif
+
+#ifndef HAS_LONG_COND_BRANCH
+#define HAS_LONG_COND_BRANCH 0
+#endif
+
+#ifndef HAS_LONG_UNCOND_BRANCH
+#define HAS_LONG_UNCOND_BRANCH 0
+#endif
+
+/* By default, only attempt to parallelize bitwise operations, and
+   possibly adds/subtracts using bit-twiddling.  */
+#ifndef UNITS_PER_SIMD_WORD
+#define UNITS_PER_SIMD_WORD(MODE) UNITS_PER_WORD
+#endif
+
+/* Determine whether __cxa_atexit, rather than atexit, is used to
+   register C++ destructors for local statics and global objects.  */
+#ifndef DEFAULT_USE_CXA_ATEXIT
+#define DEFAULT_USE_CXA_ATEXIT 0
+#endif
+
+/* If none of these macros are defined, the port must use the new
+   technique of defining constraints in the machine description.
+   tm_p.h will define those macros that machine-independent code
+   still uses.  */
+#if  !defined CONSTRAINT_LEN                   \
+  && !defined REG_CLASS_FROM_LETTER            \
+  && !defined REG_CLASS_FROM_CONSTRAINT                \
+  && !defined CONST_OK_FOR_LETTER_P            \
+  && !defined CONST_OK_FOR_CONSTRAINT_P                \
+  && !defined CONST_DOUBLE_OK_FOR_LETTER_P     \
+  && !defined CONST_DOUBLE_OK_FOR_CONSTRAINT_P  \
+  && !defined EXTRA_CONSTRAINT                 \
+  && !defined EXTRA_CONSTRAINT_STR             \
+  && !defined EXTRA_MEMORY_CONSTRAINT          \
+  && !defined EXTRA_ADDRESS_CONSTRAINT
+
+#define USE_MD_CONSTRAINTS
+
+#if GCC_VERSION >= 3000 && defined IN_GCC
+/* These old constraint macros shouldn't appear anywhere in a
+   configuration using MD constraint definitions.  */
+#pragma GCC poison REG_CLASS_FROM_LETTER CONST_OK_FOR_LETTER_P \
+                   CONST_DOUBLE_OK_FOR_LETTER_P EXTRA_CONSTRAINT
+#endif
+
+#else /* old constraint mechanism in use */
+
+/* Determine whether extra constraint letter should be handled
+   via address reload (like 'o').  */
+#ifndef EXTRA_MEMORY_CONSTRAINT
+#define EXTRA_MEMORY_CONSTRAINT(C,STR) 0
+#endif
+
+/* Determine whether extra constraint letter should be handled
+   as an address (like 'p').  */
+#ifndef EXTRA_ADDRESS_CONSTRAINT
+#define EXTRA_ADDRESS_CONSTRAINT(C,STR) 0
+#endif
+
+/* When a port defines CONSTRAINT_LEN, it should use DEFAULT_CONSTRAINT_LEN
+   for all the characters that it does not want to change, so things like the
+  'length' of a digit in a matching constraint is an implementation detail,
+   and not part of the interface.  */
+#define DEFAULT_CONSTRAINT_LEN(C,STR) 1
+
+#ifndef CONSTRAINT_LEN
+#define CONSTRAINT_LEN(C,STR) DEFAULT_CONSTRAINT_LEN (C, STR)
+#endif
+
+#if defined (CONST_OK_FOR_LETTER_P) && ! defined (CONST_OK_FOR_CONSTRAINT_P)
+#define CONST_OK_FOR_CONSTRAINT_P(VAL,C,STR) CONST_OK_FOR_LETTER_P (VAL, C)
+#endif
+
+#if defined (CONST_DOUBLE_OK_FOR_LETTER_P) && ! defined (CONST_DOUBLE_OK_FOR_CONSTRAINT_P)
+#define CONST_DOUBLE_OK_FOR_CONSTRAINT_P(OP,C,STR) \
+  CONST_DOUBLE_OK_FOR_LETTER_P (OP, C)
+#endif
+
+#ifndef REG_CLASS_FROM_CONSTRAINT
+#define REG_CLASS_FROM_CONSTRAINT(C,STR) REG_CLASS_FROM_LETTER (C)
+#endif
+
+#if defined (EXTRA_CONSTRAINT) && ! defined (EXTRA_CONSTRAINT_STR)
+#define EXTRA_CONSTRAINT_STR(OP, C,STR) EXTRA_CONSTRAINT (OP, C)
+#endif
+
+#endif /* old constraint mechanism in use */
+
+#ifndef REGISTER_MOVE_COST
+#define REGISTER_MOVE_COST(m, x, y) 2
+#endif
+
+/* Determine whether the entire c99 runtime
+   is present in the runtime library.  */
+#ifndef TARGET_C99_FUNCTIONS
+#define TARGET_C99_FUNCTIONS 0
+#endif
+
+/* Determine whether the target runtime library has
+   a sincos implementation following the GNU extension.  */
+#ifndef TARGET_HAS_SINCOS
+#define TARGET_HAS_SINCOS 0
+#endif
+
+/* Indicate that CLZ and CTZ are undefined at zero.  */
+#ifndef CLZ_DEFINED_VALUE_AT_ZERO
+#define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE)  0
+#endif
+#ifndef CTZ_DEFINED_VALUE_AT_ZERO
+#define CTZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE)  0
+#endif
+
+/* Provide a default value for STORE_FLAG_VALUE.  */
+#ifndef STORE_FLAG_VALUE
+#define STORE_FLAG_VALUE  1
+#endif
+
+/* This macro is used to determine what the largest unit size that
+   move_by_pieces can use is.  */
+
+/* MOVE_MAX_PIECES is the number of bytes at a time which we can
+   move efficiently, as opposed to  MOVE_MAX which is the maximum
+   number of bytes we can move with a single instruction.  */
+
+#ifndef MOVE_MAX_PIECES
+#define MOVE_MAX_PIECES   MOVE_MAX
+#endif
+
+#ifndef STACK_POINTER_OFFSET
+#define STACK_POINTER_OFFSET    0
+#endif
+
+#ifndef LOCAL_REGNO
+#define LOCAL_REGNO(REGNO)  0
+#endif
+
+/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
+   the stack pointer does not matter.  The value is tested only in
+   functions that have frame pointers.  */
+#ifndef EXIT_IGNORE_STACK
+#define EXIT_IGNORE_STACK 0
+#endif
+
+/* Assume that case vectors are not pc-relative.  */
+#ifndef CASE_VECTOR_PC_RELATIVE
+#define CASE_VECTOR_PC_RELATIVE 0
+#endif
+
+/* Assume that trampolines need function alignment.  */
+#ifndef TRAMPOLINE_ALIGNMENT
+#define TRAMPOLINE_ALIGNMENT FUNCTION_BOUNDARY
+#endif
+
+/* Register mappings for target machines without register windows.  */
+#ifndef INCOMING_REGNO
+#define INCOMING_REGNO(N) (N)
+#endif
+
+#ifndef OUTGOING_REGNO
+#define OUTGOING_REGNO(N) (N)
+#endif
+
+#ifndef SHIFT_COUNT_TRUNCATED
+#define SHIFT_COUNT_TRUNCATED 0
+#endif
+
+#ifndef LEGITIMIZE_ADDRESS
+#define LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN)
+#endif
+
+#ifndef LEGITIMATE_PIC_OPERAND_P
+#define LEGITIMATE_PIC_OPERAND_P(X) 1
+#endif
+
+#ifndef TARGET_MEM_CONSTRAINT
+#define TARGET_MEM_CONSTRAINT 'm'
+#endif
+
+#ifndef REVERSIBLE_CC_MODE
+#define REVERSIBLE_CC_MODE(MODE) 0
+#endif
+
+/* Biggest alignment supported by the object file format of this machine.  */
+#ifndef MAX_OFILE_ALIGNMENT
+#define MAX_OFILE_ALIGNMENT BIGGEST_ALIGNMENT
+#endif
+
+#ifndef FRAME_GROWS_DOWNWARD
+#define FRAME_GROWS_DOWNWARD 0
+#endif
+
+/* On most machines, the CFA coincides with the first incoming parm.  */
+#ifndef ARG_POINTER_CFA_OFFSET
+#define ARG_POINTER_CFA_OFFSET(FNDECL) FIRST_PARM_OFFSET (FNDECL)
+#endif
+
+/* On most machines, we use the CFA as DW_AT_frame_base.  */
+#ifndef CFA_FRAME_BASE_OFFSET
+#define CFA_FRAME_BASE_OFFSET(FNDECL) 0
+#endif
+
+/* The offset from the incoming value of %sp to the top of the stack frame
+   for the current function.  */
+#ifndef INCOMING_FRAME_SP_OFFSET
+#define INCOMING_FRAME_SP_OFFSET 0
+#endif
+
+#ifndef HARD_REGNO_NREGS_HAS_PADDING
+#define HARD_REGNO_NREGS_HAS_PADDING(REGNO, MODE) 0
+#define HARD_REGNO_NREGS_WITH_PADDING(REGNO, MODE) -1
+#endif
+
+#ifndef OUTGOING_REG_PARM_STACK_SPACE
+#define OUTGOING_REG_PARM_STACK_SPACE(FNTYPE) 0
+#endif
+
+/* MAX_STACK_ALIGNMENT is the maximum stack alignment guaranteed by
+   the backend.  MAX_SUPPORTED_STACK_ALIGNMENT is the maximum best
+   effort stack alignment supported by the backend.  If the backend
+   supports stack alignment, MAX_SUPPORTED_STACK_ALIGNMENT and
+   MAX_STACK_ALIGNMENT are the same.  Otherwise, the incoming stack
+   boundary will limit the maximum guaranteed stack alignment.  */
+#ifdef MAX_STACK_ALIGNMENT
+#define MAX_SUPPORTED_STACK_ALIGNMENT MAX_STACK_ALIGNMENT
+#else
+#define MAX_STACK_ALIGNMENT STACK_BOUNDARY
+#define MAX_SUPPORTED_STACK_ALIGNMENT PREFERRED_STACK_BOUNDARY
+#endif
+
+#define SUPPORTS_STACK_ALIGNMENT (MAX_STACK_ALIGNMENT > STACK_BOUNDARY)
+
+#ifndef LOCAL_ALIGNMENT
+#define LOCAL_ALIGNMENT(TYPE, ALIGNMENT) ALIGNMENT
+#endif
+
+#ifndef STACK_SLOT_ALIGNMENT
+#define STACK_SLOT_ALIGNMENT(TYPE,MODE,ALIGN) \
+  ((TYPE) ? LOCAL_ALIGNMENT ((TYPE), (ALIGN)) : (ALIGN))
+#endif
+
+#ifndef LOCAL_DECL_ALIGNMENT
+#define LOCAL_DECL_ALIGNMENT(DECL) \
+  LOCAL_ALIGNMENT (TREE_TYPE (DECL), DECL_ALIGN (DECL))
+#endif
+
+/* Alignment value for attribute ((aligned)).  */
+#ifndef ATTRIBUTE_ALIGNED_VALUE
+#define ATTRIBUTE_ALIGNED_VALUE BIGGEST_ALIGNMENT
+#endif
+
+#endif  /* ! GCC_DEFAULTS_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/double-int.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/double-int.h
new file mode 100644 (file)
index 0000000..d35a52c
--- /dev/null
@@ -0,0 +1,188 @@
+/* Operations with long integers.
+   Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
+   
+This file is part of GCC.
+   
+GCC is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 3, or (at your option) any
+later version.
+   
+GCC is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+   
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef DOUBLE_INT_H
+#define DOUBLE_INT_H
+
+#ifndef GENERATOR_FILE
+#include <gmp.h>
+#endif
+#include "coretypes.h"
+
+/* A large integer is currently represented as a pair of HOST_WIDE_INTs.
+   It therefore represents a number with precision of
+   2 * HOST_BITS_PER_WIDE_INT bits (it is however possible that the
+   internal representation will change, if numbers with greater precision
+   are needed, so the users should not rely on it).  The representation does
+   not contain any information about signedness of the represented value, so
+   it can be used to represent both signed and unsigned numbers.  For
+   operations where the results depend on signedness (division, comparisons),
+   it must be specified separately.  For each such operation, there are three
+   versions of the function -- double_int_op, that takes an extra UNS argument
+   giving the signedness of the values, and double_int_sop and double_int_uop
+   that stand for its specializations for signed and unsigned values.
+
+   You may also represent with numbers in smaller precision using double_int.
+   You however need to use double_int_ext (that fills in the bits of the
+   number over the prescribed precision with zeros or with the sign bit) before
+   operations that do not perform arithmetics modulo 2^precision (comparisons,
+   division), and possibly before storing the results, if you want to keep
+   them in some canonical form).  In general, the signedness of double_int_ext
+   should match the signedness of the operation.
+
+   ??? The components of double_int differ in signedness mostly for
+   historical reasons (they replace an older structure used to represent
+   numbers with precision higher than HOST_WIDE_INT).  It might be less
+   confusing to have them both signed or both unsigned.  */
+
+typedef struct
+{
+  unsigned HOST_WIDE_INT low;
+  HOST_WIDE_INT high;
+} double_int;
+
+union tree_node;
+
+/* Constructors and conversions.  */
+
+union tree_node *double_int_to_tree (union tree_node *, double_int);
+bool double_int_fits_to_tree_p (const union tree_node *, double_int);
+double_int tree_to_double_int (const union tree_node *);
+
+/* Constructs double_int from integer CST.  The bits over the precision of
+   HOST_WIDE_INT are filled with the sign bit.  */
+
+static inline double_int
+shwi_to_double_int (HOST_WIDE_INT cst)
+{
+  double_int r;
+  
+  r.low = (unsigned HOST_WIDE_INT) cst;
+  r.high = cst < 0 ? -1 : 0;
+
+  return r;
+}
+
+/* Some useful constants.  */
+
+#define double_int_minus_one (shwi_to_double_int (-1))
+#define double_int_zero (shwi_to_double_int (0))
+#define double_int_one (shwi_to_double_int (1))
+#define double_int_two (shwi_to_double_int (2))
+#define double_int_ten (shwi_to_double_int (10))
+
+/* Constructs double_int from unsigned integer CST.  The bits over the
+   precision of HOST_WIDE_INT are filled with zeros.  */
+
+static inline double_int
+uhwi_to_double_int (unsigned HOST_WIDE_INT cst)
+{
+  double_int r;
+  
+  r.low = cst;
+  r.high = 0;
+
+  return r;
+}
+
+/* The following operations perform arithmetics modulo 2^precision,
+   so you do not need to call double_int_ext between them, even if
+   you are representing numbers with precision less than
+   2 * HOST_BITS_PER_WIDE_INT bits.  */
+
+double_int double_int_mul (double_int, double_int);
+double_int double_int_add (double_int, double_int);
+double_int double_int_neg (double_int);
+
+/* You must ensure that double_int_ext is called on the operands
+   of the following operations, if the precision of the numbers
+   is less than 2 * HOST_BITS_PER_WIDE_INT bits.  */
+bool double_int_fits_in_hwi_p (double_int, bool);
+bool double_int_fits_in_shwi_p (double_int);
+bool double_int_fits_in_uhwi_p (double_int);
+HOST_WIDE_INT double_int_to_shwi (double_int);
+unsigned HOST_WIDE_INT double_int_to_uhwi (double_int);
+double_int double_int_div (double_int, double_int, bool, unsigned);
+double_int double_int_sdiv (double_int, double_int, unsigned);
+double_int double_int_udiv (double_int, double_int, unsigned);
+double_int double_int_mod (double_int, double_int, bool, unsigned);
+double_int double_int_smod (double_int, double_int, unsigned);
+double_int double_int_umod (double_int, double_int, unsigned);
+double_int double_int_divmod (double_int, double_int, bool, unsigned, double_int *);
+double_int double_int_sdivmod (double_int, double_int, unsigned, double_int *);
+double_int double_int_udivmod (double_int, double_int, unsigned, double_int *);
+bool double_int_negative_p (double_int);
+int double_int_cmp (double_int, double_int, bool);
+int double_int_scmp (double_int, double_int);
+int double_int_ucmp (double_int, double_int);
+void dump_double_int (FILE *, double_int, bool);
+
+/* Zero and sign extension of numbers in smaller precisions.  */
+
+double_int double_int_ext (double_int, unsigned, bool);
+double_int double_int_sext (double_int, unsigned);
+double_int double_int_zext (double_int, unsigned);
+double_int double_int_mask (unsigned);
+
+#define ALL_ONES (~((unsigned HOST_WIDE_INT) 0))
+
+/* The operands of the following comparison functions must be processed
+   with double_int_ext, if their precision is less than
+   2 * HOST_BITS_PER_WIDE_INT bits.  */
+
+/* Returns true if CST is zero.  */
+
+static inline bool
+double_int_zero_p (double_int cst)
+{
+  return cst.low == 0 && cst.high == 0;
+}
+
+/* Returns true if CST is one.  */
+
+static inline bool
+double_int_one_p (double_int cst)
+{
+  return cst.low == 1 && cst.high == 0;
+}
+
+/* Returns true if CST is minus one.  */
+
+static inline bool
+double_int_minus_one_p (double_int cst)
+{
+  return (cst.low == ALL_ONES && cst.high == -1);
+}
+
+/* Returns true if CST1 == CST2.  */
+
+static inline bool
+double_int_equal_p (double_int cst1, double_int cst2)
+{
+  return cst1.low == cst2.low && cst1.high == cst2.high;
+}
+
+#ifndef GENERATOR_FILE
+/* Conversion to and from GMP integer representations.  */
+
+void mpz_set_double_int (mpz_t, double_int, bool);
+double_int mpz_get_double_int (const_tree, mpz_t, bool);
+#endif
+
+#endif /* DOUBLE_INT_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/filenames.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/filenames.h
new file mode 100644 (file)
index 0000000..0d411cc
--- /dev/null
@@ -0,0 +1,60 @@
+/* Macros for taking apart, interpreting and processing file names.
+
+   These are here because some non-Posix (a.k.a. DOSish) systems have
+   drive letter brain-damage at the beginning of an absolute file name,
+   use forward- and back-slash in path names interchangeably, and
+   some of them have case-insensitive file names.
+
+   Copyright 2000, 2001, 2007 Free Software Foundation, Inc.
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef FILENAMES_H
+#define FILENAMES_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined(__MSDOS__) || defined(_WIN32) || defined(__OS2__) || defined (__CYGWIN__)
+
+#ifndef HAVE_DOS_BASED_FILE_SYSTEM
+#define HAVE_DOS_BASED_FILE_SYSTEM 1
+#endif
+
+#define IS_DIR_SEPARATOR(c)    ((c) == '/' || (c) == '\\')
+/* Note that IS_ABSOLUTE_PATH accepts d:foo as well, although it is
+   only semi-absolute.  This is because the users of IS_ABSOLUTE_PATH
+   want to know whether to prepend the current working directory to
+   a file name, which should not be done with a name like d:foo.  */
+#define IS_ABSOLUTE_PATH(f)    (IS_DIR_SEPARATOR((f)[0]) || (((f)[0]) && ((f)[1] == ':')))
+
+#else  /* not DOSish */
+
+#define IS_DIR_SEPARATOR(c)    ((c) == '/')
+#define IS_ABSOLUTE_PATH(f)    (IS_DIR_SEPARATOR((f)[0]))
+
+#endif /* not DOSish */
+
+extern int filename_cmp (const char *s1, const char *s2);
+#define FILENAME_CMP(s1, s2)   filename_cmp(s1, s2)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* FILENAMES_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/function.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/function.h
new file mode 100644 (file)
index 0000000..31d223a
--- /dev/null
@@ -0,0 +1,690 @@
+/* Structure for saving state for a nested function.
+   Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+   1999, 2000, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+   Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_FUNCTION_H
+#define GCC_FUNCTION_H
+
+#include "tree.h"
+#include "hashtab.h"
+#include "varray.h"
+
+/* Stack of pending (incomplete) sequences saved by `start_sequence'.
+   Each element describes one pending sequence.
+   The main insn-chain is saved in the last element of the chain,
+   unless the chain is empty.  */
+
+struct sequence_stack GTY(())
+{
+  /* First and last insns in the chain of the saved sequence.  */
+  rtx first;
+  rtx last;
+  struct sequence_stack *next;
+};
+\f
+struct emit_status GTY(())
+{
+  /* This is reset to LAST_VIRTUAL_REGISTER + 1 at the start of each function.
+     After rtl generation, it is 1 plus the largest register number used.  */
+  int x_reg_rtx_no;
+
+  /* Lowest label number in current function.  */
+  int x_first_label_num;
+
+  /* The ends of the doubly-linked chain of rtl for the current function.
+     Both are reset to null at the start of rtl generation for the function.
+
+     start_sequence saves both of these on `sequence_stack' and then starts
+     a new, nested sequence of insns.  */
+  rtx x_first_insn;
+  rtx x_last_insn;
+
+  /* Stack of pending (incomplete) sequences saved by `start_sequence'.
+     Each element describes one pending sequence.
+     The main insn-chain is saved in the last element of the chain,
+     unless the chain is empty.  */
+  struct sequence_stack *sequence_stack;
+
+  /* INSN_UID for next insn emitted.
+     Reset to 1 for each function compiled.  */
+  int x_cur_insn_uid;
+
+  /* Location the last line-number NOTE emitted.
+     This is used to avoid generating duplicates.  */
+  location_t x_last_location;
+
+  /* The length of the regno_pointer_align, regno_decl, and x_regno_reg_rtx
+     vectors.  Since these vectors are needed during the expansion phase when
+     the total number of registers in the function is not yet known, the
+     vectors are copied and made bigger when necessary.  */
+  int regno_pointer_align_length;
+
+  /* Indexed by pseudo register number, if nonzero gives the known alignment
+     for that pseudo (if REG_POINTER is set in x_regno_reg_rtx).
+     Allocated in parallel with x_regno_reg_rtx.  */
+  unsigned char * GTY((skip)) regno_pointer_align;
+};
+
+
+/* Indexed by pseudo register number, gives the rtx for that pseudo.
+   Allocated in parallel with regno_pointer_align.  
+   FIXME: We could put it into emit_status struct, but gengtype is not able to deal
+   with length attribute nested in top level structures.  */
+
+extern GTY ((length ("crtl->emit.x_reg_rtx_no"))) rtx * regno_reg_rtx;
+
+/* For backward compatibility... eventually these should all go away.  */
+#define reg_rtx_no (crtl->emit.x_reg_rtx_no)
+#define seq_stack (crtl->emit.sequence_stack)
+
+#define REGNO_POINTER_ALIGN(REGNO) (crtl->emit.regno_pointer_align[REGNO])
+
+struct expr_status GTY(())
+{
+  /* Number of units that we should eventually pop off the stack.
+     These are the arguments to function calls that have already returned.  */
+  int x_pending_stack_adjust;
+
+  /* Under some ABIs, it is the caller's responsibility to pop arguments
+     pushed for function calls.  A naive implementation would simply pop
+     the arguments immediately after each call.  However, if several
+     function calls are made in a row, it is typically cheaper to pop
+     all the arguments after all of the calls are complete since a
+     single pop instruction can be used.  Therefore, GCC attempts to
+     defer popping the arguments until absolutely necessary.  (For
+     example, at the end of a conditional, the arguments must be popped,
+     since code outside the conditional won't know whether or not the
+     arguments need to be popped.)
+
+     When INHIBIT_DEFER_POP is nonzero, however, the compiler does not
+     attempt to defer pops.  Instead, the stack is popped immediately
+     after each call.  Rather then setting this variable directly, use
+     NO_DEFER_POP and OK_DEFER_POP.  */
+  int x_inhibit_defer_pop;
+
+  /* If PREFERRED_STACK_BOUNDARY and PUSH_ROUNDING are defined, the stack
+     boundary can be momentarily unaligned while pushing the arguments.
+     Record the delta since last aligned boundary here in order to get
+     stack alignment in the nested function calls working right.  */
+  int x_stack_pointer_delta;
+
+  /* Nonzero means __builtin_saveregs has already been done in this function.
+     The value is the pseudoreg containing the value __builtin_saveregs
+     returned.  */
+  rtx x_saveregs_value;
+
+  /* Similarly for __builtin_apply_args.  */
+  rtx x_apply_args_value;
+
+  /* List of labels that must never be deleted.  */
+  rtx x_forced_labels;
+};
+
+typedef struct call_site_record *call_site_record;
+DEF_VEC_P(call_site_record);
+DEF_VEC_ALLOC_P(call_site_record, gc);
+
+/* RTL representation of exception handling.  */
+struct rtl_eh GTY(())
+{
+  rtx filter;
+  rtx exc_ptr;
+
+  int built_landing_pads;
+
+  rtx ehr_stackadj;
+  rtx ehr_handler;
+  rtx ehr_label;
+
+  rtx sjlj_fc;
+  rtx sjlj_exit_after;
+
+  htab_t GTY ((param_is (struct ehl_map_entry))) exception_handler_label_map;
+
+  VEC(tree,gc) *ttype_data;
+  varray_type ehspec_data;
+  varray_type action_record_data;
+
+  VEC(call_site_record,gc) *call_site_record;
+};
+
+#define pending_stack_adjust (crtl->expr.x_pending_stack_adjust)
+#define inhibit_defer_pop (crtl->expr.x_inhibit_defer_pop)
+#define saveregs_value (crtl->expr.x_saveregs_value)
+#define apply_args_value (crtl->expr.x_apply_args_value)
+#define forced_labels (crtl->expr.x_forced_labels)
+#define stack_pointer_delta (crtl->expr.x_stack_pointer_delta)
+
+struct gimple_df;
+struct temp_slot;
+typedef struct temp_slot *temp_slot_p;
+struct call_site_record;
+
+DEF_VEC_P(temp_slot_p);
+DEF_VEC_ALLOC_P(temp_slot_p,gc);
+struct ipa_opt_pass;
+typedef struct ipa_opt_pass *ipa_opt_pass;
+
+DEF_VEC_P(ipa_opt_pass);
+DEF_VEC_ALLOC_P(ipa_opt_pass,heap);
+
+enum function_frequency {
+  /* This function most likely won't be executed at all.
+     (set only when profile feedback is available or via function attribute). */
+  FUNCTION_FREQUENCY_UNLIKELY_EXECUTED,
+  /* The default value.  */
+  FUNCTION_FREQUENCY_NORMAL,
+  /* Optimize this function hard
+     (set only when profile feedback is available or via function attribute). */
+  FUNCTION_FREQUENCY_HOT
+};
+
+struct varasm_status GTY(())
+{
+  /* If we're using a per-function constant pool, this is it.  */
+  struct rtx_constant_pool *pool;
+
+  /* Number of tree-constants deferred during the expansion of this
+     function.  */
+  unsigned int deferred_constants;
+};
+
+/* Information mainlined about RTL representation of incoming arguments.  */
+struct incoming_args GTY(())
+{
+  /* Number of bytes of args popped by function being compiled on its return.
+     Zero if no bytes are to be popped.
+     May affect compilation of return insn or of function epilogue.  */
+  int pops_args;
+
+  /* If function's args have a fixed size, this is that size, in bytes.
+     Otherwise, it is -1.
+     May affect compilation of return insn or of function epilogue.  */
+  int size;
+
+  /* # bytes the prologue should push and pretend that the caller pushed them.
+     The prologue must do this, but only if parms can be passed in
+     registers.  */
+  int pretend_args_size;
+
+  /* This is the offset from the arg pointer to the place where the first
+     anonymous arg can be found, if there is one.  */
+  rtx arg_offset_rtx;
+
+  /* Quantities of various kinds of registers
+     used for the current function's args.  */
+  CUMULATIVE_ARGS info;
+
+  /* The arg pointer hard register, or the pseudo into which it was copied.  */
+  rtx internal_arg_pointer;
+};
+
+/* Data for function partitioning.  */
+struct function_subsections GTY(())
+{
+  /* Assembly labels for the hot and cold text sections, to
+     be used by debugger functions for determining the size of text
+     sections.  */
+
+  const char *hot_section_label;
+  const char *cold_section_label;
+  const char *hot_section_end_label;
+  const char *cold_section_end_label;
+
+  /* String to be used for name of cold text sections, via
+     targetm.asm_out.named_section.  */
+
+  const char *unlikely_text_section_name;
+};
+
+/* Datastructures maintained for currently processed function in RTL form.  */
+struct rtl_data GTY(())
+{
+  struct expr_status expr;
+  struct emit_status emit;
+  struct varasm_status varasm;
+  struct incoming_args args;
+  struct function_subsections subsections;
+  struct rtl_eh eh;
+
+  /* For function.c  */
+
+  /* # of bytes of outgoing arguments.  If ACCUMULATE_OUTGOING_ARGS is
+     defined, the needed space is pushed by the prologue.  */
+  int outgoing_args_size;
+
+  /* If nonzero, an RTL expression for the location at which the current
+     function returns its result.  If the current function returns its
+     result in a register, current_function_return_rtx will always be
+     the hard register containing the result.  */
+  rtx return_rtx;
+
+  /* Opaque pointer used by get_hard_reg_initial_val and
+     has_hard_reg_initial_val (see integrate.[hc]).  */
+  struct initial_value_struct *hard_reg_initial_vals;
+
+  /* A variable living at the top of the frame that holds a known value.
+     Used for detecting stack clobbers.  */
+  tree stack_protect_guard;
+
+  /* List (chain of EXPR_LIST) of labels heading the current handlers for
+     nonlocal gotos.  */
+  rtx x_nonlocal_goto_handler_labels;
+
+  /* Label that will go on function epilogue.
+     Jumping to this label serves as a "return" instruction
+     on machines which require execution of the epilogue on all returns.  */
+  rtx x_return_label;
+
+  /* Label that will go on the end of function epilogue.
+     Jumping to this label serves as a "naked return" instruction
+     on machines which require execution of the epilogue on all returns.  */
+  rtx x_naked_return_label;
+
+  /* List (chain of EXPR_LISTs) of all stack slots in this function.
+     Made for the sake of unshare_all_rtl.  */
+  rtx x_stack_slot_list;
+
+  /* Place after which to insert the tail_recursion_label if we need one.  */
+  rtx x_stack_check_probe_note;
+
+  /* Location at which to save the argument pointer if it will need to be
+     referenced.  There are two cases where this is done: if nonlocal gotos
+     exist, or if vars stored at an offset from the argument pointer will be
+     needed by inner routines.  */
+  rtx x_arg_pointer_save_area;
+
+  /* Dynamic Realign Argument Pointer used for realigning stack.  */
+  rtx drap_reg;
+
+  /* Offset to end of allocated area of stack frame.
+     If stack grows down, this is the address of the last stack slot allocated.
+     If stack grows up, this is the address for the next slot.  */
+  HOST_WIDE_INT x_frame_offset;
+
+  /* Insn after which register parms and SAVE_EXPRs are born, if nonopt.  */
+  rtx x_parm_birth_insn;
+
+  /* List of all used temporaries allocated, by level.  */
+  VEC(temp_slot_p,gc) *x_used_temp_slots;
+
+  /* List of available temp slots.  */
+  struct temp_slot *x_avail_temp_slots;
+
+  /* Current nesting level for temporaries.  */
+  int x_temp_slot_level;
+
+  /* The largest alignment needed on the stack, including requirement
+     for outgoing stack alignment.  */
+  unsigned int stack_alignment_needed;
+
+  /* Preferred alignment of the end of stack frame, which is preferred
+     to call other functions.  */
+  unsigned int preferred_stack_boundary;
+
+  /* The minimum alignment of parameter stack.  */
+  unsigned int parm_stack_boundary;
+
+  /* The largest alignment of slot allocated on the stack.  */
+  unsigned int max_used_stack_slot_alignment;
+
+  /* The stack alignment estimated before reload, with consideration of
+     following factors:
+     1. Alignment of local stack variables (max_used_stack_slot_alignment)
+     2. Alignment requirement to call other functions 
+        (preferred_stack_boundary)
+     3. Alignment of non-local stack variables but might be spilled in
+        local stack.  */
+  unsigned int stack_alignment_estimated;
+
+  /* For reorg.  */
+
+  /* If some insns can be deferred to the delay slots of the epilogue, the
+     delay list for them is recorded here.  */
+  rtx epilogue_delay_list;
+
+  /* Nonzero if function being compiled called builtin_return_addr or
+     builtin_frame_address with nonzero count.  */
+  bool accesses_prior_frames;
+
+  /* Nonzero if the function calls __builtin_eh_return.  */
+  bool calls_eh_return;
+
+  /* Nonzero if function saves all registers, e.g. if it has a nonlocal
+     label that can reach the exit block via non-exceptional paths. */
+  bool saves_all_registers;
+
+  /* Nonzero if function being compiled has nonlocal gotos to parent
+     function.  */
+  bool has_nonlocal_goto;
+  
+  /* Nonzero if function being compiled has an asm statement.  */
+  bool has_asm_statement;
+
+  /* This bit is used by the exception handling logic.  It is set if all
+     calls (if any) are sibling calls.  Such functions do not have to
+     have EH tables generated, as they cannot throw.  A call to such a
+     function, however, should be treated as throwing if any of its callees
+     can throw.  */
+  bool all_throwers_are_sibcalls;
+
+  /* Nonzero if stack limit checking should be enabled in the current
+     function.  */
+  bool limit_stack;
+
+  /* Nonzero if profiling code should be generated.  */
+  bool profile;
+
+  /* Nonzero if the current function uses the constant pool.  */
+  bool uses_const_pool;
+
+  /* Nonzero if the current function uses pic_offset_table_rtx.  */
+  bool uses_pic_offset_table;
+
+  /* Nonzero if the current function needs an lsda for exception handling.  */
+  bool uses_eh_lsda;
+
+  /* Set when the tail call has been produced.  */
+  bool tail_call_emit;
+
+  /* Nonzero if code to initialize arg_pointer_save_area has been emitted.  */
+  bool arg_pointer_save_area_init;
+
+  /* Nonzero if current function must be given a frame pointer.
+     Set in global.c if anything is allocated on the stack there.  */
+  bool frame_pointer_needed;
+
+  /* When set, expand should optimize for speed.  */
+  bool maybe_hot_insn_p;
+
+  /* Nonzero if function stack realignment is needed.  This flag may be
+     set twice: before and after reload.  It is set before reload wrt
+     stack alignment estimation before reload.  It will be changed after
+     reload if by then criteria of stack realignment is different.
+     The value set after reload is the accurate one and is finalized.  */
+  bool stack_realign_needed;
+
+  /* Nonzero if function stack realignment is tried.  This flag is set
+     only once before reload.  It affects register elimination.  This
+     is used to generate DWARF debug info for stack variables.  */
+  bool stack_realign_tried;
+
+  /* Nonzero if function being compiled needs dynamic realigned
+     argument pointer (drap) if stack needs realigning.  */
+  bool need_drap;
+
+  /* Nonzero if function stack realignment estimation is done, namely
+     stack_realign_needed flag has been set before reload wrt estimated
+     stack alignment info.  */
+  bool stack_realign_processed;
+
+  /* Nonzero if function stack realignment has been finalized, namely
+     stack_realign_needed flag has been set and finalized after reload.  */
+  bool stack_realign_finalized;
+
+  /* True if dbr_schedule has already been called for this function.  */
+  bool dbr_scheduled_p;
+};
+
+#define return_label (crtl->x_return_label)
+#define naked_return_label (crtl->x_naked_return_label)
+#define stack_slot_list (crtl->x_stack_slot_list)
+#define parm_birth_insn (crtl->x_parm_birth_insn)
+#define frame_offset (crtl->x_frame_offset)
+#define stack_check_probe_note (crtl->x_stack_check_probe_note)
+#define arg_pointer_save_area (crtl->x_arg_pointer_save_area)
+#define used_temp_slots (crtl->x_used_temp_slots)
+#define avail_temp_slots (crtl->x_avail_temp_slots)
+#define temp_slot_level (crtl->x_temp_slot_level)
+#define nonlocal_goto_handler_labels (crtl->x_nonlocal_goto_handler_labels)
+#define frame_pointer_needed (crtl->frame_pointer_needed)
+#define stack_realign_fp (crtl->stack_realign_needed && !crtl->need_drap)
+#define stack_realign_drap (crtl->stack_realign_needed && crtl->need_drap)
+
+extern GTY(()) struct rtl_data x_rtl;
+
+/* Accessor to RTL datastructures.  We keep them statically allocated now since
+   we never keep multiple functions.  For threaded compiler we might however
+   want to do differently.  */
+#define crtl (&x_rtl)
+
+/* This structure can save all the important global and static variables
+   describing the status of the current function.  */
+
+struct function GTY(())
+{
+  struct eh_status *eh;
+
+  /* The control flow graph for this function.  */
+  struct control_flow_graph *cfg;
+
+  /* GIMPLE body for this function.  */
+  struct gimple_seq_d *gimple_body;
+
+  /* SSA and dataflow information.  */
+  struct gimple_df *gimple_df;
+
+  /* The loops in this function.  */
+  struct loops *x_current_loops;
+
+  /* Value histograms attached to particular statements.  */
+  htab_t GTY((skip)) value_histograms;
+
+  /* For function.c.  */
+
+  /* Points to the FUNCTION_DECL of this function.  */
+  tree decl;
+
+  /* A PARM_DECL that should contain the static chain for this function.
+     It will be initialized at the beginning of the function.  */
+  tree static_chain_decl;
+
+  /* An expression that contains the non-local goto save area.  The first
+     word is the saved frame pointer and the second is the saved stack 
+     pointer.  */
+  tree nonlocal_goto_save_area;
+
+  /* List of function local variables, functions, types and constants.  */
+  tree local_decls;
+
+  /* For md files.  */
+
+  /* tm.h can use this to store whatever it likes.  */
+  struct machine_function * GTY ((maybe_undef)) machine;
+
+  /* Language-specific code can use this to store whatever it likes.  */
+  struct language_function * language;
+
+  /* Used types hash table.  */
+  htab_t GTY ((param_is (union tree_node))) used_types_hash;
+
+  /* Last statement uid.  */
+  int last_stmt_uid;
+
+  /* Function sequence number for profiling, debugging, etc.  */
+  int funcdef_no;
+
+  /* Line number of the start of the function for debugging purposes.  */
+  location_t function_start_locus;
+
+  /* Line number of the end of the function.  */
+  location_t function_end_locus;
+
+  /* Properties used by the pass manager.  */
+  unsigned int curr_properties;
+  unsigned int last_verified;
+  /* Interprocedural passes scheduled to have their transform functions
+     applied next time we execute local pass on them.  We maintain it
+     per-function in order to allow IPA passes to introduce new functions.  */
+  VEC(ipa_opt_pass,heap) * GTY((skip)) ipa_transforms_to_apply;
+
+  /* Collected bit flags.  */
+
+  /* Number of units of general registers that need saving in stdarg
+     function.  What unit is depends on the backend, either it is number
+     of bytes, or it can be number of registers.  */
+  unsigned int va_list_gpr_size : 8;
+
+  /* Number of units of floating point registers that need saving in stdarg
+     function.  */
+  unsigned int va_list_fpr_size : 8;
+
+
+  /* How commonly executed the function is.  Initialized during branch
+     probabilities pass.  */
+  ENUM_BITFIELD (function_frequency) function_frequency : 2;
+
+  /* Nonzero if function being compiled can call setjmp.  */
+  unsigned int calls_setjmp : 1;
+
+  /* Nonzero if function being compiled can call alloca,
+     either as a subroutine or builtin.  */
+  unsigned int calls_alloca : 1;
+
+  /* Nonzero if function being compiled receives nonlocal gotos
+     from nested functions.  */
+  unsigned int has_nonlocal_label : 1;
+
+  /* Nonzero if current function uses stdarg.h or equivalent.  */
+  unsigned int stdarg : 1;
+
+  /* Nonzero if the back-end should not keep track of expressions that
+     determine the size of variable-sized objects.  Normally, such
+     expressions are saved away, and then expanded when the next
+     function is started.  For example, if a parameter has a
+     variable-sized type, then the size of the parameter is computed
+     when the function body is entered.  However, some front-ends do
+     not desire this behavior.  */
+  unsigned int dont_save_pending_sizes_p : 1;
+
+  unsigned int after_inlining : 1;
+  unsigned int always_inline_functions_inlined : 1;
+
+  /* Fields below this point are not set for abstract functions; see
+     allocate_struct_function.  */
+
+  /* Nonzero if function being compiled needs to be given an address
+     where the value should be stored.  */
+  unsigned int returns_struct : 1;
+
+  /* Nonzero if function being compiled needs to
+     return the address of where it has put a structure value.  */
+  unsigned int returns_pcc_struct : 1;
+
+  /* Nonzero if pass_tree_profile was run on this function.  */
+  unsigned int after_tree_profile : 1;
+
+  /* Nonzero if this function has local DECL_HARD_REGISTER variables.
+     In this case code motion has to be done more carefully.  */
+  unsigned int has_local_explicit_reg_vars : 1;
+
+  /* Nonzero if the current function is a thunk, i.e., a lightweight
+     function implemented by the output_mi_thunk hook) that just
+     adjusts one of its arguments and forwards to another
+     function.  */
+  unsigned int is_thunk : 1;
+};
+
+/* If va_list_[gf]pr_size is set to this, it means we don't know how
+   many units need to be saved.  */
+#define VA_LIST_MAX_GPR_SIZE   255
+#define VA_LIST_MAX_FPR_SIZE   255
+
+/* The function currently being compiled.  */
+extern GTY(()) struct function *cfun;
+
+/* In order to ensure that cfun is not set directly, we redefine it so
+   that it is not an lvalue.  Rather than assign to cfun, use
+   push_cfun or set_cfun.  */
+#define cfun (cfun + 0)
+
+/* Nonzero if we've already converted virtual regs to hard regs.  */
+extern int virtuals_instantiated;
+
+/* Nonzero if at least one trampoline has been created.  */
+extern int trampolines_created;
+
+/* cfun shouldn't be set directly; use one of these functions instead.  */
+extern void set_cfun (struct function *new_cfun);
+extern void push_cfun (struct function *new_cfun);
+extern void pop_cfun (void);
+extern void instantiate_decl_rtl (rtx x);
+
+/* For backward compatibility... eventually these should all go away.  */
+#define current_function_funcdef_no (cfun->funcdef_no)
+
+#define current_loops (cfun->x_current_loops)
+#define dom_computed (cfun->cfg->x_dom_computed)
+#define n_bbs_in_dom_tree (cfun->cfg->x_n_bbs_in_dom_tree)
+#define VALUE_HISTOGRAMS(fun) (fun)->value_histograms
+
+/* Identify BLOCKs referenced by more than one NOTE_INSN_BLOCK_{BEG,END},
+   and create duplicate blocks.  */
+extern void reorder_blocks (void);
+
+/* Set BLOCK_NUMBER for all the blocks in FN.  */
+extern void number_blocks (tree);
+
+extern void clear_block_marks (tree);
+extern tree blocks_nreverse (tree);
+
+/* Return size needed for stack frame based on slots so far allocated.
+   This size counts from zero.  It is not rounded to STACK_BOUNDARY;
+   the caller may have to do that.  */
+extern HOST_WIDE_INT get_frame_size (void);
+
+/* Issue an error message and return TRUE if frame OFFSET overflows in
+   the signed target pointer arithmetics for function FUNC.  Otherwise
+   return FALSE.  */
+extern bool frame_offset_overflow (HOST_WIDE_INT, tree);
+
+/* A pointer to a function to create target specific, per-function
+   data structures.  */
+extern struct machine_function * (*init_machine_status) (void);
+
+/* Save and restore status information for a nested function.  */
+extern void free_after_parsing (struct function *);
+extern void free_after_compilation (struct function *);
+
+extern void init_varasm_status (void);
+
+#ifdef RTX_CODE
+extern void diddle_return_value (void (*)(rtx, void*), void*);
+extern void clobber_return_register (void);
+#endif
+
+extern rtx get_arg_pointer_save_area (void);
+
+/* Returns the name of the current function.  */
+extern const char *current_function_name (void);
+/* Returns the assembler name (raw, mangled) of the current function.  */
+extern const char *current_function_assembler_name (void);
+
+extern void do_warn_unused_parameter (tree);
+
+extern bool pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode,
+                              tree, bool);
+extern bool reference_callee_copied (CUMULATIVE_ARGS *, enum machine_mode,
+                                    tree, bool);
+
+extern void used_types_insert (tree);
+
+extern int get_next_funcdef_no (void);
+#endif  /* GCC_FUNCTION_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/gcc-plugin.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/gcc-plugin.h
new file mode 100644 (file)
index 0000000..96c867d
--- /dev/null
@@ -0,0 +1,126 @@
+/* Public header file for plugins to include.
+   Copyright (C) 2009 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_PLUGIN_H
+#define GCC_PLUGIN_H
+
+/* Event names.  Keep in sync with plugin_event_name[].  */
+enum plugin_event
+{
+  PLUGIN_PASS_MANAGER_SETUP,    /* To hook into pass manager.  */
+  PLUGIN_FINISH_TYPE,           /* After finishing parsing a type.  */
+  PLUGIN_FINISH_UNIT,           /* Useful for summary processing.  */
+  PLUGIN_CXX_CP_PRE_GENERICIZE, /* Allows to see low level AST in C++ FE.  */
+  PLUGIN_FINISH,                /* Called before GCC exits.  */
+  PLUGIN_INFO,                  /* Information about the plugin */
+  PLUGIN_EVENT_LAST             /* Dummy event used for indexing callback
+                                   array.  */
+};
+
+extern const char *plugin_event_name[];
+
+struct plugin_argument
+{
+  char *key;    /* key of the argument.  */
+  char *value;  /* value is optional and can be NULL.  */
+};
+
+enum pass_positioning_ops
+{
+  PASS_POS_INSERT_AFTER,  /* Insert after the reference pass.  */
+  PASS_POS_INSERT_BEFORE, /* Insert before the reference pass.  */
+  PASS_POS_REPLACE        /* Replace the reference pass.  */
+};
+
+struct plugin_pass
+{
+  struct opt_pass *pass;            /* New pass provided by the plugin.  */
+  const char *reference_pass_name;  /* Name of the reference pass for hooking
+                                       up the new pass.  */
+  int ref_pass_instance_number;     /* Insert the pass at the specified
+                                       instance number of the reference pass.
+                                       Do it for every instance if it is 0.  */
+  enum pass_positioning_ops pos_op; /* how to insert the new pass.  */
+};
+
+/* Additional information about the plugin. Used by --help and --version. */
+
+struct plugin_info
+{
+  const char *version;
+  const char *help;
+};
+
+/* Represents the gcc version. Used to avoid using an incompatible plugin. */
+
+struct plugin_gcc_version
+{
+  const char *basever;
+  const char *datestamp;
+  const char *devphase;
+  const char *revision;
+  const char *configuration_arguments;
+};
+
+/* The default version check. Compares every field in VERSION. */
+
+extern bool plugin_default_version_check (struct plugin_gcc_version *,
+                                         struct plugin_gcc_version *);
+
+/* Function type for the plugin initialization routine. Each plugin module
+   should define this as an externally-visible function with name
+   "plugin_init."
+
+   PLUGIN_NAME - name of the plugin (useful for error reporting)
+   VERSION     - the plugin_gcc_version symbol of the plugin itself.
+   ARGC        - the size of the ARGV array
+   ARGV        - an array of key-value argument pair
+
+   Returns 0 if initialization finishes successfully.  */
+
+typedef int (*plugin_init_func) (const char *plugin_name,
+                                 struct plugin_gcc_version *version,
+                                 int argc, struct plugin_argument *argv);
+
+/* Declaration for "plugin_init" function so that it doesn't need to be
+   duplicated in every plugin.  */
+extern int plugin_init (const char *, struct plugin_gcc_version *version,
+                       int, struct plugin_argument *);
+
+/* Function type for a plugin callback routine.
+
+   GCC_DATA  - event-specific data provided by GCC
+   USER_DATA - plugin-specific data provided by the plugin  */
+
+typedef void (*plugin_callback_func) (void *gcc_data, void *user_data);
+
+/* Called from the plugin's initialization code. Register a single callback.
+   This function can be called multiple times.
+
+   PLUGIN_NAME - display name for this plugin
+   EVENT       - which event the callback is for
+   CALLBACK    - the callback to be called at the event
+   USER_DATA   - plugin-provided data   */
+
+extern void register_callback (const char *plugin_name,
+                               enum plugin_event event,
+                               plugin_callback_func callback,
+                               void *user_data);
+
+#endif /* GCC_PLUGIN_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/ggc.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/ggc.h
new file mode 100644 (file)
index 0000000..5b2743b
--- /dev/null
@@ -0,0 +1,326 @@
+/* Garbage collection for the GNU compiler.
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
+   Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_GGC_H
+#define GCC_GGC_H
+#include "statistics.h"
+
+/* Symbols are marked with `ggc' for `gcc gc' so as not to interfere with
+   an external gc library that might be linked in.  */
+
+/* Constants for general use.  */
+extern const char empty_string[];      /* empty string */
+extern const char digit_vector[];      /* "0" .. "9" */
+#define digit_string(d) (digit_vector + ((d) * 2))
+
+/* Internal functions and data structures used by the GTY
+   machinery.  */
+
+/* The first parameter is a pointer to a pointer, the second a cookie.  */
+typedef void (*gt_pointer_operator) (void *, void *);
+
+#include "gtype-desc.h"
+
+/* One of these applies its third parameter (with cookie in the fourth
+   parameter) to each pointer in the object pointed to by the first
+   parameter, using the second parameter.  */
+typedef void (*gt_note_pointers) (void *, void *, gt_pointer_operator,
+                                 void *);
+
+/* One of these is called before objects are re-ordered in memory.
+   The first parameter is the original object, the second is the
+   subobject that has had its pointers reordered, the third parameter
+   can compute the new values of a pointer when given the cookie in
+   the fourth parameter.  */
+typedef void (*gt_handle_reorder) (void *, void *, gt_pointer_operator,
+                                  void *);
+
+/* Used by the gt_pch_n_* routines.  Register an object in the hash table.  */
+extern int gt_pch_note_object (void *, void *, gt_note_pointers,
+                              enum gt_types_enum);
+
+/* Used by the gt_pch_n_* routines.  Register that an object has a reorder
+   function.  */
+extern void gt_pch_note_reorder (void *, void *, gt_handle_reorder);
+
+/* Mark the object in the first parameter and anything it points to.  */
+typedef void (*gt_pointer_walker) (void *);
+
+/* Structures for the easy way to mark roots.
+   In an array, terminated by having base == NULL.  */
+struct ggc_root_tab {
+  void *base;
+  size_t nelt;
+  size_t stride;
+  gt_pointer_walker cb;
+  gt_pointer_walker pchw;
+};
+#define LAST_GGC_ROOT_TAB { NULL, 0, 0, NULL, NULL }
+/* Pointers to arrays of ggc_root_tab, terminated by NULL.  */
+extern const struct ggc_root_tab * const gt_ggc_rtab[];
+extern const struct ggc_root_tab * const gt_ggc_deletable_rtab[];
+extern const struct ggc_root_tab * const gt_pch_cache_rtab[];
+extern const struct ggc_root_tab * const gt_pch_scalar_rtab[];
+
+/* Structure for hash table cache marking.  */
+struct htab;
+struct ggc_cache_tab {
+  struct htab * *base;
+  size_t nelt;
+  size_t stride;
+  gt_pointer_walker cb;
+  gt_pointer_walker pchw;
+  int (*marked_p) (const void *);
+};
+#define LAST_GGC_CACHE_TAB { NULL, 0, 0, NULL, NULL, NULL }
+/* Pointers to arrays of ggc_cache_tab, terminated by NULL.  */
+extern const struct ggc_cache_tab * const gt_ggc_cache_rtab[];
+
+/* If EXPR is not NULL and previously unmarked, mark it and evaluate
+   to true.  Otherwise evaluate to false.  */
+#define ggc_test_and_set_mark(EXPR) \
+  ((EXPR) != NULL && ((void *) (EXPR)) != (void *) 1 && ! ggc_set_mark (EXPR))
+
+#define ggc_mark(EXPR)                         \
+  do {                                         \
+    const void *const a__ = (EXPR);            \
+    if (a__ != NULL && a__ != (void *) 1)      \
+      ggc_set_mark (a__);                      \
+  } while (0)
+
+/* Actually set the mark on a particular region of memory, but don't
+   follow pointers.  This function is called by ggc_mark_*.  It
+   returns zero if the object was not previously marked; nonzero if
+   the object was already marked, or if, for any other reason,
+   pointers in this data structure should not be traversed.  */
+extern int ggc_set_mark        (const void *);
+
+/* Return 1 if P has been marked, zero otherwise.
+   P must have been allocated by the GC allocator; it mustn't point to
+   static objects, stack variables, or memory allocated with malloc.  */
+extern int ggc_marked_p        (const void *);
+
+/* Mark the entries in the string pool.  */
+extern void ggc_mark_stringpool        (void);
+
+/* Purge the entries in the string pool.  */
+extern void ggc_purge_stringpool (void);
+
+/* Call ggc_set_mark on all the roots.  */
+
+extern void ggc_mark_roots (void);
+
+/* Save and restore the string pool entries for PCH.  */
+
+extern void gt_pch_save_stringpool (void);
+extern void gt_pch_fixup_stringpool (void);
+extern void gt_pch_restore_stringpool (void);
+
+/* PCH and GGC handling for strings, mostly trivial.  */
+
+extern void gt_pch_p_S (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_n_S (const void *);
+extern void gt_ggc_m_S (const void *);
+
+/* Initialize the string pool.  */
+extern void init_stringpool (void);
+
+/* A GC implementation must provide these functions.  They are internal
+   to the GC system.  */
+
+/* Forward declare the zone structure.  Only ggc_zone implements this.  */
+struct alloc_zone;
+
+/* Initialize the garbage collector.  */
+extern void init_ggc (void);
+
+/* Start a new GGC zone.  */
+extern struct alloc_zone *new_ggc_zone (const char *);
+
+/* Free a complete GGC zone, destroying everything in it.  */
+extern void destroy_ggc_zone (struct alloc_zone *);
+
+struct ggc_pch_data;
+
+/* Return a new ggc_pch_data structure.  */
+extern struct ggc_pch_data *init_ggc_pch (void);
+
+/* The second parameter and third parameters give the address and size
+   of an object.  Update the ggc_pch_data structure with as much of
+   that information as is necessary. The bool argument should be true
+   if the object is a string.  */
+extern void ggc_pch_count_object (struct ggc_pch_data *, void *, size_t, bool,
+                                 enum gt_types_enum);
+
+/* Return the total size of the data to be written to hold all
+   the objects previously passed to ggc_pch_count_object.  */
+extern size_t ggc_pch_total_size (struct ggc_pch_data *);
+
+/* The objects, when read, will most likely be at the address
+   in the second parameter.  */
+extern void ggc_pch_this_base (struct ggc_pch_data *, void *);
+
+/* Assuming that the objects really do end up at the address
+   passed to ggc_pch_this_base, return the address of this object.
+   The bool argument should be true if the object is a string.  */
+extern char *ggc_pch_alloc_object (struct ggc_pch_data *, void *, size_t, bool,
+                                  enum gt_types_enum);
+
+/* Write out any initial information required.  */
+extern void ggc_pch_prepare_write (struct ggc_pch_data *, FILE *);
+/* Write out this object, including any padding.  The last argument should be
+   true if the object is a string.  */
+extern void ggc_pch_write_object (struct ggc_pch_data *, FILE *, void *,
+                                 void *, size_t, bool);
+/* All objects have been written, write out any final information
+   required.  */
+extern void ggc_pch_finish (struct ggc_pch_data *, FILE *);
+
+/* A PCH file has just been read in at the address specified second
+   parameter.  Set up the GC implementation for the new objects.  */
+extern void ggc_pch_read (FILE *, void *);
+
+\f
+/* Allocation.  */
+
+/* When set, ggc_collect will do collection.  */
+extern bool ggc_force_collect;
+
+/* When true, identifier nodes are considered as GC roots.  When
+   false, identifier nodes are treated like any other GC-allocated
+   object, and the identifier hash table is treated as a weak
+   hash.  */
+extern bool ggc_protect_identifiers;
+
+/* The internal primitive.  */
+extern void *ggc_alloc_stat (size_t MEM_STAT_DECL);
+#define ggc_alloc(s) ggc_alloc_stat (s MEM_STAT_INFO)
+/* Allocate an object of the specified type and size.  */
+extern void *ggc_alloc_typed_stat (enum gt_types_enum, size_t MEM_STAT_DECL);
+#define ggc_alloc_typed(s,z) ggc_alloc_typed_stat (s,z MEM_STAT_INFO)
+/* Like ggc_alloc, but allocates cleared memory.  */
+extern void *ggc_alloc_cleared_stat (size_t MEM_STAT_DECL);
+#define ggc_alloc_cleared(s) ggc_alloc_cleared_stat (s MEM_STAT_INFO)
+/* Resize a block.  */
+extern void *ggc_realloc_stat (void *, size_t MEM_STAT_DECL);
+#define ggc_realloc(s,z) ggc_realloc_stat (s,z MEM_STAT_INFO)
+/* Like ggc_alloc_cleared, but performs a multiplication.  */
+extern void *ggc_calloc (size_t, size_t);
+/* Free a block.  To be used when known for certain it's not reachable.  */
+extern void ggc_free (void *);
+extern void ggc_record_overhead (size_t, size_t, void * MEM_STAT_DECL);
+extern void ggc_free_overhead (void *);
+extern void ggc_prune_overhead_list (void);
+
+extern void dump_ggc_loc_statistics (bool);
+
+/* Type-safe, C++-friendly versions of ggc_alloc() and gcc_calloc().  */
+#define GGC_NEW(T)             ((T *) ggc_alloc (sizeof (T)))
+#define GGC_CNEW(T)            ((T *) ggc_alloc_cleared (sizeof (T)))
+#define GGC_NEWVEC(T, N)       ((T *) ggc_alloc ((N) * sizeof(T)))
+#define GGC_CNEWVEC(T, N)      ((T *) ggc_alloc_cleared ((N) * sizeof(T)))
+#define GGC_RESIZEVEC(T, P, N)  ((T *) ggc_realloc ((P), (N) * sizeof (T)))
+#define GGC_NEWVAR(T, S)       ((T *) ggc_alloc ((S)))
+#define GGC_CNEWVAR(T, S)      ((T *) ggc_alloc_cleared ((S)))
+#define GGC_RESIZEVAR(T, P, N)  ((T *) ggc_realloc ((P), (N)))
+
+#define ggc_alloc_rtvec(NELT)                                           \
+  ((rtvec) ggc_alloc_zone (sizeof (struct rtvec_def) + ((NELT) - 1)     \
+                          * sizeof (rtx), &rtl_zone))
+
+#define ggc_alloc_tree(LENGTH) ((tree) ggc_alloc_zone (LENGTH, &tree_zone))
+
+#define htab_create_ggc(SIZE, HASH, EQ, DEL) \
+  htab_create_alloc (SIZE, HASH, EQ, DEL, ggc_calloc, ggc_free)
+
+#define splay_tree_new_ggc(COMPARE)                                     \
+  splay_tree_new_with_allocator (COMPARE, NULL, NULL,                   \
+                                 &ggc_splay_alloc, &ggc_splay_dont_free, \
+                                NULL)
+extern void *ggc_splay_alloc (int, void *);
+extern void ggc_splay_dont_free (void *, void *);
+
+/* Allocate a gc-able string, and fill it with LENGTH bytes from CONTENTS.
+   If LENGTH is -1, then CONTENTS is assumed to be a
+   null-terminated string and the memory sized accordingly.  */
+extern const char *ggc_alloc_string (const char *contents, int length);
+
+/* Make a copy of S, in GC-able memory.  */
+#define ggc_strdup(S) ggc_alloc_string((S), -1)
+
+/* Invoke the collector.  Garbage collection occurs only when this
+   function is called, not during allocations.  */
+extern void ggc_collect        (void);
+
+/* Return the number of bytes allocated at the indicated address.  */
+extern size_t ggc_get_size (const void *);
+
+/* Write out all GCed objects to F.  */
+extern void gt_pch_save (FILE *f);
+
+/* Read objects previously saved with gt_pch_save from F.  */
+extern void gt_pch_restore (FILE *f);
+\f
+/* Statistics.  */
+
+/* This structure contains the statistics common to all collectors.
+   Particular collectors can extend this structure.  */
+typedef struct ggc_statistics
+{
+  /* At present, we don't really gather any interesting statistics.  */
+  int unused;
+} ggc_statistics;
+
+/* Used by the various collectors to gather and print statistics that
+   do not depend on the collector in use.  */
+extern void ggc_print_common_statistics (FILE *, ggc_statistics *);
+
+/* Print allocation statistics.  */
+extern void ggc_print_statistics (void);
+extern void stringpool_statistics (void);
+
+/* Heuristics.  */
+extern int ggc_min_expand_heuristic (void);
+extern int ggc_min_heapsize_heuristic (void);
+extern void init_ggc_heuristics (void);
+
+/* Zone collection.  */
+#if defined (GGC_ZONE) && !defined (GENERATOR_FILE)
+
+/* For regular rtl allocations.  */
+extern struct alloc_zone rtl_zone;
+/* For regular tree allocations.  */
+extern struct alloc_zone tree_zone;
+/* For IDENTIFIER_NODE allocations.  */
+extern struct alloc_zone tree_id_zone;
+
+/* Allocate an object into the specified allocation zone.  */
+extern void *ggc_alloc_zone_stat (size_t, struct alloc_zone * MEM_STAT_DECL);
+# define ggc_alloc_zone(s,z) ggc_alloc_zone_stat (s,z MEM_STAT_INFO)
+# define ggc_alloc_zone_pass_stat(s,z) ggc_alloc_zone_stat (s,z PASS_MEM_STAT)
+#else
+
+# define ggc_alloc_zone(s, z) ggc_alloc (s)
+# define ggc_alloc_zone_pass_stat(s, z) ggc_alloc_stat (s PASS_MEM_STAT)
+
+#endif
+
+#endif
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/gimple.def b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/gimple.def
new file mode 100644 (file)
index 0000000..23eaae2
--- /dev/null
@@ -0,0 +1,357 @@
+/* This file contains the definitions of the GIMPLE IR tuples used in GCC.
+
+   Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+   Contributed by Aldy Hernandez <aldyh@redhat.com>
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* The format of this file is
+   DEFGSCODE(GIMPLE_symbol, printable name, structure).
+
+   Where symbol is the enumeration name without the ``GIMPLE_''.
+   The argument STRUCTURE is used to compute offsets into each of the
+   tuple structures that contain operands.  Since vector operands
+   are at different offsets depending on the particular structure
+   used, these offsets are computed at compile time for efficient
+   lookup at runtime.  See gimple_ops().
+
+   If a code does not use operand vectors, STRUCTURE should be NULL.  */
+
+/* Error marker.  This is used in similar ways as ERROR_MARK in tree.def.  */
+DEFGSCODE(GIMPLE_ERROR_MARK, "gimple_error_mark", NULL)
+
+/* IMPORTANT.  Do not rearrange the codes between GIMPLE_COND and
+   GIMPLE_RETURN.  The ordering is exposed by gimple_has_ops calls.
+   These are all the GIMPLE statements with register operands.  */
+
+/* GIMPLE_COND <COND_CODE, OP1, OP2, TRUE_LABEL, FALSE_LABEL>
+   represents the conditional jump:
+   
+   if (OP1 COND_CODE OP2) goto TRUE_LABEL else goto FALSE_LABEL
+
+   COND_CODE is the tree code used as the comparison predicate.  It
+   must be of class tcc_comparison.
+
+   OP1 and OP2 are the operands used in the comparison.  They must be
+   accepted by is_gimple_operand.
+
+   TRUE_LABEL and FALSE_LABEL are the LABEL_DECL nodes used as the
+   jump target for the comparison.  */
+DEFGSCODE(GIMPLE_COND, "gimple_cond", struct gimple_statement_with_ops)
+
+/* GIMPLE_GOTO <TARGET> represents unconditional jumps.
+   TARGET is a LABEL_DECL or an expression node for computed GOTOs.  */
+DEFGSCODE(GIMPLE_GOTO, "gimple_goto", struct gimple_statement_with_ops)
+
+/* GIMPLE_LABEL <LABEL> represents label statements.  LABEL is a
+   LABEL_DECL representing a jump target.  */
+DEFGSCODE(GIMPLE_LABEL, "gimple_label", struct gimple_statement_with_ops)
+
+/* GIMPLE_SWITCH <INDEX, DEFAULT_LAB, LAB1, ..., LABN> represents the
+   multiway branch:
+
+   switch (INDEX)
+   {
+     case LAB1: ...; break;
+     ...
+     case LABN: ...; break;
+     default: ...
+   }
+
+   INDEX is the variable evaluated to decide which label to jump to.
+
+   DEFAULT_LAB, LAB1 ... LABN are the tree nodes representing case labels.
+   They must be CASE_LABEL_EXPR nodes.  */
+DEFGSCODE(GIMPLE_SWITCH, "gimple_switch", struct gimple_statement_with_ops)
+
+/* GIMPLE_CHANGE_DYNAMIC_TYPE indicates a change in the dynamic type
+   of a memory location.  This has no value and generates no
+   executable code.  It is only used for type based alias analysis.
+   This is generated by C++ placement new and it's a direct
+   translation from CHANGE_DYNAMIC_TYPE_EXPR.  The first operand
+   (gimple_cdt_new_type) is the new type.  The second operand
+   (gimple_cdt_location) is the location (pointer) whose type is being
+   changed.  */
+DEFGSCODE(GIMPLE_CHANGE_DYNAMIC_TYPE, "gimple_change_dynamic_type",
+         struct gimple_statement_with_ops)
+
+/* IMPORTANT.
+   
+   Do not rearrange the codes between GIMPLE_ASSIGN and GIMPLE_RETURN.
+   It's exposed by GIMPLE_RANGE_CHECK calls. These are all the GIMPLE
+   statements with memory and register operands.  */
+
+/* GIMPLE_ASSIGN <SUBCODE, LHS, RHS1[, RHS2]> represents the assignment
+   statement
+
+   LHS = RHS1 SUBCODE RHS2.
+
+   SUBCODE is the tree code for the expression computed by the RHS of the
+   assignment.  It must be one of the tree codes accepted by
+   get_gimple_rhs_class.
+
+   LHS is the operand on the LHS of the assignment.  It must be a tree node
+   accepted by is_gimple_operand.
+
+   RHS1 is the first operand on the RHS of the assignment. It must be a tree
+   node accepted by is_gimple_operand.
+
+   RHS2 is the second operand on the RHS of the assignemnt. It must be a tree
+   node accepted by is_gimple_operand.  This argument exists only if SUBCODE is
+   of class GIMPLE_BINARY_RHS.  */
+DEFGSCODE(GIMPLE_ASSIGN, "gimple_assign",
+         struct gimple_statement_with_memory_ops)
+
+/* GIMPLE_ASM <STRING, I1, ..., IN, O1, ... OM, C1, ..., CP>
+   represents inline assembly statements.
+
+   STRING is the string containing the assembly statements.
+   I1 ... IN are the N input operands.
+   O1 ... OM are the M output operands.
+   C1 ... CP are the P clobber operands.  */
+DEFGSCODE(GIMPLE_ASM, "gimple_asm", struct gimple_statement_asm)
+
+/* GIMPLE_CALL <FN, LHS, ARG1, ..., ARGN[, CHAIN]> represents function
+   calls.
+
+   FN is the callee.  It must be accepted by is_gimple_call_addr.
+
+   LHS is the operand where the return value from FN is stored.  It may
+   be NULL.
+
+   ARG1 ... ARGN are the arguments.  They must all be accepted by
+   is_gimple_operand.
+
+    CHAIN is the optional static chain link for nested functions.  */
+DEFGSCODE(GIMPLE_CALL, "gimple_call",
+         struct gimple_statement_with_memory_ops)
+
+/* GIMPLE_RETURN <RETVAL> represents return statements.
+
+   RETVAL is the value to return or NULL.  If a value is returned it
+   must be accepted by is_gimple_operand.  */
+DEFGSCODE(GIMPLE_RETURN, "gimple_return",
+         struct gimple_statement_with_memory_ops)
+
+/* GIMPLE_BIND <VARS, BLOCK, BODY> represents a lexical scope.
+   VARS is the set of variables declared in that scope.
+   BLOCK is the symbol binding block used for debug information.  
+   BODY is the sequence of statements in the scope.  */
+DEFGSCODE(GIMPLE_BIND, "gimple_bind", NULL)
+
+/* GIMPLE_CATCH <TYPES, HANDLER> represents a typed exception handler.
+   TYPES is the type (or list of types) handled.  HANDLER is the
+   sequence of statements that handle these types.  */
+DEFGSCODE(GIMPLE_CATCH, "gimple_catch", NULL)
+
+/* GIMPLE_EH_FILTER <TYPES, FAILURE> represents an exception
+   specification.  TYPES is a list of allowed types and FAILURE is the
+   sequence of statements to execute on failure.  */
+DEFGSCODE(GIMPLE_EH_FILTER, "gimple_eh_filter", NULL)
+
+/* GIMPLE_PHI <RESULT, ARG1, ..., ARGN> represents the PHI node
+
+   RESULT = PHI <ARG1, ..., ARGN>
+
+   RESULT is the SSA name created by this PHI node.
+
+   ARG1 ... ARGN are the arguments to the PHI node.  N must be
+   exactly the same as the number of incoming edges to the basic block
+   holding the PHI node.  Every argument is either an SSA name or a
+   tree node of class tcc_constant.  */
+DEFGSCODE(GIMPLE_PHI, "gimple_phi", NULL)
+
+/* GIMPLE_RESX <REGION> resumes execution after an exception.
+   REGION is the region number being left.  */
+DEFGSCODE(GIMPLE_RESX, "gimple_resx", NULL)
+
+/* GIMPLE_TRY <TRY_KIND, EVAL, CLEANUP>
+   represents a try/catch or a try/finally statement.
+
+   TRY_KIND is either GIMPLE_TRY_CATCH or GIMPLE_TRY_FINALLY.
+
+   EVAL is the sequence of statements to execute on entry to GIMPLE_TRY.
+
+   CLEANUP is the sequence of statements to execute according to
+   TRY_KIND.  If TRY_KIND is GIMPLE_TRY_CATCH, CLEANUP is only exected
+   if an exception is thrown during execution of EVAL.  If TRY_KIND is
+   GIMPLE_TRY_FINALLY, CLEANUP is always executed after executing EVAL
+   (regardless of whether EVAL finished normally, or jumped out or an
+   exception was thrown).  */
+DEFGSCODE(GIMPLE_TRY, "gimple_try", NULL)
+
+/* GIMPLE_NOP represents the "do nothing" statement.  */
+DEFGSCODE(GIMPLE_NOP, "gimple_nop", NULL)
+
+
+/* IMPORTANT.
+   
+   Do not rearrange any of the GIMPLE_OMP_* codes.  This ordering is
+   exposed by the range check in gimple_omp_subcode().  */
+
+
+/* Tuples used for lowering of OMP_ATOMIC.  Although the form of the OMP_ATOMIC
+   expression is very simple (just in form mem op= expr), various implicit
+   conversions may cause the expression to become more complex, so that it does
+   not fit the gimple grammar very well.  To overcome this problem, OMP_ATOMIC
+   is rewritten as a sequence of two codes in gimplification:
+
+   GIMPLE_OMP_LOAD (tmp, mem)
+   val = some computations involving tmp;
+   GIMPLE_OMP_STORE (val).  */
+DEFGSCODE(GIMPLE_OMP_ATOMIC_LOAD, "gimple_omp_atomic_load", NULL)
+DEFGSCODE(GIMPLE_OMP_ATOMIC_STORE, "gimple_omp_atomic_store", NULL)
+
+/* GIMPLE_OMP_CONTINUE marks the location of the loop or sections
+   iteration in partially lowered OpenMP code.  */
+DEFGSCODE(GIMPLE_OMP_CONTINUE, "gimple_omp_continue", NULL)
+
+/* GIMPLE_OMP_CRITICAL <NAME, BODY> represents
+
+   #pragma omp critical [name]
+
+   NAME is the name given to the critical section.
+   BODY is the sequence of statements that are inside the critical section.  */
+DEFGSCODE(GIMPLE_OMP_CRITICAL, "gimple_omp_critical", NULL)
+
+/* GIMPLE_OMP_FOR <BODY, CLAUSES, INDEX, INITIAL, FINAL, COND, INCR, PRE_BODY>
+   represents
+
+   PRE_BODY
+   #pragma omp for [clause1 ... clauseN]
+   for (INDEX = INITIAL; INDEX COND FINAL; INDEX {+=,-=} INCR)
+   BODY
+
+   BODY is the loop body.
+
+   CLAUSES is the list of clauses.
+
+   INDEX must be an integer or pointer variable, which is implicitly thread
+   private.  It must be accepted by is_gimple_operand.
+
+   INITIAL is the initial value given to INDEX. It must be
+   accepted by is_gimple_operand.
+
+   FINAL is the final value that INDEX should take. It must
+   be accepted by is_gimple_operand.
+
+   COND is the condition code for the controlling predicate.  It must
+   be one of { <, >, <=, >= }
+
+   INCR is the loop index increment.  It must be tree node of type
+   tcc_constant.
+
+   PRE_BODY is a landing pad filled by the gimplifier with things from
+   INIT, COND, and INCR that are technically part of the OMP_FOR
+   structured block, but are evaluated before the loop body begins.
+
+   INITIAL, FINAL and INCR are required to be loop invariant integer
+   expressions that are evaluated without any synchronization.
+   The evaluation order, frequency of evaluation and side-effects are
+   unspecified by the standard.  */
+DEFGSCODE(GIMPLE_OMP_FOR, "gimple_omp_for", NULL)
+
+/* GIMPLE_OMP_MASTER <BODY> represents #pragma omp master.
+   BODY is the sequence of statements to execute in the master section.  */
+DEFGSCODE(GIMPLE_OMP_MASTER, "gimple_omp_master", NULL)
+
+/* GIMPLE_OMP_ORDERED <BODY> represents #pragma omp ordered.
+   BODY is the sequence of statements to execute in the ordered section.  */
+DEFGSCODE(GIMPLE_OMP_ORDERED, "gimple_omp_ordered", NULL)
+
+/* GIMPLE_OMP_PARALLEL <BODY, CLAUSES, CHILD_FN, DATA_ARG> represents
+
+   #pragma omp parallel [CLAUSES]
+   BODY
+
+   BODY is a the sequence of statements to be executed by all threads.
+
+   CLAUSES is a TREE_LIST node with all the clauses.
+
+   CHILD_FN is set when outlining the body of the parallel region.
+   All the statements in BODY are moved into this newly created
+   function when converting OMP constructs into low-GIMPLE.
+
+   DATA_ARG is a local variable in the parent function containing data
+   to be shared with CHILD_FN.  This is used to implement all the data
+   sharing clauses.  */
+DEFGSCODE(GIMPLE_OMP_PARALLEL, "gimple_omp_parallel", NULL)
+
+/* GIMPLE_OMP_TASK <BODY, CLAUSES, CHILD_FN, DATA_ARG, COPY_FN,
+                   ARG_SIZE, ARG_ALIGN> represents
+
+   #pragma omp task [CLAUSES]
+   BODY
+
+   BODY is a the sequence of statements to be executed by all threads.
+
+   CLAUSES is a TREE_LIST node with all the clauses.
+
+   CHILD_FN is set when outlining the body of the explicit task region.
+   All the statements in BODY are moved into this newly created
+   function when converting OMP constructs into low-GIMPLE.
+
+   DATA_ARG is a local variable in the parent function containing data
+   to be shared with CHILD_FN.  This is used to implement all the data
+   sharing clauses.
+
+   COPY_FN is set when outlining the firstprivate var initialization.
+   All the needed statements are emitted into the newly created
+   function, or when only memcpy is needed, it is NULL.
+
+   ARG_SIZE and ARG_ALIGN are the size and alignment of the incoming
+   data area allocated by GOMP_task and passed to CHILD_FN.  */
+DEFGSCODE(GIMPLE_OMP_TASK, "gimple_omp_task", NULL)
+
+/* OMP_RETURN marks the end of an OpenMP directive.  */
+DEFGSCODE(GIMPLE_OMP_RETURN, "gimple_omp_return", NULL)
+
+/* OMP_SECTION <BODY> represents #pragma omp section.
+   BODY is the sequence of statements in the section body.  */
+DEFGSCODE(GIMPLE_OMP_SECTION, "gimple_omp_section", NULL)
+
+/* OMP_SECTIONS <BODY, CLAUSES, CONTROL> represents #pragma omp sections.
+
+   BODY is the sequence of statements in the sections body.
+   CLAUSES is a TREE_LIST node holding the list of associated clauses.
+   CONTROL is a VAR_DECL used for deciding which of the sections
+   to execute.  */
+DEFGSCODE(GIMPLE_OMP_SECTIONS, "gimple_omp_sections", NULL)
+
+/* GIMPLE_OMP_SECTIONS_SWITCH is a marker placed immediately after
+   OMP_SECTIONS.  It represents the GIMPLE_SWITCH used to decide which
+   branch is taken.  */
+DEFGSCODE(GIMPLE_OMP_SECTIONS_SWITCH, "gimple_omp_sections_switch", NULL)
+
+/* GIMPLE_OMP_SINGLE <BODY, CLAUSES> represents #pragma omp single
+   BODY is the sequence of statements inside the single section.
+   CLAUSES is a TREE_LIST node holding the associated clauses.  */
+DEFGSCODE(GIMPLE_OMP_SINGLE, "gimple_omp_single", NULL)
+
+/* GIMPLE_PREDICT <PREDICT, OUTCOME> specifies a hint for branch prediction.
+
+   PREDICT is one of the predictors from predict.def.
+
+   OUTCOME is NOT_TAKEN or TAKEN.  */
+DEFGSCODE(GIMPLE_PREDICT, "gimple_predict", NULL)
+
+/*  This node represents a cleanup expression.  It is ONLY USED INTERNALLY
+    by the gimplifier as a placeholder for cleanups, and its uses will be
+    cleaned up by the time gimplification is done.
+    
+    This tuple should not exist outside of the gimplifier proper.  */
+DEFGSCODE(GIMPLE_WITH_CLEANUP_EXPR, "gimple_with_cleanup_expr", NULL)
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/gimple.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/gimple.h
new file mode 100644 (file)
index 0000000..df9bccd
--- /dev/null
@@ -0,0 +1,4585 @@
+/* Gimple IR definitions.
+
+   Copyright 2007, 2008, 2009 Free Software Foundation, Inc.
+   Contributed by Aldy Hernandez <aldyh@redhat.com>
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_GIMPLE_H
+#define GCC_GIMPLE_H
+
+#include "pointer-set.h"
+#include "vec.h"
+#include "ggc.h"
+#include "tm.h"
+#include "hard-reg-set.h"
+#include "basic-block.h"
+#include "tree-ssa-operands.h"
+
+DEF_VEC_P(gimple);
+DEF_VEC_ALLOC_P(gimple,heap);
+DEF_VEC_ALLOC_P(gimple,gc);
+
+DEF_VEC_P(gimple_seq);
+DEF_VEC_ALLOC_P(gimple_seq,gc);
+DEF_VEC_ALLOC_P(gimple_seq,heap);
+
+/* For each block, the PHI nodes that need to be rewritten are stored into
+   these vectors.  */
+typedef VEC(gimple, heap) *gimple_vec;
+DEF_VEC_P (gimple_vec);
+DEF_VEC_ALLOC_P (gimple_vec, heap);
+
+enum gimple_code {
+#define DEFGSCODE(SYM, STRING, STRUCT) SYM,
+#include "gimple.def"
+#undef DEFGSCODE
+    LAST_AND_UNUSED_GIMPLE_CODE
+};
+
+extern const char *const gimple_code_name[];
+extern const unsigned char gimple_rhs_class_table[];
+
+/* Error out if a gimple tuple is addressed incorrectly.  */
+#if defined ENABLE_GIMPLE_CHECKING
+extern void gimple_check_failed (const_gimple, const char *, int,          \
+                                 const char *, enum gimple_code,           \
+                                enum tree_code) ATTRIBUTE_NORETURN;
+
+#define GIMPLE_CHECK(GS, CODE)                                         \
+  do {                                                                 \
+    const_gimple __gs = (GS);                                          \
+    if (gimple_code (__gs) != (CODE))                                  \
+      gimple_check_failed (__gs, __FILE__, __LINE__, __FUNCTION__,     \
+                          (CODE), 0);                                  \
+  } while (0)
+#else  /* not ENABLE_GIMPLE_CHECKING  */
+#define GIMPLE_CHECK(GS, CODE)                 (void)0
+#endif
+
+/* Class of GIMPLE expressions suitable for the RHS of assignments.  See
+   get_gimple_rhs_class.  */
+enum gimple_rhs_class
+{
+  GIMPLE_INVALID_RHS,  /* The expression cannot be used on the RHS.  */
+  GIMPLE_BINARY_RHS,   /* The expression is a binary operation.  */
+  GIMPLE_UNARY_RHS,    /* The expression is a unary operation.  */
+  GIMPLE_SINGLE_RHS    /* The expression is a single object (an SSA
+                          name, a _DECL, a _REF, etc.  */
+};
+
+/* Specific flags for individual GIMPLE statements.  These flags are
+   always stored in gimple_statement_base.subcode and they may only be
+   defined for statement codes that do not use sub-codes.
+
+   Values for the masks can overlap as long as the overlapping values
+   are never used in the same statement class.
+
+   The maximum mask value that can be defined is 1 << 15 (i.e., each
+   statement code can hold up to 16 bitflags).
+
+   Keep this list sorted.  */
+enum gf_mask {
+    GF_ASM_INPUT               = 1 << 0,
+    GF_ASM_VOLATILE            = 1 << 1,
+    GF_CALL_CANNOT_INLINE      = 1 << 0,
+    GF_CALL_FROM_THUNK         = 1 << 1,
+    GF_CALL_RETURN_SLOT_OPT    = 1 << 2,
+    GF_CALL_TAILCALL           = 1 << 3,
+    GF_CALL_VA_ARG_PACK                = 1 << 4,
+    GF_OMP_PARALLEL_COMBINED   = 1 << 0,
+
+    /* True on an GIMPLE_OMP_RETURN statement if the return does not require
+       a thread synchronization via some sort of barrier.  The exact barrier
+       that would otherwise be emitted is dependent on the OMP statement with
+       which this return is associated.  */
+    GF_OMP_RETURN_NOWAIT       = 1 << 0,
+
+    GF_OMP_SECTION_LAST                = 1 << 0,
+    GF_PREDICT_TAKEN           = 1 << 15
+};
+
+/* Masks for selecting a pass local flag (PLF) to work on.  These
+   masks are used by gimple_set_plf and gimple_plf.  */
+enum plf_mask {
+    GF_PLF_1   = 1 << 0,
+    GF_PLF_2   = 1 << 1
+};
+
+/* A node in a gimple_seq_d.  */
+struct gimple_seq_node_d GTY((chain_next ("%h.next"), chain_prev ("%h.prev")))
+{
+  gimple stmt;
+  struct gimple_seq_node_d *prev;
+  struct gimple_seq_node_d *next;
+};
+
+/* A double-linked sequence of gimple statements.  */
+struct gimple_seq_d GTY ((chain_next ("%h.next_free")))
+{
+  /* First and last statements in the sequence.  */
+  gimple_seq_node first;
+  gimple_seq_node last;
+
+  /* Sequences are created/destroyed frequently.  To minimize
+     allocation activity, deallocated sequences are kept in a pool of
+     available sequences.  This is the pointer to the next free
+     sequence in the pool.  */
+  gimple_seq next_free;
+};
+
+
+/* Return the first node in GIMPLE sequence S.  */
+
+static inline gimple_seq_node
+gimple_seq_first (const_gimple_seq s)
+{
+  return s ? s->first : NULL;
+}
+
+
+/* Return the first statement in GIMPLE sequence S.  */
+
+static inline gimple
+gimple_seq_first_stmt (const_gimple_seq s)
+{
+  gimple_seq_node n = gimple_seq_first (s);
+  return (n) ? n->stmt : NULL;
+}
+
+
+/* Return the last node in GIMPLE sequence S.  */
+
+static inline gimple_seq_node
+gimple_seq_last (const_gimple_seq s)
+{
+  return s ? s->last : NULL;
+}
+
+
+/* Return the last statement in GIMPLE sequence S.  */
+
+static inline gimple
+gimple_seq_last_stmt (const_gimple_seq s)
+{
+  gimple_seq_node n = gimple_seq_last (s);
+  return (n) ? n->stmt : NULL;
+}
+
+
+/* Set the last node in GIMPLE sequence S to LAST.  */
+
+static inline void
+gimple_seq_set_last (gimple_seq s, gimple_seq_node last)
+{
+  s->last = last;
+}
+
+
+/* Set the first node in GIMPLE sequence S to FIRST.  */
+
+static inline void
+gimple_seq_set_first (gimple_seq s, gimple_seq_node first)
+{
+  s->first = first;
+}
+
+
+/* Return true if GIMPLE sequence S is empty.  */
+
+static inline bool
+gimple_seq_empty_p (const_gimple_seq s)
+{
+  return s == NULL || s->first == NULL;
+}
+
+
+void gimple_seq_add_stmt (gimple_seq *, gimple);
+
+/* Allocate a new sequence and initialize its first element with STMT.  */
+
+static inline gimple_seq
+gimple_seq_alloc_with_stmt (gimple stmt)
+{
+  gimple_seq seq = NULL;
+  gimple_seq_add_stmt (&seq, stmt);
+  return seq;
+}
+
+
+/* Returns the sequence of statements in BB.  */
+
+static inline gimple_seq
+bb_seq (const_basic_block bb)
+{
+  return (!(bb->flags & BB_RTL) && bb->il.gimple) ? bb->il.gimple->seq : NULL;
+}
+
+
+/* Sets the sequence of statements in BB to SEQ.  */
+
+static inline void
+set_bb_seq (basic_block bb, gimple_seq seq)
+{
+  gcc_assert (!(bb->flags & BB_RTL));
+  bb->il.gimple->seq = seq;
+}
+
+/* Iterator object for GIMPLE statement sequences.  */
+
+typedef struct
+{
+  /* Sequence node holding the current statement.  */
+  gimple_seq_node ptr;
+
+  /* Sequence and basic block holding the statement.  These fields
+     are necessary to handle edge cases such as when statement is
+     added to an empty basic block or when the last statement of a
+     block/sequence is removed.  */
+  gimple_seq seq;
+  basic_block bb;
+} gimple_stmt_iterator;
+
+
+/* Data structure definitions for GIMPLE tuples.  NOTE: word markers
+   are for 64 bit hosts.  */
+
+struct gimple_statement_base GTY(())
+{
+  /* [ WORD 1 ]
+     Main identifying code for a tuple.  */
+  ENUM_BITFIELD(gimple_code) code : 8;
+
+  /* Nonzero if a warning should not be emitted on this tuple.  */
+  unsigned int no_warning      : 1;
+
+  /* Nonzero if this tuple has been visited.  Passes are responsible
+     for clearing this bit before using it.  */
+  unsigned int visited         : 1;
+
+  /* Nonzero if this tuple represents a non-temporal move.  */
+  unsigned int nontemporal_move        : 1;
+
+  /* Pass local flags.  These flags are free for any pass to use as
+     they see fit.  Passes should not assume that these flags contain
+     any useful value when the pass starts.  Any initial state that
+     the pass requires should be set on entry to the pass.  See
+     gimple_set_plf and gimple_plf for usage.  */
+  unsigned int plf             : 2;
+
+  /* Nonzero if this statement has been modified and needs to have its
+     operands rescanned.  */
+  unsigned modified            : 1;
+
+  /* Nonzero if this statement contains volatile operands.  */
+  unsigned has_volatile_ops    : 1;
+
+  /* Nonzero if this statement contains memory refernces.  */
+  unsigned references_memory_p         : 1;
+
+  /* The SUBCODE field can be used for tuple-specific flags for tuples
+     that do not require subcodes.  Note that SUBCODE should be at
+     least as wide as tree codes, as several tuples store tree codes
+     in there.  */
+  unsigned int subcode         : 16;
+
+  /* UID of this statement.  This is used by passes that want to
+     assign IDs to statements.  It must be assigned and used by each
+     pass.  By default it should be assumed to contain garbage.  */
+  unsigned uid;
+
+  /* [ WORD 2 ]
+     Locus information for debug info.  */
+  location_t location;
+
+  /* Number of operands in this tuple.  */
+  unsigned num_ops;
+
+  /* [ WORD 3 ]
+     Basic block holding this statement.  */
+  struct basic_block_def *bb;
+
+  /* [ WORD 4 ]
+     Lexical block holding this statement.  */
+  tree block;
+};
+
+
+/* Base structure for tuples with operands.  */
+
+struct gimple_statement_with_ops_base GTY(())
+{
+  /* [ WORD  1-4 ]  */
+  struct gimple_statement_base gsbase;
+
+  /* [ WORD 5 ]
+     Symbols whose addresses are taken by this statement (i.e., they
+     appear inside ADDR_EXPR nodes).  */
+  bitmap GTY((skip (""))) addresses_taken;
+
+  /* [ WORD 6-7 ]
+     SSA operand vectors.  NOTE: It should be possible to
+     amalgamate these vectors with the operand vector OP.  However,
+     the SSA operand vectors are organized differently and contain
+     more information (like immediate use chaining).  */
+  struct def_optype_d GTY((skip (""))) *def_ops;
+  struct use_optype_d GTY((skip (""))) *use_ops;
+};
+
+
+/* Statements that take register operands.  */
+
+struct gimple_statement_with_ops GTY(())
+{
+  /* [ WORD 1-7 ]  */
+  struct gimple_statement_with_ops_base opbase;
+
+  /* [ WORD 8 ]
+     Operand vector.  NOTE!  This must always be the last field
+     of this structure.  In particular, this means that this
+     structure cannot be embedded inside another one.  */
+  tree GTY((length ("%h.opbase.gsbase.num_ops"))) op[1];
+};
+
+
+/* Base for statements that take both memory and register operands.  */
+
+struct gimple_statement_with_memory_ops_base GTY(())
+{
+  /* [ WORD 1-7 ]  */
+  struct gimple_statement_with_ops_base opbase;
+
+  /* [ WORD 8-9 ]  
+     Vectors for virtual operands.  */
+  struct voptype_d GTY((skip (""))) *vdef_ops;
+  struct voptype_d GTY((skip (""))) *vuse_ops;
+
+  /* [ WORD 9-10 ]
+     Symbols stored/loaded by this statement.  */
+  bitmap GTY((skip (""))) stores;
+  bitmap GTY((skip (""))) loads;
+};
+
+
+/* Statements that take both memory and register operands.  */
+
+struct gimple_statement_with_memory_ops GTY(())
+{
+  /* [ WORD 1-10 ]  */
+  struct gimple_statement_with_memory_ops_base membase;
+
+  /* [ WORD 11 ]
+     Operand vector.  NOTE!  This must always be the last field
+     of this structure.  In particular, this means that this
+     structure cannot be embedded inside another one.  */
+  tree GTY((length ("%h.membase.opbase.gsbase.num_ops"))) op[1];
+};
+
+
+/* OpenMP statements (#pragma omp).  */
+
+struct gimple_statement_omp GTY(())
+{
+  /* [ WORD 1-4 ]  */
+  struct gimple_statement_base gsbase;
+
+  /* [ WORD 5 ]  */
+  gimple_seq body;
+};
+
+
+/* GIMPLE_BIND */
+
+struct gimple_statement_bind GTY(())
+{
+  /* [ WORD 1-4 ]  */
+  struct gimple_statement_base gsbase;
+
+  /* [ WORD 5 ]
+     Variables declared in this scope.  */
+  tree vars;
+
+  /* [ WORD 6 ]
+     This is different than the BLOCK field in gimple_statement_base,
+     which is analogous to TREE_BLOCK (i.e., the lexical block holding
+     this statement).  This field is the equivalent of BIND_EXPR_BLOCK
+     in tree land (i.e., the lexical scope defined by this bind).  See
+     gimple-low.c.  */
+  tree block;
+
+  /* [ WORD 7 ]  */
+  gimple_seq body;
+};
+
+
+/* GIMPLE_CATCH */
+
+struct gimple_statement_catch GTY(())
+{
+  /* [ WORD 1-4 ]  */
+  struct gimple_statement_base gsbase;
+
+  /* [ WORD 5 ]  */
+  tree types;
+
+  /* [ WORD 6 ]  */
+  gimple_seq handler;
+};
+
+
+/* GIMPLE_EH_FILTER */
+
+struct gimple_statement_eh_filter GTY(())
+{
+  /* [ WORD 1-4 ]  */
+  struct gimple_statement_base gsbase;
+
+  /* Subcode: EH_FILTER_MUST_NOT_THROW.  A boolean flag analogous to
+     the tree counterpart.  */
+
+  /* [ WORD 5 ]
+     Filter types.  */
+  tree types;
+
+  /* [ WORD 6 ]
+     Failure actions.  */
+  gimple_seq failure;
+};
+
+
+/* GIMPLE_PHI */
+
+struct gimple_statement_phi GTY(())
+{
+  /* [ WORD 1-4 ]  */
+  struct gimple_statement_base gsbase;
+
+  /* [ WORD 5 ]  */
+  unsigned capacity;
+  unsigned nargs;
+
+  /* [ WORD 6 ]  */
+  tree result;
+
+  /* [ WORD 7 ]  */
+  struct phi_arg_d GTY ((length ("%h.nargs"))) args[1];
+};
+
+
+/* GIMPLE_RESX */
+
+struct gimple_statement_resx GTY(())
+{
+  /* [ WORD 1-4 ]  */
+  struct gimple_statement_base gsbase;
+
+  /* [ WORD 5 ]
+     Exception region number.  */
+  int region;
+};
+
+
+/* GIMPLE_TRY */
+
+struct gimple_statement_try GTY(())
+{
+  /* [ WORD 1-4 ]  */
+  struct gimple_statement_base gsbase;
+
+  /* [ WORD 5 ]
+     Expression to evaluate.  */
+  gimple_seq eval;
+
+  /* [ WORD 6 ]
+     Cleanup expression.  */
+  gimple_seq cleanup;
+};
+
+/* Kind of GIMPLE_TRY statements.  */
+enum gimple_try_flags
+{
+  /* A try/catch.  */
+  GIMPLE_TRY_CATCH = 1 << 0,
+
+  /* A try/finally.  */
+  GIMPLE_TRY_FINALLY = 1 << 1,
+  GIMPLE_TRY_KIND = GIMPLE_TRY_CATCH | GIMPLE_TRY_FINALLY,
+
+  /* Analogous to TRY_CATCH_IS_CLEANUP.  */
+  GIMPLE_TRY_CATCH_IS_CLEANUP = 1 << 2
+};
+
+/* GIMPLE_WITH_CLEANUP_EXPR */
+
+struct gimple_statement_wce GTY(())
+{
+  /* [ WORD 1-4 ]  */
+  struct gimple_statement_base gsbase;
+
+  /* Subcode: CLEANUP_EH_ONLY.  True if the cleanup should only be
+             executed if an exception is thrown, not on normal exit of its
+             scope.  This flag is analogous to the CLEANUP_EH_ONLY flag
+             in TARGET_EXPRs.  */
+
+  /* [ WORD 5 ]
+     Cleanup expression.  */
+  gimple_seq cleanup;
+};
+
+
+/* GIMPLE_ASM  */
+
+struct gimple_statement_asm GTY(())
+{
+  /* [ WORD 1-10 ]  */
+  struct gimple_statement_with_memory_ops_base membase;
+
+  /* [ WORD 11 ]
+     __asm__ statement.  */
+  const char *string;
+
+  /* [ WORD 12 ]
+       Number of inputs, outputs and clobbers.  */
+  unsigned char ni;
+  unsigned char no;
+  unsigned short nc;
+
+  /* [ WORD 13 ]
+     Operand vector.  NOTE!  This must always be the last field
+     of this structure.  In particular, this means that this
+     structure cannot be embedded inside another one.  */
+  tree GTY((length ("%h.membase.opbase.gsbase.num_ops"))) op[1];
+};
+
+/* GIMPLE_OMP_CRITICAL */
+
+struct gimple_statement_omp_critical GTY(())
+{
+  /* [ WORD 1-5 ]  */
+  struct gimple_statement_omp omp;
+
+  /* [ WORD 6 ]
+     Critical section name.  */
+  tree name;
+};
+
+
+struct gimple_omp_for_iter GTY(())
+{
+  /* Condition code.  */
+  enum tree_code cond;
+
+  /* Index variable.  */
+  tree index;
+    
+  /* Initial value.  */
+  tree initial;
+
+  /* Final value.  */
+  tree final;
+                                 
+  /* Increment.  */
+  tree incr;
+};
+
+/* GIMPLE_OMP_FOR */
+
+struct gimple_statement_omp_for GTY(())
+{
+  /* [ WORD 1-5 ]  */
+  struct gimple_statement_omp omp;
+
+  /* [ WORD 6 ]  */
+  tree clauses;
+
+  /* [ WORD 7 ]
+     Number of elements in iter array.  */
+  size_t collapse;
+
+  /* [ WORD 8 ]  */
+  struct gimple_omp_for_iter * GTY((length ("%h.collapse"))) iter;
+
+  /* [ WORD 9 ]
+     Pre-body evaluated before the loop body begins.  */
+  gimple_seq pre_body;
+};
+
+
+/* GIMPLE_OMP_PARALLEL */
+
+struct gimple_statement_omp_parallel GTY(())
+{
+  /* [ WORD 1-5 ]  */
+  struct gimple_statement_omp omp;
+
+  /* [ WORD 6 ]
+     Clauses.  */
+  tree clauses;
+
+  /* [ WORD 7 ]
+     Child function holding the body of the parallel region.  */
+  tree child_fn;
+
+  /* [ WORD 8 ]
+     Shared data argument.  */
+  tree data_arg;
+};
+
+
+/* GIMPLE_OMP_TASK */
+
+struct gimple_statement_omp_task GTY(())
+{
+  /* [ WORD 1-8 ]  */
+  struct gimple_statement_omp_parallel par;
+
+  /* [ WORD 9 ]
+     Child function holding firstprivate initialization if needed.  */
+  tree copy_fn;
+
+  /* [ WORD 10-11 ]
+     Size and alignment in bytes of the argument data block.  */
+  tree arg_size;
+  tree arg_align;
+};
+
+
+/* GIMPLE_OMP_SECTION */
+/* Uses struct gimple_statement_omp.  */
+
+
+/* GIMPLE_OMP_SECTIONS */
+
+struct gimple_statement_omp_sections GTY(())
+{
+  /* [ WORD 1-5 ]  */
+  struct gimple_statement_omp omp;
+
+  /* [ WORD 6 ]  */
+  tree clauses;
+
+  /* [ WORD 7 ]
+     The control variable used for deciding which of the sections to
+     execute.  */
+  tree control;
+};
+
+/* GIMPLE_OMP_CONTINUE.
+
+   Note: This does not inherit from gimple_statement_omp, because we
+         do not need the body field.  */
+
+struct gimple_statement_omp_continue GTY(())
+{
+  /* [ WORD 1-4 ]  */
+  struct gimple_statement_base gsbase;
+
+  /* [ WORD 5 ]  */
+  tree control_def;
+
+  /* [ WORD 6 ]  */
+  tree control_use;
+};
+
+/* GIMPLE_OMP_SINGLE */
+
+struct gimple_statement_omp_single GTY(())
+{
+  /* [ WORD 1-5 ]  */
+  struct gimple_statement_omp omp;
+
+  /* [ WORD 6 ]  */
+  tree clauses;
+};
+
+
+/* GIMPLE_OMP_ATOMIC_LOAD.  
+   Note: This is based on gimple_statement_base, not g_s_omp, because g_s_omp
+   contains a sequence, which we don't need here.  */
+
+struct gimple_statement_omp_atomic_load GTY(())
+{
+  /* [ WORD 1-4 ]  */
+  struct gimple_statement_base gsbase;
+
+  /* [ WORD 5-6 ]  */
+  tree rhs, lhs;
+};
+
+/* GIMPLE_OMP_ATOMIC_STORE.
+   See note on GIMPLE_OMP_ATOMIC_LOAD.  */
+
+struct gimple_statement_omp_atomic_store GTY(())
+{
+  /* [ WORD 1-4 ]  */
+  struct gimple_statement_base gsbase;
+
+  /* [ WORD 5 ]  */
+  tree val;
+};
+
+enum gimple_statement_structure_enum {
+#define DEFGSSTRUCT(SYM, STRING)       SYM,
+#include "gsstruct.def"
+#undef DEFGSSTRUCT
+    LAST_GSS_ENUM
+};
+
+
+/* Define the overall contents of a gimple tuple.  It may be any of the
+   structures declared above for various types of tuples.  */
+
+union gimple_statement_d GTY ((desc ("gimple_statement_structure (&%h)")))
+{
+  struct gimple_statement_base GTY ((tag ("GSS_BASE"))) gsbase;
+  struct gimple_statement_with_ops GTY ((tag ("GSS_WITH_OPS"))) gsops;
+  struct gimple_statement_with_memory_ops GTY ((tag ("GSS_WITH_MEM_OPS"))) gsmem;
+  struct gimple_statement_omp GTY ((tag ("GSS_OMP"))) omp;
+  struct gimple_statement_bind GTY ((tag ("GSS_BIND"))) gimple_bind;
+  struct gimple_statement_catch GTY ((tag ("GSS_CATCH"))) gimple_catch;
+  struct gimple_statement_eh_filter GTY ((tag ("GSS_EH_FILTER"))) gimple_eh_filter;
+  struct gimple_statement_phi GTY ((tag ("GSS_PHI"))) gimple_phi;
+  struct gimple_statement_resx GTY ((tag ("GSS_RESX"))) gimple_resx;
+  struct gimple_statement_try GTY ((tag ("GSS_TRY"))) gimple_try;
+  struct gimple_statement_wce GTY ((tag ("GSS_WCE"))) gimple_wce;
+  struct gimple_statement_asm GTY ((tag ("GSS_ASM"))) gimple_asm;
+  struct gimple_statement_omp_critical GTY ((tag ("GSS_OMP_CRITICAL"))) gimple_omp_critical;
+  struct gimple_statement_omp_for GTY ((tag ("GSS_OMP_FOR"))) gimple_omp_for;
+  struct gimple_statement_omp_parallel GTY ((tag ("GSS_OMP_PARALLEL"))) gimple_omp_parallel;
+  struct gimple_statement_omp_task GTY ((tag ("GSS_OMP_TASK"))) gimple_omp_task;
+  struct gimple_statement_omp_sections GTY ((tag ("GSS_OMP_SECTIONS"))) gimple_omp_sections;
+  struct gimple_statement_omp_single GTY ((tag ("GSS_OMP_SINGLE"))) gimple_omp_single;
+  struct gimple_statement_omp_continue GTY ((tag ("GSS_OMP_CONTINUE"))) gimple_omp_continue;
+  struct gimple_statement_omp_atomic_load GTY ((tag ("GSS_OMP_ATOMIC_LOAD"))) gimple_omp_atomic_load;
+  struct gimple_statement_omp_atomic_store GTY ((tag ("GSS_OMP_ATOMIC_STORE"))) gimple_omp_atomic_store;
+};
+
+/* In gimple.c.  */
+gimple gimple_build_return (tree);
+
+gimple gimple_build_assign_stat (tree, tree MEM_STAT_DECL);
+#define gimple_build_assign(l,r) gimple_build_assign_stat (l, r MEM_STAT_INFO)
+
+void extract_ops_from_tree (tree, enum tree_code *, tree *, tree *);
+
+gimple gimple_build_assign_with_ops_stat (enum tree_code, tree, tree,
+                                         tree MEM_STAT_DECL);
+#define gimple_build_assign_with_ops(c,o1,o2,o3) \
+  gimple_build_assign_with_ops_stat (c, o1, o2, o3 MEM_STAT_INFO)
+
+gimple gimple_build_call_vec (tree, VEC(tree, heap) *);
+gimple gimple_build_call (tree, unsigned, ...);
+gimple gimple_build_call_from_tree (tree);
+gimple gimplify_assign (tree, tree, gimple_seq *);
+gimple gimple_build_cond (enum tree_code, tree, tree, tree, tree);
+gimple gimple_build_label (tree label);
+gimple gimple_build_goto (tree dest);
+gimple gimple_build_nop (void);
+gimple gimple_build_bind (tree, gimple_seq, tree);
+gimple gimple_build_asm (const char *, unsigned, unsigned, unsigned, ...);
+gimple gimple_build_asm_vec (const char *, VEC(tree,gc) *, VEC(tree,gc) *,
+                             VEC(tree,gc) *);
+gimple gimple_build_catch (tree, gimple_seq);
+gimple gimple_build_eh_filter (tree, gimple_seq);
+gimple gimple_build_try (gimple_seq, gimple_seq, enum gimple_try_flags);
+gimple gimple_build_wce (gimple_seq);
+gimple gimple_build_resx (int);
+gimple gimple_build_switch (unsigned, tree, tree, ...);
+gimple gimple_build_switch_vec (tree, tree, VEC(tree,heap) *);
+gimple gimple_build_omp_parallel (gimple_seq, tree, tree, tree);
+gimple gimple_build_omp_task (gimple_seq, tree, tree, tree, tree, tree, tree);
+gimple gimple_build_omp_for (gimple_seq, tree, size_t, gimple_seq);
+gimple gimple_build_omp_critical (gimple_seq, tree);
+gimple gimple_build_omp_section (gimple_seq);
+gimple gimple_build_omp_continue (tree, tree);
+gimple gimple_build_omp_master (gimple_seq);
+gimple gimple_build_omp_return (bool);
+gimple gimple_build_omp_ordered (gimple_seq);
+gimple gimple_build_omp_sections (gimple_seq, tree);
+gimple gimple_build_omp_sections_switch (void);
+gimple gimple_build_omp_single (gimple_seq, tree);
+gimple gimple_build_cdt (tree, tree);
+gimple gimple_build_omp_atomic_load (tree, tree);
+gimple gimple_build_omp_atomic_store (tree);
+gimple gimple_build_predict (enum br_predictor, enum prediction);
+enum gimple_statement_structure_enum gimple_statement_structure (gimple);
+enum gimple_statement_structure_enum gss_for_assign (enum tree_code);
+void sort_case_labels (VEC(tree,heap) *);
+void gimple_set_body (tree, gimple_seq);
+gimple_seq gimple_body (tree);
+bool gimple_has_body_p (tree);
+gimple_seq gimple_seq_alloc (void);
+void gimple_seq_free (gimple_seq);
+void gimple_seq_add_seq (gimple_seq *, gimple_seq);
+gimple_seq gimple_seq_copy (gimple_seq);
+int gimple_call_flags (const_gimple);
+bool gimple_assign_copy_p (gimple);
+bool gimple_assign_ssa_name_copy_p (gimple);
+bool gimple_assign_single_p (gimple);
+bool gimple_assign_unary_nop_p (gimple);
+void gimple_set_bb (gimple, struct basic_block_def *);
+tree gimple_fold (const_gimple);
+void gimple_assign_set_rhs_from_tree (gimple_stmt_iterator *, tree);
+void gimple_assign_set_rhs_with_ops (gimple_stmt_iterator *, enum tree_code,
+                                    tree, tree);
+tree gimple_get_lhs (const_gimple);
+void gimple_set_lhs (gimple, tree);
+gimple gimple_copy (gimple);
+bool is_gimple_operand (const_tree);
+void gimple_set_modified (gimple, bool);
+void gimple_cond_get_ops_from_tree (tree, enum tree_code *, tree *, tree *);
+gimple gimple_build_cond_from_tree (tree, tree, tree);
+void gimple_cond_set_condition_from_tree (gimple, tree);
+bool gimple_has_side_effects (const_gimple);
+bool gimple_rhs_has_side_effects (const_gimple);
+bool gimple_could_trap_p (gimple);
+bool gimple_assign_rhs_could_trap_p (gimple);
+void gimple_regimplify_operands (gimple, gimple_stmt_iterator *);
+bool empty_body_p (gimple_seq);
+unsigned get_gimple_rhs_num_ops (enum tree_code);
+
+/* Returns true iff T is a valid GIMPLE statement.  */
+extern bool is_gimple_stmt (tree);
+
+/* Returns true iff TYPE is a valid type for a scalar register variable.  */
+extern bool is_gimple_reg_type (tree);
+/* Returns true iff T is a scalar register variable.  */
+extern bool is_gimple_reg (tree);
+/* Returns true if T is a GIMPLE temporary variable, false otherwise.  */
+extern bool is_gimple_formal_tmp_var (tree);
+/* Returns true if T is a GIMPLE temporary register variable.  */
+extern bool is_gimple_formal_tmp_reg (tree);
+/* Returns true iff T is any sort of variable.  */
+extern bool is_gimple_variable (tree);
+/* Returns true iff T is any sort of symbol.  */
+extern bool is_gimple_id (tree);
+/* Returns true iff T is a variable or an INDIRECT_REF (of a variable).  */
+extern bool is_gimple_min_lval (tree);
+/* Returns true iff T is something whose address can be taken.  */
+extern bool is_gimple_addressable (tree);
+/* Returns true iff T is any valid GIMPLE lvalue.  */
+extern bool is_gimple_lvalue (tree);
+
+/* Returns true iff T is a GIMPLE address.  */
+bool is_gimple_address (const_tree);
+/* Returns true iff T is a GIMPLE invariant address.  */
+bool is_gimple_invariant_address (const_tree);
+/* Returns true iff T is a GIMPLE invariant address at interprocedural
+   level.  */
+bool is_gimple_ip_invariant_address (const_tree);
+/* Returns true iff T is a valid GIMPLE constant.  */
+bool is_gimple_constant (const_tree);
+/* Returns true iff T is a GIMPLE restricted function invariant.  */
+extern bool is_gimple_min_invariant (const_tree);
+/* Returns true iff T is a GIMPLE restricted interprecodural invariant.  */
+extern bool is_gimple_ip_invariant (const_tree);
+/* Returns true iff T is a GIMPLE rvalue.  */
+extern bool is_gimple_val (tree);
+/* Returns true iff T is a GIMPLE asm statement input.  */
+extern bool is_gimple_asm_val (tree);
+/* Returns true iff T is a valid rhs for a MODIFY_EXPR where the LHS is a
+   GIMPLE temporary, a renamed user variable, or something else,
+   respectively.  */
+extern bool is_gimple_formal_tmp_rhs (tree);
+extern bool is_gimple_reg_rhs (tree);
+extern bool is_gimple_mem_rhs (tree);
+
+/* Returns true iff T is a valid if-statement condition.  */
+extern bool is_gimple_condexpr (tree);
+
+/* Returns true iff T is a type conversion.  */
+extern bool is_gimple_cast (tree);
+/* Returns true iff T is a variable that does not need to live in memory.  */
+extern bool is_gimple_non_addressable (tree t);
+
+/* Returns true iff T is a valid call address expression.  */
+extern bool is_gimple_call_addr (tree);
+/* If T makes a function call, returns the CALL_EXPR operand.  */
+extern tree get_call_expr_in (tree t);
+
+extern void recalculate_side_effects (tree);
+
+/* In gimplify.c  */
+extern tree create_tmp_var_raw (tree, const char *);
+extern tree create_tmp_var_name (const char *);
+extern tree create_tmp_var (tree, const char *);
+extern tree get_initialized_tmp_var (tree, gimple_seq *, gimple_seq *);
+extern tree get_formal_tmp_var (tree, gimple_seq *);
+extern void declare_vars (tree, gimple, bool);
+extern void tree_annotate_all_with_location (tree *, location_t);
+extern void annotate_all_with_location (gimple_seq, location_t);
+
+/* Validation of GIMPLE expressions.  Note that these predicates only check
+   the basic form of the expression, they don't recurse to make sure that
+   underlying nodes are also of the right form.  */
+typedef bool (*gimple_predicate)(tree);
+
+
+/* FIXME we should deduce this from the predicate.  */
+typedef enum fallback_t {
+  fb_none = 0,         /* Do not generate a temporary.  */
+
+  fb_rvalue = 1,       /* Generate an rvalue to hold the result of a
+                          gimplified expression.  */
+
+  fb_lvalue = 2,       /* Generate an lvalue to hold the result of a
+                          gimplified expression.  */
+
+  fb_mayfail = 4,      /* Gimplification may fail.  Error issued
+                          afterwards.  */
+  fb_either= fb_rvalue | fb_lvalue
+} fallback_t;
+
+enum gimplify_status {
+  GS_ERROR     = -2,   /* Something Bad Seen.  */
+  GS_UNHANDLED = -1,   /* A langhook result for "I dunno".  */
+  GS_OK                = 0,    /* We did something, maybe more to do.  */
+  GS_ALL_DONE  = 1     /* The expression is fully gimplified.  */
+};
+
+struct gimplify_ctx
+{
+  struct gimplify_ctx *prev_context;
+
+  VEC(gimple,heap) *bind_expr_stack;
+  tree temps;
+  gimple_seq conditional_cleanups;
+  tree exit_label;
+  tree return_temp;
+  
+  VEC(tree,heap) *case_labels;
+  /* The formal temporary table.  Should this be persistent?  */
+  htab_t temp_htab;
+
+  int conditions;
+  bool save_stack;
+  bool into_ssa;
+  bool allow_rhs_cond_expr;
+};
+
+extern enum gimplify_status gimplify_expr (tree *, gimple_seq *, gimple_seq *,
+                                          bool (*) (tree), fallback_t);
+extern void gimplify_type_sizes (tree, gimple_seq *);
+extern void gimplify_one_sizepos (tree *, gimple_seq *);
+extern bool gimplify_stmt (tree *, gimple_seq *);
+extern gimple gimplify_body (tree *, tree, bool);
+extern void push_gimplify_context (struct gimplify_ctx *);
+extern void pop_gimplify_context (gimple);
+extern void gimplify_and_add (tree, gimple_seq *);
+
+/* Miscellaneous helpers.  */
+extern void gimple_add_tmp_var (tree);
+extern gimple gimple_current_bind_expr (void);
+extern VEC(gimple, heap) *gimple_bind_expr_stack (void);
+extern tree voidify_wrapper_expr (tree, tree);
+extern tree build_and_jump (tree *);
+extern tree alloc_stmt_list (void);
+extern void free_stmt_list (tree);
+extern tree force_labels_r (tree *, int *, void *);
+extern enum gimplify_status gimplify_va_arg_expr (tree *, gimple_seq *,
+                                                 gimple_seq *);
+struct gimplify_omp_ctx;
+extern void omp_firstprivatize_variable (struct gimplify_omp_ctx *, tree);
+extern tree gimple_boolify (tree);
+extern gimple_predicate rhs_predicate_for (tree);
+extern tree canonicalize_cond_expr_cond (tree);
+
+/* In omp-low.c.  */
+extern void diagnose_omp_structured_block_errors (tree);
+extern tree omp_reduction_init (tree, tree);
+
+/* In tree-nested.c.  */
+extern void lower_nested_functions (tree);
+extern void insert_field_into_struct (tree, tree);
+
+/* In gimplify.c.  */
+extern void gimplify_function_tree (tree);
+
+/* In cfgexpand.c.  */
+extern tree gimple_assign_rhs_to_tree (gimple);
+
+/* In builtins.c  */
+extern bool validate_gimple_arglist (const_gimple, ...);
+
+/* In tree-ssa-operands.c  */
+extern void gimple_add_to_addresses_taken (gimple, tree);
+
+/* In tree-ssa.c  */
+extern bool tree_ssa_useless_type_conversion (tree);
+extern bool useless_type_conversion_p (tree, tree);
+extern bool types_compatible_p (tree, tree);
+
+/* Return the code for GIMPLE statement G.  */
+
+static inline enum gimple_code
+gimple_code (const_gimple g)
+{
+  return g->gsbase.code;
+}
+
+
+/* Return true if statement G has sub-statements.  This is only true for
+   High GIMPLE statements.  */
+
+static inline bool
+gimple_has_substatements (gimple g)
+{
+  switch (gimple_code (g))
+    {
+    case GIMPLE_BIND:
+    case GIMPLE_CATCH:
+    case GIMPLE_EH_FILTER:
+    case GIMPLE_TRY:
+    case GIMPLE_OMP_FOR:
+    case GIMPLE_OMP_MASTER:
+    case GIMPLE_OMP_ORDERED:
+    case GIMPLE_OMP_SECTION:
+    case GIMPLE_OMP_PARALLEL:
+    case GIMPLE_OMP_TASK:
+    case GIMPLE_OMP_SECTIONS:
+    case GIMPLE_OMP_SINGLE:
+    case GIMPLE_OMP_CRITICAL:
+    case GIMPLE_WITH_CLEANUP_EXPR:
+      return true;
+
+    default:
+      return false;
+    }
+}
+         
+
+/* Return the basic block holding statement G.  */
+
+static inline struct basic_block_def *
+gimple_bb (const_gimple g)
+{
+  return g->gsbase.bb;
+}
+
+
+/* Return the lexical scope block holding statement G.  */
+
+static inline tree
+gimple_block (const_gimple g)
+{
+  return g->gsbase.block;
+}
+
+
+/* Set BLOCK to be the lexical scope block holding statement G.  */
+
+static inline void
+gimple_set_block (gimple g, tree block)
+{
+  g->gsbase.block = block;
+}
+
+
+/* Return location information for statement G.  */
+
+static inline location_t
+gimple_location (const_gimple g)
+{
+  return g->gsbase.location;
+}
+
+/* Return pointer to location information for statement G.  */
+
+static inline const location_t *
+gimple_location_ptr (const_gimple g)
+{
+  return &g->gsbase.location;
+}
+
+
+/* Set location information for statement G.  */
+
+static inline void
+gimple_set_location (gimple g, location_t location)
+{
+  g->gsbase.location = location;
+}
+
+
+/* Return true if G contains location information.  */
+
+static inline bool
+gimple_has_location (const_gimple g)
+{
+  return gimple_location (g) != UNKNOWN_LOCATION;
+}
+
+
+/* Return the file name of the location of STMT.  */
+
+static inline const char *
+gimple_filename (const_gimple stmt)
+{
+  return LOCATION_FILE (gimple_location (stmt));
+}
+
+
+/* Return the line number of the location of STMT.  */
+
+static inline int
+gimple_lineno (const_gimple stmt)
+{
+  return LOCATION_LINE (gimple_location (stmt));
+}
+
+
+/* Determine whether SEQ is a singleton. */
+
+static inline bool
+gimple_seq_singleton_p (gimple_seq seq)
+{
+  return ((gimple_seq_first (seq) != NULL)
+         && (gimple_seq_first (seq) == gimple_seq_last (seq)));
+}
+
+/* Return true if no warnings should be emitted for statement STMT.  */
+
+static inline bool
+gimple_no_warning_p (const_gimple stmt)
+{
+  return stmt->gsbase.no_warning;
+}
+
+/* Set the no_warning flag of STMT to NO_WARNING.  */
+
+static inline void
+gimple_set_no_warning (gimple stmt, bool no_warning)
+{
+  stmt->gsbase.no_warning = (unsigned) no_warning;
+}
+
+/* Set the visited status on statement STMT to VISITED_P.  */
+
+static inline void
+gimple_set_visited (gimple stmt, bool visited_p)
+{
+  stmt->gsbase.visited = (unsigned) visited_p;
+}
+
+
+/* Return the visited status for statement STMT.  */
+
+static inline bool
+gimple_visited_p (gimple stmt)
+{
+  return stmt->gsbase.visited;
+}
+
+
+/* Set pass local flag PLF on statement STMT to VAL_P.  */
+
+static inline void
+gimple_set_plf (gimple stmt, enum plf_mask plf, bool val_p)
+{
+  if (val_p)
+    stmt->gsbase.plf |= (unsigned int) plf;
+  else
+    stmt->gsbase.plf &= ~((unsigned int) plf);
+}
+
+
+/* Return the value of pass local flag PLF on statement STMT.  */
+
+static inline unsigned int
+gimple_plf (gimple stmt, enum plf_mask plf)
+{
+  return stmt->gsbase.plf & ((unsigned int) plf);
+}
+
+
+/* Set the UID of statement.  */
+
+static inline void
+gimple_set_uid (gimple g, unsigned uid)
+{
+  g->gsbase.uid = uid;
+}
+
+
+/* Return the UID of statement.  */
+
+static inline unsigned
+gimple_uid (const_gimple g)
+{
+  return g->gsbase.uid;
+}
+
+
+/* Return true if GIMPLE statement G has register or memory operands.  */
+
+static inline bool
+gimple_has_ops (const_gimple g)
+{
+  return gimple_code (g) >= GIMPLE_COND && gimple_code (g) <= GIMPLE_RETURN;
+}
+
+
+/* Return true if GIMPLE statement G has memory operands.  */
+
+static inline bool
+gimple_has_mem_ops (const_gimple g)
+{
+  return gimple_code (g) >= GIMPLE_ASSIGN && gimple_code (g) <= GIMPLE_RETURN;
+}
+
+/* Return the set of addresses taken by statement G.  */
+
+static inline bitmap
+gimple_addresses_taken (const_gimple g)
+{
+  if (gimple_has_ops (g))
+    return g->gsops.opbase.addresses_taken;
+  else
+    return NULL;
+}
+
+
+/* Return a pointer to the set of addresses taken by statement G.  */
+
+static inline bitmap *
+gimple_addresses_taken_ptr (gimple g)
+{
+  if (gimple_has_ops (g))
+    return &g->gsops.opbase.addresses_taken;
+  else
+    return NULL;
+}
+
+
+/* Set B to be the set of addresses taken by statement G.  The
+   previous set is freed.  */
+
+static inline void
+gimple_set_addresses_taken (gimple g, bitmap b)
+{
+  gcc_assert (gimple_has_ops (g));
+  BITMAP_FREE (g->gsops.opbase.addresses_taken);
+  g->gsops.opbase.addresses_taken = b;
+}
+
+
+/* Return the set of DEF operands for statement G.  */
+
+static inline struct def_optype_d *
+gimple_def_ops (const_gimple g)
+{
+  if (!gimple_has_ops (g))
+    return NULL;
+  return g->gsops.opbase.def_ops;
+}
+
+
+/* Set DEF to be the set of DEF operands for statement G.  */
+
+static inline void
+gimple_set_def_ops (gimple g, struct def_optype_d *def)
+{
+  gcc_assert (gimple_has_ops (g));
+  g->gsops.opbase.def_ops = def;
+}
+
+
+/* Return the set of USE operands for statement G.  */
+
+static inline struct use_optype_d *
+gimple_use_ops (const_gimple g)
+{
+  if (!gimple_has_ops (g))
+    return NULL;
+  return g->gsops.opbase.use_ops;
+}
+
+
+/* Set USE to be the set of USE operands for statement G.  */
+
+static inline void
+gimple_set_use_ops (gimple g, struct use_optype_d *use)
+{
+  gcc_assert (gimple_has_ops (g));
+  g->gsops.opbase.use_ops = use;
+}
+
+
+/* Return the set of VUSE operands for statement G.  */
+
+static inline struct voptype_d *
+gimple_vuse_ops (const_gimple g)
+{
+  if (!gimple_has_mem_ops (g))
+    return NULL;
+  return g->gsmem.membase.vuse_ops;
+}
+
+
+/* Set OPS to be the set of VUSE operands for statement G.  */
+
+static inline void
+gimple_set_vuse_ops (gimple g, struct voptype_d *ops)
+{
+  gcc_assert (gimple_has_mem_ops (g));
+  g->gsmem.membase.vuse_ops = ops;
+}
+
+
+/* Return the set of VDEF operands for statement G.  */
+
+static inline struct voptype_d *
+gimple_vdef_ops (const_gimple g)
+{
+  if (!gimple_has_mem_ops (g))
+    return NULL;
+  return g->gsmem.membase.vdef_ops;
+}
+
+
+/* Set OPS to be the set of VDEF operands for statement G.  */
+
+static inline void
+gimple_set_vdef_ops (gimple g, struct voptype_d *ops)
+{
+  gcc_assert (gimple_has_mem_ops (g));
+  g->gsmem.membase.vdef_ops = ops;
+}
+
+
+/* Return the set of symbols loaded by statement G.  Each element of the
+   set is the DECL_UID of the corresponding symbol.  */
+
+static inline bitmap
+gimple_loaded_syms (const_gimple g)
+{
+  if (!gimple_has_mem_ops (g))
+    return NULL;
+  return g->gsmem.membase.loads;
+}
+
+
+/* Return the set of symbols stored by statement G.  Each element of
+   the set is the DECL_UID of the corresponding symbol.  */
+
+static inline bitmap
+gimple_stored_syms (const_gimple g)
+{
+  if (!gimple_has_mem_ops (g))
+    return NULL;
+  return g->gsmem.membase.stores;
+}
+
+
+/* Return true if statement G has operands and the modified field has
+   been set.  */
+
+static inline bool
+gimple_modified_p (const_gimple g)
+{
+  return (gimple_has_ops (g)) ? (bool) g->gsbase.modified : false;
+}
+
+/* Return the type of the main expression computed by STMT.  Return
+   void_type_node if the statement computes nothing.  */
+
+static inline tree
+gimple_expr_type (const_gimple stmt)
+{
+  enum gimple_code code = gimple_code (stmt);
+
+  if (code == GIMPLE_ASSIGN || code == GIMPLE_CALL)
+    {
+      tree type = TREE_TYPE (gimple_get_lhs (stmt));
+      /* Integral sub-types are never the type of the expression,
+         but they still can be the type of the result as the base
+        type (in which expressions are computed) is trivially
+        convertible to one of its sub-types.  So always return
+        the base type here.  */
+      if (INTEGRAL_TYPE_P (type)
+         && TREE_TYPE (type)
+         /* But only if they are trivially convertible.  */
+         && useless_type_conversion_p (type, TREE_TYPE (type)))
+       type = TREE_TYPE (type);
+      return type;
+    }
+  else if (code == GIMPLE_COND)
+    return boolean_type_node;
+  else
+    return void_type_node;
+}
+
+
+/* Return the tree code for the expression computed by STMT.  This is
+   only valid for GIMPLE_COND, GIMPLE_CALL and GIMPLE_ASSIGN.  For
+   GIMPLE_CALL, return CALL_EXPR as the expression code for
+   consistency.  This is useful when the caller needs to deal with the
+   three kinds of computation that GIMPLE supports.  */
+
+static inline enum tree_code
+gimple_expr_code (const_gimple stmt)
+{
+  enum gimple_code code = gimple_code (stmt);
+  if (code == GIMPLE_ASSIGN || code == GIMPLE_COND)
+    return (enum tree_code) stmt->gsbase.subcode;
+  else if (code == GIMPLE_CALL)
+    return CALL_EXPR;
+  else
+    gcc_unreachable ();
+}
+
+
+/* Mark statement S as modified, and update it.  */
+
+static inline void
+update_stmt (gimple s)
+{
+  if (gimple_has_ops (s))
+    {
+      gimple_set_modified (s, true);
+      update_stmt_operands (s);
+    }
+}
+
+/* Update statement S if it has been optimized.  */
+
+static inline void
+update_stmt_if_modified (gimple s)
+{
+  if (gimple_modified_p (s))
+    update_stmt_operands (s);
+}
+
+/* Return true if statement STMT contains volatile operands.  */
+
+static inline bool
+gimple_has_volatile_ops (const_gimple stmt)
+{
+  if (gimple_has_mem_ops (stmt))
+    return stmt->gsbase.has_volatile_ops;
+  else
+    return false;
+}
+
+
+/* Set the HAS_VOLATILE_OPS flag to VOLATILEP.  */
+
+static inline void
+gimple_set_has_volatile_ops (gimple stmt, bool volatilep)
+{
+  if (gimple_has_mem_ops (stmt))
+    stmt->gsbase.has_volatile_ops = (unsigned) volatilep;
+}
+
+
+/* Return true if statement STMT may access memory.  */
+
+static inline bool
+gimple_references_memory_p (gimple stmt)
+{
+  return gimple_has_mem_ops (stmt) && stmt->gsbase.references_memory_p;
+}
+
+
+/* Set the REFERENCES_MEMORY_P flag for STMT to MEM_P.  */
+
+static inline void
+gimple_set_references_memory (gimple stmt, bool mem_p)
+{
+  if (gimple_has_mem_ops (stmt))
+    stmt->gsbase.references_memory_p = (unsigned) mem_p;
+}
+
+/* Return the subcode for OMP statement S.  */
+
+static inline unsigned
+gimple_omp_subcode (const_gimple s)
+{
+  gcc_assert (gimple_code (s) >= GIMPLE_OMP_ATOMIC_LOAD
+             && gimple_code (s) <= GIMPLE_OMP_SINGLE);
+  return s->gsbase.subcode;
+}
+
+/* Set the subcode for OMP statement S to SUBCODE.  */
+
+static inline void
+gimple_omp_set_subcode (gimple s, unsigned int subcode)
+{
+  /* We only have 16 bits for the subcode.  Assert that we are not
+     overflowing it.  */
+  gcc_assert (subcode < (1 << 16));
+  s->gsbase.subcode = subcode;
+}
+
+/* Set the nowait flag on OMP_RETURN statement S.  */
+
+static inline void
+gimple_omp_return_set_nowait (gimple s)
+{
+  GIMPLE_CHECK (s, GIMPLE_OMP_RETURN);
+  s->gsbase.subcode |= GF_OMP_RETURN_NOWAIT;
+}
+
+
+/* Return true if OMP return statement G has the GF_OMP_RETURN_NOWAIT
+   flag set.  */
+
+static inline bool
+gimple_omp_return_nowait_p (const_gimple g)
+{
+  GIMPLE_CHECK (g, GIMPLE_OMP_RETURN);
+  return (gimple_omp_subcode (g) & GF_OMP_RETURN_NOWAIT) != 0;
+}
+
+
+/* Return true if OMP section statement G has the GF_OMP_SECTION_LAST
+   flag set.  */
+
+static inline bool
+gimple_omp_section_last_p (const_gimple g)
+{
+  GIMPLE_CHECK (g, GIMPLE_OMP_SECTION);
+  return (gimple_omp_subcode (g) & GF_OMP_SECTION_LAST) != 0;
+}
+
+
+/* Set the GF_OMP_SECTION_LAST flag on G.  */
+
+static inline void
+gimple_omp_section_set_last (gimple g)
+{
+  GIMPLE_CHECK (g, GIMPLE_OMP_SECTION);
+  g->gsbase.subcode |= GF_OMP_SECTION_LAST;
+}
+
+
+/* Return true if OMP parallel statement G has the
+   GF_OMP_PARALLEL_COMBINED flag set.  */
+
+static inline bool
+gimple_omp_parallel_combined_p (const_gimple g)
+{
+  GIMPLE_CHECK (g, GIMPLE_OMP_PARALLEL);
+  return (gimple_omp_subcode (g) & GF_OMP_PARALLEL_COMBINED) != 0;
+}
+
+
+/* Set the GF_OMP_PARALLEL_COMBINED field in G depending on the boolean
+   value of COMBINED_P.  */
+
+static inline void
+gimple_omp_parallel_set_combined_p (gimple g, bool combined_p)
+{
+  GIMPLE_CHECK (g, GIMPLE_OMP_PARALLEL);
+  if (combined_p)
+    g->gsbase.subcode |= GF_OMP_PARALLEL_COMBINED;
+  else
+    g->gsbase.subcode &= ~GF_OMP_PARALLEL_COMBINED;
+}
+
+
+/* Return the number of operands for statement GS.  */
+
+static inline unsigned
+gimple_num_ops (const_gimple gs)
+{
+  return gs->gsbase.num_ops;
+}
+
+
+/* Set the number of operands for statement GS.  */
+
+static inline void
+gimple_set_num_ops (gimple gs, unsigned num_ops)
+{
+  gs->gsbase.num_ops = num_ops;
+}
+
+
+/* Return the array of operands for statement GS.  */
+
+static inline tree *
+gimple_ops (gimple gs)
+{
+  /* Offset in bytes to the location of the operand vector in every
+     tuple structure.  Defined in gimple.c  */
+  extern size_t const gimple_ops_offset_[];
+
+  if (!gimple_has_ops (gs))
+    return NULL;
+
+  /* All the tuples have their operand vector at the very bottom
+     of the structure.  */
+  return ((tree *) ((char *) gs + gimple_ops_offset_[gimple_code (gs)]));
+}
+
+
+/* Return operand I for statement GS.  */
+
+static inline tree
+gimple_op (const_gimple gs, unsigned i)
+{
+  if (gimple_has_ops (gs))
+    {
+      gcc_assert (i < gimple_num_ops (gs));
+      return gimple_ops (CONST_CAST_GIMPLE (gs))[i];
+    }
+  else
+    return NULL_TREE;
+}
+
+/* Return a pointer to operand I for statement GS.  */
+
+static inline tree *
+gimple_op_ptr (const_gimple gs, unsigned i)
+{
+  if (gimple_has_ops (gs))
+    {
+      gcc_assert (i < gimple_num_ops (gs));
+      return gimple_ops (CONST_CAST_GIMPLE (gs)) + i;
+    }
+  else
+    return NULL;
+}
+
+/* Set operand I of statement GS to OP.  */
+
+static inline void
+gimple_set_op (gimple gs, unsigned i, tree op)
+{
+  gcc_assert (gimple_has_ops (gs) && i < gimple_num_ops (gs));
+
+  /* Note.  It may be tempting to assert that OP matches
+     is_gimple_operand, but that would be wrong.  Different tuples
+     accept slightly different sets of tree operands.  Each caller
+     should perform its own validation.  */
+  gimple_ops (gs)[i] = op;
+}
+
+/* Return true if GS is a GIMPLE_ASSIGN.  */
+
+static inline bool
+is_gimple_assign (const_gimple gs)
+{
+  return gimple_code (gs) == GIMPLE_ASSIGN;
+}
+
+/* Determine if expression CODE is one of the valid expressions that can
+   be used on the RHS of GIMPLE assignments.  */
+
+static inline enum gimple_rhs_class
+get_gimple_rhs_class (enum tree_code code)
+{
+  return (enum gimple_rhs_class) gimple_rhs_class_table[(int) code];
+}
+
+/* Return the LHS of assignment statement GS.  */
+
+static inline tree
+gimple_assign_lhs (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASSIGN);
+  return gimple_op (gs, 0);
+}
+
+
+/* Return a pointer to the LHS of assignment statement GS.  */
+
+static inline tree *
+gimple_assign_lhs_ptr (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASSIGN);
+  return gimple_op_ptr (gs, 0);
+}
+
+
+/* Set LHS to be the LHS operand of assignment statement GS.  */
+
+static inline void
+gimple_assign_set_lhs (gimple gs, tree lhs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASSIGN);
+  gcc_assert (is_gimple_operand (lhs));
+  gimple_set_op (gs, 0, lhs);
+
+  if (lhs && TREE_CODE (lhs) == SSA_NAME)
+    SSA_NAME_DEF_STMT (lhs) = gs;
+}
+
+
+/* Return the first operand on the RHS of assignment statement GS.  */
+
+static inline tree
+gimple_assign_rhs1 (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASSIGN);
+  return gimple_op (gs, 1);
+}
+
+
+/* Return a pointer to the first operand on the RHS of assignment
+   statement GS.  */
+
+static inline tree *
+gimple_assign_rhs1_ptr (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASSIGN);
+  return gimple_op_ptr (gs, 1);
+}
+
+/* Set RHS to be the first operand on the RHS of assignment statement GS.  */
+
+static inline void
+gimple_assign_set_rhs1 (gimple gs, tree rhs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASSIGN);
+
+  /* If there are 3 or more operands, the 2 operands on the RHS must be
+     GIMPLE values.  */
+  if (gimple_num_ops (gs) >= 3)
+    gcc_assert (is_gimple_val (rhs));
+  else
+    gcc_assert (is_gimple_operand (rhs));
+
+  gimple_set_op (gs, 1, rhs);
+}
+
+
+/* Return the second operand on the RHS of assignment statement GS.
+   If GS does not have two operands, NULL is returned instead.  */
+
+static inline tree
+gimple_assign_rhs2 (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASSIGN);
+
+  if (gimple_num_ops (gs) >= 3)
+    return gimple_op (gs, 2);
+  else
+    return NULL_TREE;
+}
+
+
+/* Return a pointer to the second operand on the RHS of assignment
+   statement GS.  */
+
+static inline tree *
+gimple_assign_rhs2_ptr (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASSIGN);
+  return gimple_op_ptr (gs, 2);
+}
+
+
+/* Set RHS to be the second operand on the RHS of assignment statement GS.  */
+
+static inline void
+gimple_assign_set_rhs2 (gimple gs, tree rhs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASSIGN);
+
+  /* The 2 operands on the RHS must be GIMPLE values.  */
+  gcc_assert (is_gimple_val (rhs));
+
+  gimple_set_op (gs, 2, rhs);
+}
+
+/* Returns true if GS is a nontemporal move.  */
+
+static inline bool
+gimple_assign_nontemporal_move_p (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASSIGN);
+  return gs->gsbase.nontemporal_move;
+}
+
+/* Sets nontemporal move flag of GS to NONTEMPORAL.  */
+
+static inline void
+gimple_assign_set_nontemporal_move (gimple gs, bool nontemporal)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASSIGN);
+  gs->gsbase.nontemporal_move = nontemporal;
+}
+
+
+/* Return the code of the expression computed on the rhs of assignment
+   statement GS.  In case that the RHS is a single object, returns the
+   tree code of the object.  */
+
+static inline enum tree_code
+gimple_assign_rhs_code (const_gimple gs)
+{
+  enum tree_code code;
+  GIMPLE_CHECK (gs, GIMPLE_ASSIGN);
+
+  code = gimple_expr_code (gs);
+  if (get_gimple_rhs_class (code) == GIMPLE_SINGLE_RHS)
+    code = TREE_CODE (gimple_assign_rhs1 (gs));
+
+  return code;
+}
+
+
+/* Set CODE to be the code for the expression computed on the RHS of
+   assignment S.  */
+
+static inline void
+gimple_assign_set_rhs_code (gimple s, enum tree_code code)
+{
+  GIMPLE_CHECK (s, GIMPLE_ASSIGN);
+  s->gsbase.subcode = code;
+}
+
+
+/* Return the gimple rhs class of the code of the expression computed on
+   the rhs of assignment statement GS.
+   This will never return GIMPLE_INVALID_RHS.  */
+
+static inline enum gimple_rhs_class
+gimple_assign_rhs_class (const_gimple gs)
+{
+  return get_gimple_rhs_class (gimple_assign_rhs_code (gs));
+}
+
+
+/* Return true if S is a type-cast assignment.  */
+
+static inline bool
+gimple_assign_cast_p (gimple s)
+{
+  if (is_gimple_assign (s))
+    {
+      enum tree_code sc = gimple_assign_rhs_code (s);
+      return CONVERT_EXPR_CODE_P (sc)
+            || sc == VIEW_CONVERT_EXPR
+            || sc == FIX_TRUNC_EXPR;
+    }
+
+  return false;
+}
+
+
+/* Return true if GS is a GIMPLE_CALL.  */
+
+static inline bool
+is_gimple_call (const_gimple gs)
+{
+  return gimple_code (gs) == GIMPLE_CALL;
+}
+
+/* Return the LHS of call statement GS.  */
+
+static inline tree
+gimple_call_lhs (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CALL);
+  return gimple_op (gs, 0);
+}
+
+
+/* Return a pointer to the LHS of call statement GS.  */
+
+static inline tree *
+gimple_call_lhs_ptr (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CALL);
+  return gimple_op_ptr (gs, 0);
+}
+
+
+/* Set LHS to be the LHS operand of call statement GS.  */
+
+static inline void
+gimple_call_set_lhs (gimple gs, tree lhs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CALL);
+  gcc_assert (!lhs || is_gimple_operand (lhs));
+  gimple_set_op (gs, 0, lhs);
+  if (lhs && TREE_CODE (lhs) == SSA_NAME)
+    SSA_NAME_DEF_STMT (lhs) = gs;
+}
+
+
+/* Return the tree node representing the function called by call
+   statement GS.  */
+
+static inline tree
+gimple_call_fn (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CALL);
+  return gimple_op (gs, 1);
+}
+
+
+/* Return a pointer to the tree node representing the function called by call
+   statement GS.  */
+
+static inline tree *
+gimple_call_fn_ptr (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CALL);
+  return gimple_op_ptr (gs, 1);
+}
+
+
+/* Set FN to be the function called by call statement GS.  */
+
+static inline void
+gimple_call_set_fn (gimple gs, tree fn)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CALL);
+  gcc_assert (is_gimple_operand (fn));
+  gimple_set_op (gs, 1, fn);
+}
+
+
+/* Set FNDECL to be the function called by call statement GS.  */
+
+static inline void
+gimple_call_set_fndecl (gimple gs, tree decl)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CALL);
+  gcc_assert (TREE_CODE (decl) == FUNCTION_DECL);
+  gimple_set_op (gs, 1, build_fold_addr_expr (decl));
+}
+
+
+/* If a given GIMPLE_CALL's callee is a FUNCTION_DECL, return it.
+   Otherwise return NULL.  This function is analogous to
+   get_callee_fndecl in tree land.  */
+
+static inline tree
+gimple_call_fndecl (const_gimple gs)
+{
+  tree addr = gimple_call_fn (gs);
+  if (TREE_CODE (addr) == ADDR_EXPR)
+    {
+      gcc_assert (TREE_CODE (TREE_OPERAND (addr, 0)) == FUNCTION_DECL);
+      return TREE_OPERAND (addr, 0);
+    }
+  return NULL_TREE;
+}
+
+
+/* Return the type returned by call statement GS.  */
+
+static inline tree
+gimple_call_return_type (const_gimple gs)
+{
+  tree fn = gimple_call_fn (gs);
+  tree type = TREE_TYPE (fn);
+
+  /* See through the pointer.  */
+  gcc_assert (POINTER_TYPE_P (type));
+  type = TREE_TYPE (type);
+
+  gcc_assert (TREE_CODE (type) == FUNCTION_TYPE
+             || TREE_CODE (type) == METHOD_TYPE);
+
+  /* The type returned by a FUNCTION_DECL is the type of its
+     function type.  */
+  return TREE_TYPE (type);
+}
+
+
+/* Return the static chain for call statement GS.  */
+
+static inline tree
+gimple_call_chain (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CALL);
+  return gimple_op (gs, 2);
+}
+
+
+/* Return a pointer to the static chain for call statement GS.  */
+
+static inline tree *
+gimple_call_chain_ptr (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CALL);
+  return gimple_op_ptr (gs, 2);
+}
+
+/* Set CHAIN to be the static chain for call statement GS.  */
+
+static inline void
+gimple_call_set_chain (gimple gs, tree chain)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CALL);
+  gcc_assert (chain == NULL
+              || TREE_CODE (chain) == ADDR_EXPR
+              || SSA_VAR_P (chain));
+  gimple_set_op (gs, 2, chain);
+}
+
+
+/* Return the number of arguments used by call statement GS.  */
+
+static inline unsigned
+gimple_call_num_args (const_gimple gs)
+{
+  unsigned num_ops;
+  GIMPLE_CHECK (gs, GIMPLE_CALL);
+  num_ops = gimple_num_ops (gs);
+  gcc_assert (num_ops >= 3);
+  return num_ops - 3;
+}
+
+
+/* Return the argument at position INDEX for call statement GS.  */
+
+static inline tree
+gimple_call_arg (const_gimple gs, unsigned index)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CALL);
+  return gimple_op (gs, index + 3);
+}
+
+
+/* Return a pointer to the argument at position INDEX for call
+   statement GS.  */
+
+static inline tree *
+gimple_call_arg_ptr (const_gimple gs, unsigned index)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CALL);
+  return gimple_op_ptr (gs, index + 3);
+}
+
+
+/* Set ARG to be the argument at position INDEX for call statement GS.  */
+
+static inline void
+gimple_call_set_arg (gimple gs, unsigned index, tree arg)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CALL);
+  gcc_assert (is_gimple_operand (arg));
+  gimple_set_op (gs, index + 3, arg);
+}
+
+
+/* If TAIL_P is true, mark call statement S as being a tail call
+   (i.e., a call just before the exit of a function).  These calls are
+   candidate for tail call optimization.  */
+
+static inline void
+gimple_call_set_tail (gimple s, bool tail_p)
+{
+  GIMPLE_CHECK (s, GIMPLE_CALL);
+  if (tail_p)
+    s->gsbase.subcode |= GF_CALL_TAILCALL;
+  else
+    s->gsbase.subcode &= ~GF_CALL_TAILCALL;
+}
+
+
+/* Return true if GIMPLE_CALL S is marked as a tail call.  */
+
+static inline bool
+gimple_call_tail_p (gimple s)
+{
+  GIMPLE_CHECK (s, GIMPLE_CALL);
+  return (s->gsbase.subcode & GF_CALL_TAILCALL) != 0;
+}
+
+
+/* Set the inlinable status of GIMPLE_CALL S to INLINABLE_P.  */
+
+static inline void
+gimple_call_set_cannot_inline (gimple s, bool inlinable_p)
+{
+  GIMPLE_CHECK (s, GIMPLE_CALL);
+  if (inlinable_p)
+    s->gsbase.subcode |= GF_CALL_CANNOT_INLINE;
+  else
+    s->gsbase.subcode &= ~GF_CALL_CANNOT_INLINE;
+}
+
+
+/* Return true if GIMPLE_CALL S cannot be inlined.  */
+
+static inline bool
+gimple_call_cannot_inline_p (gimple s)
+{
+  GIMPLE_CHECK (s, GIMPLE_CALL);
+  return (s->gsbase.subcode & GF_CALL_CANNOT_INLINE) != 0;
+}
+
+
+/* If RETURN_SLOT_OPT_P is true mark GIMPLE_CALL S as valid for return
+   slot optimization.  This transformation uses the target of the call
+   expansion as the return slot for calls that return in memory.  */
+
+static inline void
+gimple_call_set_return_slot_opt (gimple s, bool return_slot_opt_p)
+{
+  GIMPLE_CHECK (s, GIMPLE_CALL);
+  if (return_slot_opt_p)
+    s->gsbase.subcode |= GF_CALL_RETURN_SLOT_OPT;
+  else
+    s->gsbase.subcode &= ~GF_CALL_RETURN_SLOT_OPT;
+}
+
+
+/* Return true if S is marked for return slot optimization.  */
+
+static inline bool
+gimple_call_return_slot_opt_p (gimple s)
+{
+  GIMPLE_CHECK (s, GIMPLE_CALL);
+  return (s->gsbase.subcode & GF_CALL_RETURN_SLOT_OPT) != 0;
+}
+
+
+/* If FROM_THUNK_P is true, mark GIMPLE_CALL S as being the jump from a
+   thunk to the thunked-to function.  */
+
+static inline void
+gimple_call_set_from_thunk (gimple s, bool from_thunk_p)
+{
+  GIMPLE_CHECK (s, GIMPLE_CALL);
+  if (from_thunk_p)
+    s->gsbase.subcode |= GF_CALL_FROM_THUNK;
+  else
+    s->gsbase.subcode &= ~GF_CALL_FROM_THUNK;
+}
+
+
+/* Return true if GIMPLE_CALL S is a jump from a thunk.  */
+
+static inline bool
+gimple_call_from_thunk_p (gimple s)
+{
+  GIMPLE_CHECK (s, GIMPLE_CALL);
+  return (s->gsbase.subcode & GF_CALL_FROM_THUNK) != 0;
+}
+
+
+/* If PASS_ARG_PACK_P is true, GIMPLE_CALL S is a stdarg call that needs the
+   argument pack in its argument list.  */
+
+static inline void
+gimple_call_set_va_arg_pack (gimple s, bool pass_arg_pack_p)
+{
+  GIMPLE_CHECK (s, GIMPLE_CALL);
+  if (pass_arg_pack_p)
+    s->gsbase.subcode |= GF_CALL_VA_ARG_PACK;
+  else
+    s->gsbase.subcode &= ~GF_CALL_VA_ARG_PACK;
+}
+
+
+/* Return true if GIMPLE_CALL S is a stdarg call that needs the
+   argument pack in its argument list.  */
+
+static inline bool
+gimple_call_va_arg_pack_p (gimple s)
+{
+  GIMPLE_CHECK (s, GIMPLE_CALL);
+  return (s->gsbase.subcode & GF_CALL_VA_ARG_PACK) != 0;
+}
+
+
+/* Return true if S is a noreturn call.  */
+
+static inline bool
+gimple_call_noreturn_p (gimple s)
+{
+  GIMPLE_CHECK (s, GIMPLE_CALL);
+  return (gimple_call_flags (s) & ECF_NORETURN) != 0;
+}
+
+
+/* Return true if S is a nothrow call.  */
+
+static inline bool
+gimple_call_nothrow_p (gimple s)
+{
+  GIMPLE_CHECK (s, GIMPLE_CALL);
+  return (gimple_call_flags (s) & ECF_NOTHROW) != 0;
+}
+
+
+/* Copy all the GF_CALL_* flags from ORIG_CALL to DEST_CALL.  */
+
+static inline void
+gimple_call_copy_flags (gimple dest_call, gimple orig_call)
+{
+  GIMPLE_CHECK (dest_call, GIMPLE_CALL);
+  GIMPLE_CHECK (orig_call, GIMPLE_CALL);
+  dest_call->gsbase.subcode = orig_call->gsbase.subcode;
+}
+
+
+/* Returns true if this is a GIMPLE_ASSIGN or a GIMPLE_CALL with a
+   non-NULL lhs.  */
+
+static inline bool
+gimple_has_lhs (gimple stmt)
+{
+  return (is_gimple_assign (stmt)
+         || (is_gimple_call (stmt)
+             && gimple_call_lhs (stmt) != NULL_TREE));
+}
+
+
+/* Return the code of the predicate computed by conditional statement GS.  */
+
+static inline enum tree_code
+gimple_cond_code (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_COND);
+  return gs->gsbase.subcode;
+}
+
+
+/* Set CODE to be the predicate code for the conditional statement GS.  */
+
+static inline void
+gimple_cond_set_code (gimple gs, enum tree_code code)
+{
+  GIMPLE_CHECK (gs, GIMPLE_COND);
+  gcc_assert (TREE_CODE_CLASS (code) == tcc_comparison);
+  gs->gsbase.subcode = code;
+}
+
+
+/* Return the LHS of the predicate computed by conditional statement GS.  */
+
+static inline tree
+gimple_cond_lhs (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_COND);
+  return gimple_op (gs, 0);
+}
+
+/* Return the pointer to the LHS of the predicate computed by conditional
+   statement GS.  */
+
+static inline tree *
+gimple_cond_lhs_ptr (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_COND);
+  return gimple_op_ptr (gs, 0);
+}
+
+/* Set LHS to be the LHS operand of the predicate computed by
+   conditional statement GS.  */
+
+static inline void
+gimple_cond_set_lhs (gimple gs, tree lhs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_COND);
+  gcc_assert (is_gimple_operand (lhs));
+  gimple_set_op (gs, 0, lhs);
+}
+
+
+/* Return the RHS operand of the predicate computed by conditional GS.  */
+
+static inline tree
+gimple_cond_rhs (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_COND);
+  return gimple_op (gs, 1);
+}
+
+/* Return the pointer to the RHS operand of the predicate computed by
+   conditional GS.  */
+
+static inline tree *
+gimple_cond_rhs_ptr (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_COND);
+  return gimple_op_ptr (gs, 1);
+}
+
+
+/* Set RHS to be the RHS operand of the predicate computed by
+   conditional statement GS.  */
+
+static inline void
+gimple_cond_set_rhs (gimple gs, tree rhs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_COND);
+  gcc_assert (is_gimple_operand (rhs));
+  gimple_set_op (gs, 1, rhs);
+}
+
+
+/* Return the label used by conditional statement GS when its
+   predicate evaluates to true.  */
+
+static inline tree
+gimple_cond_true_label (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_COND);
+  return gimple_op (gs, 2);
+}
+
+
+/* Set LABEL to be the label used by conditional statement GS when its
+   predicate evaluates to true.  */
+
+static inline void
+gimple_cond_set_true_label (gimple gs, tree label)
+{
+  GIMPLE_CHECK (gs, GIMPLE_COND);
+  gcc_assert (!label || TREE_CODE (label) == LABEL_DECL);
+  gimple_set_op (gs, 2, label);
+}
+
+
+/* Set LABEL to be the label used by conditional statement GS when its
+   predicate evaluates to false.  */
+
+static inline void
+gimple_cond_set_false_label (gimple gs, tree label)
+{
+  GIMPLE_CHECK (gs, GIMPLE_COND);
+  gcc_assert (!label || TREE_CODE (label) == LABEL_DECL);
+  gimple_set_op (gs, 3, label);
+}
+
+
+/* Return the label used by conditional statement GS when its
+   predicate evaluates to false.  */
+
+static inline tree
+gimple_cond_false_label (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_COND);
+  return gimple_op (gs, 3);
+}
+
+
+/* Set the conditional COND_STMT to be of the form 'if (1 == 0)'.  */
+
+static inline void
+gimple_cond_make_false (gimple gs)
+{
+  gimple_cond_set_lhs (gs, boolean_true_node);
+  gimple_cond_set_rhs (gs, boolean_false_node);
+  gs->gsbase.subcode = EQ_EXPR;
+}
+
+
+/* Set the conditional COND_STMT to be of the form 'if (1 == 1)'.  */
+
+static inline void
+gimple_cond_make_true (gimple gs)
+{
+  gimple_cond_set_lhs (gs, boolean_true_node);
+  gimple_cond_set_rhs (gs, boolean_true_node);
+  gs->gsbase.subcode = EQ_EXPR;
+}
+
+/* Check if conditional statemente GS is of the form 'if (1 == 1)',
+  'if (0 == 0)', 'if (1 != 0)' or 'if (0 != 1)' */
+
+static inline bool
+gimple_cond_true_p (const_gimple gs)
+{
+  tree lhs = gimple_cond_lhs (gs);
+  tree rhs = gimple_cond_rhs (gs);
+  enum tree_code code = gimple_cond_code (gs);
+
+  if (lhs != boolean_true_node && lhs != boolean_false_node)
+    return false;
+
+  if (rhs != boolean_true_node && rhs != boolean_false_node)
+    return false;
+
+  if (code == NE_EXPR && lhs != rhs)
+    return true;
+
+  if (code == EQ_EXPR && lhs == rhs)
+      return true;
+
+  return false;
+}
+
+/* Check if conditional statement GS is of the form 'if (1 != 1)',
+   'if (0 != 0)', 'if (1 == 0)' or 'if (0 == 1)' */
+
+static inline bool
+gimple_cond_false_p (const_gimple gs)
+{
+  tree lhs = gimple_cond_lhs (gs);
+  tree rhs = gimple_cond_rhs (gs);
+  enum tree_code code = gimple_cond_code (gs);
+
+  if (lhs != boolean_true_node && lhs != boolean_false_node)
+    return false;
+
+  if (rhs != boolean_true_node && rhs != boolean_false_node)
+    return false;
+
+  if (code == NE_EXPR && lhs == rhs)
+    return true;
+
+  if (code == EQ_EXPR && lhs != rhs)
+      return true;
+
+  return false;
+}
+
+/* Check if conditional statement GS is of the form 'if (var != 0)' or
+   'if (var == 1)' */
+
+static inline bool
+gimple_cond_single_var_p (gimple gs)
+{
+  if (gimple_cond_code (gs) == NE_EXPR
+      && gimple_cond_rhs (gs) == boolean_false_node)
+    return true;
+
+  if (gimple_cond_code (gs) == EQ_EXPR
+      && gimple_cond_rhs (gs) == boolean_true_node)
+    return true;
+
+  return false;
+}
+
+/* Set the code, LHS and RHS of GIMPLE_COND STMT from CODE, LHS and RHS.  */
+
+static inline void
+gimple_cond_set_condition (gimple stmt, enum tree_code code, tree lhs, tree rhs)
+{
+  gimple_cond_set_code (stmt, code);
+  gimple_cond_set_lhs (stmt, lhs);
+  gimple_cond_set_rhs (stmt, rhs);
+}
+
+/* Return the LABEL_DECL node used by GIMPLE_LABEL statement GS.  */
+
+static inline tree
+gimple_label_label (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_LABEL);
+  return gimple_op (gs, 0);
+}
+
+
+/* Set LABEL to be the LABEL_DECL node used by GIMPLE_LABEL statement
+   GS.  */
+
+static inline void
+gimple_label_set_label (gimple gs, tree label)
+{
+  GIMPLE_CHECK (gs, GIMPLE_LABEL);
+  gcc_assert (TREE_CODE (label) == LABEL_DECL);
+  gimple_set_op (gs, 0, label);
+}
+
+
+/* Return the destination of the unconditional jump GS.  */
+
+static inline tree
+gimple_goto_dest (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_GOTO);
+  return gimple_op (gs, 0);
+}
+
+
+/* Set DEST to be the destination of the unconditonal jump GS.  */
+
+static inline void 
+gimple_goto_set_dest (gimple gs, tree dest)
+{
+  GIMPLE_CHECK (gs, GIMPLE_GOTO);
+  gcc_assert (is_gimple_operand (dest));
+  gimple_set_op (gs, 0, dest);
+}
+
+
+/* Return the variables declared in the GIMPLE_BIND statement GS.  */
+
+static inline tree
+gimple_bind_vars (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_BIND);
+  return gs->gimple_bind.vars;
+}
+
+
+/* Set VARS to be the set of variables declared in the GIMPLE_BIND
+   statement GS.  */
+
+static inline void
+gimple_bind_set_vars (gimple gs, tree vars)
+{
+  GIMPLE_CHECK (gs, GIMPLE_BIND);
+  gs->gimple_bind.vars = vars;
+}
+
+
+/* Append VARS to the set of variables declared in the GIMPLE_BIND
+   statement GS.  */
+
+static inline void
+gimple_bind_append_vars (gimple gs, tree vars)
+{
+  GIMPLE_CHECK (gs, GIMPLE_BIND);
+  gs->gimple_bind.vars = chainon (gs->gimple_bind.vars, vars);
+}
+
+
+/* Return the GIMPLE sequence contained in the GIMPLE_BIND statement GS.  */
+
+static inline gimple_seq
+gimple_bind_body (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_BIND);
+  return gs->gimple_bind.body;
+}
+
+
+/* Set SEQ to be the GIMPLE sequence contained in the GIMPLE_BIND
+   statement GS.  */
+
+static inline void
+gimple_bind_set_body (gimple gs, gimple_seq seq)
+{
+  GIMPLE_CHECK (gs, GIMPLE_BIND);
+  gs->gimple_bind.body = seq;
+}
+
+
+/* Append a statement to the end of a GIMPLE_BIND's body.  */
+
+static inline void
+gimple_bind_add_stmt (gimple gs, gimple stmt)
+{
+  GIMPLE_CHECK (gs, GIMPLE_BIND);
+  gimple_seq_add_stmt (&gs->gimple_bind.body, stmt);
+}
+
+
+/* Append a sequence of statements to the end of a GIMPLE_BIND's body.  */
+
+static inline void
+gimple_bind_add_seq (gimple gs, gimple_seq seq)
+{
+  GIMPLE_CHECK (gs, GIMPLE_BIND);
+  gimple_seq_add_seq (&gs->gimple_bind.body, seq);
+}
+
+
+/* Return the TREE_BLOCK node associated with GIMPLE_BIND statement
+   GS.  This is analogous to the BIND_EXPR_BLOCK field in trees.  */
+
+static inline tree
+gimple_bind_block (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_BIND);
+  return gs->gimple_bind.block;
+}
+
+
+/* Set BLOCK to be the TREE_BLOCK node associated with GIMPLE_BIND
+   statement GS.  */
+
+static inline void
+gimple_bind_set_block (gimple gs, tree block)
+{
+  GIMPLE_CHECK (gs, GIMPLE_BIND);
+  gcc_assert (block == NULL_TREE || TREE_CODE (block) == BLOCK);
+  gs->gimple_bind.block = block;
+}
+
+
+/* Return the number of input operands for GIMPLE_ASM GS.  */
+
+static inline unsigned
+gimple_asm_ninputs (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASM);
+  return gs->gimple_asm.ni;
+}
+
+
+/* Return the number of output operands for GIMPLE_ASM GS.  */
+
+static inline unsigned
+gimple_asm_noutputs (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASM);
+  return gs->gimple_asm.no;
+}
+
+
+/* Return the number of clobber operands for GIMPLE_ASM GS.  */
+
+static inline unsigned
+gimple_asm_nclobbers (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASM);
+  return gs->gimple_asm.nc;
+}
+
+
+/* Return input operand INDEX of GIMPLE_ASM GS.  */
+
+static inline tree
+gimple_asm_input_op (const_gimple gs, unsigned index)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASM);
+  gcc_assert (index <= gs->gimple_asm.ni);
+  return gimple_op (gs, index);
+}
+
+/* Return a pointer to input operand INDEX of GIMPLE_ASM GS.  */
+
+static inline tree *
+gimple_asm_input_op_ptr (const_gimple gs, unsigned index)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASM);
+  gcc_assert (index <= gs->gimple_asm.ni);
+  return gimple_op_ptr (gs, index);
+}
+
+
+/* Set IN_OP to be input operand INDEX in GIMPLE_ASM GS.  */
+
+static inline void
+gimple_asm_set_input_op (gimple gs, unsigned index, tree in_op)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASM);
+  gcc_assert (index <= gs->gimple_asm.ni);
+  gcc_assert (TREE_CODE (in_op) == TREE_LIST);
+  gimple_set_op (gs, index, in_op);
+}
+
+
+/* Return output operand INDEX of GIMPLE_ASM GS.  */
+
+static inline tree
+gimple_asm_output_op (const_gimple gs, unsigned index)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASM);
+  gcc_assert (index <= gs->gimple_asm.no);
+  return gimple_op (gs, index + gs->gimple_asm.ni);
+}
+
+/* Return a pointer to output operand INDEX of GIMPLE_ASM GS.  */
+
+static inline tree *
+gimple_asm_output_op_ptr (const_gimple gs, unsigned index)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASM);
+  gcc_assert (index <= gs->gimple_asm.no);
+  return gimple_op_ptr (gs, index + gs->gimple_asm.ni);
+}
+
+
+/* Set OUT_OP to be output operand INDEX in GIMPLE_ASM GS.  */
+
+static inline void
+gimple_asm_set_output_op (gimple gs, unsigned index, tree out_op)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASM);
+  gcc_assert (index <= gs->gimple_asm.no);
+  gcc_assert (TREE_CODE (out_op) == TREE_LIST);
+  gimple_set_op (gs, index + gs->gimple_asm.ni, out_op);
+}
+
+
+/* Return clobber operand INDEX of GIMPLE_ASM GS.  */
+
+static inline tree
+gimple_asm_clobber_op (const_gimple gs, unsigned index)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASM);
+  gcc_assert (index <= gs->gimple_asm.nc);
+  return gimple_op (gs, index + gs->gimple_asm.ni + gs->gimple_asm.no);
+}
+
+
+/* Set CLOBBER_OP to be clobber operand INDEX in GIMPLE_ASM GS.  */
+
+static inline void
+gimple_asm_set_clobber_op (gimple gs, unsigned index, tree clobber_op)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASM);
+  gcc_assert (index <= gs->gimple_asm.nc);
+  gcc_assert (TREE_CODE (clobber_op) == TREE_LIST);
+  gimple_set_op (gs, index + gs->gimple_asm.ni + gs->gimple_asm.no, clobber_op);
+}
+
+
+/* Return the string representing the assembly instruction in
+   GIMPLE_ASM GS.  */
+
+static inline const char *
+gimple_asm_string (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASM);
+  return gs->gimple_asm.string;
+}
+
+
+/* Return true if GS is an asm statement marked volatile.  */
+
+static inline bool
+gimple_asm_volatile_p (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASM);
+  return (gs->gsbase.subcode & GF_ASM_VOLATILE) != 0;
+}
+
+
+/* If VOLATLE_P is true, mark asm statement GS as volatile.  */
+
+static inline void
+gimple_asm_set_volatile (gimple gs, bool volatile_p)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASM);
+  if (volatile_p)
+    gs->gsbase.subcode |= GF_ASM_VOLATILE;
+  else
+    gs->gsbase.subcode &= ~GF_ASM_VOLATILE;
+}
+
+
+/* If INPUT_P is true, mark asm GS as an ASM_INPUT.  */
+
+static inline void
+gimple_asm_set_input (gimple gs, bool input_p)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASM);
+  if (input_p)
+    gs->gsbase.subcode |= GF_ASM_INPUT;
+  else
+    gs->gsbase.subcode &= ~GF_ASM_INPUT;
+}
+
+
+/* Return true if asm GS is an ASM_INPUT.  */
+
+static inline bool
+gimple_asm_input_p (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_ASM);
+  return (gs->gsbase.subcode & GF_ASM_INPUT) != 0;
+}
+
+
+/* Return the types handled by GIMPLE_CATCH statement GS.  */
+
+static inline tree
+gimple_catch_types (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CATCH);
+  return gs->gimple_catch.types;
+}
+
+
+/* Return a pointer to the types handled by GIMPLE_CATCH statement GS.  */
+
+static inline tree *
+gimple_catch_types_ptr (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CATCH);
+  return &gs->gimple_catch.types;
+}
+
+
+/* Return the GIMPLE sequence representing the body of the handler of
+   GIMPLE_CATCH statement GS.  */
+
+static inline gimple_seq
+gimple_catch_handler (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CATCH);
+  return gs->gimple_catch.handler;
+}
+
+
+/* Return a pointer to the GIMPLE sequence representing the body of
+   the handler of GIMPLE_CATCH statement GS.  */
+
+static inline gimple_seq *
+gimple_catch_handler_ptr (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CATCH);
+  return &gs->gimple_catch.handler;
+}
+
+
+/* Set T to be the set of types handled by GIMPLE_CATCH GS.  */
+
+static inline void
+gimple_catch_set_types (gimple gs, tree t)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CATCH);
+  gs->gimple_catch.types = t;
+}
+
+
+/* Set HANDLER to be the body of GIMPLE_CATCH GS.  */
+
+static inline void
+gimple_catch_set_handler (gimple gs, gimple_seq handler)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CATCH);
+  gs->gimple_catch.handler = handler;
+}
+
+
+/* Return the types handled by GIMPLE_EH_FILTER statement GS.  */
+
+static inline tree
+gimple_eh_filter_types (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_EH_FILTER);
+  return gs->gimple_eh_filter.types;
+}
+
+
+/* Return a pointer to the types handled by GIMPLE_EH_FILTER statement
+   GS.  */
+
+static inline tree *
+gimple_eh_filter_types_ptr (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_EH_FILTER);
+  return &gs->gimple_eh_filter.types;
+}
+
+
+/* Return the sequence of statement to execute when GIMPLE_EH_FILTER
+   statement fails.  */
+
+static inline gimple_seq
+gimple_eh_filter_failure (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_EH_FILTER);
+  return gs->gimple_eh_filter.failure;
+}
+
+
+/* Set TYPES to be the set of types handled by GIMPLE_EH_FILTER GS.  */
+
+static inline void
+gimple_eh_filter_set_types (gimple gs, tree types)
+{
+  GIMPLE_CHECK (gs, GIMPLE_EH_FILTER);
+  gs->gimple_eh_filter.types = types;
+}
+
+
+/* Set FAILURE to be the sequence of statements to execute on failure
+   for GIMPLE_EH_FILTER GS.  */
+
+static inline void
+gimple_eh_filter_set_failure (gimple gs, gimple_seq failure)
+{
+  GIMPLE_CHECK (gs, GIMPLE_EH_FILTER);
+  gs->gimple_eh_filter.failure = failure;
+}
+
+/* Return the EH_FILTER_MUST_NOT_THROW flag.  */
+
+static inline bool
+
+gimple_eh_filter_must_not_throw (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_EH_FILTER);
+  return gs->gsbase.subcode != 0;
+}
+
+/* Set the EH_FILTER_MUST_NOT_THROW flag to the value MNTP.  */
+
+static inline void
+gimple_eh_filter_set_must_not_throw (gimple gs, bool mntp)
+{
+  GIMPLE_CHECK (gs, GIMPLE_EH_FILTER);
+  gs->gsbase.subcode = (unsigned int) mntp;
+}
+
+
+/* GIMPLE_TRY accessors. */
+
+/* Return the kind of try block represented by GIMPLE_TRY GS.  This is
+   either GIMPLE_TRY_CATCH or GIMPLE_TRY_FINALLY.  */
+
+static inline enum gimple_try_flags
+gimple_try_kind (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_TRY);
+  return (enum gimple_try_flags) (gs->gsbase.subcode & GIMPLE_TRY_KIND);
+}
+
+
+/* Set the kind of try block represented by GIMPLE_TRY GS.  */
+
+static inline void
+gimple_try_set_kind (gimple gs, enum gimple_try_flags kind)
+{
+  GIMPLE_CHECK (gs, GIMPLE_TRY);
+  gcc_assert (kind == GIMPLE_TRY_CATCH || kind == GIMPLE_TRY_FINALLY);
+  if (gimple_try_kind (gs) != kind)
+    gs->gsbase.subcode = (unsigned int) kind;
+}
+
+
+/* Return the GIMPLE_TRY_CATCH_IS_CLEANUP flag.  */
+
+static inline bool
+gimple_try_catch_is_cleanup (const_gimple gs)
+{
+  gcc_assert (gimple_try_kind (gs) == GIMPLE_TRY_CATCH);
+  return (gs->gsbase.subcode & GIMPLE_TRY_CATCH_IS_CLEANUP) != 0;
+}
+
+
+/* Return the sequence of statements used as the body for GIMPLE_TRY GS.  */
+
+static inline gimple_seq
+gimple_try_eval (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_TRY);
+  return gs->gimple_try.eval;
+}
+
+
+/* Return the sequence of statements used as the cleanup body for
+   GIMPLE_TRY GS.  */
+
+static inline gimple_seq
+gimple_try_cleanup (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_TRY);
+  return gs->gimple_try.cleanup;
+}
+
+
+/* Set the GIMPLE_TRY_CATCH_IS_CLEANUP flag.  */
+
+static inline void
+gimple_try_set_catch_is_cleanup (gimple g, bool catch_is_cleanup)
+{
+  gcc_assert (gimple_try_kind (g) == GIMPLE_TRY_CATCH);
+  if (catch_is_cleanup)
+    g->gsbase.subcode |= GIMPLE_TRY_CATCH_IS_CLEANUP;
+  else
+    g->gsbase.subcode &= ~GIMPLE_TRY_CATCH_IS_CLEANUP;
+}
+
+
+/* Set EVAL to be the sequence of statements to use as the body for
+   GIMPLE_TRY GS.  */
+
+static inline void
+gimple_try_set_eval (gimple gs, gimple_seq eval)
+{
+  GIMPLE_CHECK (gs, GIMPLE_TRY);
+  gs->gimple_try.eval = eval;
+}
+
+
+/* Set CLEANUP to be the sequence of statements to use as the cleanup
+   body for GIMPLE_TRY GS.  */
+
+static inline void
+gimple_try_set_cleanup (gimple gs, gimple_seq cleanup)
+{
+  GIMPLE_CHECK (gs, GIMPLE_TRY);
+  gs->gimple_try.cleanup = cleanup;
+}
+
+
+/* Return the cleanup sequence for cleanup statement GS.  */
+
+static inline gimple_seq
+gimple_wce_cleanup (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_WITH_CLEANUP_EXPR);
+  return gs->gimple_wce.cleanup;
+}
+
+
+/* Set CLEANUP to be the cleanup sequence for GS.  */
+
+static inline void
+gimple_wce_set_cleanup (gimple gs, gimple_seq cleanup)
+{
+  GIMPLE_CHECK (gs, GIMPLE_WITH_CLEANUP_EXPR);
+  gs->gimple_wce.cleanup = cleanup;
+}
+
+
+/* Return the CLEANUP_EH_ONLY flag for a WCE tuple.  */
+
+static inline bool
+gimple_wce_cleanup_eh_only (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_WITH_CLEANUP_EXPR);
+  return gs->gsbase.subcode != 0;
+}
+
+
+/* Set the CLEANUP_EH_ONLY flag for a WCE tuple.  */
+
+static inline void
+gimple_wce_set_cleanup_eh_only (gimple gs, bool eh_only_p)
+{
+  GIMPLE_CHECK (gs, GIMPLE_WITH_CLEANUP_EXPR);
+  gs->gsbase.subcode = (unsigned int) eh_only_p;
+}
+
+
+/* Return the maximum number of arguments supported by GIMPLE_PHI GS.  */
+
+static inline unsigned
+gimple_phi_capacity (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_PHI);
+  return gs->gimple_phi.capacity;
+}
+
+
+/* Return the number of arguments in GIMPLE_PHI GS.  This must always
+   be exactly the number of incoming edges for the basic block holding
+   GS.  */
+
+static inline unsigned
+gimple_phi_num_args (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_PHI);
+  return gs->gimple_phi.nargs;
+}
+
+
+/* Return the SSA name created by GIMPLE_PHI GS.  */
+
+static inline tree
+gimple_phi_result (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_PHI);
+  return gs->gimple_phi.result;
+}
+
+/* Return a pointer to the SSA name created by GIMPLE_PHI GS.  */
+
+static inline tree *
+gimple_phi_result_ptr (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_PHI);
+  return &gs->gimple_phi.result;
+}
+
+/* Set RESULT to be the SSA name created by GIMPLE_PHI GS.  */
+
+static inline void
+gimple_phi_set_result (gimple gs, tree result)
+{
+  GIMPLE_CHECK (gs, GIMPLE_PHI);
+  gs->gimple_phi.result = result;
+}
+
+
+/* Return the PHI argument corresponding to incoming edge INDEX for
+   GIMPLE_PHI GS.  */
+
+static inline struct phi_arg_d *
+gimple_phi_arg (gimple gs, unsigned index)
+{
+  GIMPLE_CHECK (gs, GIMPLE_PHI);
+  gcc_assert (index <= gs->gimple_phi.capacity);
+  return &(gs->gimple_phi.args[index]);
+}
+
+/* Set PHIARG to be the argument corresponding to incoming edge INDEX
+   for GIMPLE_PHI GS.  */
+
+static inline void
+gimple_phi_set_arg (gimple gs, unsigned index, struct phi_arg_d * phiarg)
+{
+  GIMPLE_CHECK (gs, GIMPLE_PHI);
+  gcc_assert (index <= gs->gimple_phi.nargs);
+  memcpy (gs->gimple_phi.args + index, phiarg, sizeof (struct phi_arg_d));
+}
+
+/* Return the region number for GIMPLE_RESX GS.  */
+
+static inline int
+gimple_resx_region (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_RESX);
+  return gs->gimple_resx.region;
+}
+
+/* Set REGION to be the region number for GIMPLE_RESX GS.  */
+
+static inline void
+gimple_resx_set_region (gimple gs, int region)
+{
+  GIMPLE_CHECK (gs, GIMPLE_RESX);
+  gs->gimple_resx.region = region;
+}
+
+
+/* Return the number of labels associated with the switch statement GS.  */
+
+static inline unsigned
+gimple_switch_num_labels (const_gimple gs)
+{
+  unsigned num_ops;
+  GIMPLE_CHECK (gs, GIMPLE_SWITCH);
+  num_ops = gimple_num_ops (gs);
+  gcc_assert (num_ops > 1);
+  return num_ops - 1;
+}
+
+
+/* Set NLABELS to be the number of labels for the switch statement GS.  */
+
+static inline void
+gimple_switch_set_num_labels (gimple g, unsigned nlabels)
+{
+  GIMPLE_CHECK (g, GIMPLE_SWITCH);
+  gimple_set_num_ops (g, nlabels + 1);
+}
+
+
+/* Return the index variable used by the switch statement GS.  */
+
+static inline tree
+gimple_switch_index (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_SWITCH);
+  return gimple_op (gs, 0);
+}
+
+
+/* Return a pointer to the index variable for the switch statement GS.  */
+
+static inline tree *
+gimple_switch_index_ptr (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_SWITCH);
+  return gimple_op_ptr (gs, 0);
+}
+
+
+/* Set INDEX to be the index variable for switch statement GS.  */
+
+static inline void
+gimple_switch_set_index (gimple gs, tree index)
+{
+  GIMPLE_CHECK (gs, GIMPLE_SWITCH);
+  gcc_assert (SSA_VAR_P (index) || CONSTANT_CLASS_P (index));
+  gimple_set_op (gs, 0, index);
+}
+
+
+/* Return the label numbered INDEX.  The default label is 0, followed by any
+   labels in a switch statement.  */
+
+static inline tree
+gimple_switch_label (const_gimple gs, unsigned index)
+{
+  GIMPLE_CHECK (gs, GIMPLE_SWITCH);
+  gcc_assert (gimple_num_ops (gs) > index + 1);
+  return gimple_op (gs, index + 1);
+}
+
+/* Set the label number INDEX to LABEL.  0 is always the default label.  */
+
+static inline void
+gimple_switch_set_label (gimple gs, unsigned index, tree label)
+{
+  GIMPLE_CHECK (gs, GIMPLE_SWITCH);
+  gcc_assert (gimple_num_ops (gs) > index + 1);
+  gcc_assert (label == NULL_TREE || TREE_CODE (label) == CASE_LABEL_EXPR);
+  gimple_set_op (gs, index + 1, label);
+}
+
+/* Return the default label for a switch statement.  */
+
+static inline tree
+gimple_switch_default_label (const_gimple gs)
+{
+  return gimple_switch_label (gs, 0);
+}
+
+/* Set the default label for a switch statement.  */
+
+static inline void
+gimple_switch_set_default_label (gimple gs, tree label)
+{
+  gimple_switch_set_label (gs, 0, label);
+}
+
+
+/* Return the body for the OMP statement GS.  */
+
+static inline gimple_seq 
+gimple_omp_body (gimple gs)
+{
+  return gs->omp.body;
+}
+
+/* Set BODY to be the body for the OMP statement GS.  */
+
+static inline void
+gimple_omp_set_body (gimple gs, gimple_seq body)
+{
+  gs->omp.body = body;
+}
+
+
+/* Return the name associated with OMP_CRITICAL statement GS.  */
+
+static inline tree
+gimple_omp_critical_name (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_CRITICAL);
+  return gs->gimple_omp_critical.name;
+}
+
+
+/* Return a pointer to the name associated with OMP critical statement GS.  */
+
+static inline tree *
+gimple_omp_critical_name_ptr (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_CRITICAL);
+  return &gs->gimple_omp_critical.name;
+}
+
+
+/* Set NAME to be the name associated with OMP critical statement GS.  */
+
+static inline void
+gimple_omp_critical_set_name (gimple gs, tree name)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_CRITICAL);
+  gs->gimple_omp_critical.name = name;
+}
+
+
+/* Return the clauses associated with OMP_FOR GS.  */
+
+static inline tree
+gimple_omp_for_clauses (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_FOR);
+  return gs->gimple_omp_for.clauses;
+}
+
+
+/* Return a pointer to the OMP_FOR GS.  */
+
+static inline tree *
+gimple_omp_for_clauses_ptr (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_FOR);
+  return &gs->gimple_omp_for.clauses;
+}
+
+
+/* Set CLAUSES to be the list of clauses associated with OMP_FOR GS.  */
+
+static inline void
+gimple_omp_for_set_clauses (gimple gs, tree clauses)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_FOR);
+  gs->gimple_omp_for.clauses = clauses;
+}
+
+
+/* Get the collapse count of OMP_FOR GS.  */
+
+static inline size_t
+gimple_omp_for_collapse (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_FOR);
+  return gs->gimple_omp_for.collapse;
+}
+
+
+/* Return the index variable for OMP_FOR GS.  */
+
+static inline tree
+gimple_omp_for_index (const_gimple gs, size_t i)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_FOR);
+  gcc_assert (i < gs->gimple_omp_for.collapse);
+  return gs->gimple_omp_for.iter[i].index;
+}
+
+
+/* Return a pointer to the index variable for OMP_FOR GS.  */
+
+static inline tree *
+gimple_omp_for_index_ptr (gimple gs, size_t i)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_FOR);
+  gcc_assert (i < gs->gimple_omp_for.collapse);
+  return &gs->gimple_omp_for.iter[i].index;
+}
+
+
+/* Set INDEX to be the index variable for OMP_FOR GS.  */
+
+static inline void
+gimple_omp_for_set_index (gimple gs, size_t i, tree index)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_FOR);
+  gcc_assert (i < gs->gimple_omp_for.collapse);
+  gs->gimple_omp_for.iter[i].index = index;
+}
+
+
+/* Return the initial value for OMP_FOR GS.  */
+
+static inline tree
+gimple_omp_for_initial (const_gimple gs, size_t i)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_FOR);
+  gcc_assert (i < gs->gimple_omp_for.collapse);
+  return gs->gimple_omp_for.iter[i].initial;
+}
+
+
+/* Return a pointer to the initial value for OMP_FOR GS.  */
+
+static inline tree *
+gimple_omp_for_initial_ptr (gimple gs, size_t i)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_FOR);
+  gcc_assert (i < gs->gimple_omp_for.collapse);
+  return &gs->gimple_omp_for.iter[i].initial;
+}
+
+
+/* Set INITIAL to be the initial value for OMP_FOR GS.  */
+
+static inline void
+gimple_omp_for_set_initial (gimple gs, size_t i, tree initial)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_FOR);
+  gcc_assert (i < gs->gimple_omp_for.collapse);
+  gs->gimple_omp_for.iter[i].initial = initial;
+}
+
+
+/* Return the final value for OMP_FOR GS.  */
+
+static inline tree
+gimple_omp_for_final (const_gimple gs, size_t i)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_FOR);
+  gcc_assert (i < gs->gimple_omp_for.collapse);
+  return gs->gimple_omp_for.iter[i].final;
+}
+
+
+/* Return a pointer to the final value for OMP_FOR GS.  */
+
+static inline tree *
+gimple_omp_for_final_ptr (gimple gs, size_t i)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_FOR);
+  gcc_assert (i < gs->gimple_omp_for.collapse);
+  return &gs->gimple_omp_for.iter[i].final;
+}
+
+
+/* Set FINAL to be the final value for OMP_FOR GS.  */
+
+static inline void
+gimple_omp_for_set_final (gimple gs, size_t i, tree final)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_FOR);
+  gcc_assert (i < gs->gimple_omp_for.collapse);
+  gs->gimple_omp_for.iter[i].final = final;
+}
+
+
+/* Return the increment value for OMP_FOR GS.  */
+
+static inline tree
+gimple_omp_for_incr (const_gimple gs, size_t i)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_FOR);
+  gcc_assert (i < gs->gimple_omp_for.collapse);
+  return gs->gimple_omp_for.iter[i].incr;
+}
+
+
+/* Return a pointer to the increment value for OMP_FOR GS.  */
+
+static inline tree *
+gimple_omp_for_incr_ptr (gimple gs, size_t i)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_FOR);
+  gcc_assert (i < gs->gimple_omp_for.collapse);
+  return &gs->gimple_omp_for.iter[i].incr;
+}
+
+
+/* Set INCR to be the increment value for OMP_FOR GS.  */
+
+static inline void
+gimple_omp_for_set_incr (gimple gs, size_t i, tree incr)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_FOR);
+  gcc_assert (i < gs->gimple_omp_for.collapse);
+  gs->gimple_omp_for.iter[i].incr = incr;
+}
+
+
+/* Return the sequence of statements to execute before the OMP_FOR
+   statement GS starts.  */
+
+static inline gimple_seq
+gimple_omp_for_pre_body (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_FOR);
+  return gs->gimple_omp_for.pre_body;
+}
+
+
+/* Set PRE_BODY to be the sequence of statements to execute before the
+   OMP_FOR statement GS starts.  */
+
+static inline void
+gimple_omp_for_set_pre_body (gimple gs, gimple_seq pre_body)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_FOR);
+  gs->gimple_omp_for.pre_body = pre_body;
+}
+
+
+/* Return the clauses associated with OMP_PARALLEL GS.  */
+
+static inline tree
+gimple_omp_parallel_clauses (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_PARALLEL);
+  return gs->gimple_omp_parallel.clauses;
+}
+
+
+/* Return a pointer to the clauses associated with OMP_PARALLEL GS.  */
+
+static inline tree *
+gimple_omp_parallel_clauses_ptr (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_PARALLEL);
+  return &gs->gimple_omp_parallel.clauses;
+}
+
+
+/* Set CLAUSES to be the list of clauses associated with OMP_PARALLEL
+   GS.  */
+
+static inline void
+gimple_omp_parallel_set_clauses (gimple gs, tree clauses)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_PARALLEL);
+  gs->gimple_omp_parallel.clauses = clauses;
+}
+
+
+/* Return the child function used to hold the body of OMP_PARALLEL GS.  */
+
+static inline tree
+gimple_omp_parallel_child_fn (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_PARALLEL);
+  return gs->gimple_omp_parallel.child_fn;
+}
+
+/* Return a pointer to the child function used to hold the body of
+   OMP_PARALLEL GS.  */
+
+static inline tree *
+gimple_omp_parallel_child_fn_ptr (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_PARALLEL);
+  return &gs->gimple_omp_parallel.child_fn;
+}
+
+
+/* Set CHILD_FN to be the child function for OMP_PARALLEL GS.  */
+
+static inline void
+gimple_omp_parallel_set_child_fn (gimple gs, tree child_fn)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_PARALLEL);
+  gs->gimple_omp_parallel.child_fn = child_fn;
+}
+
+
+/* Return the artificial argument used to send variables and values
+   from the parent to the children threads in OMP_PARALLEL GS.  */
+
+static inline tree
+gimple_omp_parallel_data_arg (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_PARALLEL);
+  return gs->gimple_omp_parallel.data_arg;
+}
+
+
+/* Return a pointer to the data argument for OMP_PARALLEL GS.  */
+
+static inline tree *
+gimple_omp_parallel_data_arg_ptr (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_PARALLEL);
+  return &gs->gimple_omp_parallel.data_arg;
+}
+
+
+/* Set DATA_ARG to be the data argument for OMP_PARALLEL GS.  */
+
+static inline void
+gimple_omp_parallel_set_data_arg (gimple gs, tree data_arg)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_PARALLEL);
+  gs->gimple_omp_parallel.data_arg = data_arg;
+}
+
+
+/* Return the clauses associated with OMP_TASK GS.  */
+
+static inline tree
+gimple_omp_task_clauses (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  return gs->gimple_omp_parallel.clauses;
+}
+
+
+/* Return a pointer to the clauses associated with OMP_TASK GS.  */
+
+static inline tree *
+gimple_omp_task_clauses_ptr (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  return &gs->gimple_omp_parallel.clauses;
+}
+
+
+/* Set CLAUSES to be the list of clauses associated with OMP_TASK
+   GS.  */
+
+static inline void
+gimple_omp_task_set_clauses (gimple gs, tree clauses)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  gs->gimple_omp_parallel.clauses = clauses;
+}
+
+
+/* Return the child function used to hold the body of OMP_TASK GS.  */
+
+static inline tree
+gimple_omp_task_child_fn (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  return gs->gimple_omp_parallel.child_fn;
+}
+
+/* Return a pointer to the child function used to hold the body of
+   OMP_TASK GS.  */
+
+static inline tree *
+gimple_omp_task_child_fn_ptr (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  return &gs->gimple_omp_parallel.child_fn;
+}
+
+
+/* Set CHILD_FN to be the child function for OMP_TASK GS.  */
+
+static inline void
+gimple_omp_task_set_child_fn (gimple gs, tree child_fn)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  gs->gimple_omp_parallel.child_fn = child_fn;
+}
+
+
+/* Return the artificial argument used to send variables and values
+   from the parent to the children threads in OMP_TASK GS.  */
+
+static inline tree
+gimple_omp_task_data_arg (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  return gs->gimple_omp_parallel.data_arg;
+}
+
+
+/* Return a pointer to the data argument for OMP_TASK GS.  */
+
+static inline tree *
+gimple_omp_task_data_arg_ptr (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  return &gs->gimple_omp_parallel.data_arg;
+}
+
+
+/* Set DATA_ARG to be the data argument for OMP_TASK GS.  */
+
+static inline void
+gimple_omp_task_set_data_arg (gimple gs, tree data_arg)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  gs->gimple_omp_parallel.data_arg = data_arg;
+}
+
+
+/* Return the clauses associated with OMP_TASK GS.  */
+
+static inline tree
+gimple_omp_taskreg_clauses (const_gimple gs)
+{
+  if (gimple_code (gs) != GIMPLE_OMP_PARALLEL)
+    GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  return gs->gimple_omp_parallel.clauses;
+}
+
+
+/* Return a pointer to the clauses associated with OMP_TASK GS.  */
+
+static inline tree *
+gimple_omp_taskreg_clauses_ptr (gimple gs)
+{
+  if (gimple_code (gs) != GIMPLE_OMP_PARALLEL)
+    GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  return &gs->gimple_omp_parallel.clauses;
+}
+
+
+/* Set CLAUSES to be the list of clauses associated with OMP_TASK
+   GS.  */
+
+static inline void
+gimple_omp_taskreg_set_clauses (gimple gs, tree clauses)
+{
+  if (gimple_code (gs) != GIMPLE_OMP_PARALLEL)
+    GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  gs->gimple_omp_parallel.clauses = clauses;
+}
+
+
+/* Return the child function used to hold the body of OMP_TASK GS.  */
+
+static inline tree
+gimple_omp_taskreg_child_fn (const_gimple gs)
+{
+  if (gimple_code (gs) != GIMPLE_OMP_PARALLEL)
+    GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  return gs->gimple_omp_parallel.child_fn;
+}
+
+/* Return a pointer to the child function used to hold the body of
+   OMP_TASK GS.  */
+
+static inline tree *
+gimple_omp_taskreg_child_fn_ptr (gimple gs)
+{
+  if (gimple_code (gs) != GIMPLE_OMP_PARALLEL)
+    GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  return &gs->gimple_omp_parallel.child_fn;
+}
+
+
+/* Set CHILD_FN to be the child function for OMP_TASK GS.  */
+
+static inline void
+gimple_omp_taskreg_set_child_fn (gimple gs, tree child_fn)
+{
+  if (gimple_code (gs) != GIMPLE_OMP_PARALLEL)
+    GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  gs->gimple_omp_parallel.child_fn = child_fn;
+}
+
+
+/* Return the artificial argument used to send variables and values
+   from the parent to the children threads in OMP_TASK GS.  */
+
+static inline tree
+gimple_omp_taskreg_data_arg (const_gimple gs)
+{
+  if (gimple_code (gs) != GIMPLE_OMP_PARALLEL)
+    GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  return gs->gimple_omp_parallel.data_arg;
+}
+
+
+/* Return a pointer to the data argument for OMP_TASK GS.  */
+
+static inline tree *
+gimple_omp_taskreg_data_arg_ptr (gimple gs)
+{
+  if (gimple_code (gs) != GIMPLE_OMP_PARALLEL)
+    GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  return &gs->gimple_omp_parallel.data_arg;
+}
+
+
+/* Set DATA_ARG to be the data argument for OMP_TASK GS.  */
+
+static inline void
+gimple_omp_taskreg_set_data_arg (gimple gs, tree data_arg)
+{
+  if (gimple_code (gs) != GIMPLE_OMP_PARALLEL)
+    GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  gs->gimple_omp_parallel.data_arg = data_arg;
+}
+
+
+/* Return the copy function used to hold the body of OMP_TASK GS.  */
+
+static inline tree
+gimple_omp_task_copy_fn (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  return gs->gimple_omp_task.copy_fn;
+}
+
+/* Return a pointer to the copy function used to hold the body of
+   OMP_TASK GS.  */
+
+static inline tree *
+gimple_omp_task_copy_fn_ptr (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  return &gs->gimple_omp_task.copy_fn;
+}
+
+
+/* Set CHILD_FN to be the copy function for OMP_TASK GS.  */
+
+static inline void
+gimple_omp_task_set_copy_fn (gimple gs, tree copy_fn)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  gs->gimple_omp_task.copy_fn = copy_fn;
+}
+
+
+/* Return size of the data block in bytes in OMP_TASK GS.  */
+
+static inline tree
+gimple_omp_task_arg_size (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  return gs->gimple_omp_task.arg_size;
+}
+
+
+/* Return a pointer to the data block size for OMP_TASK GS.  */
+
+static inline tree *
+gimple_omp_task_arg_size_ptr (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  return &gs->gimple_omp_task.arg_size;
+}
+
+
+/* Set ARG_SIZE to be the data block size for OMP_TASK GS.  */
+
+static inline void
+gimple_omp_task_set_arg_size (gimple gs, tree arg_size)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  gs->gimple_omp_task.arg_size = arg_size;
+}
+
+
+/* Return align of the data block in bytes in OMP_TASK GS.  */
+
+static inline tree
+gimple_omp_task_arg_align (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  return gs->gimple_omp_task.arg_align;
+}
+
+
+/* Return a pointer to the data block align for OMP_TASK GS.  */
+
+static inline tree *
+gimple_omp_task_arg_align_ptr (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  return &gs->gimple_omp_task.arg_align;
+}
+
+
+/* Set ARG_SIZE to be the data block align for OMP_TASK GS.  */
+
+static inline void
+gimple_omp_task_set_arg_align (gimple gs, tree arg_align)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_TASK);
+  gs->gimple_omp_task.arg_align = arg_align;
+}
+
+
+/* Return the clauses associated with OMP_SINGLE GS.  */
+
+static inline tree
+gimple_omp_single_clauses (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_SINGLE);
+  return gs->gimple_omp_single.clauses;
+}
+
+
+/* Return a pointer to the clauses associated with OMP_SINGLE GS.  */
+
+static inline tree *
+gimple_omp_single_clauses_ptr (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_SINGLE);
+  return &gs->gimple_omp_single.clauses;
+}
+
+
+/* Set CLAUSES to be the clauses associated with OMP_SINGLE GS.  */
+
+static inline void
+gimple_omp_single_set_clauses (gimple gs, tree clauses)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_SINGLE);
+  gs->gimple_omp_single.clauses = clauses;
+}
+
+
+/* Return the clauses associated with OMP_SECTIONS GS.  */
+
+static inline tree
+gimple_omp_sections_clauses (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_SECTIONS);
+  return gs->gimple_omp_sections.clauses;
+}
+
+
+/* Return a pointer to the clauses associated with OMP_SECTIONS GS.  */
+
+static inline tree *
+gimple_omp_sections_clauses_ptr (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_SECTIONS);
+  return &gs->gimple_omp_sections.clauses;
+}
+
+
+/* Set CLAUSES to be the set of clauses associated with OMP_SECTIONS
+   GS.  */
+
+static inline void
+gimple_omp_sections_set_clauses (gimple gs, tree clauses)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_SECTIONS);
+  gs->gimple_omp_sections.clauses = clauses;
+}
+
+
+/* Return the control variable associated with the GIMPLE_OMP_SECTIONS
+   in GS.  */
+
+static inline tree
+gimple_omp_sections_control (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_SECTIONS);
+  return gs->gimple_omp_sections.control;
+}
+
+
+/* Return a pointer to the clauses associated with the GIMPLE_OMP_SECTIONS
+   GS.  */
+
+static inline tree *
+gimple_omp_sections_control_ptr (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_SECTIONS);
+  return &gs->gimple_omp_sections.control;
+}
+
+
+/* Set CONTROL to be the set of clauses associated with the
+   GIMPLE_OMP_SECTIONS in GS.  */
+
+static inline void
+gimple_omp_sections_set_control (gimple gs, tree control)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_SECTIONS);
+  gs->gimple_omp_sections.control = control;
+}
+
+
+/* Set COND to be the condition code for OMP_FOR GS.  */
+
+static inline void
+gimple_omp_for_set_cond (gimple gs, size_t i, enum tree_code cond)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_FOR);
+  gcc_assert (TREE_CODE_CLASS (cond) == tcc_comparison);
+  gcc_assert (i < gs->gimple_omp_for.collapse);
+  gs->gimple_omp_for.iter[i].cond = cond;
+}
+
+
+/* Return the condition code associated with OMP_FOR GS.  */
+
+static inline enum tree_code
+gimple_omp_for_cond (const_gimple gs, size_t i)
+{
+  GIMPLE_CHECK (gs, GIMPLE_OMP_FOR);
+  gcc_assert (i < gs->gimple_omp_for.collapse);
+  return gs->gimple_omp_for.iter[i].cond;
+}
+
+
+/* Set the value being stored in an atomic store.  */
+
+static inline void
+gimple_omp_atomic_store_set_val (gimple g, tree val)
+{
+  GIMPLE_CHECK (g, GIMPLE_OMP_ATOMIC_STORE);
+  g->gimple_omp_atomic_store.val = val;
+}
+
+
+/* Return the value being stored in an atomic store.  */
+
+static inline tree
+gimple_omp_atomic_store_val (const_gimple g)
+{
+  GIMPLE_CHECK (g, GIMPLE_OMP_ATOMIC_STORE);
+  return g->gimple_omp_atomic_store.val;
+}
+
+
+/* Return a pointer to the value being stored in an atomic store.  */
+
+static inline tree *
+gimple_omp_atomic_store_val_ptr (gimple g)
+{
+  GIMPLE_CHECK (g, GIMPLE_OMP_ATOMIC_STORE);
+  return &g->gimple_omp_atomic_store.val;
+}
+
+
+/* Set the LHS of an atomic load.  */
+
+static inline void
+gimple_omp_atomic_load_set_lhs (gimple g, tree lhs)
+{
+  GIMPLE_CHECK (g, GIMPLE_OMP_ATOMIC_LOAD);
+  g->gimple_omp_atomic_load.lhs = lhs;
+}
+
+
+/* Get the LHS of an atomic load.  */
+
+static inline tree
+gimple_omp_atomic_load_lhs (const_gimple g)
+{
+  GIMPLE_CHECK (g, GIMPLE_OMP_ATOMIC_LOAD);
+  return g->gimple_omp_atomic_load.lhs;
+}
+
+
+/* Return a pointer to the LHS of an atomic load.  */
+
+static inline tree *
+gimple_omp_atomic_load_lhs_ptr (gimple g)
+{
+  GIMPLE_CHECK (g, GIMPLE_OMP_ATOMIC_LOAD);
+  return &g->gimple_omp_atomic_load.lhs;
+}
+
+
+/* Set the RHS of an atomic load.  */
+
+static inline void
+gimple_omp_atomic_load_set_rhs (gimple g, tree rhs)
+{
+  GIMPLE_CHECK (g, GIMPLE_OMP_ATOMIC_LOAD);
+  g->gimple_omp_atomic_load.rhs = rhs;
+}
+
+
+/* Get the RHS of an atomic load.  */
+
+static inline tree
+gimple_omp_atomic_load_rhs (const_gimple g)
+{
+  GIMPLE_CHECK (g, GIMPLE_OMP_ATOMIC_LOAD);
+  return g->gimple_omp_atomic_load.rhs;
+}
+
+
+/* Return a pointer to the RHS of an atomic load.  */
+
+static inline tree *
+gimple_omp_atomic_load_rhs_ptr (gimple g)
+{
+  GIMPLE_CHECK (g, GIMPLE_OMP_ATOMIC_LOAD);
+  return &g->gimple_omp_atomic_load.rhs;
+}
+
+
+/* Get the definition of the control variable in a GIMPLE_OMP_CONTINUE.  */
+
+static inline tree
+gimple_omp_continue_control_def (const_gimple g)
+{
+  GIMPLE_CHECK (g, GIMPLE_OMP_CONTINUE);
+  return g->gimple_omp_continue.control_def;
+}
+
+/* The same as above, but return the address.  */
+
+static inline tree *
+gimple_omp_continue_control_def_ptr (gimple g)
+{
+  GIMPLE_CHECK (g, GIMPLE_OMP_CONTINUE);
+  return &g->gimple_omp_continue.control_def;
+}
+
+/* Set the definition of the control variable in a GIMPLE_OMP_CONTINUE.  */
+
+static inline void
+gimple_omp_continue_set_control_def (gimple g, tree def)
+{
+  GIMPLE_CHECK (g, GIMPLE_OMP_CONTINUE);
+  g->gimple_omp_continue.control_def = def;
+}
+
+
+/* Get the use of the control variable in a GIMPLE_OMP_CONTINUE.  */
+
+static inline tree
+gimple_omp_continue_control_use (const_gimple g)
+{
+  GIMPLE_CHECK (g, GIMPLE_OMP_CONTINUE);
+  return g->gimple_omp_continue.control_use;
+}
+
+
+/* The same as above, but return the address.  */
+
+static inline tree *
+gimple_omp_continue_control_use_ptr (gimple g)
+{
+  GIMPLE_CHECK (g, GIMPLE_OMP_CONTINUE);
+  return &g->gimple_omp_continue.control_use;
+}
+
+
+/* Set the use of the control variable in a GIMPLE_OMP_CONTINUE.  */
+
+static inline void
+gimple_omp_continue_set_control_use (gimple g, tree use)
+{
+  GIMPLE_CHECK (g, GIMPLE_OMP_CONTINUE);
+  g->gimple_omp_continue.control_use = use;
+}
+
+
+/* Return a pointer to the return value for GIMPLE_RETURN GS.  */
+
+static inline tree *
+gimple_return_retval_ptr (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_RETURN);
+  gcc_assert (gimple_num_ops (gs) == 1);
+  return gimple_op_ptr (gs, 0);
+}
+
+/* Return the return value for GIMPLE_RETURN GS.  */
+
+static inline tree
+gimple_return_retval (const_gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_RETURN);
+  gcc_assert (gimple_num_ops (gs) == 1);
+  return gimple_op (gs, 0);
+}
+
+
+/* Set RETVAL to be the return value for GIMPLE_RETURN GS.  */
+
+static inline void
+gimple_return_set_retval (gimple gs, tree retval)
+{
+  GIMPLE_CHECK (gs, GIMPLE_RETURN);
+  gcc_assert (gimple_num_ops (gs) == 1);
+  gcc_assert (retval == NULL_TREE
+              || TREE_CODE (retval) == RESULT_DECL
+             || is_gimple_val (retval));
+  gimple_set_op (gs, 0, retval);
+}
+
+
+/* Returns true when the gimple statment STMT is any of the OpenMP types.  */
+
+static inline bool
+is_gimple_omp (const_gimple stmt)
+{
+  return (gimple_code (stmt) == GIMPLE_OMP_PARALLEL
+         || gimple_code (stmt) == GIMPLE_OMP_TASK
+         || gimple_code (stmt) == GIMPLE_OMP_FOR
+         || gimple_code (stmt) == GIMPLE_OMP_SECTIONS
+         || gimple_code (stmt) == GIMPLE_OMP_SECTIONS_SWITCH
+         || gimple_code (stmt) == GIMPLE_OMP_SINGLE
+         || gimple_code (stmt) == GIMPLE_OMP_SECTION
+         || gimple_code (stmt) == GIMPLE_OMP_MASTER
+         || gimple_code (stmt) == GIMPLE_OMP_ORDERED
+         || gimple_code (stmt) == GIMPLE_OMP_CRITICAL
+         || gimple_code (stmt) == GIMPLE_OMP_RETURN
+         || gimple_code (stmt) == GIMPLE_OMP_ATOMIC_LOAD
+         || gimple_code (stmt) == GIMPLE_OMP_ATOMIC_STORE
+         || gimple_code (stmt) == GIMPLE_OMP_CONTINUE);
+}
+
+
+/* Returns TRUE if statement G is a GIMPLE_NOP.  */
+
+static inline bool
+gimple_nop_p (const_gimple g)
+{
+  return gimple_code (g) == GIMPLE_NOP;
+}
+
+
+/* Return the new type set by GIMPLE_CHANGE_DYNAMIC_TYPE statement GS.  */
+
+static inline tree
+gimple_cdt_new_type (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CHANGE_DYNAMIC_TYPE);
+  return gimple_op (gs, 1);
+}
+
+/* Return a pointer to the new type set by GIMPLE_CHANGE_DYNAMIC_TYPE
+   statement GS.  */
+
+static inline tree *
+gimple_cdt_new_type_ptr (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CHANGE_DYNAMIC_TYPE);
+  return gimple_op_ptr (gs, 1);
+}
+
+/* Set NEW_TYPE to be the type returned by GIMPLE_CHANGE_DYNAMIC_TYPE
+   statement GS.  */
+
+static inline void
+gimple_cdt_set_new_type (gimple gs, tree new_type)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CHANGE_DYNAMIC_TYPE);
+  gcc_assert (TREE_CODE_CLASS (TREE_CODE (new_type)) == tcc_type);
+  gimple_set_op (gs, 1, new_type);
+}
+
+
+/* Return the location affected by GIMPLE_CHANGE_DYNAMIC_TYPE statement GS.  */
+
+static inline tree
+gimple_cdt_location (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CHANGE_DYNAMIC_TYPE);
+  return gimple_op (gs, 0);
+}
+
+
+/* Return a pointer to the location affected by GIMPLE_CHANGE_DYNAMIC_TYPE
+   statement GS.  */
+
+static inline tree *
+gimple_cdt_location_ptr (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CHANGE_DYNAMIC_TYPE);
+  return gimple_op_ptr (gs, 0);
+}
+
+
+/* Set PTR to be the location affected by GIMPLE_CHANGE_DYNAMIC_TYPE
+   statement GS.  */
+
+static inline void
+gimple_cdt_set_location (gimple gs, tree ptr)
+{
+  GIMPLE_CHECK (gs, GIMPLE_CHANGE_DYNAMIC_TYPE);
+  gimple_set_op (gs, 0, ptr);
+}
+
+
+/* Return the predictor of GIMPLE_PREDICT statement GS.  */
+
+static inline enum br_predictor
+gimple_predict_predictor (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_PREDICT);
+  return (enum br_predictor) (gs->gsbase.subcode & ~GF_PREDICT_TAKEN);
+}
+
+
+/* Set the predictor of GIMPLE_PREDICT statement GS to PREDICT.  */
+
+static inline void
+gimple_predict_set_predictor (gimple gs, enum br_predictor predictor)
+{
+  GIMPLE_CHECK (gs, GIMPLE_PREDICT);
+  gs->gsbase.subcode = (gs->gsbase.subcode & GF_PREDICT_TAKEN)
+                      | (unsigned) predictor;
+}
+
+
+/* Return the outcome of GIMPLE_PREDICT statement GS.  */
+
+static inline enum prediction
+gimple_predict_outcome (gimple gs)
+{
+  GIMPLE_CHECK (gs, GIMPLE_PREDICT);
+  return (gs->gsbase.subcode & GF_PREDICT_TAKEN) ? TAKEN : NOT_TAKEN;
+}
+
+
+/* Set the outcome of GIMPLE_PREDICT statement GS to OUTCOME.  */
+
+static inline void
+gimple_predict_set_outcome (gimple gs, enum prediction outcome)
+{
+  GIMPLE_CHECK (gs, GIMPLE_PREDICT);
+  if (outcome == TAKEN)
+    gs->gsbase.subcode |= GF_PREDICT_TAKEN;
+  else
+    gs->gsbase.subcode &= ~GF_PREDICT_TAKEN;
+}
+
+
+/* Return a new iterator pointing to GIMPLE_SEQ's first statement.  */
+
+static inline gimple_stmt_iterator
+gsi_start (gimple_seq seq)
+{
+  gimple_stmt_iterator i;
+
+  i.ptr = gimple_seq_first (seq);
+  i.seq = seq;
+  i.bb = (i.ptr && i.ptr->stmt) ? gimple_bb (i.ptr->stmt) : NULL;
+
+  return i;
+}
+
+
+/* Return a new iterator pointing to the first statement in basic block BB.  */
+
+static inline gimple_stmt_iterator
+gsi_start_bb (basic_block bb)
+{
+  gimple_stmt_iterator i;
+  gimple_seq seq;
+  
+  seq = bb_seq (bb);
+  i.ptr = gimple_seq_first (seq);
+  i.seq = seq;
+  i.bb = bb;
+
+  return i;
+}
+
+
+/* Return a new iterator initially pointing to GIMPLE_SEQ's last statement.  */
+
+static inline gimple_stmt_iterator
+gsi_last (gimple_seq seq)
+{
+  gimple_stmt_iterator i;
+
+  i.ptr = gimple_seq_last (seq);
+  i.seq = seq;
+  i.bb = (i.ptr && i.ptr->stmt) ? gimple_bb (i.ptr->stmt) : NULL;
+
+  return i;
+}
+
+
+/* Return a new iterator pointing to the last statement in basic block BB.  */
+
+static inline gimple_stmt_iterator
+gsi_last_bb (basic_block bb)
+{
+  gimple_stmt_iterator i;
+  gimple_seq seq;
+
+  seq = bb_seq (bb);
+  i.ptr = gimple_seq_last (seq);
+  i.seq = seq;
+  i.bb = bb;
+
+  return i;
+}
+
+
+/* Return true if I is at the end of its sequence.  */
+
+static inline bool
+gsi_end_p (gimple_stmt_iterator i)
+{
+  return i.ptr == NULL;
+}
+
+
+/* Return true if I is one statement before the end of its sequence.  */
+
+static inline bool
+gsi_one_before_end_p (gimple_stmt_iterator i)
+{
+  return i.ptr != NULL && i.ptr->next == NULL;
+}
+
+
+/* Advance the iterator to the next gimple statement.  */
+
+static inline void
+gsi_next (gimple_stmt_iterator *i)
+{
+  i->ptr = i->ptr->next;
+}
+
+/* Advance the iterator to the previous gimple statement.  */
+
+static inline void
+gsi_prev (gimple_stmt_iterator *i)
+{
+  i->ptr = i->ptr->prev;
+}
+
+/* Return the current stmt.  */
+
+static inline gimple
+gsi_stmt (gimple_stmt_iterator i)
+{
+  return i.ptr->stmt;
+}
+
+/* Return a block statement iterator that points to the first non-label
+   statement in block BB.  */
+
+static inline gimple_stmt_iterator
+gsi_after_labels (basic_block bb)
+{
+  gimple_stmt_iterator gsi = gsi_start_bb (bb);
+
+  while (!gsi_end_p (gsi) && gimple_code (gsi_stmt (gsi)) == GIMPLE_LABEL)
+    gsi_next (&gsi);
+
+  return gsi;
+}
+
+/* Return a pointer to the current stmt.
+   
+  NOTE: You may want to use gsi_replace on the iterator itself,
+  as this performs additional bookkeeping that will not be done
+  if you simply assign through a pointer returned by gsi_stmt_ptr.  */
+
+static inline gimple *
+gsi_stmt_ptr (gimple_stmt_iterator *i)
+{
+  return &i->ptr->stmt;
+}
+
+
+/* Return the basic block associated with this iterator.  */
+
+static inline basic_block
+gsi_bb (gimple_stmt_iterator i)
+{
+  return i.bb;
+}
+
+
+/* Return the sequence associated with this iterator.  */
+
+static inline gimple_seq
+gsi_seq (gimple_stmt_iterator i)
+{
+  return i.seq;
+}
+
+
+enum gsi_iterator_update
+{
+  GSI_NEW_STMT,                /* Only valid when single statement is added, move
+                          iterator to it.  */
+  GSI_SAME_STMT,       /* Leave the iterator at the same statement.  */
+  GSI_CONTINUE_LINKING /* Move iterator to whatever position is suitable
+                          for linking other statements in the same
+                          direction.  */
+};
+
+/* In gimple-iterator.c  */
+gimple_stmt_iterator gsi_start_phis (basic_block);
+gimple_seq gsi_split_seq_after (gimple_stmt_iterator);
+gimple_seq gsi_split_seq_before (gimple_stmt_iterator *);
+void gsi_replace (gimple_stmt_iterator *, gimple, bool);
+void gsi_insert_before (gimple_stmt_iterator *, gimple,
+                       enum gsi_iterator_update);
+void gsi_insert_before_without_update (gimple_stmt_iterator *, gimple,
+                                       enum gsi_iterator_update);
+void gsi_insert_seq_before (gimple_stmt_iterator *, gimple_seq,
+                            enum gsi_iterator_update);
+void gsi_insert_seq_before_without_update (gimple_stmt_iterator *, gimple_seq,
+                                           enum gsi_iterator_update);
+void gsi_insert_after (gimple_stmt_iterator *, gimple,
+                      enum gsi_iterator_update);
+void gsi_insert_after_without_update (gimple_stmt_iterator *, gimple,
+                                      enum gsi_iterator_update);
+void gsi_insert_seq_after (gimple_stmt_iterator *, gimple_seq,
+                          enum gsi_iterator_update);
+void gsi_insert_seq_after_without_update (gimple_stmt_iterator *, gimple_seq,
+                                          enum gsi_iterator_update);
+void gsi_remove (gimple_stmt_iterator *, bool);
+gimple_stmt_iterator gsi_for_stmt (gimple);
+void gsi_move_after (gimple_stmt_iterator *, gimple_stmt_iterator *);
+void gsi_move_before (gimple_stmt_iterator *, gimple_stmt_iterator *);
+void gsi_move_to_bb_end (gimple_stmt_iterator *, struct basic_block_def *);
+void gsi_insert_on_edge (edge, gimple);
+void gsi_insert_seq_on_edge (edge, gimple_seq);
+basic_block gsi_insert_on_edge_immediate (edge, gimple);
+basic_block gsi_insert_seq_on_edge_immediate (edge, gimple_seq);
+void gsi_commit_one_edge_insert (edge, basic_block *);
+void gsi_commit_edge_inserts (void);
+gimple gimple_call_copy_skip_args (gimple, bitmap);
+
+
+/* Convenience routines to walk all statements of a gimple function.
+   Note that this is useful exclusively before the code is converted
+   into SSA form.  Once the program is in SSA form, the standard
+   operand interface should be used to analyze/modify statements.  */
+struct walk_stmt_info
+{
+  /* Points to the current statement being walked.  */
+  gimple_stmt_iterator gsi;
+
+  /* Additional data that the callback functions may want to carry
+     through the recursion.  */
+  void *info;
+
+  /* Pointer map used to mark visited tree nodes when calling
+     walk_tree on each operand.  If set to NULL, duplicate tree nodes
+     will be visited more than once.  */
+  struct pointer_set_t *pset;
+
+  /* Indicates whether the operand being examined may be replaced
+     with something that matches is_gimple_val (if true) or something
+     slightly more complicated (if false).  "Something" technically
+     means the common subset of is_gimple_lvalue and is_gimple_rhs,
+     but we never try to form anything more complicated than that, so
+     we don't bother checking.
+
+     Also note that CALLBACK should update this flag while walking the
+     sub-expressions of a statement.  For instance, when walking the
+     statement 'foo (&var)', the flag VAL_ONLY will initially be set
+     to true, however, when walking &var, the operand of that
+     ADDR_EXPR does not need to be a GIMPLE value.  */
+  bool val_only;
+
+  /* True if we are currently walking the LHS of an assignment.  */
+  bool is_lhs;
+
+  /* Optional.  Set to true by the callback functions if they made any
+     changes.  */
+  bool changed;
+
+  /* True if we're interested in location information.  */
+  bool want_locations;
+
+  /* Operand returned by the callbacks.  This is set when calling
+     walk_gimple_seq.  If the walk_stmt_fn or walk_tree_fn callback
+     returns non-NULL, this field will contain the tree returned by
+     the last callback.  */
+  tree callback_result;
+};
+
+/* Callback for walk_gimple_stmt.  Called for every statement found
+   during traversal.  The first argument points to the statement to
+   walk.  The second argument is a flag that the callback sets to
+   'true' if it the callback handled all the operands and
+   sub-statements of the statement (the default value of this flag is
+   'false').  The third argument is an anonymous pointer to data
+   to be used by the callback.  */
+typedef tree (*walk_stmt_fn) (gimple_stmt_iterator *, bool *,
+                             struct walk_stmt_info *);
+
+gimple walk_gimple_seq (gimple_seq, walk_stmt_fn, walk_tree_fn,
+                       struct walk_stmt_info *);
+tree walk_gimple_stmt (gimple_stmt_iterator *, walk_stmt_fn, walk_tree_fn,
+                      struct walk_stmt_info *);
+tree walk_gimple_op (gimple, walk_tree_fn, struct walk_stmt_info *);
+
+#ifdef GATHER_STATISTICS
+/* Enum and arrays used for allocation stats.  Keep in sync with
+   gimple.c:gimple_alloc_kind_names.  */
+enum gimple_alloc_kind
+{
+  gimple_alloc_kind_assign,    /* Assignments.  */
+  gimple_alloc_kind_phi,       /* PHI nodes.  */
+  gimple_alloc_kind_cond,      /* Conditionals.  */
+  gimple_alloc_kind_seq,       /* Sequences.  */
+  gimple_alloc_kind_rest,      /* Everything else.  */
+  gimple_alloc_kind_all
+};
+
+extern int gimple_alloc_counts[];
+extern int gimple_alloc_sizes[];
+
+/* Return the allocation kind for a given stmt CODE.  */
+static inline enum gimple_alloc_kind
+gimple_alloc_kind (enum gimple_code code)
+{
+  switch (code)
+    {
+      case GIMPLE_ASSIGN:
+       return gimple_alloc_kind_assign;
+      case GIMPLE_PHI:
+       return gimple_alloc_kind_phi;
+      case GIMPLE_COND:
+       return gimple_alloc_kind_cond;
+      default:
+       return gimple_alloc_kind_rest;
+    }
+}
+#endif /* GATHER_STATISTICS */
+
+extern void dump_gimple_statistics (void);
+
+#endif  /* GCC_GIMPLE_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/gsstruct.def b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/gsstruct.def
new file mode 100644 (file)
index 0000000..58f4476
--- /dev/null
@@ -0,0 +1,48 @@
+/* This file contains the definitions for the gimple IR structure
+   enumeration used in GCC.
+
+   Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+   Contributed by Aldy Hernandez <aldyh@redhat.com>
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* The format of this file is
+   DEFGSSTRUCT(GSS_enumeration value, printable name).
+   Each enum value should correspond with a single member of the union
+   gimple_statement_d.  */
+
+DEFGSSTRUCT(GSS_BASE, "base")
+DEFGSSTRUCT(GSS_WITH_OPS, "with_ops")
+DEFGSSTRUCT(GSS_WITH_MEM_OPS, "with_mem_ops")
+DEFGSSTRUCT(GSS_OMP, "omp")
+DEFGSSTRUCT(GSS_BIND, "bind")
+DEFGSSTRUCT(GSS_CATCH, "catch")
+DEFGSSTRUCT(GSS_EH_FILTER, "eh_filter")
+DEFGSSTRUCT(GSS_PHI, "phi")
+DEFGSSTRUCT(GSS_RESX, "resx")
+DEFGSSTRUCT(GSS_TRY, "try")
+DEFGSSTRUCT(GSS_WCE, "with_cleanup_expression")
+DEFGSSTRUCT(GSS_ASM, "asm")
+DEFGSSTRUCT(GSS_OMP_CRITICAL, "omp_critical")
+DEFGSSTRUCT(GSS_OMP_FOR, "omp_for")
+DEFGSSTRUCT(GSS_OMP_PARALLEL, "omp_parallel")
+DEFGSSTRUCT(GSS_OMP_TASK, "omp_task")
+DEFGSSTRUCT(GSS_OMP_SECTIONS, "sections")
+DEFGSSTRUCT(GSS_OMP_SINGLE, "single")
+DEFGSSTRUCT(GSS_OMP_CONTINUE, "omp_continue")
+DEFGSSTRUCT(GSS_OMP_ATOMIC_LOAD, "omp_atomic_load")
+DEFGSSTRUCT(GSS_OMP_ATOMIC_STORE, "omp_atomic_store")
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/gtype-desc.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/gtype-desc.h
new file mode 100644 (file)
index 0000000..cf112cd
--- /dev/null
@@ -0,0 +1,1873 @@
+/* Type information for GCC.
+   Copyright (C) 2004, 2007 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* This file is machine generated.  Do not edit.  */
+
+/* Enumeration of types known.  */
+enum gt_types_enum {
+ gt_ggc_e_15interface_tuple, 
+ gt_ggc_e_16volatilized_type, 
+ gt_ggc_e_17string_descriptor, 
+ gt_ggc_e_7c_scope, 
+ gt_ggc_e_9c_binding, 
+ gt_ggc_e_8c_parser, 
+ gt_ggc_e_9imp_entry, 
+ gt_ggc_e_16hashed_attribute, 
+ gt_ggc_e_12hashed_entry, 
+ gt_ggc_e_14type_assertion, 
+ gt_ggc_e_18treetreehash_entry, 
+ gt_ggc_e_5CPool, 
+ gt_ggc_e_3JCF, 
+ gt_ggc_e_17module_htab_entry, 
+ gt_ggc_e_13binding_level, 
+ gt_ggc_e_9opt_stack, 
+ gt_ggc_e_16def_pragma_macro, 
+ gt_ggc_e_22def_pragma_macro_value, 
+ gt_ggc_e_11align_stack, 
+ gt_ggc_e_19VEC_const_char_p_gc, 
+ gt_ggc_e_21pending_abstract_type, 
+ gt_ggc_e_9cp_parser, 
+ gt_ggc_e_17cp_parser_context, 
+ gt_ggc_e_8cp_lexer, 
+ gt_ggc_e_10tree_check, 
+ gt_ggc_e_22VEC_deferred_access_gc, 
+ gt_ggc_e_17pending_attribute, 
+ gt_ggc_e_16pending_template, 
+ gt_ggc_e_21named_label_use_entry, 
+ gt_ggc_e_28VEC_deferred_access_check_gc, 
+ gt_ggc_e_11tinst_level, 
+ gt_ggc_e_18sorted_fields_type, 
+ gt_ggc_e_18VEC_tree_pair_s_gc, 
+ gt_ggc_e_17named_label_entry, 
+ gt_ggc_e_14cp_token_cache, 
+ gt_ggc_e_11saved_scope, 
+ gt_ggc_e_16cxx_int_tree_map, 
+ gt_ggc_e_23VEC_cp_class_binding_gc, 
+ gt_ggc_e_24VEC_cxx_saved_binding_gc, 
+ gt_ggc_e_16cp_binding_level, 
+ gt_ggc_e_11cxx_binding, 
+ gt_ggc_e_15binding_entry_s, 
+ gt_ggc_e_15binding_table_s, 
+ gt_ggc_e_14VEC_tinfo_s_gc, 
+ gt_ggc_e_18gnat_binding_level, 
+ gt_ggc_e_9elab_info, 
+ gt_ggc_e_10stmt_group, 
+ gt_ggc_e_16VEC_parm_attr_gc, 
+ gt_ggc_e_9parm_attr, 
+ gt_ggc_e_20ssa_operand_memory_d, 
+ gt_ggc_e_13scev_info_str, 
+ gt_ggc_e_13VEC_gimple_gc, 
+ gt_ggc_e_17VEC_alias_pair_gc, 
+ gt_ggc_e_24constant_descriptor_tree, 
+ gt_ggc_e_9type_hash, 
+ gt_ggc_e_16string_pool_data, 
+ gt_ggc_e_13libfunc_entry, 
+ gt_ggc_e_23temp_slot_address_entry, 
+ gt_ggc_e_15throw_stmt_node, 
+ gt_ggc_e_16VEC_eh_region_gc, 
+ gt_ggc_e_9eh_region, 
+ gt_ggc_e_16var_loc_list_def, 
+ gt_ggc_e_12var_loc_node, 
+ gt_ggc_e_16limbo_die_struct, 
+ gt_ggc_e_20VEC_pubname_entry_gc, 
+ gt_ggc_e_19VEC_dw_attr_node_gc, 
+ gt_ggc_e_18comdat_type_struct, 
+ gt_ggc_e_25dw_ranges_by_label_struct, 
+ gt_ggc_e_16dw_ranges_struct, 
+ gt_ggc_e_28dw_separate_line_info_struct, 
+ gt_ggc_e_19dw_line_info_struct, 
+ gt_ggc_e_25VEC_deferred_locations_gc, 
+ gt_ggc_e_18dw_loc_list_struct, 
+ gt_ggc_e_15dwarf_file_data, 
+ gt_ggc_e_15queued_reg_save, 
+ gt_ggc_e_20indirect_string_node, 
+ gt_ggc_e_19dw_loc_descr_struct, 
+ gt_ggc_e_13dw_fde_struct, 
+ gt_ggc_e_13dw_cfi_struct, 
+ gt_ggc_e_8typeinfo, 
+ gt_ggc_e_22VEC_alias_set_entry_gc, 
+ gt_ggc_e_15alias_set_entry, 
+ gt_ggc_e_15cgraph_asm_node, 
+ gt_ggc_e_12varpool_node, 
+ gt_ggc_e_11cgraph_edge, 
+ gt_ggc_e_11cgraph_node, 
+ gt_ggc_e_18VEC_basic_block_gc, 
+ gt_ggc_e_14gimple_bb_info, 
+ gt_ggc_e_11rtl_bb_info, 
+ gt_ggc_e_11VEC_edge_gc, 
+ gt_ggc_e_17cselib_val_struct, 
+ gt_ggc_e_12elt_loc_list, 
+ gt_ggc_e_13VEC_loop_p_gc, 
+ gt_ggc_e_4loop, 
+ gt_ggc_e_9loop_exit, 
+ gt_ggc_e_13nb_iter_bound, 
+ gt_ggc_e_17language_function, 
+ gt_ggc_e_5loops, 
+ gt_ggc_e_18control_flow_graph, 
+ gt_ggc_e_9eh_status, 
+ gt_ggc_e_20initial_value_struct, 
+ gt_ggc_e_17rtx_constant_pool, 
+ gt_ggc_e_18VEC_temp_slot_p_gc, 
+ gt_ggc_e_9temp_slot, 
+ gt_ggc_e_9gimple_df, 
+ gt_ggc_e_13ehl_map_entry, 
+ gt_ggc_e_23VEC_call_site_record_gc, 
+ gt_ggc_e_16call_site_record, 
+ gt_ggc_e_14sequence_stack, 
+ gt_ggc_e_8edge_def, 
+ gt_ggc_e_8elt_list, 
+ gt_ggc_e_17tree_priority_map, 
+ gt_ggc_e_12tree_int_map, 
+ gt_ggc_e_8tree_map, 
+ gt_ggc_e_14lang_tree_node, 
+ gt_ggc_e_24tree_statement_list_node, 
+ gt_ggc_e_9lang_decl, 
+ gt_ggc_e_9lang_type, 
+ gt_ggc_e_10die_struct, 
+ gt_ggc_e_15varray_head_tag, 
+ gt_ggc_e_12ptr_info_def, 
+ gt_ggc_e_22VEC_constructor_elt_gc, 
+ gt_ggc_e_10tree_ann_d, 
+ gt_ggc_e_11VEC_tree_gc, 
+ gt_ggc_e_8function, 
+ gt_ggc_e_23constant_descriptor_rtx, 
+ gt_ggc_e_15basic_block_def, 
+ gt_ggc_e_11fixed_value, 
+ gt_ggc_e_10real_value, 
+ gt_ggc_e_10VEC_rtx_gc, 
+ gt_ggc_e_12object_block, 
+ gt_ggc_e_9reg_attrs, 
+ gt_ggc_e_9mem_attrs, 
+ gt_ggc_e_14bitmap_obstack, 
+ gt_ggc_e_18bitmap_element_def, 
+ gt_ggc_e_16machine_function, 
+ gt_ggc_e_17gimple_seq_node_d, 
+ gt_ggc_e_12gimple_seq_d, 
+ gt_ggc_e_7section, 
+ gt_ggc_e_18gimple_statement_d, 
+ gt_ggc_e_9rtvec_def, 
+ gt_ggc_e_7rtx_def, 
+ gt_ggc_e_15bitmap_head_def, 
+ gt_ggc_e_9tree_node, 
+ gt_ggc_e_6answer, 
+ gt_ggc_e_9cpp_macro, 
+ gt_ggc_e_9cpp_token, 
+ gt_ggc_e_9line_maps, 
+ gt_e_II17splay_tree_node_s, 
+ gt_e_SP9tree_node17splay_tree_node_s, 
+ gt_e_P9tree_nodeP9tree_node17splay_tree_node_s, 
+ gt_e_IP9tree_node17splay_tree_node_s, 
+ gt_e_P15interface_tuple4htab, 
+ gt_e_P16volatilized_type4htab, 
+ gt_e_P17string_descriptor4htab, 
+ gt_e_P14type_assertion4htab, 
+ gt_e_P18treetreehash_entry4htab, 
+ gt_e_P17module_htab_entry4htab, 
+ gt_e_P16def_pragma_macro4htab, 
+ gt_e_P21pending_abstract_type4htab, 
+ gt_e_P16cxx_int_tree_map4htab, 
+ gt_e_P17named_label_entry4htab, 
+ gt_e_P12tree_int_map4htab, 
+ gt_e_IP9tree_node12splay_tree_s, 
+ gt_e_P9tree_nodeP9tree_node12splay_tree_s, 
+ gt_e_P12varpool_node4htab, 
+ gt_e_P13scev_info_str4htab, 
+ gt_e_P23constant_descriptor_rtx4htab, 
+ gt_e_P24constant_descriptor_tree4htab, 
+ gt_e_P12object_block4htab, 
+ gt_e_P7section4htab, 
+ gt_e_P17tree_priority_map4htab, 
+ gt_e_P8tree_map4htab, 
+ gt_e_P9type_hash4htab, 
+ gt_e_P13libfunc_entry4htab, 
+ gt_e_P23temp_slot_address_entry4htab, 
+ gt_e_P15throw_stmt_node4htab, 
+ gt_e_P9reg_attrs4htab, 
+ gt_e_P9mem_attrs4htab, 
+ gt_e_P7rtx_def4htab, 
+ gt_e_SP9tree_node12splay_tree_s, 
+ gt_e_P16var_loc_list_def4htab, 
+ gt_e_P10die_struct4htab, 
+ gt_e_P15dwarf_file_data4htab, 
+ gt_e_P20indirect_string_node4htab, 
+ gt_e_P11cgraph_node4htab, 
+ gt_e_II12splay_tree_s, 
+ gt_e_P11cgraph_edge4htab, 
+ gt_e_P9loop_exit4htab, 
+ gt_e_P9tree_node4htab, 
+ gt_e_P13ehl_map_entry4htab, 
+ gt_types_enum_last
+};
+
+/* GC marker procedures.  */
+#define gt_ggc_m_15interface_tuple(X) do { \
+  if (X != NULL) gt_ggc_mx_interface_tuple (X);\
+  } while (0)
+extern void gt_ggc_mx_interface_tuple (void *);
+#define gt_ggc_m_16volatilized_type(X) do { \
+  if (X != NULL) gt_ggc_mx_volatilized_type (X);\
+  } while (0)
+extern void gt_ggc_mx_volatilized_type (void *);
+#define gt_ggc_m_17string_descriptor(X) do { \
+  if (X != NULL) gt_ggc_mx_string_descriptor (X);\
+  } while (0)
+extern void gt_ggc_mx_string_descriptor (void *);
+#define gt_ggc_m_7c_scope(X) do { \
+  if (X != NULL) gt_ggc_mx_c_scope (X);\
+  } while (0)
+extern void gt_ggc_mx_c_scope (void *);
+#define gt_ggc_m_9c_binding(X) do { \
+  if (X != NULL) gt_ggc_mx_c_binding (X);\
+  } while (0)
+extern void gt_ggc_mx_c_binding (void *);
+#define gt_ggc_m_8c_parser(X) do { \
+  if (X != NULL) gt_ggc_mx_c_parser (X);\
+  } while (0)
+extern void gt_ggc_mx_c_parser (void *);
+#define gt_ggc_m_9imp_entry(X) do { \
+  if (X != NULL) gt_ggc_mx_imp_entry (X);\
+  } while (0)
+extern void gt_ggc_mx_imp_entry (void *);
+#define gt_ggc_m_16hashed_attribute(X) do { \
+  if (X != NULL) gt_ggc_mx_hashed_attribute (X);\
+  } while (0)
+extern void gt_ggc_mx_hashed_attribute (void *);
+#define gt_ggc_m_12hashed_entry(X) do { \
+  if (X != NULL) gt_ggc_mx_hashed_entry (X);\
+  } while (0)
+extern void gt_ggc_mx_hashed_entry (void *);
+#define gt_ggc_m_14type_assertion(X) do { \
+  if (X != NULL) gt_ggc_mx_type_assertion (X);\
+  } while (0)
+extern void gt_ggc_mx_type_assertion (void *);
+#define gt_ggc_m_18treetreehash_entry(X) do { \
+  if (X != NULL) gt_ggc_mx_treetreehash_entry (X);\
+  } while (0)
+extern void gt_ggc_mx_treetreehash_entry (void *);
+#define gt_ggc_m_5CPool(X) do { \
+  if (X != NULL) gt_ggc_mx_CPool (X);\
+  } while (0)
+extern void gt_ggc_mx_CPool (void *);
+#define gt_ggc_m_3JCF(X) do { \
+  if (X != NULL) gt_ggc_mx_JCF (X);\
+  } while (0)
+extern void gt_ggc_mx_JCF (void *);
+#define gt_ggc_m_17module_htab_entry(X) do { \
+  if (X != NULL) gt_ggc_mx_module_htab_entry (X);\
+  } while (0)
+extern void gt_ggc_mx_module_htab_entry (void *);
+#define gt_ggc_m_13binding_level(X) do { \
+  if (X != NULL) gt_ggc_mx_binding_level (X);\
+  } while (0)
+extern void gt_ggc_mx_binding_level (void *);
+#define gt_ggc_m_9opt_stack(X) do { \
+  if (X != NULL) gt_ggc_mx_opt_stack (X);\
+  } while (0)
+extern void gt_ggc_mx_opt_stack (void *);
+#define gt_ggc_m_16def_pragma_macro(X) do { \
+  if (X != NULL) gt_ggc_mx_def_pragma_macro (X);\
+  } while (0)
+extern void gt_ggc_mx_def_pragma_macro (void *);
+#define gt_ggc_m_22def_pragma_macro_value(X) do { \
+  if (X != NULL) gt_ggc_mx_def_pragma_macro_value (X);\
+  } while (0)
+extern void gt_ggc_mx_def_pragma_macro_value (void *);
+#define gt_ggc_m_11align_stack(X) do { \
+  if (X != NULL) gt_ggc_mx_align_stack (X);\
+  } while (0)
+extern void gt_ggc_mx_align_stack (void *);
+#define gt_ggc_m_19VEC_const_char_p_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_const_char_p_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_const_char_p_gc (void *);
+#define gt_ggc_m_21pending_abstract_type(X) do { \
+  if (X != NULL) gt_ggc_mx_pending_abstract_type (X);\
+  } while (0)
+extern void gt_ggc_mx_pending_abstract_type (void *);
+#define gt_ggc_m_9cp_parser(X) do { \
+  if (X != NULL) gt_ggc_mx_cp_parser (X);\
+  } while (0)
+extern void gt_ggc_mx_cp_parser (void *);
+#define gt_ggc_m_17cp_parser_context(X) do { \
+  if (X != NULL) gt_ggc_mx_cp_parser_context (X);\
+  } while (0)
+extern void gt_ggc_mx_cp_parser_context (void *);
+#define gt_ggc_m_8cp_lexer(X) do { \
+  if (X != NULL) gt_ggc_mx_cp_lexer (X);\
+  } while (0)
+extern void gt_ggc_mx_cp_lexer (void *);
+#define gt_ggc_m_10tree_check(X) do { \
+  if (X != NULL) gt_ggc_mx_tree_check (X);\
+  } while (0)
+extern void gt_ggc_mx_tree_check (void *);
+#define gt_ggc_m_22VEC_deferred_access_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_deferred_access_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_deferred_access_gc (void *);
+#define gt_ggc_m_17pending_attribute(X) do { \
+  if (X != NULL) gt_ggc_mx_pending_attribute (X);\
+  } while (0)
+extern void gt_ggc_mx_pending_attribute (void *);
+#define gt_ggc_m_16pending_template(X) do { \
+  if (X != NULL) gt_ggc_mx_pending_template (X);\
+  } while (0)
+extern void gt_ggc_mx_pending_template (void *);
+#define gt_ggc_m_21named_label_use_entry(X) do { \
+  if (X != NULL) gt_ggc_mx_named_label_use_entry (X);\
+  } while (0)
+extern void gt_ggc_mx_named_label_use_entry (void *);
+#define gt_ggc_m_28VEC_deferred_access_check_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_deferred_access_check_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_deferred_access_check_gc (void *);
+#define gt_ggc_m_11tinst_level(X) do { \
+  if (X != NULL) gt_ggc_mx_tinst_level (X);\
+  } while (0)
+extern void gt_ggc_mx_tinst_level (void *);
+#define gt_ggc_m_18sorted_fields_type(X) do { \
+  if (X != NULL) gt_ggc_mx_sorted_fields_type (X);\
+  } while (0)
+extern void gt_ggc_mx_sorted_fields_type (void *);
+#define gt_ggc_m_18VEC_tree_pair_s_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_tree_pair_s_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_tree_pair_s_gc (void *);
+#define gt_ggc_m_17named_label_entry(X) do { \
+  if (X != NULL) gt_ggc_mx_named_label_entry (X);\
+  } while (0)
+extern void gt_ggc_mx_named_label_entry (void *);
+#define gt_ggc_m_14cp_token_cache(X) do { \
+  if (X != NULL) gt_ggc_mx_cp_token_cache (X);\
+  } while (0)
+extern void gt_ggc_mx_cp_token_cache (void *);
+#define gt_ggc_m_11saved_scope(X) do { \
+  if (X != NULL) gt_ggc_mx_saved_scope (X);\
+  } while (0)
+extern void gt_ggc_mx_saved_scope (void *);
+#define gt_ggc_m_16cxx_int_tree_map(X) do { \
+  if (X != NULL) gt_ggc_mx_cxx_int_tree_map (X);\
+  } while (0)
+extern void gt_ggc_mx_cxx_int_tree_map (void *);
+#define gt_ggc_m_23VEC_cp_class_binding_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_cp_class_binding_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_cp_class_binding_gc (void *);
+#define gt_ggc_m_24VEC_cxx_saved_binding_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_cxx_saved_binding_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_cxx_saved_binding_gc (void *);
+#define gt_ggc_m_16cp_binding_level(X) do { \
+  if (X != NULL) gt_ggc_mx_cp_binding_level (X);\
+  } while (0)
+extern void gt_ggc_mx_cp_binding_level (void *);
+#define gt_ggc_m_11cxx_binding(X) do { \
+  if (X != NULL) gt_ggc_mx_cxx_binding (X);\
+  } while (0)
+extern void gt_ggc_mx_cxx_binding (void *);
+#define gt_ggc_m_15binding_entry_s(X) do { \
+  if (X != NULL) gt_ggc_mx_binding_entry_s (X);\
+  } while (0)
+extern void gt_ggc_mx_binding_entry_s (void *);
+#define gt_ggc_m_15binding_table_s(X) do { \
+  if (X != NULL) gt_ggc_mx_binding_table_s (X);\
+  } while (0)
+extern void gt_ggc_mx_binding_table_s (void *);
+#define gt_ggc_m_14VEC_tinfo_s_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_tinfo_s_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_tinfo_s_gc (void *);
+#define gt_ggc_m_18gnat_binding_level(X) do { \
+  if (X != NULL) gt_ggc_mx_gnat_binding_level (X);\
+  } while (0)
+extern void gt_ggc_mx_gnat_binding_level (void *);
+#define gt_ggc_m_9elab_info(X) do { \
+  if (X != NULL) gt_ggc_mx_elab_info (X);\
+  } while (0)
+extern void gt_ggc_mx_elab_info (void *);
+#define gt_ggc_m_10stmt_group(X) do { \
+  if (X != NULL) gt_ggc_mx_stmt_group (X);\
+  } while (0)
+extern void gt_ggc_mx_stmt_group (void *);
+#define gt_ggc_m_16VEC_parm_attr_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_parm_attr_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_parm_attr_gc (void *);
+#define gt_ggc_m_9parm_attr(X) do { \
+  if (X != NULL) gt_ggc_mx_parm_attr (X);\
+  } while (0)
+extern void gt_ggc_mx_parm_attr (void *);
+#define gt_ggc_m_20ssa_operand_memory_d(X) do { \
+  if (X != NULL) gt_ggc_mx_ssa_operand_memory_d (X);\
+  } while (0)
+extern void gt_ggc_mx_ssa_operand_memory_d (void *);
+#define gt_ggc_m_13scev_info_str(X) do { \
+  if (X != NULL) gt_ggc_mx_scev_info_str (X);\
+  } while (0)
+extern void gt_ggc_mx_scev_info_str (void *);
+#define gt_ggc_m_13VEC_gimple_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_gimple_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_gimple_gc (void *);
+#define gt_ggc_m_17VEC_alias_pair_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_alias_pair_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_alias_pair_gc (void *);
+#define gt_ggc_m_24constant_descriptor_tree(X) do { \
+  if (X != NULL) gt_ggc_mx_constant_descriptor_tree (X);\
+  } while (0)
+extern void gt_ggc_mx_constant_descriptor_tree (void *);
+#define gt_ggc_m_9type_hash(X) do { \
+  if (X != NULL) gt_ggc_mx_type_hash (X);\
+  } while (0)
+extern void gt_ggc_mx_type_hash (void *);
+#define gt_ggc_m_16string_pool_data(X) do { \
+  if (X != NULL) gt_ggc_mx_string_pool_data (X);\
+  } while (0)
+extern void gt_ggc_mx_string_pool_data (void *);
+#define gt_ggc_m_13libfunc_entry(X) do { \
+  if (X != NULL) gt_ggc_mx_libfunc_entry (X);\
+  } while (0)
+extern void gt_ggc_mx_libfunc_entry (void *);
+#define gt_ggc_m_23temp_slot_address_entry(X) do { \
+  if (X != NULL) gt_ggc_mx_temp_slot_address_entry (X);\
+  } while (0)
+extern void gt_ggc_mx_temp_slot_address_entry (void *);
+#define gt_ggc_m_15throw_stmt_node(X) do { \
+  if (X != NULL) gt_ggc_mx_throw_stmt_node (X);\
+  } while (0)
+extern void gt_ggc_mx_throw_stmt_node (void *);
+#define gt_ggc_m_16VEC_eh_region_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_eh_region_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_eh_region_gc (void *);
+#define gt_ggc_m_9eh_region(X) do { \
+  if (X != NULL) gt_ggc_mx_eh_region (X);\
+  } while (0)
+extern void gt_ggc_mx_eh_region (void *);
+#define gt_ggc_m_16var_loc_list_def(X) do { \
+  if (X != NULL) gt_ggc_mx_var_loc_list_def (X);\
+  } while (0)
+extern void gt_ggc_mx_var_loc_list_def (void *);
+#define gt_ggc_m_12var_loc_node(X) do { \
+  if (X != NULL) gt_ggc_mx_var_loc_node (X);\
+  } while (0)
+extern void gt_ggc_mx_var_loc_node (void *);
+#define gt_ggc_m_16limbo_die_struct(X) do { \
+  if (X != NULL) gt_ggc_mx_limbo_die_struct (X);\
+  } while (0)
+extern void gt_ggc_mx_limbo_die_struct (void *);
+#define gt_ggc_m_20VEC_pubname_entry_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_pubname_entry_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_pubname_entry_gc (void *);
+#define gt_ggc_m_19VEC_dw_attr_node_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_dw_attr_node_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_dw_attr_node_gc (void *);
+#define gt_ggc_m_18comdat_type_struct(X) do { \
+  if (X != NULL) gt_ggc_mx_comdat_type_struct (X);\
+  } while (0)
+extern void gt_ggc_mx_comdat_type_struct (void *);
+#define gt_ggc_m_25dw_ranges_by_label_struct(X) do { \
+  if (X != NULL) gt_ggc_mx_dw_ranges_by_label_struct (X);\
+  } while (0)
+extern void gt_ggc_mx_dw_ranges_by_label_struct (void *);
+#define gt_ggc_m_16dw_ranges_struct(X) do { \
+  if (X != NULL) gt_ggc_mx_dw_ranges_struct (X);\
+  } while (0)
+extern void gt_ggc_mx_dw_ranges_struct (void *);
+#define gt_ggc_m_28dw_separate_line_info_struct(X) do { \
+  if (X != NULL) gt_ggc_mx_dw_separate_line_info_struct (X);\
+  } while (0)
+extern void gt_ggc_mx_dw_separate_line_info_struct (void *);
+#define gt_ggc_m_19dw_line_info_struct(X) do { \
+  if (X != NULL) gt_ggc_mx_dw_line_info_struct (X);\
+  } while (0)
+extern void gt_ggc_mx_dw_line_info_struct (void *);
+#define gt_ggc_m_25VEC_deferred_locations_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_deferred_locations_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_deferred_locations_gc (void *);
+#define gt_ggc_m_18dw_loc_list_struct(X) do { \
+  if (X != NULL) gt_ggc_mx_dw_loc_list_struct (X);\
+  } while (0)
+extern void gt_ggc_mx_dw_loc_list_struct (void *);
+#define gt_ggc_m_15dwarf_file_data(X) do { \
+  if (X != NULL) gt_ggc_mx_dwarf_file_data (X);\
+  } while (0)
+extern void gt_ggc_mx_dwarf_file_data (void *);
+#define gt_ggc_m_15queued_reg_save(X) do { \
+  if (X != NULL) gt_ggc_mx_queued_reg_save (X);\
+  } while (0)
+extern void gt_ggc_mx_queued_reg_save (void *);
+#define gt_ggc_m_20indirect_string_node(X) do { \
+  if (X != NULL) gt_ggc_mx_indirect_string_node (X);\
+  } while (0)
+extern void gt_ggc_mx_indirect_string_node (void *);
+#define gt_ggc_m_19dw_loc_descr_struct(X) do { \
+  if (X != NULL) gt_ggc_mx_dw_loc_descr_struct (X);\
+  } while (0)
+extern void gt_ggc_mx_dw_loc_descr_struct (void *);
+#define gt_ggc_m_13dw_fde_struct(X) do { \
+  if (X != NULL) gt_ggc_mx_dw_fde_struct (X);\
+  } while (0)
+extern void gt_ggc_mx_dw_fde_struct (void *);
+#define gt_ggc_m_13dw_cfi_struct(X) do { \
+  if (X != NULL) gt_ggc_mx_dw_cfi_struct (X);\
+  } while (0)
+extern void gt_ggc_mx_dw_cfi_struct (void *);
+#define gt_ggc_m_8typeinfo(X) do { \
+  if (X != NULL) gt_ggc_mx_typeinfo (X);\
+  } while (0)
+extern void gt_ggc_mx_typeinfo (void *);
+#define gt_ggc_m_22VEC_alias_set_entry_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_alias_set_entry_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_alias_set_entry_gc (void *);
+#define gt_ggc_m_15alias_set_entry(X) do { \
+  if (X != NULL) gt_ggc_mx_alias_set_entry (X);\
+  } while (0)
+extern void gt_ggc_mx_alias_set_entry (void *);
+#define gt_ggc_m_15cgraph_asm_node(X) do { \
+  if (X != NULL) gt_ggc_mx_cgraph_asm_node (X);\
+  } while (0)
+extern void gt_ggc_mx_cgraph_asm_node (void *);
+#define gt_ggc_m_12varpool_node(X) do { \
+  if (X != NULL) gt_ggc_mx_varpool_node (X);\
+  } while (0)
+extern void gt_ggc_mx_varpool_node (void *);
+#define gt_ggc_m_11cgraph_edge(X) do { \
+  if (X != NULL) gt_ggc_mx_cgraph_edge (X);\
+  } while (0)
+extern void gt_ggc_mx_cgraph_edge (void *);
+#define gt_ggc_m_11cgraph_node(X) do { \
+  if (X != NULL) gt_ggc_mx_cgraph_node (X);\
+  } while (0)
+extern void gt_ggc_mx_cgraph_node (void *);
+#define gt_ggc_m_18VEC_basic_block_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_basic_block_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_basic_block_gc (void *);
+#define gt_ggc_m_14gimple_bb_info(X) do { \
+  if (X != NULL) gt_ggc_mx_gimple_bb_info (X);\
+  } while (0)
+extern void gt_ggc_mx_gimple_bb_info (void *);
+#define gt_ggc_m_11rtl_bb_info(X) do { \
+  if (X != NULL) gt_ggc_mx_rtl_bb_info (X);\
+  } while (0)
+extern void gt_ggc_mx_rtl_bb_info (void *);
+#define gt_ggc_m_11VEC_edge_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_edge_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_edge_gc (void *);
+#define gt_ggc_m_17cselib_val_struct(X) do { \
+  if (X != NULL) gt_ggc_mx_cselib_val_struct (X);\
+  } while (0)
+extern void gt_ggc_mx_cselib_val_struct (void *);
+#define gt_ggc_m_12elt_loc_list(X) do { \
+  if (X != NULL) gt_ggc_mx_elt_loc_list (X);\
+  } while (0)
+extern void gt_ggc_mx_elt_loc_list (void *);
+#define gt_ggc_m_13VEC_loop_p_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_loop_p_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_loop_p_gc (void *);
+#define gt_ggc_m_4loop(X) do { \
+  if (X != NULL) gt_ggc_mx_loop (X);\
+  } while (0)
+extern void gt_ggc_mx_loop (void *);
+#define gt_ggc_m_9loop_exit(X) do { \
+  if (X != NULL) gt_ggc_mx_loop_exit (X);\
+  } while (0)
+extern void gt_ggc_mx_loop_exit (void *);
+#define gt_ggc_m_13nb_iter_bound(X) do { \
+  if (X != NULL) gt_ggc_mx_nb_iter_bound (X);\
+  } while (0)
+extern void gt_ggc_mx_nb_iter_bound (void *);
+#define gt_ggc_m_17language_function(X) do { \
+  if (X != NULL) gt_ggc_mx_language_function (X);\
+  } while (0)
+extern void gt_ggc_mx_language_function (void *);
+#define gt_ggc_m_5loops(X) do { \
+  if (X != NULL) gt_ggc_mx_loops (X);\
+  } while (0)
+extern void gt_ggc_mx_loops (void *);
+#define gt_ggc_m_18control_flow_graph(X) do { \
+  if (X != NULL) gt_ggc_mx_control_flow_graph (X);\
+  } while (0)
+extern void gt_ggc_mx_control_flow_graph (void *);
+#define gt_ggc_m_9eh_status(X) do { \
+  if (X != NULL) gt_ggc_mx_eh_status (X);\
+  } while (0)
+extern void gt_ggc_mx_eh_status (void *);
+#define gt_ggc_m_20initial_value_struct(X) do { \
+  if (X != NULL) gt_ggc_mx_initial_value_struct (X);\
+  } while (0)
+extern void gt_ggc_mx_initial_value_struct (void *);
+#define gt_ggc_m_17rtx_constant_pool(X) do { \
+  if (X != NULL) gt_ggc_mx_rtx_constant_pool (X);\
+  } while (0)
+extern void gt_ggc_mx_rtx_constant_pool (void *);
+#define gt_ggc_m_18VEC_temp_slot_p_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_temp_slot_p_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_temp_slot_p_gc (void *);
+#define gt_ggc_m_9temp_slot(X) do { \
+  if (X != NULL) gt_ggc_mx_temp_slot (X);\
+  } while (0)
+extern void gt_ggc_mx_temp_slot (void *);
+#define gt_ggc_m_9gimple_df(X) do { \
+  if (X != NULL) gt_ggc_mx_gimple_df (X);\
+  } while (0)
+extern void gt_ggc_mx_gimple_df (void *);
+#define gt_ggc_m_13ehl_map_entry(X) do { \
+  if (X != NULL) gt_ggc_mx_ehl_map_entry (X);\
+  } while (0)
+extern void gt_ggc_mx_ehl_map_entry (void *);
+#define gt_ggc_m_23VEC_call_site_record_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_call_site_record_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_call_site_record_gc (void *);
+#define gt_ggc_m_16call_site_record(X) do { \
+  if (X != NULL) gt_ggc_mx_call_site_record (X);\
+  } while (0)
+extern void gt_ggc_mx_call_site_record (void *);
+#define gt_ggc_m_14sequence_stack(X) do { \
+  if (X != NULL) gt_ggc_mx_sequence_stack (X);\
+  } while (0)
+extern void gt_ggc_mx_sequence_stack (void *);
+#define gt_ggc_m_8edge_def(X) do { \
+  if (X != NULL) gt_ggc_mx_edge_def (X);\
+  } while (0)
+extern void gt_ggc_mx_edge_def (void *);
+#define gt_ggc_m_8elt_list(X) do { \
+  if (X != NULL) gt_ggc_mx_elt_list (X);\
+  } while (0)
+extern void gt_ggc_mx_elt_list (void *);
+#define gt_ggc_m_17tree_priority_map(X) do { \
+  if (X != NULL) gt_ggc_mx_tree_priority_map (X);\
+  } while (0)
+extern void gt_ggc_mx_tree_priority_map (void *);
+#define gt_ggc_m_12tree_int_map(X) do { \
+  if (X != NULL) gt_ggc_mx_tree_int_map (X);\
+  } while (0)
+extern void gt_ggc_mx_tree_int_map (void *);
+#define gt_ggc_m_8tree_map(X) do { \
+  if (X != NULL) gt_ggc_mx_tree_map (X);\
+  } while (0)
+extern void gt_ggc_mx_tree_map (void *);
+#define gt_ggc_m_14lang_tree_node(X) do { \
+  if (X != NULL) gt_ggc_mx_lang_tree_node (X);\
+  } while (0)
+extern void gt_ggc_mx_lang_tree_node (void *);
+#define gt_ggc_m_24tree_statement_list_node(X) do { \
+  if (X != NULL) gt_ggc_mx_tree_statement_list_node (X);\
+  } while (0)
+extern void gt_ggc_mx_tree_statement_list_node (void *);
+#define gt_ggc_m_9lang_decl(X) do { \
+  if (X != NULL) gt_ggc_mx_lang_decl (X);\
+  } while (0)
+extern void gt_ggc_mx_lang_decl (void *);
+#define gt_ggc_m_9lang_type(X) do { \
+  if (X != NULL) gt_ggc_mx_lang_type (X);\
+  } while (0)
+extern void gt_ggc_mx_lang_type (void *);
+#define gt_ggc_m_10die_struct(X) do { \
+  if (X != NULL) gt_ggc_mx_die_struct (X);\
+  } while (0)
+extern void gt_ggc_mx_die_struct (void *);
+#define gt_ggc_m_15varray_head_tag(X) do { \
+  if (X != NULL) gt_ggc_mx_varray_head_tag (X);\
+  } while (0)
+extern void gt_ggc_mx_varray_head_tag (void *);
+#define gt_ggc_m_12ptr_info_def(X) do { \
+  if (X != NULL) gt_ggc_mx_ptr_info_def (X);\
+  } while (0)
+extern void gt_ggc_mx_ptr_info_def (void *);
+#define gt_ggc_m_22VEC_constructor_elt_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_constructor_elt_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_constructor_elt_gc (void *);
+#define gt_ggc_m_10tree_ann_d(X) do { \
+  if (X != NULL) gt_ggc_mx_tree_ann_d (X);\
+  } while (0)
+extern void gt_ggc_mx_tree_ann_d (void *);
+#define gt_ggc_m_11VEC_tree_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_tree_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_tree_gc (void *);
+#define gt_ggc_m_8function(X) do { \
+  if (X != NULL) gt_ggc_mx_function (X);\
+  } while (0)
+extern void gt_ggc_mx_function (void *);
+#define gt_ggc_m_23constant_descriptor_rtx(X) do { \
+  if (X != NULL) gt_ggc_mx_constant_descriptor_rtx (X);\
+  } while (0)
+extern void gt_ggc_mx_constant_descriptor_rtx (void *);
+#define gt_ggc_m_15basic_block_def(X) do { \
+  if (X != NULL) gt_ggc_mx_basic_block_def (X);\
+  } while (0)
+extern void gt_ggc_mx_basic_block_def (void *);
+#define gt_ggc_m_11fixed_value(X) do { \
+  if (X != NULL) gt_ggc_mx_fixed_value (X);\
+  } while (0)
+extern void gt_ggc_mx_fixed_value (void *);
+#define gt_ggc_m_10real_value(X) do { \
+  if (X != NULL) gt_ggc_mx_real_value (X);\
+  } while (0)
+extern void gt_ggc_mx_real_value (void *);
+#define gt_ggc_m_10VEC_rtx_gc(X) do { \
+  if (X != NULL) gt_ggc_mx_VEC_rtx_gc (X);\
+  } while (0)
+extern void gt_ggc_mx_VEC_rtx_gc (void *);
+#define gt_ggc_m_12object_block(X) do { \
+  if (X != NULL) gt_ggc_mx_object_block (X);\
+  } while (0)
+extern void gt_ggc_mx_object_block (void *);
+#define gt_ggc_m_9reg_attrs(X) do { \
+  if (X != NULL) gt_ggc_mx_reg_attrs (X);\
+  } while (0)
+extern void gt_ggc_mx_reg_attrs (void *);
+#define gt_ggc_m_9mem_attrs(X) do { \
+  if (X != NULL) gt_ggc_mx_mem_attrs (X);\
+  } while (0)
+extern void gt_ggc_mx_mem_attrs (void *);
+#define gt_ggc_m_14bitmap_obstack(X) do { \
+  if (X != NULL) gt_ggc_mx_bitmap_obstack (X);\
+  } while (0)
+extern void gt_ggc_mx_bitmap_obstack (void *);
+#define gt_ggc_m_18bitmap_element_def(X) do { \
+  if (X != NULL) gt_ggc_mx_bitmap_element_def (X);\
+  } while (0)
+extern void gt_ggc_mx_bitmap_element_def (void *);
+#define gt_ggc_m_16machine_function(X) do { \
+  if (X != NULL) gt_ggc_mx_machine_function (X);\
+  } while (0)
+extern void gt_ggc_mx_machine_function (void *);
+#define gt_ggc_m_17gimple_seq_node_d(X) do { \
+  if (X != NULL) gt_ggc_mx_gimple_seq_node_d (X);\
+  } while (0)
+extern void gt_ggc_mx_gimple_seq_node_d (void *);
+#define gt_ggc_m_12gimple_seq_d(X) do { \
+  if (X != NULL) gt_ggc_mx_gimple_seq_d (X);\
+  } while (0)
+extern void gt_ggc_mx_gimple_seq_d (void *);
+#define gt_ggc_m_7section(X) do { \
+  if (X != NULL) gt_ggc_mx_section (X);\
+  } while (0)
+extern void gt_ggc_mx_section (void *);
+#define gt_ggc_m_18gimple_statement_d(X) do { \
+  if (X != NULL) gt_ggc_mx_gimple_statement_d (X);\
+  } while (0)
+extern void gt_ggc_mx_gimple_statement_d (void *);
+#define gt_ggc_m_9rtvec_def(X) do { \
+  if (X != NULL) gt_ggc_mx_rtvec_def (X);\
+  } while (0)
+extern void gt_ggc_mx_rtvec_def (void *);
+#define gt_ggc_m_7rtx_def(X) do { \
+  if (X != NULL) gt_ggc_mx_rtx_def (X);\
+  } while (0)
+extern void gt_ggc_mx_rtx_def (void *);
+#define gt_ggc_m_15bitmap_head_def(X) do { \
+  if (X != NULL) gt_ggc_mx_bitmap_head_def (X);\
+  } while (0)
+extern void gt_ggc_mx_bitmap_head_def (void *);
+#define gt_ggc_m_9tree_node(X) do { \
+  if (X != NULL) gt_ggc_mx_tree_node (X);\
+  } while (0)
+#define gt_ggc_mx_tree_node gt_ggc_mx_lang_tree_node
+#define gt_ggc_m_6answer(X) do { \
+  if (X != NULL) gt_ggc_mx_answer (X);\
+  } while (0)
+extern void gt_ggc_mx_answer (void *);
+#define gt_ggc_m_9cpp_macro(X) do { \
+  if (X != NULL) gt_ggc_mx_cpp_macro (X);\
+  } while (0)
+extern void gt_ggc_mx_cpp_macro (void *);
+#define gt_ggc_m_9cpp_token(X) do { \
+  if (X != NULL) gt_ggc_mx_cpp_token (X);\
+  } while (0)
+extern void gt_ggc_mx_cpp_token (void *);
+#define gt_ggc_m_9line_maps(X) do { \
+  if (X != NULL) gt_ggc_mx_line_maps (X);\
+  } while (0)
+extern void gt_ggc_mx_line_maps (void *);
+extern void gt_ggc_m_II17splay_tree_node_s (void *);
+extern void gt_ggc_m_SP9tree_node17splay_tree_node_s (void *);
+extern void gt_ggc_m_P9tree_nodeP9tree_node17splay_tree_node_s (void *);
+extern void gt_ggc_m_IP9tree_node17splay_tree_node_s (void *);
+extern void gt_ggc_m_P15interface_tuple4htab (void *);
+extern void gt_ggc_m_P16volatilized_type4htab (void *);
+extern void gt_ggc_m_P17string_descriptor4htab (void *);
+extern void gt_ggc_m_P14type_assertion4htab (void *);
+extern void gt_ggc_m_P18treetreehash_entry4htab (void *);
+extern void gt_ggc_m_P17module_htab_entry4htab (void *);
+extern void gt_ggc_m_P16def_pragma_macro4htab (void *);
+extern void gt_ggc_m_P21pending_abstract_type4htab (void *);
+extern void gt_ggc_m_P16cxx_int_tree_map4htab (void *);
+extern void gt_ggc_m_P17named_label_entry4htab (void *);
+extern void gt_ggc_m_P12tree_int_map4htab (void *);
+extern void gt_ggc_m_IP9tree_node12splay_tree_s (void *);
+extern void gt_ggc_m_P9tree_nodeP9tree_node12splay_tree_s (void *);
+extern void gt_ggc_m_P12varpool_node4htab (void *);
+extern void gt_ggc_m_P13scev_info_str4htab (void *);
+extern void gt_ggc_m_P23constant_descriptor_rtx4htab (void *);
+extern void gt_ggc_m_P24constant_descriptor_tree4htab (void *);
+extern void gt_ggc_m_P12object_block4htab (void *);
+extern void gt_ggc_m_P7section4htab (void *);
+extern void gt_ggc_m_P17tree_priority_map4htab (void *);
+extern void gt_ggc_m_P8tree_map4htab (void *);
+extern void gt_ggc_m_P9type_hash4htab (void *);
+extern void gt_ggc_m_P13libfunc_entry4htab (void *);
+extern void gt_ggc_m_P23temp_slot_address_entry4htab (void *);
+extern void gt_ggc_m_P15throw_stmt_node4htab (void *);
+extern void gt_ggc_m_P9reg_attrs4htab (void *);
+extern void gt_ggc_m_P9mem_attrs4htab (void *);
+extern void gt_ggc_m_P7rtx_def4htab (void *);
+extern void gt_ggc_m_SP9tree_node12splay_tree_s (void *);
+extern void gt_ggc_m_P16var_loc_list_def4htab (void *);
+extern void gt_ggc_m_P10die_struct4htab (void *);
+extern void gt_ggc_m_P15dwarf_file_data4htab (void *);
+extern void gt_ggc_m_P20indirect_string_node4htab (void *);
+extern void gt_ggc_m_P11cgraph_node4htab (void *);
+extern void gt_ggc_m_II12splay_tree_s (void *);
+extern void gt_ggc_m_P11cgraph_edge4htab (void *);
+extern void gt_ggc_m_P9loop_exit4htab (void *);
+extern void gt_ggc_m_P9tree_node4htab (void *);
+extern void gt_ggc_m_P13ehl_map_entry4htab (void *);
+
+/* PCH type-walking procedures.  */
+#define gt_pch_n_15interface_tuple(X) do { \
+  if (X != NULL) gt_pch_nx_interface_tuple (X);\
+  } while (0)
+extern void gt_pch_nx_interface_tuple (void *);
+#define gt_pch_n_16volatilized_type(X) do { \
+  if (X != NULL) gt_pch_nx_volatilized_type (X);\
+  } while (0)
+extern void gt_pch_nx_volatilized_type (void *);
+#define gt_pch_n_17string_descriptor(X) do { \
+  if (X != NULL) gt_pch_nx_string_descriptor (X);\
+  } while (0)
+extern void gt_pch_nx_string_descriptor (void *);
+#define gt_pch_n_7c_scope(X) do { \
+  if (X != NULL) gt_pch_nx_c_scope (X);\
+  } while (0)
+extern void gt_pch_nx_c_scope (void *);
+#define gt_pch_n_9c_binding(X) do { \
+  if (X != NULL) gt_pch_nx_c_binding (X);\
+  } while (0)
+extern void gt_pch_nx_c_binding (void *);
+#define gt_pch_n_8c_parser(X) do { \
+  if (X != NULL) gt_pch_nx_c_parser (X);\
+  } while (0)
+extern void gt_pch_nx_c_parser (void *);
+#define gt_pch_n_9imp_entry(X) do { \
+  if (X != NULL) gt_pch_nx_imp_entry (X);\
+  } while (0)
+extern void gt_pch_nx_imp_entry (void *);
+#define gt_pch_n_16hashed_attribute(X) do { \
+  if (X != NULL) gt_pch_nx_hashed_attribute (X);\
+  } while (0)
+extern void gt_pch_nx_hashed_attribute (void *);
+#define gt_pch_n_12hashed_entry(X) do { \
+  if (X != NULL) gt_pch_nx_hashed_entry (X);\
+  } while (0)
+extern void gt_pch_nx_hashed_entry (void *);
+#define gt_pch_n_14type_assertion(X) do { \
+  if (X != NULL) gt_pch_nx_type_assertion (X);\
+  } while (0)
+extern void gt_pch_nx_type_assertion (void *);
+#define gt_pch_n_18treetreehash_entry(X) do { \
+  if (X != NULL) gt_pch_nx_treetreehash_entry (X);\
+  } while (0)
+extern void gt_pch_nx_treetreehash_entry (void *);
+#define gt_pch_n_5CPool(X) do { \
+  if (X != NULL) gt_pch_nx_CPool (X);\
+  } while (0)
+extern void gt_pch_nx_CPool (void *);
+#define gt_pch_n_3JCF(X) do { \
+  if (X != NULL) gt_pch_nx_JCF (X);\
+  } while (0)
+extern void gt_pch_nx_JCF (void *);
+#define gt_pch_n_17module_htab_entry(X) do { \
+  if (X != NULL) gt_pch_nx_module_htab_entry (X);\
+  } while (0)
+extern void gt_pch_nx_module_htab_entry (void *);
+#define gt_pch_n_13binding_level(X) do { \
+  if (X != NULL) gt_pch_nx_binding_level (X);\
+  } while (0)
+extern void gt_pch_nx_binding_level (void *);
+#define gt_pch_n_9opt_stack(X) do { \
+  if (X != NULL) gt_pch_nx_opt_stack (X);\
+  } while (0)
+extern void gt_pch_nx_opt_stack (void *);
+#define gt_pch_n_16def_pragma_macro(X) do { \
+  if (X != NULL) gt_pch_nx_def_pragma_macro (X);\
+  } while (0)
+extern void gt_pch_nx_def_pragma_macro (void *);
+#define gt_pch_n_22def_pragma_macro_value(X) do { \
+  if (X != NULL) gt_pch_nx_def_pragma_macro_value (X);\
+  } while (0)
+extern void gt_pch_nx_def_pragma_macro_value (void *);
+#define gt_pch_n_11align_stack(X) do { \
+  if (X != NULL) gt_pch_nx_align_stack (X);\
+  } while (0)
+extern void gt_pch_nx_align_stack (void *);
+#define gt_pch_n_19VEC_const_char_p_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_const_char_p_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_const_char_p_gc (void *);
+#define gt_pch_n_21pending_abstract_type(X) do { \
+  if (X != NULL) gt_pch_nx_pending_abstract_type (X);\
+  } while (0)
+extern void gt_pch_nx_pending_abstract_type (void *);
+#define gt_pch_n_9cp_parser(X) do { \
+  if (X != NULL) gt_pch_nx_cp_parser (X);\
+  } while (0)
+extern void gt_pch_nx_cp_parser (void *);
+#define gt_pch_n_17cp_parser_context(X) do { \
+  if (X != NULL) gt_pch_nx_cp_parser_context (X);\
+  } while (0)
+extern void gt_pch_nx_cp_parser_context (void *);
+#define gt_pch_n_8cp_lexer(X) do { \
+  if (X != NULL) gt_pch_nx_cp_lexer (X);\
+  } while (0)
+extern void gt_pch_nx_cp_lexer (void *);
+#define gt_pch_n_10tree_check(X) do { \
+  if (X != NULL) gt_pch_nx_tree_check (X);\
+  } while (0)
+extern void gt_pch_nx_tree_check (void *);
+#define gt_pch_n_22VEC_deferred_access_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_deferred_access_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_deferred_access_gc (void *);
+#define gt_pch_n_17pending_attribute(X) do { \
+  if (X != NULL) gt_pch_nx_pending_attribute (X);\
+  } while (0)
+extern void gt_pch_nx_pending_attribute (void *);
+#define gt_pch_n_16pending_template(X) do { \
+  if (X != NULL) gt_pch_nx_pending_template (X);\
+  } while (0)
+extern void gt_pch_nx_pending_template (void *);
+#define gt_pch_n_21named_label_use_entry(X) do { \
+  if (X != NULL) gt_pch_nx_named_label_use_entry (X);\
+  } while (0)
+extern void gt_pch_nx_named_label_use_entry (void *);
+#define gt_pch_n_28VEC_deferred_access_check_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_deferred_access_check_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_deferred_access_check_gc (void *);
+#define gt_pch_n_11tinst_level(X) do { \
+  if (X != NULL) gt_pch_nx_tinst_level (X);\
+  } while (0)
+extern void gt_pch_nx_tinst_level (void *);
+#define gt_pch_n_18sorted_fields_type(X) do { \
+  if (X != NULL) gt_pch_nx_sorted_fields_type (X);\
+  } while (0)
+extern void gt_pch_nx_sorted_fields_type (void *);
+#define gt_pch_n_18VEC_tree_pair_s_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_tree_pair_s_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_tree_pair_s_gc (void *);
+#define gt_pch_n_17named_label_entry(X) do { \
+  if (X != NULL) gt_pch_nx_named_label_entry (X);\
+  } while (0)
+extern void gt_pch_nx_named_label_entry (void *);
+#define gt_pch_n_14cp_token_cache(X) do { \
+  if (X != NULL) gt_pch_nx_cp_token_cache (X);\
+  } while (0)
+extern void gt_pch_nx_cp_token_cache (void *);
+#define gt_pch_n_11saved_scope(X) do { \
+  if (X != NULL) gt_pch_nx_saved_scope (X);\
+  } while (0)
+extern void gt_pch_nx_saved_scope (void *);
+#define gt_pch_n_16cxx_int_tree_map(X) do { \
+  if (X != NULL) gt_pch_nx_cxx_int_tree_map (X);\
+  } while (0)
+extern void gt_pch_nx_cxx_int_tree_map (void *);
+#define gt_pch_n_23VEC_cp_class_binding_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_cp_class_binding_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_cp_class_binding_gc (void *);
+#define gt_pch_n_24VEC_cxx_saved_binding_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_cxx_saved_binding_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_cxx_saved_binding_gc (void *);
+#define gt_pch_n_16cp_binding_level(X) do { \
+  if (X != NULL) gt_pch_nx_cp_binding_level (X);\
+  } while (0)
+extern void gt_pch_nx_cp_binding_level (void *);
+#define gt_pch_n_11cxx_binding(X) do { \
+  if (X != NULL) gt_pch_nx_cxx_binding (X);\
+  } while (0)
+extern void gt_pch_nx_cxx_binding (void *);
+#define gt_pch_n_15binding_entry_s(X) do { \
+  if (X != NULL) gt_pch_nx_binding_entry_s (X);\
+  } while (0)
+extern void gt_pch_nx_binding_entry_s (void *);
+#define gt_pch_n_15binding_table_s(X) do { \
+  if (X != NULL) gt_pch_nx_binding_table_s (X);\
+  } while (0)
+extern void gt_pch_nx_binding_table_s (void *);
+#define gt_pch_n_14VEC_tinfo_s_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_tinfo_s_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_tinfo_s_gc (void *);
+#define gt_pch_n_18gnat_binding_level(X) do { \
+  if (X != NULL) gt_pch_nx_gnat_binding_level (X);\
+  } while (0)
+extern void gt_pch_nx_gnat_binding_level (void *);
+#define gt_pch_n_9elab_info(X) do { \
+  if (X != NULL) gt_pch_nx_elab_info (X);\
+  } while (0)
+extern void gt_pch_nx_elab_info (void *);
+#define gt_pch_n_10stmt_group(X) do { \
+  if (X != NULL) gt_pch_nx_stmt_group (X);\
+  } while (0)
+extern void gt_pch_nx_stmt_group (void *);
+#define gt_pch_n_16VEC_parm_attr_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_parm_attr_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_parm_attr_gc (void *);
+#define gt_pch_n_9parm_attr(X) do { \
+  if (X != NULL) gt_pch_nx_parm_attr (X);\
+  } while (0)
+extern void gt_pch_nx_parm_attr (void *);
+#define gt_pch_n_20ssa_operand_memory_d(X) do { \
+  if (X != NULL) gt_pch_nx_ssa_operand_memory_d (X);\
+  } while (0)
+extern void gt_pch_nx_ssa_operand_memory_d (void *);
+#define gt_pch_n_13scev_info_str(X) do { \
+  if (X != NULL) gt_pch_nx_scev_info_str (X);\
+  } while (0)
+extern void gt_pch_nx_scev_info_str (void *);
+#define gt_pch_n_13VEC_gimple_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_gimple_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_gimple_gc (void *);
+#define gt_pch_n_17VEC_alias_pair_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_alias_pair_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_alias_pair_gc (void *);
+#define gt_pch_n_24constant_descriptor_tree(X) do { \
+  if (X != NULL) gt_pch_nx_constant_descriptor_tree (X);\
+  } while (0)
+extern void gt_pch_nx_constant_descriptor_tree (void *);
+#define gt_pch_n_9type_hash(X) do { \
+  if (X != NULL) gt_pch_nx_type_hash (X);\
+  } while (0)
+extern void gt_pch_nx_type_hash (void *);
+#define gt_pch_n_16string_pool_data(X) do { \
+  if (X != NULL) gt_pch_nx_string_pool_data (X);\
+  } while (0)
+extern void gt_pch_nx_string_pool_data (void *);
+#define gt_pch_n_13libfunc_entry(X) do { \
+  if (X != NULL) gt_pch_nx_libfunc_entry (X);\
+  } while (0)
+extern void gt_pch_nx_libfunc_entry (void *);
+#define gt_pch_n_23temp_slot_address_entry(X) do { \
+  if (X != NULL) gt_pch_nx_temp_slot_address_entry (X);\
+  } while (0)
+extern void gt_pch_nx_temp_slot_address_entry (void *);
+#define gt_pch_n_15throw_stmt_node(X) do { \
+  if (X != NULL) gt_pch_nx_throw_stmt_node (X);\
+  } while (0)
+extern void gt_pch_nx_throw_stmt_node (void *);
+#define gt_pch_n_16VEC_eh_region_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_eh_region_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_eh_region_gc (void *);
+#define gt_pch_n_9eh_region(X) do { \
+  if (X != NULL) gt_pch_nx_eh_region (X);\
+  } while (0)
+extern void gt_pch_nx_eh_region (void *);
+#define gt_pch_n_16var_loc_list_def(X) do { \
+  if (X != NULL) gt_pch_nx_var_loc_list_def (X);\
+  } while (0)
+extern void gt_pch_nx_var_loc_list_def (void *);
+#define gt_pch_n_12var_loc_node(X) do { \
+  if (X != NULL) gt_pch_nx_var_loc_node (X);\
+  } while (0)
+extern void gt_pch_nx_var_loc_node (void *);
+#define gt_pch_n_16limbo_die_struct(X) do { \
+  if (X != NULL) gt_pch_nx_limbo_die_struct (X);\
+  } while (0)
+extern void gt_pch_nx_limbo_die_struct (void *);
+#define gt_pch_n_20VEC_pubname_entry_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_pubname_entry_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_pubname_entry_gc (void *);
+#define gt_pch_n_19VEC_dw_attr_node_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_dw_attr_node_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_dw_attr_node_gc (void *);
+#define gt_pch_n_18comdat_type_struct(X) do { \
+  if (X != NULL) gt_pch_nx_comdat_type_struct (X);\
+  } while (0)
+extern void gt_pch_nx_comdat_type_struct (void *);
+#define gt_pch_n_25dw_ranges_by_label_struct(X) do { \
+  if (X != NULL) gt_pch_nx_dw_ranges_by_label_struct (X);\
+  } while (0)
+extern void gt_pch_nx_dw_ranges_by_label_struct (void *);
+#define gt_pch_n_16dw_ranges_struct(X) do { \
+  if (X != NULL) gt_pch_nx_dw_ranges_struct (X);\
+  } while (0)
+extern void gt_pch_nx_dw_ranges_struct (void *);
+#define gt_pch_n_28dw_separate_line_info_struct(X) do { \
+  if (X != NULL) gt_pch_nx_dw_separate_line_info_struct (X);\
+  } while (0)
+extern void gt_pch_nx_dw_separate_line_info_struct (void *);
+#define gt_pch_n_19dw_line_info_struct(X) do { \
+  if (X != NULL) gt_pch_nx_dw_line_info_struct (X);\
+  } while (0)
+extern void gt_pch_nx_dw_line_info_struct (void *);
+#define gt_pch_n_25VEC_deferred_locations_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_deferred_locations_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_deferred_locations_gc (void *);
+#define gt_pch_n_18dw_loc_list_struct(X) do { \
+  if (X != NULL) gt_pch_nx_dw_loc_list_struct (X);\
+  } while (0)
+extern void gt_pch_nx_dw_loc_list_struct (void *);
+#define gt_pch_n_15dwarf_file_data(X) do { \
+  if (X != NULL) gt_pch_nx_dwarf_file_data (X);\
+  } while (0)
+extern void gt_pch_nx_dwarf_file_data (void *);
+#define gt_pch_n_15queued_reg_save(X) do { \
+  if (X != NULL) gt_pch_nx_queued_reg_save (X);\
+  } while (0)
+extern void gt_pch_nx_queued_reg_save (void *);
+#define gt_pch_n_20indirect_string_node(X) do { \
+  if (X != NULL) gt_pch_nx_indirect_string_node (X);\
+  } while (0)
+extern void gt_pch_nx_indirect_string_node (void *);
+#define gt_pch_n_19dw_loc_descr_struct(X) do { \
+  if (X != NULL) gt_pch_nx_dw_loc_descr_struct (X);\
+  } while (0)
+extern void gt_pch_nx_dw_loc_descr_struct (void *);
+#define gt_pch_n_13dw_fde_struct(X) do { \
+  if (X != NULL) gt_pch_nx_dw_fde_struct (X);\
+  } while (0)
+extern void gt_pch_nx_dw_fde_struct (void *);
+#define gt_pch_n_13dw_cfi_struct(X) do { \
+  if (X != NULL) gt_pch_nx_dw_cfi_struct (X);\
+  } while (0)
+extern void gt_pch_nx_dw_cfi_struct (void *);
+#define gt_pch_n_8typeinfo(X) do { \
+  if (X != NULL) gt_pch_nx_typeinfo (X);\
+  } while (0)
+extern void gt_pch_nx_typeinfo (void *);
+#define gt_pch_n_22VEC_alias_set_entry_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_alias_set_entry_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_alias_set_entry_gc (void *);
+#define gt_pch_n_15alias_set_entry(X) do { \
+  if (X != NULL) gt_pch_nx_alias_set_entry (X);\
+  } while (0)
+extern void gt_pch_nx_alias_set_entry (void *);
+#define gt_pch_n_15cgraph_asm_node(X) do { \
+  if (X != NULL) gt_pch_nx_cgraph_asm_node (X);\
+  } while (0)
+extern void gt_pch_nx_cgraph_asm_node (void *);
+#define gt_pch_n_12varpool_node(X) do { \
+  if (X != NULL) gt_pch_nx_varpool_node (X);\
+  } while (0)
+extern void gt_pch_nx_varpool_node (void *);
+#define gt_pch_n_11cgraph_edge(X) do { \
+  if (X != NULL) gt_pch_nx_cgraph_edge (X);\
+  } while (0)
+extern void gt_pch_nx_cgraph_edge (void *);
+#define gt_pch_n_11cgraph_node(X) do { \
+  if (X != NULL) gt_pch_nx_cgraph_node (X);\
+  } while (0)
+extern void gt_pch_nx_cgraph_node (void *);
+#define gt_pch_n_18VEC_basic_block_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_basic_block_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_basic_block_gc (void *);
+#define gt_pch_n_14gimple_bb_info(X) do { \
+  if (X != NULL) gt_pch_nx_gimple_bb_info (X);\
+  } while (0)
+extern void gt_pch_nx_gimple_bb_info (void *);
+#define gt_pch_n_11rtl_bb_info(X) do { \
+  if (X != NULL) gt_pch_nx_rtl_bb_info (X);\
+  } while (0)
+extern void gt_pch_nx_rtl_bb_info (void *);
+#define gt_pch_n_11VEC_edge_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_edge_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_edge_gc (void *);
+#define gt_pch_n_17cselib_val_struct(X) do { \
+  if (X != NULL) gt_pch_nx_cselib_val_struct (X);\
+  } while (0)
+extern void gt_pch_nx_cselib_val_struct (void *);
+#define gt_pch_n_12elt_loc_list(X) do { \
+  if (X != NULL) gt_pch_nx_elt_loc_list (X);\
+  } while (0)
+extern void gt_pch_nx_elt_loc_list (void *);
+#define gt_pch_n_13VEC_loop_p_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_loop_p_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_loop_p_gc (void *);
+#define gt_pch_n_4loop(X) do { \
+  if (X != NULL) gt_pch_nx_loop (X);\
+  } while (0)
+extern void gt_pch_nx_loop (void *);
+#define gt_pch_n_9loop_exit(X) do { \
+  if (X != NULL) gt_pch_nx_loop_exit (X);\
+  } while (0)
+extern void gt_pch_nx_loop_exit (void *);
+#define gt_pch_n_13nb_iter_bound(X) do { \
+  if (X != NULL) gt_pch_nx_nb_iter_bound (X);\
+  } while (0)
+extern void gt_pch_nx_nb_iter_bound (void *);
+#define gt_pch_n_17language_function(X) do { \
+  if (X != NULL) gt_pch_nx_language_function (X);\
+  } while (0)
+extern void gt_pch_nx_language_function (void *);
+#define gt_pch_n_5loops(X) do { \
+  if (X != NULL) gt_pch_nx_loops (X);\
+  } while (0)
+extern void gt_pch_nx_loops (void *);
+#define gt_pch_n_18control_flow_graph(X) do { \
+  if (X != NULL) gt_pch_nx_control_flow_graph (X);\
+  } while (0)
+extern void gt_pch_nx_control_flow_graph (void *);
+#define gt_pch_n_9eh_status(X) do { \
+  if (X != NULL) gt_pch_nx_eh_status (X);\
+  } while (0)
+extern void gt_pch_nx_eh_status (void *);
+#define gt_pch_n_20initial_value_struct(X) do { \
+  if (X != NULL) gt_pch_nx_initial_value_struct (X);\
+  } while (0)
+extern void gt_pch_nx_initial_value_struct (void *);
+#define gt_pch_n_17rtx_constant_pool(X) do { \
+  if (X != NULL) gt_pch_nx_rtx_constant_pool (X);\
+  } while (0)
+extern void gt_pch_nx_rtx_constant_pool (void *);
+#define gt_pch_n_18VEC_temp_slot_p_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_temp_slot_p_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_temp_slot_p_gc (void *);
+#define gt_pch_n_9temp_slot(X) do { \
+  if (X != NULL) gt_pch_nx_temp_slot (X);\
+  } while (0)
+extern void gt_pch_nx_temp_slot (void *);
+#define gt_pch_n_9gimple_df(X) do { \
+  if (X != NULL) gt_pch_nx_gimple_df (X);\
+  } while (0)
+extern void gt_pch_nx_gimple_df (void *);
+#define gt_pch_n_13ehl_map_entry(X) do { \
+  if (X != NULL) gt_pch_nx_ehl_map_entry (X);\
+  } while (0)
+extern void gt_pch_nx_ehl_map_entry (void *);
+#define gt_pch_n_23VEC_call_site_record_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_call_site_record_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_call_site_record_gc (void *);
+#define gt_pch_n_16call_site_record(X) do { \
+  if (X != NULL) gt_pch_nx_call_site_record (X);\
+  } while (0)
+extern void gt_pch_nx_call_site_record (void *);
+#define gt_pch_n_14sequence_stack(X) do { \
+  if (X != NULL) gt_pch_nx_sequence_stack (X);\
+  } while (0)
+extern void gt_pch_nx_sequence_stack (void *);
+#define gt_pch_n_8edge_def(X) do { \
+  if (X != NULL) gt_pch_nx_edge_def (X);\
+  } while (0)
+extern void gt_pch_nx_edge_def (void *);
+#define gt_pch_n_8elt_list(X) do { \
+  if (X != NULL) gt_pch_nx_elt_list (X);\
+  } while (0)
+extern void gt_pch_nx_elt_list (void *);
+#define gt_pch_n_17tree_priority_map(X) do { \
+  if (X != NULL) gt_pch_nx_tree_priority_map (X);\
+  } while (0)
+extern void gt_pch_nx_tree_priority_map (void *);
+#define gt_pch_n_12tree_int_map(X) do { \
+  if (X != NULL) gt_pch_nx_tree_int_map (X);\
+  } while (0)
+extern void gt_pch_nx_tree_int_map (void *);
+#define gt_pch_n_8tree_map(X) do { \
+  if (X != NULL) gt_pch_nx_tree_map (X);\
+  } while (0)
+extern void gt_pch_nx_tree_map (void *);
+#define gt_pch_n_14lang_tree_node(X) do { \
+  if (X != NULL) gt_pch_nx_lang_tree_node (X);\
+  } while (0)
+extern void gt_pch_nx_lang_tree_node (void *);
+#define gt_pch_n_24tree_statement_list_node(X) do { \
+  if (X != NULL) gt_pch_nx_tree_statement_list_node (X);\
+  } while (0)
+extern void gt_pch_nx_tree_statement_list_node (void *);
+#define gt_pch_n_9lang_decl(X) do { \
+  if (X != NULL) gt_pch_nx_lang_decl (X);\
+  } while (0)
+extern void gt_pch_nx_lang_decl (void *);
+#define gt_pch_n_9lang_type(X) do { \
+  if (X != NULL) gt_pch_nx_lang_type (X);\
+  } while (0)
+extern void gt_pch_nx_lang_type (void *);
+#define gt_pch_n_10die_struct(X) do { \
+  if (X != NULL) gt_pch_nx_die_struct (X);\
+  } while (0)
+extern void gt_pch_nx_die_struct (void *);
+#define gt_pch_n_15varray_head_tag(X) do { \
+  if (X != NULL) gt_pch_nx_varray_head_tag (X);\
+  } while (0)
+extern void gt_pch_nx_varray_head_tag (void *);
+#define gt_pch_n_12ptr_info_def(X) do { \
+  if (X != NULL) gt_pch_nx_ptr_info_def (X);\
+  } while (0)
+extern void gt_pch_nx_ptr_info_def (void *);
+#define gt_pch_n_22VEC_constructor_elt_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_constructor_elt_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_constructor_elt_gc (void *);
+#define gt_pch_n_10tree_ann_d(X) do { \
+  if (X != NULL) gt_pch_nx_tree_ann_d (X);\
+  } while (0)
+extern void gt_pch_nx_tree_ann_d (void *);
+#define gt_pch_n_11VEC_tree_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_tree_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_tree_gc (void *);
+#define gt_pch_n_8function(X) do { \
+  if (X != NULL) gt_pch_nx_function (X);\
+  } while (0)
+extern void gt_pch_nx_function (void *);
+#define gt_pch_n_23constant_descriptor_rtx(X) do { \
+  if (X != NULL) gt_pch_nx_constant_descriptor_rtx (X);\
+  } while (0)
+extern void gt_pch_nx_constant_descriptor_rtx (void *);
+#define gt_pch_n_15basic_block_def(X) do { \
+  if (X != NULL) gt_pch_nx_basic_block_def (X);\
+  } while (0)
+extern void gt_pch_nx_basic_block_def (void *);
+#define gt_pch_n_11fixed_value(X) do { \
+  if (X != NULL) gt_pch_nx_fixed_value (X);\
+  } while (0)
+extern void gt_pch_nx_fixed_value (void *);
+#define gt_pch_n_10real_value(X) do { \
+  if (X != NULL) gt_pch_nx_real_value (X);\
+  } while (0)
+extern void gt_pch_nx_real_value (void *);
+#define gt_pch_n_10VEC_rtx_gc(X) do { \
+  if (X != NULL) gt_pch_nx_VEC_rtx_gc (X);\
+  } while (0)
+extern void gt_pch_nx_VEC_rtx_gc (void *);
+#define gt_pch_n_12object_block(X) do { \
+  if (X != NULL) gt_pch_nx_object_block (X);\
+  } while (0)
+extern void gt_pch_nx_object_block (void *);
+#define gt_pch_n_9reg_attrs(X) do { \
+  if (X != NULL) gt_pch_nx_reg_attrs (X);\
+  } while (0)
+extern void gt_pch_nx_reg_attrs (void *);
+#define gt_pch_n_9mem_attrs(X) do { \
+  if (X != NULL) gt_pch_nx_mem_attrs (X);\
+  } while (0)
+extern void gt_pch_nx_mem_attrs (void *);
+#define gt_pch_n_14bitmap_obstack(X) do { \
+  if (X != NULL) gt_pch_nx_bitmap_obstack (X);\
+  } while (0)
+extern void gt_pch_nx_bitmap_obstack (void *);
+#define gt_pch_n_18bitmap_element_def(X) do { \
+  if (X != NULL) gt_pch_nx_bitmap_element_def (X);\
+  } while (0)
+extern void gt_pch_nx_bitmap_element_def (void *);
+#define gt_pch_n_16machine_function(X) do { \
+  if (X != NULL) gt_pch_nx_machine_function (X);\
+  } while (0)
+extern void gt_pch_nx_machine_function (void *);
+#define gt_pch_n_17gimple_seq_node_d(X) do { \
+  if (X != NULL) gt_pch_nx_gimple_seq_node_d (X);\
+  } while (0)
+extern void gt_pch_nx_gimple_seq_node_d (void *);
+#define gt_pch_n_12gimple_seq_d(X) do { \
+  if (X != NULL) gt_pch_nx_gimple_seq_d (X);\
+  } while (0)
+extern void gt_pch_nx_gimple_seq_d (void *);
+#define gt_pch_n_7section(X) do { \
+  if (X != NULL) gt_pch_nx_section (X);\
+  } while (0)
+extern void gt_pch_nx_section (void *);
+#define gt_pch_n_18gimple_statement_d(X) do { \
+  if (X != NULL) gt_pch_nx_gimple_statement_d (X);\
+  } while (0)
+extern void gt_pch_nx_gimple_statement_d (void *);
+#define gt_pch_n_9rtvec_def(X) do { \
+  if (X != NULL) gt_pch_nx_rtvec_def (X);\
+  } while (0)
+extern void gt_pch_nx_rtvec_def (void *);
+#define gt_pch_n_7rtx_def(X) do { \
+  if (X != NULL) gt_pch_nx_rtx_def (X);\
+  } while (0)
+extern void gt_pch_nx_rtx_def (void *);
+#define gt_pch_n_15bitmap_head_def(X) do { \
+  if (X != NULL) gt_pch_nx_bitmap_head_def (X);\
+  } while (0)
+extern void gt_pch_nx_bitmap_head_def (void *);
+#define gt_pch_n_9tree_node(X) do { \
+  if (X != NULL) gt_pch_nx_tree_node (X);\
+  } while (0)
+#define gt_pch_nx_tree_node gt_pch_nx_lang_tree_node
+#define gt_pch_n_6answer(X) do { \
+  if (X != NULL) gt_pch_nx_answer (X);\
+  } while (0)
+extern void gt_pch_nx_answer (void *);
+#define gt_pch_n_9cpp_macro(X) do { \
+  if (X != NULL) gt_pch_nx_cpp_macro (X);\
+  } while (0)
+extern void gt_pch_nx_cpp_macro (void *);
+#define gt_pch_n_9cpp_token(X) do { \
+  if (X != NULL) gt_pch_nx_cpp_token (X);\
+  } while (0)
+extern void gt_pch_nx_cpp_token (void *);
+#define gt_pch_n_9line_maps(X) do { \
+  if (X != NULL) gt_pch_nx_line_maps (X);\
+  } while (0)
+extern void gt_pch_nx_line_maps (void *);
+extern void gt_pch_n_II17splay_tree_node_s (void *);
+extern void gt_pch_n_SP9tree_node17splay_tree_node_s (void *);
+extern void gt_pch_n_P9tree_nodeP9tree_node17splay_tree_node_s (void *);
+extern void gt_pch_n_IP9tree_node17splay_tree_node_s (void *);
+extern void gt_pch_n_P15interface_tuple4htab (void *);
+extern void gt_pch_n_P16volatilized_type4htab (void *);
+extern void gt_pch_n_P17string_descriptor4htab (void *);
+extern void gt_pch_n_P14type_assertion4htab (void *);
+extern void gt_pch_n_P18treetreehash_entry4htab (void *);
+extern void gt_pch_n_P17module_htab_entry4htab (void *);
+extern void gt_pch_n_P16def_pragma_macro4htab (void *);
+extern void gt_pch_n_P21pending_abstract_type4htab (void *);
+extern void gt_pch_n_P16cxx_int_tree_map4htab (void *);
+extern void gt_pch_n_P17named_label_entry4htab (void *);
+extern void gt_pch_n_P12tree_int_map4htab (void *);
+extern void gt_pch_n_IP9tree_node12splay_tree_s (void *);
+extern void gt_pch_n_P9tree_nodeP9tree_node12splay_tree_s (void *);
+extern void gt_pch_n_P12varpool_node4htab (void *);
+extern void gt_pch_n_P13scev_info_str4htab (void *);
+extern void gt_pch_n_P23constant_descriptor_rtx4htab (void *);
+extern void gt_pch_n_P24constant_descriptor_tree4htab (void *);
+extern void gt_pch_n_P12object_block4htab (void *);
+extern void gt_pch_n_P7section4htab (void *);
+extern void gt_pch_n_P17tree_priority_map4htab (void *);
+extern void gt_pch_n_P8tree_map4htab (void *);
+extern void gt_pch_n_P9type_hash4htab (void *);
+extern void gt_pch_n_P13libfunc_entry4htab (void *);
+extern void gt_pch_n_P23temp_slot_address_entry4htab (void *);
+extern void gt_pch_n_P15throw_stmt_node4htab (void *);
+extern void gt_pch_n_P9reg_attrs4htab (void *);
+extern void gt_pch_n_P9mem_attrs4htab (void *);
+extern void gt_pch_n_P7rtx_def4htab (void *);
+extern void gt_pch_n_SP9tree_node12splay_tree_s (void *);
+extern void gt_pch_n_P16var_loc_list_def4htab (void *);
+extern void gt_pch_n_P10die_struct4htab (void *);
+extern void gt_pch_n_P15dwarf_file_data4htab (void *);
+extern void gt_pch_n_P20indirect_string_node4htab (void *);
+extern void gt_pch_n_P11cgraph_node4htab (void *);
+extern void gt_pch_n_II12splay_tree_s (void *);
+extern void gt_pch_n_P11cgraph_edge4htab (void *);
+extern void gt_pch_n_P9loop_exit4htab (void *);
+extern void gt_pch_n_P9tree_node4htab (void *);
+extern void gt_pch_n_P13ehl_map_entry4htab (void *);
+
+/* Local pointer-walking routines.  */
+extern void gt_pch_p_15interface_tuple
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_16volatilized_type
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_17string_descriptor
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_7c_scope
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_9c_binding
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_8c_parser
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_9imp_entry
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_16hashed_attribute
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_12hashed_entry
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_14type_assertion
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_18treetreehash_entry
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_5CPool
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_3JCF
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_17module_htab_entry
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_13binding_level
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_9opt_stack
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_16def_pragma_macro
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_22def_pragma_macro_value
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_11align_stack
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_19VEC_const_char_p_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_21pending_abstract_type
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_9cp_parser
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_17cp_parser_context
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_8cp_lexer
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_10tree_check
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_22VEC_deferred_access_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_17pending_attribute
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_16pending_template
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_21named_label_use_entry
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_28VEC_deferred_access_check_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_11tinst_level
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_18sorted_fields_type
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_18VEC_tree_pair_s_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_17named_label_entry
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_14cp_token_cache
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_11saved_scope
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_16cxx_int_tree_map
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_23VEC_cp_class_binding_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_24VEC_cxx_saved_binding_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_16cp_binding_level
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_11cxx_binding
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_15binding_entry_s
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_15binding_table_s
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_14VEC_tinfo_s_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_18gnat_binding_level
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_9elab_info
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_10stmt_group
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_16VEC_parm_attr_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_9parm_attr
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_20ssa_operand_memory_d
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_13scev_info_str
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_13VEC_gimple_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_17VEC_alias_pair_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_24constant_descriptor_tree
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_9type_hash
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_16string_pool_data
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_13libfunc_entry
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_23temp_slot_address_entry
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_15throw_stmt_node
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_16VEC_eh_region_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_9eh_region
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_16var_loc_list_def
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_12var_loc_node
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_16limbo_die_struct
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_20VEC_pubname_entry_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_19VEC_dw_attr_node_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_18comdat_type_struct
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_25dw_ranges_by_label_struct
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_16dw_ranges_struct
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_28dw_separate_line_info_struct
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_19dw_line_info_struct
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_25VEC_deferred_locations_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_18dw_loc_list_struct
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_15dwarf_file_data
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_15queued_reg_save
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_20indirect_string_node
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_19dw_loc_descr_struct
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_13dw_fde_struct
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_13dw_cfi_struct
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_8typeinfo
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_22VEC_alias_set_entry_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_15alias_set_entry
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_15cgraph_asm_node
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_12varpool_node
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_11cgraph_edge
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_11cgraph_node
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_18VEC_basic_block_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_14gimple_bb_info
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_11rtl_bb_info
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_11VEC_edge_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_17cselib_val_struct
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_12elt_loc_list
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_13VEC_loop_p_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_4loop
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_9loop_exit
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_13nb_iter_bound
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_17language_function
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_5loops
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_18control_flow_graph
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_9eh_status
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_20initial_value_struct
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_17rtx_constant_pool
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_18VEC_temp_slot_p_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_9temp_slot
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_9gimple_df
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_13ehl_map_entry
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_23VEC_call_site_record_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_16call_site_record
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_14sequence_stack
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_8edge_def
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_8elt_list
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_17tree_priority_map
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_12tree_int_map
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_8tree_map
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_14lang_tree_node
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_24tree_statement_list_node
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_9lang_decl
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_9lang_type
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_10die_struct
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_15varray_head_tag
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_12ptr_info_def
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_22VEC_constructor_elt_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_10tree_ann_d
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_11VEC_tree_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_8function
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_23constant_descriptor_rtx
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_15basic_block_def
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_11fixed_value
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_10real_value
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_10VEC_rtx_gc
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_12object_block
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_9reg_attrs
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_9mem_attrs
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_14bitmap_obstack
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_18bitmap_element_def
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_16machine_function
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_17gimple_seq_node_d
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_12gimple_seq_d
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_7section
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_18gimple_statement_d
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_9rtvec_def
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_7rtx_def
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_15bitmap_head_def
+    (void *, void *, gt_pointer_operator, void *);
+#define gt_pch_p_9tree_node gt_pch_p_14lang_tree_node
+extern void gt_pch_p_6answer
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_9cpp_macro
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_9cpp_token
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_9line_maps
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_II17splay_tree_node_s
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_SP9tree_node17splay_tree_node_s
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P9tree_nodeP9tree_node17splay_tree_node_s
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_IP9tree_node17splay_tree_node_s
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P15interface_tuple4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P16volatilized_type4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P17string_descriptor4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P14type_assertion4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P18treetreehash_entry4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P17module_htab_entry4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P16def_pragma_macro4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P21pending_abstract_type4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P16cxx_int_tree_map4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P17named_label_entry4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P12tree_int_map4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_IP9tree_node12splay_tree_s
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P9tree_nodeP9tree_node12splay_tree_s
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P12varpool_node4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P13scev_info_str4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P23constant_descriptor_rtx4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P24constant_descriptor_tree4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P12object_block4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P7section4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P17tree_priority_map4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P8tree_map4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P9type_hash4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P13libfunc_entry4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P23temp_slot_address_entry4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P15throw_stmt_node4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P9reg_attrs4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P9mem_attrs4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P7rtx_def4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_SP9tree_node12splay_tree_s
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P16var_loc_list_def4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P10die_struct4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P15dwarf_file_data4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P20indirect_string_node4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P11cgraph_node4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_II12splay_tree_s
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P11cgraph_edge4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P9loop_exit4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P9tree_node4htab
+    (void *, void *, gt_pointer_operator, void *);
+extern void gt_pch_p_P13ehl_map_entry4htab
+    (void *, void *, gt_pointer_operator, void *);
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/hard-reg-set.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/hard-reg-set.h
new file mode 100644 (file)
index 0000000..2ee713d
--- /dev/null
@@ -0,0 +1,682 @@
+/* Sets (bit vectors) of hard registers, and operations on them.
+   Copyright (C) 1987, 1992, 1994, 2000, 2003, 2004, 2005, 2007, 2008, 2009
+   Free Software Foundation, Inc.
+
+This file is part of GCC
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_HARD_REG_SET_H
+#define GCC_HARD_REG_SET_H 
+
+/* Define the type of a set of hard registers.  */
+
+/* HARD_REG_ELT_TYPE is a typedef of the unsigned integral type which
+   will be used for hard reg sets, either alone or in an array.
+
+   If HARD_REG_SET is a macro, its definition is HARD_REG_ELT_TYPE,
+   and it has enough bits to represent all the target machine's hard
+   registers.  Otherwise, it is a typedef for a suitably sized array
+   of HARD_REG_ELT_TYPEs.  HARD_REG_SET_LONGS is defined as how many.
+
+   Note that lots of code assumes that the first part of a regset is
+   the same format as a HARD_REG_SET.  To help make sure this is true,
+   we only try the widest fast integer mode (HOST_WIDEST_FAST_INT)
+   instead of all the smaller types.  This approach loses only if
+   there are very few registers and then only in the few cases where
+   we have an array of HARD_REG_SETs, so it needn't be as complex as
+   it used to be.  */
+
+typedef unsigned HOST_WIDEST_FAST_INT HARD_REG_ELT_TYPE;
+
+#if FIRST_PSEUDO_REGISTER <= HOST_BITS_PER_WIDEST_FAST_INT
+
+#define HARD_REG_SET HARD_REG_ELT_TYPE
+
+#else
+
+#define HARD_REG_SET_LONGS \
+ ((FIRST_PSEUDO_REGISTER + HOST_BITS_PER_WIDEST_FAST_INT - 1)  \
+  / HOST_BITS_PER_WIDEST_FAST_INT)
+typedef HARD_REG_ELT_TYPE HARD_REG_SET[HARD_REG_SET_LONGS];
+
+#endif
+
+/* HARD_CONST is used to cast a constant to the appropriate type
+   for use with a HARD_REG_SET.  */
+
+#define HARD_CONST(X) ((HARD_REG_ELT_TYPE) (X))
+
+/* Define macros SET_HARD_REG_BIT, CLEAR_HARD_REG_BIT and TEST_HARD_REG_BIT
+   to set, clear or test one bit in a hard reg set of type HARD_REG_SET.
+   All three take two arguments: the set and the register number.
+
+   In the case where sets are arrays of longs, the first argument
+   is actually a pointer to a long.
+
+   Define two macros for initializing a set:
+   CLEAR_HARD_REG_SET and SET_HARD_REG_SET.
+   These take just one argument.
+
+   Also define macros for copying hard reg sets:
+   COPY_HARD_REG_SET and COMPL_HARD_REG_SET.
+   These take two arguments TO and FROM; they read from FROM
+   and store into TO.  COMPL_HARD_REG_SET complements each bit.
+
+   Also define macros for combining hard reg sets:
+   IOR_HARD_REG_SET and AND_HARD_REG_SET.
+   These take two arguments TO and FROM; they read from FROM
+   and combine bitwise into TO.  Define also two variants
+   IOR_COMPL_HARD_REG_SET and AND_COMPL_HARD_REG_SET
+   which use the complement of the set FROM.
+
+   Also define:
+
+   hard_reg_set_subset_p (X, Y), which returns true if X is a subset of Y.
+   hard_reg_set_equal_p (X, Y), which returns true if X and Y are equal.
+   hard_reg_set_intersect_p (X, Y), which returns true if X and Y intersect.
+   hard_reg_set_empty_p (X), which returns true if X is empty.  */
+
+#define UHOST_BITS_PER_WIDE_INT ((unsigned) HOST_BITS_PER_WIDEST_FAST_INT)
+
+#ifdef HARD_REG_SET
+
+#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))
+
+static inline bool
+hard_reg_set_subset_p (const HARD_REG_SET x, const HARD_REG_SET y)
+{
+  return (x & ~y) == HARD_CONST (0);
+}
+
+static inline bool
+hard_reg_set_equal_p (const HARD_REG_SET x, const HARD_REG_SET y)
+{
+  return x == y;
+}
+
+static inline bool
+hard_reg_set_intersect_p (const HARD_REG_SET x, const HARD_REG_SET y)
+{
+  return (x & y) != HARD_CONST (0);
+}
+
+static inline bool
+hard_reg_set_empty_p (const HARD_REG_SET x)
+{
+  return x == HARD_CONST (0);
+}
+
+#else
+
+#define SET_HARD_REG_BIT(SET, BIT)             \
+  ((SET)[(BIT) / UHOST_BITS_PER_WIDE_INT]      \
+   |= HARD_CONST (1) << ((BIT) % UHOST_BITS_PER_WIDE_INT))
+
+#define CLEAR_HARD_REG_BIT(SET, BIT)           \
+  ((SET)[(BIT) / UHOST_BITS_PER_WIDE_INT]      \
+   &= ~(HARD_CONST (1) << ((BIT) % UHOST_BITS_PER_WIDE_INT)))
+
+#define TEST_HARD_REG_BIT(SET, BIT)            \
+  (!!((SET)[(BIT) / UHOST_BITS_PER_WIDE_INT]   \
+      & (HARD_CONST (1) << ((BIT) % UHOST_BITS_PER_WIDE_INT))))
+
+#if FIRST_PSEUDO_REGISTER <= 2*HOST_BITS_PER_WIDEST_FAST_INT
+#define CLEAR_HARD_REG_SET(TO)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO);                       \
+     scan_tp_[0] = 0;                                          \
+     scan_tp_[1] = 0; } while (0)
+
+#define SET_HARD_REG_SET(TO)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO);                       \
+     scan_tp_[0] = -1;                                         \
+     scan_tp_[1] = -1; } while (0)
+
+#define COPY_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     scan_tp_[0] = scan_fp_[0];                                        \
+     scan_tp_[1] = scan_fp_[1]; } while (0)
+
+#define COMPL_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     scan_tp_[0] = ~ scan_fp_[0];                              \
+     scan_tp_[1] = ~ scan_fp_[1]; } while (0)
+
+#define AND_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     scan_tp_[0] &= scan_fp_[0];                               \
+     scan_tp_[1] &= scan_fp_[1]; } while (0)
+
+#define AND_COMPL_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     scan_tp_[0] &= ~ scan_fp_[0];                             \
+     scan_tp_[1] &= ~ scan_fp_[1]; } while (0)
+
+#define IOR_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     scan_tp_[0] |= scan_fp_[0];                               \
+     scan_tp_[1] |= scan_fp_[1]; } while (0)
+
+#define IOR_COMPL_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     scan_tp_[0] |= ~ scan_fp_[0];                             \
+     scan_tp_[1] |= ~ scan_fp_[1]; } while (0)
+
+static inline bool
+hard_reg_set_subset_p (const HARD_REG_SET x, const HARD_REG_SET y)
+{
+  return (x[0] & ~y[0]) == 0 && (x[1] & ~y[1]) == 0;
+}
+
+static inline bool
+hard_reg_set_equal_p (const HARD_REG_SET x, const HARD_REG_SET y)
+{
+  return x[0] == y[0] && x[1] == y[1];
+}
+
+static inline bool
+hard_reg_set_intersect_p (const HARD_REG_SET x, const HARD_REG_SET y)
+{
+  return (x[0] & y[0]) != 0 || (x[1] & y[1]) != 0;
+}
+
+static inline bool
+hard_reg_set_empty_p (const HARD_REG_SET x)
+{
+  return x[0] == 0 && x[1] == 0;
+}
+
+#else
+#if FIRST_PSEUDO_REGISTER <= 3*HOST_BITS_PER_WIDEST_FAST_INT
+#define CLEAR_HARD_REG_SET(TO)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO);                       \
+     scan_tp_[0] = 0;                                          \
+     scan_tp_[1] = 0;                                          \
+     scan_tp_[2] = 0; } while (0)
+
+#define SET_HARD_REG_SET(TO)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO);                       \
+     scan_tp_[0] = -1;                                         \
+     scan_tp_[1] = -1;                                         \
+     scan_tp_[2] = -1; } while (0)
+
+#define COPY_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     scan_tp_[0] = scan_fp_[0];                                        \
+     scan_tp_[1] = scan_fp_[1];                                        \
+     scan_tp_[2] = scan_fp_[2]; } while (0)
+
+#define COMPL_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     scan_tp_[0] = ~ scan_fp_[0];                              \
+     scan_tp_[1] = ~ scan_fp_[1];                              \
+     scan_tp_[2] = ~ scan_fp_[2]; } while (0)
+
+#define AND_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     scan_tp_[0] &= scan_fp_[0];                               \
+     scan_tp_[1] &= scan_fp_[1];                               \
+     scan_tp_[2] &= scan_fp_[2]; } while (0)
+
+#define AND_COMPL_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     scan_tp_[0] &= ~ scan_fp_[0];                             \
+     scan_tp_[1] &= ~ scan_fp_[1];                             \
+     scan_tp_[2] &= ~ scan_fp_[2]; } while (0)
+
+#define IOR_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     scan_tp_[0] |= scan_fp_[0];                               \
+     scan_tp_[1] |= scan_fp_[1];                               \
+     scan_tp_[2] |= scan_fp_[2]; } while (0)
+
+#define IOR_COMPL_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     scan_tp_[0] |= ~ scan_fp_[0];                             \
+     scan_tp_[1] |= ~ scan_fp_[1];                             \
+     scan_tp_[2] |= ~ scan_fp_[2]; } while (0)
+
+static inline bool
+hard_reg_set_subset_p (const HARD_REG_SET x, const HARD_REG_SET y)
+{
+  return ((x[0] & ~y[0]) == 0
+         && (x[1] & ~y[1]) == 0
+         && (x[2] & ~y[2]) == 0);
+}
+
+static inline bool
+hard_reg_set_equal_p (const HARD_REG_SET x, const HARD_REG_SET y)
+{
+  return x[0] == y[0] && x[1] == y[1] && x[2] == y[2];
+}
+
+static inline bool
+hard_reg_set_intersect_p (const HARD_REG_SET x, const HARD_REG_SET y)
+{
+  return ((x[0] & y[0]) != 0
+         || (x[1] & y[1]) != 0
+         || (x[2] & y[2]) != 0);
+}
+
+static inline bool
+hard_reg_set_empty_p (const HARD_REG_SET x)
+{
+  return x[0] == 0 && x[1] == 0 && x[2] == 0;
+}
+
+#else
+#if FIRST_PSEUDO_REGISTER <= 4*HOST_BITS_PER_WIDEST_FAST_INT
+#define CLEAR_HARD_REG_SET(TO)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO);                       \
+     scan_tp_[0] = 0;                                          \
+     scan_tp_[1] = 0;                                          \
+     scan_tp_[2] = 0;                                          \
+     scan_tp_[3] = 0; } while (0)
+
+#define SET_HARD_REG_SET(TO)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO);                       \
+     scan_tp_[0] = -1;                                         \
+     scan_tp_[1] = -1;                                         \
+     scan_tp_[2] = -1;                                         \
+     scan_tp_[3] = -1; } while (0)
+
+#define COPY_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     scan_tp_[0] = scan_fp_[0];                                        \
+     scan_tp_[1] = scan_fp_[1];                                        \
+     scan_tp_[2] = scan_fp_[2];                                        \
+     scan_tp_[3] = scan_fp_[3]; } while (0)
+
+#define COMPL_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     scan_tp_[0] = ~ scan_fp_[0];                              \
+     scan_tp_[1] = ~ scan_fp_[1];                              \
+     scan_tp_[2] = ~ scan_fp_[2];                              \
+     scan_tp_[3] = ~ scan_fp_[3]; } while (0)
+
+#define AND_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     scan_tp_[0] &= scan_fp_[0];                               \
+     scan_tp_[1] &= scan_fp_[1];                               \
+     scan_tp_[2] &= scan_fp_[2];                               \
+     scan_tp_[3] &= scan_fp_[3]; } while (0)
+
+#define AND_COMPL_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     scan_tp_[0] &= ~ scan_fp_[0];                             \
+     scan_tp_[1] &= ~ scan_fp_[1];                             \
+     scan_tp_[2] &= ~ scan_fp_[2];                             \
+     scan_tp_[3] &= ~ scan_fp_[3]; } while (0)
+
+#define IOR_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     scan_tp_[0] |= scan_fp_[0];                               \
+     scan_tp_[1] |= scan_fp_[1];                               \
+     scan_tp_[2] |= scan_fp_[2];                               \
+     scan_tp_[3] |= scan_fp_[3]; } while (0)
+
+#define IOR_COMPL_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     scan_tp_[0] |= ~ scan_fp_[0];                             \
+     scan_tp_[1] |= ~ scan_fp_[1];                             \
+     scan_tp_[2] |= ~ scan_fp_[2];                             \
+     scan_tp_[3] |= ~ scan_fp_[3]; } while (0)
+
+static inline bool
+hard_reg_set_subset_p (const HARD_REG_SET x, const HARD_REG_SET y)
+{
+  return ((x[0] & ~y[0]) == 0
+         && (x[1] & ~y[1]) == 0
+         && (x[2] & ~y[2]) == 0
+         && (x[3] & ~y[3]) == 0);
+}
+
+static inline bool
+hard_reg_set_equal_p (const HARD_REG_SET x, const HARD_REG_SET y)
+{
+  return x[0] == y[0] && x[1] == y[1] && x[2] == y[2] && x[3] == y[3];
+}
+
+static inline bool
+hard_reg_set_intersect_p (const HARD_REG_SET x, const HARD_REG_SET y)
+{
+  return ((x[0] & y[0]) != 0
+         || (x[1] & y[1]) != 0
+         || (x[2] & y[2]) != 0
+         || (x[3] & y[3]) != 0);
+}
+
+static inline bool
+hard_reg_set_empty_p (const HARD_REG_SET x)
+{
+  return x[0] == 0 && x[1] == 0 && x[2] == 0 && x[3] == 0;
+}
+
+#else /* FIRST_PSEUDO_REGISTER > 4*HOST_BITS_PER_WIDEST_FAST_INT */
+
+#define CLEAR_HARD_REG_SET(TO)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO);                       \
+     int i;                                                    \
+     for (i = 0; i < HARD_REG_SET_LONGS; i++)                  \
+       *scan_tp_++ = 0; } while (0)
+
+#define SET_HARD_REG_SET(TO)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO);                       \
+     int i;                                                    \
+     for (i = 0; i < HARD_REG_SET_LONGS; i++)                  \
+       *scan_tp_++ = -1; } while (0)
+
+#define COPY_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     int i;                                                    \
+     for (i = 0; i < HARD_REG_SET_LONGS; i++)                  \
+       *scan_tp_++ = *scan_fp_++; } while (0)
+
+#define COMPL_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     int i;                                                    \
+     for (i = 0; i < HARD_REG_SET_LONGS; i++)                  \
+       *scan_tp_++ = ~ *scan_fp_++; } while (0)
+
+#define AND_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     int i;                                                    \
+     for (i = 0; i < HARD_REG_SET_LONGS; i++)                  \
+       *scan_tp_++ &= *scan_fp_++; } while (0)
+
+#define AND_COMPL_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     int i;                                                    \
+     for (i = 0; i < HARD_REG_SET_LONGS; i++)                  \
+       *scan_tp_++ &= ~ *scan_fp_++; } while (0)
+
+#define IOR_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     int i;                                                    \
+     for (i = 0; i < HARD_REG_SET_LONGS; i++)                  \
+       *scan_tp_++ |= *scan_fp_++; } while (0)
+
+#define IOR_COMPL_HARD_REG_SET(TO, FROM)  \
+do { HARD_REG_ELT_TYPE *scan_tp_ = (TO), *scan_fp_ = (FROM);   \
+     int i;                                                    \
+     for (i = 0; i < HARD_REG_SET_LONGS; i++)                  \
+       *scan_tp_++ |= ~ *scan_fp_++; } while (0)
+
+static inline bool
+hard_reg_set_subset_p (const HARD_REG_SET x, const HARD_REG_SET y)
+{
+  int i;
+
+  for (i = 0; i < HARD_REG_SET_LONGS; i++)
+    if ((x[i] & ~y[i]) != 0)
+      return false;
+  return true;
+}
+
+static inline bool
+hard_reg_set_equal_p (const HARD_REG_SET x, const HARD_REG_SET y)
+{
+  int i;
+
+  for (i = 0; i < HARD_REG_SET_LONGS; i++)
+    if (x[i] != y[i])
+      return false;
+  return true;
+}
+
+static inline bool
+hard_reg_set_intersect_p (const HARD_REG_SET x, const HARD_REG_SET y)
+{
+  int i;
+
+  for (i = 0; i < HARD_REG_SET_LONGS; i++)
+    if ((x[i] & y[i]) != 0)
+      return true;
+  return false;
+}
+
+static inline bool
+hard_reg_set_empty_p (const HARD_REG_SET x)
+{
+  int i;
+
+  for (i = 0; i < HARD_REG_SET_LONGS; i++)
+    if (x[i] != 0)
+      return false;
+  return true;
+}
+
+#endif
+#endif
+#endif
+#endif
+
+/* Iterator for hard register sets.  */
+
+typedef struct
+{
+  /* Pointer to the current element.  */
+  HARD_REG_ELT_TYPE *pelt;
+
+  /* The length of the set.  */
+  unsigned short length;
+
+  /* Word within the current element.  */
+  unsigned short word_no;
+
+  /* Contents of the actually processed word.  When finding next bit
+     it is shifted right, so that the actual bit is always the least
+     significant bit of ACTUAL.  */
+  HARD_REG_ELT_TYPE bits;
+} hard_reg_set_iterator;
+
+#define HARD_REG_ELT_BITS UHOST_BITS_PER_WIDE_INT
+
+/* The implementation of the iterator functions is fully analogous to 
+   the bitmap iterators.  */
+static inline void
+hard_reg_set_iter_init (hard_reg_set_iterator *iter, HARD_REG_SET set, 
+                        unsigned min, unsigned *regno)
+{
+#ifdef HARD_REG_SET_LONGS
+  iter->pelt = set;
+  iter->length = HARD_REG_SET_LONGS;
+#else
+  iter->pelt = &set;
+  iter->length = 1;
+#endif
+  iter->word_no = min / HARD_REG_ELT_BITS;
+  if (iter->word_no < iter->length)
+    {
+      iter->bits = iter->pelt[iter->word_no];
+      iter->bits >>= min % HARD_REG_ELT_BITS;
+
+      /* This is required for correct search of the next bit.  */
+      min += !iter->bits;
+    }
+  *regno = min;
+}
+
+static inline bool 
+hard_reg_set_iter_set (hard_reg_set_iterator *iter, unsigned *regno)
+{
+  while (1)
+    {
+      /* Return false when we're advanced past the end of the set.  */
+      if (iter->word_no >= iter->length)
+        return false;
+
+      if (iter->bits)
+        {
+          /* Find the correct bit and return it.  */
+          while (!(iter->bits & 1))
+            {
+              iter->bits >>= 1;
+              *regno += 1;
+            }
+          return (*regno < FIRST_PSEUDO_REGISTER);
+        }
+  
+      /* Round to the beginning of the next word.  */
+      *regno = (*regno + HARD_REG_ELT_BITS - 1);
+      *regno -= *regno % HARD_REG_ELT_BITS;
+
+      /* Find the next non-zero word.  */
+      while (++iter->word_no < iter->length)
+        {
+          iter->bits = iter->pelt[iter->word_no];
+          if (iter->bits)
+            break;
+          *regno += HARD_REG_ELT_BITS;
+        }
+    }
+}
+
+static inline void
+hard_reg_set_iter_next (hard_reg_set_iterator *iter, unsigned *regno)
+{
+  iter->bits >>= 1;
+  *regno += 1;
+}
+
+#define EXECUTE_IF_SET_IN_HARD_REG_SET(SET, MIN, REGNUM, ITER)          \
+  for (hard_reg_set_iter_init (&(ITER), (SET), (MIN), &(REGNUM));       \
+       hard_reg_set_iter_set (&(ITER), &(REGNUM));                      \
+       hard_reg_set_iter_next (&(ITER), &(REGNUM)))
+
+
+/* Define some standard sets of registers.  */
+
+/* Indexed by hard register number, contains 1 for registers
+   that are fixed use (stack pointer, pc, frame pointer, etc.).
+   These are the registers that cannot be used to allocate
+   a pseudo reg whose life does not cross calls.  */
+
+extern char fixed_regs[FIRST_PSEUDO_REGISTER];
+
+/* The same info as a HARD_REG_SET.  */
+
+extern HARD_REG_SET fixed_reg_set;
+
+/* Indexed by hard register number, contains 1 for registers
+   that are fixed use or are clobbered by function calls.
+   These are the registers that cannot be used to allocate
+   a pseudo reg whose life crosses calls.  */
+
+extern char call_used_regs[FIRST_PSEUDO_REGISTER];
+
+#ifdef CALL_REALLY_USED_REGISTERS
+extern char call_really_used_regs[];
+#endif
+
+/* The same info as a HARD_REG_SET.  */
+
+extern HARD_REG_SET call_used_reg_set;
+  
+/* Indexed by hard register number, contains 1 for registers that are
+   fixed use -- i.e. in fixed_regs -- or a function value return register
+   or TARGET_STRUCT_VALUE_RTX or STATIC_CHAIN_REGNUM.  These are the
+   registers that cannot hold quantities across calls even if we are
+   willing to save and restore them.  */
+
+extern char call_fixed_regs[FIRST_PSEUDO_REGISTER];
+
+/* The same info as a HARD_REG_SET.  */
+
+extern HARD_REG_SET call_fixed_reg_set;
+
+/* Indexed by hard register number, contains 1 for registers
+   that are being used for global register decls.
+   These must be exempt from ordinary flow analysis
+   and are also considered fixed.  */
+
+extern char global_regs[FIRST_PSEUDO_REGISTER];
+
+/* Contains 1 for registers that are set or clobbered by calls.  */
+/* ??? Ideally, this would be just call_used_regs plus global_regs, but
+   for someone's bright idea to have call_used_regs strictly include
+   fixed_regs.  Which leaves us guessing as to the set of fixed_regs
+   that are actually preserved.  We know for sure that those associated
+   with the local stack frame are safe, but scant others.  */
+
+extern HARD_REG_SET regs_invalidated_by_call;
+
+/* Call used hard registers which can not be saved because there is no
+   insn for this.  */
+
+extern HARD_REG_SET no_caller_save_reg_set;
+
+#ifdef REG_ALLOC_ORDER
+/* Table of register numbers in the order in which to try to use them.  */
+
+extern int reg_alloc_order[FIRST_PSEUDO_REGISTER];
+
+/* The inverse of reg_alloc_order.  */
+
+extern int inv_reg_alloc_order[FIRST_PSEUDO_REGISTER];
+#endif
+
+/* For each reg class, a HARD_REG_SET saying which registers are in it.  */
+
+extern HARD_REG_SET reg_class_contents[N_REG_CLASSES];
+
+/* For each reg class, number of regs it contains.  */
+
+extern unsigned int reg_class_size[N_REG_CLASSES];
+
+/* For each reg class, table listing all the classes contained in it.  */
+
+extern enum reg_class reg_class_subclasses[N_REG_CLASSES][N_REG_CLASSES];
+
+/* For each pair of reg classes,
+   a largest reg class contained in their union.  */
+
+extern enum reg_class reg_class_subunion[N_REG_CLASSES][N_REG_CLASSES];
+
+/* For each pair of reg classes,
+   the smallest reg class that contains their union.  */
+
+extern enum reg_class reg_class_superunion[N_REG_CLASSES][N_REG_CLASSES];
+
+/* Vector indexed by hardware reg giving its name.  */
+
+extern const char * reg_names[FIRST_PSEUDO_REGISTER];
+
+/* Vector indexed by reg class giving its name.  */
+
+extern const char * reg_class_names[];
+
+/* Given a hard REGN a FROM mode and a TO mode, return nonzero if
+   REGN cannot change modes between the specified modes.  */
+#define REG_CANNOT_CHANGE_MODE_P(REGN, FROM, TO)                          \
+         CANNOT_CHANGE_MODE_CLASS (FROM, TO, REGNO_REG_CLASS (REGN))
+
+#endif /* ! GCC_HARD_REG_SET_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/hashtab.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/hashtab.h
new file mode 100644 (file)
index 0000000..77eee14
--- /dev/null
@@ -0,0 +1,206 @@
+/* An expandable hash tables datatype.  
+   Copyright (C) 1999, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
+   Contributed by Vladimir Makarov (vmakarov@cygnus.com).
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/* This package implements basic hash table functionality.  It is possible
+   to search for an entry, create an entry and destroy an entry.
+
+   Elements in the table are generic pointers.
+
+   The size of the table is not fixed; if the occupancy of the table
+   grows too high the hash table will be expanded.
+
+   The abstract data implementation is based on generalized Algorithm D
+   from Knuth's book "The art of computer programming".  Hash table is
+   expanded by creation of new hash table and transferring elements from
+   the old table to the new table.  */
+
+#ifndef __HASHTAB_H__
+#define __HASHTAB_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#include "ansidecl.h"
+
+#ifndef GTY
+#define GTY(X)
+#endif
+
+/* The type for a hash code.  */
+typedef unsigned int hashval_t;
+
+/* Callback function pointer types.  */
+
+/* Calculate hash of a table entry.  */
+typedef hashval_t (*htab_hash) (const void *);
+
+/* Compare a table entry with a possible entry.  The entry already in
+   the table always comes first, so the second element can be of a
+   different type (but in this case htab_find and htab_find_slot
+   cannot be used; instead the variants that accept a hash value
+   must be used).  */
+typedef int (*htab_eq) (const void *, const void *);
+
+/* Cleanup function called whenever a live element is removed from
+   the hash table.  */
+typedef void (*htab_del) (void *);
+  
+/* Function called by htab_traverse for each live element.  The first
+   arg is the slot of the element (which can be passed to htab_clear_slot
+   if desired), the second arg is the auxiliary pointer handed to
+   htab_traverse.  Return 1 to continue scan, 0 to stop.  */
+typedef int (*htab_trav) (void **, void *);
+
+/* Memory-allocation function, with the same functionality as calloc().
+   Iff it returns NULL, the hash table implementation will pass an error
+   code back to the user, so if your code doesn't handle errors,
+   best if you use xcalloc instead.  */
+typedef void *(*htab_alloc) (size_t, size_t);
+
+/* We also need a free() routine.  */
+typedef void (*htab_free) (void *);
+
+/* Memory allocation and deallocation; variants which take an extra
+   argument.  */
+typedef void *(*htab_alloc_with_arg) (void *, size_t, size_t);
+typedef void (*htab_free_with_arg) (void *, void *);
+
+/* This macro defines reserved value for empty table entry.  */
+
+#define HTAB_EMPTY_ENTRY    ((PTR) 0)
+
+/* This macro defines reserved value for table entry which contained
+   a deleted element. */
+
+#define HTAB_DELETED_ENTRY  ((PTR) 1)
+
+/* Hash tables are of the following type.  The structure
+   (implementation) of this type is not needed for using the hash
+   tables.  All work with hash table should be executed only through
+   functions mentioned below.  The size of this structure is subject to
+   change.  */
+
+struct htab GTY(())
+{
+  /* Pointer to hash function.  */
+  htab_hash hash_f;
+
+  /* Pointer to comparison function.  */
+  htab_eq eq_f;
+
+  /* Pointer to cleanup function.  */
+  htab_del del_f;
+
+  /* Table itself.  */
+  void ** GTY ((use_param, length ("%h.size"))) entries;
+
+  /* Current size (in entries) of the hash table.  */
+  size_t size;
+
+  /* Current number of elements including also deleted elements.  */
+  size_t n_elements;
+
+  /* Current number of deleted elements in the table.  */
+  size_t n_deleted;
+
+  /* The following member is used for debugging. Its value is number
+     of all calls of `htab_find_slot' for the hash table. */
+  unsigned int searches;
+
+  /* The following member is used for debugging.  Its value is number
+     of collisions fixed for time of work with the hash table. */
+  unsigned int collisions;
+
+  /* Pointers to allocate/free functions.  */
+  htab_alloc alloc_f;
+  htab_free free_f;
+
+  /* Alternate allocate/free functions, which take an extra argument.  */
+  void * GTY((skip)) alloc_arg;
+  htab_alloc_with_arg alloc_with_arg_f;
+  htab_free_with_arg free_with_arg_f;
+
+  /* Current size (in entries) of the hash table, as an index into the
+     table of primes.  */
+  unsigned int size_prime_index;
+};
+
+typedef struct htab *htab_t;
+
+/* An enum saying whether we insert into the hash table or not.  */
+enum insert_option {NO_INSERT, INSERT};
+
+/* The prototypes of the package functions. */
+
+extern htab_t  htab_create_alloc  (size_t, htab_hash,
+                                    htab_eq, htab_del,
+                                    htab_alloc, htab_free);
+
+extern htab_t  htab_create_alloc_ex (size_t, htab_hash,
+                                      htab_eq, htab_del,
+                                      void *, htab_alloc_with_arg,
+                                      htab_free_with_arg);
+
+/* Backward-compatibility functions.  */
+extern htab_t htab_create (size_t, htab_hash, htab_eq, htab_del);
+extern htab_t htab_try_create (size_t, htab_hash, htab_eq, htab_del);
+
+extern void    htab_set_functions_ex (htab_t, htab_hash,
+                                       htab_eq, htab_del,
+                                       void *, htab_alloc_with_arg,
+                                       htab_free_with_arg);
+
+extern void    htab_delete (htab_t);
+extern void    htab_empty (htab_t);
+
+extern void *  htab_find (htab_t, const void *);
+extern void ** htab_find_slot (htab_t, const void *, enum insert_option);
+extern void *  htab_find_with_hash (htab_t, const void *, hashval_t);
+extern void ** htab_find_slot_with_hash (htab_t, const void *,
+                                         hashval_t, enum insert_option);
+extern void    htab_clear_slot (htab_t, void **);
+extern void    htab_remove_elt (htab_t, void *);
+extern void    htab_remove_elt_with_hash (htab_t, void *, hashval_t);
+
+extern void    htab_traverse (htab_t, htab_trav, void *);
+extern void    htab_traverse_noresize (htab_t, htab_trav, void *);
+
+extern size_t  htab_size (htab_t);
+extern size_t  htab_elements (htab_t);
+extern double  htab_collisions (htab_t);
+
+/* A hash function for pointers.  */
+extern htab_hash htab_hash_pointer;
+
+/* An equality function for pointers.  */
+extern htab_eq htab_eq_pointer;
+
+/* A hash function for null-terminated strings.  */
+extern hashval_t htab_hash_string (const void *);
+
+/* An iterative hash function for arbitrary data.  */
+extern hashval_t iterative_hash (const void *, size_t, hashval_t);
+/* Shorthand for hashing something with an intrinsic size.  */
+#define iterative_hash_object(OB,INIT) iterative_hash (&OB, sizeof (OB), INIT)
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __HASHTAB_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/hwint.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/hwint.h
new file mode 100644 (file)
index 0000000..4e0679c
--- /dev/null
@@ -0,0 +1,150 @@
+/* HOST_WIDE_INT definitions for the GNU compiler.
+   Copyright (C) 1998, 2002, 2004, 2008 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   Provide definitions for macros which depend on HOST_BITS_PER_INT
+   and HOST_BITS_PER_LONG.  */
+
+#ifndef GCC_HWINT_H
+#define GCC_HWINT_H
+
+/* This describes the machine the compiler is hosted on.  */
+#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)
+
+/* The string that should be inserted into a printf style format to
+   indicate a "long long" operand.  */
+#ifndef HOST_LONG_LONG_FORMAT 
+#define HOST_LONG_LONG_FORMAT "ll"
+#endif
+
+/* If HAVE_LONG_LONG and SIZEOF_LONG_LONG aren't defined, but
+   GCC_VERSION >= 3000, assume this is the second or later stage of a
+   bootstrap, we do have long long, and it's 64 bits.  (This is
+   required by C99; we do have some ports that violate that assumption
+   but they're all cross-compile-only.)  Just in case, force a
+   constraint violation if that assumption is incorrect.  */
+#if !defined HAVE_LONG_LONG
+# if GCC_VERSION >= 3000
+#  define HAVE_LONG_LONG 1
+#  define SIZEOF_LONG_LONG 8
+extern char sizeof_long_long_must_be_8[sizeof(long long) == 8 ? 1 : -1];
+# endif
+#endif
+
+#ifdef HAVE_LONG_LONG
+# define HOST_BITS_PER_LONGLONG (CHAR_BIT * SIZEOF_LONG_LONG)
+#endif
+#ifdef HAVE___INT64
+# define HOST_BITS_PER___INT64 (CHAR_BIT * SIZEOF___INT64)
+#endif
+
+/* Set HOST_WIDE_INT.  This should be the widest efficient host
+   integer type.  It can be 32 or 64 bits, except that if we are
+   targeting a machine with 64-bit size_t then it has to be 64 bits.
+
+   With a sane ABI, 'long' is the largest efficient host integer type.
+   Thus, we use that unless we have to use 'long long' or '__int64'
+   because we're targeting a 64-bit machine from a 32-bit host.  */
+
+#if HOST_BITS_PER_LONG >= 64 || !defined NEED_64BIT_HOST_WIDE_INT
+#   define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_LONG
+#   define HOST_WIDE_INT long
+#else
+# if HOST_BITS_PER_LONGLONG >= 64
+#   define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_LONGLONG
+#   define HOST_WIDE_INT long long
+# else
+#  if HOST_BITS_PER___INT64 >= 64
+#   define HOST_BITS_PER_WIDE_INT HOST_BITS_PER___INT64
+#   define HOST_WIDE_INT __int64
+#  else
+    #error "Unable to find a suitable type for HOST_WIDE_INT"
+#  endif
+# endif
+#endif
+
+/* Various printf format strings for HOST_WIDE_INT.  */
+
+#if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
+# define HOST_WIDE_INT_PRINT "l"
+# define HOST_WIDE_INT_PRINT_C "L"
+  /* 'long' might be 32 or 64 bits, and the number of leading zeroes
+     must be tweaked accordingly.  */
+# if HOST_BITS_PER_WIDE_INT == 64
+#  define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%lx%016lx"
+# else
+#  define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%lx%08lx"
+# endif
+#else
+# define HOST_WIDE_INT_PRINT HOST_LONG_LONG_FORMAT
+# define HOST_WIDE_INT_PRINT_C "LL"
+  /* We can assume that 'long long' is at least 64 bits.  */
+# define HOST_WIDE_INT_PRINT_DOUBLE_HEX \
+    "0x%" HOST_LONG_LONG_FORMAT "x%016" HOST_LONG_LONG_FORMAT "x"
+#endif /* HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG */
+
+#define HOST_WIDE_INT_PRINT_DEC "%" HOST_WIDE_INT_PRINT "d"
+#define HOST_WIDE_INT_PRINT_DEC_C HOST_WIDE_INT_PRINT_DEC HOST_WIDE_INT_PRINT_C
+#define HOST_WIDE_INT_PRINT_UNSIGNED "%" HOST_WIDE_INT_PRINT "u"
+#define HOST_WIDE_INT_PRINT_HEX "0x%" HOST_WIDE_INT_PRINT "x"
+
+/* Set HOST_WIDEST_INT.  This is a 64-bit type unless the compiler
+   in use has no 64-bit type at all; in that case it's 32 bits.  */
+
+#if HOST_BITS_PER_WIDE_INT >= 64 \
+    || (HOST_BITS_PER_LONGLONG < 64 && HOST_BITS_PER___INT64 < 64)
+# define HOST_WIDEST_INT                     HOST_WIDE_INT
+# define HOST_BITS_PER_WIDEST_INT            HOST_BITS_PER_WIDE_INT
+# define HOST_WIDEST_INT_PRINT_DEC           HOST_WIDE_INT_PRINT_DEC
+# define HOST_WIDEST_INT_PRINT_DEC_C         HOST_WIDE_INT_PRINT_DEC_C
+# define HOST_WIDEST_INT_PRINT_UNSIGNED              HOST_WIDE_INT_PRINT_UNSIGNED
+# define HOST_WIDEST_INT_PRINT_HEX           HOST_WIDE_INT_PRINT_HEX
+# define HOST_WIDEST_INT_PRINT_DOUBLE_HEX     HOST_WIDE_INT_PRINT_DOUBLE_HEX
+#else
+# if HOST_BITS_PER_LONGLONG >= 64
+#  define HOST_BITS_PER_WIDEST_INT           HOST_BITS_PER_LONGLONG
+#  define HOST_WIDEST_INT                    long long
+# else
+#  if HOST_BITS_PER___INT64 >= 64
+#   define HOST_BITS_PER_WIDEST_INT          HOST_BITS_PER___INT64
+#   define HOST_WIDEST_INT                   __int64
+#  else
+    #error "This line should be impossible to reach"
+#  endif
+# endif
+# define HOST_WIDEST_INT_PRINT_DEC           "%" HOST_LONG_LONG_FORMAT "d"
+# define HOST_WIDEST_INT_PRINT_DEC_C         "%" HOST_LONG_LONG_FORMAT "dLL"
+# define HOST_WIDEST_INT_PRINT_UNSIGNED              "%" HOST_LONG_LONG_FORMAT "u"
+# define HOST_WIDEST_INT_PRINT_HEX           "0x%" HOST_LONG_LONG_FORMAT "x"
+# define HOST_WIDEST_INT_PRINT_DOUBLE_HEX     \
+    "0x%" HOST_LONG_LONG_FORMAT "x%016" HOST_LONG_LONG_FORMAT "x"
+#endif
+
+/* Define HOST_WIDEST_FAST_INT to the widest integer type supported
+   efficiently in hardware.  (That is, the widest integer type that fits
+   in a hardware register.)  Normally this is "long" but on some hosts it
+   should be "long long" or "__int64".  This is no convenient way to
+   autodetect this, so such systems must set a flag in config.host; see there
+   for details.  */
+
+#ifdef USE_LONG_LONG_FOR_WIDEST_FAST_INT
+#  ifdef HAVE_LONG_LONG
+#    define HOST_WIDEST_FAST_INT long long
+#    define HOST_BITS_PER_WIDEST_FAST_INT HOST_BITS_PER_LONGLONG
+#  elif defined (HAVE___INT64)
+#    define HOST_WIDEST_FAST_INT __int64
+#    define HOST_BITS_PER_WIDEST_FAST_INT HOST_BITS_PER___INT64
+#  else
+#    error "Your host said it wanted to use long long or __int64 but neither"
+#    error "exist"
+#  endif
+#else
+#  define HOST_WIDEST_FAST_INT long
+#  define HOST_BITS_PER_WIDEST_FAST_INT HOST_BITS_PER_LONG
+#endif
+
+#endif /* ! GCC_HWINT_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/input.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/input.h
new file mode 100644 (file)
index 0000000..299f56c
--- /dev/null
@@ -0,0 +1,68 @@
+/* Declarations for variables relating to reading the source file.
+   Used by parsers, lexical analyzers, and error message routines.
+   Copyright (C) 1993, 1997, 1998, 2000, 2003, 2004, 2007, 2008
+   Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_INPUT_H
+#define GCC_INPUT_H
+
+#include "line-map.h"
+
+extern GTY(()) struct line_maps *line_table;
+
+/* A value which will never be used to represent a real location.  */
+#define UNKNOWN_LOCATION ((source_location) 0)
+
+/* The location for declarations in "<built-in>" */
+#define BUILTINS_LOCATION ((source_location) 2)
+
+typedef struct GTY (())
+{
+  /* The name of the source file involved.  */
+  const char *file;
+
+  /* The line-location in the source file.  */
+  int line;
+
+  int column;
+
+  /* In a system header?. */
+  bool sysp;
+} expanded_location;
+
+extern expanded_location expand_location (source_location);
+
+/* Historically GCC used location_t, while cpp used source_location.
+   This could be removed but it hardly seems worth the effort.  */
+typedef source_location location_t;
+
+/* Top-level source file.  */
+extern const char *main_input_filename;
+
+extern location_t input_location;
+
+#define LOCATION_FILE(LOC) ((expand_location (LOC)).file)
+#define LOCATION_LINE(LOC) ((expand_location (LOC)).line)
+
+#define input_line LOCATION_LINE (input_location)
+#define input_filename LOCATION_FILE (input_location)
+#define in_system_header_at(LOC) ((expand_location (LOC)).sysp != 0)
+#define in_system_header (in_system_header_at (input_location))
+
+#endif
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/insn-constants.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/insn-constants.h
new file mode 100644 (file)
index 0000000..8646a1d
--- /dev/null
@@ -0,0 +1,202 @@
+/* Generated automatically by the program `genconstants'
+   from the machine description file `md'.  */
+
+#ifndef GCC_INSN_CONSTANTS_H
+#define GCC_INSN_CONSTANTS_H
+
+#define UNSPEC_VCAGT 80
+#define UNSPEC_VST2_LANE 182
+#define VUNSPEC_POOL_END 3
+#define UNSPEC_VMLS 121
+#define UNSPEC_CHECK_ARCH 7
+#define VUNSPEC_WCMP_EQ 12
+#define VUNSPEC_POOL_4 6
+#define UNSPEC_VCLZ 85
+#define UNSPEC_WMACSZ 15
+#define UNSPEC_VEXT 93
+#define VUNSPEC_ALIGN8 11
+#define UNSPEC_VRECPS 164
+#define UNSPEC_VLD1_DUP 100
+#define UNSPEC_VLD3A 106
+#define UNSPEC_VLD2_DUP 103
+#define UNSPEC_VLD4A 111
+#define UNSPEC_WMACUZ 16
+#define UNSPEC_VLD3B 107
+#define UNSPEC_VLD4_DUP 113
+#define UNSPEC_VLD4B 112
+#define UNSPEC_VTRN1 198
+#define UNSPEC_VMLAL 118
+#define UNSPEC_VSUBW 195
+#define UNSPEC_VTRN2 199
+#define UNSPEC_GOTSYM_OFF 24
+#define VUNSPEC_TMCR 10
+#define UNSPEC_VLD1_LANE 101
+#define UNSPEC_VBIC 77
+#define UNSPEC_VLD2_LANE 104
+#define UNSPEC_VLD3_LANE 109
+#define UNSPEC_VMVN 132
+#define UNSPEC_VLD4_LANE 114
+#define LAST_ARM_REGNUM 15
+#define UNSPEC_TLS 20
+#define UNSPEC_VQSHRUN_N 161
+#define UNSPEC_VHADD 97
+#define UNSPEC_VPADD 136
+#define UNSPEC_VQDMULL 152
+#define VUNSPEC_POOL_8 7
+#define PC_REGNUM 15
+#define UNSPEC_VSUBHN 193
+#define UNSPEC_VQDMLSL 148
+#define UNSPEC_WSADZ 12
+#define UNSPEC_VQDMLAL_LANE 147
+#define UNSPEC_VHSUB 98
+#define UNSPEC_VQDMULH 150
+#define UNSPEC_SIN 0
+#define UNSPEC_VDUP_LANE 90
+#define UNSPEC_WSHUFH 8
+#define IP_REGNUM 12
+#define UNSPEC_VPMIN 139
+#define VUNSPEC_EH_RETURN 20
+#define VUNSPEC_ALIGN 2
+#define UNSPEC_VLD3_DUP 108
+#define UNSPEC_VGET_LOW 96
+#define UNSPEC_VPMAX 138
+#define UNSPEC_VPADAL 135
+#define UNSPEC_STACK_ALIGN 22
+#define UNSPEC_VST1 179
+#define UNSPEC_VST2 181
+#define UNSPEC_VRSQRTE 168
+#define UNSPEC_VST3 183
+#define UNSPEC_VST4 187
+#define VUNSPEC_POOL_16 8
+#define VUNSPEC_WCMP_GTU 13
+#define UNSPEC_VSRA_N 177
+#define UNSPEC_VREV32 166
+#define UNSPEC_VSHL_N 173
+#define UNSPEC_VQMOVUN 155
+#define UNSPEC_VQADD 145
+#define UNSPEC_VCEQ 81
+#define UNSPEC_VSLI 176
+#define UNSPEC_VSHL 171
+#define UNSPEC_VCGT 83
+#define UNSPEC_VCVT_N 89
+#define UNSPEC_VCLS 84
+#define UNSPEC_VABAL 68
+#define UNSPEC_VGET_HIGH 94
+#define UNSPEC_VMLA_LANE 119
+#define UNSPEC_VORN 133
+#define UNSPEC_VREV64 167
+#define UNSPEC_VABDL 70
+#define UNSPEC_VADDL 74
+#define UNSPEC_VCVT 88
+#define UNSPEC_VORR 134
+#define UNSPEC_VQNEG 156
+#define UNSPEC_VBSL 78
+#define UNSPEC_VQDMULL_LANE 153
+#define UNSPEC_VQSHL_N 158
+#define SP_REGNUM 13
+#define LR_REGNUM 14
+#define R0_REGNUM 0
+#define UNSPEC_VPSMIN 141
+#define UNSPEC_VQSUB 162
+#define UNSPEC_VPUMIN 143
+#define UNSPEC_WSAD 11
+#define UNSPEC_VQDMLSL_LANE 149
+#define UNSPEC_PUSH_MULT 2
+#define UNSPEC_VMLS_LANE 123
+#define UNSPEC_VQABS 144
+#define UNSPEC_VQSHL 157
+#define UNSPEC_VMULL 128
+#define UNSPEC_VADDW 75
+#define UNSPEC_VMULL_LANE 130
+#define UNSPEC_VMLSL 122
+#define UNSPEC_VLD1 99
+#define UNSPEC_VLD2 102
+#define UNSPEC_VLD3 105
+#define UNSPEC_VLD4 110
+#define UNSPEC_VMOVL 125
+#define DOM_CC_X_AND_Y 0
+#define UNSPEC_VMOVN 126
+#define UNSPEC_VZIP1 203
+#define UNSPEC_VPSMAX 140
+#define UNSPEC_VPUMAX 142
+#define UNSPEC_VZIP2 204
+#define UNSPEC_PIC_OFFSET 23
+#define UNSPEC_VMLAL_LANE 120
+#define UNSPEC_VREV16 165
+#define UNSPEC_VSTRUCTDUMMY 191
+#define VUNSPEC_EPILOGUE 1
+#define UNSPEC_WMACS 13
+#define UNSPEC_VADDHN 73
+#define UNSPEC_WMACU 14
+#define UNSPEC_VTBL 196
+#define UNSPEC_VDUP_N 91
+#define UNSPEC_VMLSL_LANE 124
+#define VUNSPEC_BLOCKAGE 0
+#define VUNSPEC_WCMP_GT 14
+#define UNSPEC_VQSHRN_N 160
+#define UNSPEC_PIC_SYM 3
+#define UNSPEC_PIC_BASE 4
+#define UNSPEC_VTBX 197
+#define UNSPEC_VTST 200
+#define DOM_CC_NX_OR_Y 1
+#define UNSPEC_VQSHLU_N 159
+#define FPA_F0_REGNUM 16
+#define UNPSEC_COS 1
+#define UNSPEC_VRSQRTS 169
+#define UNSPEC_PIC_LABEL 21
+#define UNSPEC_PRLG_STK 5
+#define VFPCC_REGNUM 127
+#define UNSPEC_VQMOVN 154
+#define UNSPEC_WMADDS 18
+#define UNSPEC_CLRDI 17
+#define UNSPEC_ASHIFT_SIGNED 65
+#define UNSPEC_VABA 67
+#define UNSPEC_VRECPE 163
+#define UNSPEC_VPADDL 137
+#define UNSPEC_VABD 69
+#define UNSPEC_VADD 72
+#define UNSPEC_VST3A 184
+#define VUNSPEC_TMRC 9
+#define UNSPEC_VCGE 82
+#define UNSPEC_VST3B 185
+#define UNSPEC_VUZP1 201
+#define UNSPEC_VST4A 188
+#define UNSPEC_VCOMBINE 87
+#define UNSPEC_WMADDU 19
+#define UNSPEC_VAND 76
+#define UNSPEC_VMLA 117
+#define UNSPEC_VUZP2 202
+#define UNSPEC_VST4B 189
+#define UNSPEC_VST1_LANE 180
+#define UNSPEC_ASHIFT_UNSIGNED 66
+#define UNSPEC_VST3_LANE 186
+#define UNSPEC_VST4_LANE 190
+#define UNSPEC_VMUL_LANE 129
+#define UNSPEC_VQDMLAL 146
+#define UNSPEC_PROLOGUE_USE 6
+#define DOM_CC_X_OR_Y 2
+#define UNSPEC_VCAGE 79
+#define UNSPEC_VMAX 115
+#define VUNSPEC_POOL_1 4
+#define UNSPEC_VSUB 192
+#define UNSPEC_VQDMULH_LANE 151
+#define UNSPEC_VSHLL_N 172
+#define UNSPEC_VMUL_N 131
+#define FPA_F7_REGNUM 23
+#define UNSPEC_WACC 9
+#define VUNSPEC_POOL_2 5
+#define UNSPEC_TMOVMSK 10
+#define UNSPEC_VMIN 116
+#define UNSPEC_VSHR_N 174
+#define UNSPEC_VGET_LANE 95
+#define UNSPEC_VSRI 178
+#define UNSPEC_VSHRN_N 175
+#define UNSPEC_VSUBL 194
+#define UNSPEC_VEOR 92
+#define UNSPEC_VCNT 86
+#define UNSPEC_VSET_LANE 170
+#define UNSPEC_VMUL 127
+#define CC_REGNUM 24
+#define UNSPEC_VABS 71
+
+#endif /* GCC_INSN_CONSTANTS_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/insn-flags.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/insn-flags.h
new file mode 100644 (file)
index 0000000..b26619e
--- /dev/null
@@ -0,0 +1,3215 @@
+/* Generated automatically by the program `genflags'
+   from the machine description file `md'.  */
+
+#ifndef GCC_INSN_FLAGS_H
+#define GCC_INSN_FLAGS_H
+
+#define HAVE_mulhisi3 (TARGET_DSP_MULTIPLY)
+#define HAVE_anddi3 (TARGET_32BIT && ! TARGET_IWMMXT)
+#define HAVE_insv_zero (arm_arch_thumb2)
+#define HAVE_insv_t2 (arm_arch_thumb2)
+#define HAVE_andsi_notsi_si (TARGET_32BIT)
+#define HAVE_bicsi3 (TARGET_THUMB1)
+#define HAVE_andsi_not_shiftsi_si (TARGET_ARM)
+#define HAVE_iordi3 (TARGET_32BIT && ! TARGET_IWMMXT)
+#define HAVE_xordi3 (TARGET_32BIT && !TARGET_IWMMXT)
+#define HAVE_arm_ashldi3_1bit (TARGET_32BIT)
+#define HAVE_arm_ashrdi3_1bit (TARGET_32BIT)
+#define HAVE_arm_lshrdi3_1bit (TARGET_32BIT)
+#define HAVE_extv (arm_arch_thumb2)
+#define HAVE_extzv_t2 (arm_arch_thumb2)
+#define HAVE_one_cmpldi2 (TARGET_32BIT)
+#define HAVE_thumb1_extendhisi2 (TARGET_THUMB1 && !arm_arch6)
+#define HAVE_pic_load_addr_arm (TARGET_ARM && flag_pic)
+#define HAVE_pic_load_addr_thumb1 (TARGET_THUMB1 && flag_pic)
+#define HAVE_pic_add_dot_plus_four (TARGET_THUMB1)
+#define HAVE_pic_add_dot_plus_eight (TARGET_ARM)
+#define HAVE_tls_load_dot_plus_eight (TARGET_ARM)
+#define HAVE_movmem12b (TARGET_THUMB1)
+#define HAVE_movmem8b (TARGET_THUMB1)
+#define HAVE_cbranchsi4_scratch (TARGET_THUMB1)
+#define HAVE_cstoresi_nltu_thumb1 (TARGET_THUMB1)
+#define HAVE_thumb1_addsi3_addgeu (TARGET_THUMB1)
+#define HAVE_return (TARGET_ARM && USE_RETURN_INSN (FALSE))
+#define HAVE_blockage 1
+#define HAVE_arm_casesi_internal (TARGET_ARM)
+#define HAVE_nop 1
+#define HAVE_movcond (TARGET_ARM)
+#define HAVE_sibcall_epilogue (TARGET_32BIT)
+#define HAVE_stack_tie 1
+#define HAVE_align_4 1
+#define HAVE_align_8 1
+#define HAVE_consttable_end 1
+#define HAVE_consttable_1 (TARGET_THUMB1)
+#define HAVE_consttable_2 (TARGET_THUMB1)
+#define HAVE_consttable_4 1
+#define HAVE_consttable_8 1
+#define HAVE_consttable_16 1
+#define HAVE_clzsi2 (TARGET_32BIT && arm_arch5)
+#define HAVE_prefetch (TARGET_32BIT && arm_arch5e)
+#define HAVE_prologue_use 1
+#define HAVE_arm_eh_return (TARGET_ARM)
+#define HAVE_thumb_eh_return (TARGET_THUMB1)
+#define HAVE_load_tp_hard (TARGET_HARD_TP)
+#define HAVE_load_tp_soft (TARGET_SOFT_TP)
+#define HAVE_cirrus_adddi3 (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_MAVERICK)
+#define HAVE_cirrus_subdi3 (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_MAVERICK)
+#define HAVE_muldi3 (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_MAVERICK)
+#define HAVE_ashldi3_cirrus (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_MAVERICK)
+#define HAVE_cirrus_ashldi_const (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_MAVERICK)
+#define HAVE_cirrus_ashiftrtdi_const (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_MAVERICK)
+#define HAVE_cirrus_floatsisf2 (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_MAVERICK)
+#define HAVE_cirrus_floatsidf2 (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_MAVERICK)
+#define HAVE_floatdisf2 (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_MAVERICK)
+#define HAVE_floatdidf2 (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_MAVERICK)
+#define HAVE_cirrus_truncsfsi2 (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_MAVERICK)
+#define HAVE_cirrus_truncdfsi2 (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_MAVERICK)
+#define HAVE_iwmmxt_iordi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_xordi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_anddi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_nanddi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_movv2si_internal (TARGET_REALLY_IWMMXT)
+#define HAVE_movv4hi_internal (TARGET_REALLY_IWMMXT)
+#define HAVE_movv8qi_internal (TARGET_REALLY_IWMMXT)
+#define HAVE_ssaddv8qi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_ssaddv4hi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_ssaddv2si3 (TARGET_REALLY_IWMMXT)
+#define HAVE_usaddv8qi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_usaddv4hi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_usaddv2si3 (TARGET_REALLY_IWMMXT)
+#define HAVE_sssubv8qi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_sssubv4hi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_sssubv2si3 (TARGET_REALLY_IWMMXT)
+#define HAVE_ussubv8qi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_ussubv4hi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_ussubv2si3 (TARGET_REALLY_IWMMXT)
+#define HAVE_smulv4hi3_highpart (TARGET_REALLY_IWMMXT)
+#define HAVE_umulv4hi3_highpart (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wmacs (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wmacsz (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wmacu (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wmacuz (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_clrdi (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_uavgrndv8qi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_uavgrndv4hi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_uavgv8qi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_uavgv4hi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_psadbw (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_tinsrb (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_tinsrh (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_tinsrw (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_textrmub (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_textrmsb (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_textrmuh (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_textrmsh (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_textrmw (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wshufh (TARGET_REALLY_IWMMXT)
+#define HAVE_eqv8qi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_eqv4hi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_eqv2si3 (TARGET_REALLY_IWMMXT)
+#define HAVE_gtuv8qi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_gtuv4hi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_gtuv2si3 (TARGET_REALLY_IWMMXT)
+#define HAVE_gtv8qi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_gtv4hi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_gtv2si3 (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wpackhss (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wpackwss (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wpackdss (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wpackhus (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wpackwus (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wpackdus (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wunpckihb (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wunpckihh (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wunpckihw (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wunpckilb (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wunpckilh (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wunpckilw (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wunpckehub (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wunpckehuh (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wunpckehuw (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wunpckehsb (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wunpckehsh (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wunpckehsw (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wunpckelub (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wunpckeluh (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wunpckeluw (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wunpckelsb (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wunpckelsh (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wunpckelsw (TARGET_REALLY_IWMMXT)
+#define HAVE_rorv4hi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_rorv2si3 (TARGET_REALLY_IWMMXT)
+#define HAVE_rordi3 (TARGET_REALLY_IWMMXT)
+#define HAVE_ashrv4hi3_iwmmxt (TARGET_REALLY_IWMMXT)
+#define HAVE_ashrv2si3_iwmmxt (TARGET_REALLY_IWMMXT)
+#define HAVE_ashrdi3_iwmmxt (TARGET_REALLY_IWMMXT)
+#define HAVE_lshrv4hi3_iwmmxt (TARGET_REALLY_IWMMXT)
+#define HAVE_lshrv2si3_iwmmxt (TARGET_REALLY_IWMMXT)
+#define HAVE_lshrdi3_iwmmxt (TARGET_REALLY_IWMMXT)
+#define HAVE_ashlv4hi3_iwmmxt (TARGET_REALLY_IWMMXT)
+#define HAVE_ashlv2si3_iwmmxt (TARGET_REALLY_IWMMXT)
+#define HAVE_ashldi3_iwmmxt (TARGET_REALLY_IWMMXT)
+#define HAVE_rorv4hi3_di (TARGET_REALLY_IWMMXT)
+#define HAVE_rorv2si3_di (TARGET_REALLY_IWMMXT)
+#define HAVE_rordi3_di (TARGET_REALLY_IWMMXT)
+#define HAVE_ashrv4hi3_di (TARGET_REALLY_IWMMXT)
+#define HAVE_ashrv2si3_di (TARGET_REALLY_IWMMXT)
+#define HAVE_ashrdi3_di (TARGET_REALLY_IWMMXT)
+#define HAVE_lshrv4hi3_di (TARGET_REALLY_IWMMXT)
+#define HAVE_lshrv2si3_di (TARGET_REALLY_IWMMXT)
+#define HAVE_lshrdi3_di (TARGET_REALLY_IWMMXT)
+#define HAVE_ashlv4hi3_di (TARGET_REALLY_IWMMXT)
+#define HAVE_ashlv2si3_di (TARGET_REALLY_IWMMXT)
+#define HAVE_ashldi3_di (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wmadds (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wmaddu (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_tmia (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_tmiaph (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_tmiabb (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_tmiatb (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_tmiabt (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_tmiatt (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_tbcstqi (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_tbcsthi (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_tbcstsi (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_tmovmskb (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_tmovmskh (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_tmovmskw (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_waccb (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wacch (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_waccw (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_walign (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_tmrc (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_tmcr (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wsadb (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wsadh (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wsadbz (TARGET_REALLY_IWMMXT)
+#define HAVE_iwmmxt_wsadhz (TARGET_REALLY_IWMMXT)
+#define HAVE_fixuns_truncsfsi2 (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP)
+#define HAVE_fixuns_truncdfsi2 (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP)
+#define HAVE_floatunssisf2 (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP)
+#define HAVE_floatunssidf2 (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP)
+#define HAVE_pic_load_addr_thumb2 (TARGET_THUMB2 && flag_pic)
+#define HAVE_pic_load_dot_plus_four (TARGET_THUMB2)
+#define HAVE_thumb2_casesi_internal (TARGET_THUMB2 && !flag_pic)
+#define HAVE_thumb2_casesi_internal_pic (TARGET_THUMB2 && flag_pic)
+#define HAVE_thumb2_eh_return (TARGET_THUMB2)
+#define HAVE_divsi3 (TARGET_THUMB2 && arm_arch_hwdiv)
+#define HAVE_udivsi3 (TARGET_THUMB2 && arm_arch_hwdiv)
+#define HAVE_vec_setv8qi_internal (TARGET_NEON)
+#define HAVE_vec_setv4hi_internal (TARGET_NEON)
+#define HAVE_vec_setv2si_internal (TARGET_NEON)
+#define HAVE_vec_setv2sf_internal (TARGET_NEON)
+#define HAVE_vec_setv16qi_internal (TARGET_NEON)
+#define HAVE_vec_setv8hi_internal (TARGET_NEON)
+#define HAVE_vec_setv4si_internal (TARGET_NEON)
+#define HAVE_vec_setv4sf_internal (TARGET_NEON)
+#define HAVE_vec_setv2di_internal (TARGET_NEON)
+#define HAVE_vec_extractv8qi (TARGET_NEON)
+#define HAVE_vec_extractv4hi (TARGET_NEON)
+#define HAVE_vec_extractv2si (TARGET_NEON)
+#define HAVE_vec_extractv2sf (TARGET_NEON)
+#define HAVE_vec_extractv16qi (TARGET_NEON)
+#define HAVE_vec_extractv8hi (TARGET_NEON)
+#define HAVE_vec_extractv4si (TARGET_NEON)
+#define HAVE_vec_extractv4sf (TARGET_NEON)
+#define HAVE_vec_extractv2di (TARGET_NEON)
+#define HAVE_iorv8qi3 (TARGET_NEON)
+#define HAVE_iorv16qi3 (TARGET_NEON)
+#define HAVE_iorv4hi3 (TARGET_NEON)
+#define HAVE_iorv8hi3 (TARGET_NEON)
+#define HAVE_iorv2si3 (TARGET_NEON)
+#define HAVE_iorv4si3 (TARGET_NEON)
+#define HAVE_iorv2sf3 (TARGET_NEON)
+#define HAVE_iorv4sf3 (TARGET_NEON)
+#define HAVE_iorv2di3 (TARGET_NEON)
+#define HAVE_iordi3_neon (TARGET_NEON)
+#define HAVE_andv8qi3 (TARGET_NEON)
+#define HAVE_andv16qi3 (TARGET_NEON)
+#define HAVE_andv4hi3 (TARGET_NEON)
+#define HAVE_andv8hi3 (TARGET_NEON)
+#define HAVE_andv2si3 (TARGET_NEON)
+#define HAVE_andv4si3 (TARGET_NEON)
+#define HAVE_andv2sf3 (TARGET_NEON)
+#define HAVE_andv4sf3 (TARGET_NEON)
+#define HAVE_andv2di3 (TARGET_NEON)
+#define HAVE_anddi3_neon (TARGET_NEON)
+#define HAVE_ornv8qi3_neon (TARGET_NEON)
+#define HAVE_ornv16qi3_neon (TARGET_NEON)
+#define HAVE_ornv4hi3_neon (TARGET_NEON)
+#define HAVE_ornv8hi3_neon (TARGET_NEON)
+#define HAVE_ornv2si3_neon (TARGET_NEON)
+#define HAVE_ornv4si3_neon (TARGET_NEON)
+#define HAVE_ornv2sf3_neon (TARGET_NEON)
+#define HAVE_ornv4sf3_neon (TARGET_NEON)
+#define HAVE_ornv2di3_neon (TARGET_NEON)
+#define HAVE_orndi3_neon (TARGET_NEON)
+#define HAVE_bicv8qi3_neon (TARGET_NEON)
+#define HAVE_bicv16qi3_neon (TARGET_NEON)
+#define HAVE_bicv4hi3_neon (TARGET_NEON)
+#define HAVE_bicv8hi3_neon (TARGET_NEON)
+#define HAVE_bicv2si3_neon (TARGET_NEON)
+#define HAVE_bicv4si3_neon (TARGET_NEON)
+#define HAVE_bicv2sf3_neon (TARGET_NEON)
+#define HAVE_bicv4sf3_neon (TARGET_NEON)
+#define HAVE_bicv2di3_neon (TARGET_NEON)
+#define HAVE_bicdi3_neon (TARGET_NEON)
+#define HAVE_xorv8qi3 (TARGET_NEON)
+#define HAVE_xorv16qi3 (TARGET_NEON)
+#define HAVE_xorv4hi3 (TARGET_NEON)
+#define HAVE_xorv8hi3 (TARGET_NEON)
+#define HAVE_xorv2si3 (TARGET_NEON)
+#define HAVE_xorv4si3 (TARGET_NEON)
+#define HAVE_xorv2sf3 (TARGET_NEON)
+#define HAVE_xorv4sf3 (TARGET_NEON)
+#define HAVE_xorv2di3 (TARGET_NEON)
+#define HAVE_xordi3_neon (TARGET_NEON)
+#define HAVE_one_cmplv8qi2 (TARGET_NEON)
+#define HAVE_one_cmplv16qi2 (TARGET_NEON)
+#define HAVE_one_cmplv4hi2 (TARGET_NEON)
+#define HAVE_one_cmplv8hi2 (TARGET_NEON)
+#define HAVE_one_cmplv2si2 (TARGET_NEON)
+#define HAVE_one_cmplv4si2 (TARGET_NEON)
+#define HAVE_one_cmplv2sf2 (TARGET_NEON)
+#define HAVE_one_cmplv4sf2 (TARGET_NEON)
+#define HAVE_one_cmplv2di2 (TARGET_NEON)
+#define HAVE_absv8qi2 (TARGET_NEON)
+#define HAVE_absv16qi2 (TARGET_NEON)
+#define HAVE_absv4hi2 (TARGET_NEON)
+#define HAVE_absv8hi2 (TARGET_NEON)
+#define HAVE_absv2si2 (TARGET_NEON)
+#define HAVE_absv4si2 (TARGET_NEON)
+#define HAVE_absv2sf2 (TARGET_NEON)
+#define HAVE_absv4sf2 (TARGET_NEON)
+#define HAVE_negv8qi2 (TARGET_NEON)
+#define HAVE_negv16qi2 (TARGET_NEON)
+#define HAVE_negv4hi2 (TARGET_NEON)
+#define HAVE_negv8hi2 (TARGET_NEON)
+#define HAVE_negv2si2 (TARGET_NEON)
+#define HAVE_negv4si2 (TARGET_NEON)
+#define HAVE_negv2sf2 (TARGET_NEON)
+#define HAVE_negv4sf2 (TARGET_NEON)
+#define HAVE_ashlv8qi3 (TARGET_NEON)
+#define HAVE_ashlv16qi3 (TARGET_NEON)
+#define HAVE_ashlv4hi3 (TARGET_NEON)
+#define HAVE_ashlv8hi3 (TARGET_NEON)
+#define HAVE_ashlv2si3 (TARGET_NEON)
+#define HAVE_ashlv4si3 (TARGET_NEON)
+#define HAVE_ashlv8qi3_signed (TARGET_NEON)
+#define HAVE_ashlv16qi3_signed (TARGET_NEON)
+#define HAVE_ashlv4hi3_signed (TARGET_NEON)
+#define HAVE_ashlv8hi3_signed (TARGET_NEON)
+#define HAVE_ashlv2si3_signed (TARGET_NEON)
+#define HAVE_ashlv4si3_signed (TARGET_NEON)
+#define HAVE_ashlv2di3_signed (TARGET_NEON)
+#define HAVE_ashlv8qi3_unsigned (TARGET_NEON)
+#define HAVE_ashlv16qi3_unsigned (TARGET_NEON)
+#define HAVE_ashlv4hi3_unsigned (TARGET_NEON)
+#define HAVE_ashlv8hi3_unsigned (TARGET_NEON)
+#define HAVE_ashlv2si3_unsigned (TARGET_NEON)
+#define HAVE_ashlv4si3_unsigned (TARGET_NEON)
+#define HAVE_ashlv2di3_unsigned (TARGET_NEON)
+#define HAVE_widen_ssumv8qi3 (TARGET_NEON)
+#define HAVE_widen_ssumv4hi3 (TARGET_NEON)
+#define HAVE_widen_ssumv2si3 (TARGET_NEON)
+#define HAVE_widen_usumv8qi3 (TARGET_NEON)
+#define HAVE_widen_usumv4hi3 (TARGET_NEON)
+#define HAVE_widen_usumv2si3 (TARGET_NEON)
+#define HAVE_quad_halves_plusv4si (TARGET_NEON)
+#define HAVE_quad_halves_sminv4si (TARGET_NEON)
+#define HAVE_quad_halves_smaxv4si (TARGET_NEON)
+#define HAVE_quad_halves_uminv4si (TARGET_NEON)
+#define HAVE_quad_halves_umaxv4si (TARGET_NEON)
+#define HAVE_quad_halves_plusv4sf (TARGET_NEON)
+#define HAVE_quad_halves_sminv4sf (TARGET_NEON)
+#define HAVE_quad_halves_smaxv4sf (TARGET_NEON)
+#define HAVE_quad_halves_plusv8hi (TARGET_NEON)
+#define HAVE_quad_halves_sminv8hi (TARGET_NEON)
+#define HAVE_quad_halves_smaxv8hi (TARGET_NEON)
+#define HAVE_quad_halves_uminv8hi (TARGET_NEON)
+#define HAVE_quad_halves_umaxv8hi (TARGET_NEON)
+#define HAVE_quad_halves_plusv16qi (TARGET_NEON)
+#define HAVE_quad_halves_sminv16qi (TARGET_NEON)
+#define HAVE_quad_halves_smaxv16qi (TARGET_NEON)
+#define HAVE_quad_halves_uminv16qi (TARGET_NEON)
+#define HAVE_quad_halves_umaxv16qi (TARGET_NEON)
+#define HAVE_move_lo_quad_v4si (TARGET_NEON)
+#define HAVE_move_lo_quad_v4sf (TARGET_NEON)
+#define HAVE_move_lo_quad_v8hi (TARGET_NEON)
+#define HAVE_move_lo_quad_v16qi (TARGET_NEON)
+#define HAVE_reduc_splus_v2di (TARGET_NEON)
+#define HAVE_neon_vpadd_internalv8qi (TARGET_NEON)
+#define HAVE_neon_vpadd_internalv4hi (TARGET_NEON)
+#define HAVE_neon_vpadd_internalv2si (TARGET_NEON)
+#define HAVE_neon_vpadd_internalv2sf (TARGET_NEON)
+#define HAVE_neon_vpsminv8qi (TARGET_NEON)
+#define HAVE_neon_vpsminv4hi (TARGET_NEON)
+#define HAVE_neon_vpsminv2si (TARGET_NEON)
+#define HAVE_neon_vpsminv2sf (TARGET_NEON)
+#define HAVE_neon_vpsmaxv8qi (TARGET_NEON)
+#define HAVE_neon_vpsmaxv4hi (TARGET_NEON)
+#define HAVE_neon_vpsmaxv2si (TARGET_NEON)
+#define HAVE_neon_vpsmaxv2sf (TARGET_NEON)
+#define HAVE_neon_vpuminv8qi (TARGET_NEON)
+#define HAVE_neon_vpuminv4hi (TARGET_NEON)
+#define HAVE_neon_vpuminv2si (TARGET_NEON)
+#define HAVE_neon_vpumaxv8qi (TARGET_NEON)
+#define HAVE_neon_vpumaxv4hi (TARGET_NEON)
+#define HAVE_neon_vpumaxv2si (TARGET_NEON)
+#define HAVE_neon_vaddv8qi (TARGET_NEON)
+#define HAVE_neon_vaddv16qi (TARGET_NEON)
+#define HAVE_neon_vaddv4hi (TARGET_NEON)
+#define HAVE_neon_vaddv8hi (TARGET_NEON)
+#define HAVE_neon_vaddv2si (TARGET_NEON)
+#define HAVE_neon_vaddv4si (TARGET_NEON)
+#define HAVE_neon_vaddv2sf (TARGET_NEON)
+#define HAVE_neon_vaddv4sf (TARGET_NEON)
+#define HAVE_neon_vadddi (TARGET_NEON)
+#define HAVE_neon_vaddv2di (TARGET_NEON)
+#define HAVE_neon_vaddlv8qi (TARGET_NEON)
+#define HAVE_neon_vaddlv4hi (TARGET_NEON)
+#define HAVE_neon_vaddlv2si (TARGET_NEON)
+#define HAVE_neon_vaddwv8qi (TARGET_NEON)
+#define HAVE_neon_vaddwv4hi (TARGET_NEON)
+#define HAVE_neon_vaddwv2si (TARGET_NEON)
+#define HAVE_neon_vhaddv8qi (TARGET_NEON)
+#define HAVE_neon_vhaddv16qi (TARGET_NEON)
+#define HAVE_neon_vhaddv4hi (TARGET_NEON)
+#define HAVE_neon_vhaddv8hi (TARGET_NEON)
+#define HAVE_neon_vhaddv2si (TARGET_NEON)
+#define HAVE_neon_vhaddv4si (TARGET_NEON)
+#define HAVE_neon_vqaddv8qi (TARGET_NEON)
+#define HAVE_neon_vqaddv16qi (TARGET_NEON)
+#define HAVE_neon_vqaddv4hi (TARGET_NEON)
+#define HAVE_neon_vqaddv8hi (TARGET_NEON)
+#define HAVE_neon_vqaddv2si (TARGET_NEON)
+#define HAVE_neon_vqaddv4si (TARGET_NEON)
+#define HAVE_neon_vqadddi (TARGET_NEON)
+#define HAVE_neon_vqaddv2di (TARGET_NEON)
+#define HAVE_neon_vaddhnv8hi (TARGET_NEON)
+#define HAVE_neon_vaddhnv4si (TARGET_NEON)
+#define HAVE_neon_vaddhnv2di (TARGET_NEON)
+#define HAVE_neon_vmulv8qi (TARGET_NEON)
+#define HAVE_neon_vmulv16qi (TARGET_NEON)
+#define HAVE_neon_vmulv4hi (TARGET_NEON)
+#define HAVE_neon_vmulv8hi (TARGET_NEON)
+#define HAVE_neon_vmulv2si (TARGET_NEON)
+#define HAVE_neon_vmulv4si (TARGET_NEON)
+#define HAVE_neon_vmulv2sf (TARGET_NEON)
+#define HAVE_neon_vmulv4sf (TARGET_NEON)
+#define HAVE_neon_vmlav8qi (TARGET_NEON)
+#define HAVE_neon_vmlav16qi (TARGET_NEON)
+#define HAVE_neon_vmlav4hi (TARGET_NEON)
+#define HAVE_neon_vmlav8hi (TARGET_NEON)
+#define HAVE_neon_vmlav2si (TARGET_NEON)
+#define HAVE_neon_vmlav4si (TARGET_NEON)
+#define HAVE_neon_vmlav2sf (TARGET_NEON)
+#define HAVE_neon_vmlav4sf (TARGET_NEON)
+#define HAVE_neon_vmlalv8qi (TARGET_NEON)
+#define HAVE_neon_vmlalv4hi (TARGET_NEON)
+#define HAVE_neon_vmlalv2si (TARGET_NEON)
+#define HAVE_neon_vmlsv8qi (TARGET_NEON)
+#define HAVE_neon_vmlsv16qi (TARGET_NEON)
+#define HAVE_neon_vmlsv4hi (TARGET_NEON)
+#define HAVE_neon_vmlsv8hi (TARGET_NEON)
+#define HAVE_neon_vmlsv2si (TARGET_NEON)
+#define HAVE_neon_vmlsv4si (TARGET_NEON)
+#define HAVE_neon_vmlsv2sf (TARGET_NEON)
+#define HAVE_neon_vmlsv4sf (TARGET_NEON)
+#define HAVE_neon_vmlslv8qi (TARGET_NEON)
+#define HAVE_neon_vmlslv4hi (TARGET_NEON)
+#define HAVE_neon_vmlslv2si (TARGET_NEON)
+#define HAVE_neon_vqdmulhv4hi (TARGET_NEON)
+#define HAVE_neon_vqdmulhv2si (TARGET_NEON)
+#define HAVE_neon_vqdmulhv8hi (TARGET_NEON)
+#define HAVE_neon_vqdmulhv4si (TARGET_NEON)
+#define HAVE_neon_vqdmlalv4hi (TARGET_NEON)
+#define HAVE_neon_vqdmlalv2si (TARGET_NEON)
+#define HAVE_neon_vqdmlslv4hi (TARGET_NEON)
+#define HAVE_neon_vqdmlslv2si (TARGET_NEON)
+#define HAVE_neon_vmullv8qi (TARGET_NEON)
+#define HAVE_neon_vmullv4hi (TARGET_NEON)
+#define HAVE_neon_vmullv2si (TARGET_NEON)
+#define HAVE_neon_vqdmullv4hi (TARGET_NEON)
+#define HAVE_neon_vqdmullv2si (TARGET_NEON)
+#define HAVE_neon_vsubv8qi (TARGET_NEON)
+#define HAVE_neon_vsubv16qi (TARGET_NEON)
+#define HAVE_neon_vsubv4hi (TARGET_NEON)
+#define HAVE_neon_vsubv8hi (TARGET_NEON)
+#define HAVE_neon_vsubv2si (TARGET_NEON)
+#define HAVE_neon_vsubv4si (TARGET_NEON)
+#define HAVE_neon_vsubv2sf (TARGET_NEON)
+#define HAVE_neon_vsubv4sf (TARGET_NEON)
+#define HAVE_neon_vsubdi (TARGET_NEON)
+#define HAVE_neon_vsubv2di (TARGET_NEON)
+#define HAVE_neon_vsublv8qi (TARGET_NEON)
+#define HAVE_neon_vsublv4hi (TARGET_NEON)
+#define HAVE_neon_vsublv2si (TARGET_NEON)
+#define HAVE_neon_vsubwv8qi (TARGET_NEON)
+#define HAVE_neon_vsubwv4hi (TARGET_NEON)
+#define HAVE_neon_vsubwv2si (TARGET_NEON)
+#define HAVE_neon_vqsubv8qi (TARGET_NEON)
+#define HAVE_neon_vqsubv16qi (TARGET_NEON)
+#define HAVE_neon_vqsubv4hi (TARGET_NEON)
+#define HAVE_neon_vqsubv8hi (TARGET_NEON)
+#define HAVE_neon_vqsubv2si (TARGET_NEON)
+#define HAVE_neon_vqsubv4si (TARGET_NEON)
+#define HAVE_neon_vqsubdi (TARGET_NEON)
+#define HAVE_neon_vqsubv2di (TARGET_NEON)
+#define HAVE_neon_vhsubv8qi (TARGET_NEON)
+#define HAVE_neon_vhsubv16qi (TARGET_NEON)
+#define HAVE_neon_vhsubv4hi (TARGET_NEON)
+#define HAVE_neon_vhsubv8hi (TARGET_NEON)
+#define HAVE_neon_vhsubv2si (TARGET_NEON)
+#define HAVE_neon_vhsubv4si (TARGET_NEON)
+#define HAVE_neon_vsubhnv8hi (TARGET_NEON)
+#define HAVE_neon_vsubhnv4si (TARGET_NEON)
+#define HAVE_neon_vsubhnv2di (TARGET_NEON)
+#define HAVE_neon_vceqv8qi (TARGET_NEON)
+#define HAVE_neon_vceqv16qi (TARGET_NEON)
+#define HAVE_neon_vceqv4hi (TARGET_NEON)
+#define HAVE_neon_vceqv8hi (TARGET_NEON)
+#define HAVE_neon_vceqv2si (TARGET_NEON)
+#define HAVE_neon_vceqv4si (TARGET_NEON)
+#define HAVE_neon_vceqv2sf (TARGET_NEON)
+#define HAVE_neon_vceqv4sf (TARGET_NEON)
+#define HAVE_neon_vcgev8qi (TARGET_NEON)
+#define HAVE_neon_vcgev16qi (TARGET_NEON)
+#define HAVE_neon_vcgev4hi (TARGET_NEON)
+#define HAVE_neon_vcgev8hi (TARGET_NEON)
+#define HAVE_neon_vcgev2si (TARGET_NEON)
+#define HAVE_neon_vcgev4si (TARGET_NEON)
+#define HAVE_neon_vcgev2sf (TARGET_NEON)
+#define HAVE_neon_vcgev4sf (TARGET_NEON)
+#define HAVE_neon_vcgtv8qi (TARGET_NEON)
+#define HAVE_neon_vcgtv16qi (TARGET_NEON)
+#define HAVE_neon_vcgtv4hi (TARGET_NEON)
+#define HAVE_neon_vcgtv8hi (TARGET_NEON)
+#define HAVE_neon_vcgtv2si (TARGET_NEON)
+#define HAVE_neon_vcgtv4si (TARGET_NEON)
+#define HAVE_neon_vcgtv2sf (TARGET_NEON)
+#define HAVE_neon_vcgtv4sf (TARGET_NEON)
+#define HAVE_neon_vcagev2sf (TARGET_NEON)
+#define HAVE_neon_vcagev4sf (TARGET_NEON)
+#define HAVE_neon_vcagtv2sf (TARGET_NEON)
+#define HAVE_neon_vcagtv4sf (TARGET_NEON)
+#define HAVE_neon_vtstv8qi (TARGET_NEON)
+#define HAVE_neon_vtstv16qi (TARGET_NEON)
+#define HAVE_neon_vtstv4hi (TARGET_NEON)
+#define HAVE_neon_vtstv8hi (TARGET_NEON)
+#define HAVE_neon_vtstv2si (TARGET_NEON)
+#define HAVE_neon_vtstv4si (TARGET_NEON)
+#define HAVE_neon_vabdv8qi (TARGET_NEON)
+#define HAVE_neon_vabdv16qi (TARGET_NEON)
+#define HAVE_neon_vabdv4hi (TARGET_NEON)
+#define HAVE_neon_vabdv8hi (TARGET_NEON)
+#define HAVE_neon_vabdv2si (TARGET_NEON)
+#define HAVE_neon_vabdv4si (TARGET_NEON)
+#define HAVE_neon_vabdv2sf (TARGET_NEON)
+#define HAVE_neon_vabdv4sf (TARGET_NEON)
+#define HAVE_neon_vabdlv8qi (TARGET_NEON)
+#define HAVE_neon_vabdlv4hi (TARGET_NEON)
+#define HAVE_neon_vabdlv2si (TARGET_NEON)
+#define HAVE_neon_vabav8qi (TARGET_NEON)
+#define HAVE_neon_vabav16qi (TARGET_NEON)
+#define HAVE_neon_vabav4hi (TARGET_NEON)
+#define HAVE_neon_vabav8hi (TARGET_NEON)
+#define HAVE_neon_vabav2si (TARGET_NEON)
+#define HAVE_neon_vabav4si (TARGET_NEON)
+#define HAVE_neon_vabalv8qi (TARGET_NEON)
+#define HAVE_neon_vabalv4hi (TARGET_NEON)
+#define HAVE_neon_vabalv2si (TARGET_NEON)
+#define HAVE_neon_vmaxv8qi (TARGET_NEON)
+#define HAVE_neon_vmaxv16qi (TARGET_NEON)
+#define HAVE_neon_vmaxv4hi (TARGET_NEON)
+#define HAVE_neon_vmaxv8hi (TARGET_NEON)
+#define HAVE_neon_vmaxv2si (TARGET_NEON)
+#define HAVE_neon_vmaxv4si (TARGET_NEON)
+#define HAVE_neon_vmaxv2sf (TARGET_NEON)
+#define HAVE_neon_vmaxv4sf (TARGET_NEON)
+#define HAVE_neon_vminv8qi (TARGET_NEON)
+#define HAVE_neon_vminv16qi (TARGET_NEON)
+#define HAVE_neon_vminv4hi (TARGET_NEON)
+#define HAVE_neon_vminv8hi (TARGET_NEON)
+#define HAVE_neon_vminv2si (TARGET_NEON)
+#define HAVE_neon_vminv4si (TARGET_NEON)
+#define HAVE_neon_vminv2sf (TARGET_NEON)
+#define HAVE_neon_vminv4sf (TARGET_NEON)
+#define HAVE_neon_vpaddlv8qi (TARGET_NEON)
+#define HAVE_neon_vpaddlv16qi (TARGET_NEON)
+#define HAVE_neon_vpaddlv4hi (TARGET_NEON)
+#define HAVE_neon_vpaddlv8hi (TARGET_NEON)
+#define HAVE_neon_vpaddlv2si (TARGET_NEON)
+#define HAVE_neon_vpaddlv4si (TARGET_NEON)
+#define HAVE_neon_vpadalv8qi (TARGET_NEON)
+#define HAVE_neon_vpadalv16qi (TARGET_NEON)
+#define HAVE_neon_vpadalv4hi (TARGET_NEON)
+#define HAVE_neon_vpadalv8hi (TARGET_NEON)
+#define HAVE_neon_vpadalv2si (TARGET_NEON)
+#define HAVE_neon_vpadalv4si (TARGET_NEON)
+#define HAVE_neon_vpmaxv8qi (TARGET_NEON)
+#define HAVE_neon_vpmaxv4hi (TARGET_NEON)
+#define HAVE_neon_vpmaxv2si (TARGET_NEON)
+#define HAVE_neon_vpmaxv2sf (TARGET_NEON)
+#define HAVE_neon_vpminv8qi (TARGET_NEON)
+#define HAVE_neon_vpminv4hi (TARGET_NEON)
+#define HAVE_neon_vpminv2si (TARGET_NEON)
+#define HAVE_neon_vpminv2sf (TARGET_NEON)
+#define HAVE_neon_vrecpsv2sf (TARGET_NEON)
+#define HAVE_neon_vrecpsv4sf (TARGET_NEON)
+#define HAVE_neon_vrsqrtsv2sf (TARGET_NEON)
+#define HAVE_neon_vrsqrtsv4sf (TARGET_NEON)
+#define HAVE_neon_vabsv8qi (TARGET_NEON)
+#define HAVE_neon_vabsv16qi (TARGET_NEON)
+#define HAVE_neon_vabsv4hi (TARGET_NEON)
+#define HAVE_neon_vabsv8hi (TARGET_NEON)
+#define HAVE_neon_vabsv2si (TARGET_NEON)
+#define HAVE_neon_vabsv4si (TARGET_NEON)
+#define HAVE_neon_vabsv2sf (TARGET_NEON)
+#define HAVE_neon_vabsv4sf (TARGET_NEON)
+#define HAVE_neon_vqabsv8qi (TARGET_NEON)
+#define HAVE_neon_vqabsv16qi (TARGET_NEON)
+#define HAVE_neon_vqabsv4hi (TARGET_NEON)
+#define HAVE_neon_vqabsv8hi (TARGET_NEON)
+#define HAVE_neon_vqabsv2si (TARGET_NEON)
+#define HAVE_neon_vqabsv4si (TARGET_NEON)
+#define HAVE_neon_vqnegv8qi (TARGET_NEON)
+#define HAVE_neon_vqnegv16qi (TARGET_NEON)
+#define HAVE_neon_vqnegv4hi (TARGET_NEON)
+#define HAVE_neon_vqnegv8hi (TARGET_NEON)
+#define HAVE_neon_vqnegv2si (TARGET_NEON)
+#define HAVE_neon_vqnegv4si (TARGET_NEON)
+#define HAVE_neon_vclsv8qi (TARGET_NEON)
+#define HAVE_neon_vclsv16qi (TARGET_NEON)
+#define HAVE_neon_vclsv4hi (TARGET_NEON)
+#define HAVE_neon_vclsv8hi (TARGET_NEON)
+#define HAVE_neon_vclsv2si (TARGET_NEON)
+#define HAVE_neon_vclsv4si (TARGET_NEON)
+#define HAVE_neon_vclzv8qi (TARGET_NEON)
+#define HAVE_neon_vclzv16qi (TARGET_NEON)
+#define HAVE_neon_vclzv4hi (TARGET_NEON)
+#define HAVE_neon_vclzv8hi (TARGET_NEON)
+#define HAVE_neon_vclzv2si (TARGET_NEON)
+#define HAVE_neon_vclzv4si (TARGET_NEON)
+#define HAVE_neon_vcntv8qi (TARGET_NEON)
+#define HAVE_neon_vcntv16qi (TARGET_NEON)
+#define HAVE_neon_vrecpev2si (TARGET_NEON)
+#define HAVE_neon_vrecpev2sf (TARGET_NEON)
+#define HAVE_neon_vrecpev4si (TARGET_NEON)
+#define HAVE_neon_vrecpev4sf (TARGET_NEON)
+#define HAVE_neon_vrsqrtev2si (TARGET_NEON)
+#define HAVE_neon_vrsqrtev2sf (TARGET_NEON)
+#define HAVE_neon_vrsqrtev4si (TARGET_NEON)
+#define HAVE_neon_vrsqrtev4sf (TARGET_NEON)
+#define HAVE_neon_vget_lanev8qi_sext_internal (TARGET_NEON)
+#define HAVE_neon_vget_lanev4hi_sext_internal (TARGET_NEON)
+#define HAVE_neon_vget_lanev2si_sext_internal (TARGET_NEON)
+#define HAVE_neon_vget_lanev2sf_sext_internal (TARGET_NEON)
+#define HAVE_neon_vget_lanev8qi_zext_internal (TARGET_NEON)
+#define HAVE_neon_vget_lanev4hi_zext_internal (TARGET_NEON)
+#define HAVE_neon_vget_lanev2si_zext_internal (TARGET_NEON)
+#define HAVE_neon_vget_lanev2sf_zext_internal (TARGET_NEON)
+#define HAVE_neon_vget_lanev16qi_sext_internal (TARGET_NEON)
+#define HAVE_neon_vget_lanev8hi_sext_internal (TARGET_NEON)
+#define HAVE_neon_vget_lanev4si_sext_internal (TARGET_NEON)
+#define HAVE_neon_vget_lanev4sf_sext_internal (TARGET_NEON)
+#define HAVE_neon_vget_lanev16qi_zext_internal (TARGET_NEON)
+#define HAVE_neon_vget_lanev8hi_zext_internal (TARGET_NEON)
+#define HAVE_neon_vget_lanev4si_zext_internal (TARGET_NEON)
+#define HAVE_neon_vget_lanev4sf_zext_internal (TARGET_NEON)
+#define HAVE_neon_vget_lanedi (TARGET_NEON)
+#define HAVE_neon_vget_lanev2di (TARGET_NEON)
+#define HAVE_neon_vset_lanev8qi (TARGET_NEON)
+#define HAVE_neon_vset_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vset_lanev2si (TARGET_NEON)
+#define HAVE_neon_vset_lanev2sf (TARGET_NEON)
+#define HAVE_neon_vset_lanedi (TARGET_NEON)
+#define HAVE_neon_vset_lanev16qi (TARGET_NEON)
+#define HAVE_neon_vset_lanev8hi (TARGET_NEON)
+#define HAVE_neon_vset_lanev4si (TARGET_NEON)
+#define HAVE_neon_vset_lanev4sf (TARGET_NEON)
+#define HAVE_neon_vset_lanev2di (TARGET_NEON)
+#define HAVE_neon_vdup_nv8qi (TARGET_NEON)
+#define HAVE_neon_vdup_nv16qi (TARGET_NEON)
+#define HAVE_neon_vdup_nv4hi (TARGET_NEON)
+#define HAVE_neon_vdup_nv8hi (TARGET_NEON)
+#define HAVE_neon_vdup_nv2si (TARGET_NEON)
+#define HAVE_neon_vdup_nv4si (TARGET_NEON)
+#define HAVE_neon_vdup_nv2sf (TARGET_NEON)
+#define HAVE_neon_vdup_nv4sf (TARGET_NEON)
+#define HAVE_neon_vdup_ndi (TARGET_NEON)
+#define HAVE_neon_vdup_nv2di (TARGET_NEON)
+#define HAVE_neon_vdup_lanev8qi (TARGET_NEON)
+#define HAVE_neon_vdup_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vdup_lanev2si (TARGET_NEON)
+#define HAVE_neon_vdup_lanev2sf (TARGET_NEON)
+#define HAVE_neon_vdup_lanev16qi (TARGET_NEON)
+#define HAVE_neon_vdup_lanev8hi (TARGET_NEON)
+#define HAVE_neon_vdup_lanev4si (TARGET_NEON)
+#define HAVE_neon_vdup_lanev4sf (TARGET_NEON)
+#define HAVE_neon_vdup_lanev2di (TARGET_NEON)
+#define HAVE_neon_vcombinev8qi (TARGET_NEON)
+#define HAVE_neon_vcombinev4hi (TARGET_NEON)
+#define HAVE_neon_vcombinev2si (TARGET_NEON)
+#define HAVE_neon_vcombinev2sf (TARGET_NEON)
+#define HAVE_neon_vcombinedi (TARGET_NEON)
+#define HAVE_neon_vget_highv16qi (TARGET_NEON)
+#define HAVE_neon_vget_highv8hi (TARGET_NEON)
+#define HAVE_neon_vget_highv4si (TARGET_NEON)
+#define HAVE_neon_vget_highv4sf (TARGET_NEON)
+#define HAVE_neon_vget_highv2di (TARGET_NEON)
+#define HAVE_neon_vget_lowv16qi (TARGET_NEON)
+#define HAVE_neon_vget_lowv8hi (TARGET_NEON)
+#define HAVE_neon_vget_lowv4si (TARGET_NEON)
+#define HAVE_neon_vget_lowv4sf (TARGET_NEON)
+#define HAVE_neon_vget_lowv2di (TARGET_NEON)
+#define HAVE_neon_vcvtv2sf (TARGET_NEON)
+#define HAVE_neon_vcvtv4sf (TARGET_NEON)
+#define HAVE_neon_vcvtv2si (TARGET_NEON)
+#define HAVE_neon_vcvtv4si (TARGET_NEON)
+#define HAVE_neon_vcvt_nv2sf (TARGET_NEON)
+#define HAVE_neon_vcvt_nv4sf (TARGET_NEON)
+#define HAVE_neon_vcvt_nv2si (TARGET_NEON)
+#define HAVE_neon_vcvt_nv4si (TARGET_NEON)
+#define HAVE_neon_vmovnv8hi (TARGET_NEON)
+#define HAVE_neon_vmovnv4si (TARGET_NEON)
+#define HAVE_neon_vmovnv2di (TARGET_NEON)
+#define HAVE_neon_vqmovnv8hi (TARGET_NEON)
+#define HAVE_neon_vqmovnv4si (TARGET_NEON)
+#define HAVE_neon_vqmovnv2di (TARGET_NEON)
+#define HAVE_neon_vqmovunv8hi (TARGET_NEON)
+#define HAVE_neon_vqmovunv4si (TARGET_NEON)
+#define HAVE_neon_vqmovunv2di (TARGET_NEON)
+#define HAVE_neon_vmovlv8qi (TARGET_NEON)
+#define HAVE_neon_vmovlv4hi (TARGET_NEON)
+#define HAVE_neon_vmovlv2si (TARGET_NEON)
+#define HAVE_neon_vmul_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vmul_lanev2si (TARGET_NEON)
+#define HAVE_neon_vmul_lanev2sf (TARGET_NEON)
+#define HAVE_neon_vmul_lanev8hi (TARGET_NEON)
+#define HAVE_neon_vmul_lanev4si (TARGET_NEON)
+#define HAVE_neon_vmul_lanev4sf (TARGET_NEON)
+#define HAVE_neon_vmull_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vmull_lanev2si (TARGET_NEON)
+#define HAVE_neon_vqdmull_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vqdmull_lanev2si (TARGET_NEON)
+#define HAVE_neon_vqdmulh_lanev8hi (TARGET_NEON)
+#define HAVE_neon_vqdmulh_lanev4si (TARGET_NEON)
+#define HAVE_neon_vqdmulh_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vqdmulh_lanev2si (TARGET_NEON)
+#define HAVE_neon_vmla_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vmla_lanev2si (TARGET_NEON)
+#define HAVE_neon_vmla_lanev2sf (TARGET_NEON)
+#define HAVE_neon_vmla_lanev8hi (TARGET_NEON)
+#define HAVE_neon_vmla_lanev4si (TARGET_NEON)
+#define HAVE_neon_vmla_lanev4sf (TARGET_NEON)
+#define HAVE_neon_vmlal_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vmlal_lanev2si (TARGET_NEON)
+#define HAVE_neon_vqdmlal_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vqdmlal_lanev2si (TARGET_NEON)
+#define HAVE_neon_vmls_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vmls_lanev2si (TARGET_NEON)
+#define HAVE_neon_vmls_lanev2sf (TARGET_NEON)
+#define HAVE_neon_vmls_lanev8hi (TARGET_NEON)
+#define HAVE_neon_vmls_lanev4si (TARGET_NEON)
+#define HAVE_neon_vmls_lanev4sf (TARGET_NEON)
+#define HAVE_neon_vmlsl_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vmlsl_lanev2si (TARGET_NEON)
+#define HAVE_neon_vqdmlsl_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vqdmlsl_lanev2si (TARGET_NEON)
+#define HAVE_neon_vextv8qi (TARGET_NEON)
+#define HAVE_neon_vextv16qi (TARGET_NEON)
+#define HAVE_neon_vextv4hi (TARGET_NEON)
+#define HAVE_neon_vextv8hi (TARGET_NEON)
+#define HAVE_neon_vextv2si (TARGET_NEON)
+#define HAVE_neon_vextv4si (TARGET_NEON)
+#define HAVE_neon_vextv2sf (TARGET_NEON)
+#define HAVE_neon_vextv4sf (TARGET_NEON)
+#define HAVE_neon_vextdi (TARGET_NEON)
+#define HAVE_neon_vextv2di (TARGET_NEON)
+#define HAVE_neon_vrev64v8qi (TARGET_NEON)
+#define HAVE_neon_vrev64v16qi (TARGET_NEON)
+#define HAVE_neon_vrev64v4hi (TARGET_NEON)
+#define HAVE_neon_vrev64v8hi (TARGET_NEON)
+#define HAVE_neon_vrev64v2si (TARGET_NEON)
+#define HAVE_neon_vrev64v4si (TARGET_NEON)
+#define HAVE_neon_vrev64v2sf (TARGET_NEON)
+#define HAVE_neon_vrev64v4sf (TARGET_NEON)
+#define HAVE_neon_vrev64v2di (TARGET_NEON)
+#define HAVE_neon_vrev32v8qi (TARGET_NEON)
+#define HAVE_neon_vrev32v4hi (TARGET_NEON)
+#define HAVE_neon_vrev32v16qi (TARGET_NEON)
+#define HAVE_neon_vrev32v8hi (TARGET_NEON)
+#define HAVE_neon_vrev16v8qi (TARGET_NEON)
+#define HAVE_neon_vrev16v16qi (TARGET_NEON)
+#define HAVE_neon_vbslv8qi_internal (TARGET_NEON)
+#define HAVE_neon_vbslv16qi_internal (TARGET_NEON)
+#define HAVE_neon_vbslv4hi_internal (TARGET_NEON)
+#define HAVE_neon_vbslv8hi_internal (TARGET_NEON)
+#define HAVE_neon_vbslv2si_internal (TARGET_NEON)
+#define HAVE_neon_vbslv4si_internal (TARGET_NEON)
+#define HAVE_neon_vbslv2sf_internal (TARGET_NEON)
+#define HAVE_neon_vbslv4sf_internal (TARGET_NEON)
+#define HAVE_neon_vbsldi_internal (TARGET_NEON)
+#define HAVE_neon_vbslv2di_internal (TARGET_NEON)
+#define HAVE_neon_vshlv8qi (TARGET_NEON)
+#define HAVE_neon_vshlv16qi (TARGET_NEON)
+#define HAVE_neon_vshlv4hi (TARGET_NEON)
+#define HAVE_neon_vshlv8hi (TARGET_NEON)
+#define HAVE_neon_vshlv2si (TARGET_NEON)
+#define HAVE_neon_vshlv4si (TARGET_NEON)
+#define HAVE_neon_vshldi (TARGET_NEON)
+#define HAVE_neon_vshlv2di (TARGET_NEON)
+#define HAVE_neon_vqshlv8qi (TARGET_NEON)
+#define HAVE_neon_vqshlv16qi (TARGET_NEON)
+#define HAVE_neon_vqshlv4hi (TARGET_NEON)
+#define HAVE_neon_vqshlv8hi (TARGET_NEON)
+#define HAVE_neon_vqshlv2si (TARGET_NEON)
+#define HAVE_neon_vqshlv4si (TARGET_NEON)
+#define HAVE_neon_vqshldi (TARGET_NEON)
+#define HAVE_neon_vqshlv2di (TARGET_NEON)
+#define HAVE_neon_vshr_nv8qi (TARGET_NEON)
+#define HAVE_neon_vshr_nv16qi (TARGET_NEON)
+#define HAVE_neon_vshr_nv4hi (TARGET_NEON)
+#define HAVE_neon_vshr_nv8hi (TARGET_NEON)
+#define HAVE_neon_vshr_nv2si (TARGET_NEON)
+#define HAVE_neon_vshr_nv4si (TARGET_NEON)
+#define HAVE_neon_vshr_ndi (TARGET_NEON)
+#define HAVE_neon_vshr_nv2di (TARGET_NEON)
+#define HAVE_neon_vshrn_nv8hi (TARGET_NEON)
+#define HAVE_neon_vshrn_nv4si (TARGET_NEON)
+#define HAVE_neon_vshrn_nv2di (TARGET_NEON)
+#define HAVE_neon_vqshrn_nv8hi (TARGET_NEON)
+#define HAVE_neon_vqshrn_nv4si (TARGET_NEON)
+#define HAVE_neon_vqshrn_nv2di (TARGET_NEON)
+#define HAVE_neon_vqshrun_nv8hi (TARGET_NEON)
+#define HAVE_neon_vqshrun_nv4si (TARGET_NEON)
+#define HAVE_neon_vqshrun_nv2di (TARGET_NEON)
+#define HAVE_neon_vshl_nv8qi (TARGET_NEON)
+#define HAVE_neon_vshl_nv16qi (TARGET_NEON)
+#define HAVE_neon_vshl_nv4hi (TARGET_NEON)
+#define HAVE_neon_vshl_nv8hi (TARGET_NEON)
+#define HAVE_neon_vshl_nv2si (TARGET_NEON)
+#define HAVE_neon_vshl_nv4si (TARGET_NEON)
+#define HAVE_neon_vshl_ndi (TARGET_NEON)
+#define HAVE_neon_vshl_nv2di (TARGET_NEON)
+#define HAVE_neon_vqshl_nv8qi (TARGET_NEON)
+#define HAVE_neon_vqshl_nv16qi (TARGET_NEON)
+#define HAVE_neon_vqshl_nv4hi (TARGET_NEON)
+#define HAVE_neon_vqshl_nv8hi (TARGET_NEON)
+#define HAVE_neon_vqshl_nv2si (TARGET_NEON)
+#define HAVE_neon_vqshl_nv4si (TARGET_NEON)
+#define HAVE_neon_vqshl_ndi (TARGET_NEON)
+#define HAVE_neon_vqshl_nv2di (TARGET_NEON)
+#define HAVE_neon_vqshlu_nv8qi (TARGET_NEON)
+#define HAVE_neon_vqshlu_nv16qi (TARGET_NEON)
+#define HAVE_neon_vqshlu_nv4hi (TARGET_NEON)
+#define HAVE_neon_vqshlu_nv8hi (TARGET_NEON)
+#define HAVE_neon_vqshlu_nv2si (TARGET_NEON)
+#define HAVE_neon_vqshlu_nv4si (TARGET_NEON)
+#define HAVE_neon_vqshlu_ndi (TARGET_NEON)
+#define HAVE_neon_vqshlu_nv2di (TARGET_NEON)
+#define HAVE_neon_vshll_nv8qi (TARGET_NEON)
+#define HAVE_neon_vshll_nv4hi (TARGET_NEON)
+#define HAVE_neon_vshll_nv2si (TARGET_NEON)
+#define HAVE_neon_vsra_nv8qi (TARGET_NEON)
+#define HAVE_neon_vsra_nv16qi (TARGET_NEON)
+#define HAVE_neon_vsra_nv4hi (TARGET_NEON)
+#define HAVE_neon_vsra_nv8hi (TARGET_NEON)
+#define HAVE_neon_vsra_nv2si (TARGET_NEON)
+#define HAVE_neon_vsra_nv4si (TARGET_NEON)
+#define HAVE_neon_vsra_ndi (TARGET_NEON)
+#define HAVE_neon_vsra_nv2di (TARGET_NEON)
+#define HAVE_neon_vsri_nv8qi (TARGET_NEON)
+#define HAVE_neon_vsri_nv16qi (TARGET_NEON)
+#define HAVE_neon_vsri_nv4hi (TARGET_NEON)
+#define HAVE_neon_vsri_nv8hi (TARGET_NEON)
+#define HAVE_neon_vsri_nv2si (TARGET_NEON)
+#define HAVE_neon_vsri_nv4si (TARGET_NEON)
+#define HAVE_neon_vsri_ndi (TARGET_NEON)
+#define HAVE_neon_vsri_nv2di (TARGET_NEON)
+#define HAVE_neon_vsli_nv8qi (TARGET_NEON)
+#define HAVE_neon_vsli_nv16qi (TARGET_NEON)
+#define HAVE_neon_vsli_nv4hi (TARGET_NEON)
+#define HAVE_neon_vsli_nv8hi (TARGET_NEON)
+#define HAVE_neon_vsli_nv2si (TARGET_NEON)
+#define HAVE_neon_vsli_nv4si (TARGET_NEON)
+#define HAVE_neon_vsli_ndi (TARGET_NEON)
+#define HAVE_neon_vsli_nv2di (TARGET_NEON)
+#define HAVE_neon_vtbl1v8qi (TARGET_NEON)
+#define HAVE_neon_vtbl2v8qi (TARGET_NEON)
+#define HAVE_neon_vtbl3v8qi (TARGET_NEON)
+#define HAVE_neon_vtbl4v8qi (TARGET_NEON)
+#define HAVE_neon_vtbx1v8qi (TARGET_NEON)
+#define HAVE_neon_vtbx2v8qi (TARGET_NEON)
+#define HAVE_neon_vtbx3v8qi (TARGET_NEON)
+#define HAVE_neon_vtbx4v8qi (TARGET_NEON)
+#define HAVE_neon_vtrnv8qi_internal (TARGET_NEON)
+#define HAVE_neon_vtrnv16qi_internal (TARGET_NEON)
+#define HAVE_neon_vtrnv4hi_internal (TARGET_NEON)
+#define HAVE_neon_vtrnv8hi_internal (TARGET_NEON)
+#define HAVE_neon_vtrnv2si_internal (TARGET_NEON)
+#define HAVE_neon_vtrnv4si_internal (TARGET_NEON)
+#define HAVE_neon_vtrnv2sf_internal (TARGET_NEON)
+#define HAVE_neon_vtrnv4sf_internal (TARGET_NEON)
+#define HAVE_neon_vzipv8qi_internal (TARGET_NEON)
+#define HAVE_neon_vzipv16qi_internal (TARGET_NEON)
+#define HAVE_neon_vzipv4hi_internal (TARGET_NEON)
+#define HAVE_neon_vzipv8hi_internal (TARGET_NEON)
+#define HAVE_neon_vzipv2si_internal (TARGET_NEON)
+#define HAVE_neon_vzipv4si_internal (TARGET_NEON)
+#define HAVE_neon_vzipv2sf_internal (TARGET_NEON)
+#define HAVE_neon_vzipv4sf_internal (TARGET_NEON)
+#define HAVE_neon_vuzpv8qi_internal (TARGET_NEON)
+#define HAVE_neon_vuzpv16qi_internal (TARGET_NEON)
+#define HAVE_neon_vuzpv4hi_internal (TARGET_NEON)
+#define HAVE_neon_vuzpv8hi_internal (TARGET_NEON)
+#define HAVE_neon_vuzpv2si_internal (TARGET_NEON)
+#define HAVE_neon_vuzpv4si_internal (TARGET_NEON)
+#define HAVE_neon_vuzpv2sf_internal (TARGET_NEON)
+#define HAVE_neon_vuzpv4sf_internal (TARGET_NEON)
+#define HAVE_neon_vld1v8qi (TARGET_NEON)
+#define HAVE_neon_vld1v16qi (TARGET_NEON)
+#define HAVE_neon_vld1v4hi (TARGET_NEON)
+#define HAVE_neon_vld1v8hi (TARGET_NEON)
+#define HAVE_neon_vld1v2si (TARGET_NEON)
+#define HAVE_neon_vld1v4si (TARGET_NEON)
+#define HAVE_neon_vld1v2sf (TARGET_NEON)
+#define HAVE_neon_vld1v4sf (TARGET_NEON)
+#define HAVE_neon_vld1di (TARGET_NEON)
+#define HAVE_neon_vld1v2di (TARGET_NEON)
+#define HAVE_neon_vld1_lanev8qi (TARGET_NEON)
+#define HAVE_neon_vld1_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vld1_lanev2si (TARGET_NEON)
+#define HAVE_neon_vld1_lanev2sf (TARGET_NEON)
+#define HAVE_neon_vld1_lanedi (TARGET_NEON)
+#define HAVE_neon_vld1_lanev16qi (TARGET_NEON)
+#define HAVE_neon_vld1_lanev8hi (TARGET_NEON)
+#define HAVE_neon_vld1_lanev4si (TARGET_NEON)
+#define HAVE_neon_vld1_lanev4sf (TARGET_NEON)
+#define HAVE_neon_vld1_lanev2di (TARGET_NEON)
+#define HAVE_neon_vld1_dupv8qi (TARGET_NEON)
+#define HAVE_neon_vld1_dupv4hi (TARGET_NEON)
+#define HAVE_neon_vld1_dupv2si (TARGET_NEON)
+#define HAVE_neon_vld1_dupv2sf (TARGET_NEON)
+#define HAVE_neon_vld1_dupdi (TARGET_NEON)
+#define HAVE_neon_vld1_dupv16qi (TARGET_NEON)
+#define HAVE_neon_vld1_dupv8hi (TARGET_NEON)
+#define HAVE_neon_vld1_dupv4si (TARGET_NEON)
+#define HAVE_neon_vld1_dupv4sf (TARGET_NEON)
+#define HAVE_neon_vld1_dupv2di (TARGET_NEON)
+#define HAVE_neon_vst1v8qi (TARGET_NEON)
+#define HAVE_neon_vst1v16qi (TARGET_NEON)
+#define HAVE_neon_vst1v4hi (TARGET_NEON)
+#define HAVE_neon_vst1v8hi (TARGET_NEON)
+#define HAVE_neon_vst1v2si (TARGET_NEON)
+#define HAVE_neon_vst1v4si (TARGET_NEON)
+#define HAVE_neon_vst1v2sf (TARGET_NEON)
+#define HAVE_neon_vst1v4sf (TARGET_NEON)
+#define HAVE_neon_vst1di (TARGET_NEON)
+#define HAVE_neon_vst1v2di (TARGET_NEON)
+#define HAVE_neon_vst1_lanev8qi (TARGET_NEON)
+#define HAVE_neon_vst1_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vst1_lanev2si (TARGET_NEON)
+#define HAVE_neon_vst1_lanev2sf (TARGET_NEON)
+#define HAVE_neon_vst1_lanedi (TARGET_NEON)
+#define HAVE_neon_vst1_lanev16qi (TARGET_NEON)
+#define HAVE_neon_vst1_lanev8hi (TARGET_NEON)
+#define HAVE_neon_vst1_lanev4si (TARGET_NEON)
+#define HAVE_neon_vst1_lanev4sf (TARGET_NEON)
+#define HAVE_neon_vst1_lanev2di (TARGET_NEON)
+#define HAVE_neon_vld2v8qi (TARGET_NEON)
+#define HAVE_neon_vld2v4hi (TARGET_NEON)
+#define HAVE_neon_vld2v2si (TARGET_NEON)
+#define HAVE_neon_vld2v2sf (TARGET_NEON)
+#define HAVE_neon_vld2di (TARGET_NEON)
+#define HAVE_neon_vld2v16qi (TARGET_NEON)
+#define HAVE_neon_vld2v8hi (TARGET_NEON)
+#define HAVE_neon_vld2v4si (TARGET_NEON)
+#define HAVE_neon_vld2v4sf (TARGET_NEON)
+#define HAVE_neon_vld2_lanev8qi (TARGET_NEON)
+#define HAVE_neon_vld2_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vld2_lanev2si (TARGET_NEON)
+#define HAVE_neon_vld2_lanev2sf (TARGET_NEON)
+#define HAVE_neon_vld2_lanev8hi (TARGET_NEON)
+#define HAVE_neon_vld2_lanev4si (TARGET_NEON)
+#define HAVE_neon_vld2_lanev4sf (TARGET_NEON)
+#define HAVE_neon_vld2_dupv8qi (TARGET_NEON)
+#define HAVE_neon_vld2_dupv4hi (TARGET_NEON)
+#define HAVE_neon_vld2_dupv2si (TARGET_NEON)
+#define HAVE_neon_vld2_dupv2sf (TARGET_NEON)
+#define HAVE_neon_vld2_dupdi (TARGET_NEON)
+#define HAVE_neon_vst2v8qi (TARGET_NEON)
+#define HAVE_neon_vst2v4hi (TARGET_NEON)
+#define HAVE_neon_vst2v2si (TARGET_NEON)
+#define HAVE_neon_vst2v2sf (TARGET_NEON)
+#define HAVE_neon_vst2di (TARGET_NEON)
+#define HAVE_neon_vst2v16qi (TARGET_NEON)
+#define HAVE_neon_vst2v8hi (TARGET_NEON)
+#define HAVE_neon_vst2v4si (TARGET_NEON)
+#define HAVE_neon_vst2v4sf (TARGET_NEON)
+#define HAVE_neon_vst2_lanev8qi (TARGET_NEON)
+#define HAVE_neon_vst2_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vst2_lanev2si (TARGET_NEON)
+#define HAVE_neon_vst2_lanev2sf (TARGET_NEON)
+#define HAVE_neon_vst2_lanev8hi (TARGET_NEON)
+#define HAVE_neon_vst2_lanev4si (TARGET_NEON)
+#define HAVE_neon_vst2_lanev4sf (TARGET_NEON)
+#define HAVE_neon_vld3v8qi (TARGET_NEON)
+#define HAVE_neon_vld3v4hi (TARGET_NEON)
+#define HAVE_neon_vld3v2si (TARGET_NEON)
+#define HAVE_neon_vld3v2sf (TARGET_NEON)
+#define HAVE_neon_vld3di (TARGET_NEON)
+#define HAVE_neon_vld3qav16qi (TARGET_NEON)
+#define HAVE_neon_vld3qav8hi (TARGET_NEON)
+#define HAVE_neon_vld3qav4si (TARGET_NEON)
+#define HAVE_neon_vld3qav4sf (TARGET_NEON)
+#define HAVE_neon_vld3qbv16qi (TARGET_NEON)
+#define HAVE_neon_vld3qbv8hi (TARGET_NEON)
+#define HAVE_neon_vld3qbv4si (TARGET_NEON)
+#define HAVE_neon_vld3qbv4sf (TARGET_NEON)
+#define HAVE_neon_vld3_lanev8qi (TARGET_NEON)
+#define HAVE_neon_vld3_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vld3_lanev2si (TARGET_NEON)
+#define HAVE_neon_vld3_lanev2sf (TARGET_NEON)
+#define HAVE_neon_vld3_lanev8hi (TARGET_NEON)
+#define HAVE_neon_vld3_lanev4si (TARGET_NEON)
+#define HAVE_neon_vld3_lanev4sf (TARGET_NEON)
+#define HAVE_neon_vld3_dupv8qi (TARGET_NEON)
+#define HAVE_neon_vld3_dupv4hi (TARGET_NEON)
+#define HAVE_neon_vld3_dupv2si (TARGET_NEON)
+#define HAVE_neon_vld3_dupv2sf (TARGET_NEON)
+#define HAVE_neon_vld3_dupdi (TARGET_NEON)
+#define HAVE_neon_vst3v8qi (TARGET_NEON)
+#define HAVE_neon_vst3v4hi (TARGET_NEON)
+#define HAVE_neon_vst3v2si (TARGET_NEON)
+#define HAVE_neon_vst3v2sf (TARGET_NEON)
+#define HAVE_neon_vst3di (TARGET_NEON)
+#define HAVE_neon_vst3qav16qi (TARGET_NEON)
+#define HAVE_neon_vst3qav8hi (TARGET_NEON)
+#define HAVE_neon_vst3qav4si (TARGET_NEON)
+#define HAVE_neon_vst3qav4sf (TARGET_NEON)
+#define HAVE_neon_vst3qbv16qi (TARGET_NEON)
+#define HAVE_neon_vst3qbv8hi (TARGET_NEON)
+#define HAVE_neon_vst3qbv4si (TARGET_NEON)
+#define HAVE_neon_vst3qbv4sf (TARGET_NEON)
+#define HAVE_neon_vst3_lanev8qi (TARGET_NEON)
+#define HAVE_neon_vst3_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vst3_lanev2si (TARGET_NEON)
+#define HAVE_neon_vst3_lanev2sf (TARGET_NEON)
+#define HAVE_neon_vst3_lanev8hi (TARGET_NEON)
+#define HAVE_neon_vst3_lanev4si (TARGET_NEON)
+#define HAVE_neon_vst3_lanev4sf (TARGET_NEON)
+#define HAVE_neon_vld4v8qi (TARGET_NEON)
+#define HAVE_neon_vld4v4hi (TARGET_NEON)
+#define HAVE_neon_vld4v2si (TARGET_NEON)
+#define HAVE_neon_vld4v2sf (TARGET_NEON)
+#define HAVE_neon_vld4di (TARGET_NEON)
+#define HAVE_neon_vld4qav16qi (TARGET_NEON)
+#define HAVE_neon_vld4qav8hi (TARGET_NEON)
+#define HAVE_neon_vld4qav4si (TARGET_NEON)
+#define HAVE_neon_vld4qav4sf (TARGET_NEON)
+#define HAVE_neon_vld4qbv16qi (TARGET_NEON)
+#define HAVE_neon_vld4qbv8hi (TARGET_NEON)
+#define HAVE_neon_vld4qbv4si (TARGET_NEON)
+#define HAVE_neon_vld4qbv4sf (TARGET_NEON)
+#define HAVE_neon_vld4_lanev8qi (TARGET_NEON)
+#define HAVE_neon_vld4_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vld4_lanev2si (TARGET_NEON)
+#define HAVE_neon_vld4_lanev2sf (TARGET_NEON)
+#define HAVE_neon_vld4_lanev8hi (TARGET_NEON)
+#define HAVE_neon_vld4_lanev4si (TARGET_NEON)
+#define HAVE_neon_vld4_lanev4sf (TARGET_NEON)
+#define HAVE_neon_vld4_dupv8qi (TARGET_NEON)
+#define HAVE_neon_vld4_dupv4hi (TARGET_NEON)
+#define HAVE_neon_vld4_dupv2si (TARGET_NEON)
+#define HAVE_neon_vld4_dupv2sf (TARGET_NEON)
+#define HAVE_neon_vld4_dupdi (TARGET_NEON)
+#define HAVE_neon_vst4v8qi (TARGET_NEON)
+#define HAVE_neon_vst4v4hi (TARGET_NEON)
+#define HAVE_neon_vst4v2si (TARGET_NEON)
+#define HAVE_neon_vst4v2sf (TARGET_NEON)
+#define HAVE_neon_vst4di (TARGET_NEON)
+#define HAVE_neon_vst4qav16qi (TARGET_NEON)
+#define HAVE_neon_vst4qav8hi (TARGET_NEON)
+#define HAVE_neon_vst4qav4si (TARGET_NEON)
+#define HAVE_neon_vst4qav4sf (TARGET_NEON)
+#define HAVE_neon_vst4qbv16qi (TARGET_NEON)
+#define HAVE_neon_vst4qbv8hi (TARGET_NEON)
+#define HAVE_neon_vst4qbv4si (TARGET_NEON)
+#define HAVE_neon_vst4qbv4sf (TARGET_NEON)
+#define HAVE_neon_vst4_lanev8qi (TARGET_NEON)
+#define HAVE_neon_vst4_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vst4_lanev2si (TARGET_NEON)
+#define HAVE_neon_vst4_lanev2sf (TARGET_NEON)
+#define HAVE_neon_vst4_lanev8hi (TARGET_NEON)
+#define HAVE_neon_vst4_lanev4si (TARGET_NEON)
+#define HAVE_neon_vst4_lanev4sf (TARGET_NEON)
+#define HAVE_adddi3 1
+#define HAVE_addsi3 1
+#define HAVE_incscc (TARGET_32BIT)
+#define HAVE_addsf3 (TARGET_32BIT && TARGET_HARD_FLOAT)
+#define HAVE_adddf3 (TARGET_32BIT && TARGET_HARD_FLOAT)
+#define HAVE_subdi3 1
+#define HAVE_subsi3 1
+#define HAVE_decscc (TARGET_32BIT)
+#define HAVE_subsf3 (TARGET_32BIT && TARGET_HARD_FLOAT)
+#define HAVE_subdf3 (TARGET_32BIT && TARGET_HARD_FLOAT)
+#define HAVE_mulsi3 1
+#define HAVE_mulsidi3 (TARGET_32BIT && arm_arch3m)
+#define HAVE_umulsidi3 (TARGET_32BIT && arm_arch3m)
+#define HAVE_smulsi3_highpart (TARGET_32BIT && arm_arch3m)
+#define HAVE_umulsi3_highpart (TARGET_32BIT && arm_arch3m)
+#define HAVE_mulsf3 (TARGET_32BIT && TARGET_HARD_FLOAT)
+#define HAVE_muldf3 (TARGET_32BIT && TARGET_HARD_FLOAT)
+#define HAVE_divsf3 (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_divdf3 (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_modsf3 (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FPA)
+#define HAVE_moddf3 (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FPA)
+#define HAVE_andsi3 1
+#define HAVE_insv (TARGET_ARM || arm_arch_thumb2)
+#define HAVE_iorsi3 1
+#define HAVE_xorsi3 1
+#define HAVE_smaxsi3 (TARGET_32BIT)
+#define HAVE_sminsi3 (TARGET_32BIT)
+#define HAVE_umaxsi3 (TARGET_32BIT)
+#define HAVE_uminsi3 (TARGET_32BIT)
+#define HAVE_ashldi3 (TARGET_32BIT)
+#define HAVE_ashlsi3 1
+#define HAVE_ashrdi3 (TARGET_32BIT)
+#define HAVE_ashrsi3 1
+#define HAVE_lshrdi3 (TARGET_32BIT)
+#define HAVE_lshrsi3 1
+#define HAVE_rotlsi3 (TARGET_32BIT)
+#define HAVE_rotrsi3 1
+#define HAVE_extzv (TARGET_THUMB1 || arm_arch_thumb2)
+#define HAVE_negdi2 1
+#define HAVE_negsi2 1
+#define HAVE_negsf2 (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_negdf2 (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_abssi2 1
+#define HAVE_abssf2 (TARGET_32BIT && TARGET_HARD_FLOAT)
+#define HAVE_absdf2 (TARGET_32BIT && TARGET_HARD_FLOAT)
+#define HAVE_sqrtsf2 (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_sqrtdf2 (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_one_cmplsi2 1
+#define HAVE_floatsisf2 (TARGET_32BIT && TARGET_HARD_FLOAT)
+#define HAVE_floatsidf2 (TARGET_32BIT && TARGET_HARD_FLOAT)
+#define HAVE_fix_truncsfsi2 (TARGET_32BIT && TARGET_HARD_FLOAT)
+#define HAVE_fix_truncdfsi2 (TARGET_32BIT && TARGET_HARD_FLOAT)
+#define HAVE_truncdfsf2 (TARGET_32BIT && TARGET_HARD_FLOAT)
+#define HAVE_zero_extendsidi2 (TARGET_32BIT)
+#define HAVE_zero_extendqidi2 (TARGET_32BIT)
+#define HAVE_extendsidi2 (TARGET_32BIT)
+#define HAVE_zero_extendhisi2 1
+#define HAVE_zero_extendqisi2 1
+#define HAVE_extendhisi2 1
+#define HAVE_extendhisi2_mem (TARGET_ARM)
+#define HAVE_extendqihi2 (TARGET_ARM)
+#define HAVE_extendqisi2 1
+#define HAVE_extendsfdf2 (TARGET_32BIT && TARGET_HARD_FLOAT)
+#define HAVE_movdi 1
+#define HAVE_movsi 1
+#define HAVE_builtin_setjmp_receiver (flag_pic)
+#define HAVE_storehi (TARGET_ARM)
+#define HAVE_storehi_bigend (TARGET_ARM)
+#define HAVE_storeinthi (TARGET_ARM)
+#define HAVE_storehi_single_op (TARGET_32BIT && arm_arch4)
+#define HAVE_movhi 1
+#define HAVE_movhi_bytes (TARGET_ARM)
+#define HAVE_movhi_bigend (TARGET_ARM)
+#define HAVE_thumb_movhi_clobber (TARGET_THUMB1)
+#define HAVE_reload_outhi 1
+#define HAVE_reload_inhi 1
+#define HAVE_movqi 1
+#define HAVE_movsf 1
+#define HAVE_movdf 1
+#define HAVE_reload_outdf (TARGET_32BIT)
+#define HAVE_movxf (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FPA)
+#define HAVE_load_multiple (TARGET_32BIT)
+#define HAVE_store_multiple (TARGET_32BIT)
+#define HAVE_movmemqi 1
+#define HAVE_cbranchsi4 (TARGET_THUMB1)
+#define HAVE_cmpsi (TARGET_32BIT)
+#define HAVE_cmpsf (TARGET_32BIT && TARGET_HARD_FLOAT)
+#define HAVE_cmpdf (TARGET_32BIT && TARGET_HARD_FLOAT)
+#define HAVE_cmpdi (TARGET_ARM && TARGET_HARD_FLOAT && TARGET_MAVERICK)
+#define HAVE_beq (TARGET_32BIT)
+#define HAVE_bne (TARGET_32BIT)
+#define HAVE_bgt (TARGET_32BIT)
+#define HAVE_ble (TARGET_32BIT)
+#define HAVE_bge (TARGET_32BIT)
+#define HAVE_blt (TARGET_32BIT)
+#define HAVE_bgtu (TARGET_32BIT)
+#define HAVE_bleu (TARGET_32BIT)
+#define HAVE_bgeu (TARGET_32BIT)
+#define HAVE_bltu (TARGET_32BIT)
+#define HAVE_bunordered (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_bordered (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_bungt (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_bunlt (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_bunge (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_bunle (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_buneq (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_bltgt (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_seq (TARGET_32BIT)
+#define HAVE_sne (TARGET_32BIT)
+#define HAVE_sgt (TARGET_32BIT)
+#define HAVE_sle (TARGET_32BIT)
+#define HAVE_sge (TARGET_32BIT)
+#define HAVE_slt (TARGET_32BIT)
+#define HAVE_sgtu (TARGET_32BIT)
+#define HAVE_sleu (TARGET_32BIT)
+#define HAVE_sgeu (TARGET_32BIT)
+#define HAVE_sltu (TARGET_32BIT)
+#define HAVE_sunordered (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_sordered (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_sungt (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_sunge (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_sunlt (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_sunle (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_cstoresi4 (TARGET_THUMB1)
+#define HAVE_cstoresi_eq0_thumb1 (TARGET_THUMB1)
+#define HAVE_cstoresi_ne0_thumb1 (TARGET_THUMB1)
+#define HAVE_movsicc (TARGET_32BIT)
+#define HAVE_movsfcc (TARGET_32BIT && TARGET_HARD_FLOAT)
+#define HAVE_movdfcc (TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP))
+#define HAVE_jump 1
+#define HAVE_call 1
+#define HAVE_call_internal 1
+#define HAVE_call_value 1
+#define HAVE_call_value_internal 1
+#define HAVE_sibcall (TARGET_ARM)
+#define HAVE_sibcall_value (TARGET_ARM)
+#define HAVE_return_addr_mask (TARGET_ARM)
+#define HAVE_untyped_call 1
+#define HAVE_untyped_return 1
+#define HAVE_casesi (TARGET_32BIT)
+#define HAVE_indirect_jump 1
+#define HAVE_prologue 1
+#define HAVE_epilogue 1
+#define HAVE_eh_epilogue 1
+#define HAVE_tablejump (TARGET_THUMB1)
+#define HAVE_eh_return 1
+#define HAVE_movv2di (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V2DImode)))
+#define HAVE_movv2si (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V2SImode)))
+#define HAVE_movv4hi (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V4HImode)))
+#define HAVE_movv8qi (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V8QImode)))
+#define HAVE_movv2sf (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V2SFmode)))
+#define HAVE_movv4si (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V4SImode)))
+#define HAVE_movv8hi (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V8HImode)))
+#define HAVE_movv16qi (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V16QImode)))
+#define HAVE_movv4sf (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V4SFmode)))
+#define HAVE_addv2di3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V2DImode)))
+#define HAVE_addv2si3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V2SImode)))
+#define HAVE_addv4hi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V4HImode)))
+#define HAVE_addv8qi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V8QImode)))
+#define HAVE_addv2sf3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V2SFmode)))
+#define HAVE_addv4si3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V4SImode)))
+#define HAVE_addv8hi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V8HImode)))
+#define HAVE_addv16qi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V16QImode)))
+#define HAVE_addv4sf3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V4SFmode)))
+#define HAVE_subv2di3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V2DImode)))
+#define HAVE_subv2si3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V2SImode)))
+#define HAVE_subv4hi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V4HImode)))
+#define HAVE_subv8qi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V8QImode)))
+#define HAVE_subv2sf3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V2SFmode)))
+#define HAVE_subv4si3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V4SImode)))
+#define HAVE_subv8hi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V8HImode)))
+#define HAVE_subv16qi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V16QImode)))
+#define HAVE_subv4sf3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V4SFmode)))
+#define HAVE_mulv2si3 (TARGET_NEON || (V2SImode == V4HImode && TARGET_REALLY_IWMMXT))
+#define HAVE_mulv4hi3 (TARGET_NEON || (V4HImode == V4HImode && TARGET_REALLY_IWMMXT))
+#define HAVE_mulv8qi3 (TARGET_NEON || (V8QImode == V4HImode && TARGET_REALLY_IWMMXT))
+#define HAVE_mulv2sf3 (TARGET_NEON || (V2SFmode == V4HImode && TARGET_REALLY_IWMMXT))
+#define HAVE_mulv4si3 (TARGET_NEON || (V4SImode == V4HImode && TARGET_REALLY_IWMMXT))
+#define HAVE_mulv8hi3 (TARGET_NEON || (V8HImode == V4HImode && TARGET_REALLY_IWMMXT))
+#define HAVE_mulv16qi3 (TARGET_NEON || (V16QImode == V4HImode && TARGET_REALLY_IWMMXT))
+#define HAVE_mulv4sf3 (TARGET_NEON || (V4SFmode == V4HImode && TARGET_REALLY_IWMMXT))
+#define HAVE_sminv2si3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V2SImode)))
+#define HAVE_sminv4hi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V4HImode)))
+#define HAVE_sminv8qi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V8QImode)))
+#define HAVE_sminv2sf3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V2SFmode)))
+#define HAVE_sminv4si3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V4SImode)))
+#define HAVE_sminv8hi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V8HImode)))
+#define HAVE_sminv16qi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V16QImode)))
+#define HAVE_sminv4sf3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V4SFmode)))
+#define HAVE_uminv2si3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V2SImode)))
+#define HAVE_uminv4hi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V4HImode)))
+#define HAVE_uminv8qi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V8QImode)))
+#define HAVE_uminv4si3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V4SImode)))
+#define HAVE_uminv8hi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V8HImode)))
+#define HAVE_uminv16qi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V16QImode)))
+#define HAVE_smaxv2si3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V2SImode)))
+#define HAVE_smaxv4hi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V4HImode)))
+#define HAVE_smaxv8qi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V8QImode)))
+#define HAVE_smaxv2sf3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V2SFmode)))
+#define HAVE_smaxv4si3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V4SImode)))
+#define HAVE_smaxv8hi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V8HImode)))
+#define HAVE_smaxv16qi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V16QImode)))
+#define HAVE_smaxv4sf3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V4SFmode)))
+#define HAVE_umaxv2si3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V2SImode)))
+#define HAVE_umaxv4hi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V4HImode)))
+#define HAVE_umaxv8qi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V8QImode)))
+#define HAVE_umaxv4si3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V4SImode)))
+#define HAVE_umaxv8hi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V8HImode)))
+#define HAVE_umaxv16qi3 (TARGET_NEON \
+   || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (V16QImode)))
+#define HAVE_movti (TARGET_NEON)
+#define HAVE_movei (TARGET_NEON)
+#define HAVE_movoi (TARGET_NEON)
+#define HAVE_movci (TARGET_NEON)
+#define HAVE_movxi (TARGET_NEON)
+#define HAVE_vec_setv8qi (TARGET_NEON)
+#define HAVE_vec_setv16qi (TARGET_NEON)
+#define HAVE_vec_setv4hi (TARGET_NEON)
+#define HAVE_vec_setv8hi (TARGET_NEON)
+#define HAVE_vec_setv2si (TARGET_NEON)
+#define HAVE_vec_setv4si (TARGET_NEON)
+#define HAVE_vec_setv2sf (TARGET_NEON)
+#define HAVE_vec_setv4sf (TARGET_NEON)
+#define HAVE_vec_setv2di (TARGET_NEON)
+#define HAVE_vec_initv8qi (TARGET_NEON)
+#define HAVE_vec_initv16qi (TARGET_NEON)
+#define HAVE_vec_initv4hi (TARGET_NEON)
+#define HAVE_vec_initv8hi (TARGET_NEON)
+#define HAVE_vec_initv2si (TARGET_NEON)
+#define HAVE_vec_initv4si (TARGET_NEON)
+#define HAVE_vec_initv2sf (TARGET_NEON)
+#define HAVE_vec_initv4sf (TARGET_NEON)
+#define HAVE_vec_initv2di (TARGET_NEON)
+#define HAVE_ashrv8qi3 (TARGET_NEON)
+#define HAVE_ashrv16qi3 (TARGET_NEON)
+#define HAVE_ashrv4hi3 (TARGET_NEON)
+#define HAVE_ashrv8hi3 (TARGET_NEON)
+#define HAVE_ashrv2si3 (TARGET_NEON)
+#define HAVE_ashrv4si3 (TARGET_NEON)
+#define HAVE_lshrv8qi3 (TARGET_NEON)
+#define HAVE_lshrv16qi3 (TARGET_NEON)
+#define HAVE_lshrv4hi3 (TARGET_NEON)
+#define HAVE_lshrv8hi3 (TARGET_NEON)
+#define HAVE_lshrv2si3 (TARGET_NEON)
+#define HAVE_lshrv4si3 (TARGET_NEON)
+#define HAVE_vec_shr_v8qi (TARGET_NEON)
+#define HAVE_vec_shr_v16qi (TARGET_NEON)
+#define HAVE_vec_shr_v4hi (TARGET_NEON)
+#define HAVE_vec_shr_v8hi (TARGET_NEON)
+#define HAVE_vec_shr_v2si (TARGET_NEON)
+#define HAVE_vec_shr_v4si (TARGET_NEON)
+#define HAVE_vec_shr_v2sf (TARGET_NEON)
+#define HAVE_vec_shr_v4sf (TARGET_NEON)
+#define HAVE_vec_shr_v2di (TARGET_NEON)
+#define HAVE_vec_shl_v8qi (TARGET_NEON)
+#define HAVE_vec_shl_v16qi (TARGET_NEON)
+#define HAVE_vec_shl_v4hi (TARGET_NEON)
+#define HAVE_vec_shl_v8hi (TARGET_NEON)
+#define HAVE_vec_shl_v2si (TARGET_NEON)
+#define HAVE_vec_shl_v4si (TARGET_NEON)
+#define HAVE_vec_shl_v2sf (TARGET_NEON)
+#define HAVE_vec_shl_v4sf (TARGET_NEON)
+#define HAVE_vec_shl_v2di (TARGET_NEON)
+#define HAVE_reduc_splus_v8qi (TARGET_NEON)
+#define HAVE_reduc_splus_v4hi (TARGET_NEON)
+#define HAVE_reduc_splus_v2si (TARGET_NEON)
+#define HAVE_reduc_splus_v2sf (TARGET_NEON)
+#define HAVE_reduc_splus_v16qi (TARGET_NEON)
+#define HAVE_reduc_splus_v8hi (TARGET_NEON)
+#define HAVE_reduc_splus_v4si (TARGET_NEON)
+#define HAVE_reduc_splus_v4sf (TARGET_NEON)
+#define HAVE_reduc_uplus_v8qi (TARGET_NEON)
+#define HAVE_reduc_uplus_v16qi (TARGET_NEON)
+#define HAVE_reduc_uplus_v4hi (TARGET_NEON)
+#define HAVE_reduc_uplus_v8hi (TARGET_NEON)
+#define HAVE_reduc_uplus_v2si (TARGET_NEON)
+#define HAVE_reduc_uplus_v4si (TARGET_NEON)
+#define HAVE_reduc_uplus_v2di (TARGET_NEON)
+#define HAVE_reduc_smin_v8qi (TARGET_NEON)
+#define HAVE_reduc_smin_v4hi (TARGET_NEON)
+#define HAVE_reduc_smin_v2si (TARGET_NEON)
+#define HAVE_reduc_smin_v2sf (TARGET_NEON)
+#define HAVE_reduc_smin_v16qi (TARGET_NEON)
+#define HAVE_reduc_smin_v8hi (TARGET_NEON)
+#define HAVE_reduc_smin_v4si (TARGET_NEON)
+#define HAVE_reduc_smin_v4sf (TARGET_NEON)
+#define HAVE_reduc_smax_v8qi (TARGET_NEON)
+#define HAVE_reduc_smax_v4hi (TARGET_NEON)
+#define HAVE_reduc_smax_v2si (TARGET_NEON)
+#define HAVE_reduc_smax_v2sf (TARGET_NEON)
+#define HAVE_reduc_smax_v16qi (TARGET_NEON)
+#define HAVE_reduc_smax_v8hi (TARGET_NEON)
+#define HAVE_reduc_smax_v4si (TARGET_NEON)
+#define HAVE_reduc_smax_v4sf (TARGET_NEON)
+#define HAVE_reduc_umin_v8qi (TARGET_NEON)
+#define HAVE_reduc_umin_v4hi (TARGET_NEON)
+#define HAVE_reduc_umin_v2si (TARGET_NEON)
+#define HAVE_reduc_umin_v16qi (TARGET_NEON)
+#define HAVE_reduc_umin_v8hi (TARGET_NEON)
+#define HAVE_reduc_umin_v4si (TARGET_NEON)
+#define HAVE_reduc_umax_v8qi (TARGET_NEON)
+#define HAVE_reduc_umax_v4hi (TARGET_NEON)
+#define HAVE_reduc_umax_v2si (TARGET_NEON)
+#define HAVE_reduc_umax_v16qi (TARGET_NEON)
+#define HAVE_reduc_umax_v8hi (TARGET_NEON)
+#define HAVE_reduc_umax_v4si (TARGET_NEON)
+#define HAVE_neon_vpaddv8qi (TARGET_NEON)
+#define HAVE_neon_vpaddv4hi (TARGET_NEON)
+#define HAVE_neon_vpaddv2si (TARGET_NEON)
+#define HAVE_neon_vpaddv2sf (TARGET_NEON)
+#define HAVE_neon_vnegv8qi (TARGET_NEON)
+#define HAVE_neon_vnegv16qi (TARGET_NEON)
+#define HAVE_neon_vnegv4hi (TARGET_NEON)
+#define HAVE_neon_vnegv8hi (TARGET_NEON)
+#define HAVE_neon_vnegv2si (TARGET_NEON)
+#define HAVE_neon_vnegv4si (TARGET_NEON)
+#define HAVE_neon_vnegv2sf (TARGET_NEON)
+#define HAVE_neon_vnegv4sf (TARGET_NEON)
+#define HAVE_neon_vmvnv8qi (TARGET_NEON)
+#define HAVE_neon_vmvnv16qi (TARGET_NEON)
+#define HAVE_neon_vmvnv4hi (TARGET_NEON)
+#define HAVE_neon_vmvnv8hi (TARGET_NEON)
+#define HAVE_neon_vmvnv2si (TARGET_NEON)
+#define HAVE_neon_vmvnv4si (TARGET_NEON)
+#define HAVE_neon_vget_lanev8qi (TARGET_NEON)
+#define HAVE_neon_vget_lanev16qi (TARGET_NEON)
+#define HAVE_neon_vget_lanev4hi (TARGET_NEON)
+#define HAVE_neon_vget_lanev8hi (TARGET_NEON)
+#define HAVE_neon_vget_lanev2si (TARGET_NEON)
+#define HAVE_neon_vget_lanev4si (TARGET_NEON)
+#define HAVE_neon_vget_lanev2sf (TARGET_NEON)
+#define HAVE_neon_vget_lanev4sf (TARGET_NEON)
+#define HAVE_neon_vcreatev8qi (TARGET_NEON)
+#define HAVE_neon_vcreatev4hi (TARGET_NEON)
+#define HAVE_neon_vcreatev2si (TARGET_NEON)
+#define HAVE_neon_vcreatev2sf (TARGET_NEON)
+#define HAVE_neon_vcreatedi (TARGET_NEON)
+#define HAVE_neon_vdup_lanedi (TARGET_NEON)
+#define HAVE_neon_vmul_nv4hi (TARGET_NEON)
+#define HAVE_neon_vmul_nv2si (TARGET_NEON)
+#define HAVE_neon_vmul_nv2sf (TARGET_NEON)
+#define HAVE_neon_vmul_nv8hi (TARGET_NEON)
+#define HAVE_neon_vmul_nv4si (TARGET_NEON)
+#define HAVE_neon_vmul_nv4sf (TARGET_NEON)
+#define HAVE_neon_vmull_nv4hi (TARGET_NEON)
+#define HAVE_neon_vmull_nv2si (TARGET_NEON)
+#define HAVE_neon_vqdmull_nv4hi (TARGET_NEON)
+#define HAVE_neon_vqdmull_nv2si (TARGET_NEON)
+#define HAVE_neon_vqdmulh_nv4hi (TARGET_NEON)
+#define HAVE_neon_vqdmulh_nv2si (TARGET_NEON)
+#define HAVE_neon_vqdmulh_nv8hi (TARGET_NEON)
+#define HAVE_neon_vqdmulh_nv4si (TARGET_NEON)
+#define HAVE_neon_vmla_nv4hi (TARGET_NEON)
+#define HAVE_neon_vmla_nv2si (TARGET_NEON)
+#define HAVE_neon_vmla_nv2sf (TARGET_NEON)
+#define HAVE_neon_vmla_nv8hi (TARGET_NEON)
+#define HAVE_neon_vmla_nv4si (TARGET_NEON)
+#define HAVE_neon_vmla_nv4sf (TARGET_NEON)
+#define HAVE_neon_vmlal_nv4hi (TARGET_NEON)
+#define HAVE_neon_vmlal_nv2si (TARGET_NEON)
+#define HAVE_neon_vqdmlal_nv4hi (TARGET_NEON)
+#define HAVE_neon_vqdmlal_nv2si (TARGET_NEON)
+#define HAVE_neon_vmls_nv4hi (TARGET_NEON)
+#define HAVE_neon_vmls_nv2si (TARGET_NEON)
+#define HAVE_neon_vmls_nv2sf (TARGET_NEON)
+#define HAVE_neon_vmls_nv8hi (TARGET_NEON)
+#define HAVE_neon_vmls_nv4si (TARGET_NEON)
+#define HAVE_neon_vmls_nv4sf (TARGET_NEON)
+#define HAVE_neon_vmlsl_nv4hi (TARGET_NEON)
+#define HAVE_neon_vmlsl_nv2si (TARGET_NEON)
+#define HAVE_neon_vqdmlsl_nv4hi (TARGET_NEON)
+#define HAVE_neon_vqdmlsl_nv2si (TARGET_NEON)
+#define HAVE_neon_vbslv8qi (TARGET_NEON)
+#define HAVE_neon_vbslv16qi (TARGET_NEON)
+#define HAVE_neon_vbslv4hi (TARGET_NEON)
+#define HAVE_neon_vbslv8hi (TARGET_NEON)
+#define HAVE_neon_vbslv2si (TARGET_NEON)
+#define HAVE_neon_vbslv4si (TARGET_NEON)
+#define HAVE_neon_vbslv2sf (TARGET_NEON)
+#define HAVE_neon_vbslv4sf (TARGET_NEON)
+#define HAVE_neon_vbsldi (TARGET_NEON)
+#define HAVE_neon_vbslv2di (TARGET_NEON)
+#define HAVE_neon_vtrnv8qi (TARGET_NEON)
+#define HAVE_neon_vtrnv16qi (TARGET_NEON)
+#define HAVE_neon_vtrnv4hi (TARGET_NEON)
+#define HAVE_neon_vtrnv8hi (TARGET_NEON)
+#define HAVE_neon_vtrnv2si (TARGET_NEON)
+#define HAVE_neon_vtrnv4si (TARGET_NEON)
+#define HAVE_neon_vtrnv2sf (TARGET_NEON)
+#define HAVE_neon_vtrnv4sf (TARGET_NEON)
+#define HAVE_neon_vzipv8qi (TARGET_NEON)
+#define HAVE_neon_vzipv16qi (TARGET_NEON)
+#define HAVE_neon_vzipv4hi (TARGET_NEON)
+#define HAVE_neon_vzipv8hi (TARGET_NEON)
+#define HAVE_neon_vzipv2si (TARGET_NEON)
+#define HAVE_neon_vzipv4si (TARGET_NEON)
+#define HAVE_neon_vzipv2sf (TARGET_NEON)
+#define HAVE_neon_vzipv4sf (TARGET_NEON)
+#define HAVE_neon_vuzpv8qi (TARGET_NEON)
+#define HAVE_neon_vuzpv16qi (TARGET_NEON)
+#define HAVE_neon_vuzpv4hi (TARGET_NEON)
+#define HAVE_neon_vuzpv8hi (TARGET_NEON)
+#define HAVE_neon_vuzpv2si (TARGET_NEON)
+#define HAVE_neon_vuzpv4si (TARGET_NEON)
+#define HAVE_neon_vuzpv2sf (TARGET_NEON)
+#define HAVE_neon_vuzpv4sf (TARGET_NEON)
+#define HAVE_neon_vreinterpretv8qiv8qi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv8qiv4hi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv8qiv2si (TARGET_NEON)
+#define HAVE_neon_vreinterpretv8qiv2sf (TARGET_NEON)
+#define HAVE_neon_vreinterpretv8qidi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv4hiv8qi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv4hiv4hi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv4hiv2si (TARGET_NEON)
+#define HAVE_neon_vreinterpretv4hiv2sf (TARGET_NEON)
+#define HAVE_neon_vreinterpretv4hidi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv2siv8qi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv2siv4hi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv2siv2si (TARGET_NEON)
+#define HAVE_neon_vreinterpretv2siv2sf (TARGET_NEON)
+#define HAVE_neon_vreinterpretv2sidi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv2sfv8qi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv2sfv4hi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv2sfv2si (TARGET_NEON)
+#define HAVE_neon_vreinterpretv2sfv2sf (TARGET_NEON)
+#define HAVE_neon_vreinterpretv2sfdi (TARGET_NEON)
+#define HAVE_neon_vreinterpretdiv8qi (TARGET_NEON)
+#define HAVE_neon_vreinterpretdiv4hi (TARGET_NEON)
+#define HAVE_neon_vreinterpretdiv2si (TARGET_NEON)
+#define HAVE_neon_vreinterpretdiv2sf (TARGET_NEON)
+#define HAVE_neon_vreinterpretdidi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv16qiv16qi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv16qiv8hi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv16qiv4si (TARGET_NEON)
+#define HAVE_neon_vreinterpretv16qiv4sf (TARGET_NEON)
+#define HAVE_neon_vreinterpretv16qiv2di (TARGET_NEON)
+#define HAVE_neon_vreinterpretv8hiv16qi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv8hiv8hi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv8hiv4si (TARGET_NEON)
+#define HAVE_neon_vreinterpretv8hiv4sf (TARGET_NEON)
+#define HAVE_neon_vreinterpretv8hiv2di (TARGET_NEON)
+#define HAVE_neon_vreinterpretv4siv16qi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv4siv8hi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv4siv4si (TARGET_NEON)
+#define HAVE_neon_vreinterpretv4siv4sf (TARGET_NEON)
+#define HAVE_neon_vreinterpretv4siv2di (TARGET_NEON)
+#define HAVE_neon_vreinterpretv4sfv16qi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv4sfv8hi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv4sfv4si (TARGET_NEON)
+#define HAVE_neon_vreinterpretv4sfv4sf (TARGET_NEON)
+#define HAVE_neon_vreinterpretv4sfv2di (TARGET_NEON)
+#define HAVE_neon_vreinterpretv2div16qi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv2div8hi (TARGET_NEON)
+#define HAVE_neon_vreinterpretv2div4si (TARGET_NEON)
+#define HAVE_neon_vreinterpretv2div4sf (TARGET_NEON)
+#define HAVE_neon_vreinterpretv2div2di (TARGET_NEON)
+#define HAVE_neon_vld3v16qi (TARGET_NEON)
+#define HAVE_neon_vld3v8hi (TARGET_NEON)
+#define HAVE_neon_vld3v4si (TARGET_NEON)
+#define HAVE_neon_vld3v4sf (TARGET_NEON)
+#define HAVE_neon_vst3v16qi (TARGET_NEON)
+#define HAVE_neon_vst3v8hi (TARGET_NEON)
+#define HAVE_neon_vst3v4si (TARGET_NEON)
+#define HAVE_neon_vst3v4sf (TARGET_NEON)
+#define HAVE_neon_vld4v16qi (TARGET_NEON)
+#define HAVE_neon_vld4v8hi (TARGET_NEON)
+#define HAVE_neon_vld4v4si (TARGET_NEON)
+#define HAVE_neon_vld4v4sf (TARGET_NEON)
+#define HAVE_neon_vst4v16qi (TARGET_NEON)
+#define HAVE_neon_vst4v8hi (TARGET_NEON)
+#define HAVE_neon_vst4v4si (TARGET_NEON)
+#define HAVE_neon_vst4v4sf (TARGET_NEON)
+#define HAVE_neon_vandv8qi (TARGET_NEON)
+#define HAVE_neon_vandv16qi (TARGET_NEON)
+#define HAVE_neon_vandv4hi (TARGET_NEON)
+#define HAVE_neon_vandv8hi (TARGET_NEON)
+#define HAVE_neon_vandv2si (TARGET_NEON)
+#define HAVE_neon_vandv4si (TARGET_NEON)
+#define HAVE_neon_vandv2sf (TARGET_NEON)
+#define HAVE_neon_vandv4sf (TARGET_NEON)
+#define HAVE_neon_vanddi (TARGET_NEON)
+#define HAVE_neon_vandv2di (TARGET_NEON)
+#define HAVE_neon_vorrv8qi (TARGET_NEON)
+#define HAVE_neon_vorrv16qi (TARGET_NEON)
+#define HAVE_neon_vorrv4hi (TARGET_NEON)
+#define HAVE_neon_vorrv8hi (TARGET_NEON)
+#define HAVE_neon_vorrv2si (TARGET_NEON)
+#define HAVE_neon_vorrv4si (TARGET_NEON)
+#define HAVE_neon_vorrv2sf (TARGET_NEON)
+#define HAVE_neon_vorrv4sf (TARGET_NEON)
+#define HAVE_neon_vorrdi (TARGET_NEON)
+#define HAVE_neon_vorrv2di (TARGET_NEON)
+#define HAVE_neon_veorv8qi (TARGET_NEON)
+#define HAVE_neon_veorv16qi (TARGET_NEON)
+#define HAVE_neon_veorv4hi (TARGET_NEON)
+#define HAVE_neon_veorv8hi (TARGET_NEON)
+#define HAVE_neon_veorv2si (TARGET_NEON)
+#define HAVE_neon_veorv4si (TARGET_NEON)
+#define HAVE_neon_veorv2sf (TARGET_NEON)
+#define HAVE_neon_veorv4sf (TARGET_NEON)
+#define HAVE_neon_veordi (TARGET_NEON)
+#define HAVE_neon_veorv2di (TARGET_NEON)
+#define HAVE_neon_vbicv8qi (TARGET_NEON)
+#define HAVE_neon_vbicv16qi (TARGET_NEON)
+#define HAVE_neon_vbicv4hi (TARGET_NEON)
+#define HAVE_neon_vbicv8hi (TARGET_NEON)
+#define HAVE_neon_vbicv2si (TARGET_NEON)
+#define HAVE_neon_vbicv4si (TARGET_NEON)
+#define HAVE_neon_vbicv2sf (TARGET_NEON)
+#define HAVE_neon_vbicv4sf (TARGET_NEON)
+#define HAVE_neon_vbicdi (TARGET_NEON)
+#define HAVE_neon_vbicv2di (TARGET_NEON)
+#define HAVE_neon_vornv8qi (TARGET_NEON)
+#define HAVE_neon_vornv16qi (TARGET_NEON)
+#define HAVE_neon_vornv4hi (TARGET_NEON)
+#define HAVE_neon_vornv8hi (TARGET_NEON)
+#define HAVE_neon_vornv2si (TARGET_NEON)
+#define HAVE_neon_vornv4si (TARGET_NEON)
+#define HAVE_neon_vornv2sf (TARGET_NEON)
+#define HAVE_neon_vornv4sf (TARGET_NEON)
+#define HAVE_neon_vorndi (TARGET_NEON)
+#define HAVE_neon_vornv2di (TARGET_NEON)
+extern rtx        gen_mulhisi3                          (rtx, rtx, rtx);
+extern rtx        gen_anddi3                            (rtx, rtx, rtx);
+extern rtx        gen_insv_zero                         (rtx, rtx, rtx);
+extern rtx        gen_insv_t2                           (rtx, rtx, rtx, rtx);
+extern rtx        gen_andsi_notsi_si                    (rtx, rtx, rtx);
+extern rtx        gen_bicsi3                            (rtx, rtx, rtx);
+extern rtx        gen_andsi_not_shiftsi_si              (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_iordi3                            (rtx, rtx, rtx);
+extern rtx        gen_xordi3                            (rtx, rtx, rtx);
+extern rtx        gen_arm_ashldi3_1bit                  (rtx, rtx);
+extern rtx        gen_arm_ashrdi3_1bit                  (rtx, rtx);
+extern rtx        gen_arm_lshrdi3_1bit                  (rtx, rtx);
+extern rtx        gen_extv                              (rtx, rtx, rtx, rtx);
+extern rtx        gen_extzv_t2                          (rtx, rtx, rtx, rtx);
+extern rtx        gen_one_cmpldi2                       (rtx, rtx);
+extern rtx        gen_thumb1_extendhisi2                (rtx, rtx);
+extern rtx        gen_pic_load_addr_arm                 (rtx, rtx);
+extern rtx        gen_pic_load_addr_thumb1              (rtx, rtx);
+extern rtx        gen_pic_add_dot_plus_four             (rtx, rtx, rtx);
+extern rtx        gen_pic_add_dot_plus_eight            (rtx, rtx, rtx);
+extern rtx        gen_tls_load_dot_plus_eight           (rtx, rtx, rtx);
+static inline rtx gen_pic_offset_arm                    (rtx, rtx, rtx);
+static inline rtx
+gen_pic_offset_arm(rtx ARG_UNUSED (a), rtx ARG_UNUSED (b), rtx ARG_UNUSED (c))
+{
+  return 0;
+}
+extern rtx        gen_movmem12b                         (rtx, rtx, rtx, rtx);
+extern rtx        gen_movmem8b                          (rtx, rtx, rtx, rtx);
+extern rtx        gen_cbranchsi4_scratch                (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_cstoresi_nltu_thumb1              (rtx, rtx, rtx);
+extern rtx        gen_thumb1_addsi3_addgeu              (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_return                            (void);
+extern rtx        gen_blockage                          (void);
+extern rtx        gen_arm_casesi_internal               (rtx, rtx, rtx, rtx);
+extern rtx        gen_nop                               (void);
+extern rtx        gen_movcond                           (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_sibcall_epilogue                  (void);
+extern rtx        gen_stack_tie                         (rtx, rtx);
+extern rtx        gen_align_4                           (void);
+extern rtx        gen_align_8                           (void);
+extern rtx        gen_consttable_end                    (void);
+extern rtx        gen_consttable_1                      (rtx);
+extern rtx        gen_consttable_2                      (rtx);
+extern rtx        gen_consttable_4                      (rtx);
+extern rtx        gen_consttable_8                      (rtx);
+extern rtx        gen_consttable_16                     (rtx);
+extern rtx        gen_clzsi2                            (rtx, rtx);
+extern rtx        gen_prefetch                          (rtx, rtx, rtx);
+extern rtx        gen_prologue_use                      (rtx);
+extern rtx        gen_arm_eh_return                     (rtx);
+extern rtx        gen_thumb_eh_return                   (rtx);
+extern rtx        gen_load_tp_hard                      (rtx);
+extern rtx        gen_load_tp_soft                      (void);
+extern rtx        gen_cirrus_adddi3                     (rtx, rtx, rtx);
+extern rtx        gen_cirrus_subdi3                     (rtx, rtx, rtx);
+extern rtx        gen_muldi3                            (rtx, rtx, rtx);
+static inline rtx gen_cirrus_ashl_const                 (rtx, rtx, rtx);
+static inline rtx
+gen_cirrus_ashl_const(rtx ARG_UNUSED (a), rtx ARG_UNUSED (b), rtx ARG_UNUSED (c))
+{
+  return 0;
+}
+static inline rtx gen_cirrus_ashiftrt_const             (rtx, rtx, rtx);
+static inline rtx
+gen_cirrus_ashiftrt_const(rtx ARG_UNUSED (a), rtx ARG_UNUSED (b), rtx ARG_UNUSED (c))
+{
+  return 0;
+}
+static inline rtx gen_cirrus_ashlsi3                    (rtx, rtx, rtx);
+static inline rtx
+gen_cirrus_ashlsi3(rtx ARG_UNUSED (a), rtx ARG_UNUSED (b), rtx ARG_UNUSED (c))
+{
+  return 0;
+}
+extern rtx        gen_ashldi3_cirrus                    (rtx, rtx, rtx);
+extern rtx        gen_cirrus_ashldi_const               (rtx, rtx, rtx);
+extern rtx        gen_cirrus_ashiftrtdi_const           (rtx, rtx, rtx);
+extern rtx        gen_cirrus_floatsisf2                 (rtx, rtx);
+extern rtx        gen_cirrus_floatsidf2                 (rtx, rtx);
+extern rtx        gen_floatdisf2                        (rtx, rtx);
+extern rtx        gen_floatdidf2                        (rtx, rtx);
+extern rtx        gen_cirrus_truncsfsi2                 (rtx, rtx);
+extern rtx        gen_cirrus_truncdfsi2                 (rtx, rtx);
+extern rtx        gen_iwmmxt_iordi3                     (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_xordi3                     (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_anddi3                     (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_nanddi3                    (rtx, rtx, rtx);
+extern rtx        gen_movv2si_internal                  (rtx, rtx);
+extern rtx        gen_movv4hi_internal                  (rtx, rtx);
+extern rtx        gen_movv8qi_internal                  (rtx, rtx);
+extern rtx        gen_ssaddv8qi3                        (rtx, rtx, rtx);
+extern rtx        gen_ssaddv4hi3                        (rtx, rtx, rtx);
+extern rtx        gen_ssaddv2si3                        (rtx, rtx, rtx);
+extern rtx        gen_usaddv8qi3                        (rtx, rtx, rtx);
+extern rtx        gen_usaddv4hi3                        (rtx, rtx, rtx);
+extern rtx        gen_usaddv2si3                        (rtx, rtx, rtx);
+extern rtx        gen_sssubv8qi3                        (rtx, rtx, rtx);
+extern rtx        gen_sssubv4hi3                        (rtx, rtx, rtx);
+extern rtx        gen_sssubv2si3                        (rtx, rtx, rtx);
+extern rtx        gen_ussubv8qi3                        (rtx, rtx, rtx);
+extern rtx        gen_ussubv4hi3                        (rtx, rtx, rtx);
+extern rtx        gen_ussubv2si3                        (rtx, rtx, rtx);
+extern rtx        gen_smulv4hi3_highpart                (rtx, rtx, rtx);
+extern rtx        gen_umulv4hi3_highpart                (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wmacs                      (rtx, rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wmacsz                     (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wmacu                      (rtx, rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wmacuz                     (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_clrdi                      (rtx);
+extern rtx        gen_iwmmxt_uavgrndv8qi3               (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_uavgrndv4hi3               (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_uavgv8qi3                  (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_uavgv4hi3                  (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_psadbw                     (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_tinsrb                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_tinsrh                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_tinsrw                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_textrmub                   (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_textrmsb                   (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_textrmuh                   (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_textrmsh                   (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_textrmw                    (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wshufh                     (rtx, rtx, rtx);
+extern rtx        gen_eqv8qi3                           (rtx, rtx, rtx);
+extern rtx        gen_eqv4hi3                           (rtx, rtx, rtx);
+extern rtx        gen_eqv2si3                           (rtx, rtx, rtx);
+extern rtx        gen_gtuv8qi3                          (rtx, rtx, rtx);
+extern rtx        gen_gtuv4hi3                          (rtx, rtx, rtx);
+extern rtx        gen_gtuv2si3                          (rtx, rtx, rtx);
+extern rtx        gen_gtv8qi3                           (rtx, rtx, rtx);
+extern rtx        gen_gtv4hi3                           (rtx, rtx, rtx);
+extern rtx        gen_gtv2si3                           (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wpackhss                   (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wpackwss                   (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wpackdss                   (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wpackhus                   (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wpackwus                   (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wpackdus                   (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wunpckihb                  (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wunpckihh                  (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wunpckihw                  (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wunpckilb                  (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wunpckilh                  (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wunpckilw                  (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wunpckehub                 (rtx, rtx);
+extern rtx        gen_iwmmxt_wunpckehuh                 (rtx, rtx);
+extern rtx        gen_iwmmxt_wunpckehuw                 (rtx, rtx);
+extern rtx        gen_iwmmxt_wunpckehsb                 (rtx, rtx);
+extern rtx        gen_iwmmxt_wunpckehsh                 (rtx, rtx);
+extern rtx        gen_iwmmxt_wunpckehsw                 (rtx, rtx);
+extern rtx        gen_iwmmxt_wunpckelub                 (rtx, rtx);
+extern rtx        gen_iwmmxt_wunpckeluh                 (rtx, rtx);
+extern rtx        gen_iwmmxt_wunpckeluw                 (rtx, rtx);
+extern rtx        gen_iwmmxt_wunpckelsb                 (rtx, rtx);
+extern rtx        gen_iwmmxt_wunpckelsh                 (rtx, rtx);
+extern rtx        gen_iwmmxt_wunpckelsw                 (rtx, rtx);
+extern rtx        gen_rorv4hi3                          (rtx, rtx, rtx);
+extern rtx        gen_rorv2si3                          (rtx, rtx, rtx);
+extern rtx        gen_rordi3                            (rtx, rtx, rtx);
+extern rtx        gen_ashrv4hi3_iwmmxt                  (rtx, rtx, rtx);
+extern rtx        gen_ashrv2si3_iwmmxt                  (rtx, rtx, rtx);
+extern rtx        gen_ashrdi3_iwmmxt                    (rtx, rtx, rtx);
+extern rtx        gen_lshrv4hi3_iwmmxt                  (rtx, rtx, rtx);
+extern rtx        gen_lshrv2si3_iwmmxt                  (rtx, rtx, rtx);
+extern rtx        gen_lshrdi3_iwmmxt                    (rtx, rtx, rtx);
+extern rtx        gen_ashlv4hi3_iwmmxt                  (rtx, rtx, rtx);
+extern rtx        gen_ashlv2si3_iwmmxt                  (rtx, rtx, rtx);
+extern rtx        gen_ashldi3_iwmmxt                    (rtx, rtx, rtx);
+extern rtx        gen_rorv4hi3_di                       (rtx, rtx, rtx);
+extern rtx        gen_rorv2si3_di                       (rtx, rtx, rtx);
+extern rtx        gen_rordi3_di                         (rtx, rtx, rtx);
+extern rtx        gen_ashrv4hi3_di                      (rtx, rtx, rtx);
+extern rtx        gen_ashrv2si3_di                      (rtx, rtx, rtx);
+extern rtx        gen_ashrdi3_di                        (rtx, rtx, rtx);
+extern rtx        gen_lshrv4hi3_di                      (rtx, rtx, rtx);
+extern rtx        gen_lshrv2si3_di                      (rtx, rtx, rtx);
+extern rtx        gen_lshrdi3_di                        (rtx, rtx, rtx);
+extern rtx        gen_ashlv4hi3_di                      (rtx, rtx, rtx);
+extern rtx        gen_ashlv2si3_di                      (rtx, rtx, rtx);
+extern rtx        gen_ashldi3_di                        (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wmadds                     (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wmaddu                     (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_tmia                       (rtx, rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_tmiaph                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_tmiabb                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_tmiatb                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_tmiabt                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_tmiatt                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_tbcstqi                    (rtx, rtx);
+extern rtx        gen_iwmmxt_tbcsthi                    (rtx, rtx);
+extern rtx        gen_iwmmxt_tbcstsi                    (rtx, rtx);
+extern rtx        gen_iwmmxt_tmovmskb                   (rtx, rtx);
+extern rtx        gen_iwmmxt_tmovmskh                   (rtx, rtx);
+extern rtx        gen_iwmmxt_tmovmskw                   (rtx, rtx);
+extern rtx        gen_iwmmxt_waccb                      (rtx, rtx);
+extern rtx        gen_iwmmxt_wacch                      (rtx, rtx);
+extern rtx        gen_iwmmxt_waccw                      (rtx, rtx);
+extern rtx        gen_iwmmxt_walign                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_tmrc                       (rtx, rtx);
+extern rtx        gen_iwmmxt_tmcr                       (rtx, rtx);
+extern rtx        gen_iwmmxt_wsadb                      (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wsadh                      (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wsadbz                     (rtx, rtx, rtx);
+extern rtx        gen_iwmmxt_wsadhz                     (rtx, rtx, rtx);
+extern rtx        gen_fixuns_truncsfsi2                 (rtx, rtx);
+extern rtx        gen_fixuns_truncdfsi2                 (rtx, rtx);
+extern rtx        gen_floatunssisf2                     (rtx, rtx);
+extern rtx        gen_floatunssidf2                     (rtx, rtx);
+extern rtx        gen_pic_load_addr_thumb2              (rtx, rtx);
+extern rtx        gen_pic_load_dot_plus_four            (rtx, rtx);
+extern rtx        gen_thumb2_casesi_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_thumb2_casesi_internal_pic        (rtx, rtx, rtx, rtx);
+extern rtx        gen_thumb2_eh_return                  (rtx);
+extern rtx        gen_divsi3                            (rtx, rtx, rtx);
+extern rtx        gen_udivsi3                           (rtx, rtx, rtx);
+extern rtx        gen_vec_setv8qi_internal              (rtx, rtx, rtx, rtx);
+extern rtx        gen_vec_setv4hi_internal              (rtx, rtx, rtx, rtx);
+extern rtx        gen_vec_setv2si_internal              (rtx, rtx, rtx, rtx);
+extern rtx        gen_vec_setv2sf_internal              (rtx, rtx, rtx, rtx);
+extern rtx        gen_vec_setv16qi_internal             (rtx, rtx, rtx, rtx);
+extern rtx        gen_vec_setv8hi_internal              (rtx, rtx, rtx, rtx);
+extern rtx        gen_vec_setv4si_internal              (rtx, rtx, rtx, rtx);
+extern rtx        gen_vec_setv4sf_internal              (rtx, rtx, rtx, rtx);
+extern rtx        gen_vec_setv2di_internal              (rtx, rtx, rtx, rtx);
+extern rtx        gen_vec_extractv8qi                   (rtx, rtx, rtx);
+extern rtx        gen_vec_extractv4hi                   (rtx, rtx, rtx);
+extern rtx        gen_vec_extractv2si                   (rtx, rtx, rtx);
+extern rtx        gen_vec_extractv2sf                   (rtx, rtx, rtx);
+extern rtx        gen_vec_extractv16qi                  (rtx, rtx, rtx);
+extern rtx        gen_vec_extractv8hi                   (rtx, rtx, rtx);
+extern rtx        gen_vec_extractv4si                   (rtx, rtx, rtx);
+extern rtx        gen_vec_extractv4sf                   (rtx, rtx, rtx);
+extern rtx        gen_vec_extractv2di                   (rtx, rtx, rtx);
+extern rtx        gen_iorv8qi3                          (rtx, rtx, rtx);
+extern rtx        gen_iorv16qi3                         (rtx, rtx, rtx);
+extern rtx        gen_iorv4hi3                          (rtx, rtx, rtx);
+extern rtx        gen_iorv8hi3                          (rtx, rtx, rtx);
+extern rtx        gen_iorv2si3                          (rtx, rtx, rtx);
+extern rtx        gen_iorv4si3                          (rtx, rtx, rtx);
+extern rtx        gen_iorv2sf3                          (rtx, rtx, rtx);
+extern rtx        gen_iorv4sf3                          (rtx, rtx, rtx);
+extern rtx        gen_iorv2di3                          (rtx, rtx, rtx);
+extern rtx        gen_iordi3_neon                       (rtx, rtx, rtx);
+extern rtx        gen_andv8qi3                          (rtx, rtx, rtx);
+extern rtx        gen_andv16qi3                         (rtx, rtx, rtx);
+extern rtx        gen_andv4hi3                          (rtx, rtx, rtx);
+extern rtx        gen_andv8hi3                          (rtx, rtx, rtx);
+extern rtx        gen_andv2si3                          (rtx, rtx, rtx);
+extern rtx        gen_andv4si3                          (rtx, rtx, rtx);
+extern rtx        gen_andv2sf3                          (rtx, rtx, rtx);
+extern rtx        gen_andv4sf3                          (rtx, rtx, rtx);
+extern rtx        gen_andv2di3                          (rtx, rtx, rtx);
+extern rtx        gen_anddi3_neon                       (rtx, rtx, rtx);
+extern rtx        gen_ornv8qi3_neon                     (rtx, rtx, rtx);
+extern rtx        gen_ornv16qi3_neon                    (rtx, rtx, rtx);
+extern rtx        gen_ornv4hi3_neon                     (rtx, rtx, rtx);
+extern rtx        gen_ornv8hi3_neon                     (rtx, rtx, rtx);
+extern rtx        gen_ornv2si3_neon                     (rtx, rtx, rtx);
+extern rtx        gen_ornv4si3_neon                     (rtx, rtx, rtx);
+extern rtx        gen_ornv2sf3_neon                     (rtx, rtx, rtx);
+extern rtx        gen_ornv4sf3_neon                     (rtx, rtx, rtx);
+extern rtx        gen_ornv2di3_neon                     (rtx, rtx, rtx);
+extern rtx        gen_orndi3_neon                       (rtx, rtx, rtx);
+extern rtx        gen_bicv8qi3_neon                     (rtx, rtx, rtx);
+extern rtx        gen_bicv16qi3_neon                    (rtx, rtx, rtx);
+extern rtx        gen_bicv4hi3_neon                     (rtx, rtx, rtx);
+extern rtx        gen_bicv8hi3_neon                     (rtx, rtx, rtx);
+extern rtx        gen_bicv2si3_neon                     (rtx, rtx, rtx);
+extern rtx        gen_bicv4si3_neon                     (rtx, rtx, rtx);
+extern rtx        gen_bicv2sf3_neon                     (rtx, rtx, rtx);
+extern rtx        gen_bicv4sf3_neon                     (rtx, rtx, rtx);
+extern rtx        gen_bicv2di3_neon                     (rtx, rtx, rtx);
+extern rtx        gen_bicdi3_neon                       (rtx, rtx, rtx);
+extern rtx        gen_xorv8qi3                          (rtx, rtx, rtx);
+extern rtx        gen_xorv16qi3                         (rtx, rtx, rtx);
+extern rtx        gen_xorv4hi3                          (rtx, rtx, rtx);
+extern rtx        gen_xorv8hi3                          (rtx, rtx, rtx);
+extern rtx        gen_xorv2si3                          (rtx, rtx, rtx);
+extern rtx        gen_xorv4si3                          (rtx, rtx, rtx);
+extern rtx        gen_xorv2sf3                          (rtx, rtx, rtx);
+extern rtx        gen_xorv4sf3                          (rtx, rtx, rtx);
+extern rtx        gen_xorv2di3                          (rtx, rtx, rtx);
+extern rtx        gen_xordi3_neon                       (rtx, rtx, rtx);
+extern rtx        gen_one_cmplv8qi2                     (rtx, rtx);
+extern rtx        gen_one_cmplv16qi2                    (rtx, rtx);
+extern rtx        gen_one_cmplv4hi2                     (rtx, rtx);
+extern rtx        gen_one_cmplv8hi2                     (rtx, rtx);
+extern rtx        gen_one_cmplv2si2                     (rtx, rtx);
+extern rtx        gen_one_cmplv4si2                     (rtx, rtx);
+extern rtx        gen_one_cmplv2sf2                     (rtx, rtx);
+extern rtx        gen_one_cmplv4sf2                     (rtx, rtx);
+extern rtx        gen_one_cmplv2di2                     (rtx, rtx);
+extern rtx        gen_absv8qi2                          (rtx, rtx);
+extern rtx        gen_absv16qi2                         (rtx, rtx);
+extern rtx        gen_absv4hi2                          (rtx, rtx);
+extern rtx        gen_absv8hi2                          (rtx, rtx);
+extern rtx        gen_absv2si2                          (rtx, rtx);
+extern rtx        gen_absv4si2                          (rtx, rtx);
+extern rtx        gen_absv2sf2                          (rtx, rtx);
+extern rtx        gen_absv4sf2                          (rtx, rtx);
+extern rtx        gen_negv8qi2                          (rtx, rtx);
+extern rtx        gen_negv16qi2                         (rtx, rtx);
+extern rtx        gen_negv4hi2                          (rtx, rtx);
+extern rtx        gen_negv8hi2                          (rtx, rtx);
+extern rtx        gen_negv2si2                          (rtx, rtx);
+extern rtx        gen_negv4si2                          (rtx, rtx);
+extern rtx        gen_negv2sf2                          (rtx, rtx);
+extern rtx        gen_negv4sf2                          (rtx, rtx);
+extern rtx        gen_ashlv8qi3                         (rtx, rtx, rtx);
+extern rtx        gen_ashlv16qi3                        (rtx, rtx, rtx);
+extern rtx        gen_ashlv4hi3                         (rtx, rtx, rtx);
+extern rtx        gen_ashlv8hi3                         (rtx, rtx, rtx);
+extern rtx        gen_ashlv2si3                         (rtx, rtx, rtx);
+extern rtx        gen_ashlv4si3                         (rtx, rtx, rtx);
+extern rtx        gen_ashlv8qi3_signed                  (rtx, rtx, rtx);
+extern rtx        gen_ashlv16qi3_signed                 (rtx, rtx, rtx);
+extern rtx        gen_ashlv4hi3_signed                  (rtx, rtx, rtx);
+extern rtx        gen_ashlv8hi3_signed                  (rtx, rtx, rtx);
+extern rtx        gen_ashlv2si3_signed                  (rtx, rtx, rtx);
+extern rtx        gen_ashlv4si3_signed                  (rtx, rtx, rtx);
+extern rtx        gen_ashlv2di3_signed                  (rtx, rtx, rtx);
+extern rtx        gen_ashlv8qi3_unsigned                (rtx, rtx, rtx);
+extern rtx        gen_ashlv16qi3_unsigned               (rtx, rtx, rtx);
+extern rtx        gen_ashlv4hi3_unsigned                (rtx, rtx, rtx);
+extern rtx        gen_ashlv8hi3_unsigned                (rtx, rtx, rtx);
+extern rtx        gen_ashlv2si3_unsigned                (rtx, rtx, rtx);
+extern rtx        gen_ashlv4si3_unsigned                (rtx, rtx, rtx);
+extern rtx        gen_ashlv2di3_unsigned                (rtx, rtx, rtx);
+extern rtx        gen_widen_ssumv8qi3                   (rtx, rtx, rtx);
+extern rtx        gen_widen_ssumv4hi3                   (rtx, rtx, rtx);
+extern rtx        gen_widen_ssumv2si3                   (rtx, rtx, rtx);
+extern rtx        gen_widen_usumv8qi3                   (rtx, rtx, rtx);
+extern rtx        gen_widen_usumv4hi3                   (rtx, rtx, rtx);
+extern rtx        gen_widen_usumv2si3                   (rtx, rtx, rtx);
+extern rtx        gen_quad_halves_plusv4si              (rtx, rtx);
+extern rtx        gen_quad_halves_sminv4si              (rtx, rtx);
+extern rtx        gen_quad_halves_smaxv4si              (rtx, rtx);
+extern rtx        gen_quad_halves_uminv4si              (rtx, rtx);
+extern rtx        gen_quad_halves_umaxv4si              (rtx, rtx);
+extern rtx        gen_quad_halves_plusv4sf              (rtx, rtx);
+extern rtx        gen_quad_halves_sminv4sf              (rtx, rtx);
+extern rtx        gen_quad_halves_smaxv4sf              (rtx, rtx);
+extern rtx        gen_quad_halves_plusv8hi              (rtx, rtx);
+extern rtx        gen_quad_halves_sminv8hi              (rtx, rtx);
+extern rtx        gen_quad_halves_smaxv8hi              (rtx, rtx);
+extern rtx        gen_quad_halves_uminv8hi              (rtx, rtx);
+extern rtx        gen_quad_halves_umaxv8hi              (rtx, rtx);
+extern rtx        gen_quad_halves_plusv16qi             (rtx, rtx);
+extern rtx        gen_quad_halves_sminv16qi             (rtx, rtx);
+extern rtx        gen_quad_halves_smaxv16qi             (rtx, rtx);
+extern rtx        gen_quad_halves_uminv16qi             (rtx, rtx);
+extern rtx        gen_quad_halves_umaxv16qi             (rtx, rtx);
+extern rtx        gen_move_lo_quad_v4si                 (rtx, rtx);
+extern rtx        gen_move_lo_quad_v4sf                 (rtx, rtx);
+extern rtx        gen_move_lo_quad_v8hi                 (rtx, rtx);
+extern rtx        gen_move_lo_quad_v16qi                (rtx, rtx);
+extern rtx        gen_reduc_splus_v2di                  (rtx, rtx);
+extern rtx        gen_neon_vpadd_internalv8qi           (rtx, rtx, rtx);
+extern rtx        gen_neon_vpadd_internalv4hi           (rtx, rtx, rtx);
+extern rtx        gen_neon_vpadd_internalv2si           (rtx, rtx, rtx);
+extern rtx        gen_neon_vpadd_internalv2sf           (rtx, rtx, rtx);
+extern rtx        gen_neon_vpsminv8qi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vpsminv4hi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vpsminv2si                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vpsminv2sf                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vpsmaxv8qi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vpsmaxv4hi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vpsmaxv2si                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vpsmaxv2sf                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vpuminv8qi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vpuminv4hi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vpuminv2si                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vpumaxv8qi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vpumaxv4hi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vpumaxv2si                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vaddv8qi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vaddv16qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vaddv4hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vaddv8hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vaddv2si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vaddv4si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vaddv2sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vaddv4sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vadddi                       (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vaddv2di                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vaddlv8qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vaddlv4hi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vaddlv2si                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vaddwv8qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vaddwv4hi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vaddwv2si                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vhaddv8qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vhaddv16qi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vhaddv4hi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vhaddv8hi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vhaddv2si                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vhaddv4si                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqaddv8qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqaddv16qi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqaddv4hi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqaddv8hi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqaddv2si                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqaddv4si                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqadddi                      (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqaddv2di                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vaddhnv8hi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vaddhnv4si                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vaddhnv2di                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmulv8qi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmulv16qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmulv4hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmulv8hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmulv2si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmulv4si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmulv2sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmulv4sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlav8qi                     (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlav16qi                    (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlav4hi                     (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlav8hi                     (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlav2si                     (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlav4si                     (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlav2sf                     (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlav4sf                     (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlalv8qi                    (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlalv4hi                    (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlalv2si                    (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlsv8qi                     (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlsv16qi                    (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlsv4hi                     (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlsv8hi                     (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlsv2si                     (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlsv4si                     (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlsv2sf                     (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlsv4sf                     (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlslv8qi                    (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlslv4hi                    (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlslv2si                    (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmulhv4hi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmulhv2si                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmulhv8hi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmulhv4si                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmlalv4hi                  (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmlalv2si                  (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmlslv4hi                  (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmlslv2si                  (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmullv8qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmullv4hi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmullv2si                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmullv4hi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmullv2si                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsubv8qi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsubv16qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsubv4hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsubv8hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsubv2si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsubv4si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsubv2sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsubv4sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsubdi                       (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsubv2di                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsublv8qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsublv4hi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsublv2si                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsubwv8qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsubwv4hi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsubwv2si                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqsubv8qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqsubv16qi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqsubv4hi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqsubv8hi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqsubv2si                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqsubv4si                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqsubdi                      (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqsubv2di                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vhsubv8qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vhsubv16qi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vhsubv4hi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vhsubv8hi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vhsubv2si                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vhsubv4si                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsubhnv8hi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsubhnv4si                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsubhnv2di                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vceqv8qi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vceqv16qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vceqv4hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vceqv8hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vceqv2si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vceqv4si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vceqv2sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vceqv4sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcgev8qi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcgev16qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcgev4hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcgev8hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcgev2si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcgev4si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcgev2sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcgev4sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcgtv8qi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcgtv16qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcgtv4hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcgtv8hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcgtv2si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcgtv4si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcgtv2sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcgtv4sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcagev2sf                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcagev4sf                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcagtv2sf                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcagtv4sf                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vtstv8qi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vtstv16qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vtstv4hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vtstv8hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vtstv2si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vtstv4si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabdv8qi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabdv16qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabdv4hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabdv8hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabdv2si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabdv4si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabdv2sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabdv4sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabdlv8qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabdlv4hi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabdlv2si                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabav8qi                     (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabav16qi                    (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabav4hi                     (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabav8hi                     (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabav2si                     (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabav4si                     (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabalv8qi                    (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabalv4hi                    (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabalv2si                    (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmaxv8qi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmaxv16qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmaxv4hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmaxv8hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmaxv2si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmaxv4si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmaxv2sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmaxv4sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vminv8qi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vminv16qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vminv4hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vminv8hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vminv2si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vminv4si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vminv2sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vminv4sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vpaddlv8qi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vpaddlv16qi                  (rtx, rtx, rtx);
+extern rtx        gen_neon_vpaddlv4hi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vpaddlv8hi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vpaddlv2si                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vpaddlv4si                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vpadalv8qi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vpadalv16qi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vpadalv4hi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vpadalv8hi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vpadalv2si                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vpadalv4si                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vpmaxv8qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vpmaxv4hi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vpmaxv2si                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vpmaxv2sf                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vpminv8qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vpminv4hi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vpminv2si                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vpminv2sf                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vrecpsv2sf                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vrecpsv4sf                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vrsqrtsv2sf                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vrsqrtsv4sf                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vabsv8qi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vabsv16qi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vabsv4hi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vabsv8hi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vabsv2si                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vabsv4si                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vabsv2sf                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vabsv4sf                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vqabsv8qi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vqabsv16qi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vqabsv4hi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vqabsv8hi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vqabsv2si                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vqabsv4si                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vqnegv8qi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vqnegv16qi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vqnegv4hi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vqnegv8hi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vqnegv2si                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vqnegv4si                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vclsv8qi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vclsv16qi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vclsv4hi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vclsv8hi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vclsv2si                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vclsv4si                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vclzv8qi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vclzv16qi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vclzv4hi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vclzv8hi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vclzv2si                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vclzv4si                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vcntv8qi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vcntv16qi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vrecpev2si                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vrecpev2sf                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vrecpev4si                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vrecpev4sf                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vrsqrtev2si                  (rtx, rtx, rtx);
+extern rtx        gen_neon_vrsqrtev2sf                  (rtx, rtx, rtx);
+extern rtx        gen_neon_vrsqrtev4si                  (rtx, rtx, rtx);
+extern rtx        gen_neon_vrsqrtev4sf                  (rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev8qi_sext_internal  (rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev4hi_sext_internal  (rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev2si_sext_internal  (rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev2sf_sext_internal  (rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev8qi_zext_internal  (rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev4hi_zext_internal  (rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev2si_zext_internal  (rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev2sf_zext_internal  (rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev16qi_sext_internal (rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev8hi_sext_internal  (rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev4si_sext_internal  (rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev4sf_sext_internal  (rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev16qi_zext_internal (rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev8hi_zext_internal  (rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev4si_zext_internal  (rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev4sf_zext_internal  (rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanedi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev2di                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vset_lanev8qi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vset_lanev4hi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vset_lanev2si                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vset_lanev2sf                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vset_lanedi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vset_lanev16qi               (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vset_lanev8hi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vset_lanev4si                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vset_lanev4sf                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vset_lanev2di                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vdup_nv8qi                   (rtx, rtx);
+extern rtx        gen_neon_vdup_nv16qi                  (rtx, rtx);
+extern rtx        gen_neon_vdup_nv4hi                   (rtx, rtx);
+extern rtx        gen_neon_vdup_nv8hi                   (rtx, rtx);
+extern rtx        gen_neon_vdup_nv2si                   (rtx, rtx);
+extern rtx        gen_neon_vdup_nv4si                   (rtx, rtx);
+extern rtx        gen_neon_vdup_nv2sf                   (rtx, rtx);
+extern rtx        gen_neon_vdup_nv4sf                   (rtx, rtx);
+extern rtx        gen_neon_vdup_ndi                     (rtx, rtx);
+extern rtx        gen_neon_vdup_nv2di                   (rtx, rtx);
+extern rtx        gen_neon_vdup_lanev8qi                (rtx, rtx, rtx);
+extern rtx        gen_neon_vdup_lanev4hi                (rtx, rtx, rtx);
+extern rtx        gen_neon_vdup_lanev2si                (rtx, rtx, rtx);
+extern rtx        gen_neon_vdup_lanev2sf                (rtx, rtx, rtx);
+extern rtx        gen_neon_vdup_lanev16qi               (rtx, rtx, rtx);
+extern rtx        gen_neon_vdup_lanev8hi                (rtx, rtx, rtx);
+extern rtx        gen_neon_vdup_lanev4si                (rtx, rtx, rtx);
+extern rtx        gen_neon_vdup_lanev4sf                (rtx, rtx, rtx);
+extern rtx        gen_neon_vdup_lanev2di                (rtx, rtx, rtx);
+extern rtx        gen_neon_vcombinev8qi                 (rtx, rtx, rtx);
+extern rtx        gen_neon_vcombinev4hi                 (rtx, rtx, rtx);
+extern rtx        gen_neon_vcombinev2si                 (rtx, rtx, rtx);
+extern rtx        gen_neon_vcombinev2sf                 (rtx, rtx, rtx);
+extern rtx        gen_neon_vcombinedi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vget_highv16qi               (rtx, rtx);
+extern rtx        gen_neon_vget_highv8hi                (rtx, rtx);
+extern rtx        gen_neon_vget_highv4si                (rtx, rtx);
+extern rtx        gen_neon_vget_highv4sf                (rtx, rtx);
+extern rtx        gen_neon_vget_highv2di                (rtx, rtx);
+extern rtx        gen_neon_vget_lowv16qi                (rtx, rtx);
+extern rtx        gen_neon_vget_lowv8hi                 (rtx, rtx);
+extern rtx        gen_neon_vget_lowv4si                 (rtx, rtx);
+extern rtx        gen_neon_vget_lowv4sf                 (rtx, rtx);
+extern rtx        gen_neon_vget_lowv2di                 (rtx, rtx);
+extern rtx        gen_neon_vcvtv2sf                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vcvtv4sf                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vcvtv2si                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vcvtv4si                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vcvt_nv2sf                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcvt_nv4sf                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcvt_nv2si                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcvt_nv4si                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmovnv8hi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vmovnv4si                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vmovnv2di                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vqmovnv8hi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vqmovnv4si                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vqmovnv2di                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vqmovunv8hi                  (rtx, rtx, rtx);
+extern rtx        gen_neon_vqmovunv4si                  (rtx, rtx, rtx);
+extern rtx        gen_neon_vqmovunv2di                  (rtx, rtx, rtx);
+extern rtx        gen_neon_vmovlv8qi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vmovlv4hi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vmovlv2si                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vmul_lanev4hi                (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmul_lanev2si                (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmul_lanev2sf                (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmul_lanev8hi                (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmul_lanev4si                (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmul_lanev4sf                (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmull_lanev4hi               (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmull_lanev2si               (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmull_lanev4hi             (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmull_lanev2si             (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmulh_lanev8hi             (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmulh_lanev4si             (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmulh_lanev4hi             (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmulh_lanev2si             (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmla_lanev4hi                (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmla_lanev2si                (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmla_lanev2sf                (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmla_lanev8hi                (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmla_lanev4si                (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmla_lanev4sf                (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlal_lanev4hi               (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlal_lanev2si               (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmlal_lanev4hi             (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmlal_lanev2si             (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmls_lanev4hi                (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmls_lanev2si                (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmls_lanev2sf                (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmls_lanev8hi                (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmls_lanev4si                (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmls_lanev4sf                (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlsl_lanev4hi               (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlsl_lanev2si               (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmlsl_lanev4hi             (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmlsl_lanev2si             (rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vextv8qi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vextv16qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vextv4hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vextv8hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vextv2si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vextv4si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vextv2sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vextv4sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vextdi                       (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vextv2di                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vrev64v8qi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vrev64v16qi                  (rtx, rtx, rtx);
+extern rtx        gen_neon_vrev64v4hi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vrev64v8hi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vrev64v2si                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vrev64v4si                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vrev64v2sf                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vrev64v4sf                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vrev64v2di                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vrev32v8qi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vrev32v4hi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vrev32v16qi                  (rtx, rtx, rtx);
+extern rtx        gen_neon_vrev32v8hi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vrev16v8qi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vrev16v16qi                  (rtx, rtx, rtx);
+extern rtx        gen_neon_vbslv8qi_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbslv16qi_internal           (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbslv4hi_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbslv8hi_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbslv2si_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbslv4si_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbslv2sf_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbslv4sf_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbsldi_internal              (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbslv2di_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshlv8qi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshlv16qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshlv4hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshlv8hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshlv2si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshlv4si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshldi                       (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshlv2di                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshlv8qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshlv16qi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshlv4hi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshlv8hi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshlv2si                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshlv4si                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshldi                      (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshlv2di                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshr_nv8qi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshr_nv16qi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshr_nv4hi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshr_nv8hi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshr_nv2si                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshr_nv4si                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshr_ndi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshr_nv2di                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshrn_nv8hi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshrn_nv4si                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshrn_nv2di                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshrn_nv8hi                 (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshrn_nv4si                 (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshrn_nv2di                 (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshrun_nv8hi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshrun_nv4si                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshrun_nv2di                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshl_nv8qi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshl_nv16qi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshl_nv4hi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshl_nv8hi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshl_nv2si                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshl_nv4si                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshl_ndi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshl_nv2di                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshl_nv8qi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshl_nv16qi                 (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshl_nv4hi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshl_nv8hi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshl_nv2si                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshl_nv4si                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshl_ndi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshl_nv2di                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshlu_nv8qi                 (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshlu_nv16qi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshlu_nv4hi                 (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshlu_nv8hi                 (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshlu_nv2si                 (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshlu_nv4si                 (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshlu_ndi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqshlu_nv2di                 (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshll_nv8qi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshll_nv4hi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vshll_nv2si                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsra_nv8qi                   (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsra_nv16qi                  (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsra_nv4hi                   (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsra_nv8hi                   (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsra_nv2si                   (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsra_nv4si                   (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsra_ndi                     (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsra_nv2di                   (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsri_nv8qi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsri_nv16qi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsri_nv4hi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsri_nv8hi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsri_nv2si                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsri_nv4si                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsri_ndi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsri_nv2di                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsli_nv8qi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsli_nv16qi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsli_nv4hi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsli_nv8hi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsli_nv2si                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsli_nv4si                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsli_ndi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vsli_nv2di                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vtbl1v8qi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vtbl2v8qi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vtbl3v8qi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vtbl4v8qi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vtbx1v8qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vtbx2v8qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vtbx3v8qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vtbx4v8qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vtrnv8qi_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vtrnv16qi_internal           (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vtrnv4hi_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vtrnv8hi_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vtrnv2si_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vtrnv4si_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vtrnv2sf_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vtrnv4sf_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vzipv8qi_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vzipv16qi_internal           (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vzipv4hi_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vzipv8hi_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vzipv2si_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vzipv4si_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vzipv2sf_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vzipv4sf_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vuzpv8qi_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vuzpv16qi_internal           (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vuzpv4hi_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vuzpv8hi_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vuzpv2si_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vuzpv4si_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vuzpv2sf_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vuzpv4sf_internal            (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld1v8qi                     (rtx, rtx);
+extern rtx        gen_neon_vld1v16qi                    (rtx, rtx);
+extern rtx        gen_neon_vld1v4hi                     (rtx, rtx);
+extern rtx        gen_neon_vld1v8hi                     (rtx, rtx);
+extern rtx        gen_neon_vld1v2si                     (rtx, rtx);
+extern rtx        gen_neon_vld1v4si                     (rtx, rtx);
+extern rtx        gen_neon_vld1v2sf                     (rtx, rtx);
+extern rtx        gen_neon_vld1v4sf                     (rtx, rtx);
+extern rtx        gen_neon_vld1di                       (rtx, rtx);
+extern rtx        gen_neon_vld1v2di                     (rtx, rtx);
+extern rtx        gen_neon_vld1_lanev8qi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld1_lanev4hi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld1_lanev2si                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld1_lanev2sf                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld1_lanedi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld1_lanev16qi               (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld1_lanev8hi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld1_lanev4si                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld1_lanev4sf                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld1_lanev2di                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld1_dupv8qi                 (rtx, rtx);
+extern rtx        gen_neon_vld1_dupv4hi                 (rtx, rtx);
+extern rtx        gen_neon_vld1_dupv2si                 (rtx, rtx);
+extern rtx        gen_neon_vld1_dupv2sf                 (rtx, rtx);
+extern rtx        gen_neon_vld1_dupdi                   (rtx, rtx);
+extern rtx        gen_neon_vld1_dupv16qi                (rtx, rtx);
+extern rtx        gen_neon_vld1_dupv8hi                 (rtx, rtx);
+extern rtx        gen_neon_vld1_dupv4si                 (rtx, rtx);
+extern rtx        gen_neon_vld1_dupv4sf                 (rtx, rtx);
+extern rtx        gen_neon_vld1_dupv2di                 (rtx, rtx);
+extern rtx        gen_neon_vst1v8qi                     (rtx, rtx);
+extern rtx        gen_neon_vst1v16qi                    (rtx, rtx);
+extern rtx        gen_neon_vst1v4hi                     (rtx, rtx);
+extern rtx        gen_neon_vst1v8hi                     (rtx, rtx);
+extern rtx        gen_neon_vst1v2si                     (rtx, rtx);
+extern rtx        gen_neon_vst1v4si                     (rtx, rtx);
+extern rtx        gen_neon_vst1v2sf                     (rtx, rtx);
+extern rtx        gen_neon_vst1v4sf                     (rtx, rtx);
+extern rtx        gen_neon_vst1di                       (rtx, rtx);
+extern rtx        gen_neon_vst1v2di                     (rtx, rtx);
+extern rtx        gen_neon_vst1_lanev8qi                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst1_lanev4hi                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst1_lanev2si                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst1_lanev2sf                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst1_lanedi                  (rtx, rtx, rtx);
+extern rtx        gen_neon_vst1_lanev16qi               (rtx, rtx, rtx);
+extern rtx        gen_neon_vst1_lanev8hi                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst1_lanev4si                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst1_lanev4sf                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst1_lanev2di                (rtx, rtx, rtx);
+extern rtx        gen_neon_vld2v8qi                     (rtx, rtx);
+extern rtx        gen_neon_vld2v4hi                     (rtx, rtx);
+extern rtx        gen_neon_vld2v2si                     (rtx, rtx);
+extern rtx        gen_neon_vld2v2sf                     (rtx, rtx);
+extern rtx        gen_neon_vld2di                       (rtx, rtx);
+extern rtx        gen_neon_vld2v16qi                    (rtx, rtx);
+extern rtx        gen_neon_vld2v8hi                     (rtx, rtx);
+extern rtx        gen_neon_vld2v4si                     (rtx, rtx);
+extern rtx        gen_neon_vld2v4sf                     (rtx, rtx);
+extern rtx        gen_neon_vld2_lanev8qi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld2_lanev4hi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld2_lanev2si                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld2_lanev2sf                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld2_lanev8hi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld2_lanev4si                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld2_lanev4sf                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld2_dupv8qi                 (rtx, rtx);
+extern rtx        gen_neon_vld2_dupv4hi                 (rtx, rtx);
+extern rtx        gen_neon_vld2_dupv2si                 (rtx, rtx);
+extern rtx        gen_neon_vld2_dupv2sf                 (rtx, rtx);
+extern rtx        gen_neon_vld2_dupdi                   (rtx, rtx);
+extern rtx        gen_neon_vst2v8qi                     (rtx, rtx);
+extern rtx        gen_neon_vst2v4hi                     (rtx, rtx);
+extern rtx        gen_neon_vst2v2si                     (rtx, rtx);
+extern rtx        gen_neon_vst2v2sf                     (rtx, rtx);
+extern rtx        gen_neon_vst2di                       (rtx, rtx);
+extern rtx        gen_neon_vst2v16qi                    (rtx, rtx);
+extern rtx        gen_neon_vst2v8hi                     (rtx, rtx);
+extern rtx        gen_neon_vst2v4si                     (rtx, rtx);
+extern rtx        gen_neon_vst2v4sf                     (rtx, rtx);
+extern rtx        gen_neon_vst2_lanev8qi                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst2_lanev4hi                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst2_lanev2si                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst2_lanev2sf                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst2_lanev8hi                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst2_lanev4si                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst2_lanev4sf                (rtx, rtx, rtx);
+extern rtx        gen_neon_vld3v8qi                     (rtx, rtx);
+extern rtx        gen_neon_vld3v4hi                     (rtx, rtx);
+extern rtx        gen_neon_vld3v2si                     (rtx, rtx);
+extern rtx        gen_neon_vld3v2sf                     (rtx, rtx);
+extern rtx        gen_neon_vld3di                       (rtx, rtx);
+extern rtx        gen_neon_vld3qav16qi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld3qav8hi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld3qav4si                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld3qav4sf                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld3qbv16qi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld3qbv8hi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld3qbv4si                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld3qbv4sf                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld3_lanev8qi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld3_lanev4hi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld3_lanev2si                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld3_lanev2sf                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld3_lanev8hi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld3_lanev4si                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld3_lanev4sf                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld3_dupv8qi                 (rtx, rtx);
+extern rtx        gen_neon_vld3_dupv4hi                 (rtx, rtx);
+extern rtx        gen_neon_vld3_dupv2si                 (rtx, rtx);
+extern rtx        gen_neon_vld3_dupv2sf                 (rtx, rtx);
+extern rtx        gen_neon_vld3_dupdi                   (rtx, rtx);
+extern rtx        gen_neon_vst3v8qi                     (rtx, rtx);
+extern rtx        gen_neon_vst3v4hi                     (rtx, rtx);
+extern rtx        gen_neon_vst3v2si                     (rtx, rtx);
+extern rtx        gen_neon_vst3v2sf                     (rtx, rtx);
+extern rtx        gen_neon_vst3di                       (rtx, rtx);
+extern rtx        gen_neon_vst3qav16qi                  (rtx, rtx, rtx);
+extern rtx        gen_neon_vst3qav8hi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vst3qav4si                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vst3qav4sf                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vst3qbv16qi                  (rtx, rtx, rtx);
+extern rtx        gen_neon_vst3qbv8hi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vst3qbv4si                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vst3qbv4sf                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vst3_lanev8qi                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst3_lanev4hi                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst3_lanev2si                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst3_lanev2sf                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst3_lanev8hi                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst3_lanev4si                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst3_lanev4sf                (rtx, rtx, rtx);
+extern rtx        gen_neon_vld4v8qi                     (rtx, rtx);
+extern rtx        gen_neon_vld4v4hi                     (rtx, rtx);
+extern rtx        gen_neon_vld4v2si                     (rtx, rtx);
+extern rtx        gen_neon_vld4v2sf                     (rtx, rtx);
+extern rtx        gen_neon_vld4di                       (rtx, rtx);
+extern rtx        gen_neon_vld4qav16qi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld4qav8hi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld4qav4si                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld4qav4sf                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld4qbv16qi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld4qbv8hi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld4qbv4si                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld4qbv4sf                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld4_lanev8qi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld4_lanev4hi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld4_lanev2si                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld4_lanev2sf                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld4_lanev8hi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld4_lanev4si                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld4_lanev4sf                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vld4_dupv8qi                 (rtx, rtx);
+extern rtx        gen_neon_vld4_dupv4hi                 (rtx, rtx);
+extern rtx        gen_neon_vld4_dupv2si                 (rtx, rtx);
+extern rtx        gen_neon_vld4_dupv2sf                 (rtx, rtx);
+extern rtx        gen_neon_vld4_dupdi                   (rtx, rtx);
+extern rtx        gen_neon_vst4v8qi                     (rtx, rtx);
+extern rtx        gen_neon_vst4v4hi                     (rtx, rtx);
+extern rtx        gen_neon_vst4v2si                     (rtx, rtx);
+extern rtx        gen_neon_vst4v2sf                     (rtx, rtx);
+extern rtx        gen_neon_vst4di                       (rtx, rtx);
+extern rtx        gen_neon_vst4qav16qi                  (rtx, rtx, rtx);
+extern rtx        gen_neon_vst4qav8hi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vst4qav4si                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vst4qav4sf                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vst4qbv16qi                  (rtx, rtx, rtx);
+extern rtx        gen_neon_vst4qbv8hi                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vst4qbv4si                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vst4qbv4sf                   (rtx, rtx, rtx);
+extern rtx        gen_neon_vst4_lanev8qi                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst4_lanev4hi                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst4_lanev2si                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst4_lanev2sf                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst4_lanev8hi                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst4_lanev4si                (rtx, rtx, rtx);
+extern rtx        gen_neon_vst4_lanev4sf                (rtx, rtx, rtx);
+extern rtx        gen_adddi3                            (rtx, rtx, rtx);
+extern rtx        gen_addsi3                            (rtx, rtx, rtx);
+extern rtx        gen_incscc                            (rtx, rtx, rtx, rtx);
+extern rtx        gen_addsf3                            (rtx, rtx, rtx);
+extern rtx        gen_adddf3                            (rtx, rtx, rtx);
+extern rtx        gen_subdi3                            (rtx, rtx, rtx);
+extern rtx        gen_subsi3                            (rtx, rtx, rtx);
+extern rtx        gen_decscc                            (rtx, rtx, rtx, rtx);
+extern rtx        gen_subsf3                            (rtx, rtx, rtx);
+extern rtx        gen_subdf3                            (rtx, rtx, rtx);
+extern rtx        gen_mulsi3                            (rtx, rtx, rtx);
+extern rtx        gen_mulsidi3                          (rtx, rtx, rtx);
+extern rtx        gen_umulsidi3                         (rtx, rtx, rtx);
+extern rtx        gen_smulsi3_highpart                  (rtx, rtx, rtx);
+extern rtx        gen_umulsi3_highpart                  (rtx, rtx, rtx);
+extern rtx        gen_mulsf3                            (rtx, rtx, rtx);
+extern rtx        gen_muldf3                            (rtx, rtx, rtx);
+extern rtx        gen_divsf3                            (rtx, rtx, rtx);
+extern rtx        gen_divdf3                            (rtx, rtx, rtx);
+extern rtx        gen_modsf3                            (rtx, rtx, rtx);
+extern rtx        gen_moddf3                            (rtx, rtx, rtx);
+extern rtx        gen_andsi3                            (rtx, rtx, rtx);
+extern rtx        gen_insv                              (rtx, rtx, rtx, rtx);
+extern rtx        gen_iorsi3                            (rtx, rtx, rtx);
+extern rtx        gen_xorsi3                            (rtx, rtx, rtx);
+extern rtx        gen_smaxsi3                           (rtx, rtx, rtx);
+extern rtx        gen_sminsi3                           (rtx, rtx, rtx);
+extern rtx        gen_umaxsi3                           (rtx, rtx, rtx);
+extern rtx        gen_uminsi3                           (rtx, rtx, rtx);
+extern rtx        gen_ashldi3                           (rtx, rtx, rtx);
+extern rtx        gen_ashlsi3                           (rtx, rtx, rtx);
+extern rtx        gen_ashrdi3                           (rtx, rtx, rtx);
+extern rtx        gen_ashrsi3                           (rtx, rtx, rtx);
+extern rtx        gen_lshrdi3                           (rtx, rtx, rtx);
+extern rtx        gen_lshrsi3                           (rtx, rtx, rtx);
+extern rtx        gen_rotlsi3                           (rtx, rtx, rtx);
+extern rtx        gen_rotrsi3                           (rtx, rtx, rtx);
+extern rtx        gen_extzv                             (rtx, rtx, rtx, rtx);
+extern rtx        gen_negdi2                            (rtx, rtx);
+extern rtx        gen_negsi2                            (rtx, rtx);
+extern rtx        gen_negsf2                            (rtx, rtx);
+extern rtx        gen_negdf2                            (rtx, rtx);
+extern rtx        gen_abssi2                            (rtx, rtx);
+extern rtx        gen_abssf2                            (rtx, rtx);
+extern rtx        gen_absdf2                            (rtx, rtx);
+extern rtx        gen_sqrtsf2                           (rtx, rtx);
+extern rtx        gen_sqrtdf2                           (rtx, rtx);
+extern rtx        gen_one_cmplsi2                       (rtx, rtx);
+extern rtx        gen_floatsisf2                        (rtx, rtx);
+extern rtx        gen_floatsidf2                        (rtx, rtx);
+extern rtx        gen_fix_truncsfsi2                    (rtx, rtx);
+extern rtx        gen_fix_truncdfsi2                    (rtx, rtx);
+extern rtx        gen_truncdfsf2                        (rtx, rtx);
+extern rtx        gen_zero_extendsidi2                  (rtx, rtx);
+extern rtx        gen_zero_extendqidi2                  (rtx, rtx);
+extern rtx        gen_extendsidi2                       (rtx, rtx);
+extern rtx        gen_zero_extendhisi2                  (rtx, rtx);
+extern rtx        gen_zero_extendqisi2                  (rtx, rtx);
+extern rtx        gen_extendhisi2                       (rtx, rtx);
+extern rtx        gen_extendhisi2_mem                   (rtx, rtx);
+extern rtx        gen_extendqihi2                       (rtx, rtx);
+extern rtx        gen_extendqisi2                       (rtx, rtx);
+extern rtx        gen_extendsfdf2                       (rtx, rtx);
+extern rtx        gen_movdi                             (rtx, rtx);
+extern rtx        gen_movsi                             (rtx, rtx);
+extern rtx        gen_builtin_setjmp_receiver           (rtx);
+extern rtx        gen_storehi                           (rtx, rtx);
+extern rtx        gen_storehi_bigend                    (rtx, rtx);
+extern rtx        gen_storeinthi                        (rtx, rtx);
+extern rtx        gen_storehi_single_op                 (rtx, rtx);
+extern rtx        gen_movhi                             (rtx, rtx);
+extern rtx        gen_movhi_bytes                       (rtx, rtx);
+extern rtx        gen_movhi_bigend                      (rtx, rtx);
+extern rtx        gen_thumb_movhi_clobber               (rtx, rtx, rtx);
+extern rtx        gen_reload_outhi                      (rtx, rtx, rtx);
+extern rtx        gen_reload_inhi                       (rtx, rtx, rtx);
+extern rtx        gen_movqi                             (rtx, rtx);
+extern rtx        gen_movsf                             (rtx, rtx);
+extern rtx        gen_movdf                             (rtx, rtx);
+extern rtx        gen_reload_outdf                      (rtx, rtx, rtx);
+extern rtx        gen_movxf                             (rtx, rtx);
+extern rtx        gen_load_multiple                     (rtx, rtx, rtx);
+extern rtx        gen_store_multiple                    (rtx, rtx, rtx);
+extern rtx        gen_movmemqi                          (rtx, rtx, rtx, rtx);
+extern rtx        gen_cbranchsi4                        (rtx, rtx, rtx, rtx);
+extern rtx        gen_cmpsi                             (rtx, rtx);
+extern rtx        gen_cmpsf                             (rtx, rtx);
+extern rtx        gen_cmpdf                             (rtx, rtx);
+extern rtx        gen_cmpdi                             (rtx, rtx);
+extern rtx        gen_beq                               (rtx);
+extern rtx        gen_bne                               (rtx);
+extern rtx        gen_bgt                               (rtx);
+extern rtx        gen_ble                               (rtx);
+extern rtx        gen_bge                               (rtx);
+extern rtx        gen_blt                               (rtx);
+extern rtx        gen_bgtu                              (rtx);
+extern rtx        gen_bleu                              (rtx);
+extern rtx        gen_bgeu                              (rtx);
+extern rtx        gen_bltu                              (rtx);
+extern rtx        gen_bunordered                        (rtx);
+extern rtx        gen_bordered                          (rtx);
+extern rtx        gen_bungt                             (rtx);
+extern rtx        gen_bunlt                             (rtx);
+extern rtx        gen_bunge                             (rtx);
+extern rtx        gen_bunle                             (rtx);
+extern rtx        gen_buneq                             (rtx);
+extern rtx        gen_bltgt                             (rtx);
+extern rtx        gen_seq                               (rtx);
+extern rtx        gen_sne                               (rtx);
+extern rtx        gen_sgt                               (rtx);
+extern rtx        gen_sle                               (rtx);
+extern rtx        gen_sge                               (rtx);
+extern rtx        gen_slt                               (rtx);
+extern rtx        gen_sgtu                              (rtx);
+extern rtx        gen_sleu                              (rtx);
+extern rtx        gen_sgeu                              (rtx);
+extern rtx        gen_sltu                              (rtx);
+extern rtx        gen_sunordered                        (rtx);
+extern rtx        gen_sordered                          (rtx);
+extern rtx        gen_sungt                             (rtx);
+extern rtx        gen_sunge                             (rtx);
+extern rtx        gen_sunlt                             (rtx);
+extern rtx        gen_sunle                             (rtx);
+extern rtx        gen_cstoresi4                         (rtx, rtx, rtx, rtx);
+extern rtx        gen_cstoresi_eq0_thumb1               (rtx, rtx);
+extern rtx        gen_cstoresi_ne0_thumb1               (rtx, rtx);
+extern rtx        gen_movsicc                           (rtx, rtx, rtx, rtx);
+extern rtx        gen_movsfcc                           (rtx, rtx, rtx, rtx);
+extern rtx        gen_movdfcc                           (rtx, rtx, rtx, rtx);
+extern rtx        gen_jump                              (rtx);
+#define GEN_CALL(A, B, C, D) gen_call ((A), (B), (C))
+extern rtx        gen_call                              (rtx, rtx, rtx);
+extern rtx        gen_call_internal                     (rtx, rtx, rtx);
+#define GEN_CALL_VALUE(A, B, C, D, E) gen_call_value ((A), (B), (C), (D))
+extern rtx        gen_call_value                        (rtx, rtx, rtx, rtx);
+extern rtx        gen_call_value_internal               (rtx, rtx, rtx, rtx);
+#define GEN_SIBCALL(A, B, C, D) gen_sibcall ((A), (B), (C))
+extern rtx        gen_sibcall                           (rtx, rtx, rtx);
+#define GEN_SIBCALL_VALUE(A, B, C, D, E) gen_sibcall_value ((A), (B), (C), (D))
+extern rtx        gen_sibcall_value                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_return_addr_mask                  (rtx);
+extern rtx        gen_untyped_call                      (rtx, rtx, rtx);
+extern rtx        gen_untyped_return                    (rtx, rtx);
+extern rtx        gen_casesi                            (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_indirect_jump                     (rtx);
+extern rtx        gen_prologue                          (void);
+extern rtx        gen_epilogue                          (void);
+extern rtx        gen_eh_epilogue                       (rtx, rtx, rtx);
+extern rtx        gen_tablejump                         (rtx, rtx);
+extern rtx        gen_eh_return                         (rtx);
+extern rtx        gen_movv2di                           (rtx, rtx);
+extern rtx        gen_movv2si                           (rtx, rtx);
+extern rtx        gen_movv4hi                           (rtx, rtx);
+extern rtx        gen_movv8qi                           (rtx, rtx);
+extern rtx        gen_movv2sf                           (rtx, rtx);
+extern rtx        gen_movv4si                           (rtx, rtx);
+extern rtx        gen_movv8hi                           (rtx, rtx);
+extern rtx        gen_movv16qi                          (rtx, rtx);
+extern rtx        gen_movv4sf                           (rtx, rtx);
+extern rtx        gen_addv2di3                          (rtx, rtx, rtx);
+extern rtx        gen_addv2si3                          (rtx, rtx, rtx);
+extern rtx        gen_addv4hi3                          (rtx, rtx, rtx);
+extern rtx        gen_addv8qi3                          (rtx, rtx, rtx);
+extern rtx        gen_addv2sf3                          (rtx, rtx, rtx);
+extern rtx        gen_addv4si3                          (rtx, rtx, rtx);
+extern rtx        gen_addv8hi3                          (rtx, rtx, rtx);
+extern rtx        gen_addv16qi3                         (rtx, rtx, rtx);
+extern rtx        gen_addv4sf3                          (rtx, rtx, rtx);
+extern rtx        gen_subv2di3                          (rtx, rtx, rtx);
+extern rtx        gen_subv2si3                          (rtx, rtx, rtx);
+extern rtx        gen_subv4hi3                          (rtx, rtx, rtx);
+extern rtx        gen_subv8qi3                          (rtx, rtx, rtx);
+extern rtx        gen_subv2sf3                          (rtx, rtx, rtx);
+extern rtx        gen_subv4si3                          (rtx, rtx, rtx);
+extern rtx        gen_subv8hi3                          (rtx, rtx, rtx);
+extern rtx        gen_subv16qi3                         (rtx, rtx, rtx);
+extern rtx        gen_subv4sf3                          (rtx, rtx, rtx);
+extern rtx        gen_mulv2si3                          (rtx, rtx, rtx);
+extern rtx        gen_mulv4hi3                          (rtx, rtx, rtx);
+extern rtx        gen_mulv8qi3                          (rtx, rtx, rtx);
+extern rtx        gen_mulv2sf3                          (rtx, rtx, rtx);
+extern rtx        gen_mulv4si3                          (rtx, rtx, rtx);
+extern rtx        gen_mulv8hi3                          (rtx, rtx, rtx);
+extern rtx        gen_mulv16qi3                         (rtx, rtx, rtx);
+extern rtx        gen_mulv4sf3                          (rtx, rtx, rtx);
+extern rtx        gen_sminv2si3                         (rtx, rtx, rtx);
+extern rtx        gen_sminv4hi3                         (rtx, rtx, rtx);
+extern rtx        gen_sminv8qi3                         (rtx, rtx, rtx);
+extern rtx        gen_sminv2sf3                         (rtx, rtx, rtx);
+extern rtx        gen_sminv4si3                         (rtx, rtx, rtx);
+extern rtx        gen_sminv8hi3                         (rtx, rtx, rtx);
+extern rtx        gen_sminv16qi3                        (rtx, rtx, rtx);
+extern rtx        gen_sminv4sf3                         (rtx, rtx, rtx);
+extern rtx        gen_uminv2si3                         (rtx, rtx, rtx);
+extern rtx        gen_uminv4hi3                         (rtx, rtx, rtx);
+extern rtx        gen_uminv8qi3                         (rtx, rtx, rtx);
+extern rtx        gen_uminv4si3                         (rtx, rtx, rtx);
+extern rtx        gen_uminv8hi3                         (rtx, rtx, rtx);
+extern rtx        gen_uminv16qi3                        (rtx, rtx, rtx);
+extern rtx        gen_smaxv2si3                         (rtx, rtx, rtx);
+extern rtx        gen_smaxv4hi3                         (rtx, rtx, rtx);
+extern rtx        gen_smaxv8qi3                         (rtx, rtx, rtx);
+extern rtx        gen_smaxv2sf3                         (rtx, rtx, rtx);
+extern rtx        gen_smaxv4si3                         (rtx, rtx, rtx);
+extern rtx        gen_smaxv8hi3                         (rtx, rtx, rtx);
+extern rtx        gen_smaxv16qi3                        (rtx, rtx, rtx);
+extern rtx        gen_smaxv4sf3                         (rtx, rtx, rtx);
+extern rtx        gen_umaxv2si3                         (rtx, rtx, rtx);
+extern rtx        gen_umaxv4hi3                         (rtx, rtx, rtx);
+extern rtx        gen_umaxv8qi3                         (rtx, rtx, rtx);
+extern rtx        gen_umaxv4si3                         (rtx, rtx, rtx);
+extern rtx        gen_umaxv8hi3                         (rtx, rtx, rtx);
+extern rtx        gen_umaxv16qi3                        (rtx, rtx, rtx);
+extern rtx        gen_movti                             (rtx, rtx);
+extern rtx        gen_movei                             (rtx, rtx);
+extern rtx        gen_movoi                             (rtx, rtx);
+extern rtx        gen_movci                             (rtx, rtx);
+extern rtx        gen_movxi                             (rtx, rtx);
+extern rtx        gen_vec_setv8qi                       (rtx, rtx, rtx);
+extern rtx        gen_vec_setv16qi                      (rtx, rtx, rtx);
+extern rtx        gen_vec_setv4hi                       (rtx, rtx, rtx);
+extern rtx        gen_vec_setv8hi                       (rtx, rtx, rtx);
+extern rtx        gen_vec_setv2si                       (rtx, rtx, rtx);
+extern rtx        gen_vec_setv4si                       (rtx, rtx, rtx);
+extern rtx        gen_vec_setv2sf                       (rtx, rtx, rtx);
+extern rtx        gen_vec_setv4sf                       (rtx, rtx, rtx);
+extern rtx        gen_vec_setv2di                       (rtx, rtx, rtx);
+extern rtx        gen_vec_initv8qi                      (rtx, rtx);
+extern rtx        gen_vec_initv16qi                     (rtx, rtx);
+extern rtx        gen_vec_initv4hi                      (rtx, rtx);
+extern rtx        gen_vec_initv8hi                      (rtx, rtx);
+extern rtx        gen_vec_initv2si                      (rtx, rtx);
+extern rtx        gen_vec_initv4si                      (rtx, rtx);
+extern rtx        gen_vec_initv2sf                      (rtx, rtx);
+extern rtx        gen_vec_initv4sf                      (rtx, rtx);
+extern rtx        gen_vec_initv2di                      (rtx, rtx);
+extern rtx        gen_ashrv8qi3                         (rtx, rtx, rtx);
+extern rtx        gen_ashrv16qi3                        (rtx, rtx, rtx);
+extern rtx        gen_ashrv4hi3                         (rtx, rtx, rtx);
+extern rtx        gen_ashrv8hi3                         (rtx, rtx, rtx);
+extern rtx        gen_ashrv2si3                         (rtx, rtx, rtx);
+extern rtx        gen_ashrv4si3                         (rtx, rtx, rtx);
+extern rtx        gen_lshrv8qi3                         (rtx, rtx, rtx);
+extern rtx        gen_lshrv16qi3                        (rtx, rtx, rtx);
+extern rtx        gen_lshrv4hi3                         (rtx, rtx, rtx);
+extern rtx        gen_lshrv8hi3                         (rtx, rtx, rtx);
+extern rtx        gen_lshrv2si3                         (rtx, rtx, rtx);
+extern rtx        gen_lshrv4si3                         (rtx, rtx, rtx);
+extern rtx        gen_vec_shr_v8qi                      (rtx, rtx, rtx);
+extern rtx        gen_vec_shr_v16qi                     (rtx, rtx, rtx);
+extern rtx        gen_vec_shr_v4hi                      (rtx, rtx, rtx);
+extern rtx        gen_vec_shr_v8hi                      (rtx, rtx, rtx);
+extern rtx        gen_vec_shr_v2si                      (rtx, rtx, rtx);
+extern rtx        gen_vec_shr_v4si                      (rtx, rtx, rtx);
+extern rtx        gen_vec_shr_v2sf                      (rtx, rtx, rtx);
+extern rtx        gen_vec_shr_v4sf                      (rtx, rtx, rtx);
+extern rtx        gen_vec_shr_v2di                      (rtx, rtx, rtx);
+extern rtx        gen_vec_shl_v8qi                      (rtx, rtx, rtx);
+extern rtx        gen_vec_shl_v16qi                     (rtx, rtx, rtx);
+extern rtx        gen_vec_shl_v4hi                      (rtx, rtx, rtx);
+extern rtx        gen_vec_shl_v8hi                      (rtx, rtx, rtx);
+extern rtx        gen_vec_shl_v2si                      (rtx, rtx, rtx);
+extern rtx        gen_vec_shl_v4si                      (rtx, rtx, rtx);
+extern rtx        gen_vec_shl_v2sf                      (rtx, rtx, rtx);
+extern rtx        gen_vec_shl_v4sf                      (rtx, rtx, rtx);
+extern rtx        gen_vec_shl_v2di                      (rtx, rtx, rtx);
+extern rtx        gen_reduc_splus_v8qi                  (rtx, rtx);
+extern rtx        gen_reduc_splus_v4hi                  (rtx, rtx);
+extern rtx        gen_reduc_splus_v2si                  (rtx, rtx);
+extern rtx        gen_reduc_splus_v2sf                  (rtx, rtx);
+extern rtx        gen_reduc_splus_v16qi                 (rtx, rtx);
+extern rtx        gen_reduc_splus_v8hi                  (rtx, rtx);
+extern rtx        gen_reduc_splus_v4si                  (rtx, rtx);
+extern rtx        gen_reduc_splus_v4sf                  (rtx, rtx);
+extern rtx        gen_reduc_uplus_v8qi                  (rtx, rtx);
+extern rtx        gen_reduc_uplus_v16qi                 (rtx, rtx);
+extern rtx        gen_reduc_uplus_v4hi                  (rtx, rtx);
+extern rtx        gen_reduc_uplus_v8hi                  (rtx, rtx);
+extern rtx        gen_reduc_uplus_v2si                  (rtx, rtx);
+extern rtx        gen_reduc_uplus_v4si                  (rtx, rtx);
+extern rtx        gen_reduc_uplus_v2di                  (rtx, rtx);
+extern rtx        gen_reduc_smin_v8qi                   (rtx, rtx);
+extern rtx        gen_reduc_smin_v4hi                   (rtx, rtx);
+extern rtx        gen_reduc_smin_v2si                   (rtx, rtx);
+extern rtx        gen_reduc_smin_v2sf                   (rtx, rtx);
+extern rtx        gen_reduc_smin_v16qi                  (rtx, rtx);
+extern rtx        gen_reduc_smin_v8hi                   (rtx, rtx);
+extern rtx        gen_reduc_smin_v4si                   (rtx, rtx);
+extern rtx        gen_reduc_smin_v4sf                   (rtx, rtx);
+extern rtx        gen_reduc_smax_v8qi                   (rtx, rtx);
+extern rtx        gen_reduc_smax_v4hi                   (rtx, rtx);
+extern rtx        gen_reduc_smax_v2si                   (rtx, rtx);
+extern rtx        gen_reduc_smax_v2sf                   (rtx, rtx);
+extern rtx        gen_reduc_smax_v16qi                  (rtx, rtx);
+extern rtx        gen_reduc_smax_v8hi                   (rtx, rtx);
+extern rtx        gen_reduc_smax_v4si                   (rtx, rtx);
+extern rtx        gen_reduc_smax_v4sf                   (rtx, rtx);
+extern rtx        gen_reduc_umin_v8qi                   (rtx, rtx);
+extern rtx        gen_reduc_umin_v4hi                   (rtx, rtx);
+extern rtx        gen_reduc_umin_v2si                   (rtx, rtx);
+extern rtx        gen_reduc_umin_v16qi                  (rtx, rtx);
+extern rtx        gen_reduc_umin_v8hi                   (rtx, rtx);
+extern rtx        gen_reduc_umin_v4si                   (rtx, rtx);
+extern rtx        gen_reduc_umax_v8qi                   (rtx, rtx);
+extern rtx        gen_reduc_umax_v4hi                   (rtx, rtx);
+extern rtx        gen_reduc_umax_v2si                   (rtx, rtx);
+extern rtx        gen_reduc_umax_v16qi                  (rtx, rtx);
+extern rtx        gen_reduc_umax_v8hi                   (rtx, rtx);
+extern rtx        gen_reduc_umax_v4si                   (rtx, rtx);
+extern rtx        gen_neon_vpaddv8qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vpaddv4hi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vpaddv2si                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vpaddv2sf                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vnegv8qi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vnegv16qi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vnegv4hi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vnegv8hi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vnegv2si                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vnegv4si                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vnegv2sf                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vnegv4sf                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vmvnv8qi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vmvnv16qi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vmvnv4hi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vmvnv8hi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vmvnv2si                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vmvnv4si                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev8qi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev16qi               (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev4hi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev8hi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev2si                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev4si                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev2sf                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vget_lanev4sf                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vcreatev8qi                  (rtx, rtx);
+extern rtx        gen_neon_vcreatev4hi                  (rtx, rtx);
+extern rtx        gen_neon_vcreatev2si                  (rtx, rtx);
+extern rtx        gen_neon_vcreatev2sf                  (rtx, rtx);
+extern rtx        gen_neon_vcreatedi                    (rtx, rtx);
+extern rtx        gen_neon_vdup_lanedi                  (rtx, rtx, rtx);
+extern rtx        gen_neon_vmul_nv4hi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmul_nv2si                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmul_nv2sf                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmul_nv8hi                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmul_nv4si                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmul_nv4sf                   (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmull_nv4hi                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmull_nv2si                  (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmull_nv4hi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmull_nv2si                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmulh_nv4hi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmulh_nv2si                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmulh_nv8hi                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmulh_nv4si                (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmla_nv4hi                   (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmla_nv2si                   (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmla_nv2sf                   (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmla_nv8hi                   (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmla_nv4si                   (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmla_nv4sf                   (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlal_nv4hi                  (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlal_nv2si                  (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmlal_nv4hi                (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmlal_nv2si                (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmls_nv4hi                   (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmls_nv2si                   (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmls_nv2sf                   (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmls_nv8hi                   (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmls_nv4si                   (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmls_nv4sf                   (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlsl_nv4hi                  (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vmlsl_nv2si                  (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmlsl_nv4hi                (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vqdmlsl_nv2si                (rtx, rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbslv8qi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbslv16qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbslv4hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbslv8hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbslv2si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbslv4si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbslv2sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbslv4sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbsldi                       (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbslv2di                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vtrnv8qi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vtrnv16qi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vtrnv4hi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vtrnv8hi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vtrnv2si                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vtrnv4si                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vtrnv2sf                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vtrnv4sf                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vzipv8qi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vzipv16qi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vzipv4hi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vzipv8hi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vzipv2si                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vzipv4si                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vzipv2sf                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vzipv4sf                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vuzpv8qi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vuzpv16qi                    (rtx, rtx, rtx);
+extern rtx        gen_neon_vuzpv4hi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vuzpv8hi                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vuzpv2si                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vuzpv4si                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vuzpv2sf                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vuzpv4sf                     (rtx, rtx, rtx);
+extern rtx        gen_neon_vreinterpretv8qiv8qi         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv8qiv4hi         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv8qiv2si         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv8qiv2sf         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv8qidi           (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv4hiv8qi         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv4hiv4hi         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv4hiv2si         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv4hiv2sf         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv4hidi           (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv2siv8qi         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv2siv4hi         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv2siv2si         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv2siv2sf         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv2sidi           (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv2sfv8qi         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv2sfv4hi         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv2sfv2si         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv2sfv2sf         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv2sfdi           (rtx, rtx);
+extern rtx        gen_neon_vreinterpretdiv8qi           (rtx, rtx);
+extern rtx        gen_neon_vreinterpretdiv4hi           (rtx, rtx);
+extern rtx        gen_neon_vreinterpretdiv2si           (rtx, rtx);
+extern rtx        gen_neon_vreinterpretdiv2sf           (rtx, rtx);
+extern rtx        gen_neon_vreinterpretdidi             (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv16qiv16qi       (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv16qiv8hi        (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv16qiv4si        (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv16qiv4sf        (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv16qiv2di        (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv8hiv16qi        (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv8hiv8hi         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv8hiv4si         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv8hiv4sf         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv8hiv2di         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv4siv16qi        (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv4siv8hi         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv4siv4si         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv4siv4sf         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv4siv2di         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv4sfv16qi        (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv4sfv8hi         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv4sfv4si         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv4sfv4sf         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv4sfv2di         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv2div16qi        (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv2div8hi         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv2div4si         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv2div4sf         (rtx, rtx);
+extern rtx        gen_neon_vreinterpretv2div2di         (rtx, rtx);
+extern rtx        gen_neon_vld3v16qi                    (rtx, rtx);
+extern rtx        gen_neon_vld3v8hi                     (rtx, rtx);
+extern rtx        gen_neon_vld3v4si                     (rtx, rtx);
+extern rtx        gen_neon_vld3v4sf                     (rtx, rtx);
+extern rtx        gen_neon_vst3v16qi                    (rtx, rtx);
+extern rtx        gen_neon_vst3v8hi                     (rtx, rtx);
+extern rtx        gen_neon_vst3v4si                     (rtx, rtx);
+extern rtx        gen_neon_vst3v4sf                     (rtx, rtx);
+extern rtx        gen_neon_vld4v16qi                    (rtx, rtx);
+extern rtx        gen_neon_vld4v8hi                     (rtx, rtx);
+extern rtx        gen_neon_vld4v4si                     (rtx, rtx);
+extern rtx        gen_neon_vld4v4sf                     (rtx, rtx);
+extern rtx        gen_neon_vst4v16qi                    (rtx, rtx);
+extern rtx        gen_neon_vst4v8hi                     (rtx, rtx);
+extern rtx        gen_neon_vst4v4si                     (rtx, rtx);
+extern rtx        gen_neon_vst4v4sf                     (rtx, rtx);
+extern rtx        gen_neon_vandv8qi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vandv16qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vandv4hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vandv8hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vandv2si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vandv4si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vandv2sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vandv4sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vanddi                       (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vandv2di                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vorrv8qi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vorrv16qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vorrv4hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vorrv8hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vorrv2si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vorrv4si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vorrv2sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vorrv4sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vorrdi                       (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vorrv2di                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_veorv8qi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_veorv16qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_veorv4hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_veorv8hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_veorv2si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_veorv4si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_veorv2sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_veorv4sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_veordi                       (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_veorv2di                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbicv8qi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbicv16qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbicv4hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbicv8hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbicv2si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbicv4si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbicv2sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbicv4sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbicdi                       (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vbicv2di                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vornv8qi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vornv16qi                    (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vornv4hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vornv8hi                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vornv2si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vornv4si                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vornv2sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vornv4sf                     (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vorndi                       (rtx, rtx, rtx, rtx);
+extern rtx        gen_neon_vornv2di                     (rtx, rtx, rtx, rtx);
+
+#endif /* GCC_INSN_FLAGS_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/insn-modes.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/insn-modes.h
new file mode 100644 (file)
index 0000000..190bc01
--- /dev/null
@@ -0,0 +1,151 @@
+/* Generated automatically from machmode.def and config/arm/arm-modes.def
+   by genmodes.  */
+
+#ifndef GCC_INSN_MODES_H
+#define GCC_INSN_MODES_H
+
+enum machine_mode
+{
+  VOIDmode,                /* machmode.def:169 */
+  BLKmode,                 /* machmode.def:173 */
+  CCmode,                  /* machmode.def:201 */
+  CC_NOOVmode,             /* config/arm/arm-modes.def:35 */
+  CC_Zmode,                /* config/arm/arm-modes.def:36 */
+  CC_SWPmode,              /* config/arm/arm-modes.def:37 */
+  CCFPmode,                /* config/arm/arm-modes.def:38 */
+  CCFPEmode,               /* config/arm/arm-modes.def:39 */
+  CC_DNEmode,              /* config/arm/arm-modes.def:40 */
+  CC_DEQmode,              /* config/arm/arm-modes.def:41 */
+  CC_DLEmode,              /* config/arm/arm-modes.def:42 */
+  CC_DLTmode,              /* config/arm/arm-modes.def:43 */
+  CC_DGEmode,              /* config/arm/arm-modes.def:44 */
+  CC_DGTmode,              /* config/arm/arm-modes.def:45 */
+  CC_DLEUmode,             /* config/arm/arm-modes.def:46 */
+  CC_DLTUmode,             /* config/arm/arm-modes.def:47 */
+  CC_DGEUmode,             /* config/arm/arm-modes.def:48 */
+  CC_DGTUmode,             /* config/arm/arm-modes.def:49 */
+  CC_Cmode,                /* config/arm/arm-modes.def:50 */
+  CC_Nmode,                /* config/arm/arm-modes.def:51 */
+  BImode,                  /* machmode.def:176 */
+  QImode,                  /* machmode.def:181 */
+  HImode,                  /* machmode.def:182 */
+  SImode,                  /* machmode.def:183 */
+  DImode,                  /* machmode.def:184 */
+  TImode,                  /* machmode.def:185 */
+  EImode,                  /* config/arm/arm-modes.def:62 */
+  OImode,                  /* config/arm/arm-modes.def:63 */
+  CImode,                  /* config/arm/arm-modes.def:64 */
+  XImode,                  /* config/arm/arm-modes.def:67 */
+  QQmode,                  /* machmode.def:204 */
+  HQmode,                  /* machmode.def:205 */
+  SQmode,                  /* machmode.def:206 */
+  DQmode,                  /* machmode.def:207 */
+  TQmode,                  /* machmode.def:208 */
+  UQQmode,                 /* machmode.def:210 */
+  UHQmode,                 /* machmode.def:211 */
+  USQmode,                 /* machmode.def:212 */
+  UDQmode,                 /* machmode.def:213 */
+  UTQmode,                 /* machmode.def:214 */
+  HAmode,                  /* machmode.def:216 */
+  SAmode,                  /* machmode.def:217 */
+  DAmode,                  /* machmode.def:218 */
+  TAmode,                  /* machmode.def:219 */
+  UHAmode,                 /* machmode.def:221 */
+  USAmode,                 /* machmode.def:222 */
+  UDAmode,                 /* machmode.def:223 */
+  UTAmode,                 /* machmode.def:224 */
+  SFmode,                  /* machmode.def:196 */
+  DFmode,                  /* machmode.def:197 */
+  XFmode,                  /* config/arm/arm-modes.def:26 */
+  SDmode,                  /* machmode.def:236 */
+  DDmode,                  /* machmode.def:237 */
+  TDmode,                  /* machmode.def:238 */
+  CQImode,                 /* machmode.def:232 */
+  CHImode,                 /* machmode.def:232 */
+  CSImode,                 /* machmode.def:232 */
+  CDImode,                 /* machmode.def:232 */
+  CTImode,                 /* machmode.def:232 */
+  CEImode,                 /* machmode.def:232 */
+  COImode,                 /* machmode.def:232 */
+  CCImode,                 /* machmode.def:232 */
+  CXImode,                 /* machmode.def:232 */
+  SCmode,                  /* machmode.def:233 */
+  DCmode,                  /* machmode.def:233 */
+  XCmode,                  /* machmode.def:233 */
+  V4QImode,                /* config/arm/arm-modes.def:54 */
+  V2HImode,                /* config/arm/arm-modes.def:54 */
+  V8QImode,                /* config/arm/arm-modes.def:55 */
+  V4HImode,                /* config/arm/arm-modes.def:55 */
+  V2SImode,                /* config/arm/arm-modes.def:55 */
+  V16QImode,               /* config/arm/arm-modes.def:56 */
+  V8HImode,                /* config/arm/arm-modes.def:56 */
+  V4SImode,                /* config/arm/arm-modes.def:56 */
+  V2DImode,                /* config/arm/arm-modes.def:56 */
+  V2SFmode,                /* config/arm/arm-modes.def:57 */
+  V4SFmode,                /* config/arm/arm-modes.def:58 */
+  V2DFmode,                /* config/arm/arm-modes.def:58 */
+  MAX_MACHINE_MODE,
+
+  MIN_MODE_RANDOM = VOIDmode,
+  MAX_MODE_RANDOM = BLKmode,
+
+  MIN_MODE_CC = CCmode,
+  MAX_MODE_CC = CC_Nmode,
+
+  MIN_MODE_INT = QImode,
+  MAX_MODE_INT = XImode,
+
+  MIN_MODE_PARTIAL_INT = VOIDmode,
+  MAX_MODE_PARTIAL_INT = VOIDmode,
+
+  MIN_MODE_FRACT = QQmode,
+  MAX_MODE_FRACT = TQmode,
+
+  MIN_MODE_UFRACT = UQQmode,
+  MAX_MODE_UFRACT = UTQmode,
+
+  MIN_MODE_ACCUM = HAmode,
+  MAX_MODE_ACCUM = TAmode,
+
+  MIN_MODE_UACCUM = UHAmode,
+  MAX_MODE_UACCUM = UTAmode,
+
+  MIN_MODE_FLOAT = SFmode,
+  MAX_MODE_FLOAT = XFmode,
+
+  MIN_MODE_DECIMAL_FLOAT = SDmode,
+  MAX_MODE_DECIMAL_FLOAT = TDmode,
+
+  MIN_MODE_COMPLEX_INT = CQImode,
+  MAX_MODE_COMPLEX_INT = CXImode,
+
+  MIN_MODE_COMPLEX_FLOAT = SCmode,
+  MAX_MODE_COMPLEX_FLOAT = XCmode,
+
+  MIN_MODE_VECTOR_INT = V4QImode,
+  MAX_MODE_VECTOR_INT = V2DImode,
+
+  MIN_MODE_VECTOR_FRACT = VOIDmode,
+  MAX_MODE_VECTOR_FRACT = VOIDmode,
+
+  MIN_MODE_VECTOR_UFRACT = VOIDmode,
+  MAX_MODE_VECTOR_UFRACT = VOIDmode,
+
+  MIN_MODE_VECTOR_ACCUM = VOIDmode,
+  MAX_MODE_VECTOR_ACCUM = VOIDmode,
+
+  MIN_MODE_VECTOR_UACCUM = VOIDmode,
+  MAX_MODE_VECTOR_UACCUM = VOIDmode,
+
+  MIN_MODE_VECTOR_FLOAT = V2SFmode,
+  MAX_MODE_VECTOR_FLOAT = V2DFmode,
+
+  NUM_MACHINE_MODES = MAX_MACHINE_MODE
+};
+
+#define CONST_MODE_SIZE const
+#define CONST_MODE_BASE_ALIGN const
+#define CONST_MODE_IBIT const
+#define CONST_MODE_FBIT const
+
+#endif /* insn-modes.h */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/intl.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/intl.h
new file mode 100644 (file)
index 0000000..3b6395f
--- /dev/null
@@ -0,0 +1,60 @@
+/* intl.h - internationalization
+   Copyright 1998, 2001, 2003, 2004, 2007 Free Software Foundation, Inc.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_INTL_H
+#define GCC_INTL_H
+
+#ifdef HAVE_LOCALE_H
+# include <locale.h>
+#endif
+
+#ifndef HAVE_SETLOCALE
+# define setlocale(category, locale) (locale)
+#endif
+
+#ifdef ENABLE_NLS
+#include <libintl.h>
+extern void gcc_init_libintl (void);
+extern size_t gcc_gettext_width (const char *);
+#else
+/* Stubs.  */
+# undef textdomain
+# define textdomain(domain) (domain)
+# undef bindtextdomain
+# define bindtextdomain(domain, directory) (domain)
+# undef gettext
+# define gettext(msgid) (msgid)
+# define gcc_init_libintl()    /* nothing */
+# define gcc_gettext_width(s) strlen(s)
+#endif
+
+#ifndef _
+# define _(msgid) gettext (msgid)
+#endif
+
+#ifndef N_
+# define N_(msgid) msgid
+#endif
+
+#ifndef G_
+# define G_(gmsgid) gmsgid
+#endif
+
+extern const char *open_quote;
+extern const char *close_quote;
+
+#endif /* intl.h */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/java/java-tree.def b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/java/java-tree.def
new file mode 100644 (file)
index 0000000..e565499
--- /dev/null
@@ -0,0 +1,38 @@
+/* This file contains the definitions and documentation for the
+   extra tree codes used by gcj.
+   Copyright (C) 1996, 2007 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+
+/* Shift right, logical. */
+DEFTREECODE (URSHIFT_EXPR, "urshift_expr", tcc_binary, 2)
+
+/* Return -1, 0, 1 depending on whether the first argument is
+   less, equal, or greater to the second argument. */
+DEFTREECODE (COMPARE_EXPR, "compare_expr", tcc_binary, 2)
+
+/* Same as COMPARE_EXPR, but if either value is NaN, the result is -1. */
+DEFTREECODE (COMPARE_L_EXPR, "compare_l_expr", tcc_binary, 2)
+/* Same as COMPARE_EXPR, but if either value is NaN, the result is 1. */
+DEFTREECODE (COMPARE_G_EXPR, "compare_g_expr", tcc_binary, 2)
+
+/*
+Local variables:
+mode:c
+End:
+*/
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/libiberty.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/libiberty.h
new file mode 100644 (file)
index 0000000..e3eca9d
--- /dev/null
@@ -0,0 +1,662 @@
+/* Function declarations for libiberty.
+
+   Copyright 2001, 2002, 2005, 2007 Free Software Foundation, Inc.
+   
+   Note - certain prototypes declared in this header file are for
+   functions whoes implementation copyright does not belong to the
+   FSF.  Those prototypes are present in this file for reference
+   purposes only and their presence in this file should not construed
+   as an indication of ownership by the FSF of the implementation of
+   those functions in any way or form whatsoever.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor,
+   Boston, MA 02110-1301, USA.
+   
+   Written by Cygnus Support, 1994.
+
+   The libiberty library provides a number of functions which are
+   missing on some operating systems.  We do not declare those here,
+   to avoid conflicts with the system header files on operating
+   systems that do support those functions.  In this file we only
+   declare those functions which are specific to libiberty.  */
+
+#ifndef LIBIBERTY_H
+#define LIBIBERTY_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ansidecl.h"
+
+/* Get a definition for size_t.  */
+#include <stddef.h>
+/* Get a definition for va_list.  */
+#include <stdarg.h>
+
+#include <stdio.h>
+
+/* If the OS supports it, ensure that the supplied stream is setup to
+   avoid any multi-threaded locking.  Otherwise leave the FILE pointer
+   unchanged.  If the stream is NULL do nothing.  */
+
+extern void unlock_stream (FILE *);
+
+/* If the OS supports it, ensure that the standard I/O streams, stdin,
+   stdout and stderr are setup to avoid any multi-threaded locking.
+   Otherwise do nothing.  */
+
+extern void unlock_std_streams (void);
+
+/* Open and return a FILE pointer.  If the OS supports it, ensure that
+   the stream is setup to avoid any multi-threaded locking.  Otherwise
+   return the FILE pointer unchanged.  */
+
+extern FILE *fopen_unlocked (const char *, const char *);
+extern FILE *fdopen_unlocked (int, const char *);
+extern FILE *freopen_unlocked (const char *, const char *, FILE *);
+
+/* Build an argument vector from a string.  Allocates memory using
+   malloc.  Use freeargv to free the vector.  */
+
+extern char **buildargv (const char *) ATTRIBUTE_MALLOC;
+
+/* Free a vector returned by buildargv.  */
+
+extern void freeargv (char **);
+
+/* Duplicate an argument vector. Allocates memory using malloc.  Use
+   freeargv to free the vector.  */
+
+extern char **dupargv (char **) ATTRIBUTE_MALLOC;
+
+/* Expand "@file" arguments in argv.  */
+
+extern void expandargv PARAMS ((int *, char ***));
+
+/* Write argv to an @-file, inserting necessary quoting.  */
+
+extern int writeargv PARAMS ((char **, FILE *));
+
+/* Return the last component of a path name.  Note that we can't use a
+   prototype here because the parameter is declared inconsistently
+   across different systems, sometimes as "char *" and sometimes as
+   "const char *" */
+
+/* HAVE_DECL_* is a three-state macro: undefined, 0 or 1.  If it is
+   undefined, we haven't run the autoconf check so provide the
+   declaration without arguments.  If it is 0, we checked and failed
+   to find the declaration so provide a fully prototyped one.  If it
+   is 1, we found it so don't provide any declaration at all.  */
+#if !HAVE_DECL_BASENAME
+#if defined (__GNU_LIBRARY__ ) || defined (__linux__) || defined (__FreeBSD__) || defined (__OpenBSD__) || defined(__NetBSD__) || defined (__CYGWIN__) || defined (__CYGWIN32__) || defined (__MINGW32__) || defined (HAVE_DECL_BASENAME)
+extern char *basename (const char *);
+#else
+/* Do not allow basename to be used if there is no prototype seen.  We
+   either need to use the above prototype or have one from
+   autoconf which would result in HAVE_DECL_BASENAME being set.  */
+#define basename basename_cannot_be_used_without_a_prototype
+#endif
+#endif
+
+/* A well-defined basename () that is always compiled in.  */
+
+extern const char *lbasename (const char *);
+
+/* A well-defined realpath () that is always compiled in.  */
+
+extern char *lrealpath (const char *);
+
+/* Concatenate an arbitrary number of strings.  You must pass NULL as
+   the last argument of this function, to terminate the list of
+   strings.  Allocates memory using xmalloc.  */
+
+extern char *concat (const char *, ...) ATTRIBUTE_MALLOC ATTRIBUTE_SENTINEL;
+
+/* Concatenate an arbitrary number of strings.  You must pass NULL as
+   the last argument of this function, to terminate the list of
+   strings.  Allocates memory using xmalloc.  The first argument is
+   not one of the strings to be concatenated, but if not NULL is a
+   pointer to be freed after the new string is created, similar to the
+   way xrealloc works.  */
+
+extern char *reconcat (char *, const char *, ...) ATTRIBUTE_MALLOC ATTRIBUTE_SENTINEL;
+
+/* Determine the length of concatenating an arbitrary number of
+   strings.  You must pass NULL as the last argument of this function,
+   to terminate the list of strings.  */
+
+extern unsigned long concat_length (const char *, ...) ATTRIBUTE_SENTINEL;
+
+/* Concatenate an arbitrary number of strings into a SUPPLIED area of
+   memory.  You must pass NULL as the last argument of this function,
+   to terminate the list of strings.  The supplied memory is assumed
+   to be large enough.  */
+
+extern char *concat_copy (char *, const char *, ...) ATTRIBUTE_SENTINEL;
+
+/* Concatenate an arbitrary number of strings into a GLOBAL area of
+   memory.  You must pass NULL as the last argument of this function,
+   to terminate the list of strings.  The supplied memory is assumed
+   to be large enough.  */
+
+extern char *concat_copy2 (const char *, ...) ATTRIBUTE_SENTINEL;
+
+/* This is the global area used by concat_copy2.  */
+
+extern char *libiberty_concat_ptr;
+
+/* Concatenate an arbitrary number of strings.  You must pass NULL as
+   the last argument of this function, to terminate the list of
+   strings.  Allocates memory using alloca.  The arguments are
+   evaluated twice!  */
+#define ACONCAT(ACONCAT_PARAMS) \
+  (libiberty_concat_ptr = (char *) alloca (concat_length ACONCAT_PARAMS + 1), \
+   concat_copy2 ACONCAT_PARAMS)
+
+/* Check whether two file descriptors refer to the same file.  */
+
+extern int fdmatch (int fd1, int fd2);
+
+/* Return the position of the first bit set in the argument.  */
+/* Prototypes vary from system to system, so we only provide a
+   prototype on systems where we know that we need it.  */
+#if defined (HAVE_DECL_FFS) && !HAVE_DECL_FFS
+extern int ffs(int);
+#endif
+
+/* Get the working directory.  The result is cached, so don't call
+   chdir() between calls to getpwd().  */
+
+extern char * getpwd (void);
+
+/* Get the current time.  */
+/* Prototypes vary from system to system, so we only provide a
+   prototype on systems where we know that we need it.  */
+#ifdef __MINGW32__
+/* Forward declaration to avoid #include <sys/time.h>.   */
+struct timeval;
+extern int gettimeofday (struct timeval *, void *); 
+#endif
+
+/* Get the amount of time the process has run, in microseconds.  */
+
+extern long get_run_time (void);
+
+/* Generate a relocated path to some installation directory.  Allocates
+   return value using malloc.  */
+
+extern char *make_relative_prefix (const char *, const char *,
+                                   const char *) ATTRIBUTE_MALLOC;
+
+/* Generate a relocated path to some installation directory without
+   attempting to follow any soft links.  Allocates
+   return value using malloc.  */
+
+extern char *make_relative_prefix_ignore_links (const char *, const char *,
+                                               const char *) ATTRIBUTE_MALLOC;
+
+/* Choose a temporary directory to use for scratch files.  */
+
+extern char *choose_temp_base (void) ATTRIBUTE_MALLOC;
+
+/* Return a temporary file name or NULL if unable to create one.  */
+
+extern char *make_temp_file (const char *) ATTRIBUTE_MALLOC;
+
+/* Remove a link to a file unless it is special. */
+
+extern int unlink_if_ordinary (const char *);
+
+/* Allocate memory filled with spaces.  Allocates using malloc.  */
+
+extern const char *spaces (int count);
+
+/* Return the maximum error number for which strerror will return a
+   string.  */
+
+extern int errno_max (void);
+
+/* Return the name of an errno value (e.g., strerrno (EINVAL) returns
+   "EINVAL").  */
+
+extern const char *strerrno (int);
+
+/* Given the name of an errno value, return the value.  */
+
+extern int strtoerrno (const char *);
+
+/* ANSI's strerror(), but more robust.  */
+
+extern char *xstrerror (int);
+
+/* Return the maximum signal number for which strsignal will return a
+   string.  */
+
+extern int signo_max (void);
+
+/* Return a signal message string for a signal number
+   (e.g., strsignal (SIGHUP) returns something like "Hangup").  */
+/* This is commented out as it can conflict with one in system headers.
+   We still document its existence though.  */
+
+/*extern const char *strsignal (int);*/
+
+/* Return the name of a signal number (e.g., strsigno (SIGHUP) returns
+   "SIGHUP").  */
+
+extern const char *strsigno (int);
+
+/* Given the name of a signal, return its number.  */
+
+extern int strtosigno (const char *);
+
+/* Register a function to be run by xexit.  Returns 0 on success.  */
+
+extern int xatexit (void (*fn) (void));
+
+/* Exit, calling all the functions registered with xatexit.  */
+
+extern void xexit (int status) ATTRIBUTE_NORETURN;
+
+/* Set the program name used by xmalloc.  */
+
+extern void xmalloc_set_program_name (const char *);
+
+/* Report an allocation failure.  */
+extern void xmalloc_failed (size_t) ATTRIBUTE_NORETURN;
+
+/* Allocate memory without fail.  If malloc fails, this will print a
+   message to stderr (using the name set by xmalloc_set_program_name,
+   if any) and then call xexit.  */
+
+extern void *xmalloc (size_t) ATTRIBUTE_MALLOC;
+
+/* Reallocate memory without fail.  This works like xmalloc.  Note,
+   realloc type functions are not suitable for attribute malloc since
+   they may return the same address across multiple calls. */
+
+extern void *xrealloc (void *, size_t);
+
+/* Allocate memory without fail and set it to zero.  This works like
+   xmalloc.  */
+
+extern void *xcalloc (size_t, size_t) ATTRIBUTE_MALLOC;
+
+/* Copy a string into a memory buffer without fail.  */
+
+extern char *xstrdup (const char *) ATTRIBUTE_MALLOC;
+
+/* Copy at most N characters from string into a buffer without fail.  */
+
+extern char *xstrndup (const char *, size_t) ATTRIBUTE_MALLOC;
+
+/* Copy an existing memory buffer to a new memory buffer without fail.  */
+
+extern void *xmemdup (const void *, size_t, size_t) ATTRIBUTE_MALLOC;
+
+/* Physical memory routines.  Return values are in BYTES.  */
+extern double physmem_total (void);
+extern double physmem_available (void);
+
+
+/* These macros provide a K&R/C89/C++-friendly way of allocating structures
+   with nice encapsulation.  The XDELETE*() macros are technically
+   superfluous, but provided here for symmetry.  Using them consistently
+   makes it easier to update client code to use different allocators such
+   as new/delete and new[]/delete[].  */
+
+/* Scalar allocators.  */
+
+#define XALLOCA(T)             ((T *) alloca (sizeof (T)))
+#define XNEW(T)                        ((T *) xmalloc (sizeof (T)))
+#define XCNEW(T)               ((T *) xcalloc (1, sizeof (T)))
+#define XDUP(T, P)             ((T *) xmemdup ((P), sizeof (T), sizeof (T)))
+#define XDELETE(P)             free ((void*) (P))
+
+/* Array allocators.  */
+
+#define XALLOCAVEC(T, N)       ((T *) alloca (sizeof (T) * (N)))
+#define XNEWVEC(T, N)          ((T *) xmalloc (sizeof (T) * (N)))
+#define XCNEWVEC(T, N)         ((T *) xcalloc ((N), sizeof (T)))
+#define XDUPVEC(T, P, N)       ((T *) xmemdup ((P), sizeof (T) * (N), sizeof (T) * (N)))
+#define XRESIZEVEC(T, P, N)    ((T *) xrealloc ((void *) (P), sizeof (T) * (N)))
+#define XDELETEVEC(P)          free ((void*) (P))
+
+/* Allocators for variable-sized structures and raw buffers.  */
+
+#define XALLOCAVAR(T, S)       ((T *) alloca ((S)))
+#define XNEWVAR(T, S)          ((T *) xmalloc ((S)))
+#define XCNEWVAR(T, S)         ((T *) xcalloc (1, (S)))
+#define XDUPVAR(T, P, S1, S2)  ((T *) xmemdup ((P), (S1), (S2)))
+#define XRESIZEVAR(T, P, S)    ((T *) xrealloc ((P), (S)))
+
+/* Type-safe obstack allocator.  */
+
+#define XOBNEW(O, T)           ((T *) obstack_alloc ((O), sizeof (T)))
+#define XOBNEWVEC(O, T, N)     ((T *) obstack_alloc ((O), sizeof (T) * (N)))
+#define XOBNEWVAR(O, T, S)     ((T *) obstack_alloc ((O), (S)))
+#define XOBFINISH(O, T)         ((T) obstack_finish ((O)))
+
+/* hex character manipulation routines */
+
+#define _hex_array_size 256
+#define _hex_bad       99
+extern const unsigned char _hex_value[_hex_array_size];
+extern void hex_init (void);
+#define hex_p(c)       (hex_value (c) != _hex_bad)
+/* If you change this, note well: Some code relies on side effects in
+   the argument being performed exactly once.  */
+#define hex_value(c)   ((unsigned int) _hex_value[(unsigned char) (c)])
+
+/* Flags for pex_init.  These are bits to be or'ed together.  */
+
+/* Record subprocess times, if possible.  */
+#define PEX_RECORD_TIMES       0x1
+
+/* Use pipes for communication between processes, if possible.  */
+#define PEX_USE_PIPES          0x2
+
+/* Save files used for communication between processes.  */
+#define PEX_SAVE_TEMPS         0x4
+
+/* Prepare to execute one or more programs, with standard output of
+   each program fed to standard input of the next.
+   FLAGS       As above.
+   PNAME       The name of the program to report in error messages.
+   TEMPBASE    A base name to use for temporary files; may be NULL to
+               use a random name.
+   Returns NULL on error.  */
+
+extern struct pex_obj *pex_init (int flags, const char *pname,
+                                const char *tempbase);
+
+/* Flags for pex_run.  These are bits to be or'ed together.  */
+
+/* Last program in pipeline.  Standard output of program goes to
+   OUTNAME, or, if OUTNAME is NULL, to standard output of caller.  Do
+   not set this if you want to call pex_read_output.  After this is
+   set, pex_run may no longer be called with the same struct
+   pex_obj.  */
+#define PEX_LAST               0x1
+
+/* Search for program in executable search path.  */
+#define PEX_SEARCH             0x2
+
+/* OUTNAME is a suffix.  */
+#define PEX_SUFFIX             0x4
+
+/* Send program's standard error to standard output.  */
+#define PEX_STDERR_TO_STDOUT   0x8
+
+/* Input file should be opened in binary mode.  This flag is ignored
+   on Unix.  */
+#define PEX_BINARY_INPUT       0x10
+
+/* Output file should be opened in binary mode.  This flag is ignored
+   on Unix.  For proper behaviour PEX_BINARY_INPUT and
+   PEX_BINARY_OUTPUT have to match appropriately--i.e., a call using
+   PEX_BINARY_OUTPUT should be followed by a call using
+   PEX_BINARY_INPUT.  */
+#define PEX_BINARY_OUTPUT      0x20
+
+/* Capture stderr to a pipe.  The output can be read by
+   calling pex_read_err and reading from the returned
+   FILE object.  This flag may be specified only for
+   the last program in a pipeline.  
+
+   This flag is supported only on Unix and Windows.  */
+#define PEX_STDERR_TO_PIPE     0x40
+
+/* Capture stderr in binary mode.  This flag is ignored
+   on Unix.  */
+#define PEX_BINARY_ERROR       0x80
+
+
+/* Execute one program.  Returns NULL on success.  On error returns an
+   error string (typically just the name of a system call); the error
+   string is statically allocated.
+
+   OBJ         Returned by pex_init.
+
+   FLAGS       As above.
+
+   EXECUTABLE  The program to execute.
+
+   ARGV                NULL terminated array of arguments to pass to the program.
+
+   OUTNAME     Sets the output file name as follows:
+
+               PEX_SUFFIX set (OUTNAME may not be NULL):
+                 TEMPBASE parameter to pex_init not NULL:
+                   Output file name is the concatenation of TEMPBASE
+                   and OUTNAME.
+                 TEMPBASE is NULL:
+                   Output file name is a random file name ending in
+                   OUTNAME.
+               PEX_SUFFIX not set:
+                 OUTNAME not NULL:
+                   Output file name is OUTNAME.
+                 OUTNAME NULL, TEMPBASE not NULL:
+                   Output file name is randomly chosen using
+                   TEMPBASE.
+                 OUTNAME NULL, TEMPBASE NULL:
+                   Output file name is randomly chosen.
+
+               If PEX_LAST is not set, the output file name is the
+               name to use for a temporary file holding stdout, if
+               any (there will not be a file if PEX_USE_PIPES is set
+               and the system supports pipes).  If a file is used, it
+               will be removed when no longer needed unless
+               PEX_SAVE_TEMPS is set.
+
+               If PEX_LAST is set, and OUTNAME is not NULL, standard
+               output is written to the output file name.  The file
+               will not be removed.  If PEX_LAST and PEX_SUFFIX are
+               both set, TEMPBASE may not be NULL.
+
+   ERRNAME     If not NULL, this is the name of a file to which
+               standard error is written.  If NULL, standard error of
+               the program is standard error of the caller.
+
+   ERR         On an error return, *ERR is set to an errno value, or
+               to 0 if there is no relevant errno.
+*/
+
+extern const char *pex_run (struct pex_obj *obj, int flags,
+                           const char *executable, char * const *argv,
+                           const char *outname, const char *errname,
+                           int *err);
+
+/* As for pex_run (), but takes an extra parameter to enable the
+   environment for the child process to be specified.
+
+   ENV         The environment for the child process, specified as
+               an array of character pointers.  Each element of the
+               array should point to a string of the form VAR=VALUE,
+                with the exception of the last element which must be
+                a null pointer.
+*/
+
+extern const char *pex_run_in_environment (struct pex_obj *obj, int flags,
+                                          const char *executable,
+                                           char * const *argv,
+                                           char * const *env,
+                                          const char *outname,
+                                          const char *errname, int *err);
+
+/* Return a stream for a temporary file to pass to the first program
+   in the pipeline as input.  The file name is chosen as for pex_run.
+   pex_run closes the file automatically; don't close it yourself.  */
+
+extern FILE *pex_input_file (struct pex_obj *obj, int flags,
+                             const char *in_name);
+
+/* Return a stream for a pipe connected to the standard input of the
+   first program in the pipeline.  You must have passed
+   `PEX_USE_PIPES' to `pex_init'.  Close the returned stream
+   yourself.  */
+
+extern FILE *pex_input_pipe (struct pex_obj *obj, int binary);
+
+/* Read the standard output of the last program to be executed.
+   pex_run can not be called after this.  BINARY should be non-zero if
+   the file should be opened in binary mode; this is ignored on Unix.
+   Returns NULL on error.  Don't call fclose on the returned FILE; it
+   will be closed by pex_free.  */
+
+extern FILE *pex_read_output (struct pex_obj *, int binary);
+
+/* Read the standard error of the last program to be executed.
+   pex_run can not be called after this.  BINARY should be non-zero if
+   the file should be opened in binary mode; this is ignored on Unix.
+   Returns NULL on error.  Don't call fclose on the returned FILE; it
+   will be closed by pex_free.  */
+
+extern FILE *pex_read_err (struct pex_obj *, int binary);
+
+/* Return exit status of all programs in VECTOR.  COUNT indicates the
+   size of VECTOR.  The status codes in the vector are in the order of
+   the calls to pex_run.  Returns 0 on error, 1 on success.  */
+
+extern int pex_get_status (struct pex_obj *, int count, int *vector);
+
+/* Return times of all programs in VECTOR.  COUNT indicates the size
+   of VECTOR.  struct pex_time is really just struct timeval, but that
+   is not portable to all systems.  Returns 0 on error, 1 on
+   success.  */
+
+struct pex_time
+{
+  unsigned long user_seconds;
+  unsigned long user_microseconds;
+  unsigned long system_seconds;
+  unsigned long system_microseconds;
+};
+
+extern int pex_get_times (struct pex_obj *, int count,
+                         struct pex_time *vector);
+
+/* Clean up a pex_obj.  If you have not called pex_get_times or
+   pex_get_status, this will try to kill the subprocesses.  */
+
+extern void pex_free (struct pex_obj *);
+
+/* Just execute one program.  Return value is as for pex_run.
+   FLAGS       Combination of PEX_SEARCH and PEX_STDERR_TO_STDOUT.
+   EXECUTABLE  As for pex_run.
+   ARGV                As for pex_run.
+   PNAME       As for pex_init.
+   OUTNAME     As for pex_run when PEX_LAST is set.
+   ERRNAME     As for pex_run.
+   STATUS      Set to exit status on success.
+   ERR         As for pex_run.
+*/
+
+extern const char *pex_one (int flags, const char *executable,
+                           char * const *argv, const char *pname,
+                           const char *outname, const char *errname,
+                           int *status, int *err);
+
+/* pexecute and pwait are the old pexecute interface, still here for
+   backward compatibility.  Don't use these for new code.  Instead,
+   use pex_init/pex_run/pex_get_status/pex_free, or pex_one.  */
+
+/* Definitions used by the pexecute routine.  */
+
+#define PEXECUTE_FIRST   1
+#define PEXECUTE_LAST    2
+#define PEXECUTE_ONE     (PEXECUTE_FIRST + PEXECUTE_LAST)
+#define PEXECUTE_SEARCH  4
+#define PEXECUTE_VERBOSE 8
+
+/* Execute a program.  */
+
+extern int pexecute (const char *, char * const *, const char *,
+                     const char *, char **, char **, int);
+
+/* Wait for pexecute to finish.  */
+
+extern int pwait (int, int *, int);
+
+#if !HAVE_DECL_ASPRINTF
+/* Like sprintf but provides a pointer to malloc'd storage, which must
+   be freed by the caller.  */
+
+extern int asprintf (char **, const char *, ...) ATTRIBUTE_PRINTF_2;
+#endif
+
+#if !HAVE_DECL_VASPRINTF
+/* Like vsprintf but provides a pointer to malloc'd storage, which
+   must be freed by the caller.  */
+
+extern int vasprintf (char **, const char *, va_list) ATTRIBUTE_PRINTF(2,0);
+#endif
+
+#if defined(HAVE_DECL_SNPRINTF) && !HAVE_DECL_SNPRINTF
+/* Like sprintf but prints at most N characters.  */
+extern int snprintf (char *, size_t, const char *, ...) ATTRIBUTE_PRINTF_3;
+#endif
+
+#if defined(HAVE_DECL_VSNPRINTF) && !HAVE_DECL_VSNPRINTF
+/* Like vsprintf but prints at most N characters.  */
+extern int vsnprintf (char *, size_t, const char *, va_list) ATTRIBUTE_PRINTF(3,0);
+#endif
+
+#if defined(HAVE_DECL_STRVERSCMP) && !HAVE_DECL_STRVERSCMP
+/* Compare version strings.  */
+extern int strverscmp (const char *, const char *);
+#endif
+
+#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
+
+/* Drastically simplified alloca configurator.  If we're using GCC,
+   we use __builtin_alloca; otherwise we use the C alloca.  The C
+   alloca is always available.  You can override GCC by defining
+   USE_C_ALLOCA yourself.  The canonical autoconf macro C_ALLOCA is
+   also set/unset as it is often used to indicate whether code needs
+   to call alloca(0).  */
+extern void *C_alloca (size_t) ATTRIBUTE_MALLOC;
+#undef alloca
+#if GCC_VERSION >= 2000 && !defined USE_C_ALLOCA
+# define alloca(x) __builtin_alloca(x)
+# undef C_ALLOCA
+# define ASTRDUP(X) \
+  (__extension__ ({ const char *const libiberty_optr = (X); \
+   const unsigned long libiberty_len = strlen (libiberty_optr) + 1; \
+   char *const libiberty_nptr = (char *const) alloca (libiberty_len); \
+   (char *) memcpy (libiberty_nptr, libiberty_optr, libiberty_len); }))
+#else
+# define alloca(x) C_alloca(x)
+# undef USE_C_ALLOCA
+# define USE_C_ALLOCA 1
+# undef C_ALLOCA
+# define C_ALLOCA 1
+extern const char *libiberty_optr;
+extern char *libiberty_nptr;
+extern unsigned long libiberty_len;
+# define ASTRDUP(X) \
+  (libiberty_optr = (X), \
+   libiberty_len = strlen (libiberty_optr) + 1, \
+   libiberty_nptr = (char *) alloca (libiberty_len), \
+   (char *) memcpy (libiberty_nptr, libiberty_optr, libiberty_len))
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* ! defined (LIBIBERTY_H) */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/line-map.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/line-map.h
new file mode 100644 (file)
index 0000000..5392145
--- /dev/null
@@ -0,0 +1,194 @@
+/* Map logical line numbers to (source file, line number) pairs.
+   Copyright (C) 2001, 2003, 2004, 2007, 2009
+   Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 3, or (at your option) any
+later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.
+
+ In other words, you are welcome to use, share and improve this program.
+ You are forbidden to forbid anyone else to use, share and improve
+ what you give them.   Help stamp out software-hoarding!  */
+
+#ifndef LIBCPP_LINE_MAP_H
+#define LIBCPP_LINE_MAP_H
+
+#ifndef GTY
+#define GTY(x) /* nothing */
+#endif
+
+/* Reason for adding a line change with add_line_map ().  LC_ENTER is
+   when including a new file, e.g. a #include directive in C.
+   LC_LEAVE is when reaching a file's end.  LC_RENAME is when a file
+   name or line number changes for neither of the above reasons
+   (e.g. a #line directive in C).  */
+enum lc_reason {LC_ENTER = 0, LC_LEAVE, LC_RENAME};
+
+/* The type of line numbers.  */
+typedef unsigned int linenum_type;
+
+/* A logical line/column number, i.e. an "index" into a line_map.  */
+/* Long-term, we want to use this to replace struct location_s (in input.h),
+   and effectively typedef source_location location_t.  */
+typedef unsigned int source_location;
+
+/* Memory allocation function typedef.  Works like xrealloc.  */
+typedef void *(*line_map_realloc) (void *, size_t);
+
+/* Physical source file TO_FILE at line TO_LINE at column 0 is represented
+   by the logical START_LOCATION.  TO_LINE+L at column C is represented by
+   START_LOCATION+(L*(1<<column_bits))+C, as long as C<(1<<column_bits),
+   and the result_location is less than the next line_map's start_location.
+   (The top line is line 1 and the leftmost column is column 1; line/column 0
+   means "entire file/line" or "unknown line/column" or "not applicable".)
+   INCLUDED_FROM is an index into the set that gives the line mapping
+   at whose end the current one was included.  File(s) at the bottom
+   of the include stack have this set to -1.  REASON is the reason for
+   creation of this line map, SYSP is one for a system header, two for
+   a C system header file that therefore needs to be extern "C"
+   protected in C++, and zero otherwise.  */
+struct line_map GTY(())
+{
+  const char *to_file;
+  linenum_type to_line;
+  source_location start_location;
+  int included_from;
+  ENUM_BITFIELD (lc_reason) reason : CHAR_BIT;
+  /* The sysp field isn't really needed now that it's in cpp_buffer.  */
+  unsigned char sysp;
+  /* Number of the low-order source_location bits used for a column number.  */
+  unsigned int column_bits : 8;
+};
+
+/* A set of chronological line_map structures.  */
+struct line_maps GTY(())
+{
+  struct line_map * GTY ((length ("%h.used"))) maps;
+  unsigned int allocated;
+  unsigned int used;
+
+  unsigned int cache;
+
+  /* The most recently listed include stack, if any, starts with
+     LAST_LISTED as the topmost including file.  -1 indicates nothing
+     has been listed yet.  */
+  int last_listed;
+
+  /* Depth of the include stack, including the current file.  */
+  unsigned int depth;
+
+  /* If true, prints an include trace a la -H.  */
+  bool trace_includes;
+
+  /* Highest source_location "given out".  */
+  source_location highest_location;
+
+  /* Start of line of highest source_location "given out".  */
+  source_location highest_line;
+
+  /* The maximum column number we can quickly allocate.  Higher numbers
+     may require allocating a new line_map.  */
+  unsigned int max_column_hint;
+
+  /* If non-null, the allocator to use when resizing 'maps'.  If null,
+     xrealloc is used.  */
+  line_map_realloc reallocator;
+};
+
+/* Initialize a line map set.  */
+extern void linemap_init (struct line_maps *);
+
+/* Free a line map set.  */
+extern void linemap_free (struct line_maps *);
+
+/* Check for and warn about line_maps entered but not exited.  */
+
+extern void linemap_check_files_exited (struct line_maps *);
+
+/* Return a source_location for the start (i.e. column==0) of
+   (physical) line TO_LINE in the current source file (as in the
+   most recent linemap_add).   MAX_COLUMN_HINT is the highest column
+   number we expect to use in this line (but it does not change
+   the highest_location).  */
+
+extern source_location linemap_line_start
+(struct line_maps *set, linenum_type to_line,  unsigned int max_column_hint);
+
+/* Add a mapping of logical source line to physical source file and
+   line number.
+
+   The text pointed to by TO_FILE must have a lifetime
+   at least as long as the final call to lookup_line ().  An empty
+   TO_FILE means standard input.  If reason is LC_LEAVE, and
+   TO_FILE is NULL, then TO_FILE, TO_LINE and SYSP are given their
+   natural values considering the file we are returning to.
+
+   A call to this function can relocate the previous set of
+   maps, so any stored line_map pointers should not be used.  */
+extern const struct line_map *linemap_add
+  (struct line_maps *, enum lc_reason, unsigned int sysp,
+   const char *to_file, linenum_type to_line);
+
+/* Given a logical line, returns the map from which the corresponding
+   (source file, line) pair can be deduced.  */
+extern const struct line_map *linemap_lookup
+  (struct line_maps *, source_location);
+
+/* Print the file names and line numbers of the #include commands
+   which led to the map MAP, if any, to stderr.  Nothing is output if
+   the most recently listed stack is the same as the current one.  */
+extern void linemap_print_containing_files (struct line_maps *,
+                                           const struct line_map *);
+
+/* Converts a map and a source_location to source line.  */
+#define SOURCE_LINE(MAP, LOC) \
+  ((((LOC) - (MAP)->start_location) >> (MAP)->column_bits) + (MAP)->to_line)
+
+#define SOURCE_COLUMN(MAP, LOC) \
+  (((LOC) - (MAP)->start_location) & ((1 << (MAP)->column_bits) - 1))
+
+/* Returns the last source line within a map.  This is the (last) line
+   of the #include, or other directive, that caused a map change.  */
+#define LAST_SOURCE_LINE(MAP) \
+  SOURCE_LINE (MAP, LAST_SOURCE_LINE_LOCATION (MAP))
+#define LAST_SOURCE_LINE_LOCATION(MAP) \
+  ((((MAP)[1].start_location - 1 - (MAP)->start_location) \
+    & ~((1 << (MAP)->column_bits) - 1))                          \
+   + (MAP)->start_location)
+
+/* Returns the map a given map was included from.  */
+#define INCLUDED_FROM(SET, MAP) (&(SET)->maps[(MAP)->included_from])
+
+/* Nonzero if the map is at the bottom of the include stack.  */
+#define MAIN_FILE_P(MAP) ((MAP)->included_from < 0)
+
+/* Set LOC to a source position that is the same line as the most recent
+   linemap_line_start, but with the specified TO_COLUMN column number.  */
+
+#define LINEMAP_POSITION_FOR_COLUMN(LOC, SET, TO_COLUMN) do { \
+  unsigned int to_column = (TO_COLUMN); \
+  struct line_maps *set = (SET); \
+  if (__builtin_expect (to_column >= set->max_column_hint, 0)) \
+    (LOC) = linemap_position_for_column (set, to_column); \
+  else { \
+    source_location r = set->highest_line; \
+    r = r + to_column; \
+    if (r >= set->highest_location) \
+      set->highest_location = r; \
+    (LOC) = r;                  \
+  }} while (0)
+    
+
+extern source_location
+linemap_position_for_column (struct line_maps *set, unsigned int to_column);
+#endif /* !LIBCPP_LINE_MAP_H  */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/machmode.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/machmode.h
new file mode 100644 (file)
index 0000000..7d50b46
--- /dev/null
@@ -0,0 +1,272 @@
+/* Machine mode definitions for GCC; included by rtl.h and tree.h.
+   Copyright (C) 1991, 1993, 1994, 1996, 1998, 1999, 2000, 2001, 2003,
+   2007, 2008  Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef HAVE_MACHINE_MODES
+#define HAVE_MACHINE_MODES
+
+/* Make an enum class that gives all the machine modes.  */
+#include "insn-modes.h"
+
+/* Get the name of mode MODE as a string.  */
+
+extern const char * const mode_name[NUM_MACHINE_MODES];
+#define GET_MODE_NAME(MODE)  mode_name[MODE]
+
+/* Mode classes.  */
+
+#include "mode-classes.def"
+#define DEF_MODE_CLASS(M) M
+enum mode_class { MODE_CLASSES, MAX_MODE_CLASS };
+#undef DEF_MODE_CLASS
+#undef MODE_CLASSES
+
+/* Get the general kind of object that mode MODE represents
+   (integer, floating, complex, etc.)  */
+
+extern const unsigned char mode_class[NUM_MACHINE_MODES];
+#define GET_MODE_CLASS(MODE)  mode_class[MODE]
+
+/* Nonzero if MODE is an integral 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)
+
+/* Nonzero if MODE is a floating-point mode.  */
+#define FLOAT_MODE_P(MODE)             \
+  (GET_MODE_CLASS (MODE) == MODE_FLOAT \
+   || GET_MODE_CLASS (MODE) == MODE_DECIMAL_FLOAT \
+   || GET_MODE_CLASS (MODE) == MODE_COMPLEX_FLOAT \
+   || GET_MODE_CLASS (MODE) == MODE_VECTOR_FLOAT)
+
+/* Nonzero if MODE is a complex mode.  */
+#define COMPLEX_MODE_P(MODE)                   \
+  (GET_MODE_CLASS (MODE) == MODE_COMPLEX_INT   \
+   || GET_MODE_CLASS (MODE) == MODE_COMPLEX_FLOAT)
+
+/* Nonzero if MODE is a vector mode.  */
+#define VECTOR_MODE_P(MODE)                    \
+  (GET_MODE_CLASS (MODE) == MODE_VECTOR_INT    \
+   || GET_MODE_CLASS (MODE) == MODE_VECTOR_FLOAT       \
+   || GET_MODE_CLASS (MODE) == MODE_VECTOR_FRACT       \
+   || GET_MODE_CLASS (MODE) == MODE_VECTOR_UFRACT      \
+   || GET_MODE_CLASS (MODE) == MODE_VECTOR_ACCUM       \
+   || GET_MODE_CLASS (MODE) == MODE_VECTOR_UACCUM)
+
+/* Nonzero if MODE is a scalar integral mode.  */
+#define SCALAR_INT_MODE_P(MODE)                        \
+  (GET_MODE_CLASS (MODE) == MODE_INT           \
+   || GET_MODE_CLASS (MODE) == MODE_PARTIAL_INT)
+
+/* Nonzero if MODE is a scalar floating point mode.  */
+#define SCALAR_FLOAT_MODE_P(MODE)              \
+  (GET_MODE_CLASS (MODE) == MODE_FLOAT         \
+   || GET_MODE_CLASS (MODE) == MODE_DECIMAL_FLOAT)
+
+/* Nonzero if MODE is a decimal floating point mode.  */
+#define DECIMAL_FLOAT_MODE_P(MODE)             \
+  (GET_MODE_CLASS (MODE) == MODE_DECIMAL_FLOAT)
+
+/* Nonzero if MODE is a scalar fract mode.  */
+#define SCALAR_FRACT_MODE_P(MODE)      \
+  (GET_MODE_CLASS (MODE) == MODE_FRACT)
+
+/* Nonzero if MODE is a scalar ufract mode.  */
+#define SCALAR_UFRACT_MODE_P(MODE)     \
+  (GET_MODE_CLASS (MODE) == MODE_UFRACT)
+
+/* Nonzero if MODE is a scalar fract or ufract mode.  */
+#define ALL_SCALAR_FRACT_MODE_P(MODE)  \
+  (SCALAR_FRACT_MODE_P (MODE) || SCALAR_UFRACT_MODE_P (MODE))
+
+/* Nonzero if MODE is a scalar accum mode.  */
+#define SCALAR_ACCUM_MODE_P(MODE)      \
+  (GET_MODE_CLASS (MODE) == MODE_ACCUM)
+
+/* Nonzero if MODE is a scalar uaccum mode.  */
+#define SCALAR_UACCUM_MODE_P(MODE)     \
+  (GET_MODE_CLASS (MODE) == MODE_UACCUM)
+
+/* Nonzero if MODE is a scalar accum or uaccum mode.  */
+#define ALL_SCALAR_ACCUM_MODE_P(MODE)  \
+  (SCALAR_ACCUM_MODE_P (MODE) || SCALAR_UACCUM_MODE_P (MODE))
+
+/* Nonzero if MODE is a scalar fract or accum mode.  */
+#define SIGNED_SCALAR_FIXED_POINT_MODE_P(MODE) \
+  (SCALAR_FRACT_MODE_P (MODE) || SCALAR_ACCUM_MODE_P (MODE))
+
+/* Nonzero if MODE is a scalar ufract or uaccum mode.  */
+#define UNSIGNED_SCALAR_FIXED_POINT_MODE_P(MODE)       \
+  (SCALAR_UFRACT_MODE_P (MODE) || SCALAR_UACCUM_MODE_P (MODE))
+
+/* Nonzero if MODE is a scalar fract, ufract, accum or uaccum mode.  */
+#define ALL_SCALAR_FIXED_POINT_MODE_P(MODE)    \
+  (SIGNED_SCALAR_FIXED_POINT_MODE_P (MODE)     \
+   || UNSIGNED_SCALAR_FIXED_POINT_MODE_P (MODE))
+
+/* Nonzero if MODE is a scalar/vector fract mode.  */
+#define FRACT_MODE_P(MODE)             \
+  (GET_MODE_CLASS (MODE) == MODE_FRACT \
+   || GET_MODE_CLASS (MODE) == MODE_VECTOR_FRACT)
+
+/* Nonzero if MODE is a scalar/vector ufract mode.  */
+#define UFRACT_MODE_P(MODE)            \
+  (GET_MODE_CLASS (MODE) == MODE_UFRACT        \
+   || GET_MODE_CLASS (MODE) == MODE_VECTOR_UFRACT)
+
+/* Nonzero if MODE is a scalar/vector fract or ufract mode.  */
+#define ALL_FRACT_MODE_P(MODE)         \
+  (FRACT_MODE_P (MODE) || UFRACT_MODE_P (MODE))
+
+/* Nonzero if MODE is a scalar/vector accum mode.  */
+#define ACCUM_MODE_P(MODE)             \
+  (GET_MODE_CLASS (MODE) == MODE_ACCUM \
+   || GET_MODE_CLASS (MODE) == MODE_VECTOR_ACCUM)
+
+/* Nonzero if MODE is a scalar/vector uaccum mode.  */
+#define UACCUM_MODE_P(MODE)            \
+  (GET_MODE_CLASS (MODE) == MODE_UACCUM        \
+   || GET_MODE_CLASS (MODE) == MODE_VECTOR_UACCUM)
+
+/* Nonzero if MODE is a scalar/vector accum or uaccum mode.  */
+#define ALL_ACCUM_MODE_P(MODE)         \
+  (ACCUM_MODE_P (MODE) || UACCUM_MODE_P (MODE))
+
+/* Nonzero if MODE is a scalar/vector fract or accum mode.  */
+#define SIGNED_FIXED_POINT_MODE_P(MODE)                \
+  (FRACT_MODE_P (MODE) || ACCUM_MODE_P (MODE))
+
+/* Nonzero if MODE is a scalar/vector ufract or uaccum mode.  */
+#define UNSIGNED_FIXED_POINT_MODE_P(MODE)      \
+  (UFRACT_MODE_P (MODE) || UACCUM_MODE_P (MODE))
+
+/* Nonzero if MODE is a scalar/vector fract, ufract, accum or uaccum mode.  */
+#define ALL_FIXED_POINT_MODE_P(MODE)           \
+  (SIGNED_FIXED_POINT_MODE_P (MODE)            \
+   || UNSIGNED_FIXED_POINT_MODE_P (MODE))
+
+/* Nonzero if CLASS modes can be widened.  */
+#define CLASS_HAS_WIDER_MODES_P(CLASS)         \
+  (CLASS == MODE_INT                           \
+   || CLASS == MODE_FLOAT                      \
+   || CLASS == MODE_DECIMAL_FLOAT              \
+   || CLASS == MODE_COMPLEX_FLOAT              \
+   || CLASS == MODE_FRACT                      \
+   || CLASS == MODE_UFRACT                     \
+   || CLASS == MODE_ACCUM                      \
+   || CLASS == MODE_UACCUM)
+
+/* Get the size in bytes and bits of an object of mode MODE.  */
+
+extern CONST_MODE_SIZE unsigned char mode_size[NUM_MACHINE_MODES];
+#define GET_MODE_SIZE(MODE)    ((unsigned short) mode_size[MODE])
+#define GET_MODE_BITSIZE(MODE) ((unsigned short) (GET_MODE_SIZE (MODE) * BITS_PER_UNIT))
+
+/* Get the number of value bits of an object of mode MODE.  */
+extern const unsigned short mode_precision[NUM_MACHINE_MODES];
+#define GET_MODE_PRECISION(MODE)  mode_precision[MODE]
+
+/* Get the number of integral bits of an object of mode MODE.  */
+extern CONST_MODE_IBIT unsigned char mode_ibit[NUM_MACHINE_MODES];
+#define GET_MODE_IBIT(MODE) mode_ibit[MODE]
+
+/* Get the number of fractional bits of an object of mode MODE.  */
+extern CONST_MODE_FBIT unsigned char mode_fbit[NUM_MACHINE_MODES];
+#define GET_MODE_FBIT(MODE) mode_fbit[MODE]
+
+/* Get a bitmask containing 1 for all bits in a word
+   that fit within mode MODE.  */
+
+extern const unsigned HOST_WIDE_INT mode_mask_array[NUM_MACHINE_MODES];
+
+#define GET_MODE_MASK(MODE) mode_mask_array[MODE]
+
+/* Return the mode of the inner elements in a vector.  */
+
+extern const unsigned char mode_inner[NUM_MACHINE_MODES];
+#define GET_MODE_INNER(MODE) ((enum machine_mode) mode_inner[MODE])
+
+/* Get the size in bytes of the basic parts of an object of mode MODE.  */
+
+#define GET_MODE_UNIT_SIZE(MODE)               \
+  (GET_MODE_INNER (MODE) == VOIDmode           \
+   ? GET_MODE_SIZE (MODE)                      \
+   : GET_MODE_SIZE (GET_MODE_INNER (MODE)))
+
+/* Get the number of units in the object.  */
+
+extern const unsigned char mode_nunits[NUM_MACHINE_MODES];
+#define GET_MODE_NUNITS(MODE)  mode_nunits[MODE]
+
+/* Get the next wider natural mode (eg, QI -> HI -> SI -> DI -> TI).  */
+
+extern const unsigned char mode_wider[NUM_MACHINE_MODES];
+#define GET_MODE_WIDER_MODE(MODE) mode_wider[MODE]
+
+extern const unsigned char mode_2xwider[NUM_MACHINE_MODES];
+#define GET_MODE_2XWIDER_MODE(MODE) mode_2xwider[MODE]
+
+/* Return the mode for data of a given size SIZE and mode class CLASS.
+   If LIMIT is nonzero, then don't use modes bigger than MAX_FIXED_MODE_SIZE.
+   The value is BLKmode if no other mode is found.  */
+
+extern enum machine_mode mode_for_size (unsigned int, enum mode_class, int);
+
+/* Similar, but find the smallest mode for a given width.  */
+
+extern enum machine_mode smallest_mode_for_size (unsigned int,
+                                                enum mode_class);
+
+
+/* Return an integer mode of the exact same size as the input mode,
+   or BLKmode on failure.  */
+
+extern enum machine_mode int_mode_for_mode (enum machine_mode);
+
+/* Find the best mode to use to access a bit field.  */
+
+extern enum machine_mode get_best_mode (int, int, unsigned int,
+                                       enum machine_mode, int);
+
+/* Determine alignment, 1<=result<=BIGGEST_ALIGNMENT.  */
+
+extern CONST_MODE_BASE_ALIGN unsigned char mode_base_align[NUM_MACHINE_MODES];
+
+extern unsigned get_mode_alignment (enum machine_mode);
+
+#define GET_MODE_ALIGNMENT(MODE) get_mode_alignment (MODE)
+
+/* For each class, get the narrowest mode in that class.  */
+
+extern const unsigned char class_narrowest_mode[MAX_MODE_CLASS];
+#define GET_CLASS_NARROWEST_MODE(CLASS) class_narrowest_mode[CLASS]
+
+/* Define the integer modes whose sizes are BITS_PER_UNIT and BITS_PER_WORD
+   and the mode whose class is Pmode and whose size is POINTER_SIZE.  */
+
+extern enum machine_mode byte_mode;
+extern enum machine_mode word_mode;
+extern enum machine_mode ptr_mode;
+
+/* Target-dependent machine mode initialization - in insn-modes.c.  */
+extern void init_adjust_machine_modes (void);
+
+#endif /* not HAVE_MACHINE_MODES */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/mode-classes.def b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/mode-classes.def
new file mode 100644 (file)
index 0000000..83017ec
--- /dev/null
@@ -0,0 +1,39 @@
+/* Machine mode class definitions for GCC.
+   Copyright (C) 2003, 2007
+   Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#define MODE_CLASSES                                                      \
+  DEF_MODE_CLASS (MODE_RANDOM),                /* other */                        \
+  DEF_MODE_CLASS (MODE_CC),            /* condition code in a register */ \
+  DEF_MODE_CLASS (MODE_INT),           /* integer */                      \
+  DEF_MODE_CLASS (MODE_PARTIAL_INT),   /* integer with padding bits */    \
+  DEF_MODE_CLASS (MODE_FRACT),         /* signed fractional number */     \
+  DEF_MODE_CLASS (MODE_UFRACT),                /* unsigned fractional number */   \
+  DEF_MODE_CLASS (MODE_ACCUM),         /* signed accumulator */           \
+  DEF_MODE_CLASS (MODE_UACCUM),                /* unsigned accumulator */         \
+  DEF_MODE_CLASS (MODE_FLOAT),         /* floating point */               \
+  DEF_MODE_CLASS (MODE_DECIMAL_FLOAT), /* decimal floating point */       \
+  DEF_MODE_CLASS (MODE_COMPLEX_INT),   /* complex numbers */              \
+  DEF_MODE_CLASS (MODE_COMPLEX_FLOAT),                                    \
+  DEF_MODE_CLASS (MODE_VECTOR_INT),    /* SIMD vectors */                 \
+  DEF_MODE_CLASS (MODE_VECTOR_FRACT),  /* SIMD vectors */                 \
+  DEF_MODE_CLASS (MODE_VECTOR_UFRACT), /* SIMD vectors */                 \
+  DEF_MODE_CLASS (MODE_VECTOR_ACCUM),  /* SIMD vectors */                 \
+  DEF_MODE_CLASS (MODE_VECTOR_UACCUM), /* SIMD vectors */                 \
+  DEF_MODE_CLASS (MODE_VECTOR_FLOAT)
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/objc/objc-tree.def b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/objc/objc-tree.def
new file mode 100644 (file)
index 0000000..a3e40db
--- /dev/null
@@ -0,0 +1,46 @@
+/* This file contains the definitions and documentation for the
+   additional tree codes used in the Objective C front end (see tree.def
+   for the standard codes).
+   Copyright (C) 1990, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2007
+   Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+
+/* Objective-C types.  */
+DEFTREECODE (CLASS_INTERFACE_TYPE, "class_interface_type", tcc_type, 0)
+DEFTREECODE (CLASS_IMPLEMENTATION_TYPE, "class_implementation_type",
+            tcc_type, 0)
+DEFTREECODE (CATEGORY_INTERFACE_TYPE, "category_interface_type", tcc_type, 0)
+DEFTREECODE (CATEGORY_IMPLEMENTATION_TYPE,"category_implementation_type",
+            tcc_type, 0)
+DEFTREECODE (PROTOCOL_INTERFACE_TYPE, "protocol_interface_type", tcc_type, 0)
+
+/* Objective-C decls.  */
+DEFTREECODE (KEYWORD_DECL, "keyword_decl", tcc_declaration, 0)
+DEFTREECODE (INSTANCE_METHOD_DECL, "instance_method_decl", tcc_declaration, 0)
+DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", tcc_declaration, 0)
+
+/* Objective-C expressions.  */
+DEFTREECODE (MESSAGE_SEND_EXPR, "message_send_expr", tcc_expression, 3)
+DEFTREECODE (CLASS_REFERENCE_EXPR, "class_reference_expr", tcc_expression, 1)
+
+/*
+Local variables:
+mode:c
+End:
+*/
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/obstack.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/obstack.h
new file mode 100644 (file)
index 0000000..4aec3a4
--- /dev/null
@@ -0,0 +1,545 @@
+/* obstack.h - object stack macros
+   Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997, 1998,
+   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+   Free Software Foundation, Inc.
+
+
+   NOTE: The canonical source of this file is maintained with the GNU C Library.
+   Bugs can be reported to bug-glibc@gnu.org.
+
+   This program is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by the
+   Free Software Foundation; either version 2, or (at your option) any
+   later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301,
+   USA.  */
+
+/* Summary:
+
+All the apparent functions defined here are macros. The idea
+is that you would use these pre-tested macros to solve a
+very specific set of problems, and they would run fast.
+Caution: no side-effects in arguments please!! They may be
+evaluated MANY times!!
+
+These macros operate a stack of objects.  Each object starts life
+small, and may grow to maturity.  (Consider building a word syllable
+by syllable.)  An object can move while it is growing.  Once it has
+been "finished" it never changes address again.  So the "top of the
+stack" is typically an immature growing object, while the rest of the
+stack is of mature, fixed size and fixed address objects.
+
+These routines grab large chunks of memory, using a function you
+supply, called `obstack_chunk_alloc'.  On occasion, they free chunks,
+by calling `obstack_chunk_free'.  You must define them and declare
+them before using any obstack macros.
+
+Each independent stack is represented by a `struct obstack'.
+Each of the obstack macros expects a pointer to such a structure
+as the first argument.
+
+One motivation for this package is the problem of growing char strings
+in symbol tables.  Unless you are "fascist pig with a read-only mind"
+--Gosper's immortal quote from HAKMEM item 154, out of context--you
+would not like to put any arbitrary upper limit on the length of your
+symbols.
+
+In practice this often means you will build many short symbols and a
+few long symbols.  At the time you are reading a symbol you don't know
+how long it is.  One traditional method is to read a symbol into a
+buffer, realloc()ating the buffer every time you try to read a symbol
+that is longer than the buffer.  This is beaut, but you still will
+want to copy the symbol from the buffer to a more permanent
+symbol-table entry say about half the time.
+
+With obstacks, you can work differently.  Use one obstack for all symbol
+names.  As you read a symbol, grow the name in the obstack gradually.
+When the name is complete, finalize it.  Then, if the symbol exists already,
+free the newly read name.
+
+The way we do this is to take a large chunk, allocating memory from
+low addresses.  When you want to build a symbol in the chunk you just
+add chars above the current "high water mark" in the chunk.  When you
+have finished adding chars, because you got to the end of the symbol,
+you know how long the chars are, and you can create a new object.
+Mostly the chars will not burst over the highest address of the chunk,
+because you would typically expect a chunk to be (say) 100 times as
+long as an average object.
+
+In case that isn't clear, when we have enough chars to make up
+the object, THEY ARE ALREADY CONTIGUOUS IN THE CHUNK (guaranteed)
+so we just point to it where it lies.  No moving of chars is
+needed and this is the second win: potentially long strings need
+never be explicitly shuffled. Once an object is formed, it does not
+change its address during its lifetime.
+
+When the chars burst over a chunk boundary, we allocate a larger
+chunk, and then copy the partly formed object from the end of the old
+chunk to the beginning of the new larger chunk.  We then carry on
+accreting characters to the end of the object as we normally would.
+
+A special macro is provided to add a single char at a time to a
+growing object.  This allows the use of register variables, which
+break the ordinary 'growth' macro.
+
+Summary:
+       We allocate large chunks.
+       We carve out one object at a time from the current chunk.
+       Once carved, an object never moves.
+       We are free to append data of any size to the currently
+         growing object.
+       Exactly one object is growing in an obstack at any one time.
+       You can run one obstack per control block.
+       You may have as many control blocks as you dare.
+       Because of the way we do it, you can `unwind' an obstack
+         back to a previous state. (You may remove objects much
+         as you would with a stack.)
+*/
+
+
+/* Don't do the contents of this file more than once.  */
+
+#ifndef _OBSTACK_H
+#define _OBSTACK_H 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+\f
+/* We use subtraction of (char *) 0 instead of casting to int
+   because on word-addressable machines a simple cast to int
+   may ignore the byte-within-word field of the pointer.  */
+
+#ifndef __PTR_TO_INT
+# define __PTR_TO_INT(P) ((P) - (char *) 0)
+#endif
+
+#ifndef __INT_TO_PTR
+# define __INT_TO_PTR(P) ((P) + (char *) 0)
+#endif
+
+/* We need the type of the resulting object.  If __PTRDIFF_TYPE__ is
+   defined, as with GNU C, use that; that way we don't pollute the
+   namespace with <stddef.h>'s symbols.  Otherwise, if <stddef.h> is
+   available, include it and use ptrdiff_t.  In traditional C, long is
+   the best that we can do.  */
+
+#ifdef __PTRDIFF_TYPE__
+# define PTR_INT_TYPE __PTRDIFF_TYPE__
+#else
+# ifdef HAVE_STDDEF_H
+#  include <stddef.h>
+#  define PTR_INT_TYPE ptrdiff_t
+# else
+#  define PTR_INT_TYPE long
+# endif
+#endif
+
+#if defined _LIBC || defined HAVE_STRING_H
+# include <string.h>
+# define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
+#else
+# ifdef memcpy
+#  define _obstack_memcpy(To, From, N) memcpy ((To), (char *)(From), (N))
+# else
+#  define _obstack_memcpy(To, From, N) bcopy ((char *)(From), (To), (N))
+# endif
+#endif
+
+struct _obstack_chunk          /* Lives at front of each chunk. */
+{
+  char  *limit;                        /* 1 past end of this chunk */
+  struct _obstack_chunk *prev; /* address of prior chunk or NULL */
+  char contents[4];            /* objects begin here */
+};
+
+struct obstack         /* control current object in current chunk */
+{
+  long chunk_size;             /* preferred size to allocate chunks in */
+  struct _obstack_chunk *chunk;        /* address of current struct obstack_chunk */
+  char *object_base;           /* address of object we are building */
+  char *next_free;             /* where to add next char to current object */
+  char *chunk_limit;           /* address of char after current chunk */
+  PTR_INT_TYPE temp;           /* Temporary for some macros.  */
+  int   alignment_mask;                /* Mask of alignment for each object. */
+  /* These prototypes vary based on `use_extra_arg', and we use
+     casts to the prototypeless function type in all assignments,
+     but having prototypes here quiets -Wstrict-prototypes.  */
+  struct _obstack_chunk *(*chunkfun) (void *, long);
+  void (*freefun) (void *, struct _obstack_chunk *);
+  void *extra_arg;             /* first arg for chunk alloc/dealloc funcs */
+  unsigned use_extra_arg:1;    /* chunk alloc/dealloc funcs take extra arg */
+  unsigned maybe_empty_object:1;/* There is a possibility that the current
+                                  chunk contains a zero-length object.  This
+                                  prevents freeing the chunk if we allocate
+                                  a bigger chunk to replace it. */
+  unsigned alloc_failed:1;     /* No longer used, as we now call the failed
+                                  handler on error, but retained for binary
+                                  compatibility.  */
+};
+
+/* Declare the external functions we use; they are in obstack.c.  */
+
+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 *);
+\f
+/* Do the function-declarations after the structs
+   but before defining the macros.  */
+
+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);
+
+/* Error handler called when `obstack_chunk_alloc' failed to allocate
+   more memory.  This can be set to a user defined function.  The
+   default action is to print a message and abort.  */
+extern void (*obstack_alloc_failed_handler) (void);
+
+/* Exit value used when `print_and_abort' is used.  */
+extern int obstack_exit_failure;
+\f
+/* Pointer to beginning of object being allocated or to be allocated next.
+   Note that this might not be the final address of the object
+   because a new chunk might be needed to hold the final size.  */
+
+#define obstack_base(h) ((h)->object_base)
+
+/* Size for allocating ordinary chunks.  */
+
+#define obstack_chunk_size(h) ((h)->chunk_size)
+
+/* Pointer to next byte not yet allocated in current chunk.  */
+
+#define obstack_next_free(h)   ((h)->next_free)
+
+/* Mask specifying low bits that should be clear in address of an object.  */
+
+#define obstack_alignment_mask(h) ((h)->alignment_mask)
+
+/* To prevent prototype warnings provide complete argument list in
+   standard C version.  */
+# 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))
+
+#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)
+\f
+#if defined __GNUC__ && defined __STDC__ && __STDC__
+/* NextStep 2.0 cc is really gcc 1.93 but it defines __GNUC__ = 2 and
+   does not implement __extension__.  But that compiler doesn't define
+   __GNUC_MINOR__.  */
+# if __GNUC__ < 2 || (__NeXT__ && !__GNUC_MINOR__)
+#  define __extension__
+# endif
+
+/* For GNU C, if not -traditional,
+   we can define these macros to compute all args only once
+   without using a global variable.
+   Also, we can avoid using the `temp' slot, to make faster code.  */
+
+# 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; })
+
+# 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; })
+
+# define obstack_1grow(OBSTACK,datum)                                  \
+__extension__                                                          \
+({ struct obstack *__o = (OBSTACK);                                    \
+   if (__o->next_free + 1 > __o->chunk_limit)                          \
+     _obstack_newchunk (__o, 1);                                       \
+   obstack_1grow_fast (__o, datum);                                    \
+   (void) 0; })
+
+/* These assume that the obstack alignment is good enough for pointers or ints,
+   and that the data added so far to the current object
+   shares that much alignment.  */
+
+# 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 *));                         \
+   obstack_ptr_grow_fast (__o, datum); })
+
+# 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));                            \
+   obstack_int_grow_fast (__o, datum); })
+
+# define obstack_ptr_grow_fast(OBSTACK,aptr)                           \
+__extension__                                                          \
+({ struct obstack *__o1 = (OBSTACK);                                   \
+   *(const void **) __o1->next_free = (aptr);                          \
+   __o1->next_free += sizeof (const void *);                           \
+   (void) 0; })
+
+# define obstack_int_grow_fast(OBSTACK,aint)                           \
+__extension__                                                          \
+({ struct obstack *__o1 = (OBSTACK);                                   \
+   *(int *) __o1->next_free = (aint);                                  \
+   __o1->next_free += sizeof (int);                                    \
+   (void) 0; })
+
+# 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);                                   \
+   obstack_blank_fast (__o, __len);                                    \
+   (void) 0; })
+
+# 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); })
+
+/* The local variable is named __o1 to avoid a name conflict
+   when obstack_blank is called.  */
+# 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; })
+
+# define obstack_free(OBSTACK, OBJ)                                    \
+__extension__                                                          \
+({ struct obstack *__o = (OBSTACK);                                    \
+   void *__obj = (void *) (OBJ);                                       \
+   if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit)  \
+     __o->next_free = __o->object_base = (char *) __obj;               \
+   else (obstack_free) (__o, __obj); })
+\f
+#else /* not __GNUC__ or not __STDC__ */
+
+# define obstack_object_size(h) \
+ (unsigned) ((h)->next_free - (h)->object_base)
+
+# define obstack_room(h)               \
+ (unsigned) ((h)->chunk_limit - (h)->next_free)
+
+# define obstack_empty_p(h) \
+ ((h)->chunk->prev == 0 && (h)->next_free - (h)->chunk->contents == 0)
+
+/* Note that the call to _obstack_newchunk is enclosed in (..., 0)
+   so that we can avoid having void expressions
+   in the arms of the conditional expression.
+   Casting the third operand to void was tried before,
+   but some compilers won't accept it.  */
+
+# define obstack_make_room(h,length)                                   \
+( (h)->temp = (length),                                                        \
+  (((h)->next_free + (h)->temp > (h)->chunk_limit)                     \
+   ? (_obstack_newchunk ((h), (h)->temp), 0) : 0))
+
+# define obstack_grow(h,where,length)                                  \
+( (h)->temp = (length),                                                        \
+  (((h)->next_free + (h)->temp > (h)->chunk_limit)                     \
+   ? (_obstack_newchunk ((h), (h)->temp), 0) : 0),                     \
+  _obstack_memcpy ((h)->next_free, (where), (h)->temp),                        \
+  (h)->next_free += (h)->temp)
+
+# define obstack_grow0(h,where,length)                                 \
+( (h)->temp = (length),                                                        \
+  (((h)->next_free + (h)->temp + 1 > (h)->chunk_limit)                 \
+   ? (_obstack_newchunk ((h), (h)->temp + 1), 0) : 0),                 \
+  _obstack_memcpy ((h)->next_free, (where), (h)->temp),                        \
+  (h)->next_free += (h)->temp,                                         \
+  *((h)->next_free)++ = 0)
+
+# define obstack_1grow(h,datum)                                                \
+( (((h)->next_free + 1 > (h)->chunk_limit)                             \
+   ? (_obstack_newchunk ((h), 1), 0) : 0),                             \
+  obstack_1grow_fast (h, datum))
+
+# define obstack_ptr_grow(h,datum)                                     \
+( (((h)->next_free + sizeof (char *) > (h)->chunk_limit)               \
+   ? (_obstack_newchunk ((h), sizeof (char *)), 0) : 0),               \
+  obstack_ptr_grow_fast (h, datum))
+
+# define obstack_int_grow(h,datum)                                     \
+( (((h)->next_free + sizeof (int) > (h)->chunk_limit)                  \
+   ? (_obstack_newchunk ((h), sizeof (int)), 0) : 0),                  \
+  obstack_int_grow_fast (h, datum))
+
+# define obstack_ptr_grow_fast(h,aptr)                                 \
+  (((const void **) ((h)->next_free += sizeof (void *)))[-1] = (aptr))
+
+# define obstack_int_grow_fast(h,aint)                                 \
+  (((int *) ((h)->next_free += sizeof (int)))[-1] = (aptr))
+
+# define obstack_blank(h,length)                                       \
+( (h)->temp = (length),                                                        \
+  (((h)->chunk_limit - (h)->next_free < (h)->temp)                     \
+   ? (_obstack_newchunk ((h), (h)->temp), 0) : 0),                     \
+  obstack_blank_fast (h, (h)->temp))
+
+# define obstack_alloc(h,length)                                       \
+ (obstack_blank ((h), (length)), obstack_finish ((h)))
+
+# define obstack_copy(h,where,length)                                  \
+ (obstack_grow ((h), (where), (length)), obstack_finish ((h)))
+
+# define obstack_copy0(h,where,length)                                 \
+ (obstack_grow0 ((h), (where), (length)), obstack_finish ((h)))
+
+# define obstack_finish(h)                                             \
+( ((h)->next_free == (h)->object_base                                  \
+   ? (((h)->maybe_empty_object = 1), 0)                                        \
+   : 0),                                                               \
+  (h)->temp = __PTR_TO_INT ((h)->object_base),                         \
+  (h)->next_free                                                       \
+    = __INT_TO_PTR ((__PTR_TO_INT ((h)->next_free)+(h)->alignment_mask)        \
+                   & ~ ((h)->alignment_mask)),                         \
+  (((h)->next_free - (char *) (h)->chunk                               \
+    > (h)->chunk_limit - (char *) (h)->chunk)                          \
+   ? ((h)->next_free = (h)->chunk_limit) : 0),                         \
+  (h)->object_base = (h)->next_free,                                   \
+  (void *) __INT_TO_PTR ((h)->temp))
+
+# define obstack_free(h,obj)                                           \
+( (h)->temp = (char *) (obj) - (char *) (h)->chunk,                    \
+  (((h)->temp > 0 && (h)->temp < (h)->chunk_limit - (char *) (h)->chunk)\
+   ? (int) ((h)->next_free = (h)->object_base                          \
+           = (h)->temp + (char *) (h)->chunk)                          \
+   : (((obstack_free) ((h), (h)->temp + (char *) (h)->chunk), 0), 0)))
+
+#endif /* not __GNUC__ or not __STDC__ */
+
+#ifdef __cplusplus
+}      /* C++ */
+#endif
+
+#endif /* obstack.h */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/omp-builtins.def b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/omp-builtins.def
new file mode 100644 (file)
index 0000000..5fd4f9a
--- /dev/null
@@ -0,0 +1,208 @@
+/* This file contains the definitions and documentation for the
+   OpenMP builtins used in the GNU compiler.
+   Copyright (C) 2005, 2007, 2008 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* Before including this file, you should define a macro:
+
+     DEF_GOMP_BUILTIN (ENUM, NAME, TYPE, ATTRS)
+
+   See builtins.def for details.  */
+
+DEF_GOMP_BUILTIN (BUILT_IN_OMP_GET_THREAD_NUM, "omp_get_thread_num",
+                 BT_FN_INT, ATTR_CONST_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_OMP_GET_NUM_THREADS, "omp_get_num_threads",
+                 BT_FN_INT, ATTR_CONST_NOTHROW_LIST)
+
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_ATOMIC_START, "GOMP_atomic_start",
+                 BT_FN_VOID, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_ATOMIC_END, "GOMP_atomic_end",
+                 BT_FN_VOID, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_BARRIER, "GOMP_barrier",
+                 BT_FN_VOID, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_TASKWAIT, "GOMP_taskwait",
+                 BT_FN_VOID, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_CRITICAL_START, "GOMP_critical_start",
+                 BT_FN_VOID, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_CRITICAL_END, "GOMP_critical_end",
+                 BT_FN_VOID, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_CRITICAL_NAME_START,
+                 "GOMP_critical_name_start",
+                 BT_FN_VOID_PTRPTR, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_CRITICAL_NAME_END,
+                 "GOMP_critical_name_end",
+                 BT_FN_VOID_PTRPTR, ATTR_NOTHROW_LIST)
+/* NOTE: Do not change the order of BUILT_IN_GOMP_LOOP_*_START.  They
+   are used in index arithmetic with enum omp_clause_schedule_kind
+   in omp-low.c.  */
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_STATIC_START,
+                 "GOMP_loop_static_start",
+                 BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_DYNAMIC_START,
+                 "GOMP_loop_dynamic_start",
+                 BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_GUIDED_START,
+                 "GOMP_loop_guided_start",
+                 BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_RUNTIME_START,
+                 "GOMP_loop_runtime_start",
+                 BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_STATIC_START,
+                 "GOMP_loop_ordered_static_start",
+                 BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_START,
+                 "GOMP_loop_ordered_dynamic_start",
+                 BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_START,
+                 "GOMP_loop_ordered_guided_start",
+                 BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_START,
+                 "GOMP_loop_ordered_runtime_start",
+                 BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_STATIC_NEXT, "GOMP_loop_static_next",
+                 BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_DYNAMIC_NEXT, "GOMP_loop_dynamic_next",
+                 BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_GUIDED_NEXT, "GOMP_loop_guided_next",
+                 BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_RUNTIME_NEXT, "GOMP_loop_runtime_next",
+                 BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_STATIC_NEXT,
+                 "GOMP_loop_ordered_static_next",
+                 BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_NEXT,
+                 "GOMP_loop_ordered_dynamic_next",
+                 BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_NEXT,
+                 "GOMP_loop_ordered_guided_next",
+                 BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_NEXT,
+                 "GOMP_loop_ordered_runtime_next",
+                 BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
+                 "GOMP_loop_ull_static_start",
+                 BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
+                 "GOMP_loop_ull_dynamic_start",
+                 BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
+                 "GOMP_loop_ull_guided_start",
+                 BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
+                 "GOMP_loop_ull_runtime_start",
+                 BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
+                 "GOMP_loop_ull_ordered_static_start",
+                 BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
+                 "GOMP_loop_ull_ordered_dynamic_start",
+                 BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
+                 "GOMP_loop_ull_ordered_guided_start",
+                 BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
+                 "GOMP_loop_ull_ordered_runtime_start",
+                 BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT, "GOMP_loop_ull_static_next",
+                 BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT, "GOMP_loop_ull_dynamic_next",
+                 BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT, "GOMP_loop_ull_guided_next",
+                 BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT, "GOMP_loop_ull_runtime_next",
+                 BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
+                 "GOMP_loop_ull_ordered_static_next",
+                 BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
+                 "GOMP_loop_ull_ordered_dynamic_next",
+                 BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
+                 "GOMP_loop_ull_ordered_guided_next",
+                 BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT,
+                 "GOMP_loop_ull_ordered_runtime_next",
+                 BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR, ATTR_NOTHROW_LIST)
+/* NOTE: Do not change the order of BUILT_IN_GOMP_PARALLEL_LOOP_*_START.
+   They are used in index arithmetic with enum omp_clause_schedule_kind
+   in omp-low.c.  */
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_STATIC_START,
+                 "GOMP_parallel_loop_static_start",
+                 BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC_START,
+                 "GOMP_parallel_loop_dynamic_start",
+                 BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED_START,
+                 "GOMP_parallel_loop_guided_start",
+                 BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME_START,
+                 "GOMP_parallel_loop_runtime_start",
+                 BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_END, "GOMP_loop_end",
+                 BT_FN_VOID, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_END_NOWAIT, "GOMP_loop_end_nowait",
+                 BT_FN_VOID, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_ORDERED_START, "GOMP_ordered_start",
+                 BT_FN_VOID, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_ORDERED_END, "GOMP_ordered_end",
+                 BT_FN_VOID, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_START, "GOMP_parallel_start",
+                 BT_FN_VOID_OMPFN_PTR_UINT, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_END, "GOMP_parallel_end",
+                 BT_FN_VOID, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_TASK, "GOMP_task",
+                 BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT,
+                 ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_SECTIONS_START, "GOMP_sections_start",
+                 BT_FN_UINT_UINT, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_SECTIONS_NEXT, "GOMP_sections_next",
+                 BT_FN_UINT, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_SECTIONS_START,
+                 "GOMP_parallel_sections_start",
+                 BT_FN_VOID_OMPFN_PTR_UINT_UINT, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_SECTIONS_END, "GOMP_sections_end",
+                 BT_FN_VOID, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_SECTIONS_END_NOWAIT,
+                 "GOMP_sections_end_nowait",
+                 BT_FN_VOID, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_SINGLE_START, "GOMP_single_start",
+                 BT_FN_BOOL, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_SINGLE_COPY_START, "GOMP_single_copy_start",
+                 BT_FN_PTR, ATTR_NOTHROW_LIST)
+DEF_GOMP_BUILTIN (BUILT_IN_GOMP_SINGLE_COPY_END, "GOMP_single_copy_end",
+                 BT_FN_VOID_PTR, ATTR_NOTHROW_LIST)
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/options.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/options.h
new file mode 100644 (file)
index 0000000..237e64a
--- /dev/null
@@ -0,0 +1,1407 @@
+/* This file is auto-generated by opth-gen.awk.  */
+
+#ifndef OPTIONS_H
+#define OPTIONS_H
+
+extern int target_flags;
+extern int target_flags_explicit;
+
+extern int warn_abi;
+extern int warn_address;
+extern int warn_aggregate_return;
+extern int warn_array_bounds;
+extern int warn_assign_intercept;
+extern int warn_attributes;
+extern int warn_bad_function_cast;
+extern int warn_cxx_compat;
+extern int warn_cxx0x_compat;
+extern int warn_cast_align;
+extern int warn_cast_qual;
+extern int warn_char_subscripts;
+extern int warn_clobbered;
+extern int warn_conversion;
+extern int warn_coverage_mismatch;
+extern int warn_ctor_dtor_privacy;
+extern int warn_declaration_after_statement;
+extern int warn_deprecated;
+extern int warn_deprecated_decl;
+extern int warn_disabled_optimization;
+extern int warn_div_by_zero;
+extern int warn_ecpp;
+extern int warn_empty_body;
+extern int warn_enum_compare;
+extern int warnings_are_errors;
+extern int flag_extraneous_semicolon;
+extern int flag_fatal_errors;
+extern int warn_float_equal;
+extern int warn_format_contains_nul;
+extern int warn_format_extra_args;
+extern int warn_format_nonliteral;
+extern int warn_format_security;
+extern int warn_format_y2k;
+extern int warn_format_zero_length;
+extern int warn_ignored_qualifiers;
+extern int warn_implicit_function_declaration;
+extern int warn_implicit_int;
+extern int warn_init_self;
+extern int warn_inline;
+extern int warn_int_to_pointer_cast;
+extern int warn_invalid_offsetof;
+extern int warn_logical_op;
+extern int warn_long_long;
+extern int warn_main;
+extern int warn_missing_braces;
+extern int warn_missing_declarations;
+extern int warn_missing_field_initializers;
+extern int warn_missing_format_attribute;
+extern int warn_missing_noreturn;
+extern int warn_missing_parameter_type;
+extern int warn_missing_prototypes;
+extern int warn_mudflap;
+extern int warn_nested_externs;
+extern int warn_nontemplate_friend;
+extern int warn_nonvdtor;
+extern int warn_nonnull;
+extern int warn_old_style_cast;
+extern int warn_old_style_declaration;
+extern int warn_old_style_definition;
+extern int flag_newer;
+extern int warn_overflow;
+extern int warn_overlength_strings;
+extern int warn_overloaded_virtual;
+extern int warn_override_init;
+extern int warn_packed;
+extern int warn_packed_bitfield_compat;
+extern int warn_padded;
+extern int warn_parentheses;
+extern int warn_pmf2ptr;
+extern int warn_pointer_arith;
+extern int warn_pointer_sign;
+extern int warn_pointer_to_int_cast;
+extern int warn_pragmas;
+extern int warn_protocol;
+extern int warn_psabi;
+extern int warn_redundant_decls;
+extern int flag_redundant;
+extern int warn_reorder;
+extern int warn_return_type;
+extern int warn_selector;
+extern int warn_sequence_point;
+extern int warn_shadow;
+extern int warn_sign_compare;
+extern int warn_sign_conversion;
+extern int warn_sign_promo;
+extern int warn_stack_protect;
+extern int warn_strict_aliasing;
+extern int warn_strict_overflow;
+extern int warn_strict_prototypes;
+extern int warn_strict_selector_match;
+extern int warn_switch;
+extern int warn_switch_default;
+extern int warn_switch_enum;
+extern int warn_sync_nand;
+extern int warn_synth;
+extern int warn_system_headers;
+extern int warn_thread_mismatched_lock_acq_rel;
+extern int warn_thread_mismatched_lock_order;
+extern int warn_thread_reentrant_lock;
+extern int warn_thread_safety;
+extern int warn_thread_unguarded_func;
+extern int warn_thread_unguarded_var;
+extern int warn_unsupported_lock_name;
+extern int warn_traditional;
+extern int warn_traditional_conversion;
+extern int warn_type_limits;
+extern int warn_undeclared_selector;
+extern int warn_uninitialized;
+extern int warn_notreached;
+extern int warn_unsafe_loop_optimizations;
+extern int warn_unused;
+extern int warn_unused_function;
+extern int warn_unused_label;
+extern int warn_unused_parameter;
+extern int warn_unused_value;
+extern int warn_unused_variable;
+extern int warn_vla;
+extern int warn_volatile_register_var;
+extern int warn_write_strings;
+extern int flag_pic;
+extern int flag_pie;
+extern int flag_abi_version;
+extern int align_functions;
+extern int align_jumps;
+extern int align_labels;
+extern int align_loops;
+extern int flag_argument_noalias;
+extern int flag_assert;
+extern int flag_associative_math;
+extern int flag_asynchronous_unwind_tables;
+extern int flag_auto_inc_dec;
+extern int flag_bootstrap_classes;
+extern int flag_bounds_check;
+extern int flag_branch_on_count_reg;
+extern int flag_branch_probabilities;
+extern int flag_branch_target_load_optimize;
+extern int flag_branch_target_load_optimize2;
+extern int flag_btr_bb_exclusive;
+extern int flag_caller_saves;
+extern int flag_check_data_deps;
+extern int flag_check_references;
+extern int flag_no_common;
+extern int flag_conserve_stack;
+extern int flag_cprop_registers;
+extern int flag_crossjumping;
+extern int flag_cse_follow_jumps;
+extern int flag_cse_skip_blocks;
+extern int flag_cx_fortran_rules;
+extern int flag_cx_limited_range;
+extern int flag_data_sections;
+extern int flag_dce;
+extern int flag_defer_pop;
+extern int flag_delayed_branch;
+extern int flag_delete_null_pointer_checks;
+extern int flag_enable_dom_check;
+extern int flag_dse;
+extern int flag_dump_noaddr;
+extern int flag_dump_unnumbered;
+extern int flag_dwarf2_cfi_asm;
+extern int flag_early_inlining;
+extern int flag_eliminate_dwarf2_dups;
+extern int flag_debug_only_used_symbols;
+extern int flag_eliminate_unused_debug_types;
+extern int flag_emit_class_debug_always;
+extern int flag_emit_class_files;
+extern int flag_exceptions;
+extern int flag_expensive_optimizations;
+extern int flag_filelist_file;
+extern int flag_finite_math_only;
+extern int flag_float_store;
+extern int flag_force_classes_archive_check;
+extern int flag_forward_propagate;
+extern int flag_friend_injection;
+extern int flag_no_function_cse;
+extern int flag_function_sections;
+extern int flag_gcse;
+extern int flag_gcse_after_reload;
+extern int flag_gcse_las;
+extern int flag_gcse_lm;
+extern int flag_gcse_sm;
+extern int flag_gnu89_inline;
+extern int flag_graphite;
+extern int flag_graphite_identity;
+extern int flag_guess_branch_prob;
+extern int flag_hash_synchronization;
+extern int help_flag;
+extern int flag_no_ident;
+extern int flag_if_conversion;
+extern int flag_if_conversion2;
+extern int flag_indirect_classes;
+extern int flag_indirect_dispatch;
+extern int flag_indirect_inlining;
+extern int flag_inhibit_size_directive;
+extern int flag_no_inline;
+extern int flag_inline_functions;
+extern int flag_inline_functions_called_once;
+extern int flag_inline_small_functions;
+extern int flag_instrument_function_entry_exit;
+extern int flag_ipa_cp;
+extern int flag_ipa_cp_clone;
+extern int flag_ipa_matrix_reorg;
+extern int flag_ipa_pta;
+extern int flag_ipa_pure_const;
+extern int flag_ipa_reference;
+extern int flag_ipa_struct_reorg;
+extern int flag_ipa_type_escape;
+extern int flag_ira_coalesce;
+extern int flag_ira_share_save_slots;
+extern int flag_ira_share_spill_slots;
+extern int flag_ivopts;
+extern int flag_jni;
+extern int flag_jump_tables;
+extern int flag_keep_inline_functions;
+extern int flag_keep_static_consts;
+extern int flag_leading_underscore;
+extern int flag_loop_block;
+extern int flag_loop_interchange;
+extern int flag_loop_strip_mine;
+extern int flag_errno_math;
+extern int mem_report;
+extern int flag_merge_constants;
+extern int flag_merge_debug_strings;
+extern int flag_modulo_sched;
+extern int flag_modulo_sched_allow_regmoves;
+extern int flag_move_loop_invariants;
+extern int flag_mudflap;
+extern int flag_mudflap_ignore_reads;
+extern int flag_non_call_exceptions;
+extern int flag_objc_call_cxx_cdtors;
+extern int flag_objc_direct_dispatch;
+extern int flag_objc_exceptions;
+extern int flag_objc_gc;
+extern int flag_objc_sjlj_exceptions;
+extern int flag_omit_frame_pointer;
+extern int flag_openmp;
+extern int flag_regmove;
+extern int flag_optimize_sibling_calls;
+extern int flag_optimize_sci;
+extern int flag_pack_struct;
+extern int flag_pcc_struct_return;
+extern int flag_peel_loops;
+extern int flag_no_peephole;
+extern int flag_peephole2;
+extern int post_ipa_mem_report;
+extern int pre_ipa_mem_report;
+extern int flag_predictive_commoning;
+extern int flag_prefetch_loop_arrays;
+extern int profile_flag;
+extern int profile_arc_flag;
+extern int flag_profile_correction;
+extern int flag_profile_dump;
+extern int flag_profile_use;
+extern int flag_profile_values;
+extern int flag_reciprocal_math;
+extern int flag_record_gcc_switches;
+extern int flag_reduced_reflection;
+extern int flag_rename_registers;
+extern int flag_reorder_blocks;
+extern int flag_reorder_blocks_and_partition;
+extern int flag_reorder_functions;
+extern int flag_rerun_cse_after_loop;
+extern int flag_resched_modulo_sched;
+extern int flag_rounding_math;
+extern int flag_rtl_seqabstr;
+extern int flag_sample_profile;
+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_sched_stalled_insns;
+extern int flag_sched_stalled_insns_dep;
+extern int flag_sched2_use_superblocks;
+extern int flag_sched2_use_traces;
+extern int flag_schedule_insns;
+extern int flag_schedule_insns_after_reload;
+extern int flag_section_anchors;
+extern int flag_see;
+extern int flag_sel_sched_pipelining;
+extern int flag_sel_sched_pipelining_outer_loops;
+extern int flag_sel_sched_reschedule_pipelined;
+extern int flag_selective_scheduling;
+extern int flag_selective_scheduling2;
+extern int flag_show_column;
+extern int flag_signaling_nans;
+extern int flag_signed_zeros;
+extern int flag_single_precision_constant;
+extern int flag_split_ivs_in_unroller;
+extern int flag_split_wide_types;
+extern int flag_stack_protect;
+extern int flag_store_check;
+extern int flag_strict_aliasing;
+extern int flag_strict_overflow;
+extern int flag_syntax_only;
+extern int flag_test_coverage;
+extern int flag_thread_jumps;
+extern int time_report;
+extern int flag_toplevel_reorder;
+extern int flag_tracer;
+extern int flag_trapping_math;
+extern int flag_trapv;
+extern int flag_tree_builtin_call_dce;
+extern int flag_tree_ccp;
+extern int flag_tree_ch;
+extern int flag_tree_copy_prop;
+extern int flag_tree_copyrename;
+extern int flag_tree_cselim;
+extern int flag_tree_dce;
+extern int flag_tree_dom;
+extern int flag_tree_dse;
+extern int flag_tree_fre;
+extern int flag_tree_loop_distribution;
+extern int flag_tree_loop_im;
+extern int flag_tree_loop_ivcanon;
+extern int flag_tree_loop_linear;
+extern int flag_tree_loop_optimize;
+extern int flag_tree_live_range_split;
+extern int flag_tree_parallelize_loops;
+extern int flag_tree_pre;
+extern int flag_tree_reassoc;
+extern int flag_tree_scev_cprop;
+extern int flag_tree_sink;
+extern int flag_tree_sra;
+extern int flag_tree_switch_conversion;
+extern int flag_tree_ter;
+extern int flag_tree_vect_loop_version;
+extern int flag_tree_vectorize;
+extern int flag_tree_vrp;
+extern int flag_unit_at_a_time;
+extern int flag_unroll_all_loops;
+extern int flag_unroll_loops;
+extern int flag_unsafe_loop_optimizations;
+extern int flag_unsafe_math_optimizations;
+extern int flag_unswitch_loops;
+extern int flag_unwind_tables;
+extern int flag_use_boehm_gc;
+extern int flag_use_divide_subroutine;
+extern int flag_var_tracking;
+extern int flag_var_tracking_uninit;
+extern int flag_variable_expansion_in_unroller;
+extern int flag_vect_cost_model;
+extern int flag_verbose_asm;
+extern int flag_visibility_ms_compat;
+extern int flag_value_profile_transformations;
+extern int flag_web;
+extern int flag_whole_program;
+extern int flag_wrapv;
+extern int flag_zero_initialized_in_bss;
+extern const char *target_abi_name;
+extern int fix_cm3_ldrd;
+extern const char *target_float_abi_name;
+extern const char *target_fpe_name;
+extern const char *target_fpu_name;
+extern const char *arm_pic_register_string;
+extern const char *structure_size_string;
+extern const char *target_thread_switch;
+extern int target_word_relocations;
+extern int pedantic;
+extern int quiet_flag;
+extern int version_flag;
+extern int inhibit_warnings;
+
+#if !defined(GCC_DRIVER) && !defined(IN_LIBGCC2) && !defined(IN_TARGET_LIBS)
+
+/* Structure to save/restore optimization and target specific options.  */
+struct cl_optimization GTY(())
+{
+  int align_functions;
+  int align_jumps;
+  int align_labels;
+  int align_loops;
+  int flag_sched_stalled_insns;
+  int flag_sched_stalled_insns_dep;
+  unsigned char optimize;
+  unsigned char optimize_size;
+  unsigned char flag_argument_noalias;
+  unsigned char flag_asynchronous_unwind_tables;
+  unsigned char flag_branch_on_count_reg;
+  unsigned char flag_branch_probabilities;
+  unsigned char flag_branch_target_load_optimize;
+  unsigned char flag_branch_target_load_optimize2;
+  unsigned char flag_btr_bb_exclusive;
+  unsigned char flag_caller_saves;
+  unsigned char flag_no_common;
+  unsigned char flag_conserve_stack;
+  unsigned char flag_cprop_registers;
+  unsigned char flag_crossjumping;
+  unsigned char flag_cse_follow_jumps;
+  unsigned char flag_cse_skip_blocks;
+  unsigned char flag_cx_fortran_rules;
+  unsigned char flag_cx_limited_range;
+  unsigned char flag_data_sections;
+  unsigned char flag_dce;
+  unsigned char flag_defer_pop;
+  unsigned char flag_delayed_branch;
+  unsigned char flag_delete_null_pointer_checks;
+  unsigned char flag_enable_dom_check;
+  unsigned char flag_dse;
+  unsigned char flag_early_inlining;
+  unsigned char flag_exceptions;
+  unsigned char flag_expensive_optimizations;
+  unsigned char flag_finite_math_only;
+  unsigned char flag_float_store;
+  unsigned char flag_forward_propagate;
+  unsigned char flag_gcse;
+  unsigned char flag_gcse_after_reload;
+  unsigned char flag_gcse_las;
+  unsigned char flag_gcse_lm;
+  unsigned char flag_gcse_sm;
+  unsigned char flag_graphite_identity;
+  unsigned char flag_guess_branch_prob;
+  unsigned char flag_if_conversion;
+  unsigned char flag_if_conversion2;
+  unsigned char flag_inline_functions;
+  unsigned char flag_inline_functions_called_once;
+  unsigned char flag_inline_small_functions;
+  unsigned char flag_ipa_cp;
+  unsigned char flag_ipa_cp_clone;
+  unsigned char flag_ipa_matrix_reorg;
+  unsigned char flag_ipa_pta;
+  unsigned char flag_ipa_pure_const;
+  unsigned char flag_ipa_reference;
+  unsigned char flag_ipa_type_escape;
+  unsigned char flag_ivopts;
+  unsigned char flag_jump_tables;
+  unsigned char flag_loop_block;
+  unsigned char flag_loop_interchange;
+  unsigned char flag_loop_strip_mine;
+  unsigned char flag_errno_math;
+  unsigned char flag_merge_constants;
+  unsigned char flag_modulo_sched;
+  unsigned char flag_move_loop_invariants;
+  unsigned char flag_non_call_exceptions;
+  unsigned char flag_omit_frame_pointer;
+  unsigned char flag_regmove;
+  unsigned char flag_optimize_sibling_calls;
+  unsigned char flag_pack_struct;
+  unsigned char flag_peel_loops;
+  unsigned char flag_no_peephole;
+  unsigned char flag_peephole2;
+  unsigned char flag_predictive_commoning;
+  unsigned char flag_prefetch_loop_arrays;
+  unsigned char flag_profile_dump;
+  unsigned char flag_pcc_struct_return;
+  unsigned char flag_rename_registers;
+  unsigned char flag_reorder_blocks;
+  unsigned char flag_reorder_blocks_and_partition;
+  unsigned char flag_reorder_functions;
+  unsigned char flag_rerun_cse_after_loop;
+  unsigned char flag_resched_modulo_sched;
+  unsigned char flag_rounding_math;
+  unsigned char flag_rtl_seqabstr;
+  unsigned char flag_sample_profile;
+  unsigned char flag_schedule_interblock;
+  unsigned char flag_schedule_speculative;
+  unsigned char flag_schedule_speculative_load;
+  unsigned char flag_schedule_speculative_load_dangerous;
+  unsigned char flag_sched2_use_superblocks;
+  unsigned char flag_sched2_use_traces;
+  unsigned char flag_schedule_insns;
+  unsigned char flag_schedule_insns_after_reload;
+  unsigned char flag_section_anchors;
+  unsigned char flag_sel_sched_pipelining;
+  unsigned char flag_sel_sched_pipelining_outer_loops;
+  unsigned char flag_sel_sched_reschedule_pipelined;
+  unsigned char flag_selective_scheduling;
+  unsigned char flag_selective_scheduling2;
+  unsigned char flag_signaling_nans;
+  unsigned char flag_signed_zeros;
+  unsigned char flag_single_precision_constant;
+  unsigned char flag_split_ivs_in_unroller;
+  unsigned char flag_split_wide_types;
+  unsigned char flag_strict_aliasing;
+  unsigned char flag_thread_jumps;
+  unsigned char flag_toplevel_reorder;
+  unsigned char flag_trapping_math;
+  unsigned char flag_trapv;
+  unsigned char flag_tree_builtin_call_dce;
+  unsigned char flag_tree_ccp;
+  unsigned char flag_tree_ch;
+  unsigned char flag_tree_copy_prop;
+  unsigned char flag_tree_copyrename;
+  unsigned char flag_tree_cselim;
+  unsigned char flag_tree_dce;
+  unsigned char flag_tree_dom;
+  unsigned char flag_tree_dse;
+  unsigned char flag_tree_fre;
+  unsigned char flag_tree_loop_distribution;
+  unsigned char flag_tree_loop_im;
+  unsigned char flag_tree_loop_ivcanon;
+  unsigned char flag_tree_loop_linear;
+  unsigned char flag_tree_loop_optimize;
+  unsigned char flag_tree_live_range_split;
+  unsigned char flag_tree_pre;
+  unsigned char flag_tree_reassoc;
+  unsigned char flag_tree_scev_cprop;
+  unsigned char flag_tree_sink;
+  unsigned char flag_tree_sra;
+  unsigned char flag_tree_switch_conversion;
+  unsigned char flag_tree_ter;
+  unsigned char flag_tree_vect_loop_version;
+  unsigned char flag_tree_vectorize;
+  unsigned char flag_tree_vrp;
+  unsigned char flag_unit_at_a_time;
+  unsigned char flag_unroll_all_loops;
+  unsigned char flag_unroll_loops;
+  unsigned char flag_unsafe_loop_optimizations;
+  unsigned char flag_unsafe_math_optimizations;
+  unsigned char flag_unswitch_loops;
+  unsigned char flag_unwind_tables;
+  unsigned char flag_var_tracking;
+  unsigned char flag_var_tracking_uninit;
+  unsigned char flag_variable_expansion_in_unroller;
+  unsigned char flag_vect_cost_model;
+  unsigned char flag_value_profile_transformations;
+  unsigned char flag_web;
+  unsigned char flag_whole_program;
+  unsigned char flag_wrapv;
+};
+
+/* Structure to save/restore selected target specific options.  */
+struct cl_target_option GTY(())
+{
+  int target_flags;
+};
+
+
+/* Save optimization variables into a structure.  */
+extern void cl_optimization_save (struct cl_optimization *);
+
+/* Restore optimization variables from a structure.  */
+extern void cl_optimization_restore (struct cl_optimization *);
+
+/* Print optimization variables from a structure.  */
+extern void cl_optimization_print (FILE *, int, struct cl_optimization *);
+
+/* Save selected option variables into a structure.  */
+extern void cl_target_option_save (struct cl_target_option *);
+
+/* Restore selected option variables from a structure.  */
+extern void cl_target_option_restore (struct cl_target_option *);
+
+/* Print target option variables from a structure.  */
+extern void cl_target_option_print (FILE *, int, struct cl_target_option *);
+#endif
+
+#define MASK_ABORT_NORETURN (1 << 0)
+#define MASK_ANDROID (1 << 1)
+#define MASK_APCS_FLOAT (1 << 2)
+#define MASK_APCS_FRAME (1 << 3)
+#define MASK_APCS_REENT (1 << 4)
+#define MASK_APCS_STACK (1 << 5)
+#define MASK_BIG_END (1 << 6)
+#define MASK_CALLEE_INTERWORKING (1 << 7)
+#define MASK_CALLER_INTERWORKING (1 << 8)
+#define MASK_CIRRUS_FIX_INVALID_INSNS (1 << 9)
+#define MASK_FPE (1 << 10)
+#define MASK_LONG_CALLS (1 << 11)
+#define MASK_POKE_FUNCTION_NAME (1 << 12)
+#define MASK_SCHED_PROLOG (1 << 13)
+#define MASK_SINGLE_PIC_BASE (1 << 14)
+#define MASK_THUMB (1 << 15)
+#define MASK_INTERWORK (1 << 16)
+#define MASK_TPCS_FRAME (1 << 17)
+#define MASK_TPCS_LEAF_FRAME (1 << 18)
+#define MASK_NEON_VECTORIZE_QUAD (1 << 19)
+#define MASK_LITTLE_WORDS (1 << 20)
+
+#define TARGET_ABORT_NORETURN ((target_flags & MASK_ABORT_NORETURN) != 0)
+#define TARGET_ANDROID ((target_flags & MASK_ANDROID) != 0)
+#define TARGET_APCS_FLOAT ((target_flags & MASK_APCS_FLOAT) != 0)
+#define TARGET_APCS_FRAME ((target_flags & MASK_APCS_FRAME) != 0)
+#define TARGET_APCS_REENT ((target_flags & MASK_APCS_REENT) != 0)
+#define TARGET_APCS_STACK ((target_flags & MASK_APCS_STACK) != 0)
+#define TARGET_BIG_END ((target_flags & MASK_BIG_END) != 0)
+#define TARGET_CALLEE_INTERWORKING ((target_flags & MASK_CALLEE_INTERWORKING) != 0)
+#define TARGET_CALLER_INTERWORKING ((target_flags & MASK_CALLER_INTERWORKING) != 0)
+#define TARGET_CIRRUS_FIX_INVALID_INSNS ((target_flags & MASK_CIRRUS_FIX_INVALID_INSNS) != 0)
+#define TARGET_FPE ((target_flags & MASK_FPE) != 0)
+#define TARGET_LONG_CALLS ((target_flags & MASK_LONG_CALLS) != 0)
+#define TARGET_POKE_FUNCTION_NAME ((target_flags & MASK_POKE_FUNCTION_NAME) != 0)
+#define TARGET_SCHED_PROLOG ((target_flags & MASK_SCHED_PROLOG) != 0)
+#define TARGET_SINGLE_PIC_BASE ((target_flags & MASK_SINGLE_PIC_BASE) != 0)
+#define TARGET_THUMB ((target_flags & MASK_THUMB) != 0)
+#define TARGET_INTERWORK ((target_flags & MASK_INTERWORK) != 0)
+#define TARGET_TPCS_FRAME ((target_flags & MASK_TPCS_FRAME) != 0)
+#define TARGET_TPCS_LEAF_FRAME ((target_flags & MASK_TPCS_LEAF_FRAME) != 0)
+#define TARGET_NEON_VECTORIZE_QUAD ((target_flags & MASK_NEON_VECTORIZE_QUAD) != 0)
+#define TARGET_LITTLE_WORDS ((target_flags & MASK_LITTLE_WORDS) != 0)
+
+
+#define CL_Ada        (1 << 0)
+#define CL_C          (1 << 1)
+#define CL_CXX        (1 << 2)
+#define CL_Fortran    (1 << 3)
+#define CL_Java       (1 << 4)
+#define CL_ObjC       (1 << 5)
+#define CL_ObjCXX     (1 << 6)
+#define CL_LANG_ALL   ((1 << 7) - 1)
+
+enum opt_code
+{
+  OPT__help,                                 /* --help */
+  OPT__help_,                                /* --help= */
+  OPT__output_pch_,                          /* --output-pch= */
+  OPT__param,                                /* --param */
+  OPT__target_help,                          /* --target-help */
+  OPT__version,                              /* --version */
+  OPT_A,                                     /* -A */
+  OPT_C,                                     /* -C */
+  OPT_CC,                                    /* -CC */
+  OPT_D,                                     /* -D */
+  OPT_E,                                     /* -E */
+  OPT_F,                                     /* -F */
+  OPT_G,                                     /* -G */
+  OPT_H,                                     /* -H */
+  OPT_I,                                     /* -I */
+  OPT_J,                                     /* -J */
+  OPT_M,                                     /* -M */
+  OPT_MD,                                    /* -MD */
+  OPT_MD_,                                   /* -MD_ */
+  OPT_MF,                                    /* -MF */
+  OPT_MG,                                    /* -MG */
+  OPT_MM,                                    /* -MM */
+  OPT_MMD,                                   /* -MMD */
+  OPT_MMD_,                                  /* -MMD_ */
+  OPT_MP,                                    /* -MP */
+  OPT_MQ,                                    /* -MQ */
+  OPT_MT,                                    /* -MT */
+  OPT_O,                                     /* -O */
+  OPT_Os,                                    /* -Os */
+  OPT_P,                                     /* -P */
+  OPT_U,                                     /* -U */
+  OPT_W,                                     /* -W */
+  OPT_Wabi,                                  /* -Wabi */
+  OPT_Waddress,                              /* -Waddress */
+  OPT_Waggregate_return,                     /* -Waggregate-return */
+  OPT_Waliasing,                             /* -Waliasing */
+  OPT_Walign_commons,                        /* -Walign-commons */
+  OPT_Wall,                                  /* -Wall */
+  OPT_Wall_deprecation,                      /* -Wall-deprecation */
+  OPT_Wall_javadoc,                          /* -Wall-javadoc */
+  OPT_Wampersand,                            /* -Wampersand */
+  OPT_Warray_bounds,                         /* -Warray-bounds */
+  OPT_Warray_temporaries,                    /* -Warray-temporaries */
+  OPT_Wassert_identifier,                    /* -Wassert-identifier */
+  OPT_Wassign_intercept,                     /* -Wassign-intercept */
+  OPT_Wattributes,                           /* -Wattributes */
+  OPT_Wbad_function_cast,                    /* -Wbad-function-cast */
+  OPT_Wboxing,                               /* -Wboxing */
+  OPT_Wbuiltin_macro_redefined,              /* -Wbuiltin-macro-redefined */
+  OPT_Wc___compat,                           /* -Wc++-compat */
+  OPT_Wc__0x_compat,                         /* -Wc++0x-compat */
+  OPT_Wcast_align,                           /* -Wcast-align */
+  OPT_Wcast_qual,                            /* -Wcast-qual */
+  OPT_Wchar_concat,                          /* -Wchar-concat */
+  OPT_Wchar_subscripts,                      /* -Wchar-subscripts */
+  OPT_Wcharacter_truncation,                 /* -Wcharacter-truncation */
+  OPT_Wclobbered,                            /* -Wclobbered */
+  OPT_Wcomment,                              /* -Wcomment */
+  OPT_Wcomments,                             /* -Wcomments */
+  OPT_Wcondition_assign,                     /* -Wcondition-assign */
+  OPT_Wconstructor_name,                     /* -Wconstructor-name */
+  OPT_Wconversion,                           /* -Wconversion */
+  OPT_Wcoverage_mismatch,                    /* -Wcoverage-mismatch */
+  OPT_Wctor_dtor_privacy,                    /* -Wctor-dtor-privacy */
+  OPT_Wdeclaration_after_statement,          /* -Wdeclaration-after-statement */
+  OPT_Wdep_ann,                              /* -Wdep-ann */
+  OPT_Wdeprecated,                           /* -Wdeprecated */
+  OPT_Wdeprecated_declarations,              /* -Wdeprecated-declarations */
+  OPT_Wdisabled_optimization,                /* -Wdisabled-optimization */
+  OPT_Wdiscouraged,                          /* -Wdiscouraged */
+  OPT_Wdiv_by_zero,                          /* -Wdiv-by-zero */
+  OPT_Weffc__,                               /* -Weffc++ */
+  OPT_Wempty_block,                          /* -Wempty-block */
+  OPT_Wempty_body,                           /* -Wempty-body */
+  OPT_Wendif_labels,                         /* -Wendif-labels */
+  OPT_Wenum_compare,                         /* -Wenum-compare */
+  OPT_Wenum_identifier,                      /* -Wenum-identifier */
+  OPT_Wenum_switch,                          /* -Wenum-switch */
+  OPT_Werror,                                /* -Werror */
+  OPT_Werror_implicit_function_declaration,  /* -Werror-implicit-function-declaration */
+  OPT_Werror_,                               /* -Werror= */
+  OPT_Wextra,                                /* -Wextra */
+  OPT_Wextraneous_semicolon,                 /* -Wextraneous-semicolon */
+  OPT_Wfallthrough,                          /* -Wfallthrough */
+  OPT_Wfatal_errors,                         /* -Wfatal-errors */
+  OPT_Wfield_hiding,                         /* -Wfield-hiding */
+  OPT_Wfinal_bound,                          /* -Wfinal-bound */
+  OPT_Wfinally,                              /* -Wfinally */
+  OPT_Wfloat_equal,                          /* -Wfloat-equal */
+  OPT_Wforbidden,                            /* -Wforbidden */
+  OPT_Wformat,                               /* -Wformat */
+  OPT_Wformat_contains_nul,                  /* -Wformat-contains-nul */
+  OPT_Wformat_extra_args,                    /* -Wformat-extra-args */
+  OPT_Wformat_nonliteral,                    /* -Wformat-nonliteral */
+  OPT_Wformat_security,                      /* -Wformat-security */
+  OPT_Wformat_y2k,                           /* -Wformat-y2k */
+  OPT_Wformat_zero_length,                   /* -Wformat-zero-length */
+  OPT_Wformat_,                              /* -Wformat= */
+  OPT_Wframe_larger_than_,                   /* -Wframe-larger-than= */
+  OPT_Whiding,                               /* -Whiding */
+  OPT_Wignored_qualifiers,                   /* -Wignored-qualifiers */
+  OPT_Wimplicit,                             /* -Wimplicit */
+  OPT_Wimplicit_function_declaration,        /* -Wimplicit-function-declaration */
+  OPT_Wimplicit_int,                         /* -Wimplicit-int */
+  OPT_Wimplicit_interface,                   /* -Wimplicit-interface */
+  OPT_Wimport,                               /* -Wimport */
+  OPT_Windirect_static,                      /* -Windirect-static */
+  OPT_Winit_self,                            /* -Winit-self */
+  OPT_Winline,                               /* -Winline */
+  OPT_Wint_to_pointer_cast,                  /* -Wint-to-pointer-cast */
+  OPT_Wintf_annotation,                      /* -Wintf-annotation */
+  OPT_Wintf_non_inherited,                   /* -Wintf-non-inherited */
+  OPT_Wintrinsic_shadow,                     /* -Wintrinsic-shadow */
+  OPT_Wintrinsics_std,                       /* -Wintrinsics-std */
+  OPT_Winvalid_offsetof,                     /* -Winvalid-offsetof */
+  OPT_Winvalid_pch,                          /* -Winvalid-pch */
+  OPT_Wjavadoc,                              /* -Wjavadoc */
+  OPT_Wlarger_than_,                         /* -Wlarger-than- */
+  OPT_Wlarger_than_eq,                         /* -Wlarger-than= */
+  OPT_Wline_truncation,                      /* -Wline-truncation */
+  OPT_Wlocal_hiding,                         /* -Wlocal-hiding */
+  OPT_Wlogical_op,                           /* -Wlogical-op */
+  OPT_Wlong_long,                            /* -Wlong-long */
+  OPT_Wmain,                                 /* -Wmain */
+  OPT_Wmasked_catch_block,                   /* -Wmasked-catch-block */
+  OPT_Wmissing_braces,                       /* -Wmissing-braces */
+  OPT_Wmissing_declarations,                 /* -Wmissing-declarations */
+  OPT_Wmissing_field_initializers,           /* -Wmissing-field-initializers */
+  OPT_Wmissing_format_attribute,             /* -Wmissing-format-attribute */
+  OPT_Wmissing_include_dirs,                 /* -Wmissing-include-dirs */
+  OPT_Wmissing_noreturn,                     /* -Wmissing-noreturn */
+  OPT_Wmissing_parameter_type,               /* -Wmissing-parameter-type */
+  OPT_Wmissing_prototypes,                   /* -Wmissing-prototypes */
+  OPT_Wmudflap,                              /* -Wmudflap */
+  OPT_Wmultichar,                            /* -Wmultichar */
+  OPT_Wnested_externs,                       /* -Wnested-externs */
+  OPT_Wnls,                                  /* -Wnls */
+  OPT_Wno_effect_assign,                     /* -Wno-effect-assign */
+  OPT_Wnon_template_friend,                  /* -Wnon-template-friend */
+  OPT_Wnon_virtual_dtor,                     /* -Wnon-virtual-dtor */
+  OPT_Wnonnull,                              /* -Wnonnull */
+  OPT_Wnormalized_,                          /* -Wnormalized= */
+  OPT_Wnull,                                 /* -Wnull */
+  OPT_Wold_style_cast,                       /* -Wold-style-cast */
+  OPT_Wold_style_declaration,                /* -Wold-style-declaration */
+  OPT_Wold_style_definition,                 /* -Wold-style-definition */
+  OPT_Wout_of_date,                          /* -Wout-of-date */
+  OPT_Wover_ann,                             /* -Wover-ann */
+  OPT_Woverflow,                             /* -Woverflow */
+  OPT_Woverlength_strings,                   /* -Woverlength-strings */
+  OPT_Woverloaded_virtual,                   /* -Woverloaded-virtual */
+  OPT_Woverride_init,                        /* -Woverride-init */
+  OPT_Wpacked,                               /* -Wpacked */
+  OPT_Wpacked_bitfield_compat,               /* -Wpacked-bitfield-compat */
+  OPT_Wpadded,                               /* -Wpadded */
+  OPT_Wparam_assign,                         /* -Wparam-assign */
+  OPT_Wparentheses,                          /* -Wparentheses */
+  OPT_Wpkg_default_method,                   /* -Wpkg-default-method */
+  OPT_Wpmf_conversions,                      /* -Wpmf-conversions */
+  OPT_Wpointer_arith,                        /* -Wpointer-arith */
+  OPT_Wpointer_sign,                         /* -Wpointer-sign */
+  OPT_Wpointer_to_int_cast,                  /* -Wpointer-to-int-cast */
+  OPT_Wpragmas,                              /* -Wpragmas */
+  OPT_Wprotocol,                             /* -Wprotocol */
+  OPT_Wpsabi,                                /* -Wpsabi */
+  OPT_Wraw,                                  /* -Wraw */
+  OPT_Wredundant_decls,                      /* -Wredundant-decls */
+  OPT_Wredundant_modifiers,                  /* -Wredundant-modifiers */
+  OPT_Wreorder,                              /* -Wreorder */
+  OPT_Wreturn_type,                          /* -Wreturn-type */
+  OPT_Wselector,                             /* -Wselector */
+  OPT_Wsequence_point,                       /* -Wsequence-point */
+  OPT_Wserial,                               /* -Wserial */
+  OPT_Wshadow,                               /* -Wshadow */
+  OPT_Wsign_compare,                         /* -Wsign-compare */
+  OPT_Wsign_conversion,                      /* -Wsign-conversion */
+  OPT_Wsign_promo,                           /* -Wsign-promo */
+  OPT_Wspecial_param_hiding,                 /* -Wspecial-param-hiding */
+  OPT_Wstack_protector,                      /* -Wstack-protector */
+  OPT_Wstatic_access,                        /* -Wstatic-access */
+  OPT_Wstatic_receiver,                      /* -Wstatic-receiver */
+  OPT_Wstrict_aliasing,                      /* -Wstrict-aliasing */
+  OPT_Wstrict_aliasing_,                     /* -Wstrict-aliasing= */
+  OPT_Wstrict_null_sentinel,                 /* -Wstrict-null-sentinel */
+  OPT_Wstrict_overflow,                      /* -Wstrict-overflow */
+  OPT_Wstrict_overflow_,                     /* -Wstrict-overflow= */
+  OPT_Wstrict_prototypes,                    /* -Wstrict-prototypes */
+  OPT_Wstrict_selector_match,                /* -Wstrict-selector-match */
+  OPT_Wsuppress,                             /* -Wsuppress */
+  OPT_Wsurprising,                           /* -Wsurprising */
+  OPT_Wswitch,                               /* -Wswitch */
+  OPT_Wswitch_default,                       /* -Wswitch-default */
+  OPT_Wswitch_enum,                          /* -Wswitch-enum */
+  OPT_Wsync_nand,                            /* -Wsync-nand */
+  OPT_Wsynth,                                /* -Wsynth */
+  OPT_Wsynthetic_access,                     /* -Wsynthetic-access */
+  OPT_Wsystem_headers,                       /* -Wsystem-headers */
+  OPT_Wtabs,                                 /* -Wtabs */
+  OPT_Wtasks,                                /* -Wtasks */
+  OPT_Wthread_mismatched_lock_acq_rel,       /* -Wthread-mismatched-lock-acq-rel */
+  OPT_Wthread_mismatched_lock_order,         /* -Wthread-mismatched-lock-order */
+  OPT_Wthread_reentrant_lock,                /* -Wthread-reentrant-lock */
+  OPT_Wthread_safety,                        /* -Wthread-safety */
+  OPT_Wthread_unguarded_func,                /* -Wthread-unguarded-func */
+  OPT_Wthread_unguarded_var,                 /* -Wthread-unguarded-var */
+  OPT_Wthread_unsupported_lock_name,         /* -Wthread-unsupported-lock-name */
+  OPT_Wtraditional,                          /* -Wtraditional */
+  OPT_Wtraditional_conversion,               /* -Wtraditional-conversion */
+  OPT_Wtrigraphs,                            /* -Wtrigraphs */
+  OPT_Wtype_hiding,                          /* -Wtype-hiding */
+  OPT_Wtype_limits,                          /* -Wtype-limits */
+  OPT_Wuncheck,                              /* -Wuncheck */
+  OPT_Wundeclared_selector,                  /* -Wundeclared-selector */
+  OPT_Wundef,                                /* -Wundef */
+  OPT_Wunderflow,                            /* -Wunderflow */
+  OPT_Wuninitialized,                        /* -Wuninitialized */
+  OPT_Wunknown_pragmas,                      /* -Wunknown-pragmas */
+  OPT_Wunnecessary_else,                     /* -Wunnecessary-else */
+  OPT_Wunqualified_field,                    /* -Wunqualified-field */
+  OPT_Wunreachable_code,                     /* -Wunreachable-code */
+  OPT_Wunsafe_loop_optimizations,            /* -Wunsafe-loop-optimizations */
+  OPT_Wunused,                               /* -Wunused */
+  OPT_Wunused_argument,                      /* -Wunused-argument */
+  OPT_Wunused_function,                      /* -Wunused-function */
+  OPT_Wunused_import,                        /* -Wunused-import */
+  OPT_Wunused_label,                         /* -Wunused-label */
+  OPT_Wunused_local,                         /* -Wunused-local */
+  OPT_Wunused_macros,                        /* -Wunused-macros */
+  OPT_Wunused_parameter,                     /* -Wunused-parameter */
+  OPT_Wunused_private,                       /* -Wunused-private */
+  OPT_Wunused_thrown,                        /* -Wunused-thrown */
+  OPT_Wunused_value,                         /* -Wunused-value */
+  OPT_Wunused_variable,                      /* -Wunused-variable */
+  OPT_Wuseless_type_check,                   /* -Wuseless-type-check */
+  OPT_Wvarargs_cast,                         /* -Wvarargs-cast */
+  OPT_Wvariadic_macros,                      /* -Wvariadic-macros */
+  OPT_Wvla,                                  /* -Wvla */
+  OPT_Wvolatile_register_var,                /* -Wvolatile-register-var */
+  OPT_Wwarning_token,                        /* -Wwarning-token */
+  OPT_Wwrite_strings,                        /* -Wwrite-strings */
+  OPT_ansi,                                  /* -ansi */
+  OPT_aux_info,                              /* -aux-info */
+  OPT_aux_info_,                             /* -aux-info= */
+  OPT_auxbase,                               /* -auxbase */
+  OPT_auxbase_strip,                         /* -auxbase-strip */
+  OPT_cpp,                                   /* -cpp */
+  OPT_d,                                     /* -d */
+  OPT_dumpbase,                              /* -dumpbase */
+  OPT_fCLASSPATH_,                           /* -fCLASSPATH= */
+  OPT_fPIC,                                  /* -fPIC */
+  OPT_fPIE,                                  /* -fPIE */
+  OPT_fRTS_,                                 /* -fRTS= */
+  OPT_fabi_version_,                         /* -fabi-version= */
+  OPT_faccess_control,                       /* -faccess-control */
+  OPT_falign_commons,                        /* -falign-commons */
+  OPT_falign_functions,                      /* -falign-functions */
+  OPT_falign_functions_,                     /* -falign-functions= */
+  OPT_falign_jumps,                          /* -falign-jumps */
+  OPT_falign_jumps_,                         /* -falign-jumps= */
+  OPT_falign_labels,                         /* -falign-labels */
+  OPT_falign_labels_,                        /* -falign-labels= */
+  OPT_falign_loops,                          /* -falign-loops */
+  OPT_falign_loops_,                         /* -falign-loops= */
+  OPT_fall_intrinsics,                       /* -fall-intrinsics */
+  OPT_fall_virtual,                          /* -fall-virtual */
+  OPT_fallow_leading_underscore,             /* -fallow-leading-underscore */
+  OPT_falt_external_templates,               /* -falt-external-templates */
+  OPT_fargument_alias,                       /* -fargument-alias */
+  OPT_fargument_noalias,                     /* -fargument-noalias */
+  OPT_fargument_noalias_anything,            /* -fargument-noalias-anything */
+  OPT_fargument_noalias_global,              /* -fargument-noalias-global */
+  OPT_fasm,                                  /* -fasm */
+  OPT_fassert,                               /* -fassert */
+  OPT_fassociative_math,                     /* -fassociative-math */
+  OPT_fassume_compiled,                      /* -fassume-compiled */
+  OPT_fassume_compiled_,                     /* -fassume-compiled= */
+  OPT_fasynchronous_unwind_tables,           /* -fasynchronous-unwind-tables */
+  OPT_fauto_inc_dec,                         /* -fauto-inc-dec */
+  OPT_fautomatic,                            /* -fautomatic */
+  OPT_faux_classpath,                        /* -faux-classpath */
+  OPT_fbackslash,                            /* -fbackslash */
+  OPT_fbacktrace,                            /* -fbacktrace */
+  OPT_fblas_matmul_limit_,                   /* -fblas-matmul-limit= */
+  OPT_fbootclasspath_,                       /* -fbootclasspath= */
+  OPT_fbootstrap_classes,                    /* -fbootstrap-classes */
+  OPT_fbounds_check,                         /* -fbounds-check */
+  OPT_fbranch_count_reg,                     /* -fbranch-count-reg */
+  OPT_fbranch_probabilities,                 /* -fbranch-probabilities */
+  OPT_fbranch_target_load_optimize,          /* -fbranch-target-load-optimize */
+  OPT_fbranch_target_load_optimize2,         /* -fbranch-target-load-optimize2 */
+  OPT_fbtr_bb_exclusive,                     /* -fbtr-bb-exclusive */
+  OPT_fbuiltin,                              /* -fbuiltin */
+  OPT_fbuiltin_,                             /* -fbuiltin- */
+  OPT_fcall_saved_,                          /* -fcall-saved- */
+  OPT_fcall_used_,                           /* -fcall-used- */
+  OPT_fcaller_saves,                         /* -fcaller-saves */
+  OPT_fcheck_array_temporaries,              /* -fcheck-array-temporaries */
+  OPT_fcheck_data_deps,                      /* -fcheck-data-deps */
+  OPT_fcheck_new,                            /* -fcheck-new */
+  OPT_fcheck_references,                     /* -fcheck-references */
+  OPT_fclasspath_,                           /* -fclasspath= */
+  OPT_fcommon,                               /* -fcommon */
+  OPT_fcompile_resource_,                    /* -fcompile-resource= */
+  OPT_fcond_mismatch,                        /* -fcond-mismatch */
+  OPT_fconserve_space,                       /* -fconserve-space */
+  OPT_fconserve_stack,                       /* -fconserve-stack */
+  OPT_fconstant_string_class_,               /* -fconstant-string-class= */
+  OPT_fconvert_big_endian,                   /* -fconvert=big-endian */
+  OPT_fconvert_little_endian,                /* -fconvert=little-endian */
+  OPT_fconvert_native,                       /* -fconvert=native */
+  OPT_fconvert_swap,                         /* -fconvert=swap */
+  OPT_fcprop_registers,                      /* -fcprop-registers */
+  OPT_fcray_pointer,                         /* -fcray-pointer */
+  OPT_fcrossjumping,                         /* -fcrossjumping */
+  OPT_fcse_follow_jumps,                     /* -fcse-follow-jumps */
+  OPT_fcse_skip_blocks,                      /* -fcse-skip-blocks */
+  OPT_fcx_fortran_rules,                     /* -fcx-fortran-rules */
+  OPT_fcx_limited_range,                     /* -fcx-limited-range */
+  OPT_fd_lines_as_code,                      /* -fd-lines-as-code */
+  OPT_fd_lines_as_comments,                  /* -fd-lines-as-comments */
+  OPT_fdata_sections,                        /* -fdata-sections */
+  OPT_fdbg_cnt_list,                         /* -fdbg-cnt-list */
+  OPT_fdbg_cnt_,                             /* -fdbg-cnt= */
+  OPT_fdce,                                  /* -fdce */
+  OPT_fdebug_prefix_map_,                    /* -fdebug-prefix-map= */
+  OPT_fdefault_double_8,                     /* -fdefault-double-8 */
+  OPT_fdefault_inline,                       /* -fdefault-inline */
+  OPT_fdefault_integer_8,                    /* -fdefault-integer-8 */
+  OPT_fdefault_real_8,                       /* -fdefault-real-8 */
+  OPT_fdefer_pop,                            /* -fdefer-pop */
+  OPT_fdelayed_branch,                       /* -fdelayed-branch */
+  OPT_fdelete_null_pointer_checks,           /* -fdelete-null-pointer-checks */
+  OPT_fdiagnostics_show_location_,           /* -fdiagnostics-show-location= */
+  OPT_fdiagnostics_show_option,              /* -fdiagnostics-show-option */
+  OPT_fdirectives_only,                      /* -fdirectives-only */
+  OPT_fdisable_assertions,                   /* -fdisable-assertions */
+  OPT_fdisable_assertions_,                  /* -fdisable-assertions= */
+  OPT_fdollar_ok,                            /* -fdollar-ok */
+  OPT_fdollars_in_identifiers,               /* -fdollars-in-identifiers */
+  OPT_fdominance_check,                      /* -fdominance-check */
+  OPT_fdse,                                  /* -fdse */
+  OPT_fdump_,                                /* -fdump- */
+  OPT_fdump_core,                            /* -fdump-core */
+  OPT_fdump_noaddr,                          /* -fdump-noaddr */
+  OPT_fdump_parse_tree,                      /* -fdump-parse-tree */
+  OPT_fdump_unnumbered,                      /* -fdump-unnumbered */
+  OPT_fdwarf2_cfi_asm,                       /* -fdwarf2-cfi-asm */
+  OPT_fearly_inlining,                       /* -fearly-inlining */
+  OPT_felide_constructors,                   /* -felide-constructors */
+  OPT_feliminate_dwarf2_dups,                /* -feliminate-dwarf2-dups */
+  OPT_feliminate_unused_debug_symbols,       /* -feliminate-unused-debug-symbols */
+  OPT_feliminate_unused_debug_types,         /* -feliminate-unused-debug-types */
+  OPT_femit_class_debug_always,              /* -femit-class-debug-always */
+  OPT_femit_class_file,                      /* -femit-class-file */
+  OPT_femit_class_files,                     /* -femit-class-files */
+  OPT_femit_struct_debug_baseonly,           /* -femit-struct-debug-baseonly */
+  OPT_femit_struct_debug_detailed_,          /* -femit-struct-debug-detailed= */
+  OPT_femit_struct_debug_reduced,            /* -femit-struct-debug-reduced */
+  OPT_fenable_assertions,                    /* -fenable-assertions */
+  OPT_fenable_assertions_,                   /* -fenable-assertions= */
+  OPT_fencoding_,                            /* -fencoding= */
+  OPT_fenforce_eh_specs,                     /* -fenforce-eh-specs */
+  OPT_fenum_int_equiv,                       /* -fenum-int-equiv */
+  OPT_fexceptions,                           /* -fexceptions */
+  OPT_fexec_charset_,                        /* -fexec-charset= */
+  OPT_fexpensive_optimizations,              /* -fexpensive-optimizations */
+  OPT_fextdirs_,                             /* -fextdirs= */
+  OPT_fextended_identifiers,                 /* -fextended-identifiers */
+  OPT_fexternal_blas,                        /* -fexternal-blas */
+  OPT_fexternal_templates,                   /* -fexternal-templates */
+  OPT_ff2c,                                  /* -ff2c */
+  OPT_ffast_math,                            /* -ffast-math */
+  OPT_ffilelist_file,                        /* -ffilelist-file */
+  OPT_ffinite_math_only,                     /* -ffinite-math-only */
+  OPT_ffixed_,                               /* -ffixed- */
+  OPT_ffixed_form,                           /* -ffixed-form */
+  OPT_ffixed_line_length_,                   /* -ffixed-line-length- */
+  OPT_ffixed_line_length_none,               /* -ffixed-line-length-none */
+  OPT_ffloat_store,                          /* -ffloat-store */
+  OPT_ffor_scope,                            /* -ffor-scope */
+  OPT_fforce_addr,                           /* -fforce-addr */
+  OPT_fforce_classes_archive_check,          /* -fforce-classes-archive-check */
+  OPT_fforward_propagate,                    /* -fforward-propagate */
+  OPT_ffpe_trap_,                            /* -ffpe-trap= */
+  OPT_ffree_form,                            /* -ffree-form */
+  OPT_ffree_line_length_,                    /* -ffree-line-length- */
+  OPT_ffree_line_length_none,                /* -ffree-line-length-none */
+  OPT_ffreestanding,                         /* -ffreestanding */
+  OPT_ffriend_injection,                     /* -ffriend-injection */
+  OPT_ffunction_cse,                         /* -ffunction-cse */
+  OPT_ffunction_sections,                    /* -ffunction-sections */
+  OPT_fgcse,                                 /* -fgcse */
+  OPT_fgcse_after_reload,                    /* -fgcse-after-reload */
+  OPT_fgcse_las,                             /* -fgcse-las */
+  OPT_fgcse_lm,                              /* -fgcse-lm */
+  OPT_fgcse_sm,                              /* -fgcse-sm */
+  OPT_fgnu_keywords,                         /* -fgnu-keywords */
+  OPT_fgnu_runtime,                          /* -fgnu-runtime */
+  OPT_fgnu89_inline,                         /* -fgnu89-inline */
+  OPT_fgraphite,                             /* -fgraphite */
+  OPT_fgraphite_identity,                    /* -fgraphite-identity */
+  OPT_fguess_branch_probability,             /* -fguess-branch-probability */
+  OPT_fguiding_decls,                        /* -fguiding-decls */
+  OPT_fhandle_exceptions,                    /* -fhandle-exceptions */
+  OPT_fhash_synchronization,                 /* -fhash-synchronization */
+  OPT_fhelp,                                 /* -fhelp */
+  OPT_fhelp_,                                /* -fhelp= */
+  OPT_fhonor_std,                            /* -fhonor-std */
+  OPT_fhosted,                               /* -fhosted */
+  OPT_fhuge_objects,                         /* -fhuge-objects */
+  OPT_fident,                                /* -fident */
+  OPT_fif_conversion,                        /* -fif-conversion */
+  OPT_fif_conversion2,                       /* -fif-conversion2 */
+  OPT_fimplement_inlines,                    /* -fimplement-inlines */
+  OPT_fimplicit_inline_templates,            /* -fimplicit-inline-templates */
+  OPT_fimplicit_none,                        /* -fimplicit-none */
+  OPT_fimplicit_templates,                   /* -fimplicit-templates */
+  OPT_findirect_classes,                     /* -findirect-classes */
+  OPT_findirect_dispatch,                    /* -findirect-dispatch */
+  OPT_findirect_inlining,                    /* -findirect-inlining */
+  OPT_finhibit_size_directive,               /* -finhibit-size-directive */
+  OPT_finit_character_,                      /* -finit-character= */
+  OPT_finit_integer_,                        /* -finit-integer= */
+  OPT_finit_local_zero,                      /* -finit-local-zero */
+  OPT_finit_logical_,                        /* -finit-logical= */
+  OPT_finit_real_,                           /* -finit-real= */
+  OPT_finline,                               /* -finline */
+  OPT_finline_functions,                     /* -finline-functions */
+  OPT_finline_functions_called_once,         /* -finline-functions-called-once */
+  OPT_finline_limit_,                        /* -finline-limit- */
+  OPT_finline_limit_eq,                        /* -finline-limit= */
+  OPT_finline_small_functions,               /* -finline-small-functions */
+  OPT_finput_charset_,                       /* -finput-charset= */
+  OPT_finstrument_functions,                 /* -finstrument-functions */
+  OPT_finstrument_functions_exclude_file_list_,/* -finstrument-functions-exclude-file-list= */
+  OPT_finstrument_functions_exclude_function_list_,/* -finstrument-functions-exclude-function-list= */
+  OPT_fintrinsic_modules_path,               /* -fintrinsic-modules-path */
+  OPT_fipa_cp,                               /* -fipa-cp */
+  OPT_fipa_cp_clone,                         /* -fipa-cp-clone */
+  OPT_fipa_matrix_reorg,                     /* -fipa-matrix-reorg */
+  OPT_fipa_pta,                              /* -fipa-pta */
+  OPT_fipa_pure_const,                       /* -fipa-pure-const */
+  OPT_fipa_reference,                        /* -fipa-reference */
+  OPT_fipa_struct_reorg,                     /* -fipa-struct-reorg */
+  OPT_fipa_type_escape,                      /* -fipa-type-escape */
+  OPT_fira_algorithm_,                       /* -fira-algorithm= */
+  OPT_fira_coalesce,                         /* -fira-coalesce */
+  OPT_fira_region_,                          /* -fira-region= */
+  OPT_fira_share_save_slots,                 /* -fira-share-save-slots */
+  OPT_fira_share_spill_slots,                /* -fira-share-spill-slots */
+  OPT_fira_verbose_,                         /* -fira-verbose= */
+  OPT_fivopts,                               /* -fivopts */
+  OPT_fjni,                                  /* -fjni */
+  OPT_fjump_tables,                          /* -fjump-tables */
+  OPT_fkeep_inline_functions,                /* -fkeep-inline-functions */
+  OPT_fkeep_static_consts,                   /* -fkeep-static-consts */
+  OPT_flabels_ok,                            /* -flabels-ok */
+  OPT_flax_vector_conversions,               /* -flax-vector-conversions */
+  OPT_fleading_underscore,                   /* -fleading-underscore */
+  OPT_floop_block,                           /* -floop-block */
+  OPT_floop_interchange,                     /* -floop-interchange */
+  OPT_floop_optimize,                        /* -floop-optimize */
+  OPT_floop_strip_mine,                      /* -floop-strip-mine */
+  OPT_fmath_errno,                           /* -fmath-errno */
+  OPT_fmax_array_constructor_,               /* -fmax-array-constructor= */
+  OPT_fmax_errors_,                          /* -fmax-errors= */
+  OPT_fmax_identifier_length_,               /* -fmax-identifier-length= */
+  OPT_fmax_stack_var_size_,                  /* -fmax-stack-var-size= */
+  OPT_fmax_subrecord_length_,                /* -fmax-subrecord-length= */
+  OPT_fmem_report,                           /* -fmem-report */
+  OPT_fmerge_all_constants,                  /* -fmerge-all-constants */
+  OPT_fmerge_constants,                      /* -fmerge-constants */
+  OPT_fmerge_debug_strings,                  /* -fmerge-debug-strings */
+  OPT_fmessage_length_,                      /* -fmessage-length= */
+  OPT_fmodule_private,                       /* -fmodule-private */
+  OPT_fmodulo_sched,                         /* -fmodulo-sched */
+  OPT_fmodulo_sched_allow_regmoves,          /* -fmodulo-sched-allow-regmoves */
+  OPT_fmove_loop_invariants,                 /* -fmove-loop-invariants */
+  OPT_fms_extensions,                        /* -fms-extensions */
+  OPT_fmudflap,                              /* -fmudflap */
+  OPT_fmudflapir,                            /* -fmudflapir */
+  OPT_fmudflapth,                            /* -fmudflapth */
+  OPT_fname_mangling_version_,               /* -fname-mangling-version- */
+  OPT_fnew_abi,                              /* -fnew-abi */
+  OPT_fnext_runtime,                         /* -fnext-runtime */
+  OPT_fnil_receivers,                        /* -fnil-receivers */
+  OPT_fnon_call_exceptions,                  /* -fnon-call-exceptions */
+  OPT_fnonansi_builtins,                     /* -fnonansi-builtins */
+  OPT_fnonnull_objects,                      /* -fnonnull-objects */
+  OPT_fobjc_call_cxx_cdtors,                 /* -fobjc-call-cxx-cdtors */
+  OPT_fobjc_direct_dispatch,                 /* -fobjc-direct-dispatch */
+  OPT_fobjc_exceptions,                      /* -fobjc-exceptions */
+  OPT_fobjc_gc,                              /* -fobjc-gc */
+  OPT_fobjc_sjlj_exceptions,                 /* -fobjc-sjlj-exceptions */
+  OPT_fomit_frame_pointer,                   /* -fomit-frame-pointer */
+  OPT_fopenmp,                               /* -fopenmp */
+  OPT_foperator_names,                       /* -foperator-names */
+  OPT_foptimize_register_move,               /* -foptimize-register-move */
+  OPT_foptimize_sibling_calls,               /* -foptimize-sibling-calls */
+  OPT_foptimize_static_class_initialization, /* -foptimize-static-class-initialization */
+  OPT_foptional_diags,                       /* -foptional-diags */
+  OPT_foutput_class_dir_,                    /* -foutput-class-dir= */
+  OPT_fpack_derived,                         /* -fpack-derived */
+  OPT_fpack_struct,                          /* -fpack-struct */
+  OPT_fpack_struct_,                         /* -fpack-struct= */
+  OPT_fpcc_struct_return,                    /* -fpcc-struct-return */
+  OPT_fpch_deps,                             /* -fpch-deps */
+  OPT_fpch_preprocess,                       /* -fpch-preprocess */
+  OPT_fpeel_loops,                           /* -fpeel-loops */
+  OPT_fpeephole,                             /* -fpeephole */
+  OPT_fpeephole2,                            /* -fpeephole2 */
+  OPT_fpermissive,                           /* -fpermissive */
+  OPT_fpic,                                  /* -fpic */
+  OPT_fpie,                                  /* -fpie */
+  OPT_fplugin_arg_,                          /* -fplugin-arg- */
+  OPT_fplugin_,                              /* -fplugin= */
+  OPT_fpost_ipa_mem_report,                  /* -fpost-ipa-mem-report */
+  OPT_fpre_ipa_mem_report,                   /* -fpre-ipa-mem-report */
+  OPT_fpredictive_commoning,                 /* -fpredictive-commoning */
+  OPT_fprefetch_loop_arrays,                 /* -fprefetch-loop-arrays */
+  OPT_fpreprocessed,                         /* -fpreprocessed */
+  OPT_fprofile,                              /* -fprofile */
+  OPT_fprofile_arcs,                         /* -fprofile-arcs */
+  OPT_fprofile_correction,                   /* -fprofile-correction */
+  OPT_fprofile_dir_,                         /* -fprofile-dir= */
+  OPT_fprofile_dump,                         /* -fprofile-dump */
+  OPT_fprofile_generate,                     /* -fprofile-generate */
+  OPT_fprofile_generate_,                    /* -fprofile-generate= */
+  OPT_fprofile_use,                          /* -fprofile-use */
+  OPT_fprofile_use_,                         /* -fprofile-use= */
+  OPT_fprofile_values,                       /* -fprofile-values */
+  OPT_frandom_seed,                          /* -frandom-seed */
+  OPT_frandom_seed_,                         /* -frandom-seed= */
+  OPT_frange_check,                          /* -frange-check */
+  OPT_freciprocal_math,                      /* -freciprocal-math */
+  OPT_frecord_gcc_switches,                  /* -frecord-gcc-switches */
+  OPT_frecord_marker_4,                      /* -frecord-marker=4 */
+  OPT_frecord_marker_8,                      /* -frecord-marker=8 */
+  OPT_frecursive,                            /* -frecursive */
+  OPT_freduced_reflection,                   /* -freduced-reflection */
+  OPT_freg_struct_return,                    /* -freg-struct-return */
+  OPT_fregmove,                              /* -fregmove */
+  OPT_frename_registers,                     /* -frename-registers */
+  OPT_freorder_blocks,                       /* -freorder-blocks */
+  OPT_freorder_blocks_and_partition,         /* -freorder-blocks-and-partition */
+  OPT_freorder_functions,                    /* -freorder-functions */
+  OPT_frepack_arrays,                        /* -frepack-arrays */
+  OPT_freplace_objc_classes,                 /* -freplace-objc-classes */
+  OPT_frepo,                                 /* -frepo */
+  OPT_frerun_cse_after_loop,                 /* -frerun-cse-after-loop */
+  OPT_frerun_loop_opt,                       /* -frerun-loop-opt */
+  OPT_freschedule_modulo_scheduled_loops,    /* -freschedule-modulo-scheduled-loops */
+  OPT_frounding_math,                        /* -frounding-math */
+  OPT_frtl_abstract_sequences,               /* -frtl-abstract-sequences */
+  OPT_frtti,                                 /* -frtti */
+  OPT_fsample_profile,                       /* -fsample-profile */
+  OPT_fsample_profile_,                      /* -fsample-profile= */
+  OPT_fsaw_java_file,                        /* -fsaw-java-file */
+  OPT_fsched_interblock,                     /* -fsched-interblock */
+  OPT_fsched_spec,                           /* -fsched-spec */
+  OPT_fsched_spec_load,                      /* -fsched-spec-load */
+  OPT_fsched_spec_load_dangerous,            /* -fsched-spec-load-dangerous */
+  OPT_fsched_stalled_insns,                  /* -fsched-stalled-insns */
+  OPT_fsched_stalled_insns_dep,              /* -fsched-stalled-insns-dep */
+  OPT_fsched_stalled_insns_dep_,             /* -fsched-stalled-insns-dep= */
+  OPT_fsched_stalled_insns_,                 /* -fsched-stalled-insns= */
+  OPT_fsched_verbose_,                       /* -fsched-verbose= */
+  OPT_fsched2_use_superblocks,               /* -fsched2-use-superblocks */
+  OPT_fsched2_use_traces,                    /* -fsched2-use-traces */
+  OPT_fschedule_insns,                       /* -fschedule-insns */
+  OPT_fschedule_insns2,                      /* -fschedule-insns2 */
+  OPT_fsecond_underscore,                    /* -fsecond-underscore */
+  OPT_fsection_anchors,                      /* -fsection-anchors */
+  OPT_fsee,                                  /* -fsee */
+  OPT_fsel_sched_pipelining,                 /* -fsel-sched-pipelining */
+  OPT_fsel_sched_pipelining_outer_loops,     /* -fsel-sched-pipelining-outer-loops */
+  OPT_fsel_sched_reschedule_pipelined,       /* -fsel-sched-reschedule-pipelined */
+  OPT_fselective_scheduling,                 /* -fselective-scheduling */
+  OPT_fselective_scheduling2,                /* -fselective-scheduling2 */
+  OPT_fshort_double,                         /* -fshort-double */
+  OPT_fshort_enums,                          /* -fshort-enums */
+  OPT_fshort_wchar,                          /* -fshort-wchar */
+  OPT_fshow_column,                          /* -fshow-column */
+  OPT_fsign_zero,                            /* -fsign-zero */
+  OPT_fsignaling_nans,                       /* -fsignaling-nans */
+  OPT_fsigned_bitfields,                     /* -fsigned-bitfields */
+  OPT_fsigned_char,                          /* -fsigned-char */
+  OPT_fsigned_zeros,                         /* -fsigned-zeros */
+  OPT_fsingle_precision_constant,            /* -fsingle-precision-constant */
+  OPT_fsource_filename_,                     /* -fsource-filename= */
+  OPT_fsource_,                              /* -fsource= */
+  OPT_fsplit_ivs_in_unroller,                /* -fsplit-ivs-in-unroller */
+  OPT_fsplit_wide_types,                     /* -fsplit-wide-types */
+  OPT_fsquangle,                             /* -fsquangle */
+  OPT_fstack_check,                          /* -fstack-check */
+  OPT_fstack_check_,                         /* -fstack-check= */
+  OPT_fstack_limit,                          /* -fstack-limit */
+  OPT_fstack_limit_register_,                /* -fstack-limit-register= */
+  OPT_fstack_limit_symbol_,                  /* -fstack-limit-symbol= */
+  OPT_fstack_protector,                      /* -fstack-protector */
+  OPT_fstack_protector_all,                  /* -fstack-protector-all */
+  OPT_fstats,                                /* -fstats */
+  OPT_fstore_check,                          /* -fstore-check */
+  OPT_fstrength_reduce,                      /* -fstrength-reduce */
+  OPT_fstrict_aliasing,                      /* -fstrict-aliasing */
+  OPT_fstrict_overflow,                      /* -fstrict-overflow */
+  OPT_fstrict_prototype,                     /* -fstrict-prototype */
+  OPT_fsyntax_only,                          /* -fsyntax-only */
+  OPT_ftabstop_,                             /* -ftabstop= */
+  OPT_ftarget_help,                          /* -ftarget-help */
+  OPT_ftarget_,                              /* -ftarget= */
+  OPT_ftemplate_depth_,                      /* -ftemplate-depth- */
+  OPT_ftest_coverage,                        /* -ftest-coverage */
+  OPT_fthis_is_variable,                     /* -fthis-is-variable */
+  OPT_fthread_jumps,                         /* -fthread-jumps */
+  OPT_fthreadsafe_statics,                   /* -fthreadsafe-statics */
+  OPT_ftime_report,                          /* -ftime-report */
+  OPT_ftls_model_,                           /* -ftls-model= */
+  OPT_ftoplevel_reorder,                     /* -ftoplevel-reorder */
+  OPT_ftracer,                               /* -ftracer */
+  OPT_ftrapping_math,                        /* -ftrapping-math */
+  OPT_ftrapv,                                /* -ftrapv */
+  OPT_ftree_builtin_call_dce,                /* -ftree-builtin-call-dce */
+  OPT_ftree_ccp,                             /* -ftree-ccp */
+  OPT_ftree_ch,                              /* -ftree-ch */
+  OPT_ftree_copy_prop,                       /* -ftree-copy-prop */
+  OPT_ftree_copyrename,                      /* -ftree-copyrename */
+  OPT_ftree_cselim,                          /* -ftree-cselim */
+  OPT_ftree_dce,                             /* -ftree-dce */
+  OPT_ftree_dominator_opts,                  /* -ftree-dominator-opts */
+  OPT_ftree_dse,                             /* -ftree-dse */
+  OPT_ftree_fre,                             /* -ftree-fre */
+  OPT_ftree_loop_distribution,               /* -ftree-loop-distribution */
+  OPT_ftree_loop_im,                         /* -ftree-loop-im */
+  OPT_ftree_loop_ivcanon,                    /* -ftree-loop-ivcanon */
+  OPT_ftree_loop_linear,                     /* -ftree-loop-linear */
+  OPT_ftree_loop_optimize,                   /* -ftree-loop-optimize */
+  OPT_ftree_lrs,                             /* -ftree-lrs */
+  OPT_ftree_parallelize_loops_,              /* -ftree-parallelize-loops= */
+  OPT_ftree_pre,                             /* -ftree-pre */
+  OPT_ftree_reassoc,                         /* -ftree-reassoc */
+  OPT_ftree_salias,                          /* -ftree-salias */
+  OPT_ftree_scev_cprop,                      /* -ftree-scev-cprop */
+  OPT_ftree_sink,                            /* -ftree-sink */
+  OPT_ftree_sra,                             /* -ftree-sra */
+  OPT_ftree_store_ccp,                       /* -ftree-store-ccp */
+  OPT_ftree_store_copy_prop,                 /* -ftree-store-copy-prop */
+  OPT_ftree_switch_conversion,               /* -ftree-switch-conversion */
+  OPT_ftree_ter,                             /* -ftree-ter */
+  OPT_ftree_vect_loop_version,               /* -ftree-vect-loop-version */
+  OPT_ftree_vectorize,                       /* -ftree-vectorize */
+  OPT_ftree_vectorizer_verbose_,             /* -ftree-vectorizer-verbose= */
+  OPT_ftree_vrp,                             /* -ftree-vrp */
+  OPT_funderscoring,                         /* -funderscoring */
+  OPT_funit_at_a_time,                       /* -funit-at-a-time */
+  OPT_funroll_all_loops,                     /* -funroll-all-loops */
+  OPT_funroll_loops,                         /* -funroll-loops */
+  OPT_funsafe_loop_optimizations,            /* -funsafe-loop-optimizations */
+  OPT_funsafe_math_optimizations,            /* -funsafe-math-optimizations */
+  OPT_funsigned_bitfields,                   /* -funsigned-bitfields */
+  OPT_funsigned_char,                        /* -funsigned-char */
+  OPT_funswitch_loops,                       /* -funswitch-loops */
+  OPT_funwind_tables,                        /* -funwind-tables */
+  OPT_fuse_boehm_gc,                         /* -fuse-boehm-gc */
+  OPT_fuse_cxa_atexit,                       /* -fuse-cxa-atexit */
+  OPT_fuse_cxa_get_exception_ptr,            /* -fuse-cxa-get-exception-ptr */
+  OPT_fuse_divide_subroutine,                /* -fuse-divide-subroutine */
+  OPT_fvar_tracking,                         /* -fvar-tracking */
+  OPT_fvar_tracking_uninit,                  /* -fvar-tracking-uninit */
+  OPT_fvariable_expansion_in_unroller,       /* -fvariable-expansion-in-unroller */
+  OPT_fvect_cost_model,                      /* -fvect-cost-model */
+  OPT_fverbose_asm,                          /* -fverbose-asm */
+  OPT_fversion,                              /* -fversion */
+  OPT_fvisibility_inlines_hidden,            /* -fvisibility-inlines-hidden */
+  OPT_fvisibility_ms_compat,                 /* -fvisibility-ms-compat */
+  OPT_fvisibility_,                          /* -fvisibility= */
+  OPT_fvpt,                                  /* -fvpt */
+  OPT_fvtable_gc,                            /* -fvtable-gc */
+  OPT_fvtable_thunks,                        /* -fvtable-thunks */
+  OPT_fweak,                                 /* -fweak */
+  OPT_fweb,                                  /* -fweb */
+  OPT_fwhole_program,                        /* -fwhole-program */
+  OPT_fwide_exec_charset_,                   /* -fwide-exec-charset= */
+  OPT_fworking_directory,                    /* -fworking-directory */
+  OPT_fwrapv,                                /* -fwrapv */
+  OPT_fxref,                                 /* -fxref */
+  OPT_fzero_initialized_in_bss,              /* -fzero-initialized-in-bss */
+  OPT_fzero_link,                            /* -fzero-link */
+  OPT_g,                                     /* -g */
+  OPT_gant,                                  /* -gant */
+  OPT_gcoff,                                 /* -gcoff */
+  OPT_gdwarf_,                               /* -gdwarf+ */
+  OPT_gdwarf_2,                              /* -gdwarf-2 */
+  OPT_gdwarf_4,                              /* -gdwarf-4 */
+  OPT_gen_decls,                             /* -gen-decls */
+  OPT_ggdb,                                  /* -ggdb */
+  OPT_gnat,                                  /* -gnat */
+  OPT_gnatO,                                 /* -gnatO */
+  OPT_gstabs,                                /* -gstabs */
+  OPT_gstabs_,                               /* -gstabs+ */
+  OPT_gvms,                                  /* -gvms */
+  OPT_gxcoff,                                /* -gxcoff */
+  OPT_gxcoff_,                               /* -gxcoff+ */
+  OPT_idirafter,                             /* -idirafter */
+  OPT_imacros,                               /* -imacros */
+  OPT_imultilib,                             /* -imultilib */
+  OPT_include,                               /* -include */
+  OPT_iprefix,                               /* -iprefix */
+  OPT_iquote,                                /* -iquote */
+  OPT_isysroot,                              /* -isysroot */
+  OPT_isystem,                               /* -isystem */
+  OPT_iwithprefix,                           /* -iwithprefix */
+  OPT_iwithprefixbefore,                     /* -iwithprefixbefore */
+  OPT_lang_asm,                              /* -lang-asm */
+  OPT_lang_objc,                             /* -lang-objc */
+  OPT_mabi_,                                 /* -mabi= */
+  OPT_mabort_on_noreturn,                    /* -mabort-on-noreturn */
+  OPT_mandroid,                              /* -mandroid */
+  OPT_mapcs,                                 /* -mapcs */
+  OPT_mapcs_float,                           /* -mapcs-float */
+  OPT_mapcs_frame,                           /* -mapcs-frame */
+  OPT_mapcs_reentrant,                       /* -mapcs-reentrant */
+  OPT_mapcs_stack_check,                     /* -mapcs-stack-check */
+  OPT_march_,                                /* -march= */
+  OPT_marm,                                  /* -marm */
+  OPT_mbig_endian,                           /* -mbig-endian */
+  OPT_mcallee_super_interworking,            /* -mcallee-super-interworking */
+  OPT_mcaller_super_interworking,            /* -mcaller-super-interworking */
+  OPT_mcirrus_fix_invalid_insns,             /* -mcirrus-fix-invalid-insns */
+  OPT_mcpu_,                                 /* -mcpu= */
+  OPT_mfix_cortex_m3_ldrd,                   /* -mfix-cortex-m3-ldrd */
+  OPT_mfloat_abi_,                           /* -mfloat-abi= */
+  OPT_mfp_,                                  /* -mfp= */
+  OPT_mfpe,                                  /* -mfpe */
+  OPT_mfpe_,                                 /* -mfpe= */
+  OPT_mfpu_,                                 /* -mfpu= */
+  OPT_mhard_float,                           /* -mhard-float */
+  OPT_mlittle_endian,                        /* -mlittle-endian */
+  OPT_mlong_calls,                           /* -mlong-calls */
+  OPT_mpic_register_,                        /* -mpic-register= */
+  OPT_mpoke_function_name,                   /* -mpoke-function-name */
+  OPT_msched_prolog,                         /* -msched-prolog */
+  OPT_msingle_pic_base,                      /* -msingle-pic-base */
+  OPT_msoft_float,                           /* -msoft-float */
+  OPT_mstructure_size_boundary_,             /* -mstructure-size-boundary= */
+  OPT_mthumb,                                /* -mthumb */
+  OPT_mthumb_interwork,                      /* -mthumb-interwork */
+  OPT_mtp_,                                  /* -mtp= */
+  OPT_mtpcs_frame,                           /* -mtpcs-frame */
+  OPT_mtpcs_leaf_frame,                      /* -mtpcs-leaf-frame */
+  OPT_mtune_,                                /* -mtune= */
+  OPT_mvectorize_with_neon_quad,             /* -mvectorize-with-neon-quad */
+  OPT_mword_relocations,                     /* -mword-relocations */
+  OPT_mwords_little_endian,                  /* -mwords-little-endian */
+  OPT_nocpp,                                 /* -nocpp */
+  OPT_nostdinc,                              /* -nostdinc */
+  OPT_nostdinc__,                            /* -nostdinc++ */
+  OPT_nostdlib,                              /* -nostdlib */
+  OPT_o,                                     /* -o */
+  OPT_p,                                     /* -p */
+  OPT_pedantic,                              /* -pedantic */
+  OPT_pedantic_errors,                       /* -pedantic-errors */
+  OPT_pie,                                   /* -pie */
+  OPT_print_objc_runtime_info,               /* -print-objc-runtime-info */
+  OPT_print_pch_checksum,                    /* -print-pch-checksum */
+  OPT_quiet,                                 /* -quiet */
+  OPT_remap,                                 /* -remap */
+  OPT_shared,                                /* -shared */
+  OPT_static_libgfortran,                    /* -static-libgfortran */
+  OPT_std_c__0x,                             /* -std=c++0x */
+  OPT_std_c__98,                             /* -std=c++98 */
+  OPT_std_c89,                               /* -std=c89 */
+  OPT_std_c99,                               /* -std=c99 */
+  OPT_std_c9x,                               /* -std=c9x */
+  OPT_std_f2003,                             /* -std=f2003 */
+  OPT_std_f2008,                             /* -std=f2008 */
+  OPT_std_f95,                               /* -std=f95 */
+  OPT_std_gnu,                               /* -std=gnu */
+  OPT_std_gnu__0x,                           /* -std=gnu++0x */
+  OPT_std_gnu__98,                           /* -std=gnu++98 */
+  OPT_std_gnu89,                             /* -std=gnu89 */
+  OPT_std_gnu99,                             /* -std=gnu99 */
+  OPT_std_gnu9x,                             /* -std=gnu9x */
+  OPT_std_iso9899_1990,                      /* -std=iso9899:1990 */
+  OPT_std_iso9899_199409,                    /* -std=iso9899:199409 */
+  OPT_std_iso9899_1999,                      /* -std=iso9899:1999 */
+  OPT_std_iso9899_199x,                      /* -std=iso9899:199x */
+  OPT_std_legacy,                            /* -std=legacy */
+  OPT_traditional_cpp,                       /* -traditional-cpp */
+  OPT_trigraphs,                             /* -trigraphs */
+  OPT_undef,                                 /* -undef */
+  OPT_v,                                     /* -v */
+  OPT_version,                               /* -version */
+  OPT_w,                                     /* -w */
+  N_OPTS
+};
+
+#endif /* OPTIONS_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/partition.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/partition.h
new file mode 100644 (file)
index 0000000..d8b554f
--- /dev/null
@@ -0,0 +1,82 @@
+/* List implementation of a partition of consecutive integers.
+   Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+   Contributed by CodeSourcery, LLC.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING.  If not, write to
+   the Free Software Foundation, 51 Franklin Street - Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* This package implements a partition of consecutive integers.  The
+   elements are partitioned into classes.  Each class is represented
+   by one of its elements, the canonical element, which is chosen
+   arbitrarily from elements in the class.  The principal operations
+   on a partition are FIND, which takes an element, determines its
+   class, and returns the canonical element for that class, and UNION,
+   which unites the two classes that contain two given elements into a
+   single class.
+
+   The list implementation used here provides constant-time finds.  By
+   storing the size of each class with the class's canonical element,
+   it is able to perform unions over all the classes in the partition
+   in O (N log N) time.  */
+
+#ifndef _PARTITION_H
+#define _PARTITION_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#include "ansidecl.h"
+#include <stdio.h>
+
+struct partition_elem
+{
+  /* The canonical element that represents the class containing this
+     element.  */
+  int class_element;
+  /* The next element in this class.  Elements in each class form a
+     circular list.  */
+  struct partition_elem* next;
+  /* The number of elements in this class.  Valid only if this is the
+     canonical element for its class.  */
+  unsigned class_count;
+};
+
+typedef struct partition_def 
+{
+  /* The number of elements in this partition.  */
+  int num_elements;
+  /* The elements in the partition.  */
+  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*);
+
+/* Returns the canonical element corresponding to the class containing
+   ELEMENT__ in PARTITION__.  */
+
+#define partition_find(partition__, element__) \
+    ((partition__)->elements[(element__)].class_element)
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* _PARTITION_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/plugin-version.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/plugin-version.h
new file mode 100644 (file)
index 0000000..852f91d
--- /dev/null
@@ -0,0 +1,13 @@
+#include "configargs.h"
+
+static char basever[] = "4.4.0";
+static char datestamp[] = "20090421";
+static char devphase[] = "";
+static char revision[] = "";
+
+/* FIXME plugins: We should make the version information more precise.
+   One way to do is to add a checksum. */
+
+static struct plugin_gcc_version gcc_version = {basever, datestamp,
+                                               devphase, revision,
+                                               configuration_arguments};
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/pointer-set.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/pointer-set.h
new file mode 100644 (file)
index 0000000..d6f95c0
--- /dev/null
@@ -0,0 +1,53 @@
+/* Set operations on pointers
+   Copyright (C) 2004, 2007 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef POINTER_SET_H
+#define POINTER_SET_H
+
+struct pointer_set_t;
+struct pointer_set_t *pointer_set_create (void);
+void pointer_set_destroy (struct pointer_set_t *pset);
+struct pointer_set_t *pointer_set_copy (const struct pointer_set_t *pset);
+
+int pointer_set_contains (const struct pointer_set_t *pset, const void *p);
+int pointer_set_insert (struct pointer_set_t *pset, const void *p);
+int pointer_set_delete (struct pointer_set_t *pset, const void *p);
+void pointer_set_traverse (const struct pointer_set_t *,
+                          bool (*) (const void *, void *),
+                          void *);
+
+void pointer_set_intersection_complement (struct pointer_set_t *dst_pset,
+                                          const struct pointer_set_t *src_pset,
+                                          struct pointer_set_t *comp_pset);
+
+void pointer_set_union_inplace (struct pointer_set_t *dst_pset,
+                                const struct pointer_set_t *src_pset);
+
+size_t pointer_set_cardinality (const struct pointer_set_t *pset);
+
+struct pointer_map_t;
+struct pointer_map_t *pointer_map_create (void);
+void pointer_map_destroy (struct pointer_map_t *pmap);
+
+void **pointer_map_contains (const struct pointer_map_t *pmap, const void *p);
+void **pointer_map_insert (struct pointer_map_t *pmap, const void *p);
+void pointer_map_traverse (const struct pointer_map_t *,
+                          bool (*) (const void *, void **, void *), void *);
+
+#endif  /* POINTER_SET_H  */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/predict.def b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/predict.def
new file mode 100644 (file)
index 0000000..3ac129e
--- /dev/null
@@ -0,0 +1,118 @@
+/* Definitions for the branch prediction routines in the GNU compiler.
+   Copyright (C) 2001, 2003, 2004, 2007, 2008 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* Before including this file, you should define a macro:
+
+     DEF_PREDICTOR (ENUM, NAME, HITRATE)
+
+   This macro will be called once for each predictor.  The ENUM will
+   be of type `enum predictor', and will enumerate all supported
+   predictors.  The order of DEF_PREDICTOR calls is important, as
+   in the first match combining heuristics, the predictor appearing
+   first in this file will win.
+
+   NAME is used in the debugging output to determine predictor type.
+
+   HITRATE is the probability that edge predicted by predictor as taken
+   will be really taken (so it should be always above
+   REG_BR_PROB_BASE / 2).  */
+   
+
+/* A value used as final outcome of all heuristics.  */
+DEF_PREDICTOR (PRED_COMBINED, "combined", PROB_ALWAYS, 0)
+
+/* An outcome estimated by Dempster-Shaffer theory.  */
+DEF_PREDICTOR (PRED_DS_THEORY, "DS theory", PROB_ALWAYS, 0)
+
+/* A combined heuristics using probability determined by first
+   matching heuristics from this list.  */
+DEF_PREDICTOR (PRED_FIRST_MATCH, "first match", PROB_ALWAYS, 0)
+
+/* Heuristic applying when no heuristic below applies.  */
+DEF_PREDICTOR (PRED_NO_PREDICTION, "no prediction", PROB_ALWAYS, 0)
+
+/* Mark unconditional jump as taken.  */
+DEF_PREDICTOR (PRED_UNCONDITIONAL, "unconditional jump", PROB_ALWAYS,
+              PRED_FLAG_FIRST_MATCH)
+
+/* Use number of loop iterations determined by # of iterations
+   analysis to set probability.  We don't want to use Dempster-Shaffer
+   theory here, as the predictions is exact.  */
+DEF_PREDICTOR (PRED_LOOP_ITERATIONS, "loop iterations", PROB_ALWAYS,
+              PRED_FLAG_FIRST_MATCH)
+
+/* Hints dropped by user via __builtin_expect feature.  */
+DEF_PREDICTOR (PRED_BUILTIN_EXPECT, "__builtin_expect", PROB_VERY_LIKELY,
+              PRED_FLAG_FIRST_MATCH)
+
+/* Use number of loop iterations guessed by the contents of the loop.  */
+DEF_PREDICTOR (PRED_LOOP_ITERATIONS_GUESSED, "guessed loop iterations",
+              PROB_ALWAYS, PRED_FLAG_FIRST_MATCH)
+
+/* Branch containing goto is probably not taken.  */
+DEF_PREDICTOR (PRED_CONTINUE, "continue", HITRATE (50), 0)
+
+/* Branch to basic block containing call marked by noreturn attribute.  */
+DEF_PREDICTOR (PRED_NORETURN, "noreturn call", PROB_VERY_LIKELY,
+              PRED_FLAG_FIRST_MATCH)
+
+/* Branch to basic block containing call marked by cold function attribute.  */
+DEF_PREDICTOR (PRED_COLD_FUNCTION, "cold function call", PROB_VERY_LIKELY,
+              PRED_FLAG_FIRST_MATCH)
+
+/* Loopback edge is taken.  */
+DEF_PREDICTOR (PRED_LOOP_BRANCH, "loop branch", HITRATE (86),
+              PRED_FLAG_FIRST_MATCH)
+
+/* Edge causing loop to terminate is probably not taken.  */
+DEF_PREDICTOR (PRED_LOOP_EXIT, "loop exit", HITRATE (91),
+              PRED_FLAG_FIRST_MATCH)
+
+/* Pointers are usually not NULL.  */
+DEF_PREDICTOR (PRED_POINTER, "pointer", HITRATE (85), 0)
+DEF_PREDICTOR (PRED_TREE_POINTER, "pointer (on trees)", HITRATE (85), 0)
+
+/* NE is probable, EQ not etc...  */
+DEF_PREDICTOR (PRED_OPCODE_POSITIVE, "opcode values positive", HITRATE (79), 0)
+DEF_PREDICTOR (PRED_OPCODE_NONEQUAL, "opcode values nonequal", HITRATE (71), 0)
+DEF_PREDICTOR (PRED_FPOPCODE, "fp_opcode", HITRATE (90), 0)
+DEF_PREDICTOR (PRED_TREE_OPCODE_POSITIVE, "opcode values positive (on trees)", HITRATE (73), 0)
+DEF_PREDICTOR (PRED_TREE_OPCODE_NONEQUAL, "opcode values nonequal (on trees)", HITRATE (72), 0)
+DEF_PREDICTOR (PRED_TREE_FPOPCODE, "fp_opcode (on trees)", HITRATE (90), 0)
+
+/* Branch guarding call is probably taken.  */
+DEF_PREDICTOR (PRED_CALL, "call", HITRATE (71), 0)
+
+/* Branch causing function to terminate is probably not taken.  */
+DEF_PREDICTOR (PRED_TREE_EARLY_RETURN, "early return (on trees)", HITRATE (61), 0)
+
+/* Branch containing goto is probably not taken.  */
+DEF_PREDICTOR (PRED_GOTO, "goto", HITRATE (70), 0)
+
+/* Branch ending with return constant is probably not taken.  */
+DEF_PREDICTOR (PRED_CONST_RETURN, "const return", HITRATE (67), 0)
+
+/* Branch ending with return negative constant is probably not taken.  */
+DEF_PREDICTOR (PRED_NEGATIVE_RETURN, "negative return", HITRATE (96), 0)
+
+/* Branch ending with return; is probably not taken */
+DEF_PREDICTOR (PRED_NULL_RETURN, "null return", HITRATE (90), 0)
+
+/* Branches to a mudflap bounds check are extremely unlikely.  */
+DEF_PREDICTOR (PRED_MUDFLAP, "mudflap check", PROB_VERY_LIKELY, 0)
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/predict.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/predict.h
new file mode 100644 (file)
index 0000000..e115bb5
--- /dev/null
@@ -0,0 +1,44 @@
+/* Definitions for branch prediction routines in the GNU compiler.
+   Copyright (C) 2001, 2003, 2004, 2007, 2008 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_PREDICT_H
+#define GCC_PREDICT_H
+
+#define DEF_PREDICTOR(ENUM, NAME, HITRATE, FLAGS) ENUM,
+enum br_predictor
+{
+#include "predict.def"
+
+  /* Upper bound on non-language-specific builtins.  */
+  END_PREDICTORS
+};
+#undef DEF_PREDICTOR
+enum prediction
+{
+   NOT_TAKEN,
+   TAKEN
+};
+
+extern void predict_insn_def (rtx, enum br_predictor, enum prediction);
+extern int counts_to_freqs (void);
+extern void estimate_bb_frequencies (void);
+extern const char *predictor_name (enum br_predictor);
+extern tree build_predict_expr (enum br_predictor, enum prediction);
+
+#endif  /* GCC_PREDICT_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/safe-ctype.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/safe-ctype.h
new file mode 100644 (file)
index 0000000..0266bf1
--- /dev/null
@@ -0,0 +1,150 @@
+/* <ctype.h> replacement macros.
+
+   Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+   Contributed by Zack Weinberg <zackw@stanford.edu>.
+
+This file is part of the libiberty library.
+Libiberty is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libiberty is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with libiberty; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
+Boston, MA 02110-1301, USA.  */
+
+/* This is a compatible replacement of the standard C library's <ctype.h>
+   with the following properties:
+
+   - Implements all isxxx() macros required by C99.
+   - Also implements some character classes useful when
+     parsing C-like languages.
+   - Does not change behavior depending on the current locale.
+   - Behaves properly for all values in the range of a signed or
+     unsigned char.
+
+   To avoid conflicts, this header defines the isxxx functions in upper
+   case, e.g. ISALPHA not isalpha.  */
+
+#ifndef SAFE_CTYPE_H
+#define SAFE_CTYPE_H
+
+/* Determine host character set.  */
+#define HOST_CHARSET_UNKNOWN 0
+#define HOST_CHARSET_ASCII   1
+#define HOST_CHARSET_EBCDIC  2
+
+#if  '\n' == 0x0A && ' ' == 0x20 && '0' == 0x30 \
+   && 'A' == 0x41 && 'a' == 0x61 && '!' == 0x21
+#  define HOST_CHARSET HOST_CHARSET_ASCII
+#else
+# if '\n' == 0x15 && ' ' == 0x40 && '0' == 0xF0 \
+   && 'A' == 0xC1 && 'a' == 0x81 && '!' == 0x5A
+#  define HOST_CHARSET HOST_CHARSET_EBCDIC
+# else
+#  define HOST_CHARSET HOST_CHARSET_UNKNOWN
+# endif
+#endif
+
+/* Categories.  */
+
+enum {
+  /* In C99 */
+  _sch_isblank  = 0x0001,      /* space \t */
+  _sch_iscntrl  = 0x0002,      /* nonprinting characters */
+  _sch_isdigit  = 0x0004,      /* 0-9 */
+  _sch_islower  = 0x0008,      /* a-z */
+  _sch_isprint  = 0x0010,      /* any printing character including ' ' */
+  _sch_ispunct  = 0x0020,      /* all punctuation */
+  _sch_isspace  = 0x0040,      /* space \t \n \r \f \v */
+  _sch_isupper  = 0x0080,      /* A-Z */
+  _sch_isxdigit = 0x0100,      /* 0-9A-Fa-f */
+
+  /* Extra categories useful to cpplib.  */
+  _sch_isidst  = 0x0200,       /* A-Za-z_ */
+  _sch_isvsp    = 0x0400,      /* \n \r */
+  _sch_isnvsp   = 0x0800,      /* space \t \f \v \0 */
+
+  /* Combinations of the above.  */
+  _sch_isalpha  = _sch_isupper|_sch_islower,   /* A-Za-z */
+  _sch_isalnum  = _sch_isalpha|_sch_isdigit,   /* A-Za-z0-9 */
+  _sch_isidnum  = _sch_isidst|_sch_isdigit,    /* A-Za-z0-9_ */
+  _sch_isgraph  = _sch_isalnum|_sch_ispunct,   /* isprint and not space */
+  _sch_iscppsp  = _sch_isvsp|_sch_isnvsp,      /* isspace + \0 */
+  _sch_isbasic  = _sch_isprint|_sch_iscppsp     /* basic charset of ISO C
+                                                  (plus ` and @)  */
+};
+
+/* Character classification.  */
+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)
+
+/* Character transformation.  */
+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]
+
+/* Prevent the users of safe-ctype.h from accidently using the routines
+   from ctype.h.  Initially, the approach was to produce an error when
+   detecting that ctype.h has been included.  But this was causing
+   trouble as ctype.h might get indirectly included as a result of
+   including another system header (for instance gnulib's stdint.h).
+   So we include ctype.h here and then immediately redefine its macros.  */
+
+#include <ctype.h>
+#undef isalpha
+#define isalpha(c) do_not_use_isalpha_with_safe_ctype
+#undef isalnum
+#define isalnum(c) do_not_use_isalnum_with_safe_ctype
+#undef iscntrl
+#define iscntrl(c) do_not_use_iscntrl_with_safe_ctype
+#undef isdigit
+#define isdigit(c) do_not_use_isdigit_with_safe_ctype
+#undef isgraph
+#define isgraph(c) do_not_use_isgraph_with_safe_ctype
+#undef islower
+#define islower(c) do_not_use_islower_with_safe_ctype
+#undef isprint
+#define isprint(c) do_not_use_isprint_with_safe_ctype
+#undef ispunct
+#define ispunct(c) do_not_use_ispunct_with_safe_ctype
+#undef isspace
+#define isspace(c) do_not_use_isspace_with_safe_ctype
+#undef isupper
+#define isupper(c) do_not_use_isupper_with_safe_ctype
+#undef isxdigit
+#define isxdigit(c) do_not_use_isxdigit_with_safe_ctype
+#undef toupper
+#define toupper(c) do_not_use_toupper_with_safe_ctype
+#undef tolower
+#define tolower(c) do_not_use_tolower_with_safe_ctype
+
+#endif /* SAFE_CTYPE_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/sbitmap.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/sbitmap.h
new file mode 100644 (file)
index 0000000..60efdac
--- /dev/null
@@ -0,0 +1,272 @@
+/* Simple bitmaps.
+   Copyright (C) 1999, 2000, 2002, 2003, 2004, 2006, 2007, 2008
+   Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_SBITMAP_H
+#define GCC_SBITMAP_H
+
+/* It's not clear yet whether using bitmap.[ch] will be a win.
+   It should be straightforward to convert so for now we keep things simple
+   while more important issues are dealt with.  */
+
+#define SBITMAP_ELT_BITS ((unsigned) HOST_BITS_PER_WIDEST_FAST_INT)
+#define SBITMAP_ELT_TYPE unsigned HOST_WIDEST_FAST_INT
+
+/* Can't use SBITMAP_ELT_BITS in this macro because it contains a
+   cast.  There is no perfect macro in GCC to test against.  This
+   suffices for roughly 99% of the hosts we run on, and the rest
+   don't have 256 bit integers.  */
+#if HOST_BITS_PER_WIDEST_FAST_INT > 255
+#error Need to increase size of datatype used for popcount
+#endif
+
+typedef struct simple_bitmap_def
+{
+  unsigned char *popcount;      /* Population count.  */
+  unsigned int n_bits;         /* Number of bits.  */
+  unsigned int size;           /* Size in elements.  */
+  SBITMAP_ELT_TYPE elms[1];    /* The elements.  */
+} *sbitmap;
+typedef const struct simple_bitmap_def *const_sbitmap;
+
+typedef SBITMAP_ELT_TYPE *sbitmap_ptr;
+typedef const SBITMAP_ELT_TYPE *const_sbitmap_ptr;
+
+/* Return the set size needed for N elements.  */
+#define SBITMAP_SET_SIZE(N) (((N) + SBITMAP_ELT_BITS - 1) / SBITMAP_ELT_BITS)
+#define SBITMAP_SIZE_BYTES(BITMAP) ((BITMAP)->size * sizeof (SBITMAP_ELT_TYPE))
+
+/* Test if bit number bitno in the bitmap is set.  */
+#define TEST_BIT(BITMAP, BITNO) \
+((BITMAP)->elms [(BITNO) / SBITMAP_ELT_BITS] >> (BITNO) % SBITMAP_ELT_BITS & 1)
+
+/* Set bit number BITNO in the sbitmap MAP.  Updates population count
+   if this bitmap has one.  */
+
+static inline void
+SET_BIT (sbitmap map, unsigned int bitno)
+{
+  if (map->popcount)
+    {
+      bool oldbit;
+      oldbit = TEST_BIT (map, bitno);
+      if (!oldbit)
+       map->popcount[bitno / SBITMAP_ELT_BITS]++;
+    }
+  map->elms[bitno / SBITMAP_ELT_BITS]
+    |= (SBITMAP_ELT_TYPE) 1 << (bitno) % SBITMAP_ELT_BITS;
+}
+
+
+
+/* Reset bit number BITNO in the sbitmap MAP.  Updates population
+   count if this bitmap has one.  */
+
+static inline void
+RESET_BIT (sbitmap map,  unsigned int bitno)
+{
+  if (map->popcount)
+    {
+      bool oldbit;
+      oldbit = TEST_BIT (map, bitno);
+      if (oldbit)
+       map->popcount[bitno / SBITMAP_ELT_BITS]--;
+    }
+  map->elms[bitno / SBITMAP_ELT_BITS]
+    &= ~((SBITMAP_ELT_TYPE) 1 << (bitno) % SBITMAP_ELT_BITS);
+}
+
+/* The iterator for sbitmap.  */
+typedef struct {
+  /* The pointer to the first word of the bitmap.  */
+  const SBITMAP_ELT_TYPE *ptr;
+
+  /* The size of the bitmap.  */
+  unsigned int size;
+
+  /* The current word index.  */
+  unsigned int word_num;
+
+  /* The current bit index (not modulo SBITMAP_ELT_BITS).  */
+  unsigned int bit_num;
+
+  /* The words currently visited.  */
+  SBITMAP_ELT_TYPE word;
+} sbitmap_iterator;
+
+/* Initialize the iterator I with sbitmap BMP and the initial index
+   MIN.  */
+
+static inline void
+sbitmap_iter_init (sbitmap_iterator *i, const_sbitmap bmp, unsigned int min)
+{
+  i->word_num = min / (unsigned int) SBITMAP_ELT_BITS;
+  i->bit_num = min;
+  i->size = bmp->size;
+  i->ptr = bmp->elms;
+
+  if (i->word_num >= i->size)
+    i->word = 0;
+  else
+    i->word = (i->ptr[i->word_num]
+              >> (i->bit_num % (unsigned int) SBITMAP_ELT_BITS));
+}
+
+/* Return true if we have more bits to visit, in which case *N is set
+   to the index of the bit to be visited.  Otherwise, return
+   false.  */
+
+static inline bool
+sbitmap_iter_cond (sbitmap_iterator *i, unsigned int *n)
+{
+  /* Skip words that are zeros.  */
+  for (; i->word == 0; i->word = i->ptr[i->word_num])
+    {
+      i->word_num++;
+
+      /* If we have reached the end, break.  */
+      if (i->word_num >= i->size)
+       return false;
+
+      i->bit_num = i->word_num * SBITMAP_ELT_BITS;
+    }
+
+  /* Skip bits that are zero.  */
+  for (; (i->word & 1) == 0; i->word >>= 1)
+    i->bit_num++;
+
+  *n = i->bit_num;
+
+  return true;
+}
+
+/* Advance to the next bit.  */
+
+static inline void
+sbitmap_iter_next (sbitmap_iterator *i)
+{
+  i->word >>= 1;
+  i->bit_num++;
+}
+
+/* Loop over all elements of SBITMAP, starting with MIN.  In each
+   iteration, N is set to the index of the bit being visited.  ITER is
+   an instance of sbitmap_iterator used to iterate the bitmap.  */
+
+#define EXECUTE_IF_SET_IN_SBITMAP(SBITMAP, MIN, N, ITER)       \
+  for (sbitmap_iter_init (&(ITER), (SBITMAP), (MIN));          \
+       sbitmap_iter_cond (&(ITER), &(N));                      \
+       sbitmap_iter_next (&(ITER)))
+
+#define EXECUTE_IF_SET_IN_SBITMAP_REV(SBITMAP, N, CODE)                        \
+do {                                                                   \
+  unsigned int word_num_;                                              \
+  unsigned int bit_num_;                                               \
+  unsigned int size_ = (SBITMAP)->size;                                        \
+  SBITMAP_ELT_TYPE *ptr_ = (SBITMAP)->elms;                            \
+                                                                       \
+  for (word_num_ = size_; word_num_ > 0; word_num_--)                  \
+    {                                                                  \
+      SBITMAP_ELT_TYPE word_ = ptr_[word_num_ - 1];                    \
+                                                                       \
+      if (word_ != 0)                                                  \
+       for (bit_num_ = SBITMAP_ELT_BITS; bit_num_ > 0; bit_num_--)     \
+         {                                                             \
+           SBITMAP_ELT_TYPE _mask = (SBITMAP_ELT_TYPE)1 << (bit_num_ - 1);\
+                                                                       \
+           if ((word_ & _mask) != 0)                                   \
+             {                                                         \
+               word_ &= ~ _mask;                                       \
+               (N) = (word_num_ - 1) * SBITMAP_ELT_BITS + bit_num_ - 1;\
+               CODE;                                                   \
+               if (word_ == 0)                                         \
+                 break;                                                \
+             }                                                         \
+         }                                                             \
+    }                                                                  \
+} while (0)
+
+#define sbitmap_free(MAP)              (free((MAP)->popcount), free((MAP)))
+#define sbitmap_vector_free(VEC)       free(VEC)
+
+struct int_list;
+
+extern void dump_sbitmap (FILE *, const_sbitmap);
+extern void dump_sbitmap_file (FILE *, const_sbitmap);
+extern void dump_sbitmap_vector (FILE *, const char *, const char *, sbitmap *,
+                                int);
+extern sbitmap sbitmap_alloc (unsigned int);
+extern sbitmap sbitmap_alloc_with_popcount (unsigned int);
+extern sbitmap *sbitmap_vector_alloc (unsigned int, unsigned int);
+extern sbitmap sbitmap_resize (sbitmap, unsigned int, int);
+extern void sbitmap_copy (sbitmap, const_sbitmap);
+extern void sbitmap_copy_n (sbitmap, const_sbitmap, unsigned int);
+extern int sbitmap_equal (const_sbitmap, const_sbitmap);
+extern bool sbitmap_empty_p (const_sbitmap);
+extern bool sbitmap_range_empty_p (const_sbitmap, unsigned int, unsigned int);
+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 void sbitmap_union_of_diff (sbitmap, const_sbitmap, const_sbitmap, const_sbitmap);
+extern bool sbitmap_union_of_diff_cg (sbitmap, const_sbitmap, const_sbitmap, const_sbitmap);
+extern void sbitmap_difference (sbitmap, const_sbitmap, const_sbitmap);
+extern void sbitmap_not (sbitmap, const_sbitmap);
+extern void sbitmap_a_or_b_and_c (sbitmap, const_sbitmap, const_sbitmap, const_sbitmap);
+extern bool sbitmap_a_or_b_and_c_cg (sbitmap, const_sbitmap, const_sbitmap, const_sbitmap);
+extern bool sbitmap_a_or_b_and_c_compl_cg (sbitmap, const_sbitmap, const_sbitmap, const_sbitmap);
+extern void sbitmap_a_and_b_or_c (sbitmap, const_sbitmap, const_sbitmap, const_sbitmap);
+extern bool sbitmap_a_and_b_or_c_cg (sbitmap, const_sbitmap, const_sbitmap, const_sbitmap);
+extern bool sbitmap_any_common_bits (const_sbitmap, const_sbitmap);
+extern void sbitmap_a_and_b (sbitmap, const_sbitmap, const_sbitmap);
+extern bool sbitmap_a_and_b_cg (sbitmap, const_sbitmap, const_sbitmap);
+extern void sbitmap_a_and_not_b (sbitmap, const_sbitmap, const_sbitmap);
+extern void sbitmap_a_or_b (sbitmap, const_sbitmap, const_sbitmap);
+extern bool sbitmap_a_or_b_cg (sbitmap, const_sbitmap, const_sbitmap);
+extern void sbitmap_a_xor_b (sbitmap, const_sbitmap, const_sbitmap);
+extern bool sbitmap_a_xor_b_cg (sbitmap, const_sbitmap, const_sbitmap);
+extern bool sbitmap_a_subset_b_p (const_sbitmap, const_sbitmap);
+
+extern int sbitmap_first_set_bit (const_sbitmap);
+extern int sbitmap_last_set_bit (const_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
+
+/* Intersection and Union of preds/succs using the new flow graph
+   structure instead of the pred/succ arrays.  */
+
+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 (const_sbitmap);
+extern sbitmap sbitmap_realloc (sbitmap, unsigned int);
+extern unsigned long sbitmap_popcount(const_sbitmap, unsigned long);
+extern void sbitmap_verify_popcount (const_sbitmap);
+#endif /* ! GCC_SBITMAP_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/statistics.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/statistics.h
new file mode 100644 (file)
index 0000000..6e21e85
--- /dev/null
@@ -0,0 +1,51 @@
+/* Memory and optimization statistics helpers.
+   Copyright (C) 2004, 2007, 2008
+   Free Software Foundation, Inc.
+   Contributed by Cygnus Solutions.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_STATISTICS
+#define GCC_STATISTICS
+
+#ifdef GATHER_STATISTICS
+#define MEM_STAT_DECL , const char * ARG_UNUSED (_loc_name), int ARG_UNUSED (_loc_line), const char * ARG_UNUSED (_loc_function)
+#define ALONE_MEM_STAT_DECL const char * ARG_UNUSED (_loc_name), int ARG_UNUSED (_loc_line), const char * ARG_UNUSED (_loc_function)
+#define PASS_MEM_STAT , _loc_name, _loc_line,  _loc_function
+#define ALONE_PASS_MEM_STAT _loc_name, _loc_line,  _loc_function
+#define MEM_STAT_INFO , __FILE__, __LINE__, __FUNCTION__
+#define ALONE_MEM_STAT_INFO __FILE__, __LINE__, __FUNCTION__
+#else
+#define MEM_STAT_DECL
+#define ALONE_MEM_STAT_DECL void
+#define PASS_MEM_STAT
+#define ALONE_PASS_MEM_STAT
+#define MEM_STAT_INFO
+#define ALONE_MEM_STAT_INFO
+#endif
+
+struct function;
+
+/* In statistics.c */
+extern void statistics_early_init (void);
+extern void statistics_init (void);
+extern void statistics_fini (void);
+extern void statistics_fini_pass (void);
+extern void statistics_counter_event (struct function *, const char *, int);
+extern void statistics_histogram_event (struct function *, const char *, int);
+
+#endif
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/symtab.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/symtab.h
new file mode 100644 (file)
index 0000000..225301e
--- /dev/null
@@ -0,0 +1,103 @@
+/* Hash tables.
+   Copyright (C) 2000, 2001, 2003, 2004, 2007, 2008, 2009
+   Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 3, or (at your option) any
+later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef LIBCPP_SYMTAB_H
+#define LIBCPP_SYMTAB_H
+
+#include "obstack.h"
+#ifndef GTY
+#define GTY(x) /* nothing */
+#endif
+
+/* This is what each hash table entry points to.  It may be embedded
+   deeply within another object.  */
+typedef struct ht_identifier ht_identifier;
+struct ht_identifier GTY(())
+{
+  const unsigned char *str;
+  unsigned int len;
+  unsigned int hash_value;
+};
+
+#define HT_LEN(NODE) ((NODE)->len)
+#define HT_STR(NODE) ((NODE)->str)
+
+typedef struct ht hash_table;
+typedef struct ht_identifier *hashnode;
+
+enum ht_lookup_option {HT_NO_INSERT = 0, HT_ALLOC};
+
+/* An identifier hash table for cpplib and the front ends.  */
+struct ht
+{
+  /* Identifiers are allocated from here.  */
+  struct obstack stack;
+
+  hashnode *entries;
+  /* Call back, allocate a node.  */
+  hashnode (*alloc_node) (hash_table *);
+  /* Call back, allocate something that hangs off a node like a cpp_macro.  
+     NULL means use the usual allocator.  */
+  void * (*alloc_subobject) (size_t);
+
+  unsigned int nslots;         /* Total slots in the entries array.  */
+  unsigned int nelements;      /* Number of live elements.  */
+
+  /* Link to reader, if any.  For the benefit of cpplib.  */
+  struct cpp_reader *pfile;
+
+  /* Table usage statistics.  */
+  unsigned int searches;
+  unsigned int collisions;
+
+  /* Should 'entries' be freed when it is no longer needed?  */
+  bool entries_owned;
+};
+
+/* Initialize the hashtable with 2 ^ order entries.  */
+extern hash_table *ht_create (unsigned int order);
+
+/* Frees all memory associated with a hash table.  */
+extern void ht_destroy (hash_table *);
+
+extern hashnode ht_lookup (hash_table *, const unsigned char *,
+                          size_t, enum ht_lookup_option);
+extern hashnode ht_lookup_with_hash (hash_table *, const unsigned char *,
+                                     size_t, unsigned int,
+                                     enum ht_lookup_option);
+#define HT_HASHSTEP(r, c) ((r) * 67 + ((c) - 113));
+#define HT_HASHFINISH(r, len) ((r) + (len))
+
+/* For all nodes in TABLE, make a callback.  The callback takes
+   TABLE->PFILE, the node, and a PTR, and the callback sequence stops
+   if the callback returns zero.  */
+typedef int (*ht_cb) (struct cpp_reader *, hashnode, const void *);
+extern void ht_forall (hash_table *, ht_cb, const void *);
+
+/* For all nodes in TABLE, call the callback.  If the callback returns
+   a nonzero value, the node is removed from the table.  */
+extern void ht_purge (hash_table *, ht_cb, const void *);
+
+/* Restore the hash table.  */
+extern void ht_load (hash_table *ht, hashnode *entries,
+                    unsigned int nslots, unsigned int nelements, bool own);
+
+/* Dump allocation statistics to stderr.  */
+extern void ht_dump_statistics (hash_table *);
+
+#endif /* LIBCPP_SYMTAB_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/sync-builtins.def b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/sync-builtins.def
new file mode 100644 (file)
index 0000000..86cb0aa
--- /dev/null
@@ -0,0 +1,252 @@
+/* This file contains the definitions and documentation for the
+   synchronization builtins used in the GNU compiler.
+   Copyright (C) 2005, 2007 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* Before including this file, you should define a macro:
+
+     DEF_SYNC_BUILTIN (ENUM, NAME, TYPE, ATTRS)
+
+   See builtins.def for details.  */
+   
+/* Synchronization Primitives.  The "_N" version is the one that the user
+   is supposed to be using.  It's overloaded, and is resolved to one of the
+   "_1" through "_16" versions, plus some extra casts.  */
+
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_ADD_N, "__sync_fetch_and_add",
+                 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_ADD_1, "__sync_fetch_and_add_1",
+                 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_ADD_2, "__sync_fetch_and_add_2",
+                 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_ADD_4, "__sync_fetch_and_add_4",
+                 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_ADD_8, "__sync_fetch_and_add_8",
+                 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_ADD_16, "__sync_fetch_and_add_16",
+                 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_SUB_N, "__sync_fetch_and_sub",
+                 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_SUB_1, "__sync_fetch_and_sub_1",
+                 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_SUB_2, "__sync_fetch_and_sub_2",
+                 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_SUB_4, "__sync_fetch_and_sub_4",
+                 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_SUB_8, "__sync_fetch_and_sub_8",
+                 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_SUB_16, "__sync_fetch_and_sub_16",
+                 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_OR_N, "__sync_fetch_and_or",
+                 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_OR_1, "__sync_fetch_and_or_1",
+                 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_OR_2, "__sync_fetch_and_or_2",
+                 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_OR_4, "__sync_fetch_and_or_4",
+                 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_OR_8, "__sync_fetch_and_or_8",
+                 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_OR_16, "__sync_fetch_and_or_16",
+                 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_AND_N, "__sync_fetch_and_and",
+                 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_AND_1, "__sync_fetch_and_and_1",
+                 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_AND_2, "__sync_fetch_and_and_2",
+                 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_AND_4, "__sync_fetch_and_and_4",
+                 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_AND_8, "__sync_fetch_and_and_8",
+                 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_AND_16, "__sync_fetch_and_and_16",
+                 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_XOR_N, "__sync_fetch_and_xor",
+                 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_XOR_1, "__sync_fetch_and_xor_1",
+                 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_XOR_2, "__sync_fetch_and_xor_2",
+                 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_XOR_4, "__sync_fetch_and_xor_4",
+                 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_XOR_8, "__sync_fetch_and_xor_8",
+                 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_XOR_16, "__sync_fetch_and_xor_16",
+                 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_NAND_N, "__sync_fetch_and_nand",
+                 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_NAND_1, "__sync_fetch_and_nand_1",
+                 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_NAND_2, "__sync_fetch_and_nand_2",
+                 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_NAND_4, "__sync_fetch_and_nand_4",
+                 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_NAND_8, "__sync_fetch_and_nand_8",
+                 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_NAND_16, "__sync_fetch_and_nand_16",
+                 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ADD_AND_FETCH_N, "__sync_add_and_fetch",
+                 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ADD_AND_FETCH_1, "__sync_add_and_fetch_1",
+                 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ADD_AND_FETCH_2, "__sync_add_and_fetch_2",
+                 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ADD_AND_FETCH_4, "__sync_add_and_fetch_4",
+                 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ADD_AND_FETCH_8, "__sync_add_and_fetch_8",
+                 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ADD_AND_FETCH_16, "__sync_add_and_fetch_16",
+                 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_SUB_AND_FETCH_N, "__sync_sub_and_fetch",
+                 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SUB_AND_FETCH_1, "__sync_sub_and_fetch_1",
+                 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SUB_AND_FETCH_2, "__sync_sub_and_fetch_2",
+                 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SUB_AND_FETCH_4, "__sync_sub_and_fetch_4",
+                 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SUB_AND_FETCH_8, "__sync_sub_and_fetch_8",
+                 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SUB_AND_FETCH_16, "__sync_sub_and_fetch_16",
+                 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_OR_AND_FETCH_N, "__sync_or_and_fetch",
+                 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_OR_AND_FETCH_1, "__sync_or_and_fetch_1",
+                 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_OR_AND_FETCH_2, "__sync_or_and_fetch_2",
+                 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_OR_AND_FETCH_4, "__sync_or_and_fetch_4",
+                 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_OR_AND_FETCH_8, "__sync_or_and_fetch_8",
+                 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_OR_AND_FETCH_16, "__sync_or_and_fetch_16",
+                 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_AND_AND_FETCH_N, "__sync_and_and_fetch",
+                 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_AND_AND_FETCH_1, "__sync_and_and_fetch_1",
+                 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_AND_AND_FETCH_2, "__sync_and_and_fetch_2",
+                 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_AND_AND_FETCH_4, "__sync_and_and_fetch_4",
+                 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_AND_AND_FETCH_8, "__sync_and_and_fetch_8",
+                 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_AND_AND_FETCH_16, "__sync_and_and_fetch_16",
+                 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_XOR_AND_FETCH_N, "__sync_xor_and_fetch",
+                 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_XOR_AND_FETCH_1, "__sync_xor_and_fetch_1",
+                 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_XOR_AND_FETCH_2, "__sync_xor_and_fetch_2",
+                 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_XOR_AND_FETCH_4, "__sync_xor_and_fetch_4",
+                 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_XOR_AND_FETCH_8, "__sync_xor_and_fetch_8",
+                 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_XOR_AND_FETCH_16, "__sync_xor_and_fetch_16",
+                 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_NAND_AND_FETCH_N, "__sync_nand_and_fetch",
+                 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_NAND_AND_FETCH_1, "__sync_nand_and_fetch_1",
+                 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_NAND_AND_FETCH_2, "__sync_nand_and_fetch_2",
+                 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_NAND_AND_FETCH_4, "__sync_nand_and_fetch_4",
+                 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_NAND_AND_FETCH_8, "__sync_nand_and_fetch_8",
+                 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_NAND_AND_FETCH_16, "__sync_nand_and_fetch_16",
+                 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_BOOL_COMPARE_AND_SWAP_N,
+                 "__sync_bool_compare_and_swap",
+                 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_BOOL_COMPARE_AND_SWAP_1,
+                 "__sync_bool_compare_and_swap_1",
+                 BT_FN_BOOL_VPTR_I1_I1, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_BOOL_COMPARE_AND_SWAP_2,
+                 "__sync_bool_compare_and_swap_2",
+                 BT_FN_BOOL_VPTR_I2_I2, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_BOOL_COMPARE_AND_SWAP_4,
+                 "__sync_bool_compare_and_swap_4",
+                 BT_FN_BOOL_VPTR_I4_I4, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_BOOL_COMPARE_AND_SWAP_8,
+                 "__sync_bool_compare_and_swap_8",
+                 BT_FN_BOOL_VPTR_I8_I8, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_BOOL_COMPARE_AND_SWAP_16,
+                 "__sync_bool_compare_and_swap_16",
+                 BT_FN_BOOL_VPTR_I16_I16, ATTR_NOTHROW_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_VAL_COMPARE_AND_SWAP_N,
+                 "__sync_val_compare_and_swap",
+                 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_VAL_COMPARE_AND_SWAP_1,
+                 "__sync_val_compare_and_swap_1",
+                 BT_FN_I1_VPTR_I1_I1, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_VAL_COMPARE_AND_SWAP_2,
+                 "__sync_val_compare_and_swap_2",
+                 BT_FN_I2_VPTR_I2_I2, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_VAL_COMPARE_AND_SWAP_4,
+                 "__sync_val_compare_and_swap_4",
+                 BT_FN_I4_VPTR_I4_I4, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_VAL_COMPARE_AND_SWAP_8,
+                 "__sync_val_compare_and_swap_8",
+                 BT_FN_I8_VPTR_I8_I8, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_VAL_COMPARE_AND_SWAP_16,
+                 "__sync_val_compare_and_swap_16",
+                 BT_FN_I16_VPTR_I16_I16, ATTR_NOTHROW_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_LOCK_TEST_AND_SET_N, "__sync_lock_test_and_set",
+                 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_LOCK_TEST_AND_SET_1, "__sync_lock_test_and_set_1",
+                 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_LOCK_TEST_AND_SET_2, "__sync_lock_test_and_set_2",
+                 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_LOCK_TEST_AND_SET_4, "__sync_lock_test_and_set_4",
+                 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_LOCK_TEST_AND_SET_8, "__sync_lock_test_and_set_8",
+                 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_LOCK_TEST_AND_SET_16, "__sync_lock_test_and_set_16",
+                 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_LOCK_RELEASE_N, "__sync_lock_release",
+                 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_LOCK_RELEASE_1, "__sync_lock_release_1",
+                 BT_FN_VOID_VPTR, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_LOCK_RELEASE_2, "__sync_lock_release_2",
+                 BT_FN_VOID_VPTR, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_LOCK_RELEASE_4, "__sync_lock_release_4",
+                 BT_FN_VOID_VPTR, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_LOCK_RELEASE_8, "__sync_lock_release_8",
+                 BT_FN_VOID_VPTR, ATTR_NOTHROW_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_LOCK_RELEASE_16, "__sync_lock_release_16",
+                 BT_FN_VOID_VPTR, ATTR_NOTHROW_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_SYNCHRONIZE, "__sync_synchronize",
+                 BT_FN_VOID, ATTR_NOTHROW_LIST)
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/system.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/system.h
new file mode 100644 (file)
index 0000000..80bfe61
--- /dev/null
@@ -0,0 +1,837 @@
+/* Get common system includes and various definitions and declarations based
+   on autoconf macros.
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
+   Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+
+#ifndef GCC_SYSTEM_H
+#define GCC_SYSTEM_H
+
+/* We must include stdarg.h before stdio.h.  */
+#include <stdarg.h>
+
+#ifndef va_copy
+# ifdef __va_copy
+#   define va_copy(d,s)  __va_copy((d),(s))
+# else
+#   define va_copy(d,s)  ((d) = (s))
+# endif
+#endif
+
+#ifdef HAVE_STDDEF_H
+# include <stddef.h>
+#endif
+
+#include <stdio.h>
+
+/* Define a generic NULL if one hasn't already been defined.  */
+#ifndef NULL
+#define NULL 0
+#endif
+
+/* Use the unlocked open routines from libiberty.  */
+#define fopen(PATH,MODE) fopen_unlocked(PATH,MODE)
+#define fdopen(FILDES,MODE) fdopen_unlocked(FILDES,MODE)
+#define freopen(PATH,MODE,STREAM) freopen_unlocked(PATH,MODE,STREAM)
+
+/* The compiler is not a multi-threaded application and therefore we
+   do not have to use the locking functions.  In fact, using the locking
+   functions can cause the compiler to be significantly slower under
+   I/O bound conditions (such as -g -O0 on very large source files).
+
+   HAVE_DECL_PUTC_UNLOCKED actually indicates whether or not the stdio
+   code is multi-thread safe by default.  If it is set to 0, then do
+   not worry about using the _unlocked functions.
+
+   fputs_unlocked, fwrite_unlocked, and fprintf_unlocked are
+   extensions and need to be prototyped by hand (since we do not
+   define _GNU_SOURCE).  */
+
+#if defined HAVE_DECL_PUTC_UNLOCKED && HAVE_DECL_PUTC_UNLOCKED
+
+# ifdef HAVE_PUTC_UNLOCKED
+#  undef putc
+#  define putc(C, Stream) putc_unlocked (C, Stream)
+# endif
+# ifdef HAVE_PUTCHAR_UNLOCKED
+#  undef putchar
+#  define putchar(C) putchar_unlocked (C)
+# endif
+# ifdef HAVE_GETC_UNLOCKED
+#  undef getc
+#  define getc(Stream) getc_unlocked (Stream)
+# endif
+# ifdef HAVE_GETCHAR_UNLOCKED
+#  undef getchar
+#  define getchar() getchar_unlocked ()
+# endif
+# ifdef HAVE_FPUTC_UNLOCKED
+#  undef fputc
+#  define fputc(C, Stream) fputc_unlocked (C, Stream)
+# endif
+
+# ifdef HAVE_CLEARERR_UNLOCKED
+#  undef clearerr
+#  define clearerr(Stream) clearerr_unlocked (Stream)
+#  if defined (HAVE_DECL_CLEARERR_UNLOCKED) && !HAVE_DECL_CLEARERR_UNLOCKED
+extern void clearerr_unlocked (FILE *);
+#  endif
+# endif
+# ifdef HAVE_FEOF_UNLOCKED
+#  undef feof
+#  define feof(Stream) feof_unlocked (Stream)
+#  if defined (HAVE_DECL_FEOF_UNLOCKED) && !HAVE_DECL_FEOF_UNLOCKED
+extern int feof_unlocked (FILE *);
+#  endif
+# endif
+# ifdef HAVE_FILENO_UNLOCKED
+#  undef fileno
+#  define fileno(Stream) fileno_unlocked (Stream)
+#  if defined (HAVE_DECL_FILENO_UNLOCKED) && !HAVE_DECL_FILENO_UNLOCKED
+extern int fileno_unlocked (FILE *);
+#  endif
+# endif
+# ifdef HAVE_FFLUSH_UNLOCKED
+#  undef fflush
+#  define fflush(Stream) fflush_unlocked (Stream)
+#  if defined (HAVE_DECL_FFLUSH_UNLOCKED) && !HAVE_DECL_FFLUSH_UNLOCKED
+extern int fflush_unlocked (FILE *);
+#  endif
+# endif
+# ifdef HAVE_FGETC_UNLOCKED
+#  undef fgetc
+#  define fgetc(Stream) fgetc_unlocked (Stream)
+#  if defined (HAVE_DECL_FGETC_UNLOCKED) && !HAVE_DECL_FGETC_UNLOCKED
+extern int fgetc_unlocked (FILE *);
+#  endif
+# endif
+# ifdef HAVE_FGETS_UNLOCKED
+#  undef fgets
+#  define fgets(S, n, Stream) fgets_unlocked (S, n, Stream)
+#  if defined (HAVE_DECL_FGETS_UNLOCKED) && !HAVE_DECL_FGETS_UNLOCKED
+extern char *fgets_unlocked (char *, int, FILE *);
+#  endif
+# endif
+# ifdef HAVE_FPUTS_UNLOCKED
+#  undef fputs
+#  define fputs(String, Stream) fputs_unlocked (String, Stream)
+#  if defined (HAVE_DECL_FPUTS_UNLOCKED) && !HAVE_DECL_FPUTS_UNLOCKED
+extern int fputs_unlocked (const char *, FILE *);
+#  endif
+# endif
+# ifdef HAVE_FERROR_UNLOCKED
+#  undef ferror
+#  define ferror(Stream) ferror_unlocked (Stream)
+#  if defined (HAVE_DECL_FERROR_UNLOCKED) && !HAVE_DECL_FERROR_UNLOCKED
+extern int ferror_unlocked (FILE *);
+#  endif
+# endif
+# ifdef HAVE_FREAD_UNLOCKED
+#  undef fread
+#  define fread(Ptr, Size, N, Stream) fread_unlocked (Ptr, Size, N, Stream)
+#  if defined (HAVE_DECL_FREAD_UNLOCKED) && !HAVE_DECL_FREAD_UNLOCKED
+extern size_t fread_unlocked (void *, size_t, size_t, FILE *);
+#  endif
+# endif
+# ifdef HAVE_FWRITE_UNLOCKED
+#  undef fwrite
+#  define fwrite(Ptr, Size, N, Stream) fwrite_unlocked (Ptr, Size, N, Stream)
+#  if defined (HAVE_DECL_FWRITE_UNLOCKED) && !HAVE_DECL_FWRITE_UNLOCKED
+extern size_t fwrite_unlocked (const void *, size_t, size_t, FILE *);
+#  endif
+# endif
+# ifdef HAVE_FPRINTF_UNLOCKED
+#  undef fprintf
+/* We can't use a function-like macro here because we don't know if
+   we have varargs macros.  */
+#  define fprintf fprintf_unlocked
+#  if defined (HAVE_DECL_FPRINTF_UNLOCKED) && !HAVE_DECL_FPRINTF_UNLOCKED
+extern int fprintf_unlocked (FILE *, const char *, ...);
+#  endif
+# endif
+
+#endif
+
+/* ??? Glibc's fwrite/fread_unlocked macros cause
+   "warning: signed and unsigned type in conditional expression".  */
+#undef fread_unlocked
+#undef fwrite_unlocked
+
+/* There are an extraordinary number of issues with <ctype.h>.
+   The last straw is that it varies with the locale.  Use libiberty's
+   replacement instead.  */
+#include <safe-ctype.h>
+
+#include <sys/types.h>
+
+#include <errno.h>
+
+#if !defined (errno) && defined (HAVE_DECL_ERRNO) && !HAVE_DECL_ERRNO
+extern int errno;
+#endif
+
+/* Some of glibc's string inlines cause warnings.  Plus we'd rather
+   rely on (and therefore test) GCC's string builtins.  */
+#define __NO_STRING_INLINES
+
+#ifdef STRING_WITH_STRINGS
+# include <string.h>
+# include <strings.h>
+#else
+# ifdef HAVE_STRING_H
+#  include <string.h>
+# else
+#  ifdef HAVE_STRINGS_H
+#   include <strings.h>
+#  endif
+# endif
+#endif
+
+#ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+#endif
+
+/* If we don't have an overriding definition, set SUCCESS_EXIT_CODE and
+   FATAL_EXIT_CODE to EXIT_SUCCESS and EXIT_FAILURE respectively,
+   or 0 and 1 if those macros are not defined.  */
+#ifndef SUCCESS_EXIT_CODE
+# ifdef EXIT_SUCCESS
+#  define SUCCESS_EXIT_CODE EXIT_SUCCESS
+# else
+#  define SUCCESS_EXIT_CODE 0
+# endif
+#endif
+
+#ifndef FATAL_EXIT_CODE
+# ifdef EXIT_FAILURE
+#  define FATAL_EXIT_CODE EXIT_FAILURE
+# else
+#  define FATAL_EXIT_CODE 1
+# endif
+#endif
+
+#define ICE_EXIT_CODE 4
+
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#ifdef HAVE_SYS_PARAM_H
+# include <sys/param.h>
+/* We use this identifier later and it appears in some vendor param.h's.  */
+# undef PREFETCH
+#endif
+
+#if HAVE_LIMITS_H
+# include <limits.h>
+#endif
+
+/* Get definitions of HOST_WIDE_INT and HOST_WIDEST_INT.  */
+#include "hwint.h"
+
+/* A macro to determine whether a VALUE lies inclusively within a
+   certain range without evaluating the VALUE more than once.  This
+   macro won't warn if the VALUE is unsigned and the LOWER bound is
+   zero, as it would e.g. with "VALUE >= 0 && ...".  Note the LOWER
+   bound *is* evaluated twice, and LOWER must not be greater than
+   UPPER.  However the bounds themselves can be either positive or
+   negative.  */
+#define IN_RANGE(VALUE, LOWER, UPPER) \
+  ((unsigned HOST_WIDE_INT) (VALUE) - (unsigned HOST_WIDE_INT) (LOWER) \
+   <= (unsigned HOST_WIDE_INT) (UPPER) - (unsigned HOST_WIDE_INT) (LOWER))
+
+/* Infrastructure for defining missing _MAX and _MIN macros.  Note that
+   macros defined with these cannot be used in #if.  */
+
+/* The extra casts work around common compiler bugs.  */
+#define INTTYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+/* The outer cast is needed to work around a bug in Cray C 5.0.3.0.
+   It is necessary at least when t == time_t.  */
+#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)))
+
+/* Use that infrastructure to provide a few constants.  */
+#ifndef UCHAR_MAX
+# define UCHAR_MAX INTTYPE_MAXIMUM (unsigned char)
+#endif
+
+#ifdef TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# if HAVE_SYS_TIME_H
+#  include <sys/time.h>
+# else
+#  ifdef HAVE_TIME_H
+#   include <time.h>
+#  endif
+# endif
+#endif
+
+#ifdef HAVE_FCNTL_H
+# include <fcntl.h>
+#else
+# ifdef HAVE_SYS_FILE_H
+#  include <sys/file.h>
+# endif
+#endif
+
+#ifndef SEEK_SET
+# define SEEK_SET 0
+# define SEEK_CUR 1
+# define SEEK_END 2
+#endif
+#ifndef F_OK
+# define F_OK 0
+# define X_OK 1
+# define W_OK 2
+# define R_OK 4
+#endif
+#ifndef O_RDONLY
+# define O_RDONLY 0
+#endif
+#ifndef O_WRONLY
+# define O_WRONLY 1
+#endif
+
+/* Some systems define these in, e.g., param.h.  We undefine these names
+   here to avoid the warnings.  We prefer to use our definitions since we
+   know they are correct.  */
+
+#undef MIN
+#undef MAX
+#define MIN(X,Y) ((X) < (Y) ? (X) : (Y))
+#define MAX(X,Y) ((X) > (Y) ? (X) : (Y))
+
+/* Returns the least number N such that N * Y >= X.  */
+#define CEIL(x,y) (((x) + (y) - 1) / (y))
+
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+
+#ifndef WIFSIGNALED
+#define WIFSIGNALED(S) (((S) & 0xff) != 0 && ((S) & 0xff) != 0x7f)
+#endif
+#ifndef WTERMSIG
+#define WTERMSIG(S) ((S) & 0x7f)
+#endif
+#ifndef WIFEXITED
+#define WIFEXITED(S) (((S) & 0xff) == 0)
+#endif
+#ifndef WEXITSTATUS
+#define WEXITSTATUS(S) (((S) & 0xff00) >> 8)
+#endif
+#ifndef WSTOPSIG
+#define WSTOPSIG WEXITSTATUS
+#endif
+#ifndef WCOREDUMP
+#define WCOREDUMP(S) ((S) & WCOREFLG)
+#endif
+#ifndef WCOREFLG
+#define WCOREFLG 0200
+#endif
+
+/* The HAVE_DECL_* macros are three-state, undefined, 0 or 1.  If they
+   are defined to 0 then we must provide the relevant declaration
+   here.  These checks will be in the undefined state while configure
+   is running so be careful to test "defined (HAVE_DECL_*)".  */
+
+#if defined (HAVE_DECL_ATOF) && !HAVE_DECL_ATOF
+extern double atof (const char *);
+#endif
+
+#if defined (HAVE_DECL_ATOL) && !HAVE_DECL_ATOL
+extern long atol (const char *);
+#endif
+
+#if defined (HAVE_DECL_FREE) && !HAVE_DECL_FREE
+extern void free (void *);
+#endif
+
+#if defined (HAVE_DECL_GETCWD) && !HAVE_DECL_GETCWD
+extern char *getcwd (char *, size_t);
+#endif
+
+#if defined (HAVE_DECL_GETENV) && !HAVE_DECL_GETENV
+extern char *getenv (const char *);
+#endif
+
+#if defined (HAVE_DECL_GETOPT) && !HAVE_DECL_GETOPT
+extern int getopt (int, char * const *, const char *);
+#endif
+
+#if defined (HAVE_DECL_GETPAGESIZE) && !HAVE_DECL_GETPAGESIZE
+extern int getpagesize (void);
+#endif
+
+#if defined (HAVE_DECL_GETWD) && !HAVE_DECL_GETWD
+extern char *getwd (char *);
+#endif
+
+#if defined (HAVE_DECL_SBRK) && !HAVE_DECL_SBRK
+extern void *sbrk (int);
+#endif
+
+#if defined (HAVE_DECL_STRSTR) && !HAVE_DECL_STRSTR
+extern char *strstr (const char *, const char *);
+#endif
+
+#ifdef HAVE_MALLOC_H
+#include <malloc.h>
+#endif
+
+#if defined (HAVE_DECL_MALLOC) && !HAVE_DECL_MALLOC
+extern void *malloc (size_t);
+#endif
+
+#if defined (HAVE_DECL_CALLOC) && !HAVE_DECL_CALLOC
+extern void *calloc (size_t, size_t);
+#endif
+
+#if defined (HAVE_DECL_REALLOC) && !HAVE_DECL_REALLOC
+extern void *realloc (void *, size_t);
+#endif
+
+/* If the system doesn't provide strsignal, we get it defined in
+   libiberty but no declaration is supplied.  */
+#if !defined (HAVE_STRSIGNAL) \
+    || (defined (HAVE_DECL_STRSIGNAL) && !HAVE_DECL_STRSIGNAL)
+# ifndef strsignal
+extern const char *strsignal (int);
+# endif
+#endif
+
+#ifdef HAVE_GETRLIMIT
+# if defined (HAVE_DECL_GETRLIMIT) && !HAVE_DECL_GETRLIMIT
+#  ifndef getrlimit
+struct rlimit;
+extern int getrlimit (int, struct rlimit *);
+#  endif
+# endif
+#endif
+
+#ifdef HAVE_SETRLIMIT
+# if defined (HAVE_DECL_SETRLIMIT) && !HAVE_DECL_SETRLIMIT
+#  ifndef setrlimit
+struct rlimit;
+extern int setrlimit (int, const struct rlimit *);
+#  endif
+# endif
+#endif
+
+#if defined (HAVE_DECL_ABORT) && !HAVE_DECL_ABORT
+extern void abort (void);
+#endif
+
+#if defined (HAVE_DECL_SNPRINTF) && !HAVE_DECL_SNPRINTF
+extern int snprintf (char *, size_t, const char *, ...);
+#endif
+
+#if defined (HAVE_DECL_VSNPRINTF) && !HAVE_DECL_VSNPRINTF
+extern int vsnprintf(char *, size_t, const char *, va_list);
+#endif
+
+/* 1 if we have C99 designated initializers.  */
+#if !defined(HAVE_DESIGNATED_INITIALIZERS)
+#define HAVE_DESIGNATED_INITIALIZERS \
+  ((GCC_VERSION >= 2007) || (__STDC_VERSION__ >= 199901L))
+#endif
+
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+
+/* Test if something is a normal file.  */
+#ifndef S_ISREG
+#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
+#endif
+
+/* Test if something is a directory.  */
+#ifndef S_ISDIR
+#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+#endif
+
+/* Test if something is a character special file.  */
+#ifndef S_ISCHR
+#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
+#endif
+
+/* Test if something is a block special file.  */
+#ifndef S_ISBLK
+#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
+#endif
+
+/* Test if something is a socket.  */
+#ifndef S_ISSOCK
+# ifdef S_IFSOCK
+#   define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
+# else
+#   define S_ISSOCK(m) 0
+# endif
+#endif
+
+/* Test if something is a FIFO.  */
+#ifndef S_ISFIFO
+# ifdef S_IFIFO
+#  define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
+# else
+#  define S_ISFIFO(m) 0
+# endif
+#endif
+
+/* Define well known filenos if the system does not define them.  */
+#ifndef STDIN_FILENO
+# define STDIN_FILENO   0
+#endif
+#ifndef STDOUT_FILENO
+# define STDOUT_FILENO  1
+#endif
+#ifndef STDERR_FILENO
+# define STDERR_FILENO  2
+#endif
+
+/* Some systems have mkdir that takes a single argument.  */
+#ifdef MKDIR_TAKES_ONE_ARG
+# define mkdir(a,b) mkdir(a)
+#endif
+
+/* By default, colon separates directories in a path.  */
+#ifndef PATH_SEPARATOR
+#define PATH_SEPARATOR ':'
+#endif
+
+/* Filename handling macros.  */
+#include "filenames.h"
+
+/* These should be phased out in favor of IS_DIR_SEPARATOR, where possible.  */
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# ifdef HAVE_DOS_BASED_FILE_SYSTEM
+#  define DIR_SEPARATOR_2 '\\'
+# endif
+#endif
+
+/* Get libiberty declarations.  */
+#include "libiberty.h"
+
+/* Provide a default for the HOST_BIT_BUCKET.
+   This suffices for POSIX-like hosts.  */
+
+#ifndef HOST_BIT_BUCKET
+#define HOST_BIT_BUCKET "/dev/null"
+#endif
+
+/* Be conservative and only use enum bitfields with GCC.
+   FIXME: provide a complete autoconf test for buggy enum bitfields.  */
+
+#if (GCC_VERSION > 2000)
+#define ENUM_BITFIELD(TYPE) __extension__ enum TYPE
+#else
+#define ENUM_BITFIELD(TYPE) unsigned int
+#endif
+
+#ifndef offsetof
+#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *) 0)->MEMBER)
+#endif
+
+/* Various error reporting routines want to use __FUNCTION__.  */
+#if (GCC_VERSION < 2007)
+#ifndef __FUNCTION__
+#define __FUNCTION__ "?"
+#endif /* ! __FUNCTION__ */
+#endif
+
+/* __builtin_expect(A, B) evaluates to A, but notifies the compiler that
+   the most likely value of A is B.  This feature was added at some point
+   between 2.95 and 3.0.  Let's use 3.0 as the lower bound for now.  */
+#if (GCC_VERSION < 3000)
+#define __builtin_expect(a, b) (a)
+#endif
+
+/* Redefine abort to report an internal error w/o coredump, and
+   reporting the location of the error in the source file.  */
+extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
+#define abort() fancy_abort (__FILE__, __LINE__, __FUNCTION__)
+
+/* Use gcc_assert(EXPR) to test invariants.  */
+#if ENABLE_ASSERT_CHECKING
+#define gcc_assert(EXPR)                                               \
+   ((void)(!(EXPR) ? fancy_abort (__FILE__, __LINE__, __FUNCTION__), 0 : 0))
+#else
+/* Include EXPR, so that unused variable warnings do not occur.  */
+#define gcc_assert(EXPR) ((void)(0 && (EXPR)))
+#endif
+
+/* Use gcc_unreachable() to mark unreachable locations (like an
+   unreachable default case of a switch.  Do not use gcc_assert(0).  */
+#define gcc_unreachable() (fancy_abort (__FILE__, __LINE__, __FUNCTION__))
+
+/* Provide a fake boolean type.  We make no attempt to use the
+   C99 _Bool, as it may not be available in the bootstrap compiler,
+   and even if it is, it is liable to be buggy.
+   This must be after all inclusion of system headers, as some of
+   them will mess us up.  */
+
+#undef TRUE
+#undef FALSE
+
+#ifdef __cplusplus
+  /* Obsolete.  */
+# define TRUE true
+# define FALSE false
+#else /* !__cplusplus */
+# undef bool
+# undef true
+# undef false
+
+# define bool unsigned char
+# define true 1
+# define false 0
+
+  /* Obsolete.  */
+# define TRUE true
+# define FALSE false
+#endif /* !__cplusplus */
+
+/* Some compilers do not allow the use of unsigned char in bitfields.  */
+#define BOOL_BITFIELD unsigned int
+
+/* As the last action in this file, we poison the identifiers that
+   shouldn't be used.  Note, luckily gcc-3.0's token-based integrated
+   preprocessor won't trip on poisoned identifiers that arrive from
+   the expansion of macros.  E.g. #define strrchr rindex, won't error
+   if rindex is poisoned after this directive is issued and later on
+   strrchr is called.
+
+   Note: We define bypass macros for the few cases where we really
+   want to use the libc memory allocation routines.  Otherwise we
+   insist you use the "x" versions from libiberty.  */
+
+#define really_call_malloc malloc
+#define really_call_calloc calloc
+#define really_call_realloc realloc
+
+#if defined(FLEX_SCANNER) || defined(YYBISON) || defined(YYBYACC)
+/* Flex and bison use malloc and realloc.  Yuk.  Note that this means
+   really_call_* cannot be used in a .l or .y file.  */
+#define malloc xmalloc
+#define realloc xrealloc
+#endif
+
+#if (GCC_VERSION >= 3000)
+
+/* Note autoconf checks for prototype declarations and includes
+   system.h while doing so.  Only poison these tokens if actually
+   compiling gcc, so that the autoconf declaration tests for malloc
+   etc don't spuriously fail.  */
+#ifdef IN_GCC
+#undef calloc
+#undef strdup
+ #pragma GCC poison calloc strdup
+
+#if !defined(FLEX_SCANNER) && !defined(YYBISON)
+#undef malloc
+#undef realloc
+ #pragma GCC poison malloc realloc
+#endif
+
+/* Old target macros that have moved to the target hooks structure.  */
+ #pragma GCC poison ASM_OPEN_PAREN ASM_CLOSE_PAREN                     \
+       FUNCTION_PROLOGUE FUNCTION_EPILOGUE                             \
+       FUNCTION_END_PROLOGUE FUNCTION_BEGIN_EPILOGUE                   \
+       DECL_MACHINE_ATTRIBUTES COMP_TYPE_ATTRIBUTES INSERT_ATTRIBUTES  \
+       VALID_MACHINE_DECL_ATTRIBUTE VALID_MACHINE_TYPE_ATTRIBUTE       \
+       SET_DEFAULT_TYPE_ATTRIBUTES SET_DEFAULT_DECL_ATTRIBUTES         \
+       MERGE_MACHINE_TYPE_ATTRIBUTES MERGE_MACHINE_DECL_ATTRIBUTES     \
+       MD_INIT_BUILTINS MD_EXPAND_BUILTIN ASM_OUTPUT_CONSTRUCTOR       \
+       ASM_OUTPUT_DESTRUCTOR SIGNED_CHAR_SPEC MAX_CHAR_TYPE_SIZE       \
+       WCHAR_UNSIGNED UNIQUE_SECTION SELECT_SECTION SELECT_RTX_SECTION \
+       ENCODE_SECTION_INFO STRIP_NAME_ENCODING ASM_GLOBALIZE_LABEL     \
+       ASM_OUTPUT_MI_THUNK CONST_COSTS RTX_COSTS DEFAULT_RTX_COSTS     \
+       ADDRESS_COST MACHINE_DEPENDENT_REORG ASM_FILE_START ASM_FILE_END \
+       ASM_SIMPLIFY_DWARF_ADDR INIT_TARGET_OPTABS INIT_SUBTARGET_OPTABS \
+       INIT_GOFAST_OPTABS MULSI3_LIBCALL MULDI3_LIBCALL DIVSI3_LIBCALL \
+       DIVDI3_LIBCALL UDIVSI3_LIBCALL UDIVDI3_LIBCALL MODSI3_LIBCALL   \
+       MODDI3_LIBCALL UMODSI3_LIBCALL UMODDI3_LIBCALL BUILD_VA_LIST_TYPE \
+       PRETEND_OUTGOING_VARARGS_NAMED STRUCT_VALUE_INCOMING_REGNUM     \
+       ASM_OUTPUT_SECTION_NAME PROMOTE_FUNCTION_ARGS                   \
+       STRUCT_VALUE_INCOMING STRICT_ARGUMENT_NAMING                    \
+       PROMOTE_FUNCTION_RETURN PROMOTE_PROTOTYPES STRUCT_VALUE_REGNUM  \
+       SETUP_INCOMING_VARARGS EXPAND_BUILTIN_SAVEREGS                  \
+       DEFAULT_SHORT_ENUMS SPLIT_COMPLEX_ARGS MD_ASM_CLOBBERS          \
+       HANDLE_PRAGMA_REDEFINE_EXTNAME HANDLE_PRAGMA_EXTERN_PREFIX      \
+       MUST_PASS_IN_STACK FUNCTION_ARG_PASS_BY_REFERENCE               \
+        VECTOR_MODE_SUPPORTED_P TARGET_SUPPORTS_HIDDEN                         \
+       FUNCTION_ARG_PARTIAL_NREGS ASM_OUTPUT_DWARF_DTPREL              \
+       ALLOCATE_INITIAL_VALUE
+
+/* Other obsolete target macros, or macros that used to be in target
+   headers and were not used, and may be obsolete or may never have
+   been used.  */
+ #pragma GCC poison INT_ASM_OP ASM_OUTPUT_EH_REGION_BEG CPP_PREDEFINES    \
+       ASM_OUTPUT_EH_REGION_END ASM_OUTPUT_LABELREF_AS_INT SMALL_STACK    \
+       DOESNT_NEED_UNWINDER EH_TABLE_LOOKUP OBJC_SELECTORS_WITHOUT_LABELS \
+       OMIT_EH_TABLE EASY_DIV_EXPR IMPLICIT_FIX_EXPR                      \
+       LONGJMP_RESTORE_FROM_STACK MAX_INT_TYPE_SIZE ASM_IDENTIFY_GCC      \
+       STDC_VALUE TRAMPOLINE_ALIGN ASM_IDENTIFY_GCC_AFTER_SOURCE          \
+       SLOW_ZERO_EXTEND SUBREG_REGNO_OFFSET DWARF_LINE_MIN_INSTR_LENGTH   \
+       TRADITIONAL_RETURN_FLOAT NO_BUILTIN_SIZE_TYPE                      \
+       NO_BUILTIN_PTRDIFF_TYPE NO_BUILTIN_WCHAR_TYPE NO_BUILTIN_WINT_TYPE \
+       BLOCK_PROFILER BLOCK_PROFILER_CODE FUNCTION_BLOCK_PROFILER         \
+       FUNCTION_BLOCK_PROFILER_EXIT MACHINE_STATE_SAVE                    \
+       MACHINE_STATE_RESTORE SCCS_DIRECTIVE SECTION_ASM_OP BYTEORDER      \
+       ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL HOST_WORDS_BIG_ENDIAN    \
+       OBJC_PROLOGUE ALLOCATE_TRAMPOLINE HANDLE_PRAGMA ROUND_TYPE_SIZE    \
+       ROUND_TYPE_SIZE_UNIT CONST_SECTION_ASM_OP CRT_GET_RFIB_TEXT        \
+       DBX_LBRAC_FIRST DBX_OUTPUT_ENUM DBX_OUTPUT_SOURCE_FILENAME         \
+       DBX_WORKING_DIRECTORY INSN_CACHE_DEPTH INSN_CACHE_SIZE             \
+       INSN_CACHE_LINE_WIDTH INIT_SECTION_PREAMBLE NEED_ATEXIT ON_EXIT    \
+       EXIT_BODY OBJECT_FORMAT_ROSE MULTIBYTE_CHARS MAP_CHARACTER         \
+       LIBGCC_NEEDS_DOUBLE FINAL_PRESCAN_LABEL DEFAULT_CALLER_SAVES       \
+       LOAD_ARGS_REVERSED MAX_INTEGER_COMPUTATION_MODE                    \
+       CONVERT_HARD_REGISTER_TO_SSA_P ASM_OUTPUT_MAIN_SOURCE_FILENAME     \
+       FIRST_INSN_ADDRESS TEXT_SECTION SHARED_BSS_SECTION_ASM_OP          \
+       PROMOTED_MODE EXPAND_BUILTIN_VA_END                                \
+       LINKER_DOES_NOT_WORK_WITH_DWARF2 FUNCTION_ARG_KEEP_AS_REFERENCE    \
+       GIV_SORT_CRITERION MAX_LONG_TYPE_SIZE MAX_LONG_DOUBLE_TYPE_SIZE    \
+       MAX_WCHAR_TYPE_SIZE SHARED_SECTION_ASM_OP INTEGRATE_THRESHOLD      \
+       FINAL_REG_PARM_STACK_SPACE MAYBE_REG_PARM_STACK_SPACE              \
+       TRADITIONAL_PIPELINE_INTERFACE DFA_PIPELINE_INTERFACE              \
+       DBX_OUTPUT_STANDARD_TYPES BUILTIN_SETJMP_FRAME_VALUE               \
+       SUNOS4_SHARED_LIBRARIES PROMOTE_FOR_CALL_ONLY                      \
+       SPACE_AFTER_L_OPTION NO_RECURSIVE_FUNCTION_CSE                     \
+       DEFAULT_MAIN_RETURN TARGET_MEM_FUNCTIONS EXPAND_BUILTIN_VA_ARG     \
+       COLLECT_PARSE_FLAG DWARF2_GENERATE_TEXT_SECTION_LABEL WINNING_GDB  \
+       ASM_OUTPUT_FILENAME ASM_OUTPUT_SOURCE_LINE FILE_NAME_JOINER        \
+       GDB_INV_REF_REGPARM_STABS_LETTER DBX_MEMPARM_STABS_LETTER          \
+       PUT_SDB_SRC_FILE STABS_GCC_MARKER DBX_OUTPUT_FUNCTION_END          \
+       DBX_OUTPUT_GCC_MARKER DBX_FINISH_SYMBOL SDB_GENERATE_FAKE          \
+       NON_SAVING_SETJMP TARGET_LATE_RTL_PROLOGUE_EPILOGUE                \
+       CASE_DROPS_THROUGH TARGET_BELL TARGET_BS TARGET_CR TARGET_DIGIT0   \
+        TARGET_ESC TARGET_FF TARGET_NEWLINE TARGET_TAB TARGET_VT          \
+        LINK_LIBGCC_SPECIAL DONT_ACCESS_GBLS_AFTER_EPILOGUE               \
+       TARGET_OPTIONS TARGET_SWITCHES EXTRA_CC_MODES FINALIZE_PIC         \
+       PREDICATE_CODES SPECIAL_MODE_PREDICATES HOST_PTR_PRINTF            \
+       EXTRA_SECTIONS EXTRA_SECTION_FUNCTIONS READONLY_DATA_SECTION       \
+       TARGET_ASM_EXCEPTION_SECTION TARGET_ASM_EH_FRAME_SECTION           \
+       SMALL_ARG_MAX ASM_OUTPUT_SHARED_BSS ASM_OUTPUT_SHARED_COMMON       \
+       ASM_OUTPUT_SHARED_LOCAL UNALIGNED_WORD_ASM_OP                      \
+       ASM_MAKE_LABEL_LINKONCE
+
+/* Hooks that are no longer used.  */
+ #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE  \
+       LANG_HOOKS_MARK_TREE LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES \
+       LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS \
+       LANG_HOOKS_PUSHLEVEL LANG_HOOKS_SET_BLOCK \
+       LANG_HOOKS_MAYBE_BUILD_CLEANUP LANG_HOOKS_UPDATE_DECL_AFTER_SAVING \
+       LANG_HOOKS_POPLEVEL LANG_HOOKS_TRUTHVALUE_CONVERSION
+
+/* Miscellaneous macros that are no longer used.  */
+ #pragma GCC poison USE_MAPPED_LOCATION
+
+/* Libiberty macros that are no longer used in GCC.  */
+#undef ANSI_PROTOTYPES
+#undef PTR_CONST
+#undef LONG_DOUBLE
+#undef VPARAMS
+#undef VA_OPEN
+#undef VA_FIXEDARG
+#undef VA_CLOSE
+#undef VA_START
+ #pragma GCC poison ANSI_PROTOTYPES PTR_CONST LONG_DOUBLE VPARAMS VA_OPEN \
+  VA_FIXEDARG VA_CLOSE VA_START
+#endif /* IN_GCC */
+
+/* Note: not all uses of the `index' token (e.g. variable names and
+   structure members) have been eliminated.  */
+#undef bcopy
+#undef bzero
+#undef bcmp
+#undef rindex
+ #pragma GCC poison bcopy bzero bcmp rindex
+
+#endif /* GCC >= 3.0 */
+
+/* This macro allows casting away const-ness to pass -Wcast-qual
+   warnings.  DO NOT USE THIS UNLESS YOU REALLY HAVE TO!  It should
+   only be used in certain specific cases.  One valid case is where
+   the C standard definitions or prototypes force you to.  E.g. if you
+   need to free a const object, or if you pass a const string to
+   execv, et al.  Another valid use would be in an allocation function
+   that creates const objects that need to be initialized.  In some
+   cases we have non-const functions that return the argument
+   (e.g. next_nonnote_insn).  Rather than create const shadow
+   functions, we can cast away const-ness in calling these interfaces
+   if we're careful to verify that the called function does indeed not
+   modify its argument and the return value is only used in a const
+   context.  (This can be somewhat dangerous as these assumptions can
+   change after the fact).  Beyond these uses, most other cases of
+   using this macro should be viewed with extreme caution.  */
+
+#if defined(__GNUC__) && GCC_VERSION > 4000
+/* GCC 4.0.x has a bug where it may ICE on this expression,
+   so does GCC 3.4.x (PR17436).  */
+#define CONST_CAST2(TOTYPE,FROMTYPE,X) ((__extension__(union {FROMTYPE _q; TOTYPE _nq;})(X))._nq)
+#else
+#define CONST_CAST2(TOTYPE,FROMTYPE,X) ((TOTYPE)(FROMTYPE)(X))
+#endif
+#define CONST_CAST(TYPE,X) CONST_CAST2(TYPE, const TYPE, (X))
+#define CONST_CAST_TREE(X) CONST_CAST(union tree_node *, (X))
+#define CONST_CAST_RTX(X) CONST_CAST(struct rtx_def *, (X))
+#define CONST_CAST_BB(X) CONST_CAST(struct basic_block_def *, (X))
+#define CONST_CAST_GIMPLE(X) CONST_CAST(union gimple_statement_d *, (X))
+
+/* Activate certain diagnostics as warnings (not errors via the
+   -Werror flag).  */
+#if GCC_VERSION >= 4003
+/* If asserts are disabled, activate -Wuninitialized as a warning (not
+   an error/-Werror).  */
+#ifndef ENABLE_ASSERT_CHECKING
+#pragma GCC diagnostic warning "-Wuninitialized"
+#endif
+#endif
+
+#ifdef ENABLE_VALGRIND_CHECKING
+# ifdef HAVE_VALGRIND_MEMCHECK_H
+#  include <valgrind/memcheck.h>
+# elif defined HAVE_MEMCHECK_H
+#  include <memcheck.h>
+# else
+#  include <valgrind.h>
+# endif
+/* Compatibility macros to let valgrind 3.1 work.  */
+# ifndef VALGRIND_MAKE_MEM_NOACCESS
+#  define VALGRIND_MAKE_MEM_NOACCESS VALGRIND_MAKE_NOACCESS
+# endif
+# ifndef VALGRIND_MAKE_MEM_DEFINED
+#  define VALGRIND_MAKE_MEM_DEFINED VALGRIND_MAKE_READABLE
+# endif
+# ifndef VALGRIND_MAKE_MEM_UNDEFINED
+#  define VALGRIND_MAKE_MEM_UNDEFINED VALGRIND_MAKE_WRITABLE
+# endif
+#else
+/* Avoid #ifdef:s when we can help it.  */
+#define VALGRIND_DISCARD(x)
+#define VALGRIND_MALLOCLIKE_BLOCK(w,x,y,z)
+#define VALGRIND_FREELIKE_BLOCK(x,y)
+#endif
+
+#endif /* ! GCC_SYSTEM_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/target.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/target.h
new file mode 100644 (file)
index 0000000..4fb3794
--- /dev/null
@@ -0,0 +1,1108 @@
+/* Data structure definitions for a generic GCC target.
+   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+   Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by the
+   Free Software Foundation; either version 3, or (at your option) any
+   later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; see the file COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.
+
+   In other words, you are welcome to use, share and improve this program.
+   You are forbidden to forbid anyone else to use, share and improve
+   what you give them.   Help stamp out software-hoarding!  */
+
+
+/* This file contains a data structure that describes a GCC target.
+   At present it is incomplete, but in future it should grow to
+   contain most or all target machine and target O/S specific
+   information.
+
+   This structure has its initializer declared in target-def.h in the
+   form of large macro TARGET_INITIALIZER that expands to many smaller
+   macros.
+
+   The smaller macros each initialize one component of the structure,
+   and each has a default.  Each target should have a file that
+   includes target.h and target-def.h, and overrides any inappropriate
+   defaults by undefining the relevant macro and defining a suitable
+   replacement.  That file should then contain the definition of
+   "targetm" like so:
+
+   struct gcc_target targetm = TARGET_INITIALIZER;
+
+   Doing things this way allows us to bring together everything that
+   defines a GCC target.  By supplying a default that is appropriate
+   to most targets, we can easily add new items without needing to
+   edit dozens of target configuration files.  It should also allow us
+   to gradually reduce the amount of conditional compilation that is
+   scattered throughout GCC.  */
+
+#ifndef GCC_TARGET_H
+#define GCC_TARGET_H
+
+#include "tm.h"
+#include "insn-modes.h"
+
+/* Types used by the record_gcc_switches() target function.  */
+typedef enum
+{
+  SWITCH_TYPE_PASSED,          /* A switch passed on the command line.  */
+  SWITCH_TYPE_ENABLED,         /* An option that is currently enabled.  */
+  SWITCH_TYPE_DESCRIPTIVE,     /* Descriptive text, not a switch or option.  */
+  SWITCH_TYPE_LINE_START,      /* Please emit any necessary text at the start of a line.  */
+  SWITCH_TYPE_LINE_END         /* Please emit a line terminator.  */
+}
+print_switch_type;
+
+typedef int (* print_switch_fn_type) (print_switch_type, const char *);
+
+/* An example implementation for ELF targets.  Defined in varasm.c  */
+extern int elf_record_gcc_switches (print_switch_type type, const char *);
+
+struct stdarg_info;
+struct spec_info_def;
+
+/* The struct used by the secondary_reload target hook.  */
+typedef struct secondary_reload_info
+{
+  /* icode is actually an enum insn_code, but we don't want to force every
+     file that includes target.h to include optabs.h .  */
+  int icode;
+  int extra_cost; /* Cost for using (a) scratch register(s) to be taken
+                    into account by copy_cost.  */
+  /* The next two members are for the use of the backward
+     compatibility hook.  */
+  struct secondary_reload_info *prev_sri;
+  int t_icode; /* Actually an enum insn_code - see above.  */
+} secondary_reload_info;
+
+/* This is defined in sched-int.h .  */
+struct _dep;
+
+/* This is defined in ddg.h .  */
+struct ddg;
+
+struct gcc_target
+{
+  /* Functions that output assembler for the target.  */
+  struct asm_out
+  {
+    /* Opening and closing parentheses for asm expression grouping.  */
+    const char *open_paren, *close_paren;
+
+    /* Assembler instructions for creating various kinds of integer object.  */
+    const char *byte_op;
+    struct asm_int_op
+    {
+      const char *hi;
+      const char *si;
+      const char *di;
+      const char *ti;
+    } aligned_op, unaligned_op;
+
+    /* Try to output the assembler code for an integer object whose
+       value is given by X.  SIZE is the size of the object in bytes and
+       ALIGNED_P indicates whether it is aligned.  Return true if
+       successful.  Only handles cases for which BYTE_OP, ALIGNED_OP
+       and UNALIGNED_OP are NULL.  */
+    bool (* integer) (rtx x, unsigned int size, int aligned_p);
+
+    /* Output code that will globalize a label.  */
+    void (* globalize_label) (FILE *, const char *);
+
+    /* Output code that will globalize a declaration.  */
+    void (* globalize_decl_name) (FILE *, tree);
+
+    /* Output code that will emit a label for unwind info, if this
+       target requires such labels.  Second argument is the decl the
+       unwind info is associated with, third is a boolean: true if
+       this is for exception handling, fourth is a boolean: true if
+       this is only a placeholder for an omitted FDE.  */
+    void (* unwind_label) (FILE *, tree, int, int);
+
+    /* Output code that will emit a label to divide up the exception
+       table.  */
+    void (* except_table_label) (FILE *);
+
+    /* Emit any directives required to unwind this instruction.  */
+    void (* unwind_emit) (FILE *, rtx);
+
+    /* Output an internal label.  */
+    void (* internal_label) (FILE *, const char *, unsigned long);
+
+    /* Emit a ttype table reference to a typeinfo object.  */
+    bool (* ttype) (rtx);
+
+    /* Emit an assembler directive to set visibility for the symbol
+       associated with the tree decl.  */
+    void (* visibility) (tree, int);
+
+    /* Output the assembler code for entry to a function.  */
+    void (* function_prologue) (FILE *, HOST_WIDE_INT);
+
+    /* Output the assembler code for end of prologue.  */
+    void (* function_end_prologue) (FILE *);
+
+    /* Output the assembler code for start of epilogue.  */
+    void (* function_begin_epilogue) (FILE *);
+
+    /* Output the assembler code for function exit.  */
+    void (* function_epilogue) (FILE *, HOST_WIDE_INT);
+
+    /* Initialize target-specific sections.  */
+    void (* init_sections) (void);
+
+    /* Tell assembler to change to section NAME with attributes FLAGS.
+       If DECL is non-NULL, it is the VAR_DECL or FUNCTION_DECL with
+       which this section is associated.  */
+    void (* named_section) (const char *name, unsigned int flags, tree decl);
+
+    /* Return a mask describing how relocations should be treated when
+       selecting sections.  Bit 1 should be set if global relocations
+       should be placed in a read-write section; bit 0 should be set if
+       local relocations should be placed in a read-write section.  */
+    int (*reloc_rw_mask) (void);
+
+    /* Return a section for EXP.  It may be a DECL or a constant.  RELOC
+       is nonzero if runtime relocations must be applied; bit 1 will be
+       set if the runtime relocations require non-local name resolution.
+       ALIGN is the required alignment of the data.  */
+    section *(* select_section) (tree, int, unsigned HOST_WIDE_INT);
+
+    /* Return a section for X.  MODE is X's mode and ALIGN is its
+       alignment in bits.  */
+    section *(* select_rtx_section) (enum machine_mode, rtx,
+                                    unsigned HOST_WIDE_INT);
+
+    /* Select a unique section name for DECL.  RELOC is the same as
+       for SELECT_SECTION.  */
+    void (* unique_section) (tree, int);
+
+    /* Return the readonly data section associated with function DECL.  */
+    section *(* function_rodata_section) (tree);
+
+    /* Output a constructor for a symbol with a given priority.  */
+    void (* constructor) (rtx, int);
+
+    /* Output a destructor for a symbol with a given priority.  */
+    void (* destructor) (rtx, int);
+
+    /* Output the assembler code for a thunk function.  THUNK_DECL is the
+       declaration for the thunk function itself, FUNCTION is the decl for
+       the target function.  DELTA is an immediate constant offset to be
+       added to THIS.  If VCALL_OFFSET is nonzero, the word at
+       *(*this + vcall_offset) should be added to THIS.  */
+    void (* output_mi_thunk) (FILE *file, tree thunk_decl,
+                             HOST_WIDE_INT delta, HOST_WIDE_INT vcall_offset,
+                             tree function_decl);
+
+    /* Determine whether output_mi_thunk would succeed.  */
+    /* ??? Ideally, this hook would not exist, and success or failure
+       would be returned from output_mi_thunk directly.  But there's
+       too much undo-able setup involved in invoking output_mi_thunk.
+       Could be fixed by making output_mi_thunk emit rtl instead of
+       text to the output file.  */
+    bool (* can_output_mi_thunk) (const_tree thunk_decl, HOST_WIDE_INT delta,
+                                 HOST_WIDE_INT vcall_offset,
+                                 const_tree function_decl);
+
+    /* Output any boilerplate text needed at the beginning of a
+       translation unit.  */
+    void (*file_start) (void);
+
+    /* Output any boilerplate text needed at the end of a
+       translation unit.  */
+    void (*file_end) (void);
+
+    /* Output an assembler pseudo-op to declare a library function name
+       external.  */
+    void (*external_libcall) (rtx);
+
+    /* Output an assembler directive to mark decl live. This instructs
+       linker to not dead code strip this symbol.  */
+    void (*mark_decl_preserved) (const char *);
+
+    /* Output a record of the command line switches that have been passed.  */
+    print_switch_fn_type record_gcc_switches;
+    /* The name of the section that the example ELF implementation of
+       record_gcc_switches will use to store the information.  Target
+       specific versions of record_gcc_switches may or may not use
+       this information.  */
+    const char * record_gcc_switches_section;
+
+    /* Output the definition of a section anchor.  */
+    void (*output_anchor) (rtx);
+
+    /* Output a DTP-relative reference to a TLS symbol.  */
+    void (*output_dwarf_dtprel) (FILE *file, int size, rtx x);
+
+  } asm_out;
+
+  /* Functions relating to instruction scheduling.  */
+  struct sched
+  {
+    /* Given the current cost, COST, of an insn, INSN, calculate and
+       return a new cost based on its relationship to DEP_INSN through
+       the dependence LINK.  The default is to make no adjustment.  */
+    int (* adjust_cost) (rtx insn, rtx link, rtx dep_insn, int cost);
+
+    /* Adjust the priority of an insn as you see fit.  Returns the new
+       priority.  */
+    int (* adjust_priority) (rtx, int);
+
+    /* Function which returns the maximum number of insns that can be
+       scheduled in the same machine cycle.  This must be constant
+       over an entire compilation.  The default is 1.  */
+    int (* issue_rate) (void);
+
+    /* Calculate how much this insn affects how many more insns we
+       can emit this cycle.  Default is they all cost the same.  */
+    int (* variable_issue) (FILE *, int, rtx, int);
+
+    /* Initialize machine-dependent scheduling code.  */
+    void (* md_init) (FILE *, int, int);
+
+    /* Finalize machine-dependent scheduling code.  */
+    void (* md_finish) (FILE *, int);
+
+    /* Initialize machine-dependent function wide scheduling code.  */
+    void (* md_init_global) (FILE *, int, int);
+
+    /* Finalize machine-dependent function wide scheduling code.  */
+    void (* md_finish_global) (FILE *, int);
+
+    /* Reorder insns in a machine-dependent fashion, in two different
+       places.  Default does nothing.  */
+    int (* reorder) (FILE *, int, rtx *, int *, int);
+    int (* reorder2) (FILE *, int, rtx *, int *, int);
+
+    /* The following member value is a pointer to a function called
+       after evaluation forward dependencies of insns in chain given
+       by two parameter values (head and tail correspondingly).  */
+    void (* dependencies_evaluation_hook) (rtx, rtx);
+
+    /* The values of the following four members are pointers to
+       functions used to simplify the automaton descriptions.
+       dfa_pre_cycle_insn and dfa_post_cycle_insn give functions
+       returning insns which are used to change the pipeline hazard
+       recognizer state when the new simulated processor cycle
+       correspondingly starts and finishes.  The function defined by
+       init_dfa_pre_cycle_insn and init_dfa_post_cycle_insn are used
+       to initialize the corresponding insns.  The default values of
+       the members result in not changing the automaton state when
+       the new simulated processor cycle correspondingly starts and
+       finishes.  */
+    void (* init_dfa_pre_cycle_insn) (void);
+    rtx (* dfa_pre_cycle_insn) (void);
+    void (* init_dfa_post_cycle_insn) (void);
+    rtx (* dfa_post_cycle_insn) (void);
+
+    /* The values of the following two members are pointers to
+       functions used to simplify the automaton descriptions.
+       dfa_pre_advance_cycle and dfa_post_advance_cycle are getting called
+       immediately before and after cycle is advanced.  */
+    void (* dfa_pre_advance_cycle) (void);
+    void (* dfa_post_advance_cycle) (void);
+
+    /* The following member value is a pointer to a function returning value
+       which defines how many insns in queue `ready' will we try for
+       multi-pass scheduling.  If the member value is nonzero and the
+       function returns positive value, the DFA based scheduler will make
+       multi-pass scheduling for the first cycle.  In other words, we will
+       try to choose ready insn which permits to start maximum number of
+       insns on the same cycle.  */
+    int (* first_cycle_multipass_dfa_lookahead) (void);
+
+    /* The following member value is pointer to a function controlling
+       what insns from the ready insn queue will be considered for the
+       multipass insn scheduling.  If the hook returns zero for insn
+       passed as the parameter, the insn will be not chosen to be
+       issued.  */
+    int (* first_cycle_multipass_dfa_lookahead_guard) (rtx);
+
+    /* The following member value is pointer to a function called by
+       the insn scheduler before issuing insn passed as the third
+       parameter on given cycle.  If the hook returns nonzero, the
+       insn is not issued on given processors cycle.  Instead of that,
+       the processor cycle is advanced.  If the value passed through
+       the last parameter is zero, the insn ready queue is not sorted
+       on the new cycle start as usually.  The first parameter passes
+       file for debugging output.  The second one passes the scheduler
+       verbose level of the debugging output.  The forth and the fifth
+       parameter values are correspondingly processor cycle on which
+       the previous insn has been issued and the current processor
+       cycle.  */
+    int (* dfa_new_cycle) (FILE *, int, rtx, int, int, int *);
+
+    /* The following member value is a pointer to a function called by the
+       insn scheduler.  It should return true if there exists a dependence
+       which is considered costly by the target, between the insn
+       DEP_PRO (&_DEP), and the insn DEP_CON (&_DEP).  The first parameter is
+       the dep that represents the dependence between the two insns.  The
+       second argument is the cost of the dependence as estimated by
+       the scheduler.  The last argument is the distance in cycles
+       between the already scheduled insn (first parameter) and the
+       second insn (second parameter).  */
+    bool (* is_costly_dependence) (struct _dep *_dep, int, int);
+
+    /* Given the current cost, COST, of an insn, INSN, calculate and
+       return a new cost based on its relationship to DEP_INSN through the
+       dependence of type DEP_TYPE.  The default is to make no adjustment.  */
+    int (* adjust_cost_2) (rtx insn, int, rtx dep_insn, int cost, int dw);
+
+    /* The following member value is a pointer to a function called
+       by the insn scheduler. This hook is called to notify the backend
+       that new instructions were emitted.  */
+    void (* h_i_d_extended) (void);
+
+    /* Next 5 functions are for multi-point scheduling.  */
+
+    /* Allocate memory for scheduler context.  */
+    void *(* alloc_sched_context) (void);
+
+    /* Fills the context from the local machine scheduler context.  */
+    void (* init_sched_context) (void *, bool);
+
+    /* Sets local machine scheduler context to a saved value.  */
+    void (* set_sched_context) (void *);
+
+    /* Clears a scheduler context so it becomes like after init.  */
+    void (* clear_sched_context) (void *);
+
+    /* Frees the scheduler context.  */
+    void (* free_sched_context) (void *);
+
+    /* The following member value is a pointer to a function called
+       by the insn scheduler.
+       The first parameter is an instruction, the second parameter is the type
+       of the requested speculation, and the third parameter is a pointer to the
+       speculative pattern of the corresponding type (set if return value == 1).
+       It should return
+       -1, if there is no pattern, that will satisfy the requested speculation
+       type,
+       0, if current pattern satisfies the requested speculation type,
+       1, if pattern of the instruction should be changed to the newly
+       generated one.  */
+    int (* speculate_insn) (rtx, int, rtx *);
+
+    /* The following member value is a pointer to a function called
+       by the insn scheduler.  It should return true if the check instruction
+       passed as the parameter needs a recovery block.  */
+    bool (* needs_block_p) (int);
+
+    /* The following member value is a pointer to a function called
+       by the insn scheduler.  It should return a pattern for the check
+       instruction.
+       The first parameter is a speculative instruction, the second parameter
+       is the label of the corresponding recovery block (or null, if it is a
+       simple check).  If the mutation of the check is requested (e.g. from
+       ld.c to chk.a), the third parameter is true - in this case the first
+       parameter is the previous check.  */
+    rtx (* gen_spec_check) (rtx, rtx, int);
+
+    /* The following member value is a pointer to a function controlling
+       what insns from the ready insn queue will be considered for the
+       multipass insn scheduling.  If the hook returns zero for the insn
+       passed as the parameter, the insn will not be chosen to be
+       issued.  This hook is used to discard speculative instructions,
+       that stand at the first position of the ready list.  */
+    bool (* first_cycle_multipass_dfa_lookahead_guard_spec) (const_rtx);
+
+    /* The following member value is a pointer to a function that provides
+       information about the speculation capabilities of the target.
+       The parameter is a pointer to spec_info variable.  */
+    void (* set_sched_flags) (struct spec_info_def *);
+
+    /* Return speculation types of the instruction passed as the parameter.  */
+    int (* get_insn_spec_ds) (rtx);
+
+    /* Return speculation types that are checked for the instruction passed as
+       the parameter.  */
+    int (* get_insn_checked_ds) (rtx);
+
+    /* Return bool if rtx scanning should just skip current layer and
+       advance to the inner rtxes.  */
+    bool (* skip_rtx_p) (const_rtx);
+
+    /* The following member value is a pointer to a function that provides
+       information about the target resource-based lower bound which is
+       used by the swing modulo scheduler.  The parameter is a pointer
+       to ddg variable.  */
+    int (* sms_res_mii) (struct ddg *);
+  } sched;
+
+  /* Functions relating to vectorization.  */
+  struct vectorize
+  {
+    /* The following member value is a pointer to a function called
+       by the vectorizer, and return the decl of the target builtin
+       function.  */
+    tree (* builtin_mask_for_load) (void);
+
+    /* Returns a code for builtin that realizes vectorized version of
+       function, or NULL_TREE if not available.  */
+    tree (* builtin_vectorized_function) (unsigned, tree, tree);
+
+    /* Returns a code for builtin that realizes vectorized version of
+       conversion, or NULL_TREE if not available.  */
+    tree (* builtin_conversion) (unsigned, tree);
+
+    /* Target builtin that implements vector widening multiplication.
+       builtin_mul_widen_eve computes the element-by-element products 
+       for the even elements, and builtin_mul_widen_odd computes the
+       element-by-element products for the odd elements.  */
+    tree (* builtin_mul_widen_even) (tree);
+    tree (* builtin_mul_widen_odd) (tree);
+
+    /* Returns the cost to be added to the overheads involved with
+       executing the vectorized version of a loop.  */
+    int (*builtin_vectorization_cost) (bool);
+
+    /* Return true if vector alignment is reachable (by peeling N
+       iterations) for the given type.  */
+    bool (* vector_alignment_reachable) (const_tree, bool);
+
+    /* Target builtin that implements vector permute.  */
+    tree (* builtin_vec_perm) (tree, tree*);
+} vectorize;
+
+  /* The initial value of target_flags.  */
+  int default_target_flags;
+
+  /* Handle target switch CODE (an OPT_* value).  ARG is the argument
+     passed to the switch; it is NULL if no argument was.  VALUE is the
+     value of ARG if CODE specifies a UInteger option, otherwise it is
+     1 if the positive form of the switch was used and 0 if the negative
+     form was.  Return true if the switch was valid.  */
+  bool (* handle_option) (size_t code, const char *arg, int value);
+
+  /* Display extra, target specific information in response to a
+     --target-help switch.  */
+  void (* target_help) (void);
+
+  /* Return machine mode for filter value.  */
+  enum machine_mode (* eh_return_filter_mode) (void);
+
+  /* Return machine mode for libgcc expanded cmp instructions.  */
+  enum machine_mode (* libgcc_cmp_return_mode) (void);
+
+  /* Return machine mode for libgcc expanded shift instructions.  */
+  enum machine_mode (* libgcc_shift_count_mode) (void);
+
+  /* Return machine mode to be used for _Unwind_Word type.  */
+  enum machine_mode (* unwind_word_mode) (void);
+
+  /* Given two decls, merge their attributes and return the result.  */
+  tree (* merge_decl_attributes) (tree, tree);
+
+  /* Given two types, merge their attributes and return the result.  */
+  tree (* merge_type_attributes) (tree, tree);
+
+  /* Table of machine attributes and functions to handle them.
+     Ignored if NULL.  */
+  const struct attribute_spec *attribute_table;
+
+  /* Return zero if the attributes on TYPE1 and TYPE2 are incompatible,
+     one if they are compatible and two if they are nearly compatible
+     (which causes a warning to be generated).  */
+  int (* comp_type_attributes) (const_tree type1, const_tree type2);
+
+  /* Assign default attributes to the newly defined TYPE.  */
+  void (* set_default_type_attributes) (tree type);
+
+  /* Insert attributes on the newly created DECL.  */
+  void (* insert_attributes) (tree decl, tree *attributes);
+
+  /* Return true if FNDECL (which has at least one machine attribute)
+     can be inlined despite its machine attributes, false otherwise.  */
+  bool (* function_attribute_inlinable_p) (const_tree fndecl);
+
+  /* Return true if bitfields in RECORD_TYPE should follow the
+     Microsoft Visual C++ bitfield layout rules.  */
+  bool (* ms_bitfield_layout_p) (const_tree record_type);
+
+  /* True if the target supports decimal floating point.  */
+  bool (* decimal_float_supported_p) (void);
+
+  /* True if the target supports fixed-point.  */
+  bool (* fixed_point_supported_p) (void);
+
+  /* Return true if anonymous bitfields affect structure alignment.  */
+  bool (* align_anon_bitfield) (void);
+
+  /* Return true if volatile bitfields should use the narrowest type possible.
+     Return false if they should use the container type.  */
+  bool (* narrow_volatile_bitfield) (void);
+
+  /* Set up target-specific built-in functions.  */
+  void (* init_builtins) (void);
+
+  /* Expand a target-specific builtin.  */
+  rtx (* expand_builtin) (tree exp, rtx target, rtx subtarget,
+                         enum machine_mode mode, int ignore);
+
+  /* Select a replacement for a target-specific builtin.  This is done
+     *before* regular type checking, and so allows the target to implement
+     a crude form of function overloading.  The result is a complete
+     expression that implements the operation.  */
+  tree (*resolve_overloaded_builtin) (tree decl, tree params);
+
+  /* Fold a target-specific builtin.  */
+  tree (* fold_builtin) (tree fndecl, tree arglist, bool ignore);
+
+  /* Returns a code for a target-specific builtin that implements
+     reciprocal of the function, or NULL_TREE if not available.  */
+  tree (* builtin_reciprocal) (unsigned, bool, bool);
+
+  /* For a vendor-specific TYPE, return a pointer to a statically-allocated
+     string containing the C++ mangling for TYPE.  In all other cases, return
+     NULL.  */
+  const char * (* mangle_type) (const_tree type);
+
+  /* Make any adjustments to libfunc names needed for this target.  */
+  void (* init_libfuncs) (void);
+
+  /* Given a decl, a section name, and whether the decl initializer
+     has relocs, choose attributes for the section.  */
+  /* ??? Should be merged with SELECT_SECTION and UNIQUE_SECTION.  */
+  unsigned int (* section_type_flags) (tree, const char *, int);
+
+  /* True if new jumps cannot be created, to replace existing ones or
+     not, at the current point in the compilation.  */
+  bool (* cannot_modify_jumps_p) (void);
+
+  /* Return a register class for which branch target register
+     optimizations should be applied.  */
+  int (* branch_target_register_class) (void);
+
+  /* Return true if branch target register optimizations should include
+     callee-saved registers that are not already live during the current
+     function.  AFTER_PE_GEN is true if prologues and epilogues have
+     already been generated.  */
+  bool (* branch_target_register_callee_saved) (bool after_pe_gen);
+
+  /* True if the constant X cannot be placed in the constant pool.  */
+  bool (* cannot_force_const_mem) (rtx);
+
+  /* True if the insn X cannot be duplicated.  */
+  bool (* cannot_copy_insn_p) (rtx);
+
+  /* True if X is considered to be commutative.  */
+  bool (* commutative_p) (const_rtx, int);
+
+  /* Given an address RTX, undo the effects of LEGITIMIZE_ADDRESS.  */
+  rtx (* delegitimize_address) (rtx);
+
+  /* True if the given constant can be put into an object_block.  */
+  bool (* use_blocks_for_constant_p) (enum machine_mode, const_rtx);
+
+  /* The minimum and maximum byte offsets for anchored addresses.  */
+  HOST_WIDE_INT min_anchor_offset;
+  HOST_WIDE_INT max_anchor_offset;
+
+  /* True if section anchors can be used to access the given symbol.  */
+  bool (* use_anchors_for_symbol_p) (const_rtx);
+
+  /* True if it is OK to do sibling call optimization for the specified
+     call expression EXP.  DECL will be the called function, or NULL if
+     this is an indirect call.  */
+  bool (*function_ok_for_sibcall) (tree decl, tree exp);
+
+  /* Establish appropriate back-end context for processing the function
+     FNDECL.  The argument might be NULL to indicate processing at top
+     level, outside of any function scope.  */
+  void (*set_current_function) (tree fndecl);
+
+  /* True if EXP should be placed in a "small data" section.  */
+  bool (* in_small_data_p) (const_tree);
+
+  /* True if EXP names an object for which name resolution must resolve
+     to the current executable or shared library.  */
+  bool (* binds_local_p) (const_tree);
+
+  /* Modify and return the identifier of a DECL's external name,
+     originally identified by ID, as required by the target,
+    (eg, append @nn to windows32 stdcall function names).
+     The default is to return ID without modification. */
+   tree (* mangle_decl_assembler_name) (tree decl, tree  id);
+
+  /* Do something target-specific to record properties of the DECL into
+     the associated SYMBOL_REF.  */
+  void (* encode_section_info) (tree, rtx, int);
+
+  /* Undo the effects of encode_section_info on the symbol string.  */
+  const char * (* strip_name_encoding) (const char *);
+
+  /* If shift optabs for MODE are known to always truncate the shift count,
+     return the mask that they apply.  Return 0 otherwise.  */
+  unsigned HOST_WIDE_INT (* shift_truncation_mask) (enum machine_mode mode);
+
+  /* Return the number of divisions in the given MODE that should be present,
+     so that it is profitable to turn the division into a multiplication by
+     the reciprocal.  */
+  unsigned int (* min_divisions_for_recip_mul) (enum machine_mode mode);
+
+  /* If the representation of integral MODE is such that values are
+     always sign-extended to a wider mode MODE_REP then return
+     SIGN_EXTEND.  Return UNKNOWN otherwise.  */
+  /* Note that the return type ought to be RTX_CODE, but that's not
+     necessarily defined at this point.  */
+  int (* mode_rep_extended) (enum machine_mode mode,
+                            enum machine_mode mode_rep);
+
+  /* True if MODE is valid for a pointer in __attribute__((mode("MODE"))).  */
+  bool (* valid_pointer_mode) (enum machine_mode mode);
+
+  /* True if MODE is valid for the target.  By "valid", we mean able to
+     be manipulated in non-trivial ways.  In particular, this means all
+     the arithmetic is supported.  */
+  bool (* scalar_mode_supported_p) (enum machine_mode mode);
+
+  /* Similarly for vector modes.  "Supported" here is less strict.  At
+     least some operations are supported; need to check optabs or builtins
+     for further details.  */
+  bool (* vector_mode_supported_p) (enum machine_mode mode);
+
+  /* True if a vector is opaque.  */
+  bool (* vector_opaque_p) (const_tree);
+
+  /* Compute a (partial) cost for rtx X.  Return true if the complete
+     cost has been computed, and false if subexpressions should be
+     scanned.  In either case, *TOTAL contains the cost result.  */
+  /* Note that CODE and OUTER_CODE ought to be RTX_CODE, but that's
+     not necessarily defined at this point.  */
+  bool (* rtx_costs) (rtx x, int code, int outer_code, int *total, bool speed);
+
+  /* Compute the cost of X, used as an address.  Never called with
+     invalid addresses.  */
+  int (* address_cost) (rtx x, bool speed);
+
+  /* Return where to allocate pseudo for a given hard register initial
+     value.  */
+  rtx (* allocate_initial_value) (rtx x);
+
+  /* Return nonzero if evaluating UNSPEC[_VOLATILE] X might cause a trap.
+     FLAGS has the same meaning as in rtlanal.c: may_trap_p_1.  */
+  int (* unspec_may_trap_p) (const_rtx x, unsigned flags);
+
+  /* Given a register, this hook should return a parallel of registers
+     to represent where to find the register pieces.  Define this hook
+     if the register and its mode are represented in Dwarf in
+     non-contiguous locations, or if the register should be
+     represented in more than one register in Dwarf.  Otherwise, this
+     hook should return NULL_RTX.  */
+  rtx (* dwarf_register_span) (rtx);
+
+  /* If expand_builtin_init_dwarf_reg_sizes needs to fill in table
+     entries not corresponding directly to registers below
+     FIRST_PSEUDO_REGISTER, this hook should generate the necessary
+     code, given the address of the table.  */
+  void (* init_dwarf_reg_sizes_extra) (tree);
+
+  /* Fetch the fixed register(s) which hold condition codes, for
+     targets where it makes sense to look for duplicate assignments to
+     the condition codes.  This should return true if there is such a
+     register, false otherwise.  The arguments should be set to the
+     fixed register numbers.  Up to two condition code registers are
+     supported.  If there is only one for this target, the int pointed
+     at by the second argument should be set to -1.  */
+  bool (* fixed_condition_code_regs) (unsigned int *, unsigned int *);
+
+  /* If two condition code modes are compatible, return a condition
+     code mode which is compatible with both, such that a comparison
+     done in the returned mode will work for both of the original
+     modes.  If the condition code modes are not compatible, return
+     VOIDmode.  */
+  enum machine_mode (* cc_modes_compatible) (enum machine_mode,
+                                            enum machine_mode);
+
+  /* Do machine-dependent code transformations.  Called just before
+     delayed-branch scheduling.  */
+  void (* machine_dependent_reorg) (void);
+
+  /* Create the __builtin_va_list type.  */
+  tree (* build_builtin_va_list) (void);
+
+  /* Get the cfun/fndecl calling abi __builtin_va_list type.  */
+  tree (* fn_abi_va_list) (tree);
+
+  /* Get the __builtin_va_list type dependent on input type.  */
+  tree (* canonical_va_list_type) (tree);
+
+  /* Expand the __builtin_va_start builtin.  */
+  void (* expand_builtin_va_start) (tree valist, rtx nextarg);
+
+  /* Gimplifies a VA_ARG_EXPR.  */
+  tree (* gimplify_va_arg_expr) (tree valist, tree type, gimple_seq *pre_p,
+                                gimple_seq *post_p);
+
+  /* Validity-checking routines for PCH files, target-specific.
+     get_pch_validity returns a pointer to the data to be stored,
+     and stores the size in its argument.  pch_valid_p gets the same
+     information back and returns NULL if the PCH is valid,
+     or an error message if not.
+  */
+  void * (* get_pch_validity) (size_t *);
+  const char * (* pch_valid_p) (const void *, size_t);
+
+  /* If nonnull, this function checks whether a PCH file with the
+     given set of target flags can be used.  It returns NULL if so,
+     otherwise it returns an error message.  */
+  const char *(*check_pch_target_flags) (int);
+
+  /* True if the compiler should give an enum type only as many
+     bytes as it takes to represent the range of possible values of
+     that type.  */
+  bool (* default_short_enums) (void);
+
+  /* This target hook returns an rtx that is used to store the address
+     of the current frame into the built-in setjmp buffer.  */
+  rtx (* builtin_setjmp_frame_value) (void);
+
+  /* This target hook should add STRING_CST trees for any hard regs
+     the port wishes to automatically clobber for an asm.  */
+  tree (* md_asm_clobbers) (tree, tree, tree);
+
+  /* This target hook allows the backend to specify a calling convention
+     in the debug information.  This function actually returns an
+     enum dwarf_calling_convention, but because of forward declarations
+     and not wanting to include dwarf2.h everywhere target.h is included
+     the function is being declared as an int.  */
+  int (* dwarf_calling_convention) (const_tree);
+
+  /* This target hook allows the backend to emit frame-related insns that
+     contain UNSPECs or UNSPEC_VOLATILEs.  The call frame debugging info
+     engine will invoke it on insns of the form
+       (set (reg) (unspec [...] UNSPEC_INDEX))
+     and
+       (set (reg) (unspec_volatile [...] UNSPECV_INDEX))
+     to let the backend emit the call frame instructions.  */
+  void (* dwarf_handle_frame_unspec) (const char *, rtx, int);
+
+  /* Perform architecture specific checking of statements gimplified
+     from VA_ARG_EXPR.  STMT is the statement.  Returns true if the statement
+     doesn't need to be checked for va_list references.  */
+  bool (* stdarg_optimize_hook) (struct stdarg_info *ai, const_gimple stmt);
+
+  /* This target hook allows the operating system to override the DECL
+     that represents the external variable that contains the stack
+     protection guard variable.  The type of this DECL is ptr_type_node.  */
+  tree (* stack_protect_guard) (void);
+
+  /* This target hook allows the operating system to override the CALL_EXPR
+     that is invoked when a check vs the guard variable fails.  */
+  tree (* stack_protect_fail) (void);
+
+  /* Returns NULL if target supports the insn within a doloop block,
+     otherwise it returns an error message.  */
+  const char * (*invalid_within_doloop) (const_rtx);
+
+  /* DECL is a variable or function with __attribute__((dllimport))
+     specified.  Use this hook if the target needs to add extra validation
+     checks to  handle_dll_attribute ().  */
+  bool (* valid_dllimport_attribute_p) (const_tree decl);
+
+  /* Functions relating to calls - argument passing, returns, etc.  */
+  struct calls {
+    bool (*promote_function_args) (const_tree fntype);
+    bool (*promote_function_return) (const_tree fntype);
+    bool (*promote_prototypes) (const_tree fntype);
+    rtx (*struct_value_rtx) (tree fndecl, int incoming);
+    bool (*return_in_memory) (const_tree type, const_tree fndecl);
+    bool (*return_in_msb) (const_tree type);
+
+    /* Return true if a parameter must be passed by reference.  TYPE may
+       be null if this is a libcall.  CA may be null if this query is
+       from __builtin_va_arg.  */
+    bool (*pass_by_reference) (CUMULATIVE_ARGS *ca, enum machine_mode mode,
+                              const_tree type, bool named_arg);
+
+    rtx (*expand_builtin_saveregs) (void);
+    /* Returns pretend_argument_size.  */
+    void (*setup_incoming_varargs) (CUMULATIVE_ARGS *ca, enum machine_mode mode,
+                                   tree type, int *pretend_arg_size,
+                                   int second_time);
+    bool (*strict_argument_naming) (CUMULATIVE_ARGS *ca);
+    /* Returns true if we should use
+       targetm.calls.setup_incoming_varargs() and/or
+       targetm.calls.strict_argument_naming().  */
+    bool (*pretend_outgoing_varargs_named) (CUMULATIVE_ARGS *ca);
+
+    /* Given a complex type T, return true if a parameter of type T
+       should be passed as two scalars.  */
+    bool (* split_complex_arg) (const_tree type);
+
+    /* Return true if type T, mode MODE, may not be passed in registers,
+       but must be passed on the stack.  */
+    /* ??? This predicate should be applied strictly after pass-by-reference.
+       Need audit to verify that this is the case.  */
+    bool (* must_pass_in_stack) (enum machine_mode mode, const_tree t);
+
+    /* Return true if type TYPE, mode MODE, which is passed by reference,
+       should have the object copy generated by the callee rather than
+       the caller.  It is never called for TYPE requiring constructors.  */
+    bool (* callee_copies) (CUMULATIVE_ARGS *ca, enum machine_mode mode,
+                           const_tree type, bool named);
+
+    /* Return zero for arguments passed entirely on the stack or entirely
+       in registers.  If passed in both, return the number of bytes passed
+       in registers; the balance is therefore passed on the stack.  */
+    int (* arg_partial_bytes) (CUMULATIVE_ARGS *ca, enum machine_mode mode,
+                              tree type, bool named);
+
+    /* Return the diagnostic message string if function without a prototype
+       is not allowed for this 'val' argument; NULL otherwise. */
+    const char *(*invalid_arg_for_unprototyped_fn) (const_tree typelist,
+                                                   const_tree funcdecl,
+                                                   const_tree val);
+
+    /* Return an rtx for the return value location of the function
+       specified by FN_DECL_OR_TYPE with a return type of RET_TYPE.  */
+    rtx (*function_value) (const_tree ret_type, const_tree fn_decl_or_type,
+                          bool outgoing);
+
+    /* Return an rtx for the argument pointer incoming to the
+       current function.  */
+    rtx (*internal_arg_pointer) (void);
+
+    /* Update the current function stack boundary if needed.  */
+    void (*update_stack_boundary) (void);
+
+    /* Handle stack alignment and return an rtx for Dynamic Realign
+       Argument Pointer if necessary.  */
+    rtx (*get_drap_rtx) (void);
+
+    /* Return true if all function parameters should be spilled to the
+       stack.  */
+    bool (*allocate_stack_slots_for_args) (void);
+    
+  } calls;
+
+  /* Return the diagnostic message string if conversion from FROMTYPE
+     to TOTYPE is not allowed, NULL otherwise.  */
+  const char *(*invalid_conversion) (const_tree fromtype, const_tree totype);
+
+  /* Return the diagnostic message string if the unary operation OP is
+     not permitted on TYPE, NULL otherwise.  */
+  const char *(*invalid_unary_op) (int op, const_tree type);
+
+  /* Return the diagnostic message string if the binary operation OP
+     is not permitted on TYPE1 and TYPE2, NULL otherwise.  */
+  const char *(*invalid_binary_op) (int op, const_tree type1, const_tree type2);
+
+  /* Return the array of IRA cover classes for the current target.  */
+  const enum reg_class *(*ira_cover_classes) (void);
+
+  /* Return the class for a secondary reload, and fill in extra information.  */
+  enum reg_class (*secondary_reload) (bool, rtx, enum reg_class,
+                                     enum machine_mode,
+                                     struct secondary_reload_info *);
+
+  /* This target hook allows the backend to perform additional
+     processing while initializing for variable expansion.  */
+  void (* expand_to_rtl_hook) (void);
+
+  /* This target hook allows the backend to perform additional
+     instantiations on rtx that are not actually in insns yet,
+     but will be later.  */
+  void (* instantiate_decls) (void);
+
+  /* Return true if is OK to use a hard register REGNO as scratch register
+     in peephole2.  */
+  bool (* hard_regno_scratch_ok) (unsigned int regno);
+
+  /* Functions specific to the C family of frontends.  */
+  struct c {
+    /* Return machine mode for non-standard suffix
+       or VOIDmode if non-standard suffixes are unsupported.  */
+    enum machine_mode (*mode_for_suffix) (char);
+  } c;
+
+  /* Functions specific to the C++ frontend.  */
+  struct cxx {
+    /* Return the integer type used for guard variables.  */
+    tree (*guard_type) (void);
+    /* Return true if only the low bit of the guard should be tested.  */
+    bool (*guard_mask_bit) (void);
+    /* Returns the size of the array cookie for an array of type.  */
+    tree (*get_cookie_size) (tree);
+    /* Returns true if the element size should be stored in the
+       array cookie.  */
+    bool (*cookie_has_size) (void);
+    /* Allows backends to perform additional processing when
+       deciding if a class should be exported or imported.  */
+    int (*import_export_class) (tree, int);
+    /* Returns true if constructors and destructors return "this".  */
+    bool (*cdtor_returns_this) (void);
+    /* Returns true if the key method for a class can be an inline
+       function, so long as it is not declared inline in the class
+       itself.  Returning true is the behavior required by the Itanium
+       C++ ABI.  */
+    bool (*key_method_may_be_inline) (void);
+    /* DECL is a virtual table, virtual table table, typeinfo object,
+       or other similar implicit class data object that will be
+       emitted with external linkage in this translation unit.  No ELF
+       visibility has been explicitly specified.  If the target needs
+       to specify a visibility other than that of the containing class,
+       use this hook to set DECL_VISIBILITY and
+       DECL_VISIBILITY_SPECIFIED.  */
+    void (*determine_class_data_visibility) (tree decl);
+    /* Returns true (the default) if virtual tables and other
+       similar implicit class data objects are always COMDAT if they
+       have external linkage.  If this hook returns false, then
+       class data for classes whose virtual table will be emitted in
+       only one translation unit will not be COMDAT.  */
+    bool (*class_data_always_comdat) (void);
+    /* Returns true (the default) if the RTTI for the basic types,
+       which is always defined in the C++ runtime, should be COMDAT;
+       false if it should not be COMDAT.  */
+    bool (*library_rtti_comdat) (void);
+    /* Returns true if __aeabi_atexit should be used to register static
+       destructors.  */
+    bool (*use_aeabi_atexit) (void);
+    /* Returns true if target may use atexit in the same manner as
+    __cxa_atexit  to register static destructors.  */
+    bool (*use_atexit_for_cxa_atexit) (void);
+    /* TYPE is a C++ class (i.e., RECORD_TYPE or UNION_TYPE) that
+       has just been defined.  Use this hook to make adjustments to the
+       class  (eg, tweak visibility or perform any other required
+       target modifications).  */
+    void (*adjust_class_at_definition) (tree type);
+  } cxx;
+
+  /* Functions and data for emulated TLS support.  */
+  struct emutls {
+    /* Name of the address and common functions.  */
+    const char *get_address;
+    const char *register_common;
+
+    /* Prefixes for proxy variable and template.  */
+    const char *var_section;
+    const char *tmpl_section;
+
+    /* Prefixes for proxy variable and template.  */
+    const char *var_prefix;
+    const char *tmpl_prefix;
+    
+    /* Function to generate field definitions of the proxy variable.  */
+    tree (*var_fields) (tree, tree *);
+
+    /* Function to initialize a proxy variable.  */
+    tree (*var_init) (tree, tree, tree);
+
+    /* Whether we are allowed to alter the usual alignment of the
+       proxy variable.  */
+    bool var_align_fixed;
+
+    /* Whether we can emit debug information for TLS vars.  */
+    bool debug_form_tls_address;
+  } emutls;  
+
+  struct target_option_hooks {
+    /* Function to validate the attribute((option(...))) strings or NULL.  If
+       the option is validated, it is assumed that DECL_FUNCTION_SPECIFIC will
+       be filled in in the function decl node.  */
+    bool (*valid_attribute_p) (tree, tree, tree, int);
+
+    /* Function to save any extra target state in the target options
+       structure.  */
+    void (*save) (struct cl_target_option *);
+
+    /* Function to restore any extra target state from the target options
+       structure.  */
+    void (*restore) (struct cl_target_option *);
+
+    /* Function to print any extra target state from the target options
+       structure.  */
+    void (*print) (FILE *, int, struct cl_target_option *);
+
+    /* Function to parse arguments to be validated for #pragma option, and to
+       change the state if the options are valid.  If the first argument is
+       NULL, the second argument specifies the default options to use.  Return
+       true if the options are valid, and set the current state.  */
+    bool (*pragma_parse) (tree, tree);
+
+    /* Function to determine if one function can inline another function.  */
+    bool (*can_inline_p) (tree, tree);
+  } target_option;
+
+  /* For targets that need to mark extra registers as live on entry to
+     the function, they should define this target hook and set their
+     bits in the bitmap passed in. */  
+  void (*live_on_entry) (bitmap); 
+
+  /* True if unwinding tables should be generated by default.  */
+  bool unwind_tables_default;
+
+  /* Leave the boolean fields at the end.  */
+
+  /* True if arbitrary sections are supported.  */
+  bool have_named_sections;
+
+  /* True if we can create zeroed data by switching to a BSS section
+     and then using ASM_OUTPUT_SKIP to allocate the space.  */
+  bool have_switchable_bss_sections;
+
+  /* True if "native" constructors and destructors are supported,
+     false if we're using collect2 for the job.  */
+  bool have_ctors_dtors;
+
+  /* True if thread-local storage is supported.  */
+  bool have_tls;
+
+  /* True if a small readonly data section is supported.  */
+  bool have_srodata_section;
+
+  /* True if EH frame info sections should be zero-terminated.  */
+  bool terminate_dw2_eh_frame_info;
+
+  /* True if #NO_APP should be emitted at the beginning of
+     assembly output.  */
+  bool file_start_app_off;
+
+  /* True if output_file_directive should be called for main_input_filename
+     at the beginning of assembly output.  */
+  bool file_start_file_directive;
+
+  /* True if #pragma redefine_extname is to be supported.  */
+  bool handle_pragma_redefine_extname;
+
+  /* True if #pragma extern_prefix is to be supported.  */
+  bool handle_pragma_extern_prefix;
+
+  /* True if the target is allowed to reorder memory accesses unless
+     synchronization is explicitly requested.  */
+  bool relaxed_ordering;
+
+  /* Returns true if we should generate exception tables for use with the
+     ARM EABI.  The effects the encoding of function exception specifications.
+   */
+  bool arm_eabi_unwinder;
+
+  /* Leave the boolean fields at the end.  */
+};
+
+extern struct gcc_target targetm;
+
+struct gcc_targetcm {
+  /* Handle target switch CODE (an OPT_* value).  ARG is the argument
+     passed to the switch; it is NULL if no argument was.  VALUE is the
+     value of ARG if CODE specifies a UInteger option, otherwise it is
+     1 if the positive form of the switch was used and 0 if the negative
+     form was.  Return true if the switch was valid.  */
+  bool (*handle_c_option) (size_t code, const char *arg, int value);
+};
+
+/* Each target can provide their own.  */
+extern struct gcc_targetcm targetcm;
+
+#endif /* GCC_TARGET_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tm.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tm.h
new file mode 100644 (file)
index 0000000..b5e5976
--- /dev/null
@@ -0,0 +1,20 @@
+#ifndef GCC_TM_H
+#define GCC_TM_H
+#define TARGET_CPU_DEFAULT (TARGET_CPU_generic)
+#ifdef IN_GCC
+# include "options.h"
+# include "config/dbxelf.h"
+# include "config/elfos.h"
+# include "config/arm/unknown-elf.h"
+# include "config/arm/elf.h"
+# include "config/arm/bpabi.h"
+# include "config/arm/eabi.h"
+# include "config/arm/aout.h"
+# include "config/arm/arm.h"
+# include "defaults.h"
+#endif
+#if defined IN_GCC && !defined GENERATOR_FILE && !defined USED_FOR_TARGET
+# include "insn-constants.h"
+# include "insn-flags.h"
+#endif
+#endif /* GCC_TM_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/toplev.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/toplev.h
new file mode 100644 (file)
index 0000000..c567d0e
--- /dev/null
@@ -0,0 +1,219 @@
+/* toplev.h - Various declarations for functions found in toplev.c
+   Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008,
+   2009 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_TOPLEV_H
+#define GCC_TOPLEV_H
+#include "input.h"
+
+/* If non-NULL, return one past-the-end of the matching SUBPART of
+   the WHOLE string.  */
+#define skip_leading_substring(whole,  part) \
+   (strncmp (whole, part, strlen (part)) ? NULL : whole + strlen (part))
+
+extern int toplev_main (unsigned int, const char **);
+extern int read_integral_parameter (const char *, const char *, const int);
+extern void strip_off_ending (char *, int);
+extern const char *trim_filename (const char *);
+extern void _fatal_insn_not_found (const_rtx, const char *, int, const char *)
+     ATTRIBUTE_NORETURN;
+extern void _fatal_insn (const char *, const_rtx, 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__)
+
+/* If we haven't already defined a frontend specific diagnostics
+   style, use the generic one.  */
+#ifndef GCC_DIAG_STYLE
+#define GCC_DIAG_STYLE __gcc_tdiag__
+#endif
+/* None of these functions are suitable for ATTRIBUTE_PRINTF, because
+   each language front end can extend them with its own set of format
+   specifiers.  We must use custom format checks.  */
+#if GCC_VERSION >= 4001
+#define ATTRIBUTE_GCC_DIAG(m, n) __attribute__ ((__format__ (GCC_DIAG_STYLE, m, n))) ATTRIBUTE_NONNULL(m)
+#else
+#define ATTRIBUTE_GCC_DIAG(m, n) ATTRIBUTE_NONNULL(m)
+#endif
+extern void internal_error (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2)
+     ATTRIBUTE_NORETURN;
+/* Pass one of the OPT_W* from options.h as the first parameter.  */
+extern bool warning (int, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
+extern bool warning_at (location_t, int, const char *, ...)
+    ATTRIBUTE_GCC_DIAG(3,4);
+extern void error (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2);
+extern void error_at (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
+extern void fatal_error (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2)
+     ATTRIBUTE_NORETURN;
+/* Pass one of the OPT_W* from options.h as the second parameter.  */
+extern bool pedwarn (location_t, int, const char *, ...) 
+     ATTRIBUTE_GCC_DIAG(3,4);
+extern bool permerror (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
+extern void sorry (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2);
+extern void inform (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
+extern void verbatim (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2);
+
+extern void rest_of_decl_compilation (tree, int, int);
+extern void rest_of_type_compilation (tree, int);
+extern void tree_rest_of_compilation (tree);
+extern void init_optimization_passes (void);
+extern void finish_optimization_passes (void);
+extern bool enable_rtl_dump_file (void);
+
+extern void announce_function (tree);
+
+extern void error_for_asm (const_rtx, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
+extern void warning_for_asm (const_rtx, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
+extern void warn_deprecated_use (tree);
+extern bool parse_optimize_options (tree, bool);
+
+#ifdef BUFSIZ
+extern void output_quoted_string       (FILE *, const char *);
+extern void output_file_directive      (FILE *, const char *);
+#endif
+
+#ifdef BUFSIZ
+  /* N.B. Unlike all the others, fnotice is just gettext+fprintf, and
+     therefore it can have ATTRIBUTE_PRINTF.  */
+extern void fnotice                    (FILE *, const char *, ...)
+     ATTRIBUTE_PRINTF_2;
+#endif
+
+extern void wrapup_global_declaration_1 (tree);
+extern bool wrapup_global_declaration_2 (tree);
+extern bool wrapup_global_declarations (tree *, int);
+extern void check_global_declaration_1 (tree);
+extern void check_global_declarations (tree *, int);
+extern void emit_debug_global_declarations (tree *, int);
+extern void write_global_declarations (void);
+
+extern void dump_memory_report (bool);
+
+extern void target_reinit (void);
+
+/* A unique local time stamp, might be zero if none is available.  */
+extern unsigned local_tick;
+
+extern const char *progname;
+extern const char *dump_base_name;
+extern const char *aux_base_name;
+extern const char *aux_info_file_name;
+extern const char *profile_data_prefix;
+extern const char *asm_file_name;
+extern bool exit_after_options;
+
+/* Sample data input file. */
+extern const char *sample_data_name;
+
+/* True if the user has tagged the function with the 'section'
+   attribute.  */
+
+extern bool user_defined_section_attribute;
+
+/* True if the parser is currently parsing a lock attribute.  */
+extern bool parsing_lock_attribute;
+
+/* See toplev.c.  */
+extern int flag_crossjumping;
+extern int flag_if_conversion;
+extern int flag_if_conversion2;
+extern int flag_keep_static_consts;
+extern int flag_peel_loops;
+extern int flag_rerun_cse_after_loop;
+extern int flag_thread_jumps;
+extern int flag_tracer;
+extern int flag_unroll_loops;
+extern int flag_unroll_all_loops;
+extern int flag_unswitch_loops;
+extern int flag_cprop_registers;
+extern int time_report;
+extern int flag_ira_coalesce;
+extern int flag_ira_move_spills;
+extern int flag_ira_share_save_slots;
+extern int flag_ira_share_spill_slots;
+
+/* Things to do with target switches.  */
+extern void print_version (FILE *, const char *);
+extern void * default_get_pch_validity (size_t *);
+extern const char * default_pch_valid_p (const void *, size_t);
+
+/* The hashtable, so that the C front ends can pass it to cpplib.  */
+extern struct ht *ident_hash;
+
+/* This function can be used by targets to set the flags originally
+    implied by -ffast-math and -fno-fast-math.  */
+
+extern void set_fast_math_flags         (int);
+
+extern void set_unsafe_math_optimizations_flags (int);
+
+/* Handle -d switch.  */
+extern void decode_d_option            (const char *);
+
+/* Return true iff flags are set as if -ffast-math.  */
+extern bool fast_math_flags_set_p      (void);
+extern bool fast_math_flags_struct_set_p (struct cl_optimization *);
+
+/* Return log2, or -1 if not exact.  */
+extern int exact_log2                  (unsigned HOST_WIDE_INT);
+
+/* Return floor of log2, with -1 for zero.  */
+extern int floor_log2                  (unsigned HOST_WIDE_INT);
+
+/* Inline versions of the above for speed.  */
+#if GCC_VERSION >= 3004
+# if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
+#  define CLZ_HWI __builtin_clzl
+#  define CTZ_HWI __builtin_ctzl
+# elif HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONGLONG
+#  define CLZ_HWI __builtin_clzll
+#  define CTZ_HWI __builtin_ctzll
+# else
+#  define CLZ_HWI __builtin_clz
+#  define CTZ_HWI __builtin_ctz
+# endif
+
+extern inline int
+floor_log2 (unsigned HOST_WIDE_INT x)
+{
+  return x ? HOST_BITS_PER_WIDE_INT - 1 - (int) CLZ_HWI (x) : -1;
+}
+
+extern inline int
+exact_log2 (unsigned HOST_WIDE_INT x)
+{
+  return x == (x & -x) && x ? (int) CTZ_HWI (x) : -1;
+}
+#endif /* GCC_VERSION >= 3004 */
+
+/* Functions used to get and set GCC's notion of in what directory
+   compilation was started.  */
+
+extern const char *get_src_pwd        (void);
+extern bool set_src_pwd                       (const char *);
+
+/* Functions used to manipulate the random seed.  */
+
+extern const char *get_random_seed (bool);
+extern const char *set_random_seed (const char *);
+
+#endif /* ! GCC_TOPLEV_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-check.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-check.h
new file mode 100644 (file)
index 0000000..5a0bec5
--- /dev/null
@@ -0,0 +1,290 @@
+/* This file is generated using gencheck. Do not edit. */
+
+#ifndef GCC_TREE_CHECK_H
+#define GCC_TREE_CHECK_H
+
+#define ERROR_MARK_CHECK(t)    TREE_CHECK (t, ERROR_MARK)
+#define IDENTIFIER_NODE_CHECK(t)       TREE_CHECK (t, IDENTIFIER_NODE)
+#define TREE_LIST_CHECK(t)     TREE_CHECK (t, TREE_LIST)
+#define TREE_VEC_CHECK(t)      TREE_CHECK (t, TREE_VEC)
+#define BLOCK_CHECK(t) TREE_CHECK (t, BLOCK)
+#define OFFSET_TYPE_CHECK(t)   TREE_CHECK (t, OFFSET_TYPE)
+#define ENUMERAL_TYPE_CHECK(t) TREE_CHECK (t, ENUMERAL_TYPE)
+#define BOOLEAN_TYPE_CHECK(t)  TREE_CHECK (t, BOOLEAN_TYPE)
+#define INTEGER_TYPE_CHECK(t)  TREE_CHECK (t, INTEGER_TYPE)
+#define REAL_TYPE_CHECK(t)     TREE_CHECK (t, REAL_TYPE)
+#define POINTER_TYPE_CHECK(t)  TREE_CHECK (t, POINTER_TYPE)
+#define FIXED_POINT_TYPE_CHECK(t)      TREE_CHECK (t, FIXED_POINT_TYPE)
+#define REFERENCE_TYPE_CHECK(t)        TREE_CHECK (t, REFERENCE_TYPE)
+#define COMPLEX_TYPE_CHECK(t)  TREE_CHECK (t, COMPLEX_TYPE)
+#define VECTOR_TYPE_CHECK(t)   TREE_CHECK (t, VECTOR_TYPE)
+#define ARRAY_TYPE_CHECK(t)    TREE_CHECK (t, ARRAY_TYPE)
+#define RECORD_TYPE_CHECK(t)   TREE_CHECK (t, RECORD_TYPE)
+#define UNION_TYPE_CHECK(t)    TREE_CHECK (t, UNION_TYPE)
+#define QUAL_UNION_TYPE_CHECK(t)       TREE_CHECK (t, QUAL_UNION_TYPE)
+#define VOID_TYPE_CHECK(t)     TREE_CHECK (t, VOID_TYPE)
+#define FUNCTION_TYPE_CHECK(t) TREE_CHECK (t, FUNCTION_TYPE)
+#define METHOD_TYPE_CHECK(t)   TREE_CHECK (t, METHOD_TYPE)
+#define LANG_TYPE_CHECK(t)     TREE_CHECK (t, LANG_TYPE)
+#define INTEGER_CST_CHECK(t)   TREE_CHECK (t, INTEGER_CST)
+#define REAL_CST_CHECK(t)      TREE_CHECK (t, REAL_CST)
+#define FIXED_CST_CHECK(t)     TREE_CHECK (t, FIXED_CST)
+#define COMPLEX_CST_CHECK(t)   TREE_CHECK (t, COMPLEX_CST)
+#define VECTOR_CST_CHECK(t)    TREE_CHECK (t, VECTOR_CST)
+#define STRING_CST_CHECK(t)    TREE_CHECK (t, STRING_CST)
+#define FUNCTION_DECL_CHECK(t) TREE_CHECK (t, FUNCTION_DECL)
+#define LABEL_DECL_CHECK(t)    TREE_CHECK (t, LABEL_DECL)
+#define FIELD_DECL_CHECK(t)    TREE_CHECK (t, FIELD_DECL)
+#define VAR_DECL_CHECK(t)      TREE_CHECK (t, VAR_DECL)
+#define CONST_DECL_CHECK(t)    TREE_CHECK (t, CONST_DECL)
+#define PARM_DECL_CHECK(t)     TREE_CHECK (t, PARM_DECL)
+#define TYPE_DECL_CHECK(t)     TREE_CHECK (t, TYPE_DECL)
+#define RESULT_DECL_CHECK(t)   TREE_CHECK (t, RESULT_DECL)
+#define NAME_MEMORY_TAG_CHECK(t)       TREE_CHECK (t, NAME_MEMORY_TAG)
+#define SYMBOL_MEMORY_TAG_CHECK(t)     TREE_CHECK (t, SYMBOL_MEMORY_TAG)
+#define MEMORY_PARTITION_TAG_CHECK(t)  TREE_CHECK (t, MEMORY_PARTITION_TAG)
+#define NAMESPACE_DECL_CHECK(t)        TREE_CHECK (t, NAMESPACE_DECL)
+#define IMPORTED_DECL_CHECK(t) TREE_CHECK (t, IMPORTED_DECL)
+#define TRANSLATION_UNIT_DECL_CHECK(t) TREE_CHECK (t, TRANSLATION_UNIT_DECL)
+#define COMPONENT_REF_CHECK(t) TREE_CHECK (t, COMPONENT_REF)
+#define BIT_FIELD_REF_CHECK(t) TREE_CHECK (t, BIT_FIELD_REF)
+#define INDIRECT_REF_CHECK(t)  TREE_CHECK (t, INDIRECT_REF)
+#define ALIGN_INDIRECT_REF_CHECK(t)    TREE_CHECK (t, ALIGN_INDIRECT_REF)
+#define MISALIGNED_INDIRECT_REF_CHECK(t)       TREE_CHECK (t, MISALIGNED_INDIRECT_REF)
+#define ARRAY_REF_CHECK(t)     TREE_CHECK (t, ARRAY_REF)
+#define ARRAY_RANGE_REF_CHECK(t)       TREE_CHECK (t, ARRAY_RANGE_REF)
+#define OBJ_TYPE_REF_CHECK(t)  TREE_CHECK (t, OBJ_TYPE_REF)
+#define EXC_PTR_EXPR_CHECK(t)  TREE_CHECK (t, EXC_PTR_EXPR)
+#define FILTER_EXPR_CHECK(t)   TREE_CHECK (t, FILTER_EXPR)
+#define CONSTRUCTOR_CHECK(t)   TREE_CHECK (t, CONSTRUCTOR)
+#define COMPOUND_EXPR_CHECK(t) TREE_CHECK (t, COMPOUND_EXPR)
+#define MODIFY_EXPR_CHECK(t)   TREE_CHECK (t, MODIFY_EXPR)
+#define INIT_EXPR_CHECK(t)     TREE_CHECK (t, INIT_EXPR)
+#define TARGET_EXPR_CHECK(t)   TREE_CHECK (t, TARGET_EXPR)
+#define COND_EXPR_CHECK(t)     TREE_CHECK (t, COND_EXPR)
+#define VEC_COND_EXPR_CHECK(t) TREE_CHECK (t, VEC_COND_EXPR)
+#define BIND_EXPR_CHECK(t)     TREE_CHECK (t, BIND_EXPR)
+#define CALL_EXPR_CHECK(t)     TREE_CHECK (t, CALL_EXPR)
+#define WITH_CLEANUP_EXPR_CHECK(t)     TREE_CHECK (t, WITH_CLEANUP_EXPR)
+#define CLEANUP_POINT_EXPR_CHECK(t)    TREE_CHECK (t, CLEANUP_POINT_EXPR)
+#define PLACEHOLDER_EXPR_CHECK(t)      TREE_CHECK (t, PLACEHOLDER_EXPR)
+#define PLUS_EXPR_CHECK(t)     TREE_CHECK (t, PLUS_EXPR)
+#define MINUS_EXPR_CHECK(t)    TREE_CHECK (t, MINUS_EXPR)
+#define MULT_EXPR_CHECK(t)     TREE_CHECK (t, MULT_EXPR)
+#define POINTER_PLUS_EXPR_CHECK(t)     TREE_CHECK (t, POINTER_PLUS_EXPR)
+#define TRUNC_DIV_EXPR_CHECK(t)        TREE_CHECK (t, TRUNC_DIV_EXPR)
+#define CEIL_DIV_EXPR_CHECK(t) TREE_CHECK (t, CEIL_DIV_EXPR)
+#define FLOOR_DIV_EXPR_CHECK(t)        TREE_CHECK (t, FLOOR_DIV_EXPR)
+#define ROUND_DIV_EXPR_CHECK(t)        TREE_CHECK (t, ROUND_DIV_EXPR)
+#define TRUNC_MOD_EXPR_CHECK(t)        TREE_CHECK (t, TRUNC_MOD_EXPR)
+#define CEIL_MOD_EXPR_CHECK(t) TREE_CHECK (t, CEIL_MOD_EXPR)
+#define FLOOR_MOD_EXPR_CHECK(t)        TREE_CHECK (t, FLOOR_MOD_EXPR)
+#define ROUND_MOD_EXPR_CHECK(t)        TREE_CHECK (t, ROUND_MOD_EXPR)
+#define RDIV_EXPR_CHECK(t)     TREE_CHECK (t, RDIV_EXPR)
+#define EXACT_DIV_EXPR_CHECK(t)        TREE_CHECK (t, EXACT_DIV_EXPR)
+#define FIX_TRUNC_EXPR_CHECK(t)        TREE_CHECK (t, FIX_TRUNC_EXPR)
+#define FLOAT_EXPR_CHECK(t)    TREE_CHECK (t, FLOAT_EXPR)
+#define NEGATE_EXPR_CHECK(t)   TREE_CHECK (t, NEGATE_EXPR)
+#define MIN_EXPR_CHECK(t)      TREE_CHECK (t, MIN_EXPR)
+#define MAX_EXPR_CHECK(t)      TREE_CHECK (t, MAX_EXPR)
+#define ABS_EXPR_CHECK(t)      TREE_CHECK (t, ABS_EXPR)
+#define LSHIFT_EXPR_CHECK(t)   TREE_CHECK (t, LSHIFT_EXPR)
+#define RSHIFT_EXPR_CHECK(t)   TREE_CHECK (t, RSHIFT_EXPR)
+#define LROTATE_EXPR_CHECK(t)  TREE_CHECK (t, LROTATE_EXPR)
+#define RROTATE_EXPR_CHECK(t)  TREE_CHECK (t, RROTATE_EXPR)
+#define BIT_IOR_EXPR_CHECK(t)  TREE_CHECK (t, BIT_IOR_EXPR)
+#define BIT_XOR_EXPR_CHECK(t)  TREE_CHECK (t, BIT_XOR_EXPR)
+#define BIT_AND_EXPR_CHECK(t)  TREE_CHECK (t, BIT_AND_EXPR)
+#define BIT_NOT_EXPR_CHECK(t)  TREE_CHECK (t, BIT_NOT_EXPR)
+#define TRUTH_ANDIF_EXPR_CHECK(t)      TREE_CHECK (t, TRUTH_ANDIF_EXPR)
+#define TRUTH_ORIF_EXPR_CHECK(t)       TREE_CHECK (t, TRUTH_ORIF_EXPR)
+#define TRUTH_AND_EXPR_CHECK(t)        TREE_CHECK (t, TRUTH_AND_EXPR)
+#define TRUTH_OR_EXPR_CHECK(t) TREE_CHECK (t, TRUTH_OR_EXPR)
+#define TRUTH_XOR_EXPR_CHECK(t)        TREE_CHECK (t, TRUTH_XOR_EXPR)
+#define TRUTH_NOT_EXPR_CHECK(t)        TREE_CHECK (t, TRUTH_NOT_EXPR)
+#define LT_EXPR_CHECK(t)       TREE_CHECK (t, LT_EXPR)
+#define LE_EXPR_CHECK(t)       TREE_CHECK (t, LE_EXPR)
+#define GT_EXPR_CHECK(t)       TREE_CHECK (t, GT_EXPR)
+#define GE_EXPR_CHECK(t)       TREE_CHECK (t, GE_EXPR)
+#define EQ_EXPR_CHECK(t)       TREE_CHECK (t, EQ_EXPR)
+#define NE_EXPR_CHECK(t)       TREE_CHECK (t, NE_EXPR)
+#define UNORDERED_EXPR_CHECK(t)        TREE_CHECK (t, UNORDERED_EXPR)
+#define ORDERED_EXPR_CHECK(t)  TREE_CHECK (t, ORDERED_EXPR)
+#define UNLT_EXPR_CHECK(t)     TREE_CHECK (t, UNLT_EXPR)
+#define UNLE_EXPR_CHECK(t)     TREE_CHECK (t, UNLE_EXPR)
+#define UNGT_EXPR_CHECK(t)     TREE_CHECK (t, UNGT_EXPR)
+#define UNGE_EXPR_CHECK(t)     TREE_CHECK (t, UNGE_EXPR)
+#define UNEQ_EXPR_CHECK(t)     TREE_CHECK (t, UNEQ_EXPR)
+#define LTGT_EXPR_CHECK(t)     TREE_CHECK (t, LTGT_EXPR)
+#define RANGE_EXPR_CHECK(t)    TREE_CHECK (t, RANGE_EXPR)
+#define PAREN_EXPR_CHECK(t)    TREE_CHECK (t, PAREN_EXPR)
+#define CONVERT_EXPR_CHECK(t)  TREE_CHECK (t, CONVERT_EXPR)
+#define FIXED_CONVERT_EXPR_CHECK(t)    TREE_CHECK (t, FIXED_CONVERT_EXPR)
+#define NOP_EXPR_CHECK(t)      TREE_CHECK (t, NOP_EXPR)
+#define NON_LVALUE_EXPR_CHECK(t)       TREE_CHECK (t, NON_LVALUE_EXPR)
+#define VIEW_CONVERT_EXPR_CHECK(t)     TREE_CHECK (t, VIEW_CONVERT_EXPR)
+#define SAVE_EXPR_CHECK(t)     TREE_CHECK (t, SAVE_EXPR)
+#define ADDR_EXPR_CHECK(t)     TREE_CHECK (t, ADDR_EXPR)
+#define FDESC_EXPR_CHECK(t)    TREE_CHECK (t, FDESC_EXPR)
+#define COMPLEX_EXPR_CHECK(t)  TREE_CHECK (t, COMPLEX_EXPR)
+#define CONJ_EXPR_CHECK(t)     TREE_CHECK (t, CONJ_EXPR)
+#define REALPART_EXPR_CHECK(t) TREE_CHECK (t, REALPART_EXPR)
+#define IMAGPART_EXPR_CHECK(t) TREE_CHECK (t, IMAGPART_EXPR)
+#define PREDECREMENT_EXPR_CHECK(t)     TREE_CHECK (t, PREDECREMENT_EXPR)
+#define PREINCREMENT_EXPR_CHECK(t)     TREE_CHECK (t, PREINCREMENT_EXPR)
+#define POSTDECREMENT_EXPR_CHECK(t)    TREE_CHECK (t, POSTDECREMENT_EXPR)
+#define POSTINCREMENT_EXPR_CHECK(t)    TREE_CHECK (t, POSTINCREMENT_EXPR)
+#define VA_ARG_EXPR_CHECK(t)   TREE_CHECK (t, VA_ARG_EXPR)
+#define TRY_CATCH_EXPR_CHECK(t)        TREE_CHECK (t, TRY_CATCH_EXPR)
+#define TRY_FINALLY_EXPR_CHECK(t)      TREE_CHECK (t, TRY_FINALLY_EXPR)
+#define DECL_EXPR_CHECK(t)     TREE_CHECK (t, DECL_EXPR)
+#define LABEL_EXPR_CHECK(t)    TREE_CHECK (t, LABEL_EXPR)
+#define GOTO_EXPR_CHECK(t)     TREE_CHECK (t, GOTO_EXPR)
+#define RETURN_EXPR_CHECK(t)   TREE_CHECK (t, RETURN_EXPR)
+#define EXIT_EXPR_CHECK(t)     TREE_CHECK (t, EXIT_EXPR)
+#define LOOP_EXPR_CHECK(t)     TREE_CHECK (t, LOOP_EXPR)
+#define SWITCH_EXPR_CHECK(t)   TREE_CHECK (t, SWITCH_EXPR)
+#define CASE_LABEL_EXPR_CHECK(t)       TREE_CHECK (t, CASE_LABEL_EXPR)
+#define RESX_EXPR_CHECK(t)     TREE_CHECK (t, RESX_EXPR)
+#define ASM_EXPR_CHECK(t)      TREE_CHECK (t, ASM_EXPR)
+#define SSA_NAME_CHECK(t)      TREE_CHECK (t, SSA_NAME)
+#define CATCH_EXPR_CHECK(t)    TREE_CHECK (t, CATCH_EXPR)
+#define EH_FILTER_EXPR_CHECK(t)        TREE_CHECK (t, EH_FILTER_EXPR)
+#define CHANGE_DYNAMIC_TYPE_EXPR_CHECK(t)      TREE_CHECK (t, CHANGE_DYNAMIC_TYPE_EXPR)
+#define SCEV_KNOWN_CHECK(t)    TREE_CHECK (t, SCEV_KNOWN)
+#define SCEV_NOT_KNOWN_CHECK(t)        TREE_CHECK (t, SCEV_NOT_KNOWN)
+#define POLYNOMIAL_CHREC_CHECK(t)      TREE_CHECK (t, POLYNOMIAL_CHREC)
+#define STATEMENT_LIST_CHECK(t)        TREE_CHECK (t, STATEMENT_LIST)
+#define ASSERT_EXPR_CHECK(t)   TREE_CHECK (t, ASSERT_EXPR)
+#define TREE_BINFO_CHECK(t)    TREE_CHECK (t, TREE_BINFO)
+#define WITH_SIZE_EXPR_CHECK(t)        TREE_CHECK (t, WITH_SIZE_EXPR)
+#define REALIGN_LOAD_EXPR_CHECK(t)     TREE_CHECK (t, REALIGN_LOAD_EXPR)
+#define TARGET_MEM_REF_CHECK(t)        TREE_CHECK (t, TARGET_MEM_REF)
+#define OMP_PARALLEL_CHECK(t)  TREE_CHECK (t, OMP_PARALLEL)
+#define OMP_TASK_CHECK(t)      TREE_CHECK (t, OMP_TASK)
+#define OMP_FOR_CHECK(t)       TREE_CHECK (t, OMP_FOR)
+#define OMP_SECTIONS_CHECK(t)  TREE_CHECK (t, OMP_SECTIONS)
+#define OMP_SINGLE_CHECK(t)    TREE_CHECK (t, OMP_SINGLE)
+#define OMP_SECTION_CHECK(t)   TREE_CHECK (t, OMP_SECTION)
+#define OMP_MASTER_CHECK(t)    TREE_CHECK (t, OMP_MASTER)
+#define OMP_ORDERED_CHECK(t)   TREE_CHECK (t, OMP_ORDERED)
+#define OMP_CRITICAL_CHECK(t)  TREE_CHECK (t, OMP_CRITICAL)
+#define OMP_ATOMIC_CHECK(t)    TREE_CHECK (t, OMP_ATOMIC)
+#define OMP_CLAUSE_CHECK(t)    TREE_CHECK (t, OMP_CLAUSE)
+#define REDUC_MAX_EXPR_CHECK(t)        TREE_CHECK (t, REDUC_MAX_EXPR)
+#define REDUC_MIN_EXPR_CHECK(t)        TREE_CHECK (t, REDUC_MIN_EXPR)
+#define REDUC_PLUS_EXPR_CHECK(t)       TREE_CHECK (t, REDUC_PLUS_EXPR)
+#define DOT_PROD_EXPR_CHECK(t) TREE_CHECK (t, DOT_PROD_EXPR)
+#define WIDEN_SUM_EXPR_CHECK(t)        TREE_CHECK (t, WIDEN_SUM_EXPR)
+#define WIDEN_MULT_EXPR_CHECK(t)       TREE_CHECK (t, WIDEN_MULT_EXPR)
+#define VEC_LSHIFT_EXPR_CHECK(t)       TREE_CHECK (t, VEC_LSHIFT_EXPR)
+#define VEC_RSHIFT_EXPR_CHECK(t)       TREE_CHECK (t, VEC_RSHIFT_EXPR)
+#define VEC_WIDEN_MULT_HI_EXPR_CHECK(t)        TREE_CHECK (t, VEC_WIDEN_MULT_HI_EXPR)
+#define VEC_WIDEN_MULT_LO_EXPR_CHECK(t)        TREE_CHECK (t, VEC_WIDEN_MULT_LO_EXPR)
+#define VEC_UNPACK_HI_EXPR_CHECK(t)    TREE_CHECK (t, VEC_UNPACK_HI_EXPR)
+#define VEC_UNPACK_LO_EXPR_CHECK(t)    TREE_CHECK (t, VEC_UNPACK_LO_EXPR)
+#define VEC_UNPACK_FLOAT_HI_EXPR_CHECK(t)      TREE_CHECK (t, VEC_UNPACK_FLOAT_HI_EXPR)
+#define VEC_UNPACK_FLOAT_LO_EXPR_CHECK(t)      TREE_CHECK (t, VEC_UNPACK_FLOAT_LO_EXPR)
+#define VEC_PACK_TRUNC_EXPR_CHECK(t)   TREE_CHECK (t, VEC_PACK_TRUNC_EXPR)
+#define VEC_PACK_SAT_EXPR_CHECK(t)     TREE_CHECK (t, VEC_PACK_SAT_EXPR)
+#define VEC_PACK_FIX_TRUNC_EXPR_CHECK(t)       TREE_CHECK (t, VEC_PACK_FIX_TRUNC_EXPR)
+#define VEC_EXTRACT_EVEN_EXPR_CHECK(t) TREE_CHECK (t, VEC_EXTRACT_EVEN_EXPR)
+#define VEC_EXTRACT_ODD_EXPR_CHECK(t)  TREE_CHECK (t, VEC_EXTRACT_ODD_EXPR)
+#define VEC_INTERLEAVE_HIGH_EXPR_CHECK(t)      TREE_CHECK (t, VEC_INTERLEAVE_HIGH_EXPR)
+#define VEC_INTERLEAVE_LOW_EXPR_CHECK(t)       TREE_CHECK (t, VEC_INTERLEAVE_LOW_EXPR)
+#define PREDICT_EXPR_CHECK(t)  TREE_CHECK (t, PREDICT_EXPR)
+#define OPTIMIZATION_NODE_CHECK(t)     TREE_CHECK (t, OPTIMIZATION_NODE)
+#define TARGET_OPTION_NODE_CHECK(t)    TREE_CHECK (t, TARGET_OPTION_NODE)
+#define COMPOUND_LITERAL_EXPR_CHECK(t) TREE_CHECK (t, COMPOUND_LITERAL_EXPR)
+#define UNCONSTRAINED_ARRAY_TYPE_CHECK(t)      TREE_CHECK (t, UNCONSTRAINED_ARRAY_TYPE)
+#define UNCONSTRAINED_ARRAY_REF_CHECK(t)       TREE_CHECK (t, UNCONSTRAINED_ARRAY_REF)
+#define NULL_EXPR_CHECK(t)     TREE_CHECK (t, NULL_EXPR)
+#define PLUS_NOMOD_EXPR_CHECK(t)       TREE_CHECK (t, PLUS_NOMOD_EXPR)
+#define MINUS_NOMOD_EXPR_CHECK(t)      TREE_CHECK (t, MINUS_NOMOD_EXPR)
+#define ATTR_ADDR_EXPR_CHECK(t)        TREE_CHECK (t, ATTR_ADDR_EXPR)
+#define STMT_STMT_CHECK(t)     TREE_CHECK (t, STMT_STMT)
+#define LOOP_STMT_CHECK(t)     TREE_CHECK (t, LOOP_STMT)
+#define EXIT_STMT_CHECK(t)     TREE_CHECK (t, EXIT_STMT)
+#define REGION_STMT_CHECK(t)   TREE_CHECK (t, REGION_STMT)
+#define HANDLER_STMT_CHECK(t)  TREE_CHECK (t, HANDLER_STMT)
+#define OFFSET_REF_CHECK(t)    TREE_CHECK (t, OFFSET_REF)
+#define PTRMEM_CST_CHECK(t)    TREE_CHECK (t, PTRMEM_CST)
+#define NEW_EXPR_CHECK(t)      TREE_CHECK (t, NEW_EXPR)
+#define VEC_NEW_EXPR_CHECK(t)  TREE_CHECK (t, VEC_NEW_EXPR)
+#define DELETE_EXPR_CHECK(t)   TREE_CHECK (t, DELETE_EXPR)
+#define VEC_DELETE_EXPR_CHECK(t)       TREE_CHECK (t, VEC_DELETE_EXPR)
+#define SCOPE_REF_CHECK(t)     TREE_CHECK (t, SCOPE_REF)
+#define MEMBER_REF_CHECK(t)    TREE_CHECK (t, MEMBER_REF)
+#define TYPE_EXPR_CHECK(t)     TREE_CHECK (t, TYPE_EXPR)
+#define AGGR_INIT_EXPR_CHECK(t)        TREE_CHECK (t, AGGR_INIT_EXPR)
+#define THROW_EXPR_CHECK(t)    TREE_CHECK (t, THROW_EXPR)
+#define EMPTY_CLASS_EXPR_CHECK(t)      TREE_CHECK (t, EMPTY_CLASS_EXPR)
+#define BASELINK_CHECK(t)      TREE_CHECK (t, BASELINK)
+#define TEMPLATE_DECL_CHECK(t) TREE_CHECK (t, TEMPLATE_DECL)
+#define TEMPLATE_PARM_INDEX_CHECK(t)   TREE_CHECK (t, TEMPLATE_PARM_INDEX)
+#define TEMPLATE_TEMPLATE_PARM_CHECK(t)        TREE_CHECK (t, TEMPLATE_TEMPLATE_PARM)
+#define TEMPLATE_TYPE_PARM_CHECK(t)    TREE_CHECK (t, TEMPLATE_TYPE_PARM)
+#define TYPENAME_TYPE_CHECK(t) TREE_CHECK (t, TYPENAME_TYPE)
+#define TYPEOF_TYPE_CHECK(t)   TREE_CHECK (t, TYPEOF_TYPE)
+#define BOUND_TEMPLATE_TEMPLATE_PARM_CHECK(t)  TREE_CHECK (t, BOUND_TEMPLATE_TEMPLATE_PARM)
+#define UNBOUND_CLASS_TEMPLATE_CHECK(t)        TREE_CHECK (t, UNBOUND_CLASS_TEMPLATE)
+#define USING_DECL_CHECK(t)    TREE_CHECK (t, USING_DECL)
+#define USING_STMT_CHECK(t)    TREE_CHECK (t, USING_STMT)
+#define DEFAULT_ARG_CHECK(t)   TREE_CHECK (t, DEFAULT_ARG)
+#define TEMPLATE_ID_EXPR_CHECK(t)      TREE_CHECK (t, TEMPLATE_ID_EXPR)
+#define OVERLOAD_CHECK(t)      TREE_CHECK (t, OVERLOAD)
+#define PSEUDO_DTOR_EXPR_CHECK(t)      TREE_CHECK (t, PSEUDO_DTOR_EXPR)
+#define MODOP_EXPR_CHECK(t)    TREE_CHECK (t, MODOP_EXPR)
+#define CAST_EXPR_CHECK(t)     TREE_CHECK (t, CAST_EXPR)
+#define REINTERPRET_CAST_EXPR_CHECK(t) TREE_CHECK (t, REINTERPRET_CAST_EXPR)
+#define CONST_CAST_EXPR_CHECK(t)       TREE_CHECK (t, CONST_CAST_EXPR)
+#define STATIC_CAST_EXPR_CHECK(t)      TREE_CHECK (t, STATIC_CAST_EXPR)
+#define DYNAMIC_CAST_EXPR_CHECK(t)     TREE_CHECK (t, DYNAMIC_CAST_EXPR)
+#define DOTSTAR_EXPR_CHECK(t)  TREE_CHECK (t, DOTSTAR_EXPR)
+#define TYPEID_EXPR_CHECK(t)   TREE_CHECK (t, TYPEID_EXPR)
+#define NON_DEPENDENT_EXPR_CHECK(t)    TREE_CHECK (t, NON_DEPENDENT_EXPR)
+#define CTOR_INITIALIZER_CHECK(t)      TREE_CHECK (t, CTOR_INITIALIZER)
+#define TRY_BLOCK_CHECK(t)     TREE_CHECK (t, TRY_BLOCK)
+#define EH_SPEC_BLOCK_CHECK(t) TREE_CHECK (t, EH_SPEC_BLOCK)
+#define HANDLER_CHECK(t)       TREE_CHECK (t, HANDLER)
+#define MUST_NOT_THROW_EXPR_CHECK(t)   TREE_CHECK (t, MUST_NOT_THROW_EXPR)
+#define CLEANUP_STMT_CHECK(t)  TREE_CHECK (t, CLEANUP_STMT)
+#define IF_STMT_CHECK(t)       TREE_CHECK (t, IF_STMT)
+#define FOR_STMT_CHECK(t)      TREE_CHECK (t, FOR_STMT)
+#define WHILE_STMT_CHECK(t)    TREE_CHECK (t, WHILE_STMT)
+#define DO_STMT_CHECK(t)       TREE_CHECK (t, DO_STMT)
+#define BREAK_STMT_CHECK(t)    TREE_CHECK (t, BREAK_STMT)
+#define CONTINUE_STMT_CHECK(t) TREE_CHECK (t, CONTINUE_STMT)
+#define SWITCH_STMT_CHECK(t)   TREE_CHECK (t, SWITCH_STMT)
+#define EXPR_STMT_CHECK(t)     TREE_CHECK (t, EXPR_STMT)
+#define TAG_DEFN_CHECK(t)      TREE_CHECK (t, TAG_DEFN)
+#define OFFSETOF_EXPR_CHECK(t) TREE_CHECK (t, OFFSETOF_EXPR)
+#define SIZEOF_EXPR_CHECK(t)   TREE_CHECK (t, SIZEOF_EXPR)
+#define ARROW_EXPR_CHECK(t)    TREE_CHECK (t, ARROW_EXPR)
+#define ALIGNOF_EXPR_CHECK(t)  TREE_CHECK (t, ALIGNOF_EXPR)
+#define STMT_EXPR_CHECK(t)     TREE_CHECK (t, STMT_EXPR)
+#define UNARY_PLUS_EXPR_CHECK(t)       TREE_CHECK (t, UNARY_PLUS_EXPR)
+#define STATIC_ASSERT_CHECK(t) TREE_CHECK (t, STATIC_ASSERT)
+#define TYPE_ARGUMENT_PACK_CHECK(t)    TREE_CHECK (t, TYPE_ARGUMENT_PACK)
+#define NONTYPE_ARGUMENT_PACK_CHECK(t) TREE_CHECK (t, NONTYPE_ARGUMENT_PACK)
+#define TYPE_PACK_EXPANSION_CHECK(t)   TREE_CHECK (t, TYPE_PACK_EXPANSION)
+#define EXPR_PACK_EXPANSION_CHECK(t)   TREE_CHECK (t, EXPR_PACK_EXPANSION)
+#define ARGUMENT_PACK_SELECT_CHECK(t)  TREE_CHECK (t, ARGUMENT_PACK_SELECT)
+#define TRAIT_EXPR_CHECK(t)    TREE_CHECK (t, TRAIT_EXPR)
+#define DECLTYPE_TYPE_CHECK(t) TREE_CHECK (t, DECLTYPE_TYPE)
+#define URSHIFT_EXPR_CHECK(t)  TREE_CHECK (t, URSHIFT_EXPR)
+#define COMPARE_EXPR_CHECK(t)  TREE_CHECK (t, COMPARE_EXPR)
+#define COMPARE_L_EXPR_CHECK(t)        TREE_CHECK (t, COMPARE_L_EXPR)
+#define COMPARE_G_EXPR_CHECK(t)        TREE_CHECK (t, COMPARE_G_EXPR)
+#define CLASS_INTERFACE_TYPE_CHECK(t)  TREE_CHECK (t, CLASS_INTERFACE_TYPE)
+#define CLASS_IMPLEMENTATION_TYPE_CHECK(t)     TREE_CHECK (t, CLASS_IMPLEMENTATION_TYPE)
+#define CATEGORY_INTERFACE_TYPE_CHECK(t)       TREE_CHECK (t, CATEGORY_INTERFACE_TYPE)
+#define CATEGORY_IMPLEMENTATION_TYPE_CHECK(t)  TREE_CHECK (t, CATEGORY_IMPLEMENTATION_TYPE)
+#define PROTOCOL_INTERFACE_TYPE_CHECK(t)       TREE_CHECK (t, PROTOCOL_INTERFACE_TYPE)
+#define KEYWORD_DECL_CHECK(t)  TREE_CHECK (t, KEYWORD_DECL)
+#define INSTANCE_METHOD_DECL_CHECK(t)  TREE_CHECK (t, INSTANCE_METHOD_DECL)
+#define CLASS_METHOD_DECL_CHECK(t)     TREE_CHECK (t, CLASS_METHOD_DECL)
+#define MESSAGE_SEND_EXPR_CHECK(t)     TREE_CHECK (t, MESSAGE_SEND_EXPR)
+#define CLASS_REFERENCE_EXPR_CHECK(t)  TREE_CHECK (t, CLASS_REFERENCE_EXPR)
+
+#endif /* GCC_TREE_CHECK_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-pass.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-pass.h
new file mode 100644 (file)
index 0000000..095f27c
--- /dev/null
@@ -0,0 +1,543 @@
+/* Definitions for describing one tree-ssa optimization pass.
+   Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009
+   Free Software Foundation, Inc.
+   Contributed by Richard Henderson <rth@redhat.com>
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+
+#ifndef GCC_TREE_PASS_H
+#define GCC_TREE_PASS_H 1
+
+/* In tree-dump.c */
+
+/* Different tree dump places.  When you add new tree dump places,
+   extend the DUMP_FILES array in tree-dump.c.  */
+enum tree_dump_index
+{
+  TDI_none,                    /* No dump */
+  TDI_cgraph,                   /* dump function call graph.  */
+  TDI_tu,                      /* dump the whole translation unit.  */
+  TDI_class,                   /* dump class hierarchy.  */
+  TDI_original,                        /* dump each function before optimizing it */
+  TDI_generic,                 /* dump each function after genericizing it */
+  TDI_nested,                  /* dump each function after unnesting it */
+  TDI_vcg,                     /* create a VCG graph file for each
+                                  function's flowgraph.  */
+  TDI_tree_all,                 /* enable all the GENERIC/GIMPLE dumps.  */
+  TDI_rtl_all,                  /* enable all the RTL dumps.  */
+  TDI_ipa_all,                  /* enable all the IPA dumps.  */
+
+  TDI_end
+};
+
+/* Bit masks to control dumping. Not all values are applicable to
+   all dumps. Add new ones at the end. When you define new
+   values, extend the DUMP_OPTIONS array in tree-dump.c */
+#define TDF_ADDRESS    (1 << 0)        /* dump node addresses */
+#define TDF_SLIM       (1 << 1)        /* don't go wild following links */
+#define TDF_RAW        (1 << 2)        /* don't unparse the function */
+#define TDF_DETAILS    (1 << 3)        /* show more detailed info about
+                                          each pass */
+#define TDF_STATS      (1 << 4)        /* dump various statistics about
+                                          each pass */
+#define TDF_BLOCKS     (1 << 5)        /* display basic block boundaries */
+#define TDF_VOPS       (1 << 6)        /* display virtual operands */
+#define TDF_LINENO     (1 << 7)        /* display statement line numbers */
+#define TDF_UID                (1 << 8)        /* display decl UIDs */
+
+#define TDF_TREE       (1 << 9)        /* is a tree dump */
+#define TDF_RTL                (1 << 10)       /* is a RTL dump */
+#define TDF_IPA                (1 << 11)       /* is an IPA dump */
+#define TDF_STMTADDR   (1 << 12)       /* Address of stmt.  */
+
+#define TDF_GRAPH      (1 << 13)       /* a graph dump is being emitted */
+#define TDF_MEMSYMS    (1 << 14)       /* display memory symbols in expr.
+                                           Implies TDF_VOPS.  */
+
+#define TDF_DIAGNOSTIC (1 << 15)       /* A dump to be put in a diagnostic
+                                          message.  */
+#define TDF_VERBOSE     (1 << 16)       /* A dump that uses the full tree 
+                                          dumper to print stmts.  */
+#define TDF_RHS_ONLY   (1 << 17)       /* a flag to only print the RHS of
+                                          a gimple stmt.  */
+
+extern char *get_dump_file_name (enum tree_dump_index);
+extern int dump_enabled_p (enum tree_dump_index);
+extern int dump_initialized_p (enum tree_dump_index);
+extern FILE *dump_begin (enum tree_dump_index, int *);
+extern void dump_end (enum tree_dump_index, FILE *);
+extern void dump_node (const_tree, int, FILE *);
+extern int dump_switch_p (const char *);
+extern const char *dump_flag_name (enum tree_dump_index);
+
+/* Global variables used to communicate with passes.  */
+extern FILE *dump_file;
+extern int dump_flags;
+extern const char *dump_file_name;
+
+/* Return the dump_file_info for the given phase.  */
+extern struct dump_file_info *get_dump_file_info (enum tree_dump_index);
+
+/* Describe one pass; this is the common part shared across different pass
+   types.  */
+struct opt_pass
+{
+  /* Optimization pass type.  */
+  enum opt_pass_type {
+    GIMPLE_PASS,
+    RTL_PASS,
+    SIMPLE_IPA_PASS,
+    IPA_PASS
+  } type;
+  /* Terse name of the pass used as a fragment of the dump file
+     name.  If the name starts with a star, no dump happens. */
+  const char *name;
+
+  /* If non-null, this pass and all sub-passes are executed only if
+     the function returns true.  */
+  bool (*gate) (void);
+
+  /* This is the code to run.  If null, then there should be sub-passes
+     otherwise this pass does nothing.  The return value contains
+     TODOs to execute in addition to those in TODO_flags_finish.   */
+  unsigned int (*execute) (void);
+
+  /* A list of sub-passes to run, dependent on gate predicate.  */
+  struct opt_pass *sub;
+
+  /* Next in the list of passes to run, independent of gate predicate.  */
+  struct opt_pass *next;
+
+  /* Static pass number, used as a fragment of the dump file name.  */
+  int static_pass_number;
+
+  /* The timevar id associated with this pass.  */
+  /* ??? Ideally would be dynamically assigned.  */
+  unsigned int tv_id;
+
+  /* Sets of properties input and output from this pass.  */
+  unsigned int properties_required;
+  unsigned int properties_provided;
+  unsigned int properties_destroyed;
+
+  /* Flags indicating common sets things to do before and after.  */
+  unsigned int todo_flags_start;
+  unsigned int todo_flags_finish;
+};
+
+/* Description of GIMPLE pass.  */
+struct gimple_opt_pass
+{
+  struct opt_pass pass;
+};
+
+/* Description of RTL pass.  */
+struct rtl_opt_pass
+{
+  struct opt_pass pass;
+};
+
+struct varpool_node;
+struct cgraph_node;
+
+/* Description of IPA pass with generate summary, write, execute, read and
+   transform stages.  */
+struct ipa_opt_pass
+{
+  struct opt_pass pass;
+
+  /* IPA passes can analyze function body and variable initializers
+      using this hook and produce summary.  */
+  void (*generate_summary) (void);
+
+  /* This hook is used to serialize IPA summaries on disk.  */
+  void (*write_summary) (void);
+
+  /* For most ipa passes, the information can only be deserialized in
+     one chunk.  However, function bodies are read function at a time
+     as needed so both calls are necessary.  */
+  void (*read_summary) (void);
+  void (*function_read_summary) (struct cgraph_node *);
+  
+  /* Results of interprocedural propagation of an IPA pass is applied to
+     function body via this hook.  */
+  unsigned int function_transform_todo_flags_start;
+  unsigned int (*function_transform) (struct cgraph_node *);
+  void (*variable_transform) (struct varpool_node *);
+};
+
+/* Description of simple IPA pass.  Simple IPA passes have just one execute
+   hook.  */
+struct simple_ipa_opt_pass
+{
+  struct opt_pass pass;
+};
+
+/* Define a tree dump switch.  */
+struct dump_file_info
+{
+  const char *suffix;           /* suffix to give output file.  */
+  const char *swtch;            /* command line switch */
+  const char *glob;             /* command line glob  */
+  int flags;                    /* user flags */
+  int state;                    /* state of play */
+  int num;                      /* dump file number */
+};
+
+/* Pass properties.  */
+#define PROP_gimple_any                (1 << 0)        /* entire gimple grammar */
+#define PROP_gimple_lcf                (1 << 1)        /* lowered control flow */
+#define PROP_gimple_leh                (1 << 2)        /* lowered eh */
+#define PROP_cfg               (1 << 3)
+#define PROP_referenced_vars   (1 << 4)
+#define PROP_ssa               (1 << 5)
+#define PROP_no_crit_edges      (1 << 6)
+#define PROP_rtl               (1 << 7)
+#define PROP_alias             (1 << 8)
+#define PROP_gimple_lomp       (1 << 9)        /* lowered OpenMP directives */
+
+#define PROP_trees \
+  (PROP_gimple_any | PROP_gimple_lcf | PROP_gimple_leh | PROP_gimple_lomp)
+
+/* To-do flags.  */
+#define TODO_dump_func                 (1 << 0)
+#define TODO_ggc_collect               (1 << 1)
+#define TODO_verify_ssa                        (1 << 2) 
+#define TODO_verify_flow               (1 << 3)
+#define TODO_verify_stmts              (1 << 4)
+#define TODO_cleanup_cfg               (1 << 5)
+#define TODO_verify_loops              (1 << 6)
+#define TODO_dump_cgraph               (1 << 7)
+#define TODO_remove_functions          (1 << 8)
+#define TODO_rebuild_frequencies       (1 << 9)
+#define TODO_verify_rtl_sharing         (1 << 10)
+
+/* To-do flags for calls to update_ssa.  */
+
+/* Update the SSA form inserting PHI nodes for newly exposed symbols
+   and virtual names marked for updating.  When updating real names,
+   only insert PHI nodes for a real name O_j in blocks reached by all
+   the new and old definitions for O_j.  If the iterated dominance
+   frontier for O_j is not pruned, we may end up inserting PHI nodes
+   in blocks that have one or more edges with no incoming definition
+   for O_j.  This would lead to uninitialized warnings for O_j's
+   symbol.  */
+#define TODO_update_ssa                        (1 << 11)
+
+/* Update the SSA form without inserting any new PHI nodes at all.
+   This is used by passes that have either inserted all the PHI nodes
+   themselves or passes that need only to patch use-def and def-def
+   chains for virtuals (e.g., DCE).  */
+#define TODO_update_ssa_no_phi         (1 << 12)
+
+/* Insert PHI nodes everywhere they are needed.  No pruning of the
+   IDF is done.  This is used by passes that need the PHI nodes for
+   O_j even if it means that some arguments will come from the default
+   definition of O_j's symbol (e.g., pass_linear_transform).
+   
+   WARNING: If you need to use this flag, chances are that your pass
+   may be doing something wrong.  Inserting PHI nodes for an old name
+   where not all edges carry a new replacement may lead to silent
+   codegen errors or spurious uninitialized warnings.  */
+#define TODO_update_ssa_full_phi       (1 << 13)
+
+/* Passes that update the SSA form on their own may want to delegate
+   the updating of virtual names to the generic updater.  Since FUD
+   chains are easier to maintain, this simplifies the work they need
+   to do.  NOTE: If this flag is used, any OLD->NEW mappings for real
+   names are explicitly destroyed and only the symbols marked for
+   renaming are processed.  */
+#define TODO_update_ssa_only_virtuals  (1 << 14)
+
+/* Some passes leave unused local variables that can be removed from
+   cfun->local_decls.  This reduces the size of dump files
+   and the memory footprint for VAR_DECLs.  */
+#define TODO_remove_unused_locals      (1 << 15)
+
+/* Internally used for the first in a sequence of passes.  It is set
+   for the passes that are handed to register_dump_files.  */
+#define TODO_set_props                 (1 << 16)
+
+/* Call df_finish at the end of the pass.  This is done after all of
+   the dumpers have been allowed to run so that they have access to
+   the instance before it is destroyed.  */
+#define TODO_df_finish                  (1 << 17)
+
+/* Call df_verify at the end of the pass if checking is enabled.  */
+#define TODO_df_verify                  (1 << 18)
+
+/* Internally used for the first instance of a pass.  */
+#define TODO_mark_first_instance       (1 << 19)
+
+/* Rebuild aliasing info.  */
+#define TODO_rebuild_alias                (1 << 20)
+
+#define TODO_update_ssa_any            \
+    (TODO_update_ssa                   \
+     | TODO_update_ssa_no_phi          \
+     | TODO_update_ssa_full_phi                \
+     | TODO_update_ssa_only_virtuals)
+
+#define TODO_verify_all \
+  (TODO_verify_ssa | TODO_verify_flow | TODO_verify_stmts)
+
+extern void tree_lowering_passes (tree decl);
+
+extern struct gimple_opt_pass pass_mudflap_1;
+extern struct gimple_opt_pass pass_mudflap_2;
+extern struct gimple_opt_pass pass_remove_useless_stmts;
+extern struct gimple_opt_pass pass_lower_cf;
+extern struct gimple_opt_pass pass_refactor_eh;
+extern struct gimple_opt_pass pass_lower_eh;
+extern struct gimple_opt_pass pass_build_cfg;
+extern struct gimple_opt_pass pass_tree_profile;
+extern struct gimple_opt_pass pass_early_tree_profile;
+extern struct gimple_opt_pass pass_tree_sample_profile;
+extern struct gimple_opt_pass pass_tree_profile_dump;
+extern struct gimple_opt_pass pass_cleanup_cfg;
+extern struct gimple_opt_pass pass_referenced_vars;
+extern struct gimple_opt_pass pass_sra;
+extern struct gimple_opt_pass pass_sra_early;
+extern struct gimple_opt_pass pass_tail_recursion;
+extern struct gimple_opt_pass pass_tail_calls;
+extern struct gimple_opt_pass pass_tree_loop;
+extern struct gimple_opt_pass pass_tree_loop_init;
+extern struct gimple_opt_pass pass_lim;
+extern struct gimple_opt_pass pass_tree_unswitch;
+extern struct gimple_opt_pass pass_predcom;
+extern struct gimple_opt_pass pass_iv_canon;
+extern struct gimple_opt_pass pass_scev_cprop;
+extern struct gimple_opt_pass pass_empty_loop;
+extern struct gimple_opt_pass pass_record_bounds;
+extern struct gimple_opt_pass pass_graphite_transforms;
+extern struct gimple_opt_pass pass_if_conversion;
+extern struct gimple_opt_pass pass_loop_distribution;
+extern struct gimple_opt_pass pass_vectorize;
+extern struct gimple_opt_pass pass_complete_unroll;
+extern struct gimple_opt_pass pass_complete_unrolli;
+extern struct gimple_opt_pass pass_parallelize_loops;
+extern struct gimple_opt_pass pass_loop_prefetch;
+extern struct gimple_opt_pass pass_iv_optimize;
+extern struct gimple_opt_pass pass_tree_loop_done;
+extern struct gimple_opt_pass pass_ch;
+extern struct gimple_opt_pass pass_ccp;
+extern struct gimple_opt_pass pass_phi_only_cprop;
+extern struct gimple_opt_pass pass_build_ssa;
+extern struct gimple_opt_pass pass_del_ssa;
+extern struct gimple_opt_pass pass_build_alias;
+extern struct gimple_opt_pass pass_dominator;
+extern struct gimple_opt_pass pass_dce;
+extern struct gimple_opt_pass pass_dce_loop;
+extern struct gimple_opt_pass pass_cd_dce;
+extern struct gimple_opt_pass pass_call_cdce;
+extern struct gimple_opt_pass pass_merge_phi;
+extern struct gimple_opt_pass pass_split_crit_edges;
+extern struct gimple_opt_pass pass_pre;
+extern struct gimple_opt_pass pass_profile;
+extern struct gimple_opt_pass pass_strip_predict_hints;
+extern struct gimple_opt_pass pass_lower_complex_O0;
+extern struct gimple_opt_pass pass_lower_complex;
+extern struct gimple_opt_pass pass_lower_vector;
+extern struct gimple_opt_pass pass_lower_vector_ssa;
+extern struct gimple_opt_pass pass_lower_omp;
+extern struct gimple_opt_pass pass_expand_omp;
+extern struct gimple_opt_pass pass_expand_omp_ssa;
+extern struct gimple_opt_pass pass_object_sizes;
+extern struct gimple_opt_pass pass_fold_builtins;
+extern struct gimple_opt_pass pass_stdarg;
+extern struct gimple_opt_pass pass_early_warn_uninitialized;
+extern struct gimple_opt_pass pass_late_warn_uninitialized;
+extern struct gimple_opt_pass pass_cse_reciprocals;
+extern struct gimple_opt_pass pass_cse_sincos;
+extern struct gimple_opt_pass pass_convert_to_rsqrt;
+extern struct gimple_opt_pass pass_warn_function_return;
+extern struct gimple_opt_pass pass_warn_function_noreturn;
+extern struct gimple_opt_pass pass_cselim;
+extern struct gimple_opt_pass pass_phiopt;
+extern struct gimple_opt_pass pass_forwprop;
+extern struct gimple_opt_pass pass_phiprop;
+extern struct gimple_opt_pass pass_tree_ifcombine;
+extern struct gimple_opt_pass pass_dse;
+extern struct gimple_opt_pass pass_simple_dse;
+extern struct gimple_opt_pass pass_nrv;
+extern struct gimple_opt_pass pass_mark_used_blocks;
+extern struct gimple_opt_pass pass_rename_ssa_copies;
+extern struct gimple_opt_pass pass_rest_of_compilation;
+extern struct gimple_opt_pass pass_sink_code;
+extern struct gimple_opt_pass pass_fre;
+extern struct gimple_opt_pass pass_linear_transform;
+extern struct gimple_opt_pass pass_check_data_deps;
+extern struct gimple_opt_pass pass_copy_prop;
+extern struct gimple_opt_pass pass_vrp;
+extern struct gimple_opt_pass pass_uncprop;
+extern struct gimple_opt_pass pass_return_slot;
+extern struct gimple_opt_pass pass_reassoc;
+extern struct gimple_opt_pass pass_lrs;
+extern struct gimple_opt_pass pass_rebuild_cgraph_edges;
+extern struct gimple_opt_pass pass_build_cgraph_edges;
+extern struct gimple_opt_pass pass_reset_cc_flags;
+extern struct gimple_opt_pass pass_threadsafe_analyze;
+
+/* IPA Passes */
+extern struct ipa_opt_pass pass_ipa_inline;
+extern struct ipa_opt_pass pass_ipa_cp;
+extern struct ipa_opt_pass pass_ipa_reference;
+extern struct ipa_opt_pass pass_ipa_pure_const;
+
+extern struct simple_ipa_opt_pass pass_ipa_matrix_reorg;
+extern struct simple_ipa_opt_pass pass_ipa_early_inline;
+extern struct simple_ipa_opt_pass pass_ipa_type_escape;
+extern struct simple_ipa_opt_pass pass_ipa_pta;
+extern struct simple_ipa_opt_pass pass_ipa_struct_reorg;
+extern struct simple_ipa_opt_pass pass_early_local_passes;
+extern struct simple_ipa_opt_pass pass_ipa_increase_alignment;
+extern struct simple_ipa_opt_pass pass_ipa_function_and_variable_visibility;
+
+extern struct gimple_opt_pass pass_all_optimizations;
+extern struct gimple_opt_pass pass_cleanup_cfg_post_optimizing;
+extern struct gimple_opt_pass pass_free_cfg_annotations;
+extern struct gimple_opt_pass pass_free_datastructures;
+extern struct gimple_opt_pass pass_init_datastructures;
+extern struct gimple_opt_pass pass_fixup_cfg;
+
+extern struct rtl_opt_pass pass_expand;
+extern struct rtl_opt_pass pass_init_function;
+extern struct rtl_opt_pass pass_jump;
+extern struct rtl_opt_pass pass_rtl_eh;
+extern struct rtl_opt_pass pass_initial_value_sets;
+extern struct rtl_opt_pass pass_unshare_all_rtl;
+extern struct rtl_opt_pass pass_instantiate_virtual_regs;
+extern struct rtl_opt_pass pass_rtl_fwprop;
+extern struct rtl_opt_pass pass_rtl_fwprop_addr;
+extern struct rtl_opt_pass pass_jump2;
+extern struct rtl_opt_pass pass_lower_subreg;
+extern struct rtl_opt_pass pass_cse;
+extern struct rtl_opt_pass pass_fast_rtl_dce;
+extern struct rtl_opt_pass pass_ud_rtl_dce;
+extern struct rtl_opt_pass pass_rtl_dce;
+extern struct rtl_opt_pass pass_rtl_dse1;
+extern struct rtl_opt_pass pass_rtl_dse2;
+extern struct rtl_opt_pass pass_rtl_dse3;
+extern struct rtl_opt_pass pass_gcse;
+extern struct rtl_opt_pass pass_jump_bypass;
+extern struct rtl_opt_pass pass_profiling;
+extern struct rtl_opt_pass pass_rtl_ifcvt;
+extern struct gimple_opt_pass pass_tracer;
+
+extern struct rtl_opt_pass pass_into_cfg_layout_mode;
+extern struct rtl_opt_pass pass_outof_cfg_layout_mode;
+
+extern struct rtl_opt_pass pass_loop2;
+extern struct rtl_opt_pass pass_rtl_loop_init;
+extern struct rtl_opt_pass pass_rtl_move_loop_invariants;
+extern struct rtl_opt_pass pass_rtl_unswitch;
+extern struct rtl_opt_pass pass_rtl_unroll_and_peel_loops;
+extern struct rtl_opt_pass pass_rtl_doloop;
+extern struct rtl_opt_pass pass_rtl_loop_done;
+
+extern struct rtl_opt_pass pass_web;
+extern struct rtl_opt_pass pass_cse2;
+extern struct rtl_opt_pass pass_df_initialize_opt;
+extern struct rtl_opt_pass pass_df_initialize_no_opt;
+extern struct rtl_opt_pass pass_reginfo_init;
+extern struct rtl_opt_pass pass_subregs_of_mode_init;
+extern struct rtl_opt_pass pass_subregs_of_mode_finish;
+extern struct rtl_opt_pass pass_inc_dec;
+extern struct rtl_opt_pass pass_stack_ptr_mod;
+extern struct rtl_opt_pass pass_initialize_regs;
+extern struct rtl_opt_pass pass_combine;
+extern struct rtl_opt_pass pass_if_after_combine;
+extern struct rtl_opt_pass pass_partition_blocks;
+extern struct rtl_opt_pass pass_match_asm_constraints;
+extern struct rtl_opt_pass pass_regmove;
+extern struct rtl_opt_pass pass_split_all_insns;
+extern struct rtl_opt_pass pass_fast_rtl_byte_dce;
+extern struct rtl_opt_pass pass_lower_subreg2;
+extern struct rtl_opt_pass pass_mode_switching;
+extern struct rtl_opt_pass pass_see;
+extern struct rtl_opt_pass pass_sms;
+extern struct rtl_opt_pass pass_sched;
+extern struct rtl_opt_pass pass_ira;
+extern struct rtl_opt_pass pass_postreload;
+extern struct rtl_opt_pass pass_clean_state;
+extern struct rtl_opt_pass pass_branch_prob;
+extern struct rtl_opt_pass pass_value_profile_transformations;
+extern struct rtl_opt_pass pass_postreload_cse;
+extern struct rtl_opt_pass pass_gcse2;
+extern struct rtl_opt_pass pass_split_after_reload;
+extern struct rtl_opt_pass pass_branch_target_load_optimize1;
+extern struct rtl_opt_pass pass_thread_prologue_and_epilogue;
+extern struct rtl_opt_pass pass_stack_adjustments;
+extern struct rtl_opt_pass pass_peephole2;
+extern struct rtl_opt_pass pass_if_after_reload;
+extern struct rtl_opt_pass pass_regrename;
+extern struct rtl_opt_pass pass_cprop_hardreg;
+extern struct rtl_opt_pass pass_reorder_blocks;
+extern struct rtl_opt_pass pass_branch_target_load_optimize2;
+extern struct rtl_opt_pass pass_leaf_regs;
+extern struct rtl_opt_pass pass_split_before_sched2;
+extern struct rtl_opt_pass pass_sched2;
+extern struct rtl_opt_pass pass_stack_regs;
+extern struct rtl_opt_pass pass_stack_regs_run;
+extern struct rtl_opt_pass pass_df_finish;
+extern struct rtl_opt_pass pass_compute_alignments;
+extern struct rtl_opt_pass pass_duplicate_computed_gotos;
+extern struct rtl_opt_pass pass_variable_tracking;
+extern struct rtl_opt_pass pass_free_cfg;
+extern struct rtl_opt_pass pass_machine_reorg;
+extern struct rtl_opt_pass pass_cleanup_barriers;
+extern struct rtl_opt_pass pass_delay_slots;
+extern struct rtl_opt_pass pass_split_for_shorten_branches;
+extern struct rtl_opt_pass pass_split_before_regstack;
+extern struct rtl_opt_pass pass_convert_to_eh_region_ranges;
+extern struct rtl_opt_pass pass_shorten_branches;
+extern struct rtl_opt_pass pass_set_nothrow_function_flags;
+extern struct rtl_opt_pass pass_final;
+extern struct rtl_opt_pass pass_rtl_seqabstr;
+extern struct gimple_opt_pass pass_release_ssa_names;
+extern struct gimple_opt_pass pass_early_inline;
+extern struct gimple_opt_pass pass_inline_parameters;
+extern struct gimple_opt_pass pass_all_early_optimizations;
+extern struct gimple_opt_pass pass_update_address_taken;
+extern struct gimple_opt_pass pass_convert_switch;
+
+/* The root of the compilation pass tree, once constructed.  */
+extern struct opt_pass *all_passes, *all_ipa_passes, *all_lowering_passes;
+
+/* Current optimization pass.  */
+extern struct opt_pass *current_pass;
+
+extern struct opt_pass * get_pass_for_id (int);
+extern void execute_pass_list (struct opt_pass *);
+extern void execute_ipa_pass_list (struct opt_pass *);
+extern void print_current_pass (FILE *);
+extern void debug_pass (void);
+/* Need to expose this function externally for the plugin pass management
+   support to register dump files for new passes.  */
+extern void register_one_dump_file (struct opt_pass *);
+
+/* Set to true if the pass is called the first time during compilation of the
+   current function.  Note that using this information in the optimization
+   passes is considered not to be clean, and it should be avoided if possible.
+   This flag is currently used to prevent loops from being peeled repeatedly
+   in jump threading; it will be removed once we preserve loop structures
+   throughout the compilation -- we will be able to mark the affected loops
+   directly in jump threading, and avoid peeling them next time.  */
+extern bool first_pass_instance;
+
+#endif /* GCC_TREE_PASS_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-ssa-operands.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-ssa-operands.h
new file mode 100644 (file)
index 0000000..bd30f82
--- /dev/null
@@ -0,0 +1,349 @@
+/* SSA operand management for trees.
+   Copyright (C) 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_TREE_SSA_OPERANDS_H
+#define GCC_TREE_SSA_OPERANDS_H
+
+/* Interface to SSA operands.  */
+
+
+/* This represents a pointer to a DEF operand.  */
+typedef tree *def_operand_p;
+
+/* This represents a pointer to a USE operand.  */
+typedef ssa_use_operand_t *use_operand_p;
+
+/* NULL operand types.  */
+#define NULL_USE_OPERAND_P             NULL
+#define NULL_DEF_OPERAND_P             NULL
+
+/* This represents the DEF operands of a stmt.  */
+struct def_optype_d
+{
+  struct def_optype_d *next;
+  tree *def_ptr;
+};
+typedef struct def_optype_d *def_optype_p;
+
+/* This represents the USE operands of a stmt.  */
+struct use_optype_d 
+{
+  struct use_optype_d *next;
+  struct ssa_use_operand_d use_ptr;
+};
+typedef struct use_optype_d *use_optype_p;
+
+typedef struct vuse_element_d
+{
+  tree use_var;
+  struct ssa_use_operand_d use_ptr;
+} vuse_element_t;
+
+typedef struct vuse_vec_d
+{
+  unsigned int num_vuse;
+  vuse_element_t uses[1];
+} vuse_vec_t;
+typedef struct vuse_vec_d *vuse_vec_p;
+
+#define VUSE_VECT_NUM_ELEM(V)          (V).num_vuse
+#define VUSE_VECT_ELEMENT_NC(V,X)      (V).uses[(X)]
+#define VUSE_ELEMENT_PTR_NC(V,X)       (&(VUSE_VECT_ELEMENT_NC ((V),(X)).use_ptr))
+#define VUSE_ELEMENT_VAR_NC(V,X)       (VUSE_VECT_ELEMENT_NC ((V),(X)).use_var)
+
+#ifdef ENABLE_CHECKING
+#define VUSE_VECT_ELEMENT(V,X)                                         \
+    (gcc_assert (((unsigned int) (X)) < VUSE_VECT_NUM_ELEM (V)),       \
+     VUSE_VECT_ELEMENT_NC (V,X))
+
+#define VUSE_ELEMENT_PTR(V,X)                                          \
+    (gcc_assert (((unsigned int) (X)) < VUSE_VECT_NUM_ELEM (V)),       \
+     VUSE_ELEMENT_PTR_NC (V, X))
+
+#define SET_VUSE_VECT_ELEMENT(V,X,N)                                   \
+    (gcc_assert (((unsigned int) (X)) < VUSE_VECT_NUM_ELEM (V)),       \
+     VUSE_VECT_ELEMENT_NC (V,X) = (N))
+
+#define SET_VUSE_ELEMENT_VAR(V,X,N)                                    \
+    (gcc_assert (((unsigned int) (X)) < VUSE_VECT_NUM_ELEM (V)),       \
+     VUSE_VECT_ELEMENT_NC ((V),(X)).use_var = (N))
+
+#define SET_VUSE_ELEMENT_PTR(V,X,N)                                    \
+    (gcc_assert (((unsigned int) (X)) < VUSE_VECT_NUM_ELEM (V)),       \
+     VUSE_ELEMENT_PTR_NC (V, X) = (N))
+#else
+#define VUSE_VECT_ELEMENT(V,X) VUSE_VECT_ELEMENT_NC(V,X)
+#define VUSE_ELEMENT_PTR(V,X) VUSE_ELEMENT_PTR_NC(V,X)
+#define SET_VUSE_VECT_ELEMENT(V,X,N) VUSE_VECT_ELEMENT_NC(V,X) = (N)
+#define SET_VUSE_ELEMENT_PTR(V,X,N) VUSE_ELEMENT_PTR_NC(V,X) = (N)
+#define SET_VUSE_ELEMENT_VAR(V,X,N) VUSE_VECT_ELEMENT_NC ((V),(X)).use_var = (N)
+#endif
+
+#define VUSE_ELEMENT_VAR(V,X)  (VUSE_VECT_ELEMENT ((V),(X)).use_var)
+
+/* This represents the virtual ops of a stmt.  */
+struct voptype_d
+{
+  struct voptype_d *next;
+  tree def_var;
+  vuse_vec_t usev;
+};
+typedef struct voptype_d *voptype_p;
+
+/* This structure represents a variable sized buffer which is allocated by the
+   operand memory manager.  Operands are suballocated out of this block.  The
+   MEM array varies in size.  */
+   
+struct ssa_operand_memory_d GTY((chain_next("%h.next")))
+{
+  struct ssa_operand_memory_d *next;
+  char mem[1];
+};
+
+/* Number of different size free buckets for virtual operands.  */
+#define NUM_VOP_FREE_BUCKETS           29
+
+/* Per-function operand caches.  */
+struct ssa_operands GTY(()) {
+   struct ssa_operand_memory_d *operand_memory;
+   unsigned operand_memory_index;
+   /* Current size of the operand memory buffer.  */
+   unsigned int ssa_operand_mem_size;
+
+   bool ops_active;
+
+   struct def_optype_d * GTY ((skip (""))) free_defs;
+   struct use_optype_d * GTY ((skip (""))) free_uses;
+   struct voptype_d * GTY ((skip (""))) vop_free_buckets[NUM_VOP_FREE_BUCKETS];
+   VEC(tree,heap) * GTY ((skip (""))) mpt_table;
+};
+
+/* This represents the operand cache for a stmt.  */
+struct stmt_operands_d
+{
+  /* Statement operands.  */
+  struct def_optype_d * def_ops;
+  struct use_optype_d * use_ops;
+                                                                              
+  /* Virtual operands (VDEF, VUSE).  */
+  struct voptype_d * vdef_ops;
+  struct voptype_d * vuse_ops;
+
+  /* Sets of memory symbols loaded and stored.  */
+  bitmap stores;
+  bitmap loads;
+};
+                                                                              
+typedef struct stmt_operands_d *stmt_operands_p;
+                                                                              
+#define USE_FROM_PTR(PTR)      get_use_from_ptr (PTR)
+#define DEF_FROM_PTR(PTR)      get_def_from_ptr (PTR)
+#define SET_USE(USE, V)                set_ssa_use_from_ptr (USE, V)
+#define SET_DEF(DEF, V)                ((*(DEF)) = (V))
+
+#define USE_STMT(USE)          (USE)->loc.stmt
+
+#define USE_OP_PTR(OP)         (&((OP)->use_ptr))
+#define USE_OP(OP)             (USE_FROM_PTR (USE_OP_PTR (OP)))
+
+#define DEF_OP_PTR(OP)         ((OP)->def_ptr)
+#define DEF_OP(OP)             (DEF_FROM_PTR (DEF_OP_PTR (OP)))
+
+#define VUSE_OP_PTR(OP,X)      VUSE_ELEMENT_PTR ((OP)->usev, (X)) 
+#define VUSE_OP(OP,X)          VUSE_ELEMENT_VAR ((OP)->usev, (X))
+#define SET_VUSE_OP(OP,X,N)    SET_VUSE_ELEMENT_VAR ((OP)->usev, (X), (N))
+#define VUSE_NUM(OP)           VUSE_VECT_NUM_ELEM ((OP)->usev)
+#define VUSE_VECT(OP)          &((OP)->usev)
+
+#define VDEF_RESULT_PTR(OP)    (&((OP)->def_var))
+#define VDEF_RESULT(OP)                ((OP)->def_var)
+#define VDEF_OP_PTR(OP,X)      VUSE_OP_PTR (OP, X)
+#define VDEF_OP(OP,X)          VUSE_OP (OP, X)
+#define SET_VDEF_OP(OP,X,N)    SET_VUSE_OP (OP, X, N)
+#define VDEF_NUM(OP)           VUSE_VECT_NUM_ELEM ((OP)->usev)
+#define VDEF_VECT(OP)          &((OP)->usev)
+
+#define PHI_RESULT_PTR(PHI)    gimple_phi_result_ptr (PHI)
+#define PHI_RESULT(PHI)                DEF_FROM_PTR (PHI_RESULT_PTR (PHI))
+#define SET_PHI_RESULT(PHI, V) SET_DEF (PHI_RESULT_PTR (PHI), (V))
+
+#define PHI_ARG_DEF_PTR(PHI, I)        gimple_phi_arg_imm_use_ptr ((PHI), (I))
+#define PHI_ARG_DEF(PHI, I)    USE_FROM_PTR (PHI_ARG_DEF_PTR ((PHI), (I)))
+#define SET_PHI_ARG_DEF(PHI, I, V)                                     \
+                               SET_USE (PHI_ARG_DEF_PTR ((PHI), (I)), (V))
+#define PHI_ARG_DEF_FROM_EDGE(PHI, E)                                  \
+                               PHI_ARG_DEF ((PHI), (E)->dest_idx)
+#define PHI_ARG_DEF_PTR_FROM_EDGE(PHI, E)                              \
+                               PHI_ARG_DEF_PTR ((PHI), (E)->dest_idx)
+#define PHI_ARG_INDEX_FROM_USE(USE)   phi_arg_index_from_use (USE)
+
+
+extern void init_ssa_operands (void);
+extern void fini_ssa_operands (void);
+extern void update_stmt_operands (gimple);
+extern void free_stmt_operands (gimple);
+extern bool verify_imm_links (FILE *f, tree var);
+
+extern void copy_virtual_operands (gimple, gimple);
+extern int operand_build_cmp (const void *, const void *);
+extern void create_ssa_artificial_load_stmt (gimple, gimple, bool);
+
+extern void dump_immediate_uses (FILE *file);
+extern void dump_immediate_uses_for (FILE *file, tree var);
+extern void debug_immediate_uses (void);
+extern void debug_immediate_uses_for (tree var);
+extern void dump_decl_set (FILE *, bitmap);
+extern void debug_decl_set (bitmap);
+
+extern bool ssa_operands_active (void);
+
+extern void push_stmt_changes (gimple *);
+extern void pop_stmt_changes (gimple *);
+extern void discard_stmt_changes (gimple *);
+void add_to_addressable_set (tree, bitmap *);
+
+enum ssa_op_iter_type {
+  ssa_op_iter_none = 0,
+  ssa_op_iter_tree,
+  ssa_op_iter_use,
+  ssa_op_iter_def,
+  ssa_op_iter_vdef
+};
+
+/* This structure is used in the operand iterator loops.  It contains the 
+   items required to determine which operand is retrieved next.  During
+   optimization, this structure is scalarized, and any unused fields are 
+   optimized away, resulting in little overhead.  */
+
+typedef struct ssa_operand_iterator_d
+{
+  def_optype_p defs;
+  use_optype_p uses;
+  voptype_p vuses;
+  voptype_p vdefs;
+  voptype_p mayuses;
+  enum ssa_op_iter_type iter_type;
+  int phi_i;
+  int num_phi;
+  gimple phi_stmt;
+  bool done;
+  unsigned int vuse_index;
+  unsigned int mayuse_index;
+} ssa_op_iter;
+
+/* These flags are used to determine which operands are returned during 
+   execution of the loop.  */
+#define SSA_OP_USE             0x01    /* Real USE operands.  */
+#define SSA_OP_DEF             0x02    /* Real DEF operands.  */
+#define SSA_OP_VUSE            0x04    /* VUSE operands.  */
+#define SSA_OP_VMAYUSE         0x08    /* USE portion of VDEFS.  */
+#define SSA_OP_VDEF            0x10    /* DEF portion of VDEFS.  */
+
+/* These are commonly grouped operand flags.  */
+#define SSA_OP_VIRTUAL_USES    (SSA_OP_VUSE | SSA_OP_VMAYUSE)
+#define SSA_OP_VIRTUAL_DEFS    (SSA_OP_VDEF)
+#define SSA_OP_ALL_VIRTUALS     (SSA_OP_VIRTUAL_USES | SSA_OP_VIRTUAL_DEFS)
+#define SSA_OP_ALL_USES                (SSA_OP_VIRTUAL_USES | SSA_OP_USE)
+#define SSA_OP_ALL_DEFS                (SSA_OP_VIRTUAL_DEFS | SSA_OP_DEF)
+#define SSA_OP_ALL_OPERANDS    (SSA_OP_ALL_USES | SSA_OP_ALL_DEFS)
+
+/* This macro executes a loop over the operands of STMT specified in FLAG, 
+   returning each operand as a 'tree' in the variable TREEVAR.  ITER is an
+   ssa_op_iter structure used to control the loop.  */
+#define FOR_EACH_SSA_TREE_OPERAND(TREEVAR, STMT, ITER, FLAGS)  \
+  for (TREEVAR = op_iter_init_tree (&(ITER), STMT, FLAGS);     \
+       !op_iter_done (&(ITER));                                        \
+       TREEVAR = op_iter_next_tree (&(ITER)))
+
+/* This macro executes a loop over the operands of STMT specified in FLAG, 
+   returning each operand as a 'use_operand_p' in the variable USEVAR.  
+   ITER is an ssa_op_iter structure used to control the loop.  */
+#define FOR_EACH_SSA_USE_OPERAND(USEVAR, STMT, ITER, FLAGS)    \
+  for (USEVAR = op_iter_init_use (&(ITER), STMT, FLAGS);       \
+       !op_iter_done (&(ITER));                                        \
+       USEVAR = op_iter_next_use (&(ITER)))
+
+/* This macro executes a loop over the operands of STMT specified in FLAG, 
+   returning each operand as a 'def_operand_p' in the variable DEFVAR.  
+   ITER is an ssa_op_iter structure used to control the loop.  */
+#define FOR_EACH_SSA_DEF_OPERAND(DEFVAR, STMT, ITER, FLAGS)    \
+  for (DEFVAR = op_iter_init_def (&(ITER), STMT, FLAGS);       \
+       !op_iter_done (&(ITER));                                        \
+       DEFVAR = op_iter_next_def (&(ITER)))
+
+/* This macro executes a loop over the VDEF operands of STMT.  The def
+   and use vector for each VDEF is returned in DEFVAR and USEVECT. 
+   ITER is an ssa_op_iter structure used to control the loop.  */
+#define FOR_EACH_SSA_VDEF_OPERAND(DEFVAR, USEVECT, STMT, ITER) \
+  for (op_iter_init_vdef (&(ITER), STMT, &(USEVECT), &(DEFVAR));       \
+       !op_iter_done (&(ITER));                                        \
+       op_iter_next_vdef (&(USEVECT), &(DEFVAR), &(ITER)))
+
+/* This macro will execute a loop over all the arguments of a PHI which
+   match FLAGS.   A use_operand_p is always returned via USEVAR.  FLAGS
+   can be either SSA_OP_USE or SSA_OP_VIRTUAL_USES or SSA_OP_ALL_USES.  */
+#define FOR_EACH_PHI_ARG(USEVAR, STMT, ITER, FLAGS)            \
+  for ((USEVAR) = op_iter_init_phiuse (&(ITER), STMT, FLAGS);  \
+       !op_iter_done (&(ITER));                                        \
+       (USEVAR) = op_iter_next_use (&(ITER)))
+
+
+/* This macro will execute a loop over a stmt, regardless of whether it is
+   a real stmt or a PHI node, looking at the USE nodes matching FLAGS.  */
+#define FOR_EACH_PHI_OR_STMT_USE(USEVAR, STMT, ITER, FLAGS)    \
+  for ((USEVAR) = (gimple_code (STMT) == GIMPLE_PHI            \
+                  ? op_iter_init_phiuse (&(ITER), STMT, FLAGS) \
+                  : op_iter_init_use (&(ITER), STMT, FLAGS));  \
+       !op_iter_done (&(ITER));                                        \
+       (USEVAR) = op_iter_next_use (&(ITER)))
+
+/* This macro will execute a loop over a stmt, regardless of whether it is
+   a real stmt or a PHI node, looking at the DEF nodes matching FLAGS.  */
+#define FOR_EACH_PHI_OR_STMT_DEF(DEFVAR, STMT, ITER, FLAGS)    \
+  for ((DEFVAR) = (gimple_code (STMT) == GIMPLE_PHI            \
+                  ? op_iter_init_phidef (&(ITER), STMT, FLAGS) \
+                  : op_iter_init_def (&(ITER), STMT, FLAGS));  \
+       !op_iter_done (&(ITER));                                        \
+       (DEFVAR) = op_iter_next_def (&(ITER)))
+  
+/* This macro returns an operand in STMT as a tree if it is the ONLY
+   operand matching FLAGS.  If there are 0 or more than 1 operand matching
+   FLAGS, then NULL_TREE is returned.  */
+#define SINGLE_SSA_TREE_OPERAND(STMT, FLAGS)                   \
+  single_ssa_tree_operand (STMT, FLAGS)
+                                                                                
+/* This macro returns an operand in STMT as a use_operand_p if it is the ONLY
+   operand matching FLAGS.  If there are 0 or more than 1 operand matching
+   FLAGS, then NULL_USE_OPERAND_P is returned.  */
+#define SINGLE_SSA_USE_OPERAND(STMT, FLAGS)                    \
+  single_ssa_use_operand (STMT, FLAGS)
+                                                                                
+/* This macro returns an operand in STMT as a def_operand_p if it is the ONLY
+   operand matching FLAGS.  If there are 0 or more than 1 operand matching
+   FLAGS, then NULL_DEF_OPERAND_P is returned.  */
+#define SINGLE_SSA_DEF_OPERAND(STMT, FLAGS)                    \
+  single_ssa_def_operand (STMT, FLAGS)
+
+/* This macro returns TRUE if there are no operands matching FLAGS in STMT.  */
+#define ZERO_SSA_OPERANDS(STMT, FLAGS)         zero_ssa_operands (STMT, FLAGS)
+
+/* This macro counts the number of operands in STMT matching FLAGS.  */
+#define NUM_SSA_OPERANDS(STMT, FLAGS)  num_ssa_operands (STMT, FLAGS)
+
+#endif  /* GCC_TREE_SSA_OPERANDS_H  */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree.def b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree.def
new file mode 100644 (file)
index 0000000..c675812
--- /dev/null
@@ -0,0 +1,1170 @@
+/* This file contains the definitions and documentation for the
+   tree codes used in GCC.
+   Copyright (C) 1987, 1988, 1993, 1995, 1997, 1998, 2000, 2001, 2004, 2005, 
+   2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+
+/* For tcc_references, tcc_expression, tcc_comparison, tcc_unary,
+   tcc_binary, and tcc_statement nodes, which use struct tree_exp, the
+   4th element is the number of argument slots to allocate.  This
+   determines the size of the tree node object.  Other nodes use
+   different structures, and the size is determined by the tree_union
+   member structure; the 4th element should be zero.  Languages that
+   define language-specific tcc_exceptional or tcc_constant codes must
+   define the tree_size langhook to say how big they are.
+
+   These tree codes have been sorted so that the macros in tree.h that
+   check for various tree codes are optimized into range checks.  This
+   gives a measurable performance improvement.  When adding a new
+   code, consider its placement in relation to the other codes.  */
+
+/* Any erroneous construct is parsed into a node of this type.
+   This type of node is accepted without complaint in all contexts
+   by later parsing activities, to avoid multiple error messages
+   for one error.
+   No fields in these nodes are used except the TREE_CODE.  */
+DEFTREECODE (ERROR_MARK, "error_mark", tcc_exceptional, 0)
+
+/* Used to represent a name (such as, in the DECL_NAME of a decl node).
+   Internally it looks like a STRING_CST node.
+   There is only one IDENTIFIER_NODE ever made for any particular name.
+   Use `get_identifier' to get it (or create it, the first time).  */
+DEFTREECODE (IDENTIFIER_NODE, "identifier_node", tcc_exceptional, 0)
+
+/* Has the TREE_VALUE and TREE_PURPOSE fields.  */
+/* These nodes are made into lists by chaining through the
+   TREE_CHAIN field.  The elements of the list live in the
+   TREE_VALUE fields, while TREE_PURPOSE fields are occasionally
+   used as well to get the effect of Lisp association lists.  */
+DEFTREECODE (TREE_LIST, "tree_list", tcc_exceptional, 0)
+
+/* These nodes contain an array of tree nodes.  */
+DEFTREECODE (TREE_VEC, "tree_vec", tcc_exceptional, 0)
+
+/* A symbol binding block.  These are arranged in a tree,
+   where the BLOCK_SUBBLOCKS field contains a chain of subblocks
+   chained through the BLOCK_CHAIN field.
+   BLOCK_SUPERCONTEXT points to the parent block.
+     For a block which represents the outermost scope of a function, it
+     points to the FUNCTION_DECL node.
+   BLOCK_VARS points to a chain of decl nodes.
+   BLOCK_CHAIN points to the next BLOCK at the same level.
+   BLOCK_ABSTRACT_ORIGIN points to the original (abstract) tree node which
+   this block is an instance of, or else is NULL to indicate that this
+   block is not an instance of anything else.  When non-NULL, the value
+   could either point to another BLOCK node or it could point to a
+   FUNCTION_DECL node (e.g. in the case of a block representing the
+   outermost scope of a particular inlining of a function).
+   BLOCK_ABSTRACT is nonzero if the block represents an abstract
+   instance of a block (i.e. one which is nested within an abstract
+   instance of an inline function).
+   TREE_ASM_WRITTEN is nonzero if the block was actually referenced
+   in the generated assembly.  */
+DEFTREECODE (BLOCK, "block", tcc_exceptional, 0)
+\f
+/* Each data type is represented by a tree node whose code is one of
+   the following:  */
+/* Each node that represents a data type has a component TYPE_SIZE
+   containing a tree that is an expression for the size in bits.
+   The TYPE_MODE contains the machine mode for values of this type.
+   The TYPE_POINTER_TO field contains a type for a pointer to this type,
+     or zero if no such has been created yet.
+   The TYPE_NEXT_VARIANT field is used to chain together types
+     that are variants made by type modifiers such as "const" and "volatile".
+   The TYPE_MAIN_VARIANT field, in any member of such a chain,
+     points to the start of the chain.
+   The TYPE_NONCOPIED_PARTS field is a list specifying which parts
+     of an object of this type should *not* be copied by assignment.
+     The TREE_VALUE of each is a FIELD_DECL that should not be
+     copied.  The TREE_PURPOSE is an initial value for that field when
+     an object of this type is initialized via an INIT_EXPR.  It may
+     be NULL if no special value is required.  Even the things in this
+     list are copied if the right-hand side of an assignment is known
+     to be a complete object (rather than being, perhaps, a subobject
+     of some other object.)  The determination of what constitutes a
+     complete object is done by fixed_type_p.
+   The TYPE_NAME field contains info on the name used in the program
+     for this type (for GDB symbol table output).  It is either a
+     TYPE_DECL node, for types that are typedefs, or an IDENTIFIER_NODE
+     in the case of structs, unions or enums that are known with a tag,
+     or zero for types that have no special name.
+   The TYPE_CONTEXT for any sort of type which could have a name or
+    which could have named members (e.g. tagged types in C/C++) will
+    point to the node which represents the scope of the given type, or
+    will be NULL_TREE if the type has "file scope".  For most types, this
+    will point to a BLOCK node or a FUNCTION_DECL node, but it could also
+    point to a FUNCTION_TYPE node (for types whose scope is limited to the
+    formal parameter list of some function type specification) or it
+    could point to a RECORD_TYPE, UNION_TYPE or QUAL_UNION_TYPE node
+    (for C++ "member" types).
+    For non-tagged-types, TYPE_CONTEXT need not be set to anything in
+    particular, since any type which is of some type category  (e.g.
+    an array type or a function type) which cannot either have a name
+    itself or have named members doesn't really have a "scope" per se.
+  The TREE_CHAIN field is used as a forward-references to names for
+    ENUMERAL_TYPE, RECORD_TYPE, UNION_TYPE, and QUAL_UNION_TYPE nodes;
+    see below.  */
+
+/* The ordering of the following codes is optimized for the checking
+   macros in tree.h.  Changing the order will degrade the speed of the
+   compiler.  OFFSET_TYPE, ENUMERAL_TYPE, BOOLEAN_TYPE, INTEGER_TYPE,
+   REAL_TYPE, POINTER_TYPE.  */
+     
+/* An offset is a pointer relative to an object.
+   The TREE_TYPE field is the type of the object at the offset.
+   The TYPE_OFFSET_BASETYPE points to the node for the type of object
+   that the offset is relative to.  */
+DEFTREECODE (OFFSET_TYPE, "offset_type", tcc_type, 0)
+
+/* C enums.  The type node looks just like an INTEGER_TYPE node.
+   The symbols for the values of the enum type are defined by
+   CONST_DECL nodes, but the type does not point to them;
+   however, the TYPE_VALUES is a list in which each element's TREE_PURPOSE
+   is a name and the TREE_VALUE is the value (an INTEGER_CST node).  */
+/* A forward reference `enum foo' when no enum named foo is defined yet
+   has zero (a null pointer) in its TYPE_SIZE.  The tag name is in
+   the TYPE_NAME field.  If the type is later defined, the normal
+   fields are filled in.
+   RECORD_TYPE, UNION_TYPE, and QUAL_UNION_TYPE forward refs are
+   treated similarly.  */
+DEFTREECODE (ENUMERAL_TYPE, "enumeral_type", tcc_type, 0)
+
+/* Boolean type (true or false are the only values).  Looks like an
+   INTEGRAL_TYPE.  */
+DEFTREECODE (BOOLEAN_TYPE, "boolean_type", tcc_type, 0)
+
+/* Integer types in all languages, including char in C.
+   Also used for sub-ranges of other discrete types.
+   Has components TYPE_MIN_VALUE, TYPE_MAX_VALUE (expressions, inclusive)
+   and TYPE_PRECISION (number of bits used by this type).
+   In the case of a subrange type in Pascal, the TREE_TYPE
+   of this will point at the supertype (another INTEGER_TYPE,
+   or an ENUMERAL_TYPE or BOOLEAN_TYPE).
+   Otherwise, the TREE_TYPE is zero.  */
+DEFTREECODE (INTEGER_TYPE, "integer_type", tcc_type, 0)
+
+/* C's float and double.  Different floating types are distinguished
+   by machine mode and by the TYPE_SIZE and the TYPE_PRECISION.  */
+DEFTREECODE (REAL_TYPE, "real_type", tcc_type, 0)
+
+/* The ordering of the following codes is optimized for the checking
+   macros in tree.h.  Changing the order will degrade the speed of the
+   compiler.  POINTER_TYPE, REFERENCE_TYPE.  Note that this range
+   overlaps the previous range of ordered types.  */
+     
+/* All pointer-to-x types have code POINTER_TYPE.
+   The TREE_TYPE points to the node for the type pointed to.  */
+DEFTREECODE (POINTER_TYPE, "pointer_type", tcc_type, 0)
+
+/* _Fract and _Accum types in Embedded-C.  Different fixed-point types
+   are distinguished by machine mode and by the TYPE_SIZE and the
+   TYPE_PRECISION.  */
+DEFTREECODE (FIXED_POINT_TYPE, "fixed_point_type", tcc_type, 0)
+
+/* A reference is like a pointer except that it is coerced
+   automatically to the value it points to.  Used in C++.  */
+DEFTREECODE (REFERENCE_TYPE, "reference_type", tcc_type, 0)
+
+/* The ordering of the following codes is optimized for the checking
+   macros in tree.h.  Changing the order will degrade the speed of the
+   compiler.  COMPLEX_TYPE, VECTOR_TYPE, ARRAY_TYPE.  */
+     
+/* Complex number types.  The TREE_TYPE field is the data type
+   of the real and imaginary parts.  It must be of scalar
+   arithmetic type, not including pointer type.  */
+DEFTREECODE (COMPLEX_TYPE, "complex_type", tcc_type, 0)
+
+/* Vector types.  The TREE_TYPE field is the data type of the vector
+   elements.  The TYPE_PRECISION field is the number of subparts of
+   the vector.  */
+DEFTREECODE (VECTOR_TYPE, "vector_type", tcc_type, 0)
+
+/* The ordering of the following codes is optimized for the checking
+   macros in tree.h.  Changing the order will degrade the speed of the
+   compiler.  ARRAY_TYPE, RECORD_TYPE, UNION_TYPE, QUAL_UNION_TYPE.
+   Note that this range overlaps the previous range.  */
+     
+/* Types of arrays.  Special fields:
+   TREE_TYPE             Type of an array element.
+   TYPE_DOMAIN           Type to index by.
+                           Its range of values specifies the array length.
+ The field TYPE_POINTER_TO (TREE_TYPE (array_type)) is always nonzero
+ and holds the type to coerce a value of that array type to in C.
+ TYPE_STRING_FLAG indicates a string (in contrast to an array of chars)
+ in languages (such as Chill) that make a distinction.  */
+/* Array types in C or Pascal */
+DEFTREECODE (ARRAY_TYPE, "array_type", tcc_type, 0)
+
+/* Struct in C, or record in Pascal.  */
+/* Special fields:
+   TYPE_FIELDS  chain of FIELD_DECLs for the fields of the struct,
+     and VAR_DECLs, TYPE_DECLs and CONST_DECLs for record-scope variables,
+     types and enumerators.
+   A few may need to be added for Pascal.  */
+/* See the comment above, before ENUMERAL_TYPE, for how
+   forward references to struct tags are handled in C.  */
+DEFTREECODE (RECORD_TYPE, "record_type", tcc_type, 0)
+
+/* Union in C.  Like a struct, except that the offsets of the fields
+   will all be zero.  */
+/* See the comment above, before ENUMERAL_TYPE, for how
+   forward references to union tags are handled in C.  */
+DEFTREECODE (UNION_TYPE, "union_type", tcc_type, 0)    /* C union type */
+
+/* Similar to UNION_TYPE, except that the expressions in DECL_QUALIFIER
+   in each FIELD_DECL determine what the union contains.  The first
+   field whose DECL_QUALIFIER expression is true is deemed to occupy
+   the union.  */
+DEFTREECODE (QUAL_UNION_TYPE, "qual_union_type", tcc_type, 0)
+
+/* The ordering of the following codes is optimized for the checking
+   macros in tree.h.  Changing the order will degrade the speed of the
+   compiler.  VOID_TYPE, FUNCTION_TYPE, METHOD_TYPE.  */
+     
+/* The void type in C */
+DEFTREECODE (VOID_TYPE, "void_type", tcc_type, 0)
+
+/* Type of functions.  Special fields:
+   TREE_TYPE               type of value returned.
+   TYPE_ARG_TYPES      list of types of arguments expected.
+       this list is made of TREE_LIST nodes.
+   Types of "Procedures" in languages where they are different from functions
+   have code FUNCTION_TYPE also, but then TREE_TYPE is zero or void type.  */
+DEFTREECODE (FUNCTION_TYPE, "function_type", tcc_type, 0)
+
+/* METHOD_TYPE is the type of a function which takes an extra first
+   argument for "self", which is not present in the declared argument list.
+   The TREE_TYPE is the return type of the method.  The TYPE_METHOD_BASETYPE
+   is the type of "self".  TYPE_ARG_TYPES is the real argument list, which
+   includes the hidden argument for "self".  */
+DEFTREECODE (METHOD_TYPE, "method_type", tcc_type, 0)
+
+/* This is a language-specific kind of type.
+   Its meaning is defined by the language front end.
+   layout_type does not know how to lay this out,
+   so the front-end must do so manually.  */
+DEFTREECODE (LANG_TYPE, "lang_type", tcc_type, 0)
+\f
+/* Expressions */
+
+/* First, the constants.  */
+
+/* Contents are in TREE_INT_CST_LOW and TREE_INT_CST_HIGH fields,
+   32 bits each, giving us a 64 bit constant capability.  INTEGER_CST
+   nodes can be shared, and therefore should be considered read only.
+   They should be copied, before setting a flag such as
+   TREE_OVERFLOW.  If an INTEGER_CST has TREE_OVERFLOW or
+   TREE_CONSTANT_OVERFLOW already set, it is known to be unique.
+   INTEGER_CST nodes are created for the integral types, for pointer
+   types and for vector and float types in some circumstances.  */
+DEFTREECODE (INTEGER_CST, "integer_cst", tcc_constant, 0)
+
+/* Contents are in TREE_REAL_CST field.  */
+DEFTREECODE (REAL_CST, "real_cst", tcc_constant, 0)
+
+/* Contents are in TREE_FIXED_CST field.  */
+DEFTREECODE (FIXED_CST, "fixed_cst", tcc_constant, 0)
+
+/* Contents are in TREE_REALPART and TREE_IMAGPART fields,
+   whose contents are other constant nodes.  */
+DEFTREECODE (COMPLEX_CST, "complex_cst", tcc_constant, 0)
+
+/* Contents are in TREE_VECTOR_CST_ELTS field.  */
+DEFTREECODE (VECTOR_CST, "vector_cst", tcc_constant, 0)
+
+/* Contents are TREE_STRING_LENGTH and the actual contents of the string.  */
+DEFTREECODE (STRING_CST, "string_cst", tcc_constant, 0)
+
+/* Declarations.  All references to names are represented as ..._DECL
+   nodes.  The decls in one binding context are chained through the
+   TREE_CHAIN field.  Each DECL has a DECL_NAME field which contains
+   an IDENTIFIER_NODE.  (Some decls, most often labels, may have zero
+   as the DECL_NAME).  DECL_CONTEXT points to the node representing
+   the context in which this declaration has its scope.  For
+   FIELD_DECLs, this is the RECORD_TYPE, UNION_TYPE, or
+   QUAL_UNION_TYPE node that the field is a member of.  For VAR_DECL,
+   PARM_DECL, FUNCTION_DECL, LABEL_DECL, and CONST_DECL nodes, this
+   points to either the FUNCTION_DECL for the containing function, the
+   RECORD_TYPE or UNION_TYPE for the containing type, or NULL_TREE or
+   a TRANSLATION_UNIT_DECL if the given decl has "file scope".
+   DECL_ABSTRACT_ORIGIN, if non-NULL, points to the original (abstract)
+    ..._DECL node of which this decl is an (inlined or template expanded)
+    instance.
+   The TREE_TYPE field holds the data type of the object, when relevant.
+    LABEL_DECLs have no data type.  For TYPE_DECL, the TREE_TYPE field
+    contents are the type whose name is being declared.
+   The DECL_ALIGN, DECL_SIZE,
+    and DECL_MODE fields exist in decl nodes just as in type nodes.
+    They are unused in LABEL_DECL, TYPE_DECL and CONST_DECL nodes.
+
+   DECL_FIELD_BIT_OFFSET holds an integer number of bits offset for
+   the location.  DECL_VOFFSET holds an expression for a variable
+   offset; it is to be multiplied by DECL_VOFFSET_UNIT (an integer).
+   These fields are relevant only in FIELD_DECLs and PARM_DECLs.
+
+   DECL_INITIAL holds the value to initialize a variable to,
+   or the value of a constant.  For a function, it holds the body
+   (a node of type BLOCK representing the function's binding contour
+   and whose body contains the function's statements.)  For a LABEL_DECL
+   in C, it is a flag, nonzero if the label's definition has been seen.
+
+   PARM_DECLs use a special field:
+   DECL_ARG_TYPE is the type in which the argument is actually
+    passed, which may be different from its type within the function.
+
+   FUNCTION_DECLs use four special fields:
+   DECL_ARGUMENTS holds a chain of PARM_DECL nodes for the arguments.
+   DECL_RESULT holds a RESULT_DECL node for the value of a function.
+    The DECL_RTL field is 0 for a function that returns no value.
+    (C functions returning void have zero here.)
+    The TREE_TYPE field is the type in which the result is actually
+    returned.  This is usually the same as the return type of the
+    FUNCTION_DECL, but it may be a wider integer type because of
+    promotion.
+   DECL_FUNCTION_CODE is a code number that is nonzero for
+    built-in functions.  Its value is an enum built_in_function
+    that says which built-in function it is.
+
+   DECL_SOURCE_FILE holds a filename string and DECL_SOURCE_LINE
+   holds a line number.  In some cases these can be the location of
+   a reference, if no definition has been seen.
+
+   DECL_ABSTRACT is nonzero if the decl represents an abstract instance
+   of a decl (i.e. one which is nested within an abstract instance of a
+   inline function.  */
+
+DEFTREECODE (FUNCTION_DECL, "function_decl", tcc_declaration, 0)
+DEFTREECODE (LABEL_DECL, "label_decl", tcc_declaration, 0)
+/* The ordering of the following codes is optimized for the checking
+   macros in tree.h.  Changing the order will degrade the speed of the
+   compiler.  FIELD_DECL, VAR_DECL, CONST_DECL, PARM_DECL,
+   TYPE_DECL.  */
+DEFTREECODE (FIELD_DECL, "field_decl", tcc_declaration, 0)
+DEFTREECODE (VAR_DECL, "var_decl", tcc_declaration, 0)
+DEFTREECODE (CONST_DECL, "const_decl", tcc_declaration, 0)
+DEFTREECODE (PARM_DECL, "parm_decl", tcc_declaration, 0)
+DEFTREECODE (TYPE_DECL, "type_decl", tcc_declaration, 0)
+DEFTREECODE (RESULT_DECL, "result_decl", tcc_declaration, 0)
+
+/* Memory tags used in tree-ssa to represent memory locations in
+   virtual SSA.  */
+DEFTREECODE (NAME_MEMORY_TAG, "name_memory_tag", tcc_declaration, 0)
+DEFTREECODE (SYMBOL_MEMORY_TAG, "symbol_memory_tag", tcc_declaration, 0)
+DEFTREECODE (MEMORY_PARTITION_TAG, "memory_partition_tag", tcc_declaration, 0)
+
+/* A namespace declaration.  Namespaces appear in DECL_CONTEXT of other
+   _DECLs, providing a hierarchy of names.  */
+DEFTREECODE (NAMESPACE_DECL, "namespace_decl", tcc_declaration, 0)
+
+/* A declaration import.
+   The C++ FE uses this to represent a using-directive; eg:
+   "using namespace foo".
+   But it could be used to represent any declaration import construct.
+   Whenever a declaration import appears in a lexical block, the BLOCK node
+   representing that lexical block in GIMPLE will contain an IMPORTED_DECL
+   node, linked via BLOCK_VARS accessor of the said BLOCK.
+   For a given NODE which code is IMPORTED_DECL,
+   IMPORTED_DECL_ASSOCIATED_DECL (NODE) accesses the imported declaration.  */
+DEFTREECODE (IMPORTED_DECL, "imported_decl", tcc_declaration, 0)
+
+/* A translation unit.  This is not technically a declaration, since it
+   can't be looked up, but it's close enough.  */
+DEFTREECODE (TRANSLATION_UNIT_DECL, "translation_unit_decl",\
+            tcc_declaration, 0)
+\f
+/* References to storage.  */
+
+/* Value is structure or union component.
+   Operand 0 is the structure or union (an expression).
+   Operand 1 is the field (a node of type FIELD_DECL).
+   Operand 2, if present, is the value of DECL_FIELD_OFFSET, measured
+   in units of DECL_OFFSET_ALIGN / BITS_PER_UNIT.  */
+DEFTREECODE (COMPONENT_REF, "component_ref", tcc_reference, 3)
+
+/* Reference to a group of bits within an object.  Similar to COMPONENT_REF
+   except the position is given explicitly rather than via a FIELD_DECL.
+   Operand 0 is the structure or union expression;
+   operand 1 is a tree giving the constant number of bits being referenced;
+   operand 2 is a tree giving the constant position of the first referenced bit.
+   The result type width has to match the number of bits referenced.
+   If the result type is integral, its signedness specifies how it is extended
+   to its mode width.  */
+DEFTREECODE (BIT_FIELD_REF, "bit_field_ref", tcc_reference, 3)
+
+/* The ordering of the following codes is optimized for the checking
+   macros in tree.h.  Changing the order will degrade the speed of the
+   compiler.  INDIRECT_REF, ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF.  */
+
+/* C unary `*' or Pascal `^'.  One operand, an expression for a pointer.  */
+DEFTREECODE (INDIRECT_REF, "indirect_ref", tcc_reference, 1)
+
+/* Like above, but aligns the referenced address (i.e, if the address
+   in P is not aligned on TYPE_ALIGN boundary, then &(*P) != P).  */
+DEFTREECODE (ALIGN_INDIRECT_REF, "align_indirect_ref", tcc_reference, 1)
+
+/* Same as INDIRECT_REF, but also specifies the alignment of the referenced
+   address:
+   Operand 0 is the referenced address (a pointer);
+   Operand 1 is an INTEGER_CST which represents the alignment of the address,
+   or 0 if the alignment is unknown.  */
+DEFTREECODE (MISALIGNED_INDIRECT_REF, "misaligned_indirect_ref", tcc_reference, 2)
+
+/* Array indexing.
+   Operand 0 is the array; operand 1 is a (single) array index.
+   Operand 2, if present, is a copy of TYPE_MIN_VALUE of the index.
+   Operand 3, if present, is the element size, measured in units of
+   the alignment of the element type.  */
+DEFTREECODE (ARRAY_REF, "array_ref", tcc_reference, 4)
+
+/* Likewise, except that the result is a range ("slice") of the array.  The
+   starting index of the resulting array is taken from operand 1 and the size
+   of the range is taken from the type of the expression.  */
+DEFTREECODE (ARRAY_RANGE_REF, "array_range_ref", tcc_reference, 4)
+
+/* Used to represent lookup of runtime type dependent data.  Often this is
+   a reference to a vtable, but it needn't be.  Operands are:
+   OBJ_TYPE_REF_EXPR: An expression that evaluates the value to use.
+   OBJ_TYPE_REF_OBJECT: Is the object on whose behalf the lookup is
+   being performed.  Through this the optimizers may be able to statically
+   determine the dynamic type of the object.
+   OBJ_TYPE_REF_TOKEN: Something front-end specific used to resolve the
+   reference to something simpler, usually to the address of a DECL.
+   Never touched by the middle-end.  Good choices would be either an
+   identifier or a vtable index.  */
+DEFTREECODE (OBJ_TYPE_REF, "obj_type_ref", tcc_expression, 3)
+
+/* The exception object from the runtime.  */
+DEFTREECODE (EXC_PTR_EXPR, "exc_ptr_expr", tcc_expression, 0)
+
+/* The filter object from the runtime.  */
+DEFTREECODE (FILTER_EXPR, "filter_expr", tcc_expression, 0)
+
+/* Constructor: return an aggregate value made from specified components.
+   In C, this is used only for structure and array initializers.
+   The operand is a sequence of component values made out of a VEC of
+   struct constructor_elt.
+
+   For ARRAY_TYPE:
+   The field INDEX of each constructor_elt is the corresponding index.
+   If the index is a RANGE_EXPR, it is a short-hand for many nodes,
+   one for each index in the range.  (If the corresponding field VALUE
+   has side-effects, they are evaluated once for each element.  Wrap the
+   value in a SAVE_EXPR if you want to evaluate side effects only once.)
+
+   For RECORD_TYPE, UNION_TYPE, or QUAL_UNION_TYPE:
+   The field INDEX of each node is a FIELD_DECL.  */
+DEFTREECODE (CONSTRUCTOR, "constructor", tcc_exceptional, 0)
+
+/* The expression types are mostly straightforward, with the fourth argument
+   of DEFTREECODE saying how many operands there are.
+   Unless otherwise specified, the operands are expressions and the
+   types of all the operands and the expression must all be the same.  */
+
+/* Contains two expressions to compute, one followed by the other.
+   the first value is ignored.  The second one's value is used.  The
+   type of the first expression need not agree with the other types.  */
+DEFTREECODE (COMPOUND_EXPR, "compound_expr", tcc_expression, 2)
+
+/* Assignment expression.  Operand 0 is the what to set; 1, the new value.  */
+DEFTREECODE (MODIFY_EXPR, "modify_expr", tcc_expression, 2)
+
+/* Initialization expression.  Operand 0 is the variable to initialize;
+   Operand 1 is the initializer.  This differs from MODIFY_EXPR in that any
+   reference to the referent of operand 0 within operand 1 is undefined.  */
+DEFTREECODE (INIT_EXPR, "init_expr", tcc_expression, 2)
+
+/* For TARGET_EXPR, operand 0 is the target of an initialization,
+   operand 1 is the initializer for the target, which may be void
+     if simply expanding it initializes the target.
+   operand 2 is the cleanup for this node, if any.
+   operand 3 is the saved initializer after this node has been
+   expanded once; this is so we can re-expand the tree later.  */
+DEFTREECODE (TARGET_EXPR, "target_expr", tcc_expression, 4)
+
+/* Conditional expression ( ... ? ... : ...  in C).
+   Operand 0 is the condition.
+   Operand 1 is the then-value.
+   Operand 2 is the else-value.
+   Operand 0 may be of any type.
+   Operand 1 must have the same type as the entire expression, unless
+   it unconditionally throws an exception, in which case it should
+   have VOID_TYPE.  The same constraints apply to operand 2.  The
+   condition in operand 0 must be of integral type. 
+
+   In cfg gimple, if you do not have a selection expression, operands
+   1 and 2 are NULL.  The operands are then taken from the cfg edges. */
+DEFTREECODE (COND_EXPR, "cond_expr", tcc_expression, 3)
+
+/* Vector conditional expression. It is like COND_EXPR, but with
+   vector operands.
+
+   A = VEC_COND_EXPR ( X < Y, B, C)
+
+   means
+
+   for (i=0; i<N; i++)
+     A[i] = X[i] < Y[i] ? B[i] : C[i];
+*/
+DEFTREECODE (VEC_COND_EXPR, "vec_cond_expr", tcc_expression, 3)
+
+/* Declare local variables, including making RTL and allocating space.
+   BIND_EXPR_VARS is a chain of VAR_DECL nodes for the variables.
+   BIND_EXPR_BODY is the body, the expression to be computed using
+   the variables.  The value of operand 1 becomes that of the BIND_EXPR.
+   BIND_EXPR_BLOCK is the BLOCK that corresponds to these bindings
+   for debugging purposes.  If this BIND_EXPR is actually expanded,
+   that sets the TREE_USED flag in the BLOCK.
+
+   The BIND_EXPR is not responsible for informing parsers
+   about these variables.  If the body is coming from the input file,
+   then the code that creates the BIND_EXPR is also responsible for
+   informing the parser of the variables.
+
+   If the BIND_EXPR is ever expanded, its TREE_USED flag is set.
+   This tells the code for debugging symbol tables not to ignore the BIND_EXPR.
+   If the BIND_EXPR should be output for debugging but will not be expanded,
+   set the TREE_USED flag by hand.
+
+   In order for the BIND_EXPR to be known at all, the code that creates it
+   must also install it as a subblock in the tree of BLOCK
+   nodes for the function.  */
+DEFTREECODE (BIND_EXPR, "bind_expr", tcc_expression, 3)
+
+/* Function call.  CALL_EXPRs are represented by variably-sized expression
+   nodes.  There are at least three fixed operands.  Operand 0 is an
+   INTEGER_CST node containing the total operand count, the number of
+   arguments plus 3.  Operand 1 is the function, while operand 2 is
+   is static chain argument, or NULL.  The remaining operands are the
+   arguments to the call.  */
+DEFTREECODE (CALL_EXPR, "call_expr", tcc_vl_exp, 3)
+
+/* Specify a value to compute along with its corresponding cleanup.
+   Operand 0 is the cleanup expression.
+   The cleanup is executed by the first enclosing CLEANUP_POINT_EXPR,
+   which must exist.  This differs from TRY_CATCH_EXPR in that operand 1
+   is always evaluated when cleanups are run.  */
+DEFTREECODE (WITH_CLEANUP_EXPR, "with_cleanup_expr", tcc_expression, 1)
+
+/* Specify a cleanup point.
+   Operand 0 is an expression that may have cleanups.  If it does, those
+   cleanups are executed after the expression is expanded.
+
+   Note that if the expression is a reference to storage, it is forced out
+   of memory before the cleanups are run.  This is necessary to handle
+   cases where the cleanups modify the storage referenced; in the
+   expression 't.i', if 't' is a struct with an integer member 'i' and a
+   cleanup which modifies 'i', the value of the expression depends on
+   whether the cleanup is run before or after 't.i' is evaluated.  When
+   expand_expr is run on 't.i', it returns a MEM.  This is not good enough;
+   the value of 't.i' must be forced out of memory.
+
+   As a consequence, the operand of a CLEANUP_POINT_EXPR must not have
+   BLKmode, because it will not be forced out of memory.  */
+DEFTREECODE (CLEANUP_POINT_EXPR, "cleanup_point_expr", tcc_expression, 1)
+
+/* The following two codes are used in languages that have types where
+   some field in an object of the type contains a value that is used in
+   the computation of another field's offset or size and/or the size of
+   the type.  The positions and/or sizes of fields can vary from object
+   to object of the same type or even for one and the same object within
+   its scope.
+
+   Record types with discriminants in Ada or schema types in Pascal are
+   examples of such types.  This mechanism is also used to create "fat
+   pointers" for unconstrained array types in Ada; the fat pointer is a
+   structure one of whose fields is a pointer to the actual array type
+   and the other field is a pointer to a template, which is a structure
+   containing the bounds of the array.  The bounds in the type pointed
+   to by the first field in the fat pointer refer to the values in the
+   template.
+
+   When you wish to construct such a type you need "self-references"
+   that allow you to reference the object having this type from the
+   TYPE node, i.e. without having a variable instantiating this type.
+
+   Such a "self-references" is done using a PLACEHOLDER_EXPR.  This is
+   a node that will later be replaced with the object being referenced.
+   Its type is that of the object and selects which object to use from
+   a chain of references (see below).  No other slots are used in the
+   PLACEHOLDER_EXPR.
+
+   For example, if your type FOO is a RECORD_TYPE with a field BAR,
+   and you need the value of <variable>.BAR to calculate TYPE_SIZE
+   (FOO), just substitute <variable> above with a PLACEHOLDER_EXPR
+   whose TREE_TYPE is FOO.  Then construct your COMPONENT_REF with
+   the PLACEHOLDER_EXPR as the first operand (which has the correct
+   type).  Later, when the size is needed in the program, the back-end
+   will find this PLACEHOLDER_EXPR and generate code to calculate the
+   actual size at run-time.  In the following, we describe how this
+   calculation is done.
+
+   When we wish to evaluate a size or offset, we check whether it contains a
+   PLACEHOLDER_EXPR.  If it does, we call substitute_placeholder_in_expr
+   passing both that tree and an expression within which the object may be
+   found.  The latter expression is the object itself in the simple case of
+   an Ada record with discriminant, but it can be the array in the case of an
+   unconstrained array.
+
+   In the latter case, we need the fat pointer, because the bounds of
+   the array can only be accessed from it.  However, we rely here on the
+   fact that the expression for the array contains the dereference of
+   the fat pointer that obtained the array pointer.  */
+
+/* Denotes a record to later be substituted before evaluating this expression.
+   The type of this expression is used to find the record to replace it.  */
+DEFTREECODE (PLACEHOLDER_EXPR, "placeholder_expr", tcc_exceptional, 0)
+
+/* Simple arithmetic.  */
+DEFTREECODE (PLUS_EXPR, "plus_expr", tcc_binary, 2)
+DEFTREECODE (MINUS_EXPR, "minus_expr", tcc_binary, 2)
+DEFTREECODE (MULT_EXPR, "mult_expr", tcc_binary, 2)
+
+/* Pointer addition.  The first operand is always a pointer and the
+   second operand is an integer of type sizetype.  */
+DEFTREECODE (POINTER_PLUS_EXPR, "pointer_plus_expr", tcc_binary, 2)
+
+/* Division for integer result that rounds the quotient toward zero.  */
+DEFTREECODE (TRUNC_DIV_EXPR, "trunc_div_expr", tcc_binary, 2)
+
+/* Division for integer result that rounds the quotient toward infinity.  */
+DEFTREECODE (CEIL_DIV_EXPR, "ceil_div_expr", tcc_binary, 2)
+
+/* Division for integer result that rounds toward minus infinity.  */
+DEFTREECODE (FLOOR_DIV_EXPR, "floor_div_expr", tcc_binary, 2)
+
+/* Division for integer result that rounds toward nearest integer.  */
+DEFTREECODE (ROUND_DIV_EXPR, "round_div_expr", tcc_binary, 2)
+
+/* Four kinds of remainder that go with the four kinds of division.  */
+DEFTREECODE (TRUNC_MOD_EXPR, "trunc_mod_expr", tcc_binary, 2)
+DEFTREECODE (CEIL_MOD_EXPR, "ceil_mod_expr", tcc_binary, 2)
+DEFTREECODE (FLOOR_MOD_EXPR, "floor_mod_expr", tcc_binary, 2)
+DEFTREECODE (ROUND_MOD_EXPR, "round_mod_expr", tcc_binary, 2)
+
+/* Division for real result.  */
+DEFTREECODE (RDIV_EXPR, "rdiv_expr", tcc_binary, 2)
+
+/* Division which is not supposed to need rounding.
+   Used for pointer subtraction in C.  */
+DEFTREECODE (EXACT_DIV_EXPR, "exact_div_expr", tcc_binary, 2)
+
+/* Conversion of real to fixed point by truncation.  */
+DEFTREECODE (FIX_TRUNC_EXPR, "fix_trunc_expr", tcc_unary, 1)
+
+/* Conversion of an integer to a real.  */
+DEFTREECODE (FLOAT_EXPR, "float_expr", tcc_unary, 1)
+
+/* Unary negation.  */
+DEFTREECODE (NEGATE_EXPR, "negate_expr", tcc_unary, 1)
+
+/* Minimum and maximum values.  When used with floating point, if both
+   operands are zeros, or if either operand is NaN, then it is unspecified
+   which of the two operands is returned as the result.  */
+DEFTREECODE (MIN_EXPR, "min_expr", tcc_binary, 2)
+DEFTREECODE (MAX_EXPR, "max_expr", tcc_binary, 2)
+
+/* Represents the absolute value of the operand.
+
+   An ABS_EXPR must have either an INTEGER_TYPE or a REAL_TYPE.  The
+   operand of the ABS_EXPR must have the same type.  */
+DEFTREECODE (ABS_EXPR, "abs_expr", tcc_unary, 1)
+
+/* Shift operations for shift and rotate.
+   Shift means logical shift if done on an
+   unsigned type, arithmetic shift if done on a signed type.
+   The second operand is the number of bits to
+   shift by; it need not be the same type as the first operand and result.
+   Note that the result is undefined if the second operand is larger
+   than or equal to the first operand's type size.
+
+   The first operand of a shift can have either an integer or a
+   (non-integer) fixed-point type.  We follow the ISO/IEC TR 18037:2004
+   semantics for the latter.
+
+   Rotates are defined for integer types only.  */
+DEFTREECODE (LSHIFT_EXPR, "lshift_expr", tcc_binary, 2)
+DEFTREECODE (RSHIFT_EXPR, "rshift_expr", tcc_binary, 2)
+DEFTREECODE (LROTATE_EXPR, "lrotate_expr", tcc_binary, 2)
+DEFTREECODE (RROTATE_EXPR, "rrotate_expr", tcc_binary, 2)
+
+/* Bitwise operations.  Operands have same mode as result.  */
+DEFTREECODE (BIT_IOR_EXPR, "bit_ior_expr", tcc_binary, 2)
+DEFTREECODE (BIT_XOR_EXPR, "bit_xor_expr", tcc_binary, 2)
+DEFTREECODE (BIT_AND_EXPR, "bit_and_expr", tcc_binary, 2)
+DEFTREECODE (BIT_NOT_EXPR, "bit_not_expr", tcc_unary, 1)
+
+/* ANDIF and ORIF allow the second operand not to be computed if the
+   value of the expression is determined from the first operand.  AND,
+   OR, and XOR always compute the second operand whether its value is
+   needed or not (for side effects).  The operand may have
+   BOOLEAN_TYPE or INTEGER_TYPE.  In either case, the argument will be
+   either zero or one.  For example, a TRUTH_NOT_EXPR will never have
+   an INTEGER_TYPE VAR_DECL as its argument; instead, a NE_EXPR will be
+   used to compare the VAR_DECL to zero, thereby obtaining a node with
+   value zero or one.  */
+DEFTREECODE (TRUTH_ANDIF_EXPR, "truth_andif_expr", tcc_expression, 2)
+DEFTREECODE (TRUTH_ORIF_EXPR, "truth_orif_expr", tcc_expression, 2)
+DEFTREECODE (TRUTH_AND_EXPR, "truth_and_expr", tcc_expression, 2)
+DEFTREECODE (TRUTH_OR_EXPR, "truth_or_expr", tcc_expression, 2)
+DEFTREECODE (TRUTH_XOR_EXPR, "truth_xor_expr", tcc_expression, 2)
+DEFTREECODE (TRUTH_NOT_EXPR, "truth_not_expr", tcc_expression, 1)
+
+/* Relational operators.
+   `EQ_EXPR' and `NE_EXPR' are allowed for any types.
+   The others are allowed only for integer (or pointer or enumeral)
+   or real types.
+   In all cases the operands will have the same type,
+   and the value is always the type used by the language for booleans.  */
+DEFTREECODE (LT_EXPR, "lt_expr", tcc_comparison, 2)
+DEFTREECODE (LE_EXPR, "le_expr", tcc_comparison, 2)
+DEFTREECODE (GT_EXPR, "gt_expr", tcc_comparison, 2)
+DEFTREECODE (GE_EXPR, "ge_expr", tcc_comparison, 2)
+DEFTREECODE (EQ_EXPR, "eq_expr", tcc_comparison, 2)
+DEFTREECODE (NE_EXPR, "ne_expr", tcc_comparison, 2)
+
+/* Additional relational operators for floating point unordered.  */
+DEFTREECODE (UNORDERED_EXPR, "unordered_expr", tcc_comparison, 2)
+DEFTREECODE (ORDERED_EXPR, "ordered_expr", tcc_comparison, 2)
+
+/* These are equivalent to unordered or ...  */
+DEFTREECODE (UNLT_EXPR, "unlt_expr", tcc_comparison, 2)
+DEFTREECODE (UNLE_EXPR, "unle_expr", tcc_comparison, 2)
+DEFTREECODE (UNGT_EXPR, "ungt_expr", tcc_comparison, 2)
+DEFTREECODE (UNGE_EXPR, "unge_expr", tcc_comparison, 2)
+DEFTREECODE (UNEQ_EXPR, "uneq_expr", tcc_comparison, 2)
+
+/* This is the reverse of uneq_expr.  */
+DEFTREECODE (LTGT_EXPR, "ltgt_expr", tcc_comparison, 2)
+
+DEFTREECODE (RANGE_EXPR, "range_expr", tcc_binary, 2)
+
+/* Represents a re-association barrier for floating point expressions
+   like explicit parenthesis in fortran.  */
+DEFTREECODE (PAREN_EXPR, "paren_expr", tcc_unary, 1)
+
+/* Represents a conversion of type of a value.
+   All conversions, including implicit ones, must be
+   represented by CONVERT_EXPR or NOP_EXPR nodes.  */
+DEFTREECODE (CONVERT_EXPR, "convert_expr", tcc_unary, 1)
+
+/* Conversion of a fixed-point value to an integer, a real, or a fixed-point
+   value.  Or conversion of a fixed-point value from an integer, a real, or
+   a fixed-point value.  */
+DEFTREECODE (FIXED_CONVERT_EXPR, "fixed_convert_expr", tcc_unary, 1)
+
+/* Represents a conversion expected to require no code to be generated.  */
+DEFTREECODE (NOP_EXPR, "nop_expr", tcc_unary, 1)
+
+/* Value is same as argument, but guaranteed not an lvalue.  */
+DEFTREECODE (NON_LVALUE_EXPR, "non_lvalue_expr", tcc_unary, 1)
+
+/* Represents viewing something of one type as being of a second type.
+   This corresponds to an "Unchecked Conversion" in Ada and roughly to
+   the idiom *(type2 *)&X in C.  The only operand is the value to be
+   viewed as being of another type.  It is undefined if the type of the
+   input and of the expression have different sizes.
+
+   This code may also be used within the LHS of a MODIFY_EXPR, in which
+   case no actual data motion may occur.  TREE_ADDRESSABLE will be set in
+   this case and GCC must abort if it could not do the operation without
+   generating insns.  */
+DEFTREECODE (VIEW_CONVERT_EXPR, "view_convert_expr", tcc_reference, 1)
+
+/* Represents something we computed once and will use multiple times.
+   First operand is that expression.  After it is evaluated once, it
+   will be replaced by the temporary variable that holds the value.  */
+DEFTREECODE (SAVE_EXPR, "save_expr", tcc_expression, 1)
+
+/* & in C.  Value is the address at which the operand's value resides.
+   Operand may have any mode.  Result mode is Pmode.  */
+DEFTREECODE (ADDR_EXPR, "addr_expr", tcc_expression, 1)
+
+/* Operand0 is a function constant; result is part N of a function
+   descriptor of type ptr_mode.  */
+DEFTREECODE (FDESC_EXPR, "fdesc_expr", tcc_expression, 2)
+
+/* Given two real or integer operands of the same type,
+   returns a complex value of the corresponding complex type.  */
+DEFTREECODE (COMPLEX_EXPR, "complex_expr", tcc_binary, 2)
+
+/* Complex conjugate of operand.  Used only on complex types.  */
+DEFTREECODE (CONJ_EXPR, "conj_expr", tcc_unary, 1)
+
+/* Used only on an operand of complex type, these return
+   a value of the corresponding component type.  */
+DEFTREECODE (REALPART_EXPR, "realpart_expr", tcc_reference, 1)
+DEFTREECODE (IMAGPART_EXPR, "imagpart_expr", tcc_reference, 1)
+
+/* Nodes for ++ and -- in C.
+   The second arg is how much to increment or decrement by.
+   For a pointer, it would be the size of the object pointed to.  */
+DEFTREECODE (PREDECREMENT_EXPR, "predecrement_expr", tcc_expression, 2)
+DEFTREECODE (PREINCREMENT_EXPR, "preincrement_expr", tcc_expression, 2)
+DEFTREECODE (POSTDECREMENT_EXPR, "postdecrement_expr", tcc_expression, 2)
+DEFTREECODE (POSTINCREMENT_EXPR, "postincrement_expr", tcc_expression, 2)
+
+/* Used to implement `va_arg'.  */
+DEFTREECODE (VA_ARG_EXPR, "va_arg_expr", tcc_expression, 1)
+
+/* Evaluate operand 1.  If and only if an exception is thrown during
+   the evaluation of operand 1, evaluate operand 2.
+
+   This differs from TRY_FINALLY_EXPR in that operand 2 is not evaluated
+   on a normal or jump exit, only on an exception.  */
+DEFTREECODE (TRY_CATCH_EXPR, "try_catch_expr", tcc_statement, 2)
+
+/* Evaluate the first operand.
+   The second operand is a cleanup expression which is evaluated
+   on any exit (normal, exception, or jump out) from this expression.  */
+DEFTREECODE (TRY_FINALLY_EXPR, "try_finally", tcc_statement, 2)
+\f
+/* These types of expressions have no useful value,
+   and always have side effects.  */
+
+/* Used to represent a local declaration. The operand is DECL_EXPR_DECL.  */
+DEFTREECODE (DECL_EXPR, "decl_expr", tcc_statement, 1)
+
+/* A label definition, encapsulated as a statement.
+   Operand 0 is the LABEL_DECL node for the label that appears here.
+   The type should be void and the value should be ignored.  */
+DEFTREECODE (LABEL_EXPR, "label_expr", tcc_statement, 1)
+
+/* GOTO.  Operand 0 is a LABEL_DECL node or an expression.
+   The type should be void and the value should be ignored.  */
+DEFTREECODE (GOTO_EXPR, "goto_expr", tcc_statement, 1)
+
+/* RETURN.  Evaluates operand 0, then returns from the current function.
+   Presumably that operand is an assignment that stores into the
+   RESULT_DECL that hold the value to be returned.
+   The operand may be null.
+   The type should be void and the value should be ignored.  */
+DEFTREECODE (RETURN_EXPR, "return_expr", tcc_statement, 1)
+
+/* Exit the inner most loop conditionally.  Operand 0 is the condition.
+   The type should be void and the value should be ignored.  */
+DEFTREECODE (EXIT_EXPR, "exit_expr", tcc_statement, 1)
+
+/* A loop.  Operand 0 is the body of the loop.
+   It must contain an EXIT_EXPR or is an infinite loop.
+   The type should be void and the value should be ignored.  */
+DEFTREECODE (LOOP_EXPR, "loop_expr", tcc_statement, 1)
+
+/* Switch expression.
+
+   TREE_TYPE is the original type of the condition, before any
+   language required type conversions.  It may be NULL, in which case
+   the original type and final types are assumed to be the same.
+
+   Operand 0 is the expression used to perform the branch,
+   Operand 1 is the body of the switch, which probably contains
+     CASE_LABEL_EXPRs.  It may also be NULL, in which case operand 2
+     must not be NULL.
+   Operand 2 is either NULL_TREE or a TREE_VEC of the CASE_LABEL_EXPRs
+     of all the cases.  */
+DEFTREECODE (SWITCH_EXPR, "switch_expr", tcc_statement, 3)
+
+/* Used to represent a case label. The operands are CASE_LOW and
+   CASE_HIGH, respectively. If CASE_LOW is NULL_TREE, the label is a
+   'default' label. If CASE_HIGH is NULL_TREE, the label is a normal case
+   label.  CASE_LABEL is the corresponding LABEL_DECL.  */
+DEFTREECODE (CASE_LABEL_EXPR, "case_label_expr", tcc_statement, 3)
+
+/* RESX.  Resume execution after an exception.  Operand 0 is a
+   number indicating the exception region that is being left.  */
+DEFTREECODE (RESX_EXPR, "resx_expr", tcc_statement, 1)
+
+/* Used to represent an inline assembly statement.  ASM_STRING returns a
+   STRING_CST for the instruction (e.g., "mov x, y"). ASM_OUTPUTS,
+   ASM_INPUTS, and ASM_CLOBBERS represent the outputs, inputs, and clobbers
+   for the statement.  */
+DEFTREECODE (ASM_EXPR, "asm_expr", tcc_statement, 4)
+
+/* Variable references for SSA analysis.  New SSA names are created every
+   time a variable is assigned a new value.  The SSA builder uses SSA_NAME
+   nodes to implement SSA versioning.  */
+DEFTREECODE (SSA_NAME, "ssa_name", tcc_exceptional, 0)
+
+/* Used to represent a typed exception handler.  CATCH_TYPES is the type (or
+   list of types) handled, and CATCH_BODY is the code for the handler.  */
+DEFTREECODE (CATCH_EXPR, "catch_expr", tcc_statement, 2)
+
+/* Used to represent an exception specification.  EH_FILTER_TYPES is a list
+   of allowed types, and EH_FILTER_FAILURE is an expression to evaluate on
+   failure.  EH_FILTER_MUST_NOT_THROW controls which range type to use when
+   expanding.  */
+DEFTREECODE (EH_FILTER_EXPR, "eh_filter_expr", tcc_statement, 2)
+
+/* Indicates a change in the dynamic type of a memory location.  This
+   has no value and generates no executable code.  It is only used for
+   type based alias analysis.  This is generated by C++ placement new.
+   CHANGE_DYNAMIC_TYPE_NEW_TYPE, the first operand, is the new type.
+   CHANGE_DYNAMIC_TYPE_LOCATION, the second operand, is the location
+   whose type is being changed.  */
+DEFTREECODE (CHANGE_DYNAMIC_TYPE_EXPR, "change_dynamic_type_expr",
+            tcc_statement, 2)
+
+/* Node used for describing a property that is known at compile
+   time.  */
+DEFTREECODE (SCEV_KNOWN, "scev_known", tcc_expression, 0)
+
+/* Node used for describing a property that is not known at compile
+   time.  */
+DEFTREECODE (SCEV_NOT_KNOWN, "scev_not_known", tcc_expression, 0)
+
+/* Polynomial chains of recurrences.
+   Under the form: cr = {CHREC_LEFT (cr), +, CHREC_RIGHT (cr)}.  */
+DEFTREECODE (POLYNOMIAL_CHREC, "polynomial_chrec", tcc_expression, 3)
+
+/* Used to chain children of container statements together.
+   Use the interface in tree-iterator.h to access this node.  */
+DEFTREECODE (STATEMENT_LIST, "statement_list", tcc_exceptional, 0)
+
+/* Predicate assertion.  Artificial expression generated by the optimizers
+   to keep track of predicate values.  This expression may only appear on
+   the RHS of assignments.
+   
+   Given X = ASSERT_EXPR <Y, EXPR>, the optimizers can infer
+   two things:
+
+       1- X is a copy of Y.
+       2- EXPR is a conditional expression and is known to be true.
+
+   Valid and to be expected forms of conditional expressions are
+   valid GIMPLE conditional expressions (as defined by is_gimple_condexpr)
+   and conditional expressions with the first operand being a
+   PLUS_EXPR with a variable possibly wrapped in a NOP_EXPR first
+   operand and an integer constant second operand.
+
+   The type of the expression is the same as Y.  */
+DEFTREECODE (ASSERT_EXPR, "assert_expr", tcc_expression, 2)
+
+/* Base class information. Holds information about a class as a
+   baseclass of itself or another class.  */
+DEFTREECODE (TREE_BINFO, "tree_binfo", tcc_exceptional, 0)
+
+/* Records the size for an expression of variable size type.  This is
+   for use in contexts in which we are accessing the entire object,
+   such as for a function call, or block copy.
+   Operand 0 is the real expression.
+   Operand 1 is the size of the type in the expression.  */
+DEFTREECODE (WITH_SIZE_EXPR, "with_size_expr", tcc_expression, 2)
+
+/* Extract elements from two input vectors Operand 0 and Operand 1
+   size VS, according to the offset OFF defined by Operand 2 as
+   follows:
+   If OFF > 0, the last VS - OFF elements of vector OP0 are concatenated to
+   the first OFF elements of the vector OP1.
+   If OFF == 0, then the returned vector is OP1.
+   On different targets OFF may take different forms; It can be an address, in 
+   which case its low log2(VS)-1 bits define the offset, or it can be a mask 
+   generated by the builtin targetm.vectorize.mask_for_load_builtin_decl.  */
+DEFTREECODE (REALIGN_LOAD_EXPR, "realign_load", tcc_expression, 3)
+
+/* Low-level memory addressing.  Operands are SYMBOL (static or global
+   variable), BASE (register), INDEX (register), STEP (integer constant),
+   OFFSET (integer constant).  Corresponding address is
+   SYMBOL + BASE + STEP * INDEX + OFFSET.  Only variations and values valid on
+   the target are allowed.
+
+   The type of STEP, INDEX and OFFSET is sizetype.  The type of BASE is
+   sizetype or a pointer type (if SYMBOL is NULL).
+   
+   The sixth argument is the reference to the original memory access, which
+   is preserved for the purposes of the RTL alias analysis.  The seventh
+   argument is a tag representing results of the tree level alias analysis.  */
+
+DEFTREECODE (TARGET_MEM_REF, "target_mem_ref", tcc_reference, 7)
+
+/* The ordering of the codes between OMP_PARALLEL and OMP_CRITICAL is
+   exposed to TREE_RANGE_CHECK.  */
+/* OpenMP - #pragma omp parallel [clause1 ... clauseN]
+   Operand 0: OMP_PARALLEL_BODY: Code to be executed by all threads.
+   Operand 1: OMP_PARALLEL_CLAUSES: List of clauses.  */
+
+DEFTREECODE (OMP_PARALLEL, "omp_parallel", tcc_statement, 2)
+
+/* OpenMP - #pragma omp task [clause1 ... clauseN]
+   Operand 0: OMP_TASK_BODY: Code to be executed by all threads.
+   Operand 1: OMP_TASK_CLAUSES: List of clauses.  */
+
+DEFTREECODE (OMP_TASK, "omp_task", tcc_statement, 2)
+
+/* OpenMP - #pragma omp for [clause1 ... clauseN]
+   Operand 0: OMP_FOR_BODY: Loop body.
+   Operand 1: OMP_FOR_CLAUSES: List of clauses.
+   Operand 2: OMP_FOR_INIT: Initialization code of the form
+                               VAR = N1.
+   Operand 3: OMP_FOR_COND: Loop conditional expression of the form
+                               VAR { <, >, <=, >= } N2.
+   Operand 4: OMP_FOR_INCR: Loop index increment of the form
+                               VAR { +=, -= } INCR.
+   Operand 5: OMP_FOR_PRE_BODY: Filled by the gimplifier with things
+       from INIT, COND, and INCR that are technically part of the
+       OMP_FOR structured block, but are evaluated before the loop
+       body begins.
+
+   VAR must be an integer or pointer variable, which is implicitly thread
+   private.  N1, N2 and INCR are required to be loop invariant integer
+   expressions that are evaluated without any synchronization.
+   The evaluation order, frequency of evaluation and side-effects are
+   unspecified by the standard.  */
+DEFTREECODE (OMP_FOR, "omp_for", tcc_statement, 6)
+
+/* OpenMP - #pragma omp sections [clause1 ... clauseN]
+   Operand 0: OMP_SECTIONS_BODY: Sections body.
+   Operand 1: OMP_SECTIONS_CLAUSES: List of clauses.  */
+DEFTREECODE (OMP_SECTIONS, "omp_sections", tcc_statement, 2)
+
+/* OpenMP - #pragma omp single
+   Operand 0: OMP_SINGLE_BODY: Single section body.
+   Operand 1: OMP_SINGLE_CLAUSES: List of clauses.  */
+DEFTREECODE (OMP_SINGLE, "omp_single", tcc_statement, 2)
+
+/* OpenMP - #pragma omp section
+   Operand 0: OMP_SECTION_BODY: Section body.  */
+DEFTREECODE (OMP_SECTION, "omp_section", tcc_statement, 1)
+
+/* OpenMP - #pragma omp master
+   Operand 0: OMP_MASTER_BODY: Master section body.  */
+DEFTREECODE (OMP_MASTER, "omp_master", tcc_statement, 1)
+
+/* OpenMP - #pragma omp ordered
+   Operand 0: OMP_ORDERED_BODY: Master section body.  */
+DEFTREECODE (OMP_ORDERED, "omp_ordered", tcc_statement, 1)
+
+/* OpenMP - #pragma omp critical [name]
+   Operand 0: OMP_CRITICAL_BODY: Critical section body.
+   Operand 1: OMP_CRITICAL_NAME: Identifier for critical section.  */
+DEFTREECODE (OMP_CRITICAL, "omp_critical", tcc_statement, 2)
+
+/* OpenMP - #pragma omp atomic
+   Operand 0: The address at which the atomic operation is to be performed.
+       This address should be stabilized with save_expr.
+   Operand 1: The expression to evaluate.  When the old value of the object
+       at the address is used in the expression, it should appear as if
+       build_fold_indirect_ref of the address.  */
+DEFTREECODE (OMP_ATOMIC, "omp_atomic", tcc_statement, 2)
+
+/* OpenMP clauses.  */
+DEFTREECODE (OMP_CLAUSE, "omp_clause", tcc_exceptional, 0)
+
+/* Reduction operations. 
+   Operations that take a vector of elements and "reduce" it to a scalar
+   result (e.g. summing the elements of the vector, finding the minimum over
+   the vector elements, etc).
+   Operand 0 is a vector; the first element in the vector has the result.
+   Operand 1 is a vector.  */ 
+DEFTREECODE (REDUC_MAX_EXPR, "reduc_max_expr", tcc_unary, 1)
+DEFTREECODE (REDUC_MIN_EXPR, "reduc_min_expr", tcc_unary, 1)
+DEFTREECODE (REDUC_PLUS_EXPR, "reduc_plus_expr", tcc_unary, 1)
+
+/* Widening dot-product.
+   The first two arguments are of type t1.
+   The third argument and the result are of type t2, such that t2 is at least
+   twice the size of t1. DOT_PROD_EXPR(arg1,arg2,arg3) is equivalent to:
+       tmp = WIDEN_MULT_EXPR(arg1, arg2);
+       arg3 = PLUS_EXPR (tmp, arg3);
+   or: 
+       tmp = WIDEN_MULT_EXPR(arg1, arg2);
+        arg3 = WIDEN_SUM_EXPR (tmp, arg3);              */
+DEFTREECODE (DOT_PROD_EXPR, "dot_prod_expr", tcc_expression, 3)
+
+/* Widening summation.
+   The first argument is of type t1.
+   The second argument is of type t2, such that t2 is at least twice
+   the size of t1. The type of the entire expression is also t2.
+   WIDEN_SUM_EXPR is equivalent to first widening (promoting)
+   the first argument from type t1 to type t2, and then summing it
+   with the second argument.  */
+DEFTREECODE (WIDEN_SUM_EXPR, "widen_sum_expr", tcc_binary, 2)
+   
+/* Widening multiplication.
+   The two arguments are of type t1.
+   The result is of type t2, such that t2 is at least twice
+   the size of t1. WIDEN_MULT_EXPR is equivalent to first widening (promoting)
+   the arguments from type t1 to type t2, and then multiplying them.  */
+DEFTREECODE (WIDEN_MULT_EXPR, "widen_mult_expr", tcc_binary, 2)
+
+/* Whole vector left/right shift in bits.
+   Operand 0 is a vector to be shifted.
+   Operand 1 is an integer shift amount in bits.  */
+DEFTREECODE (VEC_LSHIFT_EXPR, "vec_lshift_expr", tcc_binary, 2)
+DEFTREECODE (VEC_RSHIFT_EXPR, "vec_rshift_expr", tcc_binary, 2)
+\f
+/* Widening vector multiplication.
+   The two operands are vectors with N elements of size S. Multiplying the
+   elements of the two vectors will result in N products of size 2*S.
+   VEC_WIDEN_MULT_HI_EXPR computes the N/2 high products.
+   VEC_WIDEN_MULT_LO_EXPR computes the N/2 low products.  */
+DEFTREECODE (VEC_WIDEN_MULT_HI_EXPR, "widen_mult_hi_expr", tcc_binary, 2)
+DEFTREECODE (VEC_WIDEN_MULT_LO_EXPR, "widen_mult_lo_expr", tcc_binary, 2)
+
+/* Unpack (extract and promote/widen) the high/low elements of the input
+   vector into the output vector.  The input vector has twice as many
+   elements as the output vector, that are half the size of the elements
+   of the output vector.  This is used to support type promotion. */
+DEFTREECODE (VEC_UNPACK_HI_EXPR, "vec_unpack_hi_expr", tcc_unary, 1)
+DEFTREECODE (VEC_UNPACK_LO_EXPR, "vec_unpack_lo_expr", tcc_unary, 1)
+
+/* Unpack (extract) the high/low elements of the input vector, convert
+   fixed point values to floating point and widen elements into the
+   output vector.  The input vector has twice as many elements as the output
+   vector, that are half the size of the elements of the output vector.  */
+DEFTREECODE (VEC_UNPACK_FLOAT_HI_EXPR, "vec_unpack_float_hi_expr", tcc_unary, 1)
+DEFTREECODE (VEC_UNPACK_FLOAT_LO_EXPR, "vec_unpack_float_lo_expr", tcc_unary, 1)
+
+/* Pack (demote/narrow and merge) the elements of the two input vectors
+   into the output vector using truncation/saturation.
+   The elements of the input vectors are twice the size of the elements of the
+   output vector.  This is used to support type demotion.  */
+DEFTREECODE (VEC_PACK_TRUNC_EXPR, "vec_pack_trunc_expr", tcc_binary, 2)
+DEFTREECODE (VEC_PACK_SAT_EXPR, "vec_pack_sat_expr", tcc_binary, 2)
+
+/* Convert floating point values of the two input vectors to integer
+   and pack (narrow and merge) the elements into the output vector. The
+   elements of the input vector are twice the size of the elements of
+   the output vector.  */
+DEFTREECODE (VEC_PACK_FIX_TRUNC_EXPR, "vec_pack_fix_trunc_expr", tcc_binary, 2)
+
+/* Extract even/odd fields from vectors.  */
+DEFTREECODE (VEC_EXTRACT_EVEN_EXPR, "vec_extracteven_expr", tcc_binary, 2)
+DEFTREECODE (VEC_EXTRACT_ODD_EXPR, "vec_extractodd_expr", tcc_binary, 2)
+
+/* Merge input vectors interleaving their fields.  */
+DEFTREECODE (VEC_INTERLEAVE_HIGH_EXPR, "vec_interleavehigh_expr", tcc_binary, 2)
+DEFTREECODE (VEC_INTERLEAVE_LOW_EXPR, "vec_interleavelow_expr", tcc_binary, 2)
+
+/* PREDICT_EXPR.  Specify hint for branch prediction.  The
+   PREDICT_EXPR_PREDICTOR specify predictor and PREDICT_EXPR_OUTCOME the
+   outcome (0 for not taken and 1 for taken).  Once the profile is guessed
+   all conditional branches leading to execution paths executing the
+   PREDICT_EXPR will get predicted by the specified predictor.  */
+DEFTREECODE (PREDICT_EXPR, "predict_expr", tcc_expression, 1)
+
+/* OPTIMIZATION_NODE.  Node to store the optimization options.  */
+DEFTREECODE (OPTIMIZATION_NODE, "optimization_node", tcc_exceptional, 0)
+
+/* TARGET_OPTION_NODE.  Node to store the target specific options.  */
+DEFTREECODE (TARGET_OPTION_NODE, "target_option_node", tcc_exceptional, 0)
+
+/*
+Local variables:
+mode:c
+End:
+*/
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree.h
new file mode 100644 (file)
index 0000000..9a4b073
--- /dev/null
@@ -0,0 +1,5381 @@
+/* Front-end tree definitions for GNU compiler.
+   Copyright (C) 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+   Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_TREE_H
+#define GCC_TREE_H
+
+#include "hashtab.h"
+#include "machmode.h"
+#include "input.h"
+#include "statistics.h"
+#include "vec.h"
+#include "double-int.h"
+#include "alias.h"
+#include "options.h"
+
+/* Codes of tree nodes */
+
+#define DEFTREECODE(SYM, STRING, TYPE, NARGS)   SYM,
+#define END_OF_BASE_TREE_CODES LAST_AND_UNUSED_TREE_CODE,
+
+enum tree_code {
+#include "all-tree.def"
+MAX_TREE_CODES
+};
+
+#undef DEFTREECODE
+#undef END_OF_BASE_TREE_CODES
+
+extern unsigned char tree_contains_struct[MAX_TREE_CODES][64];
+#define CODE_CONTAINS_STRUCT(CODE, STRUCT) (tree_contains_struct[(CODE)][(STRUCT)])
+
+/* Number of language-independent tree codes.  */
+#define NUM_TREE_CODES ((int) LAST_AND_UNUSED_TREE_CODE)
+
+/* Tree code classes.  */
+
+/* Each tree_code has an associated code class represented by a
+   TREE_CODE_CLASS.  */
+
+enum tree_code_class {
+  tcc_exceptional, /* An exceptional code (fits no category).  */
+  tcc_constant,    /* A constant.  */
+  /* Order of tcc_type and tcc_declaration is important.  */
+  tcc_type,        /* A type object code.  */
+  tcc_declaration, /* A declaration (also serving as variable refs).  */
+  tcc_reference,   /* A reference to storage.  */
+  tcc_comparison,  /* A comparison expression.  */
+  tcc_unary,       /* A unary arithmetic expression.  */
+  tcc_binary,      /* A binary arithmetic expression.  */
+  tcc_statement,   /* A statement expression, which have side effects
+                     but usually no interesting value.  */
+  tcc_vl_exp,      /* A function call or other expression with a
+                     variable-length operand vector.  */
+  tcc_expression   /* Any other expression.  */
+};
+
+/* Each tree code class has an associated string representation.
+   These must correspond to the tree_code_class entries.  */
+
+extern const char *const tree_code_class_strings[];
+
+/* Returns the string representing CLASS.  */
+
+#define TREE_CODE_CLASS_STRING(CLASS)\
+        tree_code_class_strings[(int) (CLASS)]
+
+extern const enum tree_code_class tree_code_type[];
+#define TREE_CODE_CLASS(CODE)  tree_code_type[(int) (CODE)]
+
+/* Nonzero if CODE represents an exceptional code.  */
+
+#define EXCEPTIONAL_CLASS_P(CODE)\
+       (TREE_CODE_CLASS (TREE_CODE (CODE)) == tcc_exceptional)
+
+/* Nonzero if CODE represents a constant.  */
+
+#define CONSTANT_CLASS_P(CODE)\
+       (TREE_CODE_CLASS (TREE_CODE (CODE)) == tcc_constant)
+
+/* Nonzero if CODE represents a type.  */
+
+#define TYPE_P(CODE)\
+       (TREE_CODE_CLASS (TREE_CODE (CODE)) == tcc_type)
+
+/* Nonzero if CODE represents a declaration.  */
+
+#define DECL_P(CODE)\
+        (TREE_CODE_CLASS (TREE_CODE (CODE)) == tcc_declaration)
+
+/* Nonzero if CODE represents a memory tag.  */
+
+#define MTAG_P(CODE) \
+  (TREE_CODE (CODE) == NAME_MEMORY_TAG         \
+   || TREE_CODE (CODE) == SYMBOL_MEMORY_TAG    \
+   || TREE_CODE (CODE) == MEMORY_PARTITION_TAG)
+
+
+/* Nonzero if DECL represents a VAR_DECL or FUNCTION_DECL.  */
+
+#define VAR_OR_FUNCTION_DECL_P(DECL)\
+  (TREE_CODE (DECL) == VAR_DECL || TREE_CODE (DECL) == FUNCTION_DECL)
+
+/* Nonzero if CODE represents a INDIRECT_REF.  Keep these checks in
+   ascending code order.  */
+
+#define INDIRECT_REF_P(CODE)\
+  (TREE_CODE (CODE) == INDIRECT_REF \
+   || TREE_CODE (CODE) == ALIGN_INDIRECT_REF \
+   || TREE_CODE (CODE) == MISALIGNED_INDIRECT_REF)
+
+/* Nonzero if CODE represents a reference.  */
+
+#define REFERENCE_CLASS_P(CODE)\
+       (TREE_CODE_CLASS (TREE_CODE (CODE)) == tcc_reference)
+
+/* Nonzero if CODE represents a comparison.  */
+
+#define COMPARISON_CLASS_P(CODE)\
+       (TREE_CODE_CLASS (TREE_CODE (CODE)) == tcc_comparison)
+
+/* Nonzero if CODE represents a unary arithmetic expression.  */
+
+#define UNARY_CLASS_P(CODE)\
+       (TREE_CODE_CLASS (TREE_CODE (CODE)) == tcc_unary)
+
+/* Nonzero if CODE represents a binary arithmetic expression.  */
+
+#define BINARY_CLASS_P(CODE)\
+       (TREE_CODE_CLASS (TREE_CODE (CODE)) == tcc_binary)
+
+/* Nonzero if CODE represents a statement expression.  */
+
+#define STATEMENT_CLASS_P(CODE)\
+       (TREE_CODE_CLASS (TREE_CODE (CODE)) == tcc_statement)
+
+/* Nonzero if CODE represents a function call-like expression with a
+   variable-length operand vector.  */
+
+#define VL_EXP_CLASS_P(CODE)\
+       (TREE_CODE_CLASS (TREE_CODE (CODE)) == tcc_vl_exp)
+
+/* Nonzero if CODE represents any other expression.  */
+
+#define EXPRESSION_CLASS_P(CODE)\
+       (TREE_CODE_CLASS (TREE_CODE (CODE)) == tcc_expression)
+
+/* Returns nonzero iff CODE represents a type or declaration.  */
+
+#define IS_TYPE_OR_DECL_P(CODE)\
+       (TYPE_P (CODE) || DECL_P (CODE))
+
+/* Returns nonzero iff CLASS is the tree-code class of an
+   expression.  */
+
+#define IS_EXPR_CODE_CLASS(CLASS)\
+       ((CLASS) >= tcc_reference && (CLASS) <= tcc_expression)
+
+/* Returns nonzero iff NODE is an expression of some kind.  */
+
+#define EXPR_P(NODE) IS_EXPR_CODE_CLASS (TREE_CODE_CLASS (TREE_CODE (NODE)))
+
+/* Number of argument-words in each kind of tree-node.  */
+
+extern const unsigned char tree_code_length[];
+#define TREE_CODE_LENGTH(CODE) tree_code_length[(int) (CODE)]
+
+/* Names of tree components.  */
+
+extern const char *const tree_code_name[];
+
+/* A vectors of trees.  */
+DEF_VEC_P(tree);
+DEF_VEC_ALLOC_P(tree,gc);
+DEF_VEC_ALLOC_P(tree,heap);
+
+\f
+/* Classify which part of the compiler has defined a given builtin function.
+   Note that we assume below that this is no more than two bits.  */
+enum built_in_class
+{
+  NOT_BUILT_IN = 0,
+  BUILT_IN_FRONTEND,
+  BUILT_IN_MD,
+  BUILT_IN_NORMAL
+};
+
+/* Names for the above.  */
+extern const char *const built_in_class_names[4];
+
+/* Codes that identify the various built in functions
+   so that expand_call can identify them quickly.  */
+
+#define DEF_BUILTIN(ENUM, N, C, T, LT, B, F, NA, AT, IM, COND) ENUM,
+enum built_in_function
+{
+#include "builtins.def"
+
+  /* Complex division routines in libgcc.  These are done via builtins
+     because emit_library_call_value can't handle complex values.  */
+  BUILT_IN_COMPLEX_MUL_MIN,
+  BUILT_IN_COMPLEX_MUL_MAX
+    = BUILT_IN_COMPLEX_MUL_MIN
+      + MAX_MODE_COMPLEX_FLOAT
+      - MIN_MODE_COMPLEX_FLOAT,
+
+  BUILT_IN_COMPLEX_DIV_MIN,
+  BUILT_IN_COMPLEX_DIV_MAX
+    = BUILT_IN_COMPLEX_DIV_MIN
+      + MAX_MODE_COMPLEX_FLOAT
+      - MIN_MODE_COMPLEX_FLOAT,
+
+  /* Upper bound on non-language-specific builtins.  */
+  END_BUILTINS
+};
+#undef DEF_BUILTIN
+
+/* Names for the above.  */
+extern const char * built_in_names[(int) END_BUILTINS];
+
+/* Helper macros for math builtins.  */
+
+#define BUILTIN_EXP10_P(FN) \
+ ((FN) == BUILT_IN_EXP10 || (FN) == BUILT_IN_EXP10F || (FN) == BUILT_IN_EXP10L \
+  || (FN) == BUILT_IN_POW10 || (FN) == BUILT_IN_POW10F || (FN) == BUILT_IN_POW10L)
+
+#define BUILTIN_EXPONENT_P(FN) (BUILTIN_EXP10_P (FN) \
+  || (FN) == BUILT_IN_EXP || (FN) == BUILT_IN_EXPF || (FN) == BUILT_IN_EXPL \
+  || (FN) == BUILT_IN_EXP2 || (FN) == BUILT_IN_EXP2F || (FN) == BUILT_IN_EXP2L)
+
+#define BUILTIN_SQRT_P(FN) \
+ ((FN) == BUILT_IN_SQRT || (FN) == BUILT_IN_SQRTF || (FN) == BUILT_IN_SQRTL)
+
+#define BUILTIN_CBRT_P(FN) \
+ ((FN) == BUILT_IN_CBRT || (FN) == BUILT_IN_CBRTF || (FN) == BUILT_IN_CBRTL)
+
+#define BUILTIN_ROOT_P(FN) (BUILTIN_SQRT_P (FN) || BUILTIN_CBRT_P (FN))
+
+#define CASE_FLT_FN(FN) case FN: case FN##F: case FN##L
+#define CASE_FLT_FN_REENT(FN) case FN##_R: case FN##F_R: case FN##L_R
+#define CASE_INT_FN(FN) case FN: case FN##L: case FN##LL
+
+/* An array of _DECL trees for the above.  */
+extern GTY(()) tree built_in_decls[(int) END_BUILTINS];
+extern GTY(()) tree implicit_built_in_decls[(int) END_BUILTINS];
+\f
+/* In an OMP_CLAUSE node.  */
+
+/* Number of operands and names for each clause.  */
+extern unsigned const char omp_clause_num_ops[];
+extern const char * const omp_clause_code_name[];
+
+/* Clause codes.  Do not reorder, as this is used to index into the tables
+   omp_clause_num_ops and omp_clause_code_name.  */
+enum omp_clause_code
+{
+  /* Clause zero is special-cased inside the parser
+     (c_parser_omp_variable_list).  */
+  OMP_CLAUSE_ERROR = 0,
+
+  /* OpenMP clause: private (variable_list).  */
+  OMP_CLAUSE_PRIVATE,
+
+  /* OpenMP clause: shared (variable_list).  */
+  OMP_CLAUSE_SHARED,
+
+  /* OpenMP clause: firstprivate (variable_list).  */
+  OMP_CLAUSE_FIRSTPRIVATE,
+
+  /* OpenMP clause: lastprivate (variable_list).  */
+  OMP_CLAUSE_LASTPRIVATE,
+
+  /* OpenMP clause: reduction (operator:variable_list).
+     OMP_CLAUSE_REDUCTION_CODE: The tree_code of the operator.
+     Operand 1: OMP_CLAUSE_REDUCTION_INIT: Stmt-list to initialize the var.
+     Operand 2: OMP_CLAUSE_REDUCTION_MERGE: Stmt-list to merge private var
+                into the shared one.
+     Operand 3: OMP_CLAUSE_REDUCTION_PLACEHOLDER: A dummy VAR_DECL
+                placeholder used in OMP_CLAUSE_REDUCTION_{INIT,MERGE}.  */
+  OMP_CLAUSE_REDUCTION,
+
+  /* OpenMP clause: copyin (variable_list).  */
+  OMP_CLAUSE_COPYIN,
+
+  /* OpenMP clause: copyprivate (variable_list).  */
+  OMP_CLAUSE_COPYPRIVATE,
+
+  /* OpenMP clause: if (scalar-expression).  */
+  OMP_CLAUSE_IF,
+
+  /* OpenMP clause: num_threads (integer-expression).  */
+  OMP_CLAUSE_NUM_THREADS,
+
+  /* OpenMP clause: schedule.  */
+  OMP_CLAUSE_SCHEDULE,
+
+  /* OpenMP clause: nowait.  */
+  OMP_CLAUSE_NOWAIT,
+
+  /* OpenMP clause: ordered.  */
+  OMP_CLAUSE_ORDERED,
+
+  /* OpenMP clause: default.  */
+  OMP_CLAUSE_DEFAULT,
+
+  /* OpenMP clause: collapse (constant-integer-expression).  */
+  OMP_CLAUSE_COLLAPSE,
+
+  /* OpenMP clause: untied.  */
+  OMP_CLAUSE_UNTIED
+};
+\f
+/* The definition of tree nodes fills the next several pages.  */
+
+/* A tree node can represent a data type, a variable, an expression
+   or a statement.  Each node has a TREE_CODE which says what kind of
+   thing it represents.  Some common codes are:
+   INTEGER_TYPE -- represents a type of integers.
+   ARRAY_TYPE -- represents a type of pointer.
+   VAR_DECL -- represents a declared variable.
+   INTEGER_CST -- represents a constant integer value.
+   PLUS_EXPR -- represents a sum (an expression).
+
+   As for the contents of a tree node: there are some fields
+   that all nodes share.  Each TREE_CODE has various special-purpose
+   fields as well.  The fields of a node are never accessed directly,
+   always through accessor macros.  */
+
+/* Every kind of tree node starts with this structure,
+   so all nodes have these fields.
+
+   See the accessor macros, defined below, for documentation of the
+   fields.  */
+union tree_ann_d;
+
+struct tree_base GTY(())
+{
+  ENUM_BITFIELD(tree_code) code : 16;
+
+  unsigned side_effects_flag : 1;
+  unsigned constant_flag : 1;
+  unsigned addressable_flag : 1;
+  unsigned volatile_flag : 1;
+  unsigned readonly_flag : 1;
+  unsigned unsigned_flag : 1;
+  unsigned asm_written_flag: 1;
+  unsigned nowarning_flag : 1;
+
+  unsigned used_flag : 1;
+  unsigned nothrow_flag : 1;
+  unsigned static_flag : 1;
+  unsigned public_flag : 1;
+  unsigned private_flag : 1;
+  unsigned protected_flag : 1;
+  unsigned deprecated_flag : 1;
+  unsigned saturating_flag : 1;
+  unsigned default_def_flag : 1;
+
+  unsigned lang_flag_0 : 1;
+  unsigned lang_flag_1 : 1;
+  unsigned lang_flag_2 : 1;
+  unsigned lang_flag_3 : 1;
+  unsigned lang_flag_4 : 1;
+  unsigned lang_flag_5 : 1;
+  unsigned lang_flag_6 : 1;
+  unsigned visited : 1;
+
+  unsigned spare : 23;
+
+  union tree_ann_d *ann;
+};
+
+struct tree_common GTY(())
+{
+  struct tree_base base;
+  tree chain;
+  tree type;
+};
+
+/* The following table lists the uses of each of the above flags and
+   for which types of nodes they are defined.
+
+   addressable_flag:
+
+       TREE_ADDRESSABLE in
+           VAR_DECL, FUNCTION_DECL, FIELD_DECL, LABEL_DECL
+           all types
+           CONSTRUCTOR, IDENTIFIER_NODE
+           STMT_EXPR, it means we want the result of the enclosed expression
+
+       CALL_EXPR_TAILCALL in
+           CALL_EXPR
+
+       CASE_LOW_SEEN in
+           CASE_LABEL_EXPR
+
+   static_flag:
+
+       TREE_STATIC in
+           VAR_DECL, FUNCTION_DECL
+           CONSTRUCTOR
+
+       TREE_NO_TRAMPOLINE in
+           ADDR_EXPR
+
+       BINFO_VIRTUAL_P in
+           TREE_BINFO
+
+       TREE_SYMBOL_REFERENCED in
+           IDENTIFIER_NODE
+
+       CLEANUP_EH_ONLY in
+           TARGET_EXPR, WITH_CLEANUP_EXPR
+
+       TRY_CATCH_IS_CLEANUP in
+           TRY_CATCH_EXPR
+
+       ASM_INPUT_P in
+           ASM_EXPR
+
+       EH_FILTER_MUST_NOT_THROW in
+           EH_FILTER_EXPR
+
+       TYPE_REF_CAN_ALIAS_ALL in
+           POINTER_TYPE, REFERENCE_TYPE
+
+       MOVE_NONTEMPORAL in
+           MODIFY_EXPR
+
+       CASE_HIGH_SEEN in
+           CASE_LABEL_EXPR
+
+       CALL_CANNOT_INLINE_P in
+           CALL_EXPR
+
+   public_flag:
+
+       TREE_OVERFLOW in
+           INTEGER_CST, REAL_CST, COMPLEX_CST, VECTOR_CST
+
+       TREE_PUBLIC in
+           VAR_DECL, FUNCTION_DECL
+           IDENTIFIER_NODE
+
+       ASM_VOLATILE_P in
+           ASM_EXPR
+
+       CALL_EXPR_VA_ARG_PACK in
+           CALL_EXPR
+
+       TYPE_CACHED_VALUES_P in
+           all types
+
+       SAVE_EXPR_RESOLVED_P in
+           SAVE_EXPR
+
+       OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE in
+           OMP_CLAUSE_LASTPRIVATE
+
+       OMP_CLAUSE_PRIVATE_DEBUG in
+           OMP_CLAUSE_PRIVATE
+
+   private_flag:
+
+       TREE_PRIVATE in
+           all decls
+
+       CALL_EXPR_RETURN_SLOT_OPT in
+           CALL_EXPR
+
+       DECL_BY_REFERENCE in
+           PARM_DECL, RESULT_DECL
+
+       OMP_SECTION_LAST in
+           OMP_SECTION
+
+       OMP_PARALLEL_COMBINED in
+           OMP_PARALLEL
+       OMP_CLAUSE_PRIVATE_OUTER_REF in
+          OMP_CLAUSE_PRIVATE
+
+   protected_flag:
+
+       TREE_PROTECTED in
+           BLOCK
+           all decls
+
+       CALL_FROM_THUNK_P in
+           CALL_EXPR
+
+   side_effects_flag:
+
+       TREE_SIDE_EFFECTS in
+           all expressions
+           all decls
+           all constants
+
+       FORCED_LABEL in
+           LABEL_DECL
+
+   volatile_flag:
+
+       TREE_THIS_VOLATILE in
+           all expressions
+           all decls
+
+       TYPE_VOLATILE in
+           all types
+
+   readonly_flag:
+
+       TREE_READONLY in
+           all expressions
+           all decls
+
+       TYPE_READONLY in
+           all types
+
+   constant_flag:
+
+       TREE_CONSTANT in
+           all expressions
+           all decls
+           all constants
+
+       TYPE_SIZES_GIMPLIFIED in
+           all types
+
+   unsigned_flag:
+
+       TYPE_UNSIGNED in
+           all types
+
+       DECL_UNSIGNED in
+           all decls
+
+       REGISTER_DEFS_IN_THIS_STMT in
+           all expressions (tree-into-ssa.c)
+
+   asm_written_flag:
+
+       TREE_ASM_WRITTEN in
+           VAR_DECL, FUNCTION_DECL
+           RECORD_TYPE, UNION_TYPE, QUAL_UNION_TYPE
+           BLOCK, SSA_NAME, STRING_CST
+
+       NECESSARY in
+           all expressions (tree-ssa-dce.c, tree-ssa-pre.c)
+
+   used_flag:
+
+       TREE_USED in
+           all expressions
+           all decls
+           IDENTIFIER_NODE
+
+   nothrow_flag:
+
+       TREE_NOTHROW in
+           CALL_EXPR
+           FUNCTION_DECL
+
+       TYPE_ALIGN_OK in
+           all types
+
+       TREE_THIS_NOTRAP in
+          (ALIGN/MISALIGNED_)INDIRECT_REF, ARRAY_REF, ARRAY_RANGE_REF
+
+   deprecated_flag:
+
+       TREE_DEPRECATED in
+           all decls
+
+       IDENTIFIER_TRANSPARENT_ALIAS in
+           IDENTIFIER_NODE
+
+       STMT_IN_SSA_EDGE_WORKLIST in
+           all expressions (tree-ssa-propagate.c)
+
+   visited:
+
+       TREE_VISITED in
+           all trees (used liberally by many passes)
+
+   saturating_flag:
+
+       TYPE_SATURATING in
+           all types
+
+   nowarning_flag:
+
+       TREE_NO_WARNING in
+           all expressions
+           all decls
+
+   default_def_flag:
+
+       SSA_NAME_IS_DEFAULT_DEF in
+           SSA_NAME
+*/
+
+#undef DEFTREESTRUCT
+#define DEFTREESTRUCT(ENUM, NAME) ENUM,
+enum tree_node_structure_enum {
+#include "treestruct.def"
+  LAST_TS_ENUM
+};
+#undef DEFTREESTRUCT
+
+/* Define accessors for the fields that all tree nodes have
+   (though some fields are not used for all kinds of nodes).  */
+
+/* The tree-code says what kind of node it is.
+   Codes are defined in tree.def.  */
+#define TREE_CODE(NODE) ((enum tree_code) (NODE)->base.code)
+#define TREE_SET_CODE(NODE, VALUE) ((NODE)->base.code = (VALUE))
+
+/* When checking is enabled, errors will be generated if a tree node
+   is accessed incorrectly. The macros die with a fatal error.  */
+#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+
+#define TREE_CHECK(T, CODE) __extension__                              \
+({  __typeof (T) const __t = (T);                                      \
+    if (TREE_CODE (__t) != (CODE))                                     \
+      tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__,        \
+                        (CODE), 0);                                    \
+    __t; })
+
+#define TREE_NOT_CHECK(T, CODE) __extension__                          \
+({  __typeof (T) const __t = (T);                                      \
+    if (TREE_CODE (__t) == (CODE))                                     \
+      tree_not_check_failed (__t, __FILE__, __LINE__, __FUNCTION__,    \
+                            (CODE), 0);                                \
+    __t; })
+
+#define TREE_CHECK2(T, CODE1, CODE2) __extension__                     \
+({  __typeof (T) const __t = (T);                                      \
+    if (TREE_CODE (__t) != (CODE1)                                     \
+       && TREE_CODE (__t) != (CODE2))                                  \
+      tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__,                \
+                        (CODE1), (CODE2), 0);                          \
+    __t; })
+
+#define TREE_NOT_CHECK2(T, CODE1, CODE2) __extension__                 \
+({  __typeof (T) const __t = (T);                                      \
+    if (TREE_CODE (__t) == (CODE1)                                     \
+       || TREE_CODE (__t) == (CODE2))                                  \
+      tree_not_check_failed (__t, __FILE__, __LINE__, __FUNCTION__,    \
+                            (CODE1), (CODE2), 0);                      \
+    __t; })
+
+#define TREE_CHECK3(T, CODE1, CODE2, CODE3) __extension__              \
+({  __typeof (T) const __t = (T);                                      \
+    if (TREE_CODE (__t) != (CODE1)                                     \
+       && TREE_CODE (__t) != (CODE2)                                   \
+       && TREE_CODE (__t) != (CODE3))                                  \
+      tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__,                \
+                            (CODE1), (CODE2), (CODE3), 0);             \
+    __t; })
+
+#define TREE_NOT_CHECK3(T, CODE1, CODE2, CODE3) __extension__          \
+({  __typeof (T) const __t = (T);                                      \
+    if (TREE_CODE (__t) == (CODE1)                                     \
+       || TREE_CODE (__t) == (CODE2)                                   \
+       || TREE_CODE (__t) == (CODE3))                                  \
+      tree_not_check_failed (__t, __FILE__, __LINE__, __FUNCTION__,    \
+                            (CODE1), (CODE2), (CODE3), 0);             \
+    __t; })
+
+#define TREE_CHECK4(T, CODE1, CODE2, CODE3, CODE4) __extension__       \
+({  __typeof (T) const __t = (T);                                      \
+    if (TREE_CODE (__t) != (CODE1)                                     \
+       && TREE_CODE (__t) != (CODE2)                                   \
+       && TREE_CODE (__t) != (CODE3)                                   \
+       && TREE_CODE (__t) != (CODE4))                                  \
+      tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__,                \
+                            (CODE1), (CODE2), (CODE3), (CODE4), 0);    \
+    __t; })
+
+#define NON_TREE_CHECK4(T, CODE1, CODE2, CODE3, CODE4) __extension__   \
+({  __typeof (T) const __t = (T);                                      \
+    if (TREE_CODE (__t) == (CODE1)                                     \
+       || TREE_CODE (__t) == (CODE2)                                   \
+       || TREE_CODE (__t) == (CODE3)                                   \
+       || TREE_CODE (__t) == (CODE4))                                  \
+      tree_not_check_failed (__t, __FILE__, __LINE__, __FUNCTION__,    \
+                            (CODE1), (CODE2), (CODE3), (CODE4), 0);    \
+    __t; })
+
+#define TREE_CHECK5(T, CODE1, CODE2, CODE3, CODE4, CODE5) __extension__        \
+({  __typeof (T) const __t = (T);                                      \
+    if (TREE_CODE (__t) != (CODE1)                                     \
+       && TREE_CODE (__t) != (CODE2)                                   \
+       && TREE_CODE (__t) != (CODE3)                                   \
+       && TREE_CODE (__t) != (CODE4)                                   \
+       && TREE_CODE (__t) != (CODE5))                                  \
+      tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__,                \
+                            (CODE1), (CODE2), (CODE3), (CODE4), (CODE5), 0);\
+    __t; })
+
+#define TREE_NOT_CHECK5(T, CODE1, CODE2, CODE3, CODE4, CODE5) __extension__ \
+({  __typeof (T) const __t = (T);                                      \
+    if (TREE_CODE (__t) == (CODE1)                                     \
+       || TREE_CODE (__t) == (CODE2)                                   \
+       || TREE_CODE (__t) == (CODE3)                                   \
+       || TREE_CODE (__t) == (CODE4)                                   \
+       || TREE_CODE (__t) == (CODE5))                                  \
+      tree_not_check_failed (__t, __FILE__, __LINE__, __FUNCTION__,    \
+                            (CODE1), (CODE2), (CODE3), (CODE4), (CODE5), 0);\
+    __t; })
+
+#define CONTAINS_STRUCT_CHECK(T, STRUCT) __extension__                 \
+({  __typeof (T) const __t = (T);                                      \
+  if (tree_contains_struct[TREE_CODE(__t)][(STRUCT)] != 1)             \
+      tree_contains_struct_check_failed (__t, (STRUCT), __FILE__, __LINE__,    \
+                              __FUNCTION__);                           \
+    __t; })
+
+#define TREE_CLASS_CHECK(T, CLASS) __extension__                       \
+({  __typeof (T) const __t = (T);                                      \
+    if (TREE_CODE_CLASS (TREE_CODE(__t)) != (CLASS))                   \
+      tree_class_check_failed (__t, (CLASS), __FILE__, __LINE__,       \
+                              __FUNCTION__);                           \
+    __t; })
+
+#define TREE_RANGE_CHECK(T, CODE1, CODE2) __extension__                        \
+({  __typeof (T) const __t = (T);                                      \
+    if (TREE_CODE (__t) < (CODE1) || TREE_CODE (__t) > (CODE2))                \
+      tree_range_check_failed (__t, __FILE__, __LINE__, __FUNCTION__,  \
+                              (CODE1), (CODE2));                       \
+    __t; })
+
+#define OMP_CLAUSE_SUBCODE_CHECK(T, CODE) __extension__                        \
+({  __typeof (T) const __t = (T);                                      \
+    if (TREE_CODE (__t) != OMP_CLAUSE)                                 \
+      tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__,        \
+                        OMP_CLAUSE, 0);                                \
+    if (__t->omp_clause.code != (CODE))                                        \
+      omp_clause_check_failed (__t, __FILE__, __LINE__, __FUNCTION__,  \
+                              (CODE));                                 \
+    __t; })
+
+#define OMP_CLAUSE_RANGE_CHECK(T, CODE1, CODE2) __extension__          \
+({  __typeof (T) const __t = (T);                                      \
+    if (TREE_CODE (__t) != OMP_CLAUSE)                                 \
+      tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__,        \
+                        OMP_CLAUSE, 0);                                \
+    if ((int) __t->omp_clause.code < (int) (CODE1)                     \
+        || (int) __t->omp_clause.code > (int) (CODE2))                 \
+      omp_clause_range_check_failed (__t, __FILE__, __LINE__,          \
+                                    __FUNCTION__, (CODE1), (CODE2));   \
+    __t; })
+
+/* These checks have to be special cased.  */
+#define EXPR_CHECK(T) __extension__                                    \
+({  __typeof (T) const __t = (T);                                      \
+    char const __c = TREE_CODE_CLASS (TREE_CODE (__t));                        \
+    if (!IS_EXPR_CODE_CLASS (__c))                                     \
+      tree_class_check_failed (__t, tcc_expression, __FILE__, __LINE__,        \
+                              __FUNCTION__);                           \
+    __t; })
+
+/* These checks have to be special cased.  */
+#define NON_TYPE_CHECK(T) __extension__                                        \
+({  __typeof (T) const __t = (T);                                      \
+    if (TYPE_P (__t))                                                  \
+      tree_not_class_check_failed (__t, tcc_type, __FILE__, __LINE__,  \
+                                  __FUNCTION__);                       \
+    __t; })
+
+#define TREE_VEC_ELT_CHECK(T, I) __extension__                         \
+(*({__typeof (T) const __t = (T);                                      \
+    const int __i = (I);                                               \
+    if (TREE_CODE (__t) != TREE_VEC)                                   \
+      tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__,                \
+                        TREE_VEC, 0);                                  \
+    if (__i < 0 || __i >= __t->vec.length)                             \
+      tree_vec_elt_check_failed (__i, __t->vec.length,                 \
+                                __FILE__, __LINE__, __FUNCTION__);     \
+    &__t->vec.a[__i]; }))
+
+#define OMP_CLAUSE_ELT_CHECK(T, I) __extension__                       \
+(*({__typeof (T) const __t = (T);                                      \
+    const int __i = (I);                                               \
+    if (TREE_CODE (__t) != OMP_CLAUSE)                                 \
+      tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__,        \
+                        OMP_CLAUSE, 0);                                \
+    if (__i < 0 || __i >= omp_clause_num_ops [__t->omp_clause.code])   \
+      omp_clause_operand_check_failed (__i, __t, __FILE__, __LINE__,   \
+                                      __FUNCTION__);                   \
+    &__t->omp_clause.ops[__i]; }))
+
+/* Special checks for TREE_OPERANDs.  */
+#define TREE_OPERAND_CHECK(T, I) __extension__                         \
+(*({__typeof (T) const __t = EXPR_CHECK (T);                           \
+    const int __i = (I);                                               \
+    if (__i < 0 || __i >= TREE_OPERAND_LENGTH (__t))                   \
+      tree_operand_check_failed (__i, __t,                             \
+                                __FILE__, __LINE__, __FUNCTION__);     \
+    &__t->exp.operands[__i]; }))
+
+#define TREE_OPERAND_CHECK_CODE(T, CODE, I) __extension__              \
+(*({__typeof (T) const __t = (T);                                      \
+    const int __i = (I);                                               \
+    if (TREE_CODE (__t) != CODE)                                       \
+      tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, (CODE), 0);\
+    if (__i < 0 || __i >= TREE_OPERAND_LENGTH (__t))                   \
+      tree_operand_check_failed (__i, __t,                             \
+                                __FILE__, __LINE__, __FUNCTION__);     \
+    &__t->exp.operands[__i]; }))
+
+#define TREE_RTL_OPERAND_CHECK(T, CODE, I) __extension__               \
+(*(rtx *)                                                              \
+ ({__typeof (T) const __t = (T);                                       \
+    const int __i = (I);                                               \
+    if (TREE_CODE (__t) != (CODE))                                     \
+      tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, (CODE), 0); \
+    if (__i < 0 || __i >= TREE_OPERAND_LENGTH (__t))                   \
+      tree_operand_check_failed (__i, __t,                             \
+                                __FILE__, __LINE__, __FUNCTION__);     \
+    &__t->exp.operands[__i]; }))
+
+/* Nodes are chained together for many purposes.
+   Types are chained together to record them for being output to the debugger
+   (see the function `chain_type').
+   Decls in the same scope are chained together to record the contents
+   of the scope.
+   Statement nodes for successive statements used to be chained together.
+   Often lists of things are represented by TREE_LIST nodes that
+   are chained together.  */
+
+#define TREE_CHAIN(NODE) __extension__ \
+(*({__typeof (NODE) const __t = (NODE);                                \
+    &__t->common.chain; }))
+
+/* In all nodes that are expressions, this is the data type of the expression.
+   In POINTER_TYPE nodes, this is the type that the pointer points to.
+   In ARRAY_TYPE nodes, this is the type of the elements.
+   In VECTOR_TYPE nodes, this is the type of the elements.  */
+#define TREE_TYPE(NODE) __extension__ \
+(*({__typeof (NODE) const __t = (NODE);                                        \
+    &__t->common.type; }))
+
+extern void tree_contains_struct_check_failed (const_tree,
+                                              const enum tree_node_structure_enum,
+                                              const char *, int, const char *)
+  ATTRIBUTE_NORETURN;
+
+extern void tree_check_failed (const_tree, const char *, int, const char *,
+                              ...) ATTRIBUTE_NORETURN;
+extern void tree_not_check_failed (const_tree, const char *, int, const char *,
+                                  ...) ATTRIBUTE_NORETURN;
+extern void tree_class_check_failed (const_tree, const enum tree_code_class,
+                                    const char *, int, const char *)
+    ATTRIBUTE_NORETURN;
+extern void tree_range_check_failed (const_tree, const char *, int,
+                                    const char *, enum tree_code,
+                                    enum tree_code);
+extern void tree_not_class_check_failed (const_tree,
+                                        const enum tree_code_class,
+                                        const char *, int, const char *)
+    ATTRIBUTE_NORETURN;
+extern void tree_vec_elt_check_failed (int, int, const char *,
+                                      int, const char *)
+    ATTRIBUTE_NORETURN;
+extern void phi_node_elt_check_failed (int, int, const char *,
+                                      int, const char *)
+    ATTRIBUTE_NORETURN;
+extern void tree_operand_check_failed (int, const_tree,
+                                      const char *, int, const char *)
+    ATTRIBUTE_NORETURN;
+extern void omp_clause_check_failed (const_tree, const char *, int,
+                                    const char *, enum omp_clause_code)
+    ATTRIBUTE_NORETURN;
+extern void omp_clause_operand_check_failed (int, const_tree, const char *,
+                                            int, const char *)
+    ATTRIBUTE_NORETURN;
+extern void omp_clause_range_check_failed (const_tree, const char *, int,
+                              const char *, enum omp_clause_code,
+                              enum omp_clause_code)
+    ATTRIBUTE_NORETURN;
+
+#else /* not ENABLE_TREE_CHECKING, or not gcc */
+
+#define CONTAINS_STRUCT_CHECK(T, ENUM)          (T)
+#define TREE_CHECK(T, CODE)                    (T)
+#define TREE_NOT_CHECK(T, CODE)                        (T)
+#define TREE_CHECK2(T, CODE1, CODE2)           (T)
+#define TREE_NOT_CHECK2(T, CODE1, CODE2)       (T)
+#define TREE_CHECK3(T, CODE1, CODE2, CODE3)    (T)
+#define TREE_NOT_CHECK3(T, CODE1, CODE2, CODE3)        (T)
+#define TREE_CHECK4(T, CODE1, CODE2, CODE3, CODE4) (T)
+#define TREE_NOT_CHECK4(T, CODE1, CODE2, CODE3, CODE4) (T)
+#define TREE_CHECK5(T, CODE1, CODE2, CODE3, CODE4, CODE5) (T)
+#define TREE_NOT_CHECK5(T, CODE1, CODE2, CODE3, CODE4, CODE5) (T)
+#define TREE_CLASS_CHECK(T, CODE)              (T)
+#define TREE_RANGE_CHECK(T, CODE1, CODE2)      (T)
+#define EXPR_CHECK(T)                          (T)
+#define NON_TYPE_CHECK(T)                      (T)
+#define TREE_VEC_ELT_CHECK(T, I)               ((T)->vec.a[I])
+#define TREE_OPERAND_CHECK(T, I)               ((T)->exp.operands[I])
+#define TREE_OPERAND_CHECK_CODE(T, CODE, I)    ((T)->exp.operands[I])
+#define TREE_RTL_OPERAND_CHECK(T, CODE, I)  (*(rtx *) &((T)->exp.operands[I]))
+#define OMP_CLAUSE_ELT_CHECK(T, i)             ((T)->omp_clause.ops[i])
+#define OMP_CLAUSE_RANGE_CHECK(T, CODE1, CODE2)        (T)
+#define OMP_CLAUSE_SUBCODE_CHECK(T, CODE)      (T)
+
+#define TREE_CHAIN(NODE) ((NODE)->common.chain)
+#define TREE_TYPE(NODE) ((NODE)->common.type)
+
+#endif
+
+#define TREE_BLOCK(NODE)               *(tree_block (NODE))
+
+#include "tree-check.h"
+
+#define TYPE_CHECK(T)          TREE_CLASS_CHECK (T, tcc_type)
+#define DECL_MINIMAL_CHECK(T)   CONTAINS_STRUCT_CHECK (T, TS_DECL_MINIMAL)
+#define TREE_MEMORY_TAG_CHECK(T)       CONTAINS_STRUCT_CHECK (T, TS_MEMORY_TAG)
+#define DECL_COMMON_CHECK(T)    CONTAINS_STRUCT_CHECK (T, TS_DECL_COMMON)
+#define DECL_WRTL_CHECK(T)      CONTAINS_STRUCT_CHECK (T, TS_DECL_WRTL)
+#define DECL_WITH_VIS_CHECK(T)  CONTAINS_STRUCT_CHECK (T, TS_DECL_WITH_VIS)
+#define DECL_NON_COMMON_CHECK(T) CONTAINS_STRUCT_CHECK (T, TS_DECL_NON_COMMON)
+#define CST_CHECK(T)           TREE_CLASS_CHECK (T, tcc_constant)
+#define STMT_CHECK(T)          TREE_CLASS_CHECK (T, tcc_statement)
+#define VL_EXP_CHECK(T)                TREE_CLASS_CHECK (T, tcc_vl_exp)
+#define FUNC_OR_METHOD_CHECK(T)        TREE_CHECK2 (T, FUNCTION_TYPE, METHOD_TYPE)
+#define PTR_OR_REF_CHECK(T)    TREE_CHECK2 (T, POINTER_TYPE, REFERENCE_TYPE)
+
+#define RECORD_OR_UNION_CHECK(T)       \
+  TREE_CHECK3 (T, RECORD_TYPE, UNION_TYPE, QUAL_UNION_TYPE)
+#define NOT_RECORD_OR_UNION_CHECK(T) \
+  TREE_NOT_CHECK3 (T, RECORD_TYPE, UNION_TYPE, QUAL_UNION_TYPE)
+
+#define NUMERICAL_TYPE_CHECK(T)                                        \
+  TREE_CHECK5 (T, INTEGER_TYPE, ENUMERAL_TYPE, BOOLEAN_TYPE, REAL_TYPE,        \
+              FIXED_POINT_TYPE)
+
+/* Here is how primitive or already-canonicalized types' hash codes
+   are made.  */
+#define TYPE_HASH(TYPE) (TYPE_UID (TYPE))
+
+/* A simple hash function for an arbitrary tree node.  This must not be
+   used in hash tables which are saved to a PCH.  */
+#define TREE_HASH(NODE) ((size_t) (NODE) & 0777777)
+
+/* Tests if CODE is a conversion expr (NOP_EXPR or CONVERT_EXPR).  */
+#define CONVERT_EXPR_CODE_P(CODE)                              \
+  ((CODE) == NOP_EXPR || (CODE) == CONVERT_EXPR)
+
+/* Similarly, but accept an expressions instead of a tree code.  */
+#define CONVERT_EXPR_P(EXP)    CONVERT_EXPR_CODE_P (TREE_CODE (EXP))
+
+/* Generate case for NOP_EXPR, CONVERT_EXPR.  */
+
+#define CASE_CONVERT                                           \
+  case NOP_EXPR:                                               \
+  case CONVERT_EXPR
+
+/* Given an expression as a tree, strip any NON_LVALUE_EXPRs and NOP_EXPRs
+   that don't change the machine mode.  */
+
+#define STRIP_NOPS(EXP)                                                \
+  while ((CONVERT_EXPR_P (EXP)                                 \
+         || TREE_CODE (EXP) == NON_LVALUE_EXPR)                \
+        && TREE_OPERAND (EXP, 0) != error_mark_node            \
+        && (TYPE_MODE (TREE_TYPE (EXP))                        \
+            == TYPE_MODE (TREE_TYPE (TREE_OPERAND (EXP, 0))))) \
+    (EXP) = TREE_OPERAND (EXP, 0)
+
+/* Like STRIP_NOPS, but don't let the signedness change either.  */
+
+#define STRIP_SIGN_NOPS(EXP) \
+  while ((CONVERT_EXPR_P (EXP)                                 \
+         || TREE_CODE (EXP) == NON_LVALUE_EXPR)                \
+        && TREE_OPERAND (EXP, 0) != error_mark_node            \
+        && (TYPE_MODE (TREE_TYPE (EXP))                        \
+            == TYPE_MODE (TREE_TYPE (TREE_OPERAND (EXP, 0))))  \
+        && (TYPE_UNSIGNED (TREE_TYPE (EXP))                    \
+            == TYPE_UNSIGNED (TREE_TYPE (TREE_OPERAND (EXP, 0)))) \
+        && (POINTER_TYPE_P (TREE_TYPE (EXP))                   \
+            == POINTER_TYPE_P (TREE_TYPE (TREE_OPERAND (EXP, 0))))) \
+    (EXP) = TREE_OPERAND (EXP, 0)
+
+/* Like STRIP_NOPS, but don't alter the TREE_TYPE either.  */
+
+#define STRIP_TYPE_NOPS(EXP) \
+  while ((CONVERT_EXPR_P (EXP)                                 \
+         || TREE_CODE (EXP) == NON_LVALUE_EXPR)                \
+        && TREE_OPERAND (EXP, 0) != error_mark_node            \
+        && (TREE_TYPE (EXP)                                    \
+            == TREE_TYPE (TREE_OPERAND (EXP, 0))))             \
+    (EXP) = TREE_OPERAND (EXP, 0)
+
+/* Remove unnecessary type conversions according to
+   tree_ssa_useless_type_conversion.  */
+
+#define STRIP_USELESS_TYPE_CONVERSION(EXP)                             \
+      while (tree_ssa_useless_type_conversion (EXP))                   \
+       EXP = TREE_OPERAND (EXP, 0)
+
+/* Nonzero if TYPE represents an integral type.  Note that we do not
+   include COMPLEX types here.  Keep these checks in ascending code
+   order.  */
+
+#define INTEGRAL_TYPE_P(TYPE)  \
+  (TREE_CODE (TYPE) == ENUMERAL_TYPE  \
+   || TREE_CODE (TYPE) == BOOLEAN_TYPE \
+   || TREE_CODE (TYPE) == INTEGER_TYPE)
+
+/* Nonzero if TYPE represents a non-saturating fixed-point type.  */
+
+#define NON_SAT_FIXED_POINT_TYPE_P(TYPE) \
+  (TREE_CODE (TYPE) == FIXED_POINT_TYPE && !TYPE_SATURATING (TYPE))
+
+/* Nonzero if TYPE represents a saturating fixed-point type.  */
+
+#define SAT_FIXED_POINT_TYPE_P(TYPE) \
+  (TREE_CODE (TYPE) == FIXED_POINT_TYPE && TYPE_SATURATING (TYPE))
+
+/* Nonzero if TYPE represents a fixed-point type.  */
+
+#define FIXED_POINT_TYPE_P(TYPE)       (TREE_CODE (TYPE) == FIXED_POINT_TYPE)
+
+/* Nonzero if TYPE represents a scalar floating-point type.  */
+
+#define SCALAR_FLOAT_TYPE_P(TYPE) (TREE_CODE (TYPE) == REAL_TYPE)
+
+/* Nonzero if TYPE represents a complex floating-point type.  */
+
+#define COMPLEX_FLOAT_TYPE_P(TYPE)     \
+  (TREE_CODE (TYPE) == COMPLEX_TYPE    \
+   && TREE_CODE (TREE_TYPE (TYPE)) == REAL_TYPE)
+
+/* Nonzero if TYPE represents a vector floating-point type.  */
+
+#define VECTOR_FLOAT_TYPE_P(TYPE)      \
+  (TREE_CODE (TYPE) == VECTOR_TYPE     \
+   && TREE_CODE (TREE_TYPE (TYPE)) == REAL_TYPE)
+
+/* Nonzero if TYPE represents a floating-point type, including complex
+   and vector floating-point types.  The vector and complex check does
+   not use the previous two macros to enable early folding.  */
+
+#define FLOAT_TYPE_P(TYPE)                     \
+  (SCALAR_FLOAT_TYPE_P (TYPE)                  \
+   || ((TREE_CODE (TYPE) == COMPLEX_TYPE       \
+        || TREE_CODE (TYPE) == VECTOR_TYPE)    \
+       && SCALAR_FLOAT_TYPE_P (TREE_TYPE (TYPE))))
+
+/* Nonzero if TYPE represents a decimal floating-point type.  */
+#define DECIMAL_FLOAT_TYPE_P(TYPE)             \
+  (SCALAR_FLOAT_TYPE_P (TYPE)                  \
+   && DECIMAL_FLOAT_MODE_P (TYPE_MODE (TYPE)))
+
+/* Nonzero if TYPE represents an aggregate (multi-component) type.
+   Keep these checks in ascending code order.  */
+
+#define AGGREGATE_TYPE_P(TYPE) \
+  (TREE_CODE (TYPE) == ARRAY_TYPE || TREE_CODE (TYPE) == RECORD_TYPE \
+   || TREE_CODE (TYPE) == UNION_TYPE || TREE_CODE (TYPE) == QUAL_UNION_TYPE)
+
+/* Nonzero if TYPE represents a pointer or reference type.
+   (It should be renamed to INDIRECT_TYPE_P.)  Keep these checks in
+   ascending code order.  */
+
+#define POINTER_TYPE_P(TYPE) \
+  (TREE_CODE (TYPE) == POINTER_TYPE || TREE_CODE (TYPE) == REFERENCE_TYPE)
+
+/* Nonzero if this type is a complete type.  */
+#define COMPLETE_TYPE_P(NODE) (TYPE_SIZE (NODE) != NULL_TREE)
+
+/* Nonzero if this type is the (possibly qualified) void type.  */
+#define VOID_TYPE_P(NODE) (TREE_CODE (NODE) == VOID_TYPE)
+
+/* Nonzero if this type is complete or is cv void.  */
+#define COMPLETE_OR_VOID_TYPE_P(NODE) \
+  (COMPLETE_TYPE_P (NODE) || VOID_TYPE_P (NODE))
+
+/* Nonzero if this type is complete or is an array with unspecified bound.  */
+#define COMPLETE_OR_UNBOUND_ARRAY_TYPE_P(NODE) \
+  (COMPLETE_TYPE_P (TREE_CODE (NODE) == ARRAY_TYPE ? TREE_TYPE (NODE) : (NODE)))
+
+\f
+/* Define many boolean fields that all tree nodes have.  */
+
+/* In VAR_DECL nodes, nonzero means address of this is needed.
+   So it cannot be in a register.
+   In a FUNCTION_DECL, nonzero means its address is needed.
+   So it must be compiled even if it is an inline function.
+   In a FIELD_DECL node, it means that the programmer is permitted to
+   construct the address of this field.  This is used for aliasing
+   purposes: see record_component_aliases.
+   In CONSTRUCTOR nodes, it means object constructed must be in memory.
+   In LABEL_DECL nodes, it means a goto for this label has been seen
+   from a place outside all binding contours that restore stack levels.
+   In ..._TYPE nodes, it means that objects of this type must
+   be fully addressable.  This means that pieces of this
+   object cannot go into register parameters, for example.
+   In IDENTIFIER_NODEs, this means that some extern decl for this name
+   had its address taken.  That matters for inline functions.  */
+#define TREE_ADDRESSABLE(NODE) ((NODE)->base.addressable_flag)
+
+/* Set on a CALL_EXPR if the call is in a tail position, ie. just before the
+   exit of a function.  Calls for which this is true are candidates for tail
+   call optimizations.  */
+#define CALL_EXPR_TAILCALL(NODE) \
+  (CALL_EXPR_CHECK(NODE)->base.addressable_flag)
+
+/* Used as a temporary field on a CASE_LABEL_EXPR to indicate that the
+   CASE_LOW operand has been processed.  */
+#define CASE_LOW_SEEN(NODE) \
+  (CASE_LABEL_EXPR_CHECK (NODE)->base.addressable_flag)
+
+#define PREDICT_EXPR_OUTCOME(NODE) \
+  (PREDICT_EXPR_CHECK(NODE)->base.addressable_flag)
+#define PREDICT_EXPR_PREDICTOR(NODE) \
+  ((enum br_predictor)tree_low_cst (TREE_OPERAND (PREDICT_EXPR_CHECK (NODE), 0), 0))
+
+/* In a VAR_DECL, nonzero means allocate static storage.
+   In a FUNCTION_DECL, nonzero if function has been defined.
+   In a CONSTRUCTOR, nonzero means allocate static storage.  */
+#define TREE_STATIC(NODE) ((NODE)->base.static_flag)
+
+/* In an ADDR_EXPR, nonzero means do not use a trampoline.  */
+#define TREE_NO_TRAMPOLINE(NODE) (ADDR_EXPR_CHECK (NODE)->base.static_flag)
+
+/* In a TARGET_EXPR or WITH_CLEANUP_EXPR, means that the pertinent cleanup
+   should only be executed if an exception is thrown, not on normal exit
+   of its scope.  */
+#define CLEANUP_EH_ONLY(NODE) ((NODE)->base.static_flag)
+
+/* In a TRY_CATCH_EXPR, means that the handler should be considered a
+   separate cleanup in honor_protect_cleanup_actions.  */
+#define TRY_CATCH_IS_CLEANUP(NODE) \
+  (TRY_CATCH_EXPR_CHECK (NODE)->base.static_flag)
+
+/* Used as a temporary field on a CASE_LABEL_EXPR to indicate that the
+   CASE_HIGH operand has been processed.  */
+#define CASE_HIGH_SEEN(NODE) \
+  (CASE_LABEL_EXPR_CHECK (NODE)->base.static_flag)
+
+/* Used to mark a CALL_EXPR as not suitable for inlining.  */
+#define CALL_CANNOT_INLINE_P(NODE) (CALL_EXPR_CHECK (NODE)->base.static_flag)
+
+/* In an expr node (usually a conversion) this means the node was made
+   implicitly and should not lead to any sort of warning.  In a decl node,
+   warnings concerning the decl should be suppressed.  This is used at
+   least for used-before-set warnings, and it set after one warning is
+   emitted.  */
+#define TREE_NO_WARNING(NODE) ((NODE)->base.nowarning_flag)
+
+/* In an IDENTIFIER_NODE, this means that assemble_name was called with
+   this string as an argument.  */
+#define TREE_SYMBOL_REFERENCED(NODE) \
+  (IDENTIFIER_NODE_CHECK (NODE)->base.static_flag)
+
+/* Nonzero in a pointer or reference type means the data pointed to
+   by this type can alias anything.  */
+#define TYPE_REF_CAN_ALIAS_ALL(NODE) \
+  (PTR_OR_REF_CHECK (NODE)->base.static_flag)
+
+/* In a MODIFY_EXPR, means that the store in the expression is nontemporal.  */
+#define MOVE_NONTEMPORAL(NODE) \
+  (EXPR_CHECK (NODE)->base.static_flag)
+
+/* In an INTEGER_CST, REAL_CST, COMPLEX_CST, or VECTOR_CST, this means
+   there was an overflow in folding.  */
+
+#define TREE_OVERFLOW(NODE) (CST_CHECK (NODE)->base.public_flag)
+
+/* ??? This is an obsolete synonym for TREE_OVERFLOW.  */
+#define TREE_CONSTANT_OVERFLOW(NODE) TREE_OVERFLOW(NODE)
+
+/* TREE_OVERFLOW can only be true for EXPR of CONSTANT_CLASS_P.  */
+
+#define TREE_OVERFLOW_P(EXPR) \
+ (CONSTANT_CLASS_P (EXPR) && TREE_OVERFLOW (EXPR))
+
+/* In a VAR_DECL, FUNCTION_DECL, NAMESPACE_DECL or TYPE_DECL,
+   nonzero means name is to be accessible from outside this translation unit.
+   In an IDENTIFIER_NODE, nonzero means an external declaration
+   accessible from outside this translation unit was previously seen
+   for this name in an inner scope.  */
+#define TREE_PUBLIC(NODE) ((NODE)->base.public_flag)
+
+/* In a _TYPE, indicates whether TYPE_CACHED_VALUES contains a vector
+   of cached values, or is something else.  */
+#define TYPE_CACHED_VALUES_P(NODE) (TYPE_CHECK(NODE)->base.public_flag)
+
+/* In a SAVE_EXPR, indicates that the original expression has already
+   been substituted with a VAR_DECL that contains the value.  */
+#define SAVE_EXPR_RESOLVED_P(NODE) \
+  (SAVE_EXPR_CHECK (NODE)->base.public_flag)
+
+/* Set on a CALL_EXPR if this stdarg call should be passed the argument
+   pack.  */
+#define CALL_EXPR_VA_ARG_PACK(NODE) \
+  (CALL_EXPR_CHECK(NODE)->base.public_flag)
+
+/* In any expression, decl, or constant, nonzero means it has side effects or
+   reevaluation of the whole expression could produce a different value.
+   This is set if any subexpression is a function call, a side effect or a
+   reference to a volatile variable.  In a ..._DECL, this is set only if the
+   declaration said `volatile'.  This will never be set for a constant.  */
+#define TREE_SIDE_EFFECTS(NODE) \
+  (NON_TYPE_CHECK (NODE)->base.side_effects_flag)
+
+/* In a LABEL_DECL, nonzero means this label had its address taken
+   and therefore can never be deleted and is a jump target for
+   computed gotos.  */
+#define FORCED_LABEL(NODE) (LABEL_DECL_CHECK (NODE)->base.side_effects_flag)
+
+/* Nonzero means this expression is volatile in the C sense:
+   its address should be of type `volatile WHATEVER *'.
+   In other words, the declared item is volatile qualified.
+   This is used in _DECL nodes and _REF nodes.
+   On a FUNCTION_DECL node, this means the function does not
+   return normally.  This is the same effect as setting
+   the attribute noreturn on the function in C.
+
+   In a ..._TYPE node, means this type is volatile-qualified.
+   But use TYPE_VOLATILE instead of this macro when the node is a type,
+   because eventually we may make that a different bit.
+
+   If this bit is set in an expression, so is TREE_SIDE_EFFECTS.  */
+#define TREE_THIS_VOLATILE(NODE) ((NODE)->base.volatile_flag)
+
+/* Nonzero means this node will not trap.  In an INDIRECT_REF, means
+   accessing the memory pointed to won't generate a trap.  However,
+   this only applies to an object when used appropriately: it doesn't
+   mean that writing a READONLY mem won't trap. Similarly for
+   ALIGN_INDIRECT_REF and MISALIGNED_INDIRECT_REF.
+
+   In ARRAY_REF and ARRAY_RANGE_REF means that we know that the index
+   (or slice of the array) always belongs to the range of the array.
+   I.e. that the access will not trap, provided that the access to
+   the base to the array will not trap.  */
+#define TREE_THIS_NOTRAP(NODE) ((NODE)->base.nothrow_flag)
+
+/* In a VAR_DECL, PARM_DECL or FIELD_DECL, or any kind of ..._REF node,
+   nonzero means it may not be the lhs of an assignment.  
+   Nonzero in a FUNCTION_DECL means this function should be treated
+   as "const" function (can only read its arguments).  */
+#define TREE_READONLY(NODE) (NON_TYPE_CHECK (NODE)->base.readonly_flag)
+
+/* Value of expression is constant.  Always on in all ..._CST nodes.  May
+   also appear in an expression or decl where the value is constant.  */
+#define TREE_CONSTANT(NODE) (NON_TYPE_CHECK (NODE)->base.constant_flag)
+
+/* Nonzero if NODE, a type, has had its sizes gimplified.  */
+#define TYPE_SIZES_GIMPLIFIED(NODE) \
+  (TYPE_CHECK (NODE)->base.constant_flag)
+
+/* In a decl (most significantly a FIELD_DECL), means an unsigned field.  */
+#define DECL_UNSIGNED(NODE) \
+  (DECL_COMMON_CHECK (NODE)->base.unsigned_flag)
+
+/* In integral and pointer types, means an unsigned type.  */
+#define TYPE_UNSIGNED(NODE) (TYPE_CHECK (NODE)->base.unsigned_flag)
+
+/* Nonzero in a VAR_DECL or STRING_CST means assembler code has been written.
+   Nonzero in a FUNCTION_DECL means that the function has been compiled.
+   This is interesting in an inline function, since it might not need
+   to be compiled separately.
+   Nonzero in a RECORD_TYPE, UNION_TYPE, QUAL_UNION_TYPE or ENUMERAL_TYPE
+   if the sdb debugging info for the type has been written.
+   In a BLOCK node, nonzero if reorder_blocks has already seen this block.
+   In an SSA_NAME node, nonzero if the SSA_NAME occurs in an abnormal
+   PHI node.  */
+#define TREE_ASM_WRITTEN(NODE) ((NODE)->base.asm_written_flag)
+
+/* Nonzero in a _DECL if the name is used in its scope.
+   Nonzero in an expr node means inhibit warning if value is unused.
+   In IDENTIFIER_NODEs, this means that some extern decl for this name
+   was used.
+   In a BLOCK, this means that the block contains variables that are used.  */
+#define TREE_USED(NODE) ((NODE)->base.used_flag)
+
+/* In a FUNCTION_DECL, nonzero means a call to the function cannot throw
+   an exception.  In a CALL_EXPR, nonzero means the call cannot throw.  */
+#define TREE_NOTHROW(NODE) ((NODE)->base.nothrow_flag)
+
+/* In a CALL_EXPR, means that it's safe to use the target of the call
+   expansion as the return slot for a call that returns in memory.  */
+#define CALL_EXPR_RETURN_SLOT_OPT(NODE) \
+  (CALL_EXPR_CHECK (NODE)->base.private_flag)
+
+/* In a RESULT_DECL or PARM_DECL, means that it is passed by invisible
+   reference (and the TREE_TYPE is a pointer to the true type).  */
+#define DECL_BY_REFERENCE(NODE) (DECL_COMMON_CHECK (NODE)->base.private_flag)
+
+/* In a CALL_EXPR, means that the call is the jump from a thunk to the
+   thunked-to function.  */
+#define CALL_FROM_THUNK_P(NODE) (CALL_EXPR_CHECK (NODE)->base.protected_flag)
+
+/* In a type, nonzero means that all objects of the type are guaranteed by the
+   language or front-end to be properly aligned, so we can indicate that a MEM
+   of this type is aligned at least to the alignment of the type, even if it
+   doesn't appear that it is.  We see this, for example, in object-oriented
+   languages where a tag field may show this is an object of a more-aligned
+   variant of the more generic type.
+
+   In an SSA_NAME node, nonzero if the SSA_NAME node is on the SSA_NAME
+   freelist.  */
+#define TYPE_ALIGN_OK(NODE) (TYPE_CHECK (NODE)->base.nothrow_flag)
+
+/* Used in classes in C++.  */
+#define TREE_PRIVATE(NODE) ((NODE)->base.private_flag)
+/* Used in classes in C++. */
+#define TREE_PROTECTED(NODE) ((NODE)->base.protected_flag)
+
+/* Nonzero in a _DECL if the use of the name is defined as a
+   deprecated feature by __attribute__((deprecated)).  */
+#define TREE_DEPRECATED(NODE) \
+  ((NODE)->base.deprecated_flag)
+
+/* Nonzero in an IDENTIFIER_NODE if the name is a local alias, whose
+   uses are to be substituted for uses of the TREE_CHAINed identifier.  */
+#define IDENTIFIER_TRANSPARENT_ALIAS(NODE) \
+  (IDENTIFIER_NODE_CHECK (NODE)->base.deprecated_flag)
+
+/* In fixed-point types, means a saturating type.  */
+#define TYPE_SATURATING(NODE) ((NODE)->base.saturating_flag)
+
+/* These flags are available for each language front end to use internally.  */
+#define TREE_LANG_FLAG_0(NODE) ((NODE)->base.lang_flag_0)
+#define TREE_LANG_FLAG_1(NODE) ((NODE)->base.lang_flag_1)
+#define TREE_LANG_FLAG_2(NODE) ((NODE)->base.lang_flag_2)
+#define TREE_LANG_FLAG_3(NODE) ((NODE)->base.lang_flag_3)
+#define TREE_LANG_FLAG_4(NODE) ((NODE)->base.lang_flag_4)
+#define TREE_LANG_FLAG_5(NODE) ((NODE)->base.lang_flag_5)
+#define TREE_LANG_FLAG_6(NODE) ((NODE)->base.lang_flag_6)
+\f
+/* Define additional fields and accessors for nodes representing constants.  */
+
+/* In an INTEGER_CST node.  These two together make a 2-word integer.
+   If the data type is signed, the value is sign-extended to 2 words
+   even though not all of them may really be in use.
+   In an unsigned constant shorter than 2 words, the extra bits are 0.  */
+#define TREE_INT_CST(NODE) (INTEGER_CST_CHECK (NODE)->int_cst.int_cst)
+#define TREE_INT_CST_LOW(NODE) (TREE_INT_CST (NODE).low)
+#define TREE_INT_CST_HIGH(NODE) (TREE_INT_CST (NODE).high)
+
+#define INT_CST_LT(A, B)                               \
+  (TREE_INT_CST_HIGH (A) < TREE_INT_CST_HIGH (B)       \
+   || (TREE_INT_CST_HIGH (A) == TREE_INT_CST_HIGH (B)  \
+       && TREE_INT_CST_LOW (A) < TREE_INT_CST_LOW (B)))
+
+#define INT_CST_LT_UNSIGNED(A, B)                              \
+  (((unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (A)             \
+    < (unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (B))          \
+   || (((unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (A)         \
+       == (unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (B))      \
+       && TREE_INT_CST_LOW (A) < TREE_INT_CST_LOW (B)))
+
+struct tree_int_cst GTY(())
+{
+  struct tree_common common;
+  double_int int_cst;
+};
+
+/* In a REAL_CST node.  struct real_value is an opaque entity, with
+   manipulators defined in real.h.  We don't want tree.h depending on
+   real.h and transitively on tm.h.  */
+struct real_value;
+
+#define TREE_REAL_CST_PTR(NODE) (REAL_CST_CHECK (NODE)->real_cst.real_cst_ptr)
+#define TREE_REAL_CST(NODE) (*TREE_REAL_CST_PTR (NODE))
+
+struct tree_real_cst GTY(())
+{
+  struct tree_common common;
+  struct real_value * real_cst_ptr;
+};
+
+/* In a FIXED_CST node.  */
+struct fixed_value;
+
+#define TREE_FIXED_CST_PTR(NODE) (FIXED_CST_CHECK (NODE)->fixed_cst.fixed_cst_ptr)
+#define TREE_FIXED_CST(NODE) (*TREE_FIXED_CST_PTR (NODE))
+
+struct tree_fixed_cst GTY(())
+{
+  struct tree_common common;
+  struct fixed_value * fixed_cst_ptr;
+};
+
+/* In a STRING_CST */
+#define TREE_STRING_LENGTH(NODE) (STRING_CST_CHECK (NODE)->string.length)
+#define TREE_STRING_POINTER(NODE) \
+  ((const char *)(STRING_CST_CHECK (NODE)->string.str))
+
+struct tree_string GTY(())
+{
+  struct tree_common common;
+  int length;
+  char str[1];
+};
+
+/* In a COMPLEX_CST node.  */
+#define TREE_REALPART(NODE) (COMPLEX_CST_CHECK (NODE)->complex.real)
+#define TREE_IMAGPART(NODE) (COMPLEX_CST_CHECK (NODE)->complex.imag)
+
+struct tree_complex GTY(())
+{
+  struct tree_common common;
+  tree real;
+  tree imag;
+};
+
+/* In a VECTOR_CST node.  */
+#define TREE_VECTOR_CST_ELTS(NODE) (VECTOR_CST_CHECK (NODE)->vector.elements)
+
+struct tree_vector GTY(())
+{
+  struct tree_common common;
+  tree elements;
+};
+\f
+#include "symtab.h"
+
+/* Define fields and accessors for some special-purpose tree nodes.  */
+
+#define IDENTIFIER_LENGTH(NODE) \
+  (IDENTIFIER_NODE_CHECK (NODE)->identifier.id.len)
+#define IDENTIFIER_POINTER(NODE) \
+  ((const char *) IDENTIFIER_NODE_CHECK (NODE)->identifier.id.str)
+#define IDENTIFIER_HASH_VALUE(NODE) \
+  (IDENTIFIER_NODE_CHECK (NODE)->identifier.id.hash_value)
+
+/* Translate a hash table identifier pointer to a tree_identifier
+   pointer, and vice versa.  */
+
+#define HT_IDENT_TO_GCC_IDENT(NODE) \
+  ((tree) ((char *) (NODE) - sizeof (struct tree_common)))
+#define GCC_IDENT_TO_HT_IDENT(NODE) (&((struct tree_identifier *) (NODE))->id)
+
+struct tree_identifier GTY(())
+{
+  struct tree_common common;
+  struct ht_identifier id;
+};
+
+/* In a TREE_LIST node.  */
+#define TREE_PURPOSE(NODE) (TREE_LIST_CHECK (NODE)->list.purpose)
+#define TREE_VALUE(NODE) (TREE_LIST_CHECK (NODE)->list.value)
+
+struct tree_list GTY(())
+{
+  struct tree_common common;
+  tree purpose;
+  tree value;
+};
+
+/* In a TREE_VEC node.  */
+#define TREE_VEC_LENGTH(NODE) (TREE_VEC_CHECK (NODE)->vec.length)
+#define TREE_VEC_END(NODE) \
+  ((void) TREE_VEC_CHECK (NODE), &((NODE)->vec.a[(NODE)->vec.length]))
+
+#define TREE_VEC_ELT(NODE,I) TREE_VEC_ELT_CHECK (NODE, I)
+
+struct tree_vec GTY(())
+{
+  struct tree_common common;
+  int length;
+  tree GTY ((length ("TREE_VEC_LENGTH ((tree)&%h)"))) a[1];
+};
+
+/* In a CONSTRUCTOR node.  */
+#define CONSTRUCTOR_ELTS(NODE) (CONSTRUCTOR_CHECK (NODE)->constructor.elts)
+#define CONSTRUCTOR_ELT(NODE,IDX) \
+  (VEC_index (constructor_elt, CONSTRUCTOR_ELTS (NODE), IDX))
+#define CONSTRUCTOR_NELTS(NODE) (VEC_length (constructor_elt, CONSTRUCTOR_ELTS (NODE)))
+
+/* Iterate through the vector V of CONSTRUCTOR_ELT elements, yielding the
+   value of each element (stored within VAL). IX must be a scratch variable
+   of unsigned integer type.  */
+#define FOR_EACH_CONSTRUCTOR_VALUE(V, IX, VAL) \
+  for (IX = 0; (IX >= VEC_length (constructor_elt, V)) \
+              ? false \
+              : ((VAL = VEC_index (constructor_elt, V, IX)->value), \
+              true); \
+       (IX)++)
+
+/* Iterate through the vector V of CONSTRUCTOR_ELT elements, yielding both
+   the value of each element (stored within VAL) and its index (stored
+   within INDEX). IX must be a scratch variable of unsigned integer type.  */
+#define FOR_EACH_CONSTRUCTOR_ELT(V, IX, INDEX, VAL) \
+  for (IX = 0; (IX >= VEC_length (constructor_elt, V)) \
+              ? false \
+              : ((VAL = VEC_index (constructor_elt, V, IX)->value), \
+                 (INDEX = VEC_index (constructor_elt, V, IX)->index), \
+              true); \
+       (IX)++)
+
+/* Append a new constructor element to V, with the specified INDEX and VAL.  */
+#define CONSTRUCTOR_APPEND_ELT(V, INDEX, VALUE) \
+  do { \
+    constructor_elt *_ce___ = VEC_safe_push (constructor_elt, gc, V, NULL); \
+    _ce___->index = INDEX; \
+    _ce___->value = VALUE; \
+  } while (0)
+
+/* A single element of a CONSTRUCTOR. VALUE holds the actual value of the
+   element. INDEX can optionally design the position of VALUE: in arrays,
+   it is the index where VALUE has to be placed; in structures, it is the
+   FIELD_DECL of the member.  */
+typedef struct constructor_elt_d GTY(())
+{
+  tree index;
+  tree value;
+} constructor_elt;
+
+DEF_VEC_O(constructor_elt);
+DEF_VEC_ALLOC_O(constructor_elt,gc);
+
+struct tree_constructor GTY(())
+{
+  struct tree_common common;
+  VEC(constructor_elt,gc) *elts;
+};
+
+/* Define fields and accessors for some nodes that represent expressions.  */
+
+/* Nonzero if NODE is an empty statement (NOP_EXPR <0>).  */
+#define IS_EMPTY_STMT(NODE)    (TREE_CODE (NODE) == NOP_EXPR \
+                                && VOID_TYPE_P (TREE_TYPE (NODE)) \
+                                && integer_zerop (TREE_OPERAND (NODE, 0)))
+
+/* In ordinary expression nodes.  */
+#define TREE_OPERAND_LENGTH(NODE) tree_operand_length (NODE)
+#define TREE_OPERAND(NODE, I) TREE_OPERAND_CHECK (NODE, I)
+
+/* In a tcc_vl_exp node, operand 0 is an INT_CST node holding the operand
+   length.  Its value includes the length operand itself; that is,
+   the minimum valid length is 1.
+   Note that we have to bypass the use of TREE_OPERAND to access
+   that field to avoid infinite recursion in expanding the macros.  */
+#define VL_EXP_OPERAND_LENGTH(NODE) \
+  ((int)TREE_INT_CST_LOW (VL_EXP_CHECK (NODE)->exp.operands[0]))
+
+/* In a LOOP_EXPR node.  */
+#define LOOP_EXPR_BODY(NODE) TREE_OPERAND_CHECK_CODE (NODE, LOOP_EXPR, 0)
+
+/* The source location of this expression.  Non-tree_exp nodes such as
+   decls and constants can be shared among multiple locations, so
+   return nothing.  */
+#define EXPR_LOCATION(NODE) (EXPR_P ((NODE)) ? (NODE)->exp.locus : UNKNOWN_LOCATION)
+#define SET_EXPR_LOCATION(NODE, LOCUS) EXPR_CHECK ((NODE))->exp.locus = (LOCUS)
+#define EXPR_HAS_LOCATION(NODE) (EXPR_LOCATION (NODE) != UNKNOWN_LOCATION)
+#define EXPR_LOCUS(NODE) (EXPR_P (NODE) \
+                         ? CONST_CAST (source_location *, &(NODE)->exp.locus) \
+                         : (source_location *) NULL)
+#define SET_EXPR_LOCUS(NODE, FROM) set_expr_locus ((NODE), (FROM))
+#define EXPR_FILENAME(NODE) LOCATION_FILE (EXPR_CHECK ((NODE))->exp.locus)
+#define EXPR_LINENO(NODE) LOCATION_LINE (EXPR_CHECK (NODE)->exp.locus)
+
+/* True if a tree is an expression or statement that can have a
+   location.  */
+#define CAN_HAVE_LOCATION_P(NODE) (EXPR_P (NODE))
+
+extern void protected_set_expr_location (tree, location_t);
+
+/* In a TARGET_EXPR node.  */
+#define TARGET_EXPR_SLOT(NODE) TREE_OPERAND_CHECK_CODE (NODE, TARGET_EXPR, 0)
+#define TARGET_EXPR_INITIAL(NODE) TREE_OPERAND_CHECK_CODE (NODE, TARGET_EXPR, 1)
+#define TARGET_EXPR_CLEANUP(NODE) TREE_OPERAND_CHECK_CODE (NODE, TARGET_EXPR, 2)
+
+/* DECL_EXPR accessor. This gives access to the DECL associated with
+   the given declaration statement.  */
+#define DECL_EXPR_DECL(NODE)    TREE_OPERAND (DECL_EXPR_CHECK (NODE), 0)
+
+#define EXIT_EXPR_COND(NODE)        TREE_OPERAND (EXIT_EXPR_CHECK (NODE), 0)
+
+/* SWITCH_EXPR accessors. These give access to the condition, body and
+   original condition type (before any compiler conversions)
+   of the switch statement, respectively.  */
+#define SWITCH_COND(NODE)       TREE_OPERAND (SWITCH_EXPR_CHECK (NODE), 0)
+#define SWITCH_BODY(NODE)       TREE_OPERAND (SWITCH_EXPR_CHECK (NODE), 1)
+#define SWITCH_LABELS(NODE)     TREE_OPERAND (SWITCH_EXPR_CHECK (NODE), 2)
+
+/* CASE_LABEL_EXPR accessors. These give access to the high and low values
+   of a case label, respectively.  */
+#define CASE_LOW(NODE)                 TREE_OPERAND (CASE_LABEL_EXPR_CHECK (NODE), 0)
+#define CASE_HIGH(NODE)                TREE_OPERAND (CASE_LABEL_EXPR_CHECK (NODE), 1)
+#define CASE_LABEL(NODE)               TREE_OPERAND (CASE_LABEL_EXPR_CHECK (NODE), 2)
+
+/* The operands of a TARGET_MEM_REF.  */
+#define TMR_SYMBOL(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 0))
+#define TMR_BASE(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 1))
+#define TMR_INDEX(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 2))
+#define TMR_STEP(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 3))
+#define TMR_OFFSET(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 4))
+#define TMR_ORIGINAL(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 5))
+#define TMR_TAG(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 6))
+
+/* The operands of a BIND_EXPR.  */
+#define BIND_EXPR_VARS(NODE) (TREE_OPERAND (BIND_EXPR_CHECK (NODE), 0))
+#define BIND_EXPR_BODY(NODE) (TREE_OPERAND (BIND_EXPR_CHECK (NODE), 1))
+#define BIND_EXPR_BLOCK(NODE) (TREE_OPERAND (BIND_EXPR_CHECK (NODE), 2))
+
+/* GOTO_EXPR accessor. This gives access to the label associated with
+   a goto statement.  */
+#define GOTO_DESTINATION(NODE)  TREE_OPERAND ((NODE), 0)
+
+/* ASM_EXPR accessors. ASM_STRING returns a STRING_CST for the
+   instruction (e.g., "mov x, y"). ASM_OUTPUTS, ASM_INPUTS, and
+   ASM_CLOBBERS represent the outputs, inputs, and clobbers for the
+   statement.  */
+#define ASM_STRING(NODE)        TREE_OPERAND (ASM_EXPR_CHECK (NODE), 0)
+#define ASM_OUTPUTS(NODE)       TREE_OPERAND (ASM_EXPR_CHECK (NODE), 1)
+#define ASM_INPUTS(NODE)        TREE_OPERAND (ASM_EXPR_CHECK (NODE), 2)
+#define ASM_CLOBBERS(NODE)      TREE_OPERAND (ASM_EXPR_CHECK (NODE), 3)
+/* Nonzero if we want to create an ASM_INPUT instead of an
+   ASM_OPERAND with no operands.  */
+#define ASM_INPUT_P(NODE) (ASM_EXPR_CHECK (NODE)->base.static_flag)
+#define ASM_VOLATILE_P(NODE) (ASM_EXPR_CHECK (NODE)->base.public_flag)
+
+/* COND_EXPR accessors.  */
+#define COND_EXPR_COND(NODE)   (TREE_OPERAND (COND_EXPR_CHECK (NODE), 0))
+#define COND_EXPR_THEN(NODE)   (TREE_OPERAND (COND_EXPR_CHECK (NODE), 1))
+#define COND_EXPR_ELSE(NODE)   (TREE_OPERAND (COND_EXPR_CHECK (NODE), 2))
+
+/* Accessors for the chains of recurrences.  */
+#define CHREC_VAR(NODE)           TREE_OPERAND (POLYNOMIAL_CHREC_CHECK (NODE), 0)
+#define CHREC_LEFT(NODE)          TREE_OPERAND (POLYNOMIAL_CHREC_CHECK (NODE), 1)
+#define CHREC_RIGHT(NODE)         TREE_OPERAND (POLYNOMIAL_CHREC_CHECK (NODE), 2)
+#define CHREC_VARIABLE(NODE)      TREE_INT_CST_LOW (CHREC_VAR (NODE))
+
+/* LABEL_EXPR accessor. This gives access to the label associated with
+   the given label expression.  */
+#define LABEL_EXPR_LABEL(NODE)  TREE_OPERAND (LABEL_EXPR_CHECK (NODE), 0)
+
+/* VDEF_EXPR accessors are specified in tree-flow.h, along with the other
+   accessors for SSA operands.  */
+
+/* CATCH_EXPR accessors.  */
+#define CATCH_TYPES(NODE)      TREE_OPERAND (CATCH_EXPR_CHECK (NODE), 0)
+#define CATCH_BODY(NODE)       TREE_OPERAND (CATCH_EXPR_CHECK (NODE), 1)
+
+/* EH_FILTER_EXPR accessors.  */
+#define EH_FILTER_TYPES(NODE)  TREE_OPERAND (EH_FILTER_EXPR_CHECK (NODE), 0)
+#define EH_FILTER_FAILURE(NODE)        TREE_OPERAND (EH_FILTER_EXPR_CHECK (NODE), 1)
+#define EH_FILTER_MUST_NOT_THROW(NODE) \
+  (EH_FILTER_EXPR_CHECK (NODE)->base.static_flag)
+
+/* CHANGE_DYNAMIC_TYPE_EXPR accessors.  */
+#define CHANGE_DYNAMIC_TYPE_NEW_TYPE(NODE) \
+  TREE_OPERAND (CHANGE_DYNAMIC_TYPE_EXPR_CHECK (NODE), 0)
+#define CHANGE_DYNAMIC_TYPE_LOCATION(NODE) \
+  TREE_OPERAND (CHANGE_DYNAMIC_TYPE_EXPR_CHECK (NODE), 1)
+
+/* OBJ_TYPE_REF accessors.  */
+#define OBJ_TYPE_REF_EXPR(NODE)          TREE_OPERAND (OBJ_TYPE_REF_CHECK (NODE), 0)
+#define OBJ_TYPE_REF_OBJECT(NODE) TREE_OPERAND (OBJ_TYPE_REF_CHECK (NODE), 1)
+#define OBJ_TYPE_REF_TOKEN(NODE)  TREE_OPERAND (OBJ_TYPE_REF_CHECK (NODE), 2)
+
+/* ASSERT_EXPR accessors.  */
+#define ASSERT_EXPR_VAR(NODE)  TREE_OPERAND (ASSERT_EXPR_CHECK (NODE), 0)
+#define ASSERT_EXPR_COND(NODE) TREE_OPERAND (ASSERT_EXPR_CHECK (NODE), 1)
+
+/* CALL_EXPR accessors.
+ */
+#define CALL_EXPR_FN(NODE) TREE_OPERAND (CALL_EXPR_CHECK (NODE), 1)
+#define CALL_EXPR_STATIC_CHAIN(NODE) TREE_OPERAND (CALL_EXPR_CHECK (NODE), 2)
+#define CALL_EXPR_ARGS(NODE) call_expr_arglist (NODE)
+#define CALL_EXPR_ARG(NODE, I) TREE_OPERAND (CALL_EXPR_CHECK (NODE), (I) + 3)
+#define call_expr_nargs(NODE) (VL_EXP_OPERAND_LENGTH(NODE) - 3)
+
+/* CALL_EXPR_ARGP returns a pointer to the argument vector for NODE.
+   We can't use &CALL_EXPR_ARG (NODE, 0) because that will complain if
+   the argument count is zero when checking is enabled.  Instead, do
+   the pointer arithmetic to advance past the 3 fixed operands in a
+   CALL_EXPR.  That produces a valid pointer to just past the end of the
+   operand array, even if it's not valid to dereference it.  */
+#define CALL_EXPR_ARGP(NODE) \
+  (&(TREE_OPERAND (CALL_EXPR_CHECK (NODE), 0)) + 3)
+
+/* OpenMP directive and clause accessors.  */
+
+#define OMP_BODY(NODE) \
+  TREE_OPERAND (TREE_RANGE_CHECK (NODE, OMP_PARALLEL, OMP_CRITICAL), 0)
+#define OMP_CLAUSES(NODE) \
+  TREE_OPERAND (TREE_RANGE_CHECK (NODE, OMP_PARALLEL, OMP_SINGLE), 1)
+
+#define OMP_PARALLEL_BODY(NODE)    TREE_OPERAND (OMP_PARALLEL_CHECK (NODE), 0)
+#define OMP_PARALLEL_CLAUSES(NODE) TREE_OPERAND (OMP_PARALLEL_CHECK (NODE), 1)
+
+#define OMP_TASK_BODY(NODE)       TREE_OPERAND (OMP_TASK_CHECK (NODE), 0)
+#define OMP_TASK_CLAUSES(NODE)    TREE_OPERAND (OMP_TASK_CHECK (NODE), 1)
+
+#define OMP_TASKREG_CHECK(NODE)          TREE_RANGE_CHECK (NODE, OMP_PARALLEL, OMP_TASK)
+#define OMP_TASKREG_BODY(NODE)    TREE_OPERAND (OMP_TASKREG_CHECK (NODE), 0)
+#define OMP_TASKREG_CLAUSES(NODE) TREE_OPERAND (OMP_TASKREG_CHECK (NODE), 1)
+
+#define OMP_FOR_BODY(NODE)        TREE_OPERAND (OMP_FOR_CHECK (NODE), 0)
+#define OMP_FOR_CLAUSES(NODE)     TREE_OPERAND (OMP_FOR_CHECK (NODE), 1)
+#define OMP_FOR_INIT(NODE)        TREE_OPERAND (OMP_FOR_CHECK (NODE), 2)
+#define OMP_FOR_COND(NODE)        TREE_OPERAND (OMP_FOR_CHECK (NODE), 3)
+#define OMP_FOR_INCR(NODE)        TREE_OPERAND (OMP_FOR_CHECK (NODE), 4)
+#define OMP_FOR_PRE_BODY(NODE)    TREE_OPERAND (OMP_FOR_CHECK (NODE), 5)
+
+#define OMP_SECTIONS_BODY(NODE)    TREE_OPERAND (OMP_SECTIONS_CHECK (NODE), 0)
+#define OMP_SECTIONS_CLAUSES(NODE) TREE_OPERAND (OMP_SECTIONS_CHECK (NODE), 1)
+
+#define OMP_SECTION_BODY(NODE)    TREE_OPERAND (OMP_SECTION_CHECK (NODE), 0)
+
+#define OMP_SINGLE_BODY(NODE)     TREE_OPERAND (OMP_SINGLE_CHECK (NODE), 0)
+#define OMP_SINGLE_CLAUSES(NODE)   TREE_OPERAND (OMP_SINGLE_CHECK (NODE), 1)
+
+#define OMP_MASTER_BODY(NODE)     TREE_OPERAND (OMP_MASTER_CHECK (NODE), 0)
+
+#define OMP_ORDERED_BODY(NODE)    TREE_OPERAND (OMP_ORDERED_CHECK (NODE), 0)
+
+#define OMP_CRITICAL_BODY(NODE)    TREE_OPERAND (OMP_CRITICAL_CHECK (NODE), 0)
+#define OMP_CRITICAL_NAME(NODE)    TREE_OPERAND (OMP_CRITICAL_CHECK (NODE), 1)
+
+#define OMP_CLAUSE_CHAIN(NODE)     TREE_CHAIN (OMP_CLAUSE_CHECK (NODE))
+#define OMP_CLAUSE_DECL(NODE)                                          \
+  OMP_CLAUSE_OPERAND (OMP_CLAUSE_RANGE_CHECK (OMP_CLAUSE_CHECK (NODE), \
+                                             OMP_CLAUSE_PRIVATE,       \
+                                             OMP_CLAUSE_COPYPRIVATE), 0)
+
+/* True on an OMP_SECTION statement that was the last lexical member.
+   This status is meaningful in the implementation of lastprivate.  */
+#define OMP_SECTION_LAST(NODE) \
+  (OMP_SECTION_CHECK (NODE)->base.private_flag)
+
+/* True on an OMP_PARALLEL statement if it represents an explicit
+   combined parallel work-sharing constructs.  */
+#define OMP_PARALLEL_COMBINED(NODE) \
+  (OMP_PARALLEL_CHECK (NODE)->base.private_flag)
+
+/* True on a PRIVATE clause if its decl is kept around for debugging
+   information only and its DECL_VALUE_EXPR is supposed to point
+   to what it has been remapped to.  */
+#define OMP_CLAUSE_PRIVATE_DEBUG(NODE) \
+  (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_PRIVATE)->base.public_flag)
+
+/* True on a PRIVATE clause if ctor needs access to outer region's
+   variable.  */
+#define OMP_CLAUSE_PRIVATE_OUTER_REF(NODE) \
+  TREE_PRIVATE (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_PRIVATE))
+
+/* True on a LASTPRIVATE clause if a FIRSTPRIVATE clause for the same
+   decl is present in the chain.  */
+#define OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE(NODE) \
+  (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_LASTPRIVATE)->base.public_flag)
+#define OMP_CLAUSE_LASTPRIVATE_STMT(NODE) \
+  OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE,                  \
+                                               OMP_CLAUSE_LASTPRIVATE),\
+                     1)
+#define OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ(NODE) \
+  (OMP_CLAUSE_CHECK (NODE))->omp_clause.gimple_reduction_init
+
+#define OMP_CLAUSE_IF_EXPR(NODE) \
+  OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_IF), 0)
+#define OMP_CLAUSE_NUM_THREADS_EXPR(NODE) \
+  OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_NUM_THREADS),0)
+#define OMP_CLAUSE_SCHEDULE_CHUNK_EXPR(NODE) \
+  OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_SCHEDULE), 0)
+
+#define OMP_CLAUSE_COLLAPSE_EXPR(NODE) \
+  OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_COLLAPSE), 0)
+#define OMP_CLAUSE_COLLAPSE_ITERVAR(NODE) \
+  OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_COLLAPSE), 1)
+#define OMP_CLAUSE_COLLAPSE_COUNT(NODE) \
+  OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_COLLAPSE), 2)
+
+#define OMP_CLAUSE_REDUCTION_CODE(NODE)        \
+  (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_REDUCTION)->omp_clause.subcode.reduction_code)
+#define OMP_CLAUSE_REDUCTION_INIT(NODE) \
+  OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_REDUCTION), 1)
+#define OMP_CLAUSE_REDUCTION_MERGE(NODE) \
+  OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_REDUCTION), 2)
+#define OMP_CLAUSE_REDUCTION_GIMPLE_INIT(NODE) \
+  (OMP_CLAUSE_CHECK (NODE))->omp_clause.gimple_reduction_init
+#define OMP_CLAUSE_REDUCTION_GIMPLE_MERGE(NODE) \
+  (OMP_CLAUSE_CHECK (NODE))->omp_clause.gimple_reduction_merge
+#define OMP_CLAUSE_REDUCTION_PLACEHOLDER(NODE) \
+  OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_REDUCTION), 3)
+
+enum omp_clause_schedule_kind
+{
+  OMP_CLAUSE_SCHEDULE_STATIC,
+  OMP_CLAUSE_SCHEDULE_DYNAMIC,
+  OMP_CLAUSE_SCHEDULE_GUIDED,
+  OMP_CLAUSE_SCHEDULE_AUTO,
+  OMP_CLAUSE_SCHEDULE_RUNTIME
+};
+
+#define OMP_CLAUSE_SCHEDULE_KIND(NODE) \
+  (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_SCHEDULE)->omp_clause.subcode.schedule_kind)
+
+enum omp_clause_default_kind
+{
+  OMP_CLAUSE_DEFAULT_UNSPECIFIED,
+  OMP_CLAUSE_DEFAULT_SHARED,
+  OMP_CLAUSE_DEFAULT_NONE,
+  OMP_CLAUSE_DEFAULT_PRIVATE,
+  OMP_CLAUSE_DEFAULT_FIRSTPRIVATE
+};
+
+#define OMP_CLAUSE_DEFAULT_KIND(NODE) \
+  (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_DEFAULT)->omp_clause.subcode.default_kind)
+
+struct tree_exp GTY(())
+{
+  struct tree_common common;
+  location_t locus;
+  tree block;
+  tree GTY ((special ("tree_exp"),
+            desc ("TREE_CODE ((tree) &%0)")))
+    operands[1];
+};
+\f
+/* SSA_NAME accessors.  */
+
+/* Returns the variable being referenced.  Once released, this is the
+   only field that can be relied upon.  */
+#define SSA_NAME_VAR(NODE)     SSA_NAME_CHECK (NODE)->ssa_name.var
+
+/* Returns the statement which defines this SSA name.  */
+#define SSA_NAME_DEF_STMT(NODE)        SSA_NAME_CHECK (NODE)->ssa_name.def_stmt
+
+/* Returns the SSA version number of this SSA name.  Note that in
+   tree SSA, version numbers are not per variable and may be recycled.  */
+#define SSA_NAME_VERSION(NODE) SSA_NAME_CHECK (NODE)->ssa_name.version
+
+/* Nonzero if this SSA name occurs in an abnormal PHI.  SSA_NAMES are
+   never output, so we can safely use the ASM_WRITTEN_FLAG for this
+   status bit.  */
+#define SSA_NAME_OCCURS_IN_ABNORMAL_PHI(NODE) \
+    SSA_NAME_CHECK (NODE)->base.asm_written_flag
+
+/* Nonzero if this SSA_NAME expression is currently on the free list of
+   SSA_NAMES.  Using NOTHROW_FLAG seems reasonably safe since throwing
+   has no meaning for an SSA_NAME.  */
+#define SSA_NAME_IN_FREE_LIST(NODE) \
+    SSA_NAME_CHECK (NODE)->base.nothrow_flag
+
+/* Nonzero if this SSA_NAME is the default definition for the
+   underlying symbol.  A default SSA name is created for symbol S if
+   the very first reference to S in the function is a read operation.
+   Default definitions are always created by an empty statement and
+   belong to no basic block.  */
+#define SSA_NAME_IS_DEFAULT_DEF(NODE)  \
+    SSA_NAME_CHECK (NODE)->base.default_def_flag
+
+/* Attributes for SSA_NAMEs for pointer-type variables.  */
+#define SSA_NAME_PTR_INFO(N) \
+    SSA_NAME_CHECK (N)->ssa_name.ptr_info
+
+/* Get the value of this SSA_NAME, if available.  */
+#define SSA_NAME_VALUE(N) \
+   SSA_NAME_CHECK (N)->ssa_name.value_handle
+
+#ifndef _TREE_FLOW_H
+struct ptr_info_def;
+#endif
+
+
+
+/* Immediate use linking structure.  This structure is used for maintaining
+   a doubly linked list of uses of an SSA_NAME.  */
+typedef struct ssa_use_operand_d GTY(())
+{
+  struct ssa_use_operand_d* GTY((skip(""))) prev;
+  struct ssa_use_operand_d* GTY((skip(""))) next;
+  /* Immediate uses for a given SSA name are maintained as a cyclic
+     list.  To recognize the root of this list, the location field
+     needs to point to the original SSA name.  Since statements and
+     SSA names are of different data types, we need this union.  See
+     the explanation in struct immediate_use_iterator_d.  */
+  union { gimple stmt; tree ssa_name; } GTY((skip(""))) loc;
+  tree *GTY((skip(""))) use;
+} ssa_use_operand_t;
+
+/* Return the immediate_use information for an SSA_NAME. */
+#define SSA_NAME_IMM_USE_NODE(NODE) SSA_NAME_CHECK (NODE)->ssa_name.imm_uses
+
+struct tree_ssa_name GTY(())
+{
+  struct tree_common common;
+
+  /* _DECL wrapped by this SSA name.  */
+  tree var;
+
+  /* Statement that defines this SSA name.  */
+  gimple def_stmt;
+
+  /* SSA version number.  */
+  unsigned int version;
+
+  /* Pointer attributes used for alias analysis.  */
+  struct ptr_info_def *ptr_info;
+
+  /* Value for SSA name used by various passes.
+
+     Right now only invariants are allowed to persist beyond a pass in
+     this field; in the future we will allow VALUE_HANDLEs to persist
+     as well.  */
+  tree value_handle;
+
+  /* Immediate uses list for this SSA_NAME.  */
+  struct ssa_use_operand_d imm_uses;
+};
+\f
+struct phi_arg_d GTY(())
+{
+  /* imm_use MUST be the first element in struct because we do some
+     pointer arithmetic with it.  See phi_arg_index_from_use.  */
+  struct ssa_use_operand_d imm_use;
+  tree def;
+};
+
+\f
+#define OMP_CLAUSE_CODE(NODE)                                  \
+       (OMP_CLAUSE_CHECK (NODE))->omp_clause.code
+
+#define OMP_CLAUSE_SET_CODE(NODE, CODE)                                \
+       ((OMP_CLAUSE_CHECK (NODE))->omp_clause.code = (CODE))
+
+#define OMP_CLAUSE_CODE(NODE)                                  \
+       (OMP_CLAUSE_CHECK (NODE))->omp_clause.code
+
+#define OMP_CLAUSE_OPERAND(NODE, I)                            \
+       OMP_CLAUSE_ELT_CHECK (NODE, I)
+
+struct tree_omp_clause GTY(())
+{
+  struct tree_common common;
+  enum omp_clause_code code;
+  union omp_clause_subcode {
+    enum omp_clause_default_kind  default_kind;
+    enum omp_clause_schedule_kind schedule_kind;
+    enum tree_code                reduction_code;
+  } GTY ((skip)) subcode;
+
+  /* The gimplification of OMP_CLAUSE_REDUCTION_{INIT,MERGE} for omp-low's
+     usage.  */
+  gimple_seq gimple_reduction_init;
+  gimple_seq gimple_reduction_merge;
+
+  tree GTY ((length ("omp_clause_num_ops[OMP_CLAUSE_CODE ((tree)&%h)]"))) ops[1];
+};
+\f
+
+struct varray_head_tag;
+
+/* In a BLOCK node.  */
+#define BLOCK_VARS(NODE) (BLOCK_CHECK (NODE)->block.vars)
+#define BLOCK_NONLOCALIZED_VARS(NODE) (BLOCK_CHECK (NODE)->block.nonlocalized_vars)
+#define BLOCK_NUM_NONLOCALIZED_VARS(NODE) VEC_length (tree, BLOCK_NONLOCALIZED_VARS (NODE))
+#define BLOCK_NONLOCALIZED_VAR(NODE,N) VEC_index (tree, BLOCK_NONLOCALIZED_VARS (NODE), N)
+#define BLOCK_SUBBLOCKS(NODE) (BLOCK_CHECK (NODE)->block.subblocks)
+#define BLOCK_SUPERCONTEXT(NODE) (BLOCK_CHECK (NODE)->block.supercontext)
+/* Note: when changing this, make sure to find the places
+   that use chainon or nreverse.  */
+#define BLOCK_CHAIN(NODE) TREE_CHAIN (BLOCK_CHECK (NODE))
+#define BLOCK_ABSTRACT_ORIGIN(NODE) (BLOCK_CHECK (NODE)->block.abstract_origin)
+#define BLOCK_ABSTRACT(NODE) (BLOCK_CHECK (NODE)->block.abstract_flag)
+
+/* An index number for this block.  These values are not guaranteed to
+   be unique across functions -- whether or not they are depends on
+   the debugging output format in use.  */
+#define BLOCK_NUMBER(NODE) (BLOCK_CHECK (NODE)->block.block_num)
+
+/* If block reordering splits a lexical block into discontiguous
+   address ranges, we'll make a copy of the original block.
+
+   Note that this is logically distinct from BLOCK_ABSTRACT_ORIGIN.
+   In that case, we have one source block that has been replicated
+   (through inlining or unrolling) into many logical blocks, and that
+   these logical blocks have different physical variables in them.
+
+   In this case, we have one logical block split into several
+   non-contiguous address ranges.  Most debug formats can't actually
+   represent this idea directly, so we fake it by creating multiple
+   logical blocks with the same variables in them.  However, for those
+   that do support non-contiguous regions, these allow the original
+   logical block to be reconstructed, along with the set of address
+   ranges.
+
+   One of the logical block fragments is arbitrarily chosen to be
+   the ORIGIN.  The other fragments will point to the origin via
+   BLOCK_FRAGMENT_ORIGIN; the origin itself will have this pointer
+   be null.  The list of fragments will be chained through
+   BLOCK_FRAGMENT_CHAIN from the origin.  */
+
+#define BLOCK_FRAGMENT_ORIGIN(NODE) (BLOCK_CHECK (NODE)->block.fragment_origin)
+#define BLOCK_FRAGMENT_CHAIN(NODE) (BLOCK_CHECK (NODE)->block.fragment_chain)
+
+/* For an inlined function, this gives the location where it was called
+   from.  This is only set in the top level block, which corresponds to the
+   inlined function scope.  This is used in the debug output routines.  */
+
+#define BLOCK_SOURCE_LOCATION(NODE) (BLOCK_CHECK (NODE)->block.locus)
+
+struct tree_block GTY(())
+{
+  struct tree_common common;
+
+  unsigned abstract_flag : 1;
+  unsigned block_num : 31;
+
+  location_t locus;
+
+  tree vars;
+  VEC(tree,gc) *nonlocalized_vars;
+
+  tree subblocks;
+  tree supercontext;
+  tree abstract_origin;
+  tree fragment_origin;
+  tree fragment_chain;
+};
+\f
+/* Define fields and accessors for nodes representing data types.  */
+
+/* See tree.def for documentation of the use of these fields.
+   Look at the documentation of the various ..._TYPE tree codes.
+
+   Note that the type.values, type.minval, and type.maxval fields are
+   overloaded and used for different macros in different kinds of types.
+   Each macro must check to ensure the tree node is of the proper kind of
+   type.  Note also that some of the front-ends also overload these fields,
+   so they must be checked as well.  */
+
+#define TYPE_UID(NODE) (TYPE_CHECK (NODE)->type.uid)
+#define TYPE_SIZE(NODE) (TYPE_CHECK (NODE)->type.size)
+#define TYPE_SIZE_UNIT(NODE) (TYPE_CHECK (NODE)->type.size_unit)
+#define TYPE_VALUES(NODE) (ENUMERAL_TYPE_CHECK (NODE)->type.values)
+#define TYPE_DOMAIN(NODE) (ARRAY_TYPE_CHECK (NODE)->type.values)
+#define TYPE_FIELDS(NODE) (RECORD_OR_UNION_CHECK (NODE)->type.values)
+#define TYPE_CACHED_VALUES(NODE) (TYPE_CHECK(NODE)->type.values)
+#define TYPE_ORIG_SIZE_TYPE(NODE)                      \
+  (INTEGER_TYPE_CHECK (NODE)->type.values              \
+  ? TREE_TYPE ((NODE)->type.values) : NULL_TREE)
+#define TYPE_METHODS(NODE) (RECORD_OR_UNION_CHECK (NODE)->type.maxval)
+#define TYPE_VFIELD(NODE) (RECORD_OR_UNION_CHECK (NODE)->type.minval)
+#define TYPE_ARG_TYPES(NODE) (FUNC_OR_METHOD_CHECK (NODE)->type.values)
+#define TYPE_METHOD_BASETYPE(NODE) (FUNC_OR_METHOD_CHECK (NODE)->type.maxval)
+#define TYPE_OFFSET_BASETYPE(NODE) (OFFSET_TYPE_CHECK (NODE)->type.maxval)
+#define TYPE_POINTER_TO(NODE) (TYPE_CHECK (NODE)->type.pointer_to)
+#define TYPE_REFERENCE_TO(NODE) (TYPE_CHECK (NODE)->type.reference_to)
+#define TYPE_NEXT_PTR_TO(NODE) (POINTER_TYPE_CHECK (NODE)->type.minval)
+#define TYPE_NEXT_REF_TO(NODE) (REFERENCE_TYPE_CHECK (NODE)->type.minval)
+#define TYPE_MIN_VALUE(NODE) (NUMERICAL_TYPE_CHECK (NODE)->type.minval)
+#define TYPE_MAX_VALUE(NODE) (NUMERICAL_TYPE_CHECK (NODE)->type.maxval)
+#define TYPE_PRECISION(NODE) (TYPE_CHECK (NODE)->type.precision)
+#define TYPE_SYMTAB_ADDRESS(NODE) (TYPE_CHECK (NODE)->type.symtab.address)
+#define TYPE_SYMTAB_POINTER(NODE) (TYPE_CHECK (NODE)->type.symtab.pointer)
+#define TYPE_SYMTAB_DIE(NODE) (TYPE_CHECK (NODE)->type.symtab.die)
+#define TYPE_NAME(NODE) (TYPE_CHECK (NODE)->type.name)
+#define TYPE_NEXT_VARIANT(NODE) (TYPE_CHECK (NODE)->type.next_variant)
+#define TYPE_MAIN_VARIANT(NODE) (TYPE_CHECK (NODE)->type.main_variant)
+#define TYPE_CONTEXT(NODE) (TYPE_CHECK (NODE)->type.context)
+
+/* Vector types need to check target flags to determine type.  */
+extern enum machine_mode vector_type_mode (const_tree);
+#define TYPE_MODE(NODE) \
+  (TREE_CODE (TYPE_CHECK (NODE)) == VECTOR_TYPE \
+   ? vector_type_mode (NODE) : (NODE)->type.mode)
+#define SET_TYPE_MODE(NODE, MODE) \
+  (TYPE_CHECK (NODE)->type.mode = (MODE))
+
+/* The "canonical" type for this type node, which can be used to
+   compare the type for equality with another type. If two types are
+   equal (based on the semantics of the language), then they will have
+   equivalent TYPE_CANONICAL entries. 
+
+   As a special case, if TYPE_CANONICAL is NULL_TREE, then it cannot
+   be used for comparison against other types. Instead, the type is
+   said to require structural equality checks, described in
+   TYPE_STRUCTURAL_EQUALITY_P. */
+#define TYPE_CANONICAL(NODE) (TYPE_CHECK (NODE)->type.canonical)
+/* Indicates that the type node requires structural equality
+   checks. The compiler will need to look at the composition of the
+   type to determine whether it is equal to another type, rather than
+   just comparing canonical type pointers. For instance, we would need
+   to look at the return and parameter types of a FUNCTION_TYPE
+   node. */
+#define TYPE_STRUCTURAL_EQUALITY_P(NODE) (TYPE_CANONICAL (NODE) == NULL_TREE)
+/* Sets the TYPE_CANONICAL field to NULL_TREE, indicating that the
+   type node requires structural equality. */
+#define SET_TYPE_STRUCTURAL_EQUALITY(NODE) (TYPE_CANONICAL (NODE) = NULL_TREE)
+#define TYPE_LANG_SPECIFIC(NODE) (TYPE_CHECK (NODE)->type.lang_specific)
+#define TYPE_IBIT(NODE) (GET_MODE_IBIT (TYPE_MODE (NODE)))
+#define TYPE_FBIT(NODE) (GET_MODE_FBIT (TYPE_MODE (NODE)))
+
+/* For a VECTOR_TYPE node, this describes a different type which is emitted
+   in the debugging output.  We use this to describe a vector as a
+   structure containing an array.  */
+#define TYPE_DEBUG_REPRESENTATION_TYPE(NODE) (VECTOR_TYPE_CHECK (NODE)->type.values)
+
+/* For record and union types, information about this type, as a base type
+   for itself.  */
+#define TYPE_BINFO(NODE) (RECORD_OR_UNION_CHECK(NODE)->type.binfo)
+
+/* For non record and union types, used in a language-dependent way.  */
+#define TYPE_LANG_SLOT_1(NODE) (NOT_RECORD_OR_UNION_CHECK(NODE)->type.binfo)
+
+/* The (language-specific) typed-based alias set for this type.
+   Objects whose TYPE_ALIAS_SETs are different cannot alias each
+   other.  If the TYPE_ALIAS_SET is -1, no alias set has yet been
+   assigned to this type.  If the TYPE_ALIAS_SET is 0, objects of this
+   type can alias objects of any type.  */
+#define TYPE_ALIAS_SET(NODE) (TYPE_CHECK (NODE)->type.alias_set)
+
+/* Nonzero iff the typed-based alias set for this type has been
+   calculated.  */
+#define TYPE_ALIAS_SET_KNOWN_P(NODE) (TYPE_CHECK (NODE)->type.alias_set != -1)
+
+/* A TREE_LIST of IDENTIFIER nodes of the attributes that apply
+   to this type.  */
+#define TYPE_ATTRIBUTES(NODE) (TYPE_CHECK (NODE)->type.attributes)
+
+/* The alignment necessary for objects of this type.
+   The value is an int, measured in bits.  */
+#define TYPE_ALIGN(NODE) (TYPE_CHECK (NODE)->type.align)
+
+/* 1 if the alignment for this type was requested by "aligned" attribute,
+   0 if it is the default for this type.  */
+#define TYPE_USER_ALIGN(NODE) (TYPE_CHECK (NODE)->type.user_align)
+
+/* The alignment for NODE, in bytes.  */
+#define TYPE_ALIGN_UNIT(NODE) (TYPE_ALIGN (NODE) / BITS_PER_UNIT)
+
+/* If your language allows you to declare types, and you want debug info
+   for them, then you need to generate corresponding TYPE_DECL nodes.
+   These "stub" TYPE_DECL nodes have no name, and simply point at the
+   type node.  You then set the TYPE_STUB_DECL field of the type node
+   to point back at the TYPE_DECL node.  This allows the debug routines
+   to know that the two nodes represent the same type, so that we only
+   get one debug info record for them.  */
+#define TYPE_STUB_DECL(NODE) TREE_CHAIN (NODE)
+
+/* In a RECORD_TYPE, UNION_TYPE or QUAL_UNION_TYPE, it means the type
+   has BLKmode only because it lacks the alignment requirement for
+   its size.  */
+#define TYPE_NO_FORCE_BLK(NODE) (TYPE_CHECK (NODE)->type.no_force_blk_flag)
+
+/* In an INTEGER_TYPE, it means the type represents a size.  We use
+   this both for validity checking and to permit optimizations that
+   are unsafe for other types.  Note that the C `size_t' type should
+   *not* have this flag set.  The `size_t' type is simply a typedef
+   for an ordinary integer type that happens to be the type of an
+   expression returned by `sizeof'; `size_t' has no special
+   properties.  Expressions whose type have TYPE_IS_SIZETYPE set are
+   always actual sizes.  */
+#define TYPE_IS_SIZETYPE(NODE) \
+  (INTEGER_TYPE_CHECK (NODE)->type.no_force_blk_flag)
+
+/* Nonzero in a type considered volatile as a whole.  */
+#define TYPE_VOLATILE(NODE) (TYPE_CHECK (NODE)->base.volatile_flag)
+
+/* Means this type is const-qualified.  */
+#define TYPE_READONLY(NODE) (TYPE_CHECK (NODE)->base.readonly_flag)
+
+/* If nonzero, this type is `restrict'-qualified, in the C sense of
+   the term.  */
+#define TYPE_RESTRICT(NODE) (TYPE_CHECK (NODE)->type.restrict_flag)
+
+/* There is a TYPE_QUAL value for each type qualifier.  They can be
+   combined by bitwise-or to form the complete set of qualifiers for a
+   type.  */
+
+#define TYPE_UNQUALIFIED   0x0
+#define TYPE_QUAL_CONST    0x1
+#define TYPE_QUAL_VOLATILE 0x2
+#define TYPE_QUAL_RESTRICT 0x4
+
+/* The set of type qualifiers for this type.  */
+#define TYPE_QUALS(NODE)                                       \
+  ((TYPE_READONLY (NODE) * TYPE_QUAL_CONST)                    \
+   | (TYPE_VOLATILE (NODE) * TYPE_QUAL_VOLATILE)               \
+   | (TYPE_RESTRICT (NODE) * TYPE_QUAL_RESTRICT))
+
+/* These flags are available for each language front end to use internally.  */
+#define TYPE_LANG_FLAG_0(NODE) (TYPE_CHECK (NODE)->type.lang_flag_0)
+#define TYPE_LANG_FLAG_1(NODE) (TYPE_CHECK (NODE)->type.lang_flag_1)
+#define TYPE_LANG_FLAG_2(NODE) (TYPE_CHECK (NODE)->type.lang_flag_2)
+#define TYPE_LANG_FLAG_3(NODE) (TYPE_CHECK (NODE)->type.lang_flag_3)
+#define TYPE_LANG_FLAG_4(NODE) (TYPE_CHECK (NODE)->type.lang_flag_4)
+#define TYPE_LANG_FLAG_5(NODE) (TYPE_CHECK (NODE)->type.lang_flag_5)
+#define TYPE_LANG_FLAG_6(NODE) (TYPE_CHECK (NODE)->type.lang_flag_6)
+
+/* Used to keep track of visited nodes in tree traversals.  This is set to
+   0 by copy_node and make_node.  */
+#define TREE_VISITED(NODE) ((NODE)->base.visited)
+
+/* If set in an ARRAY_TYPE, indicates a string type (for languages
+   that distinguish string from array of char).
+   If set in a INTEGER_TYPE, indicates a character type.  */
+#define TYPE_STRING_FLAG(NODE) (TYPE_CHECK (NODE)->type.string_flag)
+
+/* If non-NULL, this is an upper bound of the size (in bytes) of an
+   object of the given ARRAY_TYPE.  This allows temporaries to be
+   allocated.  */
+#define TYPE_ARRAY_MAX_SIZE(ARRAY_TYPE) \
+  (ARRAY_TYPE_CHECK (ARRAY_TYPE)->type.maxval)
+
+/* For a VECTOR_TYPE, this is the number of sub-parts of the vector.  */
+#define TYPE_VECTOR_SUBPARTS(VECTOR_TYPE) \
+  (((unsigned HOST_WIDE_INT) 1) \
+   << VECTOR_TYPE_CHECK (VECTOR_TYPE)->type.precision)
+
+/* Set precision to n when we have 2^n sub-parts of the vector.  */
+#define SET_TYPE_VECTOR_SUBPARTS(VECTOR_TYPE, X) \
+  (VECTOR_TYPE_CHECK (VECTOR_TYPE)->type.precision = exact_log2 (X))
+
+/* Indicates that objects of this type must be initialized by calling a
+   function when they are created.  */
+#define TYPE_NEEDS_CONSTRUCTING(NODE) \
+  (TYPE_CHECK (NODE)->type.needs_constructing_flag)
+
+/* Indicates that objects of this type (a UNION_TYPE), should be passed
+   the same way that the first union alternative would be passed.  */
+#define TYPE_TRANSPARENT_UNION(NODE)  \
+  (UNION_TYPE_CHECK (NODE)->type.transparent_union_flag)
+
+/* For an ARRAY_TYPE, indicates that it is not permitted to take the
+   address of a component of the type.  This is the counterpart of
+   DECL_NONADDRESSABLE_P for arrays, see the definition of this flag.  */
+#define TYPE_NONALIASED_COMPONENT(NODE) \
+  (ARRAY_TYPE_CHECK (NODE)->type.transparent_union_flag)
+
+/* Indicated that objects of this type should be laid out in as
+   compact a way as possible.  */
+#define TYPE_PACKED(NODE) (TYPE_CHECK (NODE)->type.packed_flag)
+
+/* Used by type_contains_placeholder_p to avoid recomputation.
+   Values are: 0 (unknown), 1 (false), 2 (true).  Never access
+   this field directly.  */
+#define TYPE_CONTAINS_PLACEHOLDER_INTERNAL(NODE) \
+  (TYPE_CHECK (NODE)->type.contains_placeholder_bits)
+
+struct die_struct;
+
+struct tree_type GTY(())
+{
+  struct tree_common common;
+  tree values;
+  tree size;
+  tree size_unit;
+  tree attributes;
+  unsigned int uid;
+
+  unsigned int precision : 9;
+  ENUM_BITFIELD(machine_mode) mode : 7;
+
+  unsigned string_flag : 1;
+  unsigned no_force_blk_flag : 1;
+  unsigned needs_constructing_flag : 1;
+  unsigned transparent_union_flag : 1;
+  unsigned packed_flag : 1;
+  unsigned restrict_flag : 1;
+  unsigned contains_placeholder_bits : 2;
+
+  unsigned lang_flag_0 : 1;
+  unsigned lang_flag_1 : 1;
+  unsigned lang_flag_2 : 1;
+  unsigned lang_flag_3 : 1;
+  unsigned lang_flag_4 : 1;
+  unsigned lang_flag_5 : 1;
+  unsigned lang_flag_6 : 1;
+  unsigned user_align : 1;
+
+  unsigned int align;
+  alias_set_type alias_set;
+  tree pointer_to;
+  tree reference_to;
+  union tree_type_symtab {
+    int GTY ((tag ("0"))) address;
+    const char * GTY ((tag ("1"))) pointer;
+    struct die_struct * GTY ((tag ("2"))) die;
+  } GTY ((desc ("debug_hooks == &sdb_debug_hooks ? 1 : debug_hooks == &dwarf2_debug_hooks ? 2 : 0"),
+         descbits ("2"))) symtab;
+  tree name;
+  tree minval;
+  tree maxval;
+  tree next_variant;
+  tree main_variant;
+  tree binfo;
+  tree context;
+  tree canonical;
+  /* Points to a structure whose details depend on the language in use.  */
+  struct lang_type *lang_specific;
+};
+\f
+/* Define accessor macros for information about type inheritance
+   and basetypes.
+
+   A "basetype" means a particular usage of a data type for inheritance
+   in another type.  Each such basetype usage has its own "binfo"
+   object to describe it.  The binfo object is a TREE_VEC node.
+
+   Inheritance is represented by the binfo nodes allocated for a
+   given type.  For example, given types C and D, such that D is
+   inherited by C, 3 binfo nodes will be allocated: one for describing
+   the binfo properties of C, similarly one for D, and one for
+   describing the binfo properties of D as a base type for C.
+   Thus, given a pointer to class C, one can get a pointer to the binfo
+   of D acting as a basetype for C by looking at C's binfo's basetypes.  */
+
+/* BINFO specific flags.  */
+
+/* Nonzero means that the derivation chain is via a `virtual' declaration.  */
+#define BINFO_VIRTUAL_P(NODE) (TREE_BINFO_CHECK (NODE)->base.static_flag)
+
+/* Flags for language dependent use.  */
+#define BINFO_MARKED(NODE) TREE_LANG_FLAG_0(TREE_BINFO_CHECK(NODE))
+#define BINFO_FLAG_1(NODE) TREE_LANG_FLAG_1(TREE_BINFO_CHECK(NODE))
+#define BINFO_FLAG_2(NODE) TREE_LANG_FLAG_2(TREE_BINFO_CHECK(NODE))
+#define BINFO_FLAG_3(NODE) TREE_LANG_FLAG_3(TREE_BINFO_CHECK(NODE))
+#define BINFO_FLAG_4(NODE) TREE_LANG_FLAG_4(TREE_BINFO_CHECK(NODE))
+#define BINFO_FLAG_5(NODE) TREE_LANG_FLAG_5(TREE_BINFO_CHECK(NODE))
+#define BINFO_FLAG_6(NODE) TREE_LANG_FLAG_6(TREE_BINFO_CHECK(NODE))
+
+/* The actual data type node being inherited in this basetype.  */
+#define BINFO_TYPE(NODE) TREE_TYPE (TREE_BINFO_CHECK(NODE))
+
+/* The offset where this basetype appears in its containing type.
+   BINFO_OFFSET slot holds the offset (in bytes)
+   from the base of the complete object to the base of the part of the
+   object that is allocated on behalf of this `type'.
+   This is always 0 except when there is multiple inheritance.  */
+
+#define BINFO_OFFSET(NODE) (TREE_BINFO_CHECK(NODE)->binfo.offset)
+#define BINFO_OFFSET_ZEROP(NODE) (integer_zerop (BINFO_OFFSET (NODE)))
+
+/* The virtual function table belonging to this basetype.  Virtual
+   function tables provide a mechanism for run-time method dispatching.
+   The entries of a virtual function table are language-dependent.  */
+
+#define BINFO_VTABLE(NODE) (TREE_BINFO_CHECK(NODE)->binfo.vtable)
+
+/* The virtual functions in the virtual function table.  This is
+   a TREE_LIST that is used as an initial approximation for building
+   a virtual function table for this basetype.  */
+#define BINFO_VIRTUALS(NODE) (TREE_BINFO_CHECK(NODE)->binfo.virtuals)
+
+/* A vector of binfos for the direct basetypes inherited by this
+   basetype.
+
+   If this basetype describes type D as inherited in C, and if the
+   basetypes of D are E and F, then this vector contains binfos for
+   inheritance of E and F by C.  */
+#define BINFO_BASE_BINFOS(NODE) (&TREE_BINFO_CHECK(NODE)->binfo.base_binfos)
+
+/* The number of basetypes for NODE.  */
+#define BINFO_N_BASE_BINFOS(NODE) (VEC_length (tree, BINFO_BASE_BINFOS (NODE)))
+
+/* Accessor macro to get to the Nth base binfo of this binfo.  */
+#define BINFO_BASE_BINFO(NODE,N) \
+ (VEC_index (tree, BINFO_BASE_BINFOS (NODE), (N)))
+#define BINFO_BASE_ITERATE(NODE,N,B) \
+ (VEC_iterate (tree, BINFO_BASE_BINFOS (NODE), (N), (B)))
+#define BINFO_BASE_APPEND(NODE,T) \
+ (VEC_quick_push (tree, BINFO_BASE_BINFOS (NODE), (T)))
+
+/* For a BINFO record describing a virtual base class, i.e., one where
+   TREE_VIA_VIRTUAL is set, this field assists in locating the virtual
+   base.  The actual contents are language-dependent.  In the C++
+   front-end this field is an INTEGER_CST giving an offset into the
+   vtable where the offset to the virtual base can be found.  */
+#define BINFO_VPTR_FIELD(NODE) (TREE_BINFO_CHECK(NODE)->binfo.vptr_field)
+
+/* Indicates the accesses this binfo has to its bases. The values are
+   access_public_node, access_protected_node or access_private_node.
+   If this array is not present, public access is implied.  */
+#define BINFO_BASE_ACCESSES(NODE) (TREE_BINFO_CHECK(NODE)->binfo.base_accesses)
+
+#define BINFO_BASE_ACCESS(NODE,N) \
+  VEC_index (tree, BINFO_BASE_ACCESSES (NODE), (N))
+#define BINFO_BASE_ACCESS_APPEND(NODE,T) \
+  VEC_quick_push (tree, BINFO_BASE_ACCESSES (NODE), (T))
+
+/* The index in the VTT where this subobject's sub-VTT can be found.
+   NULL_TREE if there is no sub-VTT.  */
+#define BINFO_SUBVTT_INDEX(NODE) (TREE_BINFO_CHECK(NODE)->binfo.vtt_subvtt)
+
+/* The index in the VTT where the vptr for this subobject can be
+   found.  NULL_TREE if there is no secondary vptr in the VTT.  */
+#define BINFO_VPTR_INDEX(NODE) (TREE_BINFO_CHECK(NODE)->binfo.vtt_vptr)
+
+/* The BINFO_INHERITANCE_CHAIN points at the binfo for the base
+   inheriting this base for non-virtual bases. For virtual bases it
+   points either to the binfo for which this is a primary binfo, or to
+   the binfo of the most derived type.  */
+#define BINFO_INHERITANCE_CHAIN(NODE) \
+       (TREE_BINFO_CHECK(NODE)->binfo.inheritance)
+
+struct tree_binfo GTY (())
+{
+  struct tree_common common;
+
+  tree offset;
+  tree vtable;
+  tree virtuals;
+  tree vptr_field;
+  VEC(tree,gc) *base_accesses;
+  tree inheritance;
+
+  tree vtt_subvtt;
+  tree vtt_vptr;
+
+  VEC(tree,none) base_binfos;
+};
+
+\f
+/* Define fields and accessors for nodes representing declared names.  */
+
+/* Nonzero if DECL represents a variable for the SSA passes.  */
+#define SSA_VAR_P(DECL)                                                        \
+       (TREE_CODE (DECL) == VAR_DECL                                   \
+        || TREE_CODE (DECL) == PARM_DECL                               \
+        || TREE_CODE (DECL) == RESULT_DECL                             \
+        || MTAG_P (DECL)                                               \
+        || (TREE_CODE (DECL) == SSA_NAME                               \
+            && (TREE_CODE (SSA_NAME_VAR (DECL)) == VAR_DECL            \
+                || TREE_CODE (SSA_NAME_VAR (DECL)) == PARM_DECL        \
+                || TREE_CODE (SSA_NAME_VAR (DECL)) == RESULT_DECL      \
+                || MTAG_P (SSA_NAME_VAR (DECL)))))
+
+
+
+
+/* Enumerate visibility settings.  */
+#ifndef SYMBOL_VISIBILITY_DEFINED
+#define SYMBOL_VISIBILITY_DEFINED
+enum symbol_visibility
+{
+  VISIBILITY_DEFAULT,
+  VISIBILITY_PROTECTED,
+  VISIBILITY_HIDDEN,
+  VISIBILITY_INTERNAL
+};
+#endif
+
+struct function;
+
+
+/* This is the name of the object as written by the user.
+   It is an IDENTIFIER_NODE.  */
+#define DECL_NAME(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.name)
+
+/* Every ..._DECL node gets a unique number.  */
+#define DECL_UID(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.uid)
+
+/* These two fields describe where in the source code the declaration
+   was.  If the declaration appears in several places (as for a C
+   function that is declared first and then defined later), this
+   information should refer to the definition.  */
+#define DECL_SOURCE_LOCATION(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.locus)
+#define DECL_SOURCE_FILE(NODE) LOCATION_FILE (DECL_SOURCE_LOCATION (NODE))
+#define DECL_SOURCE_LINE(NODE) LOCATION_LINE (DECL_SOURCE_LOCATION (NODE))
+#define DECL_IS_BUILTIN(DECL) \
+  (DECL_SOURCE_LOCATION (DECL) <= BUILTINS_LOCATION)
+
+/*  For FIELD_DECLs, this is the RECORD_TYPE, UNION_TYPE, or
+    QUAL_UNION_TYPE node that the field is a member of.  For VAR_DECL,
+    PARM_DECL, FUNCTION_DECL, LABEL_DECL, and CONST_DECL nodes, this
+    points to either the FUNCTION_DECL for the containing function,
+    the RECORD_TYPE or UNION_TYPE for the containing type, or
+    NULL_TREE or a TRANSLATION_UNIT_DECL if the given decl has "file
+    scope".  */
+#define DECL_CONTEXT(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.context)
+#define DECL_FIELD_CONTEXT(NODE) (FIELD_DECL_CHECK (NODE)->decl_minimal.context)
+struct tree_decl_minimal GTY(())
+{
+  struct tree_common common;
+  location_t locus;
+  unsigned int uid;
+  tree name;
+  tree context;
+};
+
+/* When computing aliasing information, we represent the memory pointed-to
+   by pointers with artificial variables called "memory tags" (MT).  There
+   are two kinds of tags, namely symbol and name:
+
+   Symbol tags (SMT) are used in flow-insensitive alias analysis, they
+   represent all the pointed-to locations and variables pointed-to by
+   the same pointer symbol.  Usually, this set is computed using
+   type-based analysis (i.e., alias set classes), but this may not
+   always be the case.
+
+   Name tags (NMT) are used in flow-sensitive points-to alias
+   analysis, they represent the variables and memory locations
+   pointed-to by a specific SSA_NAME pointer.
+
+   In general, given a pointer P with a symbol tag SMT, the alias set
+   of SMT should be the union of all the alias sets of the NMTs of
+   every SSA_NAME for P.  */
+struct tree_memory_tag GTY(())
+{
+  struct tree_decl_minimal common;
+
+  bitmap GTY ((skip)) aliases;
+
+  /* True if this tag has global scope.  */
+  unsigned int is_global : 1;
+};
+
+#define MTAG_GLOBAL(NODE) (TREE_MEMORY_TAG_CHECK (NODE)->mtag.is_global)
+#define MTAG_ALIASES(NODE) (TREE_MEMORY_TAG_CHECK (NODE)->mtag.aliases)
+
+/* Memory Partition Tags (MPTs) group memory symbols under one
+   common name for the purposes of placing memory PHI nodes.  */
+
+struct tree_memory_partition_tag GTY(())
+{
+  struct tree_memory_tag common;
+  
+  /* Set of symbols grouped under this MPT.  */
+  bitmap symbols;
+};
+
+#define MPT_SYMBOLS(NODE)      (MEMORY_PARTITION_TAG_CHECK (NODE)->mpt.symbols)
+
+
+/* For any sort of a ..._DECL node, this points to the original (abstract)
+   decl node which this decl is an instance of, or else it is NULL indicating
+   that this decl is not an instance of some other decl.  For example,
+   in a nested declaration of an inline function, this points back to the
+   definition.  */
+#define DECL_ABSTRACT_ORIGIN(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.abstract_origin)
+
+/* Like DECL_ABSTRACT_ORIGIN, but returns NODE if there's no abstract
+   origin.  This is useful when setting the DECL_ABSTRACT_ORIGIN.  */
+#define DECL_ORIGIN(NODE) \
+  (DECL_ABSTRACT_ORIGIN (NODE) ? DECL_ABSTRACT_ORIGIN (NODE) : (NODE))
+
+/* Nonzero for any sort of ..._DECL node means this decl node represents an
+   inline instance of some original (abstract) decl from an inline function;
+   suppress any warnings about shadowing some other variable.  FUNCTION_DECL
+   nodes can also have their abstract origin set to themselves.  */
+#define DECL_FROM_INLINE(NODE) (DECL_ABSTRACT_ORIGIN (NODE) != NULL_TREE \
+                               && DECL_ABSTRACT_ORIGIN (NODE) != (NODE))
+
+/* In a DECL this is the field where attributes are stored.  */
+#define DECL_ATTRIBUTES(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.attributes)
+
+/* For a FUNCTION_DECL, holds the tree of BINDINGs.
+   For a TRANSLATION_UNIT_DECL, holds the namespace's BLOCK.
+   For a VAR_DECL, holds the initial value.
+   For a PARM_DECL, used for DECL_ARG_TYPE--default
+   values for parameters are encoded in the type of the function,
+   not in the PARM_DECL slot.
+   For a FIELD_DECL, this is used for enumeration values and the C
+   frontend uses it for temporarily storing bitwidth of bitfields.
+
+   ??? Need to figure out some way to check this isn't a PARM_DECL.  */
+#define DECL_INITIAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.initial)
+
+/* Holds the size of the datum, in bits, as a tree expression.
+   Need not be constant.  */
+#define DECL_SIZE(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.size)
+/* Likewise for the size in bytes.  */
+#define DECL_SIZE_UNIT(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.size_unit)
+/* Holds the alignment required for the datum, in bits.  */
+#define DECL_ALIGN(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.align)
+/* The alignment of NODE, in bytes.  */
+#define DECL_ALIGN_UNIT(NODE) (DECL_ALIGN (NODE) / BITS_PER_UNIT)
+/* Set if the alignment of this DECL has been set by the user, for
+   example with an 'aligned' attribute.  */
+#define DECL_USER_ALIGN(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.user_align)
+/* Holds the machine mode corresponding to the declaration of a variable or
+   field.  Always equal to TYPE_MODE (TREE_TYPE (decl)) except for a
+   FIELD_DECL.  */
+#define DECL_MODE(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.mode)
+
+/* For FUNCTION_DECL, if it is built-in, this identifies which built-in
+   operation it is.  Note, however, that this field is overloaded, with
+   DECL_BUILT_IN_CLASS as the discriminant, so the latter must always be
+   checked before any access to the former.  */
+#define DECL_FUNCTION_CODE(NODE) \
+  (FUNCTION_DECL_CHECK (NODE)->function_decl.function_code)
+#define DECL_DEBUG_EXPR_IS_FROM(NODE) \
+  (DECL_COMMON_CHECK (NODE)->decl_common.debug_expr_is_from)
+
+/* Nonzero for a given ..._DECL node means that the name of this node should
+   be ignored for symbolic debug purposes.  */
+#define DECL_IGNORED_P(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.ignored_flag)
+
+/* Nonzero for a given ..._DECL node means that this node represents an
+   "abstract instance" of the given declaration (e.g. in the original
+   declaration of an inline function).  When generating symbolic debugging
+   information, we mustn't try to generate any address information for nodes
+   marked as "abstract instances" because we don't actually generate
+   any code or allocate any data space for such instances.  */
+#define DECL_ABSTRACT(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.abstract_flag)
+
+/* Language-specific decl information.  */
+#define DECL_LANG_SPECIFIC(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_specific)
+
+/* In a VAR_DECL or FUNCTION_DECL, nonzero means external reference:
+   do not allocate storage, and refer to a definition elsewhere.  Note that
+   this does not necessarily imply the entity represented by NODE
+   has no program source-level definition in this translation unit.  For
+   example, for a FUNCTION_DECL, DECL_SAVED_TREE may be non-NULL and
+   DECL_EXTERNAL may be true simultaneously; that can be the case for
+   a C99 "extern inline" function.  */
+#define DECL_EXTERNAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.decl_flag_2)
+
+/* Nonzero in a ..._DECL means this variable is ref'd from a nested function.
+   For VAR_DECL nodes, PARM_DECL nodes, and FUNCTION_DECL nodes.
+
+   For LABEL_DECL nodes, nonzero if nonlocal gotos to the label are permitted.
+
+   Also set in some languages for variables, etc., outside the normal
+   lexical scope, such as class instance variables.  */
+#define DECL_NONLOCAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.nonlocal_flag)
+
+/* Used in VAR_DECLs to indicate that the variable is a vtable.
+   Used in FIELD_DECLs for vtable pointers.
+   Used in FUNCTION_DECLs to indicate that the function is virtual.  */
+#define DECL_VIRTUAL_P(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.virtual_flag)
+
+/* Used to indicate that this DECL represents a compiler-generated entity.  */
+#define DECL_ARTIFICIAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.artificial_flag)
+
+/* Additional flags for language-specific uses.  */
+#define DECL_LANG_FLAG_0(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_0)
+#define DECL_LANG_FLAG_1(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_1)
+#define DECL_LANG_FLAG_2(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_2)
+#define DECL_LANG_FLAG_3(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_3)
+#define DECL_LANG_FLAG_4(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_4)
+#define DECL_LANG_FLAG_5(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_5)
+#define DECL_LANG_FLAG_6(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_6)
+#define DECL_LANG_FLAG_7(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_7)
+
+/* Used to indicate an alias set for the memory pointed to by this
+   particular FIELD_DECL, PARM_DECL, or VAR_DECL, which must have
+   pointer (or reference) type.  */
+#define DECL_POINTER_ALIAS_SET(NODE) \
+  (DECL_COMMON_CHECK (NODE)->decl_common.pointer_alias_set)
+
+/* Nonzero if an alias set has been assigned to this declaration.  */
+#define DECL_POINTER_ALIAS_SET_KNOWN_P(NODE) \
+  (DECL_POINTER_ALIAS_SET (NODE) != - 1)
+
+/* Nonzero for a decl which is at file scope.  */
+#define DECL_FILE_SCOPE_P(EXP)                                         \
+  (! DECL_CONTEXT (EXP)                                                \
+   || TREE_CODE (DECL_CONTEXT (EXP)) == TRANSLATION_UNIT_DECL)
+
+/* Nonzero for a decl that is decorated using attribute used.
+   This indicates compiler tools that this decl needs to be preserved.  */
+#define DECL_PRESERVE_P(DECL) \
+  DECL_COMMON_CHECK (DECL)->decl_common.preserve_flag
+
+/* For function local variables of COMPLEX and VECTOR types,
+   indicates that the variable is not aliased, and that all
+   modifications to the variable have been adjusted so that
+   they are killing assignments.  Thus the variable may now
+   be treated as a GIMPLE register, and use real instead of
+   virtual ops in SSA form.  */
+#define DECL_GIMPLE_REG_P(DECL) \
+  DECL_COMMON_CHECK (DECL)->decl_common.gimple_reg_flag
+
+/* For a DECL with pointer type, this is set if Type Based Alias
+   Analysis should not be applied to this DECL.  */
+#define DECL_NO_TBAA_P(DECL) \
+  DECL_COMMON_CHECK (DECL)->decl_common.no_tbaa_flag
+
+struct tree_decl_common GTY(())
+{
+  struct tree_decl_minimal common;
+  tree size;
+
+  ENUM_BITFIELD(machine_mode) mode : 8;
+
+  unsigned nonlocal_flag : 1;
+  unsigned virtual_flag : 1;
+  unsigned ignored_flag : 1;
+  unsigned abstract_flag : 1;
+  unsigned artificial_flag : 1;
+  unsigned user_align : 1;
+  unsigned preserve_flag: 1;
+  unsigned debug_expr_is_from : 1;
+
+  unsigned lang_flag_0 : 1;
+  unsigned lang_flag_1 : 1;
+  unsigned lang_flag_2 : 1;
+  unsigned lang_flag_3 : 1;
+  unsigned lang_flag_4 : 1;
+  unsigned lang_flag_5 : 1;
+  unsigned lang_flag_6 : 1;
+  unsigned lang_flag_7 : 1;
+
+  /* In LABEL_DECL, this is DECL_ERROR_ISSUED.
+     In VAR_DECL and PARM_DECL, this is DECL_REGISTER.  */
+  unsigned decl_flag_0 : 1;
+  /* In FIELD_DECL, this is DECL_PACKED.  */
+  unsigned decl_flag_1 : 1;
+  /* In FIELD_DECL, this is DECL_BIT_FIELD
+     In VAR_DECL and FUNCTION_DECL, this is DECL_EXTERNAL.
+     In TYPE_DECL, this is TYPE_DECL_SUPRESS_DEBUG.  */
+  unsigned decl_flag_2 : 1;
+  /* In FIELD_DECL, this is DECL_NONADDRESSABLE_P
+     In VAR_DECL and PARM_DECL, this is DECL_HAS_VALUE_EXPR.  */
+  unsigned decl_flag_3 : 1;
+  /* Logically, these two would go in a theoretical base shared by var and
+     parm decl. */
+  unsigned gimple_reg_flag : 1;
+  /* In a DECL with pointer type, set if no TBAA should be done.  */
+  unsigned no_tbaa_flag : 1;
+  /* Padding so that 'align' can be on a 32-bit boundary.  */
+  unsigned decl_common_unused : 2;
+
+  unsigned int align : 24;
+  /* DECL_OFFSET_ALIGN, used only for FIELD_DECLs.  */
+  unsigned int off_align : 8;
+
+  tree size_unit;
+  tree initial;
+  tree attributes;
+  tree abstract_origin;
+
+  alias_set_type pointer_alias_set;
+  /* Points to a structure whose details depend on the language in use.  */
+  struct lang_decl *lang_specific;
+};
+
+extern tree decl_value_expr_lookup (tree);
+extern void decl_value_expr_insert (tree, tree);
+
+/* In a VAR_DECL or PARM_DECL, the location at which the value may be found,
+   if transformations have made this more complicated than evaluating the
+   decl itself.  This should only be used for debugging; once this field has
+   been set, the decl itself may not legitimately appear in the function.  */
+#define DECL_HAS_VALUE_EXPR_P(NODE) \
+  (TREE_CHECK2 (NODE, VAR_DECL, PARM_DECL)->decl_common.decl_flag_3)
+#define DECL_VALUE_EXPR(NODE) \
+  (decl_value_expr_lookup (DECL_WRTL_CHECK (NODE)))
+#define SET_DECL_VALUE_EXPR(NODE, VAL)                 \
+  (decl_value_expr_insert (DECL_WRTL_CHECK (NODE), VAL))
+
+/* Holds the RTL expression for the value of a variable or function.
+   This value can be evaluated lazily for functions, variables with
+   static storage duration, and labels.  */
+#define DECL_RTL(NODE)                                 \
+  (DECL_WRTL_CHECK (NODE)->decl_with_rtl.rtl           \
+   ? (NODE)->decl_with_rtl.rtl                                 \
+   : (make_decl_rtl (NODE), (NODE)->decl_with_rtl.rtl))
+
+/* Set the DECL_RTL for NODE to RTL.  */
+#define SET_DECL_RTL(NODE, RTL) set_decl_rtl (NODE, RTL)
+
+/* Returns nonzero if NODE is a tree node that can contain RTL.  */
+#define HAS_RTL_P(NODE) (CODE_CONTAINS_STRUCT (TREE_CODE (NODE), TS_DECL_WRTL))
+
+/* Returns nonzero if the DECL_RTL for NODE has already been set.  */
+#define DECL_RTL_SET_P(NODE)  (HAS_RTL_P (NODE) && DECL_WRTL_CHECK (NODE)->decl_with_rtl.rtl != NULL)
+
+/* Copy the RTL from NODE1 to NODE2.  If the RTL was not set for
+   NODE1, it will not be set for NODE2; this is a lazy copy.  */
+#define COPY_DECL_RTL(NODE1, NODE2) \
+  (DECL_WRTL_CHECK (NODE2)->decl_with_rtl.rtl = DECL_WRTL_CHECK (NODE1)->decl_with_rtl.rtl)
+
+/* The DECL_RTL for NODE, if it is set, or NULL, if it is not set.  */
+#define DECL_RTL_IF_SET(NODE) (DECL_RTL_SET_P (NODE) ? DECL_RTL (NODE) : NULL)
+
+/* In VAR_DECL and PARM_DECL nodes, nonzero means declared `register'.  */
+#define DECL_REGISTER(NODE) (DECL_WRTL_CHECK (NODE)->decl_common.decl_flag_0)
+
+struct tree_decl_with_rtl GTY(())
+{
+  struct tree_decl_common common;
+  rtx rtl;
+};
+
+/* In a FIELD_DECL, this is the field position, counting in bytes, of the
+   DECL_OFFSET_ALIGN-bit-sized word containing the bit closest to the beginning
+   of the structure.  */
+#define DECL_FIELD_OFFSET(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.offset)
+
+/* In a FIELD_DECL, this is the offset, in bits, of the first bit of the
+   field from DECL_FIELD_OFFSET.  This field may be nonzero even for fields
+   that are not bit fields (since DECL_OFFSET_ALIGN may be larger than the
+   natural alignment of the field's type).  */
+#define DECL_FIELD_BIT_OFFSET(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.bit_offset)
+
+/* In a FIELD_DECL, this indicates whether the field was a bit-field and
+   if so, the type that was originally specified for it.
+   TREE_TYPE may have been modified (in finish_struct).  */
+#define DECL_BIT_FIELD_TYPE(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.bit_field_type)
+
+/* For a FIELD_DECL in a QUAL_UNION_TYPE, records the expression, which
+   if nonzero, indicates that the field occupies the type.  */
+#define DECL_QUALIFIER(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.qualifier)
+
+/* For FIELD_DECLs, off_align holds the number of low-order bits of
+   DECL_FIELD_OFFSET which are known to be always zero.
+   DECL_OFFSET_ALIGN thus returns the alignment that DECL_FIELD_OFFSET
+   has.  */
+#define DECL_OFFSET_ALIGN(NODE) \
+  (((unsigned HOST_WIDE_INT)1) << FIELD_DECL_CHECK (NODE)->decl_common.off_align)
+
+/* Specify that DECL_ALIGN(NODE) is a multiple of X.  */
+#define SET_DECL_OFFSET_ALIGN(NODE, X) \
+  (FIELD_DECL_CHECK (NODE)->decl_common.off_align = exact_log2 ((X) & -(X)))
+/* 1 if the alignment for this type was requested by "aligned" attribute,
+   0 if it is the default for this type.  */
+
+/* For FIELD_DECLS, DECL_FCONTEXT is the *first* baseclass in
+   which this FIELD_DECL is defined.  This information is needed when
+   writing debugging information about vfield and vbase decls for C++.  */
+#define DECL_FCONTEXT(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.fcontext)
+
+/* In a FIELD_DECL, indicates this field should be bit-packed.  */
+#define DECL_PACKED(NODE) (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_1)
+
+/* Nonzero in a FIELD_DECL means it is a bit field, and must be accessed
+   specially.  */
+#define DECL_BIT_FIELD(NODE) (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_2)
+
+/* Used in a FIELD_DECL to indicate that we cannot form the address of
+   this component.  This makes it possible for Type-Based Alias Analysis
+   to disambiguate accesses to this field with indirect accesses using
+   the field's type:
+
+     struct S { int i; } s;
+     int *p;
+
+   If the flag is set on 'i', TBAA computes that s.i and *p never conflict.
+
+   From the implementation's viewpoint, the alias set of the type of the
+   field 'i' (int) will not be recorded as a subset of that of the type of
+   's' (struct S) in record_component_aliases.  The counterpart is that
+   accesses to s.i must not be given the alias set of the type of 'i'
+   (int) but instead directly that of the type of 's' (struct S).  */
+#define DECL_NONADDRESSABLE_P(NODE) \
+  (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_3)
+
+struct tree_field_decl GTY(())
+{
+  struct tree_decl_common common;
+
+  tree offset;
+  tree bit_field_type;
+  tree qualifier;
+  tree bit_offset;
+  tree fcontext;
+
+};
+
+/* A numeric unique identifier for a LABEL_DECL.  The UID allocation is
+   dense, unique within any one function, and may be used to index arrays.
+   If the value is -1, then no UID has been assigned.  */
+#define LABEL_DECL_UID(NODE) \
+  (LABEL_DECL_CHECK (NODE)->decl_common.pointer_alias_set)
+
+/* In LABEL_DECL nodes, nonzero means that an error message about
+   jumping into such a binding contour has been printed for this label.  */
+#define DECL_ERROR_ISSUED(NODE) (LABEL_DECL_CHECK (NODE)->decl_common.decl_flag_0)
+
+struct tree_label_decl GTY(())
+{
+  struct tree_decl_with_rtl common;
+};
+
+struct tree_result_decl GTY(())
+{
+  struct tree_decl_with_rtl common;
+};
+
+struct tree_const_decl GTY(())
+{
+  struct tree_decl_with_rtl common;
+};
+
+/* For a PARM_DECL, records the data type used to pass the argument,
+   which may be different from the type seen in the program.  */
+#define DECL_ARG_TYPE(NODE) (PARM_DECL_CHECK (NODE)->decl_common.initial)
+
+/* For PARM_DECL, holds an RTL for the stack slot or register
+   where the data was actually passed.  */
+#define DECL_INCOMING_RTL(NODE) (PARM_DECL_CHECK (NODE)->parm_decl.incoming_rtl)
+
+struct tree_parm_decl GTY(())
+{
+  struct tree_decl_with_rtl common;
+  rtx incoming_rtl;
+};
+
+
+/* Nonzero in a decl means that the gimplifier has seen (or placed)
+   this variable in a BIND_EXPR.  */
+#define DECL_SEEN_IN_BIND_EXPR_P(NODE) \
+  (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.seen_in_bind_expr)
+
+/* Used to indicate that the linkage status of this DECL is not yet known,
+   so it should not be output now.  */
+#define DECL_DEFER_OUTPUT(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.defer_output)
+
+/* Nonzero for a given ..._DECL node means that no warnings should be
+   generated just because this node is unused.  */
+#define DECL_IN_SYSTEM_HEADER(NODE) \
+  (in_system_header_at (DECL_SOURCE_LOCATION (NODE)))
+
+  /* Used to indicate that this DECL has weak linkage.  */
+#define DECL_WEAK(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.weak_flag)
+
+/* Internal to the gimplifier.  Indicates that the value is a formal
+   temporary controlled by the gimplifier.  */
+#define DECL_GIMPLE_FORMAL_TEMP_P(DECL) \
+  DECL_WITH_VIS_CHECK (DECL)->decl_with_vis.gimple_formal_temp
+
+/* Used to indicate that the DECL is a dllimport.  */
+#define DECL_DLLIMPORT_P(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.dllimport_flag)
+
+/* DECL_BASED_ON_RESTRICT_P records whether a VAR_DECL is a temporary
+   based on a variable with a restrict qualified type.  If it is,
+   DECL_RESTRICT_BASE returns the restrict qualified variable on which
+   it is based.  */
+
+#define DECL_BASED_ON_RESTRICT_P(NODE) \
+  (VAR_DECL_CHECK (NODE)->decl_with_vis.based_on_restrict_p)
+#define DECL_GET_RESTRICT_BASE(NODE) \
+  (decl_restrict_base_lookup (VAR_DECL_CHECK (NODE)))
+#define SET_DECL_RESTRICT_BASE(NODE, VAL) \
+  (decl_restrict_base_insert (VAR_DECL_CHECK (NODE), (VAL)))
+
+extern tree decl_restrict_base_lookup (tree);
+extern void decl_restrict_base_insert (tree, tree);
+
+/* Used in a DECL to indicate that, even if it TREE_PUBLIC, it need
+   not be put out unless it is needed in this translation unit.
+   Entities like this are shared across translation units (like weak
+   entities), but are guaranteed to be generated by any translation
+   unit that needs them, and therefore need not be put out anywhere
+   where they are not needed.  DECL_COMDAT is just a hint to the
+   back-end; it is up to front-ends which set this flag to ensure
+   that there will never be any harm, other than bloat, in putting out
+   something which is DECL_COMDAT.  */
+#define DECL_COMDAT(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.comdat_flag)
+
+/* A replaceable function is one which may be replaced at link-time
+   with an entirely different definition, provided that the
+   replacement has the same type.  For example, functions declared
+   with __attribute__((weak)) on most systems are replaceable.  
+
+   COMDAT functions are not replaceable, since all definitions of the
+   function must be equivalent.  It is important that COMDAT functions
+   not be treated as replaceable so that use of C++ template
+   instantiations is not penalized.  
+
+   For example, DECL_REPLACEABLE is used to determine whether or not a
+   function (including a template instantiation) which is not
+   explicitly declared "inline" can be inlined.  If the function is
+   DECL_REPLACEABLE then it is not safe to do the inlining, since the
+   implementation chosen at link-time may be different.  However, a
+   function that is not DECL_REPLACEABLE can be inlined, since all
+   versions of the function will be functionally identical.  */
+#define DECL_REPLACEABLE_P(NODE) \
+  (!DECL_COMDAT (NODE) && !targetm.binds_local_p (NODE))
+
+/* The name of the object as the assembler will see it (but before any
+   translations made by ASM_OUTPUT_LABELREF).  Often this is the same
+   as DECL_NAME.  It is an IDENTIFIER_NODE.  */
+#define DECL_ASSEMBLER_NAME(NODE) decl_assembler_name (NODE)
+
+/* Return true if NODE is a NODE that can contain a DECL_ASSEMBLER_NAME.
+   This is true of all DECL nodes except FIELD_DECL.  */
+#define HAS_DECL_ASSEMBLER_NAME_P(NODE) \
+  (CODE_CONTAINS_STRUCT (TREE_CODE (NODE), TS_DECL_WITH_VIS))
+
+/* Returns nonzero if the DECL_ASSEMBLER_NAME for NODE has been set.  If zero,
+   the NODE might still have a DECL_ASSEMBLER_NAME -- it just hasn't been set
+   yet.  */
+#define DECL_ASSEMBLER_NAME_SET_P(NODE) \
+  (HAS_DECL_ASSEMBLER_NAME_P (NODE) &&  DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.assembler_name != NULL_TREE)
+
+/* Set the DECL_ASSEMBLER_NAME for NODE to NAME.  */
+#define SET_DECL_ASSEMBLER_NAME(NODE, NAME) \
+  (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.assembler_name = (NAME))
+
+/* Copy the DECL_ASSEMBLER_NAME from DECL1 to DECL2.  Note that if DECL1's
+   DECL_ASSEMBLER_NAME has not yet been set, using this macro will not cause
+   the DECL_ASSEMBLER_NAME of either DECL to be set.  In other words, the
+   semantics of using this macro, are different than saying:
+
+     SET_DECL_ASSEMBLER_NAME(DECL2, DECL_ASSEMBLER_NAME (DECL1))
+
+   which will try to set the DECL_ASSEMBLER_NAME for DECL1.  */
+
+#define COPY_DECL_ASSEMBLER_NAME(DECL1, DECL2)                         \
+  (DECL_ASSEMBLER_NAME_SET_P (DECL1)                                   \
+   ? (void) SET_DECL_ASSEMBLER_NAME (DECL2,                            \
+                                    DECL_ASSEMBLER_NAME (DECL1))       \
+   : (void) 0)
+
+/* Records the section name in a section attribute.  Used to pass
+   the name from decl_attributes to make_function_rtl and make_decl_rtl.  */
+#define DECL_SECTION_NAME(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.section_name)
+
+/* Value of the decls's visibility attribute */
+#define DECL_VISIBILITY(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.visibility)
+
+/* Nonzero means that the decl had its visibility specified rather than
+   being inferred.  */
+#define DECL_VISIBILITY_SPECIFIED(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.visibility_specified)
+
+/* Used in TREE_PUBLIC decls to indicate that copies of this DECL in
+   multiple translation units should be merged.  */
+#define DECL_ONE_ONLY(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.one_only)
+
+struct tree_decl_with_vis GTY(())
+{
+ struct tree_decl_with_rtl common;
+ tree assembler_name;
+ tree section_name;
+
+ /* Belong to VAR_DECL exclusively.  */
+ unsigned defer_output:1;
+ unsigned hard_register:1;
+ unsigned thread_local:1;
+ unsigned common_flag:1;
+ unsigned in_text_section : 1;
+ unsigned gimple_formal_temp : 1;
+ unsigned dllimport_flag : 1;
+ unsigned based_on_restrict_p : 1;
+ /* Used by C++.  Might become a generic decl flag.  */
+ unsigned shadowed_for_var_p : 1;
+
+ /* Don't belong to VAR_DECL exclusively.  */
+ unsigned weak_flag:1;
+ unsigned seen_in_bind_expr : 1;
+ unsigned comdat_flag : 1;
+ ENUM_BITFIELD(symbol_visibility) visibility : 2;
+ unsigned visibility_specified : 1;
+ /* Belong to FUNCTION_DECL exclusively.  */
+ unsigned one_only : 1;
+ unsigned init_priority_p:1;
+
+ /* Belongs to VAR_DECL exclusively.  */
+ ENUM_BITFIELD(tls_model) tls_model : 3;
+ /* 12 unused bits. */
+};
+
+/* In a VAR_DECL that's static,
+   nonzero if the space is in the text section.  */
+#define DECL_IN_TEXT_SECTION(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.in_text_section)
+
+/* Nonzero for a given ..._DECL node means that this node should be
+   put in .common, if possible.  If a DECL_INITIAL is given, and it
+   is not error_mark_node, then the decl cannot be put in .common.  */
+#define DECL_COMMON(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.common_flag)
+
+/* In a VAR_DECL, nonzero if the decl is a register variable with
+   an explicit asm specification.  */
+#define DECL_HARD_REGISTER(NODE)  (VAR_DECL_CHECK (NODE)->decl_with_vis.hard_register)
+
+extern tree decl_debug_expr_lookup (tree);
+extern void decl_debug_expr_insert (tree, tree);
+/* For VAR_DECL, this is set to either an expression that it was split
+   from (if DECL_DEBUG_EXPR_IS_FROM is true), otherwise a tree_list of
+   subexpressions that it was split into.  */
+#define DECL_DEBUG_EXPR(NODE) \
+  (decl_debug_expr_lookup (VAR_DECL_CHECK (NODE)))
+
+#define SET_DECL_DEBUG_EXPR(NODE, VAL) \
+  (decl_debug_expr_insert (VAR_DECL_CHECK (NODE), VAL))
+
+/* An initialization priority.  */
+typedef unsigned short priority_type;
+
+extern priority_type decl_init_priority_lookup (tree);
+extern priority_type decl_fini_priority_lookup (tree);
+extern void decl_init_priority_insert (tree, priority_type);
+extern void decl_fini_priority_insert (tree, priority_type);
+
+/* In a non-local VAR_DECL with static storage duration, true if the
+   variable has an initialization priority.  If false, the variable
+   will be initialized at the DEFAULT_INIT_PRIORITY.  */
+#define DECL_HAS_INIT_PRIORITY_P(NODE) \
+  (VAR_DECL_CHECK (NODE)->decl_with_vis.init_priority_p)
+
+/* For a VAR_DECL or FUNCTION_DECL the initialization priority of
+   NODE.  */ 
+#define DECL_INIT_PRIORITY(NODE) \
+  (decl_init_priority_lookup (NODE))
+/* Set the initialization priority for NODE to VAL.  */
+#define SET_DECL_INIT_PRIORITY(NODE, VAL) \
+  (decl_init_priority_insert (NODE, VAL))
+
+/* For a FUNCTION_DECL the finalization priority of NODE.  */
+#define DECL_FINI_PRIORITY(NODE) \
+  (decl_fini_priority_lookup (NODE))
+/* Set the finalization priority for NODE to VAL.  */
+#define SET_DECL_FINI_PRIORITY(NODE, VAL) \
+  (decl_fini_priority_insert (NODE, VAL))
+
+/* The initialization priority for entities for which no explicit
+   initialization priority has been specified.  */
+#define DEFAULT_INIT_PRIORITY 65535
+
+/* The maximum allowed initialization priority.  */
+#define MAX_INIT_PRIORITY 65535
+
+/* The largest priority value reserved for use by system runtime
+   libraries.  */
+#define MAX_RESERVED_INIT_PRIORITY 100
+
+/* In a VAR_DECL, the model to use if the data should be allocated from
+   thread-local storage.  */
+#define DECL_TLS_MODEL(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.tls_model)
+
+/* In a VAR_DECL, nonzero if the data should be allocated from
+   thread-local storage.  */
+#define DECL_THREAD_LOCAL_P(NODE) \
+  (VAR_DECL_CHECK (NODE)->decl_with_vis.tls_model >= TLS_MODEL_REAL)
+
+struct tree_var_decl GTY(())
+{
+  struct tree_decl_with_vis common;
+};
+
+
+/* This field is used to reference anything in decl.result and is meant only
+   for use by the garbage collector.  */
+#define DECL_RESULT_FLD(NODE) (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.result)
+
+/* The DECL_VINDEX is used for FUNCTION_DECLS in two different ways.
+   Before the struct containing the FUNCTION_DECL is laid out,
+   DECL_VINDEX may point to a FUNCTION_DECL in a base class which
+   is the FUNCTION_DECL which this FUNCTION_DECL will replace as a virtual
+   function.  When the class is laid out, this pointer is changed
+   to an INTEGER_CST node which is suitable for use as an index
+   into the virtual function table.
+   C++ also uses this field in namespaces, hence the DECL_NON_COMMON_CHECK.  */
+#define DECL_VINDEX(NODE) (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.vindex)
+
+struct tree_decl_non_common GTY(())
+
+{
+  struct tree_decl_with_vis common;
+  /* C++ uses this in namespaces.  */
+  tree saved_tree;
+  /* C++ uses this in templates.  */
+  tree arguments;
+  /* Almost all FE's use this.  */
+  tree result;
+  /* C++ uses this in namespaces.  */
+  tree vindex;
+};
+
+/* In FUNCTION_DECL, holds the decl for the return value.  */
+#define DECL_RESULT(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.result)
+
+/* In a FUNCTION_DECL, nonzero if the function cannot be inlined.  */
+#define DECL_UNINLINABLE(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.uninlinable)
+
+/* In a FUNCTION_DECL, the saved representation of the body of the
+   entire function.  */
+#define DECL_SAVED_TREE(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.saved_tree)
+
+/* Nonzero in a FUNCTION_DECL means this function should be treated
+   as if it were a malloc, meaning it returns a pointer that is
+   not an alias.  */
+#define DECL_IS_MALLOC(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.malloc_flag)
+
+/* Nonzero in a FUNCTION_DECL means this function should be treated as
+   C++ operator new, meaning that it returns a pointer for which we
+   should not use type based aliasing.  */
+#define DECL_IS_OPERATOR_NEW(NODE) \
+  (FUNCTION_DECL_CHECK (NODE)->function_decl.operator_new_flag)
+
+/* Nonzero in a FUNCTION_DECL means this function may return more
+   than once.  */
+#define DECL_IS_RETURNS_TWICE(NODE) \
+  (FUNCTION_DECL_CHECK (NODE)->function_decl.returns_twice_flag)
+
+/* Nonzero in a FUNCTION_DECL means this function should be treated
+   as "pure" function (like const function, but may read global memory).  */
+#define DECL_PURE_P(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.pure_flag)
+
+/* Nonzero only if one of TREE_READONLY or DECL_PURE_P is nonzero AND
+   the const or pure function may not terminate.  When this is nonzero
+   for a const or pure function, it can be dealt with by cse passes
+   but cannot be removed by dce passes since you are not allowed to
+   change an infinite looping program into one that terminates without
+   error.  */
+#define DECL_LOOPING_CONST_OR_PURE_P(NODE) \
+  (FUNCTION_DECL_CHECK (NODE)->function_decl.looping_const_or_pure_flag)
+
+/* Nonzero in a FUNCTION_DECL means this function should be treated
+   as "novops" function (function that does not read global memory,
+   but may have arbitrary side effects).  */
+#define DECL_IS_NOVOPS(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.novops_flag)
+
+/* Used in FUNCTION_DECLs to indicate that they should be run automatically
+   at the beginning or end of execution.  */
+#define DECL_STATIC_CONSTRUCTOR(NODE) \
+  (FUNCTION_DECL_CHECK (NODE)->function_decl.static_ctor_flag)
+
+#define DECL_STATIC_DESTRUCTOR(NODE) \
+(FUNCTION_DECL_CHECK (NODE)->function_decl.static_dtor_flag)
+
+/* Used in FUNCTION_DECLs to indicate that function entry and exit should
+   be instrumented with calls to support routines.  */
+#define DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT(NODE) \
+  (FUNCTION_DECL_CHECK (NODE)->function_decl.no_instrument_function_entry_exit)
+
+/* Used in FUNCTION_DECLs to indicate that limit-stack-* should be
+   disabled in this function.  */
+#define DECL_NO_LIMIT_STACK(NODE) \
+  (FUNCTION_DECL_CHECK (NODE)->function_decl.no_limit_stack)
+
+/* In a FUNCTION_DECL with a nonzero DECL_CONTEXT, indicates that a
+   static chain is not needed.  */
+#define DECL_NO_STATIC_CHAIN(NODE) \
+  (FUNCTION_DECL_CHECK (NODE)->function_decl.regdecl_flag)
+
+/* Nonzero for a decl that cgraph has decided should be inlined into
+   at least one call site.  It is not meaningful to look at this
+   directly; always use cgraph_function_possibly_inlined_p.  */
+#define DECL_POSSIBLY_INLINED(DECL) \
+  FUNCTION_DECL_CHECK (DECL)->function_decl.possibly_inlined
+
+/* Nonzero in a FUNCTION_DECL means that this function was declared inline,
+   such as via the `inline' keyword in C/C++.  This flag controls the linkage
+   semantics of 'inline'  */
+#define DECL_DECLARED_INLINE_P(NODE) \
+  (FUNCTION_DECL_CHECK (NODE)->function_decl.declared_inline_flag)
+
+/* Nonzero in a FUNCTION_DECL means this function should not get
+   -Winline warnings.  */
+#define DECL_NO_INLINE_WARNING_P(NODE) \
+  (FUNCTION_DECL_CHECK (NODE)->function_decl.no_inline_warning_flag)
+
+/* Nonzero in a FUNCTION_DECL that should be always inlined by the inliner
+   disregarding size and cost heuristics.  This is equivalent to using
+   the always_inline attribute without the required diagnostics if the
+   function cannot be inlined.  */
+#define DECL_DISREGARD_INLINE_LIMITS(NODE) \
+  (FUNCTION_DECL_CHECK (NODE)->function_decl.disregard_inline_limits)
+
+/* For FUNCTION_DECL, this holds a pointer to a structure ("struct function")
+   that describes the status of this function.  */
+#define DECL_STRUCT_FUNCTION(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.f)
+
+/* In a FUNCTION_DECL, nonzero means a built in function.  */
+#define DECL_BUILT_IN(NODE) (DECL_BUILT_IN_CLASS (NODE) != NOT_BUILT_IN)
+
+/* For a builtin function, identify which part of the compiler defined it.  */
+#define DECL_BUILT_IN_CLASS(NODE) \
+   (FUNCTION_DECL_CHECK (NODE)->function_decl.built_in_class)
+
+/* In FUNCTION_DECL, a chain of ..._DECL nodes.
+   VAR_DECL and PARM_DECL reserve the arguments slot for language-specific
+   uses.  */
+#define DECL_ARGUMENTS(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.arguments)
+#define DECL_ARGUMENT_FLD(NODE) (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.arguments)
+
+/* In FUNCTION_DECL, the function specific target options to use when compiling
+   this function.  */
+#define DECL_FUNCTION_SPECIFIC_TARGET(NODE) \
+   (FUNCTION_DECL_CHECK (NODE)->function_decl.function_specific_target)
+
+/* In FUNCTION_DECL, the function specific optimization options to use when
+   compiling this function.  */
+#define DECL_FUNCTION_SPECIFIC_OPTIMIZATION(NODE) \
+   (FUNCTION_DECL_CHECK (NODE)->function_decl.function_specific_optimization)
+
+/* FUNCTION_DECL inherits from DECL_NON_COMMON because of the use of the
+   arguments/result/saved_tree fields by front ends.   It was either inherit
+   FUNCTION_DECL from non_common, or inherit non_common from FUNCTION_DECL,
+   which seemed a bit strange.  */
+
+struct tree_function_decl GTY(())
+{
+  struct tree_decl_non_common common;
+
+  struct function *f;
+
+  /* Function specific options that are used by this function.  */
+  tree function_specific_target;       /* target options */
+  tree function_specific_optimization; /* optimization options */
+
+  /* In a FUNCTION_DECL for which DECL_BUILT_IN holds, this is
+     DECL_FUNCTION_CODE.  Otherwise unused.
+     ???  The bitfield needs to be able to hold all target function
+         codes as well.  */
+  ENUM_BITFIELD(built_in_function) function_code : 11;
+  ENUM_BITFIELD(built_in_class) built_in_class : 2;
+
+  unsigned static_ctor_flag : 1;
+  unsigned static_dtor_flag : 1;
+  unsigned uninlinable : 1;
+
+  unsigned possibly_inlined : 1;
+  unsigned novops_flag : 1;
+  unsigned returns_twice_flag : 1;
+  unsigned malloc_flag : 1;
+  unsigned operator_new_flag : 1;
+  unsigned declared_inline_flag : 1;
+  unsigned regdecl_flag : 1;
+
+  unsigned no_inline_warning_flag : 1;
+  unsigned no_instrument_function_entry_exit : 1;
+  unsigned no_limit_stack : 1;
+  unsigned disregard_inline_limits : 1;
+  unsigned pure_flag : 1;
+  unsigned looping_const_or_pure_flag : 1;
+
+
+  /* 3 bits left */
+};
+
+/* For a TYPE_DECL, holds the "original" type.  (TREE_TYPE has the copy.) */
+#define DECL_ORIGINAL_TYPE(NODE) (TYPE_DECL_CHECK (NODE)->decl_non_common.result)
+
+/* In a TYPE_DECL nonzero means the detail info about this type is not dumped
+   into stabs.  Instead it will generate cross reference ('x') of names.
+   This uses the same flag as DECL_EXTERNAL.  */
+#define TYPE_DECL_SUPPRESS_DEBUG(NODE) \
+  (TYPE_DECL_CHECK (NODE)->decl_common.decl_flag_2)
+
+/* Getter of the imported declaration associated to the
+   IMPORTED_DECL node.  */
+#define IMPORTED_DECL_ASSOCIATED_DECL(NODE) \
+(DECL_INITIAL (IMPORTED_DECL_CHECK (NODE)))
+
+struct tree_type_decl GTY(())
+{
+  struct tree_decl_non_common common;
+
+};
+\f
+/* A STATEMENT_LIST chains statements together in GENERIC and GIMPLE.
+   To reduce overhead, the nodes containing the statements are not trees.
+   This avoids the overhead of tree_common on all linked list elements.
+
+   Use the interface in tree-iterator.h to access this node.  */
+
+#define STATEMENT_LIST_HEAD(NODE) \
+  (STATEMENT_LIST_CHECK (NODE)->stmt_list.head)
+#define STATEMENT_LIST_TAIL(NODE) \
+  (STATEMENT_LIST_CHECK (NODE)->stmt_list.tail)
+
+struct tree_statement_list_node
+  GTY ((chain_next ("%h.next"), chain_prev ("%h.prev")))
+{
+  struct tree_statement_list_node *prev;
+  struct tree_statement_list_node *next;
+  tree stmt;
+};
+
+struct tree_statement_list
+  GTY(())
+{
+  struct tree_common common;
+  struct tree_statement_list_node *head;
+  struct tree_statement_list_node *tail;
+};
+
+
+/* Optimization options used by a function.  */
+
+struct tree_optimization_option GTY(())
+{
+  struct tree_common common;
+
+  /* The optimization options used by the user.  */
+  struct cl_optimization opts;
+};
+
+#define TREE_OPTIMIZATION(NODE) \
+  (&OPTIMIZATION_NODE_CHECK (NODE)->optimization.opts)
+
+/* Return a tree node that encapsulates the current optimization options.  */
+extern tree build_optimization_node (void);
+
+/* Target options used by a function.  */
+
+struct tree_target_option GTY(())
+{
+  struct tree_common common;
+
+  /* The optimization options used by the user.  */
+  struct cl_target_option opts;
+};
+
+#define TREE_TARGET_OPTION(NODE) \
+  (&TARGET_OPTION_NODE_CHECK (NODE)->target_option.opts)
+
+/* Return a tree node that encapsulates the current target options.  */
+extern tree build_target_option_node (void);
+
+\f
+/* Define the overall contents of a tree node.
+   It may be any of the structures declared above
+   for various types of node.  */
+
+union tree_node GTY ((ptr_alias (union lang_tree_node),
+                     desc ("tree_node_structure (&%h)")))
+{
+  struct tree_base GTY ((tag ("TS_BASE"))) base;
+  struct tree_common GTY ((tag ("TS_COMMON"))) common;
+  struct tree_int_cst GTY ((tag ("TS_INT_CST"))) int_cst;
+  struct tree_real_cst GTY ((tag ("TS_REAL_CST"))) real_cst;
+  struct tree_fixed_cst GTY ((tag ("TS_FIXED_CST"))) fixed_cst;
+  struct tree_vector GTY ((tag ("TS_VECTOR"))) vector;
+  struct tree_string GTY ((tag ("TS_STRING"))) string;
+  struct tree_complex GTY ((tag ("TS_COMPLEX"))) complex;
+  struct tree_identifier GTY ((tag ("TS_IDENTIFIER"))) identifier;
+  struct tree_decl_minimal GTY((tag ("TS_DECL_MINIMAL"))) decl_minimal;
+  struct tree_decl_common GTY ((tag ("TS_DECL_COMMON"))) decl_common;
+  struct tree_decl_with_rtl GTY ((tag ("TS_DECL_WRTL"))) decl_with_rtl;
+  struct tree_decl_non_common  GTY ((tag ("TS_DECL_NON_COMMON"))) decl_non_common;
+  struct tree_parm_decl  GTY  ((tag ("TS_PARM_DECL"))) parm_decl;
+  struct tree_decl_with_vis GTY ((tag ("TS_DECL_WITH_VIS"))) decl_with_vis;
+  struct tree_var_decl GTY ((tag ("TS_VAR_DECL"))) var_decl;
+  struct tree_field_decl GTY ((tag ("TS_FIELD_DECL"))) field_decl;
+  struct tree_label_decl GTY ((tag ("TS_LABEL_DECL"))) label_decl;
+  struct tree_result_decl GTY ((tag ("TS_RESULT_DECL"))) result_decl;
+  struct tree_const_decl GTY ((tag ("TS_CONST_DECL"))) const_decl;
+  struct tree_type_decl GTY ((tag ("TS_TYPE_DECL"))) type_decl;
+  struct tree_function_decl GTY ((tag ("TS_FUNCTION_DECL"))) function_decl;
+  struct tree_type GTY ((tag ("TS_TYPE"))) type;
+  struct tree_list GTY ((tag ("TS_LIST"))) list;
+  struct tree_vec GTY ((tag ("TS_VEC"))) vec;
+  struct tree_exp GTY ((tag ("TS_EXP"))) exp;
+  struct tree_ssa_name GTY ((tag ("TS_SSA_NAME"))) ssa_name;
+  struct tree_block GTY ((tag ("TS_BLOCK"))) block;
+  struct tree_binfo GTY ((tag ("TS_BINFO"))) binfo;
+  struct tree_statement_list GTY ((tag ("TS_STATEMENT_LIST"))) stmt_list;
+  struct tree_constructor GTY ((tag ("TS_CONSTRUCTOR"))) constructor;
+  struct tree_memory_tag GTY ((tag ("TS_MEMORY_TAG"))) mtag;
+  struct tree_omp_clause GTY ((tag ("TS_OMP_CLAUSE"))) omp_clause;
+  struct tree_memory_partition_tag GTY ((tag ("TS_MEMORY_PARTITION_TAG"))) mpt;
+  struct tree_optimization_option GTY ((tag ("TS_OPTIMIZATION"))) optimization;
+  struct tree_target_option GTY ((tag ("TS_TARGET_OPTION"))) target_option;
+};
+\f
+/* Standard named or nameless data types of the C compiler.  */
+
+enum tree_index
+{
+  TI_ERROR_MARK,
+  TI_INTQI_TYPE,
+  TI_INTHI_TYPE,
+  TI_INTSI_TYPE,
+  TI_INTDI_TYPE,
+  TI_INTTI_TYPE,
+
+  TI_UINTQI_TYPE,
+  TI_UINTHI_TYPE,
+  TI_UINTSI_TYPE,
+  TI_UINTDI_TYPE,
+  TI_UINTTI_TYPE,
+
+  TI_UINT32_TYPE,
+  TI_UINT64_TYPE,
+
+  TI_INTEGER_ZERO,
+  TI_INTEGER_ONE,
+  TI_INTEGER_MINUS_ONE,
+  TI_NULL_POINTER,
+
+  TI_SIZE_ZERO,
+  TI_SIZE_ONE,
+
+  TI_BITSIZE_ZERO,
+  TI_BITSIZE_ONE,
+  TI_BITSIZE_UNIT,
+
+  TI_PUBLIC,
+  TI_PROTECTED,
+  TI_PRIVATE,
+
+  TI_BOOLEAN_FALSE,
+  TI_BOOLEAN_TRUE,
+
+  TI_COMPLEX_INTEGER_TYPE,
+  TI_COMPLEX_FLOAT_TYPE,
+  TI_COMPLEX_DOUBLE_TYPE,
+  TI_COMPLEX_LONG_DOUBLE_TYPE,
+
+  TI_FLOAT_TYPE,
+  TI_DOUBLE_TYPE,
+  TI_LONG_DOUBLE_TYPE,
+
+  TI_FLOAT_PTR_TYPE,
+  TI_DOUBLE_PTR_TYPE,
+  TI_LONG_DOUBLE_PTR_TYPE,
+  TI_INTEGER_PTR_TYPE,
+
+  TI_VOID_TYPE,
+  TI_PTR_TYPE,
+  TI_CONST_PTR_TYPE,
+  TI_SIZE_TYPE,
+  TI_PID_TYPE,
+  TI_PTRDIFF_TYPE,
+  TI_VA_LIST_TYPE,
+  TI_VA_LIST_GPR_COUNTER_FIELD,
+  TI_VA_LIST_FPR_COUNTER_FIELD,
+  TI_BOOLEAN_TYPE,
+  TI_FILEPTR_TYPE,
+
+  TI_DFLOAT32_TYPE,
+  TI_DFLOAT64_TYPE,
+  TI_DFLOAT128_TYPE,
+  TI_DFLOAT32_PTR_TYPE,
+  TI_DFLOAT64_PTR_TYPE,
+  TI_DFLOAT128_PTR_TYPE,
+
+  TI_VOID_LIST_NODE,
+
+  TI_MAIN_IDENTIFIER,
+
+  TI_SAT_SFRACT_TYPE,
+  TI_SAT_FRACT_TYPE,
+  TI_SAT_LFRACT_TYPE,
+  TI_SAT_LLFRACT_TYPE,
+  TI_SAT_USFRACT_TYPE,
+  TI_SAT_UFRACT_TYPE,
+  TI_SAT_ULFRACT_TYPE,
+  TI_SAT_ULLFRACT_TYPE,
+  TI_SFRACT_TYPE,
+  TI_FRACT_TYPE,
+  TI_LFRACT_TYPE,
+  TI_LLFRACT_TYPE,
+  TI_USFRACT_TYPE,
+  TI_UFRACT_TYPE,
+  TI_ULFRACT_TYPE,
+  TI_ULLFRACT_TYPE,
+  TI_SAT_SACCUM_TYPE,
+  TI_SAT_ACCUM_TYPE,
+  TI_SAT_LACCUM_TYPE,
+  TI_SAT_LLACCUM_TYPE,
+  TI_SAT_USACCUM_TYPE,
+  TI_SAT_UACCUM_TYPE,
+  TI_SAT_ULACCUM_TYPE,
+  TI_SAT_ULLACCUM_TYPE,
+  TI_SACCUM_TYPE,
+  TI_ACCUM_TYPE,
+  TI_LACCUM_TYPE,
+  TI_LLACCUM_TYPE,
+  TI_USACCUM_TYPE,
+  TI_UACCUM_TYPE,
+  TI_ULACCUM_TYPE,
+  TI_ULLACCUM_TYPE,
+  TI_QQ_TYPE,
+  TI_HQ_TYPE,
+  TI_SQ_TYPE,
+  TI_DQ_TYPE,
+  TI_TQ_TYPE,
+  TI_UQQ_TYPE,
+  TI_UHQ_TYPE,
+  TI_USQ_TYPE,
+  TI_UDQ_TYPE,
+  TI_UTQ_TYPE,
+  TI_SAT_QQ_TYPE,
+  TI_SAT_HQ_TYPE,
+  TI_SAT_SQ_TYPE,
+  TI_SAT_DQ_TYPE,
+  TI_SAT_TQ_TYPE,
+  TI_SAT_UQQ_TYPE,
+  TI_SAT_UHQ_TYPE,
+  TI_SAT_USQ_TYPE,
+  TI_SAT_UDQ_TYPE,
+  TI_SAT_UTQ_TYPE,
+  TI_HA_TYPE,
+  TI_SA_TYPE,
+  TI_DA_TYPE,
+  TI_TA_TYPE,
+  TI_UHA_TYPE,
+  TI_USA_TYPE,
+  TI_UDA_TYPE,
+  TI_UTA_TYPE,
+  TI_SAT_HA_TYPE,
+  TI_SAT_SA_TYPE,
+  TI_SAT_DA_TYPE,
+  TI_SAT_TA_TYPE,
+  TI_SAT_UHA_TYPE,
+  TI_SAT_USA_TYPE,
+  TI_SAT_UDA_TYPE,
+  TI_SAT_UTA_TYPE,
+
+  TI_OPTIMIZATION_DEFAULT,
+  TI_OPTIMIZATION_CURRENT,
+  TI_TARGET_OPTION_DEFAULT,
+  TI_TARGET_OPTION_CURRENT,
+  TI_CURRENT_TARGET_PRAGMA,
+  TI_CURRENT_OPTIMIZE_PRAGMA,
+
+  TI_MAX
+};
+
+extern GTY(()) tree global_trees[TI_MAX];
+
+#define error_mark_node                        global_trees[TI_ERROR_MARK]
+
+#define intQI_type_node                        global_trees[TI_INTQI_TYPE]
+#define intHI_type_node                        global_trees[TI_INTHI_TYPE]
+#define intSI_type_node                        global_trees[TI_INTSI_TYPE]
+#define intDI_type_node                        global_trees[TI_INTDI_TYPE]
+#define intTI_type_node                        global_trees[TI_INTTI_TYPE]
+
+#define unsigned_intQI_type_node       global_trees[TI_UINTQI_TYPE]
+#define unsigned_intHI_type_node       global_trees[TI_UINTHI_TYPE]
+#define unsigned_intSI_type_node       global_trees[TI_UINTSI_TYPE]
+#define unsigned_intDI_type_node       global_trees[TI_UINTDI_TYPE]
+#define unsigned_intTI_type_node       global_trees[TI_UINTTI_TYPE]
+
+#define uint32_type_node               global_trees[TI_UINT32_TYPE]
+#define uint64_type_node               global_trees[TI_UINT64_TYPE]
+
+#define integer_zero_node              global_trees[TI_INTEGER_ZERO]
+#define integer_one_node               global_trees[TI_INTEGER_ONE]
+#define integer_minus_one_node         global_trees[TI_INTEGER_MINUS_ONE]
+#define size_zero_node                 global_trees[TI_SIZE_ZERO]
+#define size_one_node                  global_trees[TI_SIZE_ONE]
+#define bitsize_zero_node              global_trees[TI_BITSIZE_ZERO]
+#define bitsize_one_node               global_trees[TI_BITSIZE_ONE]
+#define bitsize_unit_node              global_trees[TI_BITSIZE_UNIT]
+
+/* Base access nodes.  */
+#define access_public_node             global_trees[TI_PUBLIC]
+#define access_protected_node          global_trees[TI_PROTECTED]
+#define access_private_node            global_trees[TI_PRIVATE]
+
+#define null_pointer_node              global_trees[TI_NULL_POINTER]
+
+#define float_type_node                        global_trees[TI_FLOAT_TYPE]
+#define double_type_node               global_trees[TI_DOUBLE_TYPE]
+#define long_double_type_node          global_trees[TI_LONG_DOUBLE_TYPE]
+
+#define float_ptr_type_node            global_trees[TI_FLOAT_PTR_TYPE]
+#define double_ptr_type_node           global_trees[TI_DOUBLE_PTR_TYPE]
+#define long_double_ptr_type_node      global_trees[TI_LONG_DOUBLE_PTR_TYPE]
+#define integer_ptr_type_node          global_trees[TI_INTEGER_PTR_TYPE]
+
+#define complex_integer_type_node      global_trees[TI_COMPLEX_INTEGER_TYPE]
+#define complex_float_type_node                global_trees[TI_COMPLEX_FLOAT_TYPE]
+#define complex_double_type_node       global_trees[TI_COMPLEX_DOUBLE_TYPE]
+#define complex_long_double_type_node  global_trees[TI_COMPLEX_LONG_DOUBLE_TYPE]
+
+#define void_type_node                 global_trees[TI_VOID_TYPE]
+/* The C type `void *'.  */
+#define ptr_type_node                  global_trees[TI_PTR_TYPE]
+/* The C type `const void *'.  */
+#define const_ptr_type_node            global_trees[TI_CONST_PTR_TYPE]
+/* The C type `size_t'.  */
+#define size_type_node                  global_trees[TI_SIZE_TYPE]
+#define pid_type_node                   global_trees[TI_PID_TYPE]
+#define ptrdiff_type_node              global_trees[TI_PTRDIFF_TYPE]
+#define va_list_type_node              global_trees[TI_VA_LIST_TYPE]
+#define va_list_gpr_counter_field      global_trees[TI_VA_LIST_GPR_COUNTER_FIELD]
+#define va_list_fpr_counter_field      global_trees[TI_VA_LIST_FPR_COUNTER_FIELD]
+/* The C type `FILE *'.  */
+#define fileptr_type_node              global_trees[TI_FILEPTR_TYPE]
+
+#define boolean_type_node              global_trees[TI_BOOLEAN_TYPE]
+#define boolean_false_node             global_trees[TI_BOOLEAN_FALSE]
+#define boolean_true_node              global_trees[TI_BOOLEAN_TRUE]
+
+/* The decimal floating point types. */
+#define dfloat32_type_node              global_trees[TI_DFLOAT32_TYPE]
+#define dfloat64_type_node              global_trees[TI_DFLOAT64_TYPE]
+#define dfloat128_type_node             global_trees[TI_DFLOAT128_TYPE]
+#define dfloat32_ptr_type_node          global_trees[TI_DFLOAT32_PTR_TYPE]
+#define dfloat64_ptr_type_node          global_trees[TI_DFLOAT64_PTR_TYPE]
+#define dfloat128_ptr_type_node         global_trees[TI_DFLOAT128_PTR_TYPE]
+
+/* The fixed-point types.  */
+#define sat_short_fract_type_node       global_trees[TI_SAT_SFRACT_TYPE]
+#define sat_fract_type_node             global_trees[TI_SAT_FRACT_TYPE]
+#define sat_long_fract_type_node        global_trees[TI_SAT_LFRACT_TYPE]
+#define sat_long_long_fract_type_node   global_trees[TI_SAT_LLFRACT_TYPE]
+#define sat_unsigned_short_fract_type_node \
+                                       global_trees[TI_SAT_USFRACT_TYPE]
+#define sat_unsigned_fract_type_node    global_trees[TI_SAT_UFRACT_TYPE]
+#define sat_unsigned_long_fract_type_node \
+                                       global_trees[TI_SAT_ULFRACT_TYPE]
+#define sat_unsigned_long_long_fract_type_node \
+                                       global_trees[TI_SAT_ULLFRACT_TYPE]
+#define short_fract_type_node           global_trees[TI_SFRACT_TYPE]
+#define fract_type_node                 global_trees[TI_FRACT_TYPE]
+#define long_fract_type_node            global_trees[TI_LFRACT_TYPE]
+#define long_long_fract_type_node       global_trees[TI_LLFRACT_TYPE]
+#define unsigned_short_fract_type_node  global_trees[TI_USFRACT_TYPE]
+#define unsigned_fract_type_node        global_trees[TI_UFRACT_TYPE]
+#define unsigned_long_fract_type_node   global_trees[TI_ULFRACT_TYPE]
+#define unsigned_long_long_fract_type_node \
+                                       global_trees[TI_ULLFRACT_TYPE]
+#define sat_short_accum_type_node       global_trees[TI_SAT_SACCUM_TYPE]
+#define sat_accum_type_node             global_trees[TI_SAT_ACCUM_TYPE]
+#define sat_long_accum_type_node        global_trees[TI_SAT_LACCUM_TYPE]
+#define sat_long_long_accum_type_node   global_trees[TI_SAT_LLACCUM_TYPE]
+#define sat_unsigned_short_accum_type_node \
+                                       global_trees[TI_SAT_USACCUM_TYPE]
+#define sat_unsigned_accum_type_node    global_trees[TI_SAT_UACCUM_TYPE]
+#define sat_unsigned_long_accum_type_node \
+                                       global_trees[TI_SAT_ULACCUM_TYPE]
+#define sat_unsigned_long_long_accum_type_node \
+                                       global_trees[TI_SAT_ULLACCUM_TYPE]
+#define short_accum_type_node           global_trees[TI_SACCUM_TYPE]
+#define accum_type_node                 global_trees[TI_ACCUM_TYPE]
+#define long_accum_type_node            global_trees[TI_LACCUM_TYPE]
+#define long_long_accum_type_node       global_trees[TI_LLACCUM_TYPE]
+#define unsigned_short_accum_type_node  global_trees[TI_USACCUM_TYPE]
+#define unsigned_accum_type_node        global_trees[TI_UACCUM_TYPE]
+#define unsigned_long_accum_type_node   global_trees[TI_ULACCUM_TYPE]
+#define unsigned_long_long_accum_type_node \
+                                       global_trees[TI_ULLACCUM_TYPE]
+#define qq_type_node                    global_trees[TI_QQ_TYPE]
+#define hq_type_node                    global_trees[TI_HQ_TYPE]
+#define sq_type_node                    global_trees[TI_SQ_TYPE]
+#define dq_type_node                    global_trees[TI_DQ_TYPE]
+#define tq_type_node                    global_trees[TI_TQ_TYPE]
+#define uqq_type_node                   global_trees[TI_UQQ_TYPE]
+#define uhq_type_node                   global_trees[TI_UHQ_TYPE]
+#define usq_type_node                   global_trees[TI_USQ_TYPE]
+#define udq_type_node                   global_trees[TI_UDQ_TYPE]
+#define utq_type_node                   global_trees[TI_UTQ_TYPE]
+#define sat_qq_type_node                global_trees[TI_SAT_QQ_TYPE]
+#define sat_hq_type_node                global_trees[TI_SAT_HQ_TYPE]
+#define sat_sq_type_node                global_trees[TI_SAT_SQ_TYPE]
+#define sat_dq_type_node                global_trees[TI_SAT_DQ_TYPE]
+#define sat_tq_type_node                global_trees[TI_SAT_TQ_TYPE]
+#define sat_uqq_type_node               global_trees[TI_SAT_UQQ_TYPE]
+#define sat_uhq_type_node               global_trees[TI_SAT_UHQ_TYPE]
+#define sat_usq_type_node               global_trees[TI_SAT_USQ_TYPE]
+#define sat_udq_type_node               global_trees[TI_SAT_UDQ_TYPE]
+#define sat_utq_type_node               global_trees[TI_SAT_UTQ_TYPE]
+#define ha_type_node                    global_trees[TI_HA_TYPE]
+#define sa_type_node                    global_trees[TI_SA_TYPE]
+#define da_type_node                    global_trees[TI_DA_TYPE]
+#define ta_type_node                    global_trees[TI_TA_TYPE]
+#define uha_type_node                   global_trees[TI_UHA_TYPE]
+#define usa_type_node                   global_trees[TI_USA_TYPE]
+#define uda_type_node                   global_trees[TI_UDA_TYPE]
+#define uta_type_node                   global_trees[TI_UTA_TYPE]
+#define sat_ha_type_node                global_trees[TI_SAT_HA_TYPE]
+#define sat_sa_type_node                global_trees[TI_SAT_SA_TYPE]
+#define sat_da_type_node                global_trees[TI_SAT_DA_TYPE]
+#define sat_ta_type_node                global_trees[TI_SAT_TA_TYPE]
+#define sat_uha_type_node               global_trees[TI_SAT_UHA_TYPE]
+#define sat_usa_type_node               global_trees[TI_SAT_USA_TYPE]
+#define sat_uda_type_node               global_trees[TI_SAT_UDA_TYPE]
+#define sat_uta_type_node               global_trees[TI_SAT_UTA_TYPE]
+
+/* The node that should be placed at the end of a parameter list to
+   indicate that the function does not take a variable number of
+   arguments.  The TREE_VALUE will be void_type_node and there will be
+   no TREE_CHAIN.  Language-independent code should not assume
+   anything else about this node.  */
+#define void_list_node                  global_trees[TI_VOID_LIST_NODE]
+
+#define main_identifier_node           global_trees[TI_MAIN_IDENTIFIER]
+#define MAIN_NAME_P(NODE) (IDENTIFIER_NODE_CHECK (NODE) == main_identifier_node)
+
+/* Optimization options (OPTIMIZATION_NODE) to use for default and current
+   functions.  */
+#define optimization_default_node      global_trees[TI_OPTIMIZATION_DEFAULT]
+#define optimization_current_node      global_trees[TI_OPTIMIZATION_CURRENT]
+
+/* Default/current target options (TARGET_OPTION_NODE).  */
+#define target_option_default_node     global_trees[TI_TARGET_OPTION_DEFAULT]
+#define target_option_current_node     global_trees[TI_TARGET_OPTION_CURRENT]
+
+/* Default tree list option(), optimize() pragmas to be linked into the
+   attribute list.  */
+#define current_target_pragma          global_trees[TI_CURRENT_TARGET_PRAGMA]
+#define current_optimize_pragma                global_trees[TI_CURRENT_OPTIMIZE_PRAGMA]
+
+/* An enumeration of the standard C integer types.  These must be
+   ordered so that shorter types appear before longer ones, and so
+   that signed types appear before unsigned ones, for the correct
+   functioning of interpret_integer() in c-lex.c.  */
+enum integer_type_kind
+{
+  itk_char,
+  itk_signed_char,
+  itk_unsigned_char,
+  itk_short,
+  itk_unsigned_short,
+  itk_int,
+  itk_unsigned_int,
+  itk_long,
+  itk_unsigned_long,
+  itk_long_long,
+  itk_unsigned_long_long,
+  itk_none
+};
+
+typedef enum integer_type_kind integer_type_kind;
+
+/* The standard C integer types.  Use integer_type_kind to index into
+   this array.  */
+extern GTY(()) tree integer_types[itk_none];
+
+#define char_type_node                 integer_types[itk_char]
+#define signed_char_type_node          integer_types[itk_signed_char]
+#define unsigned_char_type_node                integer_types[itk_unsigned_char]
+#define short_integer_type_node                integer_types[itk_short]
+#define short_unsigned_type_node       integer_types[itk_unsigned_short]
+#define integer_type_node              integer_types[itk_int]
+#define unsigned_type_node             integer_types[itk_unsigned_int]
+#define long_integer_type_node         integer_types[itk_long]
+#define long_unsigned_type_node                integer_types[itk_unsigned_long]
+#define long_long_integer_type_node    integer_types[itk_long_long]
+#define long_long_unsigned_type_node   integer_types[itk_unsigned_long_long]
+\f
+/* Set to the default thread-local storage (tls) model to use.  */
+
+extern enum tls_model flag_tls_default;
+
+\f
+/* A pointer-to-function member type looks like:
+
+     struct {
+       __P __pfn;
+       ptrdiff_t __delta;
+     };
+
+   If __pfn is NULL, it is a NULL pointer-to-member-function.
+
+   (Because the vtable is always the first thing in the object, we
+   don't need its offset.)  If the function is virtual, then PFN is
+   one plus twice the index into the vtable; otherwise, it is just a
+   pointer to the function.
+
+   Unfortunately, using the lowest bit of PFN doesn't work in
+   architectures that don't impose alignment requirements on function
+   addresses, or that use the lowest bit to tell one ISA from another,
+   for example.  For such architectures, we use the lowest bit of
+   DELTA instead of the lowest bit of the PFN, and DELTA will be
+   multiplied by 2.  */
+
+enum ptrmemfunc_vbit_where_t
+{
+  ptrmemfunc_vbit_in_pfn,
+  ptrmemfunc_vbit_in_delta
+};
+\f
+#define NULL_TREE (tree) NULL
+
+extern tree decl_assembler_name (tree);
+extern bool decl_assembler_name_equal (tree decl, const_tree asmname);
+extern hashval_t decl_assembler_name_hash (const_tree asmname);
+
+/* Compute the number of bytes occupied by 'node'.  This routine only
+   looks at TREE_CODE and, if the code is TREE_VEC, TREE_VEC_LENGTH.  */
+
+extern size_t tree_size (const_tree);
+
+/* Compute the number of bytes occupied by a tree with code CODE.  This
+   function cannot be used for TREE_VEC codes, which are of variable
+   length.  */
+extern size_t tree_code_size (enum tree_code);
+
+/* Lowest level primitive for allocating a node.
+   The TREE_CODE is the only argument.  Contents are initialized
+   to zero except for a few of the common fields.  */
+
+extern tree make_node_stat (enum tree_code MEM_STAT_DECL);
+#define make_node(t) make_node_stat (t MEM_STAT_INFO)
+
+/* Make a copy of a node, with all the same contents.  */
+
+extern tree copy_node_stat (tree MEM_STAT_DECL);
+#define copy_node(t) copy_node_stat (t MEM_STAT_INFO)
+
+/* Make a copy of a chain of TREE_LIST nodes.  */
+
+extern tree copy_list (tree);
+
+/* Make a BINFO.  */
+extern tree make_tree_binfo_stat (unsigned MEM_STAT_DECL);
+#define make_tree_binfo(t) make_tree_binfo_stat (t MEM_STAT_INFO)
+
+/* Make a TREE_VEC.  */
+
+extern tree make_tree_vec_stat (int MEM_STAT_DECL);
+#define make_tree_vec(t) make_tree_vec_stat (t MEM_STAT_INFO)
+
+/* Return the (unique) IDENTIFIER_NODE node for a given name.
+   The name is supplied as a char *.  */
+
+extern tree get_identifier (const char *);
+
+#if GCC_VERSION >= 3000
+#define get_identifier(str) \
+  (__builtin_constant_p (str)                          \
+    ? get_identifier_with_length ((str), strlen (str))  \
+    : get_identifier (str))
+#endif
+
+
+/* Identical to get_identifier, except that the length is assumed
+   known.  */
+
+extern tree get_identifier_with_length (const char *, size_t);
+
+/* If an identifier with the name TEXT (a null-terminated string) has
+   previously been referred to, return that node; otherwise return
+   NULL_TREE.  */
+
+extern tree maybe_get_identifier (const char *);
+
+/* Construct various types of nodes.  */
+
+extern tree build_nt (enum tree_code, ...);
+extern tree build_nt_call_list (tree, tree);
+
+extern tree build0_stat (enum tree_code, tree MEM_STAT_DECL);
+#define build0(c,t) build0_stat (c,t MEM_STAT_INFO)
+extern tree build1_stat (enum tree_code, tree, tree MEM_STAT_DECL);
+#define build1(c,t1,t2) build1_stat (c,t1,t2 MEM_STAT_INFO)
+extern tree build2_stat (enum tree_code, tree, tree, tree MEM_STAT_DECL);
+#define build2(c,t1,t2,t3) build2_stat (c,t1,t2,t3 MEM_STAT_INFO)
+extern tree build3_stat (enum tree_code, tree, tree, tree, tree MEM_STAT_DECL);
+#define build3(c,t1,t2,t3,t4) build3_stat (c,t1,t2,t3,t4 MEM_STAT_INFO)
+extern tree build4_stat (enum tree_code, tree, tree, tree, tree,
+                        tree MEM_STAT_DECL);
+#define build4(c,t1,t2,t3,t4,t5) build4_stat (c,t1,t2,t3,t4,t5 MEM_STAT_INFO)
+extern tree build5_stat (enum tree_code, tree, tree, tree, tree, tree,
+                        tree MEM_STAT_DECL);
+#define build5(c,t1,t2,t3,t4,t5,t6) build5_stat (c,t1,t2,t3,t4,t5,t6 MEM_STAT_INFO)
+extern tree build7_stat (enum tree_code, tree, tree, tree, tree, tree,
+                        tree, tree, tree MEM_STAT_DECL);
+#define build7(c,t1,t2,t3,t4,t5,t6,t7,t8) \
+  build7_stat (c,t1,t2,t3,t4,t5,t6,t7,t8 MEM_STAT_INFO)
+
+extern tree build_int_cst (tree, HOST_WIDE_INT);
+extern tree build_int_cst_type (tree, HOST_WIDE_INT);
+extern tree build_int_cstu (tree, unsigned HOST_WIDE_INT);
+extern tree build_int_cst_wide (tree, unsigned HOST_WIDE_INT, HOST_WIDE_INT);
+extern tree build_int_cst_wide_type (tree,
+                                    unsigned HOST_WIDE_INT, HOST_WIDE_INT);
+extern tree build_vector (tree, tree);
+extern tree build_vector_from_ctor (tree, VEC(constructor_elt,gc) *);
+extern tree build_constructor (tree, VEC(constructor_elt,gc) *);
+extern tree build_constructor_single (tree, tree, tree);
+extern tree build_constructor_from_list (tree, tree);
+extern tree build_real_from_int_cst (tree, const_tree);
+extern tree build_complex (tree, tree, tree);
+extern tree build_one_cst (tree);
+extern tree build_string (int, const char *);
+extern tree build_tree_list_stat (tree, tree MEM_STAT_DECL);
+#define build_tree_list(t,q) build_tree_list_stat(t,q MEM_STAT_INFO)
+extern tree build_decl_stat (enum tree_code, tree, tree MEM_STAT_DECL);
+extern tree build_fn_decl (const char *, tree);
+#define build_decl(c,t,q) build_decl_stat (c,t,q MEM_STAT_INFO)
+extern tree build_block (tree, tree, tree, tree);
+extern tree build_empty_stmt (void);
+extern tree build_omp_clause (enum omp_clause_code);
+
+extern tree build_vl_exp_stat (enum tree_code, int MEM_STAT_DECL);
+#define build_vl_exp(c,n) build_vl_exp_stat (c,n MEM_STAT_INFO)
+
+extern tree build_call_list (tree, tree, tree);
+extern tree build_call_nary (tree, tree, int, ...);
+extern tree build_call_valist (tree, tree, int, va_list);
+extern tree build_call_array (tree, tree, int, tree*);
+
+/* Construct various nodes representing data types.  */
+
+extern tree make_signed_type (int);
+extern tree make_unsigned_type (int);
+extern tree signed_or_unsigned_type_for (int, tree);
+extern tree signed_type_for (tree);
+extern tree unsigned_type_for (tree);
+extern void initialize_sizetypes (bool);
+extern void set_sizetype (tree);
+extern void fixup_unsigned_type (tree);
+extern tree build_pointer_type_for_mode (tree, enum machine_mode, bool);
+extern tree build_pointer_type (tree);
+extern tree build_reference_type_for_mode (tree, enum machine_mode, bool);
+extern tree build_reference_type (tree);
+extern tree build_vector_type_for_mode (tree, enum machine_mode);
+extern tree build_vector_type (tree innertype, int nunits);
+extern tree build_type_no_quals (tree);
+extern tree build_index_type (tree);
+extern tree build_index_2_type (tree, tree);
+extern tree build_array_type (tree, tree);
+extern tree build_function_type (tree, tree);
+extern tree build_function_type_list (tree, ...);
+extern tree build_function_type_skip_args (tree, bitmap);
+extern tree build_function_decl_skip_args (tree, bitmap);
+extern tree build_varargs_function_type_list (tree, ...);
+extern tree build_method_type_directly (tree, tree, tree);
+extern tree build_method_type (tree, tree);
+extern tree build_offset_type (tree, tree);
+extern tree build_complex_type (tree);
+extern tree build_resx (int);
+extern tree array_type_nelts (const_tree);
+extern bool in_array_bounds_p (tree);
+extern bool range_in_array_bounds_p (tree);
+
+extern tree value_member (tree, tree);
+extern tree purpose_member (const_tree, tree);
+
+extern int attribute_list_equal (const_tree, const_tree);
+extern int attribute_list_contained (const_tree, const_tree);
+extern int tree_int_cst_equal (const_tree, const_tree);
+extern int tree_int_cst_lt (const_tree, const_tree);
+extern int tree_int_cst_compare (const_tree, const_tree);
+extern int host_integerp (const_tree, int);
+extern HOST_WIDE_INT tree_low_cst (const_tree, int);
+extern int tree_int_cst_msb (const_tree);
+extern int tree_int_cst_sgn (const_tree);
+extern int tree_int_cst_sign_bit (const_tree);
+extern unsigned int tree_int_cst_min_precision (tree, bool);
+extern bool tree_expr_nonnegative_p (tree);
+extern bool tree_expr_nonnegative_warnv_p (tree, bool *);
+extern bool may_negate_without_overflow_p (const_tree);
+extern tree strip_array_types (tree);
+
+/* Construct various nodes representing fract or accum data types.  */
+
+extern tree make_fract_type (int, int, int);
+extern tree make_accum_type (int, int, int);
+
+#define make_signed_fract_type(P) make_fract_type (P, 0, 0)
+#define make_unsigned_fract_type(P) make_fract_type (P, 1, 0)
+#define make_sat_signed_fract_type(P) make_fract_type (P, 0, 1)
+#define make_sat_unsigned_fract_type(P) make_fract_type (P, 1, 1)
+#define make_signed_accum_type(P) make_accum_type (P, 0, 0)
+#define make_unsigned_accum_type(P) make_accum_type (P, 1, 0)
+#define make_sat_signed_accum_type(P) make_accum_type (P, 0, 1)
+#define make_sat_unsigned_accum_type(P) make_accum_type (P, 1, 1)
+
+#define make_or_reuse_signed_fract_type(P) \
+               make_or_reuse_fract_type (P, 0, 0)
+#define make_or_reuse_unsigned_fract_type(P) \
+               make_or_reuse_fract_type (P, 1, 0)
+#define make_or_reuse_sat_signed_fract_type(P) \
+               make_or_reuse_fract_type (P, 0, 1)
+#define make_or_reuse_sat_unsigned_fract_type(P) \
+               make_or_reuse_fract_type (P, 1, 1)
+#define make_or_reuse_signed_accum_type(P) \
+               make_or_reuse_accum_type (P, 0, 0)
+#define make_or_reuse_unsigned_accum_type(P) \
+               make_or_reuse_accum_type (P, 1, 0)
+#define make_or_reuse_sat_signed_accum_type(P) \
+               make_or_reuse_accum_type (P, 0, 1)
+#define make_or_reuse_sat_unsigned_accum_type(P) \
+               make_or_reuse_accum_type (P, 1, 1)
+
+/* From expmed.c.  Since rtl.h is included after tree.h, we can't
+   put the prototype here.  Rtl.h does declare the prototype if
+   tree.h had been included.  */
+
+extern tree make_tree (tree, rtx);
+\f
+/* Return a type like TTYPE except that its TYPE_ATTRIBUTES
+   is ATTRIBUTE.
+
+   Such modified types already made are recorded so that duplicates
+   are not made.  */
+
+extern tree build_type_attribute_variant (tree, tree);
+extern tree build_decl_attribute_variant (tree, tree);
+
+/* Structure describing an attribute and a function to handle it.  */
+struct attribute_spec
+{
+  /* The name of the attribute (without any leading or trailing __),
+     or NULL to mark the end of a table of attributes.  */
+  const char *const name;
+  /* The minimum length of the list of arguments of the attribute.  */
+  const int min_length;
+  /* The maximum length of the list of arguments of the attribute
+     (-1 for no maximum).  */
+  const int max_length;
+  /* Whether this attribute requires a DECL.  If it does, it will be passed
+     from types of DECLs, function return types and array element types to
+     the DECLs, function types and array types respectively; but when
+     applied to a type in any other circumstances, it will be ignored with
+     a warning.  (If greater control is desired for a given attribute,
+     this should be false, and the flags argument to the handler may be
+     used to gain greater control in that case.)  */
+  const bool decl_required;
+  /* Whether this attribute requires a type.  If it does, it will be passed
+     from a DECL to the type of that DECL.  */
+  const bool type_required;
+  /* Whether this attribute requires a function (or method) type.  If it does,
+     it will be passed from a function pointer type to the target type,
+     and from a function return type (which is not itself a function
+     pointer type) to the function type.  */
+  const bool function_type_required;
+  /* Function to handle this attribute.  NODE points to the node to which
+     the attribute is to be applied.  If a DECL, it should be modified in
+     place; if a TYPE, a copy should be created.  NAME is the name of the
+     attribute (possibly with leading or trailing __).  ARGS is the TREE_LIST
+     of the arguments (which may be NULL).  FLAGS gives further information
+     about the context of the attribute.  Afterwards, the attributes will
+     be added to the DECL_ATTRIBUTES or TYPE_ATTRIBUTES, as appropriate,
+     unless *NO_ADD_ATTRS is set to true (which should be done on error,
+     as well as in any other cases when the attributes should not be added
+     to the DECL or TYPE).  Depending on FLAGS, any attributes to be
+     applied to another type or DECL later may be returned;
+     otherwise the return value should be NULL_TREE.  This pointer may be
+     NULL if no special handling is required beyond the checks implied
+     by the rest of this structure.  */
+  tree (*const handler) (tree *node, tree name, tree args,
+                                int flags, bool *no_add_attrs);
+};
+
+/* Flags that may be passed in the third argument of decl_attributes, and
+   to handler functions for attributes.  */
+enum attribute_flags
+{
+  /* The type passed in is the type of a DECL, and any attributes that
+     should be passed in again to be applied to the DECL rather than the
+     type should be returned.  */
+  ATTR_FLAG_DECL_NEXT = 1,
+  /* The type passed in is a function return type, and any attributes that
+     should be passed in again to be applied to the function type rather
+     than the return type should be returned.  */
+  ATTR_FLAG_FUNCTION_NEXT = 2,
+  /* The type passed in is an array element type, and any attributes that
+     should be passed in again to be applied to the array type rather
+     than the element type should be returned.  */
+  ATTR_FLAG_ARRAY_NEXT = 4,
+  /* The type passed in is a structure, union or enumeration type being
+     created, and should be modified in place.  */
+  ATTR_FLAG_TYPE_IN_PLACE = 8,
+  /* The attributes are being applied by default to a library function whose
+     name indicates known behavior, and should be silently ignored if they
+     are not in fact compatible with the function type.  */
+  ATTR_FLAG_BUILT_IN = 16
+};
+
+/* Default versions of target-overridable functions.  */
+
+extern tree merge_decl_attributes (tree, tree);
+extern tree merge_type_attributes (tree, tree);
+
+/* Given a tree node and a string, return nonzero if the tree node is
+   a valid attribute name for the string.  */
+
+extern int is_attribute_p (const char *, const_tree);
+
+/* Given an attribute name and a list of attributes, return the list element
+   of the attribute or NULL_TREE if not found.  */
+
+extern tree lookup_attribute (const char *, tree);
+
+/* Remove any instances of attribute ATTR_NAME in LIST and return the
+   modified list.  */
+
+extern tree remove_attribute (const char *, tree);
+
+/* Given two attributes lists, return a list of their union.  */
+
+extern tree merge_attributes (tree, tree);
+
+#if TARGET_DLLIMPORT_DECL_ATTRIBUTES
+/* Given two Windows decl attributes lists, possibly including
+   dllimport, return a list of their union .  */
+extern tree merge_dllimport_decl_attributes (tree, tree);
+
+/* Handle a "dllimport" or "dllexport" attribute.  */
+extern tree handle_dll_attribute (tree *, tree, tree, int, bool *);
+#endif
+
+/* Check whether CAND is suitable to be returned from get_qualified_type
+   (BASE, TYPE_QUALS).  */
+
+extern bool check_qualified_type (const_tree, const_tree, int);
+
+/* Return a version of the TYPE, qualified as indicated by the
+   TYPE_QUALS, if one exists.  If no qualified version exists yet,
+   return NULL_TREE.  */
+
+extern tree get_qualified_type (tree, int);
+
+/* Like get_qualified_type, but creates the type if it does not
+   exist.  This function never returns NULL_TREE.  */
+
+extern tree build_qualified_type (tree, int);
+
+/* Like build_qualified_type, but only deals with the `const' and
+   `volatile' qualifiers.  This interface is retained for backwards
+   compatibility with the various front-ends; new code should use
+   build_qualified_type instead.  */
+
+#define build_type_variant(TYPE, CONST_P, VOLATILE_P)                  \
+  build_qualified_type ((TYPE),                                                \
+                       ((CONST_P) ? TYPE_QUAL_CONST : 0)               \
+                       | ((VOLATILE_P) ? TYPE_QUAL_VOLATILE : 0))
+
+/* Make a copy of a type node.  */
+
+extern tree build_distinct_type_copy (tree);
+extern tree build_variant_type_copy (tree);
+
+/* Finish up a builtin RECORD_TYPE. Give it a name and provide its
+   fields. Optionally specify an alignment, and then lay it out.  */
+
+extern void finish_builtin_struct (tree, const char *,
+                                                        tree, tree);
+
+/* Given a ..._TYPE node, calculate the TYPE_SIZE, TYPE_SIZE_UNIT,
+   TYPE_ALIGN and TYPE_MODE fields.  If called more than once on one
+   node, does nothing except for the first time.  */
+
+extern void layout_type (tree);
+
+/* These functions allow a front-end to perform a manual layout of a
+   RECORD_TYPE.  (For instance, if the placement of subsequent fields
+   depends on the placement of fields so far.)  Begin by calling
+   start_record_layout.  Then, call place_field for each of the
+   fields.  Then, call finish_record_layout.  See layout_type for the
+   default way in which these functions are used.  */
+
+typedef struct record_layout_info_s
+{
+  /* The RECORD_TYPE that we are laying out.  */
+  tree t;
+  /* The offset into the record so far, in bytes, not including bits in
+     BITPOS.  */
+  tree offset;
+  /* The last known alignment of SIZE.  */
+  unsigned int offset_align;
+  /* The bit position within the last OFFSET_ALIGN bits, in bits.  */
+  tree bitpos;
+  /* The alignment of the record so far, in bits.  */
+  unsigned int record_align;
+  /* The alignment of the record so far, ignoring #pragma pack and
+     __attribute__ ((packed)), in bits.  */
+  unsigned int unpacked_align;
+  /* The previous field layed out.  */
+  tree prev_field;
+  /* The static variables (i.e., class variables, as opposed to
+     instance variables) encountered in T.  */
+  tree pending_statics;
+  /* Bits remaining in the current alignment group */
+  int remaining_in_alignment;
+  /* True if we've seen a packed field that didn't have normal
+     alignment anyway.  */
+  int packed_maybe_necessary;
+} *record_layout_info;
+
+extern record_layout_info start_record_layout (tree);
+extern tree bit_from_pos (tree, tree);
+extern tree byte_from_pos (tree, tree);
+extern void pos_from_bit (tree *, tree *, unsigned int, tree);
+extern void normalize_offset (tree *, tree *, unsigned int);
+extern tree rli_size_unit_so_far (record_layout_info);
+extern tree rli_size_so_far (record_layout_info);
+extern void normalize_rli (record_layout_info);
+extern void place_field (record_layout_info, tree);
+extern void compute_record_mode (tree);
+extern void finish_record_layout (record_layout_info, int);
+
+/* Given a hashcode and a ..._TYPE node (for which the hashcode was made),
+   return a canonicalized ..._TYPE node, so that duplicates are not made.
+   How the hash code is computed is up to the caller, as long as any two
+   callers that could hash identical-looking type nodes agree.  */
+
+extern tree type_hash_canon (unsigned int, tree);
+
+/* Given a VAR_DECL, PARM_DECL, RESULT_DECL or FIELD_DECL node,
+   calculates the DECL_SIZE, DECL_SIZE_UNIT, DECL_ALIGN and DECL_MODE
+   fields.  Call this only once for any given decl node.
+
+   Second argument is the boundary that this field can be assumed to
+   be starting at (in bits).  Zero means it can be assumed aligned
+   on any boundary that may be needed.  */
+
+extern void layout_decl (tree, unsigned);
+
+/* Given a VAR_DECL, PARM_DECL or RESULT_DECL, clears the results of
+   a previous call to layout_decl and calls it again.  */
+
+extern void relayout_decl (tree);
+
+/* Return the mode for data of a given size SIZE and mode class CLASS.
+   If LIMIT is nonzero, then don't use modes bigger than MAX_FIXED_MODE_SIZE.
+   The value is BLKmode if no other mode is found.  This is like
+   mode_for_size, but is passed a tree.  */
+
+extern enum machine_mode mode_for_size_tree (const_tree, enum mode_class, int);
+
+/* Return an expr equal to X but certainly not valid as an lvalue.  */
+
+extern tree non_lvalue (tree);
+
+extern tree convert (tree, tree);
+extern unsigned int expr_align (const_tree);
+extern tree expr_first (tree);
+extern tree expr_last (tree);
+extern tree expr_only (tree);
+extern tree size_in_bytes (const_tree);
+extern HOST_WIDE_INT int_size_in_bytes (const_tree);
+extern HOST_WIDE_INT max_int_size_in_bytes (const_tree);
+extern tree bit_position (const_tree);
+extern HOST_WIDE_INT int_bit_position (const_tree);
+extern tree byte_position (const_tree);
+extern HOST_WIDE_INT int_byte_position (const_tree);
+
+/* Define data structures, macros, and functions for handling sizes
+   and the various types used to represent sizes.  */
+
+enum size_type_kind
+{
+  SIZETYPE,            /* Normal representation of sizes in bytes.  */
+  SSIZETYPE,           /* Signed representation of sizes in bytes.  */
+  BITSIZETYPE,         /* Normal representation of sizes in bits.  */
+  SBITSIZETYPE,                /* Signed representation of sizes in bits.  */
+  TYPE_KIND_LAST};
+
+extern GTY(()) tree sizetype_tab[(int) TYPE_KIND_LAST];
+
+#define sizetype sizetype_tab[(int) SIZETYPE]
+#define bitsizetype sizetype_tab[(int) BITSIZETYPE]
+#define ssizetype sizetype_tab[(int) SSIZETYPE]
+#define sbitsizetype sizetype_tab[(int) SBITSIZETYPE]
+
+extern tree size_int_kind (HOST_WIDE_INT, enum size_type_kind);
+extern tree size_binop (enum tree_code, tree, tree);
+extern tree size_diffop (tree, tree);
+
+#define size_int(L) size_int_kind (L, SIZETYPE)
+#define ssize_int(L) size_int_kind (L, SSIZETYPE)
+#define bitsize_int(L) size_int_kind (L, BITSIZETYPE)
+#define sbitsize_int(L) size_int_kind (L, SBITSIZETYPE)
+
+extern tree round_up (tree, int);
+extern tree round_down (tree, int);
+extern tree get_pending_sizes (void);
+extern void put_pending_size (tree);
+extern void put_pending_sizes (tree);
+
+/* Type for sizes of data-type.  */
+
+#define BITS_PER_UNIT_LOG \
+  ((BITS_PER_UNIT > 1) + (BITS_PER_UNIT > 2) + (BITS_PER_UNIT > 4) \
+   + (BITS_PER_UNIT > 8) + (BITS_PER_UNIT > 16) + (BITS_PER_UNIT > 32) \
+   + (BITS_PER_UNIT > 64) + (BITS_PER_UNIT > 128) + (BITS_PER_UNIT > 256))
+
+/* If nonzero, an upper limit on alignment of structure fields, in bits,  */
+extern unsigned int maximum_field_alignment;
+/* and its original value in bytes, specified via -fpack-struct=<value>.  */
+extern unsigned int initial_max_fld_align;
+
+/* Concatenate two lists (chains of TREE_LIST nodes) X and Y
+   by making the last node in X point to Y.
+   Returns X, except if X is 0 returns Y.  */
+
+extern tree chainon (tree, tree);
+
+/* Make a new TREE_LIST node from specified PURPOSE, VALUE and CHAIN.  */
+
+extern tree tree_cons_stat (tree, tree, tree MEM_STAT_DECL);
+#define tree_cons(t,q,w) tree_cons_stat (t,q,w MEM_STAT_INFO)
+
+/* Return the last tree node in a chain.  */
+
+extern tree tree_last (tree);
+
+/* Reverse the order of elements in a chain, and return the new head.  */
+
+extern tree nreverse (tree);
+
+/* Returns the length of a chain of nodes
+   (number of chain pointers to follow before reaching a null pointer).  */
+
+extern int list_length (const_tree);
+
+/* Returns the number of FIELD_DECLs in a type.  */
+
+extern int fields_length (const_tree);
+
+/* Given an initializer INIT, return TRUE if INIT is zero or some
+   aggregate of zeros.  Otherwise return FALSE.  */
+
+extern bool initializer_zerop (const_tree);
+
+/* Given a CONSTRUCTOR CTOR, return the elements as a TREE_LIST.  */
+
+extern tree ctor_to_list (tree);
+
+/* Examine CTOR to discover:
+   * how many scalar fields are set to nonzero values,
+     and place it in *P_NZ_ELTS;
+   * how many scalar fields in total are in CTOR,
+     and place it in *P_ELT_COUNT.
+   * if a type is a union, and the initializer from the constructor
+     is not the largest element in the union, then set *p_must_clear.
+
+   Return whether or not CTOR is a valid static constant initializer, the same
+   as "initializer_constant_valid_p (CTOR, TREE_TYPE (CTOR)) != 0".  */
+
+extern bool categorize_ctor_elements (const_tree, HOST_WIDE_INT *, HOST_WIDE_INT *,
+                                     bool *);
+
+extern HOST_WIDE_INT count_type_elements (const_tree, bool);
+
+/* integer_zerop (tree x) is nonzero if X is an integer constant of value 0.  */
+
+extern int integer_zerop (const_tree);
+
+/* integer_onep (tree x) is nonzero if X is an integer constant of value 1.  */
+
+extern int integer_onep (const_tree);
+
+/* integer_all_onesp (tree x) is nonzero if X is an integer constant
+   all of whose significant bits are 1.  */
+
+extern int integer_all_onesp (const_tree);
+
+/* integer_pow2p (tree x) is nonzero is X is an integer constant with
+   exactly one bit 1.  */
+
+extern int integer_pow2p (const_tree);
+
+/* integer_nonzerop (tree x) is nonzero if X is an integer constant
+   with a nonzero value.  */
+
+extern int integer_nonzerop (const_tree);
+
+extern bool cst_and_fits_in_hwi (const_tree);
+extern tree num_ending_zeros (const_tree);
+
+/* fixed_zerop (tree x) is nonzero if X is a fixed-point constant of
+   value 0.  */
+
+extern int fixed_zerop (const_tree);
+
+/* staticp (tree x) is nonzero if X is a reference to data allocated
+   at a fixed address in memory.  Returns the outermost data.  */
+
+extern tree staticp (tree);
+
+/* save_expr (EXP) returns an expression equivalent to EXP
+   but it can be used multiple times within context CTX
+   and only evaluate EXP once.  */
+
+extern tree save_expr (tree);
+
+/* Look inside EXPR and into any simple arithmetic operations.  Return
+   the innermost non-arithmetic node.  */
+
+extern tree skip_simple_arithmetic (tree);
+
+/* Return which tree structure is used by T.  */
+
+enum tree_node_structure_enum tree_node_structure (const_tree);
+
+/* Return 1 if EXP contains a PLACEHOLDER_EXPR; i.e., if it represents a size
+   or offset that depends on a field within a record.
+
+   Note that we only allow such expressions within simple arithmetic
+   or a COND_EXPR.  */
+
+extern bool contains_placeholder_p (const_tree);
+
+/* This macro calls the above function but short-circuits the common
+   case of a constant to save time.  Also check for null.  */
+
+#define CONTAINS_PLACEHOLDER_P(EXP) \
+  ((EXP) != 0 && ! TREE_CONSTANT (EXP) && contains_placeholder_p (EXP))
+
+/* Return 1 if any part of the computation of TYPE involves a PLACEHOLDER_EXPR.
+   This includes size, bounds, qualifiers (for QUAL_UNION_TYPE) and field
+   positions.  */
+
+extern bool type_contains_placeholder_p (tree);
+
+/* Given a tree EXP, a FIELD_DECL F, and a replacement value R,
+   return a tree with all occurrences of references to F in a
+   PLACEHOLDER_EXPR replaced by R.   Note that we assume here that EXP
+   contains only arithmetic expressions.  */
+
+extern tree substitute_in_expr (tree, tree, tree);
+
+/* This macro calls the above function but short-circuits the common
+   case of a constant to save time and also checks for NULL.  */
+
+#define SUBSTITUTE_IN_EXPR(EXP, F, R) \
+  ((EXP) == 0 || TREE_CONSTANT (EXP) ? (EXP) : substitute_in_expr (EXP, F, R))
+
+/* Similar, but look for a PLACEHOLDER_EXPR in EXP and find a replacement
+   for it within OBJ, a tree that is an object or a chain of references.  */
+
+extern tree substitute_placeholder_in_expr (tree, tree);
+
+/* This macro calls the above function but short-circuits the common
+   case of a constant to save time and also checks for NULL.  */
+
+#define SUBSTITUTE_PLACEHOLDER_IN_EXPR(EXP, OBJ) \
+  ((EXP) == 0 || TREE_CONSTANT (EXP) ? (EXP)   \
+   : substitute_placeholder_in_expr (EXP, OBJ))
+
+/* variable_size (EXP) is like save_expr (EXP) except that it
+   is for the special case of something that is part of a
+   variable size for a data type.  It makes special arrangements
+   to compute the value at the right time when the data type
+   belongs to a function parameter.  */
+
+extern tree variable_size (tree);
+
+/* stabilize_reference (EXP) returns a reference equivalent to EXP
+   but it can be used multiple times
+   and only evaluate the subexpressions once.  */
+
+extern tree stabilize_reference (tree);
+
+/* Subroutine of stabilize_reference; this is called for subtrees of
+   references.  Any expression with side-effects must be put in a SAVE_EXPR
+   to ensure that it is only evaluated once.  */
+
+extern tree stabilize_reference_1 (tree);
+
+/* Return EXP, stripped of any conversions to wider types
+   in such a way that the result of converting to type FOR_TYPE
+   is the same as if EXP were converted to FOR_TYPE.
+   If FOR_TYPE is 0, it signifies EXP's type.  */
+
+extern tree get_unwidened (tree, tree);
+
+/* Return OP or a simpler expression for a narrower value
+   which can be sign-extended or zero-extended to give back OP.
+   Store in *UNSIGNEDP_PTR either 1 if the value should be zero-extended
+   or 0 if the value should be sign-extended.  */
+
+extern tree get_narrower (tree, int *);
+
+/* Return true if T is an expression that get_inner_reference handles.  */
+
+extern int handled_component_p (const_tree);
+
+/* Given an expression EXP that is a handled_component_p,
+   look for the ultimate containing object, which is returned and specify
+   the access position and size.  */
+
+extern tree get_inner_reference (tree, HOST_WIDE_INT *, HOST_WIDE_INT *,
+                                tree *, enum machine_mode *, int *, int *,
+                                bool);
+
+/* Given an expression EXP that may be a COMPONENT_REF, an ARRAY_REF or an
+   ARRAY_RANGE_REF, look for whether EXP or any nested component-refs within
+   EXP is marked as PACKED.  */
+
+extern bool contains_packed_reference (const_tree exp);
+
+/* Return a tree of sizetype representing the size, in bytes, of the element
+   of EXP, an ARRAY_REF or an ARRAY_RANGE_REF.  */
+
+extern tree array_ref_element_size (tree);
+
+/* Return a tree representing the lower bound of the array mentioned in
+   EXP, an ARRAY_REF or an ARRAY_RANGE_REF.  */
+
+extern tree array_ref_low_bound (tree);
+
+/* Return a tree representing the upper bound of the array mentioned in
+   EXP, an ARRAY_REF or an ARRAY_RANGE_REF.  */
+
+extern tree array_ref_up_bound (tree);
+
+/* Return a tree representing the offset, in bytes, of the field referenced
+   by EXP.  This does not include any offset in DECL_FIELD_BIT_OFFSET.  */
+
+extern tree component_ref_field_offset (tree);
+
+/* Given a DECL or TYPE, return the scope in which it was declared, or
+   NUL_TREE if there is no containing scope.  */
+
+extern tree get_containing_scope (const_tree);
+
+/* Return the FUNCTION_DECL which provides this _DECL with its context,
+   or zero if none.  */
+extern tree decl_function_context (const_tree);
+
+/* Return the RECORD_TYPE, UNION_TYPE, or QUAL_UNION_TYPE which provides
+   this _DECL with its context, or zero if none.  */
+extern tree decl_type_context (const_tree);
+
+/* Return 1 if EXPR is the real constant zero.  */
+extern int real_zerop (const_tree);
+\f
+/* Declare commonly used variables for tree structure.  */
+
+/* Nonzero means lvalues are limited to those valid in pedantic ANSI C.
+   Zero means allow extended lvalues.  */
+
+extern int pedantic_lvalues;
+
+/* Points to the FUNCTION_DECL of the function whose body we are reading.  */
+
+extern GTY(()) tree current_function_decl;
+
+/* Nonzero means a FUNC_BEGIN label was emitted.  */
+extern GTY(()) const char * current_function_func_begin_label;
+\f
+/* Iterator for going through the function arguments.  */
+typedef struct {
+  tree fntype;                 /* function type declaration */
+  tree next;                   /* TREE_LIST pointing to the next argument */
+} function_args_iterator;
+
+/* Initialize the iterator I with arguments from function FNDECL  */
+
+static inline void
+function_args_iter_init (function_args_iterator *i, tree fntype)
+{
+  i->fntype = fntype;
+  i->next = TYPE_ARG_TYPES (fntype);
+}
+
+/* Return a pointer that holds the next argument if there are more arguments to
+   handle, otherwise return NULL.  */
+
+static inline tree *
+function_args_iter_cond_ptr (function_args_iterator *i)
+{
+  return (i->next) ? &TREE_VALUE (i->next) : NULL;
+}
+
+/* Return the next argument if there are more arguments to handle, otherwise
+   return NULL.  */
+
+static inline tree
+function_args_iter_cond (function_args_iterator *i)
+{
+  return (i->next) ? TREE_VALUE (i->next) : NULL_TREE;
+}
+
+/* Advance to the next argument.  */
+static inline void
+function_args_iter_next (function_args_iterator *i)
+{
+  gcc_assert (i->next != NULL_TREE);
+  i->next = TREE_CHAIN (i->next);
+}
+
+/* We set BLOCK_SOURCE_LOCATION only to inlined function entry points.  */
+
+static inline bool
+inlined_function_outer_scope_p (const_tree block)
+{
+ return BLOCK_SOURCE_LOCATION (block) != UNKNOWN_LOCATION;
+}
+
+/* Loop over all function arguments of FNTYPE.  In each iteration, PTR is set
+   to point to the next tree element.  ITER is an instance of
+   function_args_iterator used to iterate the arguments.  */
+#define FOREACH_FUNCTION_ARGS_PTR(FNTYPE, PTR, ITER)                   \
+  for (function_args_iter_init (&(ITER), (FNTYPE));                    \
+       (PTR = function_args_iter_cond_ptr (&(ITER))) != NULL;          \
+       function_args_iter_next (&(ITER)))
+
+/* Loop over all function arguments of FNTYPE.  In each iteration, TREE is set
+   to the next tree element.  ITER is an instance of function_args_iterator
+   used to iterate the arguments.  */
+#define FOREACH_FUNCTION_ARGS(FNTYPE, TREE, ITER)                      \
+  for (function_args_iter_init (&(ITER), (FNTYPE));                    \
+       (TREE = function_args_iter_cond (&(ITER))) != NULL_TREE;                \
+       function_args_iter_next (&(ITER)))
+
+
+\f
+/* In tree.c */
+extern unsigned crc32_string (unsigned, const char *);
+extern unsigned crc32_byte (unsigned, char);
+extern void clean_symbol_name (char *);
+extern tree get_file_function_name (const char *);
+extern tree get_callee_fndecl (const_tree);
+extern void change_decl_assembler_name (tree, tree);
+extern int type_num_arguments (const_tree);
+extern bool associative_tree_code (enum tree_code);
+extern bool commutative_tree_code (enum tree_code);
+extern tree upper_bound_in_type (tree, tree);
+extern tree lower_bound_in_type (tree, tree);
+extern int operand_equal_for_phi_arg_p (const_tree, const_tree);
+extern tree call_expr_arg (tree, int);
+extern tree *call_expr_argp (tree, int);
+extern tree call_expr_arglist (tree);
+extern tree create_artificial_label (void);
+extern const char *get_name (tree);
+extern bool stdarg_p (tree);
+extern bool prototype_p (tree);
+extern int function_args_count (tree);
+extern bool auto_var_in_fn_p (const_tree, const_tree);
+\f
+/* In gimplify.c */
+extern tree unshare_expr (tree);
+\f
+/* In stmt.c */
+
+extern void expand_expr_stmt (tree);
+extern int warn_if_unused_value (const_tree, location_t);
+extern void expand_label (tree);
+extern void expand_goto (tree);
+
+extern rtx expand_stack_save (void);
+extern void expand_stack_restore (tree);
+extern void expand_return (tree);
+
+/* In tree-eh.c */
+extern void using_eh_for_cleanups (void);
+
+/* In fold-const.c */
+
+/* Non-zero if we are folding constants inside an initializer; zero
+   otherwise.  */
+extern int folding_initializer;
+
+/* Convert between trees and native memory representation.  */
+extern int native_encode_expr (const_tree, unsigned char *, int);
+extern tree native_interpret_expr (tree, const unsigned char *, int);
+
+/* Fold constants as much as possible in an expression.
+   Returns the simplified expression.
+   Acts only on the top level of the expression;
+   if the argument itself cannot be simplified, its
+   subexpressions are not changed.  */
+
+extern tree fold (tree);
+extern tree fold_unary (enum tree_code, tree, tree);
+extern tree fold_unary_ignore_overflow (enum tree_code, tree, tree);
+extern tree fold_binary (enum tree_code, tree, tree, tree);
+extern tree fold_ternary (enum tree_code, tree, tree, tree, tree);
+extern tree fold_build1_stat (enum tree_code, tree, tree MEM_STAT_DECL);
+#define fold_build1(c,t1,t2) fold_build1_stat (c, t1, t2 MEM_STAT_INFO)
+extern tree fold_build2_stat (enum tree_code, tree, tree, tree MEM_STAT_DECL);
+#define fold_build2(c,t1,t2,t3) fold_build2_stat (c, t1, t2, t3 MEM_STAT_INFO)
+extern tree fold_build3_stat (enum tree_code, tree, tree, tree, tree MEM_STAT_DECL);
+#define fold_build3(c,t1,t2,t3,t4) fold_build3_stat (c, t1, t2, t3, t4 MEM_STAT_INFO)
+extern tree fold_build1_initializer (enum tree_code, tree, tree);
+extern tree fold_build2_initializer (enum tree_code, tree, tree, tree);
+extern tree fold_build3_initializer (enum tree_code, tree, tree, tree, tree);
+extern tree fold_build_call_array (tree, tree, int, tree *);
+extern tree fold_build_call_array_initializer (tree, tree, int, tree *);
+extern bool fold_convertible_p (const_tree, const_tree);
+extern tree fold_convert (tree, tree);
+extern tree fold_single_bit_test (enum tree_code, tree, tree, tree);
+extern tree fold_ignored_result (tree);
+extern tree fold_abs_const (tree, tree);
+extern tree fold_indirect_ref_1 (tree, tree);
+extern void fold_defer_overflow_warnings (void);
+extern void fold_undefer_overflow_warnings (bool, const_gimple, int);
+extern void fold_undefer_and_ignore_overflow_warnings (void);
+extern bool fold_deferring_overflow_warnings_p (void);
+extern tree maybe_fold_offset_to_reference (tree, tree, tree);
+extern tree maybe_fold_offset_to_address (tree, tree, tree);
+extern tree maybe_fold_stmt_addition (tree, tree, tree);
+
+extern tree force_fit_type_double (tree, unsigned HOST_WIDE_INT, HOST_WIDE_INT,
+                                  int, bool);
+
+extern int fit_double_type (unsigned HOST_WIDE_INT, HOST_WIDE_INT,
+                           unsigned HOST_WIDE_INT *, HOST_WIDE_INT *, const_tree);
+extern int add_double_with_sign (unsigned HOST_WIDE_INT, HOST_WIDE_INT,
+                                unsigned HOST_WIDE_INT, HOST_WIDE_INT,
+                                unsigned HOST_WIDE_INT *, HOST_WIDE_INT *,
+                                bool);
+#define add_double(l1,h1,l2,h2,lv,hv) \
+  add_double_with_sign (l1, h1, l2, h2, lv, hv, false)
+extern int neg_double (unsigned HOST_WIDE_INT, HOST_WIDE_INT,
+                      unsigned HOST_WIDE_INT *, HOST_WIDE_INT *);
+extern int mul_double_with_sign (unsigned HOST_WIDE_INT, HOST_WIDE_INT,
+                                unsigned HOST_WIDE_INT, HOST_WIDE_INT,
+                                unsigned HOST_WIDE_INT *, HOST_WIDE_INT *,
+                                bool);
+#define mul_double(l1,h1,l2,h2,lv,hv) \
+  mul_double_with_sign (l1, h1, l2, h2, lv, hv, false)
+extern void lshift_double (unsigned HOST_WIDE_INT, HOST_WIDE_INT,
+                          HOST_WIDE_INT, unsigned int,
+                          unsigned HOST_WIDE_INT *, HOST_WIDE_INT *, int);
+extern void rshift_double (unsigned HOST_WIDE_INT, HOST_WIDE_INT,
+                          HOST_WIDE_INT, unsigned int,
+                          unsigned HOST_WIDE_INT *, HOST_WIDE_INT *, int);
+extern void lrotate_double (unsigned HOST_WIDE_INT, HOST_WIDE_INT,
+                           HOST_WIDE_INT, unsigned int,
+                           unsigned HOST_WIDE_INT *, HOST_WIDE_INT *);
+extern void rrotate_double (unsigned HOST_WIDE_INT, HOST_WIDE_INT,
+                           HOST_WIDE_INT, unsigned int,
+                           unsigned HOST_WIDE_INT *, HOST_WIDE_INT *);
+
+extern int div_and_round_double (enum tree_code, int, unsigned HOST_WIDE_INT,
+                                HOST_WIDE_INT, unsigned HOST_WIDE_INT,
+                                HOST_WIDE_INT, unsigned HOST_WIDE_INT *,
+                                HOST_WIDE_INT *, unsigned HOST_WIDE_INT *,
+                                HOST_WIDE_INT *);
+
+enum operand_equal_flag
+{
+  OEP_ONLY_CONST = 1,
+  OEP_PURE_SAME = 2
+};
+
+extern int operand_equal_p (const_tree, const_tree, unsigned int);
+extern int multiple_of_p (tree, const_tree, const_tree);
+extern tree omit_one_operand (tree, tree, tree);
+extern tree omit_two_operands (tree, tree, tree, tree);
+extern tree invert_truthvalue (tree);
+extern tree fold_truth_not_expr (tree);
+extern tree fold_unary_to_constant (enum tree_code, tree, tree);
+extern tree fold_binary_to_constant (enum tree_code, tree, tree, tree);
+extern tree fold_read_from_constant_string (tree);
+extern tree int_const_binop (enum tree_code, const_tree, const_tree, int);
+extern tree build_fold_addr_expr (tree);
+extern tree fold_build_cleanup_point_expr (tree type, tree expr);
+extern tree fold_strip_sign_ops (tree);
+extern tree build_fold_addr_expr_with_type (tree, tree);
+extern tree build_fold_indirect_ref (tree);
+extern tree fold_indirect_ref (tree);
+extern tree constant_boolean_node (int, tree);
+extern tree build_low_bits_mask (tree, unsigned);
+
+extern bool tree_swap_operands_p (const_tree, const_tree, bool);
+extern enum tree_code swap_tree_comparison (enum tree_code);
+
+extern bool ptr_difference_const (tree, tree, HOST_WIDE_INT *);
+extern enum tree_code invert_tree_comparison (enum tree_code, bool);
+
+extern bool tree_expr_nonzero_p (tree);
+extern bool tree_unary_nonzero_warnv_p (enum tree_code, tree, tree, bool *);
+extern bool tree_binary_nonzero_warnv_p (enum tree_code, tree, tree, tree op1,
+                                         bool *);
+extern bool tree_single_nonzero_warnv_p (tree, bool *);
+extern bool tree_expr_nonzero_warnv_p (tree, bool *);
+extern bool tree_unary_nonnegative_warnv_p (enum tree_code, tree, tree, bool *);
+extern bool tree_binary_nonnegative_warnv_p (enum tree_code, tree, tree, tree,
+                                             bool *);
+extern bool tree_single_nonnegative_warnv_p (tree t, bool *strict_overflow_p);
+extern bool tree_invalid_nonnegative_warnv_p (tree t, bool *strict_overflow_p);
+extern bool tree_call_nonnegative_warnv_p (tree, tree, tree, tree, bool *);
+
+extern bool tree_expr_nonzero_warnv_p (tree, bool *);
+
+extern bool fold_real_zero_addition_p (const_tree, const_tree, int);
+
+/* Return nonzero if CODE is a tree code that represents a truth value.  */
+static inline bool
+truth_value_p (enum tree_code code)
+{
+  return (TREE_CODE_CLASS (code) == tcc_comparison
+         || code == TRUTH_AND_EXPR || code == TRUTH_ANDIF_EXPR
+         || code == TRUTH_OR_EXPR || code == TRUTH_ORIF_EXPR
+         || code == TRUTH_XOR_EXPR || code == TRUTH_NOT_EXPR);
+}
+
+
+/* In builtins.c */
+extern tree fold_call_expr (tree, bool);
+extern tree fold_builtin_fputs (tree, tree, bool, bool, tree);
+extern tree fold_builtin_strcpy (tree, tree, tree, tree);
+extern tree fold_builtin_strncpy (tree, tree, tree, tree, tree);
+extern tree fold_builtin_memory_chk (tree, tree, tree, tree, tree, tree, bool,
+                                    enum built_in_function);
+extern tree fold_builtin_stxcpy_chk (tree, tree, tree, tree, tree, bool,
+                                    enum built_in_function);
+extern tree fold_builtin_strncpy_chk (tree, tree, tree, tree, tree);
+extern tree fold_builtin_snprintf_chk (tree, tree, enum built_in_function);
+extern bool fold_builtin_next_arg (tree, bool);
+extern enum built_in_function builtin_mathfn_code (const_tree);
+extern tree build_function_call_expr (tree, tree);
+extern tree fold_builtin_call_array (tree, tree, int, tree *);
+extern void debug_fold_checksum (const_tree);
+extern tree build_call_expr (tree, int, ...);
+extern tree mathfn_built_in (tree, enum built_in_function fn);
+extern tree strip_float_extensions (tree);
+extern tree c_strlen (tree, int);
+extern tree std_gimplify_va_arg_expr (tree, tree, gimple_seq *, gimple_seq *);
+extern tree build_va_arg_indirect_ref (tree);
+extern tree build_string_literal (int, const char *);
+extern bool validate_arglist (const_tree, ...);
+extern rtx builtin_memset_read_str (void *, HOST_WIDE_INT, enum machine_mode);
+extern int get_pointer_alignment (tree, unsigned int);
+extern int get_object_alignment (tree, unsigned int, unsigned int);
+extern tree fold_call_stmt (gimple, bool);
+extern tree gimple_fold_builtin_snprintf_chk (gimple, tree, enum built_in_function);
+
+/* In convert.c */
+extern tree strip_float_extensions (tree);
+
+/* In tree.c */
+extern int really_constant_p (const_tree);
+extern bool decl_address_invariant_p (const_tree);
+extern bool decl_address_ip_invariant_p (const_tree);
+extern int int_fits_type_p (const_tree, const_tree);
+#ifndef GENERATOR_FILE
+extern void get_type_static_bounds (const_tree, mpz_t, mpz_t);
+#endif
+extern bool variably_modified_type_p (tree, tree);
+extern int tree_log2 (const_tree);
+extern int tree_floor_log2 (const_tree);
+extern int simple_cst_equal (const_tree, const_tree);
+extern hashval_t iterative_hash_expr (const_tree, hashval_t);
+extern hashval_t iterative_hash_exprs_commutative (const_tree,
+                                                   const_tree, hashval_t);
+extern hashval_t iterative_hash_hashval_t (hashval_t, hashval_t);
+extern int compare_tree_int (const_tree, unsigned HOST_WIDE_INT);
+extern int type_list_equal (const_tree, const_tree);
+extern int chain_member (const_tree, const_tree);
+extern tree type_hash_lookup (unsigned int, tree);
+extern void type_hash_add (unsigned int, tree);
+extern int simple_cst_list_equal (const_tree, const_tree);
+extern void dump_tree_statistics (void);
+extern void expand_function_end (void);
+extern void expand_function_start (tree);
+extern void stack_protect_prologue (void);
+extern void stack_protect_epilogue (void);
+extern void recompute_tree_invariant_for_addr_expr (tree);
+extern bool needs_to_live_in_memory (const_tree);
+extern tree reconstruct_complex_type (tree, tree);
+
+extern int real_onep (const_tree);
+extern int real_twop (const_tree);
+extern int real_minus_onep (const_tree);
+extern void init_ttree (void);
+extern void build_common_tree_nodes (bool, bool);
+extern void build_common_tree_nodes_2 (int);
+extern void build_common_builtin_nodes (void);
+extern tree build_nonstandard_integer_type (unsigned HOST_WIDE_INT, int);
+extern tree build_range_type (tree, tree, tree);
+extern HOST_WIDE_INT int_cst_value (const_tree);
+extern tree build_addr (tree, tree);
+
+extern bool fields_compatible_p (const_tree, const_tree);
+extern tree find_compatible_field (tree, tree);
+
+extern void set_expr_locus (tree, source_location *);
+
+extern tree *tree_block (tree);
+extern location_t *block_nonartificial_location (tree);
+extern location_t tree_nonartificial_location (tree);
+
+/* In function.c */
+extern void expand_main_function (void);
+extern void init_dummy_function_start (void);
+extern void expand_dummy_function_end (void);
+extern unsigned int init_function_for_compilation (void);
+extern void allocate_struct_function (tree, bool);
+extern void push_struct_function (tree fndecl);
+extern void init_function_start (tree);
+extern bool use_register_for_decl (const_tree);
+extern void generate_setjmp_warnings (void);
+extern void init_temp_slots (void);
+extern void free_temp_slots (void);
+extern void pop_temp_slots (void);
+extern void push_temp_slots (void);
+extern void preserve_temp_slots (rtx);
+extern int aggregate_value_p (const_tree, const_tree);
+extern void push_function_context (void);
+extern void pop_function_context (void);
+extern gimple_seq gimplify_parameters (void);
+
+/* In print-rtl.c */
+#ifdef BUFSIZ
+extern void print_rtl (FILE *, const_rtx);
+#endif
+
+/* In print-tree.c */
+extern void debug_tree (tree);
+#ifdef BUFSIZ
+extern void dump_addr (FILE*, const char *, const void *);
+extern void print_node (FILE *, const char *, tree, int);
+extern void print_node_brief (FILE *, const char *, const_tree, int);
+extern void indent_to (FILE *, int);
+#endif
+
+/* In tree-inline.c:  */
+extern bool debug_find_tree (tree, tree);
+/* This is in tree-inline.c since the routine uses
+   data structures from the inliner.  */
+extern tree unsave_expr_now (tree);
+extern tree build_duplicate_type (tree);
+
+/* In calls.c */
+
+/* Nonzero if this is a call to a function whose return value depends
+   solely on its arguments, has no side effects, and does not read
+   global memory.  This corresponds to TREE_READONLY for function
+   decls.  */
+#define ECF_CONST                (1 << 0)
+/* Nonzero if this is a call to "pure" function (like const function,
+   but may read memory.  This corresponds to DECL_PURE_P for function
+   decls.  */
+#define ECF_PURE                 (1 << 1)
+/* Nonzero if this is ECF_CONST or ECF_PURE but cannot be proven to no
+   infinite loop.  This corresponds to DECL_LOOPING_CONST_OR_PURE_P
+   for function decls.*/
+#define ECF_LOOPING_CONST_OR_PURE (1 << 2)
+/* Nonzero if this call will never return.  */
+#define ECF_NORETURN             (1 << 3)
+/* Nonzero if this is a call to malloc or a related function.  */
+#define ECF_MALLOC               (1 << 4)
+/* Nonzero if it is plausible that this is a call to alloca.  */
+#define ECF_MAY_BE_ALLOCA        (1 << 5)
+/* Nonzero if this is a call to a function that won't throw an exception.  */
+#define ECF_NOTHROW              (1 << 6)
+/* Nonzero if this is a call to setjmp or a related function.  */
+#define ECF_RETURNS_TWICE        (1 << 7)
+/* Nonzero if this call replaces the current stack frame.  */
+#define ECF_SIBCALL              (1 << 8)
+/* Function does not read or write memory (but may have side effects, so
+   it does not necessarily fit ECF_CONST).  */
+#define ECF_NOVOPS               (1 << 9)
+
+extern int flags_from_decl_or_type (const_tree);
+extern int call_expr_flags (const_tree);
+
+extern int setjmp_call_p (const_tree);
+extern bool gimple_alloca_call_p (const_gimple);
+extern bool alloca_call_p (const_tree);
+extern bool must_pass_in_stack_var_size (enum machine_mode, const_tree);
+extern bool must_pass_in_stack_var_size_or_pad (enum machine_mode, const_tree);
+extern tree block_ultimate_origin (const_tree);
+
+/* In attribs.c.  */
+
+extern const struct attribute_spec *lookup_attribute_spec (tree);
+
+/* Process the attributes listed in ATTRIBUTES and install them in *NODE,
+   which is either a DECL (including a TYPE_DECL) or a TYPE.  If a DECL,
+   it should be modified in place; if a TYPE, a copy should be created
+   unless ATTR_FLAG_TYPE_IN_PLACE is set in FLAGS.  FLAGS gives further
+   information, in the form of a bitwise OR of flags in enum attribute_flags
+   from tree.h.  Depending on these flags, some attributes may be
+   returned to be applied at a later stage (for example, to apply
+   a decl attribute to the declaration rather than to its type).  */
+extern tree decl_attributes (tree *, tree, int);
+
+/* Return true if the given identifier tree is the name of a lock attribute
+   that takes arguments.  */
+extern bool is_lock_attribute_with_args (tree);
+/* Extract and return all lock attributes from the given attribute list.  */
+extern tree extract_lock_attributes (tree);
+
+/* In integrate.c */
+extern void set_decl_abstract_flags (tree, int);
+extern void set_decl_origin_self (tree);
+
+/* In stor-layout.c */
+extern void set_min_and_max_values_for_integral_type (tree, int, bool);
+extern void fixup_signed_type (tree);
+extern void internal_reference_types (void);
+extern unsigned int update_alignment_for_field (record_layout_info, tree,
+                                                unsigned int);
+/* varasm.c */
+extern void make_decl_rtl (tree);
+extern void make_decl_one_only (tree);
+extern int supports_one_only (void);
+extern void resolve_unique_section (tree, int, int);
+extern void mark_referenced (tree);
+extern void mark_decl_referenced (tree);
+extern void notice_global_symbol (tree);
+extern void set_user_assembler_name (tree, const char *);
+extern void process_pending_assemble_externals (void);
+extern void finish_aliases_1 (void);
+extern void finish_aliases_2 (void);
+extern tree emutls_decl (tree);
+
+/* In stmt.c */
+extern void expand_computed_goto (tree);
+extern bool parse_output_constraint (const char **, int, int, int,
+                                    bool *, bool *, bool *);
+extern bool parse_input_constraint (const char **, int, int, int, int,
+                                   const char * const *, bool *, bool *);
+extern void expand_asm_expr (tree);
+extern tree resolve_asm_operand_names (tree, tree, tree);
+extern void expand_case (tree);
+extern void expand_decl (tree);
+#ifdef HARD_CONST
+/* Silly ifdef to avoid having all includers depend on hard-reg-set.h.  */
+extern tree tree_overlaps_hard_reg_set (tree, HARD_REG_SET *);
+#endif
+
+\f
+/* Interface of the DWARF2 unwind info support.  */
+
+/* Generate a new label for the CFI info to refer to.  */
+
+extern char *dwarf2out_cfi_label (void);
+
+/* Entry point to update the canonical frame address (CFA).  */
+
+extern void dwarf2out_def_cfa (const char *, unsigned, HOST_WIDE_INT);
+
+/* Add the CFI for saving a register window.  */
+
+extern void dwarf2out_window_save (const char *);
+
+/* Add a CFI to update the running total of the size of arguments pushed
+   onto the stack.  */
+
+extern void dwarf2out_args_size (const char *, HOST_WIDE_INT);
+
+/* Entry point for saving a register to the stack.  */
+
+extern void dwarf2out_reg_save (const char *, unsigned, HOST_WIDE_INT);
+
+/* Entry point for saving the return address in the stack.  */
+
+extern void dwarf2out_return_save (const char *, HOST_WIDE_INT);
+
+/* Entry point for saving the return address in a register.  */
+
+extern void dwarf2out_return_reg (const char *, unsigned);
+
+/* Entry point for saving the first register into the second.  */
+
+extern void dwarf2out_reg_save_reg (const char *, rtx, rtx);
+
+/* In tree-inline.c  */
+
+/* The type of a set of already-visited pointers.  Functions for creating
+   and manipulating it are declared in pointer-set.h */
+struct pointer_set_t;
+
+/* The type of a callback function for walking over tree structure.  */
+
+typedef tree (*walk_tree_fn) (tree *, int *, void *);
+
+/* The type of a callback function that represents a custom walk_tree.  */
+
+typedef tree (*walk_tree_lh) (tree *, int *, tree (*) (tree *, int *, void *),
+                             void *, struct pointer_set_t*);
+
+extern tree walk_tree_1 (tree*, walk_tree_fn, void*, struct pointer_set_t*,
+                        walk_tree_lh);
+extern tree walk_tree_without_duplicates_1 (tree*, walk_tree_fn, void*,
+                                           walk_tree_lh);
+#define walk_tree(a,b,c,d) \
+       walk_tree_1 (a, b, c, d, NULL)
+#define walk_tree_without_duplicates(a,b,c) \
+       walk_tree_without_duplicates_1 (a, b, c, NULL)
+
+/* Assign the RTX to declaration.  */
+
+extern void set_decl_rtl (tree, rtx);
+extern void set_decl_incoming_rtl (tree, rtx, bool);
+\f
+/* Enum and arrays used for tree allocation stats.
+   Keep in sync with tree.c:tree_node_kind_names.  */
+typedef enum
+{
+  d_kind,
+  t_kind,
+  b_kind,
+  s_kind,
+  r_kind,
+  e_kind,
+  c_kind,
+  id_kind,
+  perm_list_kind,
+  temp_list_kind,
+  vec_kind,
+  binfo_kind,
+  ssa_name_kind,
+  constr_kind,
+  x_kind,
+  lang_decl,
+  lang_type,
+  omp_clause_kind,
+  all_kinds
+} tree_node_kind;
+
+extern int tree_node_counts[];
+extern int tree_node_sizes[];
+
+/* True if we are in gimple form and the actions of the folders need to
+   be restricted.  False if we are not in gimple form and folding is not
+   restricted to creating gimple expressions.  */
+extern bool in_gimple_form;
+
+/* In tree-gimple.c.  */
+extern tree get_base_address (tree t);
+
+/* In tree-vectorizer.c.  */
+extern void vect_set_verbosity_level (const char *);
+
+/* In tree.c.  */
+
+struct tree_map_base GTY(())
+{
+  tree from;
+};
+
+extern int tree_map_base_eq (const void *, const void *);
+extern unsigned int tree_map_base_hash (const void *);
+extern int tree_map_base_marked_p (const void *);
+
+/* Map from a tree to another tree.  */
+
+struct tree_map GTY(())
+{
+  struct tree_map_base base;
+  unsigned int hash;
+  tree to;
+};
+
+#define tree_map_eq tree_map_base_eq
+extern unsigned int tree_map_hash (const void *);
+#define tree_map_marked_p tree_map_base_marked_p
+
+/* Map from a tree to an int.  */
+
+struct tree_int_map GTY(())
+{
+  struct tree_map_base base;
+  unsigned int to;
+};
+
+#define tree_int_map_eq tree_map_base_eq
+#define tree_int_map_hash tree_map_base_hash
+#define tree_int_map_marked_p tree_map_base_marked_p
+
+/* Map from a tree to initialization/finalization priorities.  */
+
+struct tree_priority_map GTY(())
+{
+  struct tree_map_base base;
+  priority_type init;
+  priority_type fini;
+};
+
+#define tree_priority_map_eq tree_map_base_eq
+#define tree_priority_map_hash tree_map_base_hash
+#define tree_priority_map_marked_p tree_map_base_marked_p
+
+/* In tree-ssa-address.c.  */
+extern tree tree_mem_ref_addr (tree, tree);
+extern void copy_mem_ref_info (tree, tree);
+
+/* In tree-vrp.c */
+extern bool ssa_name_nonzero_p (const_tree);
+extern bool ssa_name_nonnegative_p (const_tree);
+
+/* In tree-object-size.c.  */
+extern void init_object_sizes (void);
+extern void fini_object_sizes (void);
+extern unsigned HOST_WIDE_INT compute_builtin_object_size (tree, int);
+
+/* In expr.c.  */
+extern unsigned HOST_WIDE_INT highest_pow2_factor (const_tree);
+
+/* In tree-inline.c.  */
+
+void init_inline_once (void);
+
+/* Compute the number of operands in an expression node NODE.  For 
+   tcc_vl_exp nodes like CALL_EXPRs, this is stored in the node itself,
+   otherwise it is looked up from the node's code.  */
+static inline int
+tree_operand_length (const_tree node)
+{
+  if (VL_EXP_CLASS_P (node))
+    return VL_EXP_OPERAND_LENGTH (node);
+  else
+    return TREE_CODE_LENGTH (TREE_CODE (node));
+}
+
+/* Abstract iterators for CALL_EXPRs.  These static inline definitions
+   have to go towards the end of tree.h so that union tree_node is fully
+   defined by this point.  */
+
+/* Structure containing iterator state.  */
+typedef struct call_expr_arg_iterator_d GTY (())
+{
+  tree t;      /* the call_expr */
+  int n;       /* argument count */
+  int i;       /* next argument index */
+} call_expr_arg_iterator;
+
+typedef struct const_call_expr_arg_iterator_d GTY (())
+{
+  const_tree t;        /* the call_expr */
+  int n;       /* argument count */
+  int i;       /* next argument index */
+} const_call_expr_arg_iterator;
+
+/* Initialize the abstract argument list iterator object ITER with the
+   arguments from CALL_EXPR node EXP.  */
+static inline void
+init_call_expr_arg_iterator (tree exp, call_expr_arg_iterator *iter)
+{
+  iter->t = exp;
+  iter->n = call_expr_nargs (exp);
+  iter->i = 0;
+}
+
+static inline void
+init_const_call_expr_arg_iterator (const_tree exp, const_call_expr_arg_iterator *iter)
+{
+  iter->t = exp;
+  iter->n = call_expr_nargs (exp);
+  iter->i = 0;
+}
+
+/* Return the next argument from abstract argument list iterator object ITER,
+   and advance its state.  Return NULL_TREE if there are no more arguments.  */
+static inline tree
+next_call_expr_arg (call_expr_arg_iterator *iter)
+{
+  tree result;
+  if (iter->i >= iter->n)
+    return NULL_TREE;
+  result = CALL_EXPR_ARG (iter->t, iter->i);
+  iter->i++;
+  return result;
+}
+
+static inline const_tree
+next_const_call_expr_arg (const_call_expr_arg_iterator *iter)
+{
+  const_tree result;
+  if (iter->i >= iter->n)
+    return NULL_TREE;
+  result = CALL_EXPR_ARG (iter->t, iter->i);
+  iter->i++;
+  return result;
+}
+
+/* Initialize the abstract argument list iterator object ITER, then advance
+   past and return the first argument.  Useful in for expressions, e.g.
+     for (arg = first_call_expr_arg (exp, &iter); arg;
+          arg = next_call_expr_arg (&iter))   */
+static inline tree
+first_call_expr_arg (tree exp, call_expr_arg_iterator *iter)
+{
+  init_call_expr_arg_iterator (exp, iter);
+  return next_call_expr_arg (iter);
+}
+
+static inline const_tree
+first_const_call_expr_arg (const_tree exp, const_call_expr_arg_iterator *iter)
+{
+  init_const_call_expr_arg_iterator (exp, iter);
+  return next_const_call_expr_arg (iter);
+}
+
+/* Test whether there are more arguments in abstract argument list iterator
+   ITER, without changing its state.  */
+static inline bool
+more_call_expr_args_p (const call_expr_arg_iterator *iter)
+{
+  return (iter->i < iter->n);
+}
+
+static inline bool
+more_const_call_expr_args_p (const const_call_expr_arg_iterator *iter)
+{
+  return (iter->i < iter->n);
+}
+
+/* Iterate through each argument ARG of CALL_EXPR CALL, using variable ITER
+   (of type call_expr_arg_iterator) to hold the iteration state.  */
+#define FOR_EACH_CALL_EXPR_ARG(arg, iter, call)                        \
+  for ((arg) = first_call_expr_arg ((call), &(iter)); (arg);   \
+       (arg) = next_call_expr_arg (&(iter)))
+
+#define FOR_EACH_CONST_CALL_EXPR_ARG(arg, iter, call)                  \
+  for ((arg) = first_const_call_expr_arg ((call), &(iter)); (arg);     \
+       (arg) = next_const_call_expr_arg (&(iter)))
+
+#endif  /* GCC_TREE_H  */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/treestruct.def b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/treestruct.def
new file mode 100644 (file)
index 0000000..dc3e287
--- /dev/null
@@ -0,0 +1,68 @@
+/* This file contains the definitions for the tree structure
+   enumeration used in GCC.  
+
+Copyright (C) 2005, 2007, 2008 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* The format of this file is 
+   DEFTREESTRUCT(enumeration value, printable name).
+   Each enumeration value should correspond with a single member of union 
+   tree_node.  
+   These enumerator values are used in order to distinguish members of union
+   tree_node for garbage collection purposes, as well as specifying what structures
+   contain what other structures in the tree_contains_struct array.  */
+       
+DEFTREESTRUCT(TS_BASE, "base")
+DEFTREESTRUCT(TS_COMMON, "common")
+DEFTREESTRUCT(TS_INT_CST, "integer cst")
+DEFTREESTRUCT(TS_REAL_CST, "real cst")
+DEFTREESTRUCT(TS_FIXED_CST, "fixed cst")
+DEFTREESTRUCT(TS_VECTOR, "vector")
+DEFTREESTRUCT(TS_STRING, "string")
+DEFTREESTRUCT(TS_COMPLEX, "complex")
+DEFTREESTRUCT(TS_IDENTIFIER, "identifier")
+DEFTREESTRUCT(TS_DECL_MINIMAL, "decl minimal")
+DEFTREESTRUCT(TS_DECL_COMMON, "decl common")
+DEFTREESTRUCT(TS_DECL_WRTL, "decl with RTL")
+DEFTREESTRUCT(TS_DECL_NON_COMMON, "decl non-common")
+DEFTREESTRUCT(TS_DECL_WITH_VIS, "decl with visibility")
+DEFTREESTRUCT(TS_FIELD_DECL, "field decl")
+DEFTREESTRUCT(TS_VAR_DECL, "var decl")
+DEFTREESTRUCT(TS_PARM_DECL, "parm decl")
+DEFTREESTRUCT(TS_LABEL_DECL, "label decl")
+DEFTREESTRUCT(TS_RESULT_DECL, "result decl")
+DEFTREESTRUCT(TS_CONST_DECL, "const decl")
+DEFTREESTRUCT(TS_TYPE_DECL, "label decl")
+DEFTREESTRUCT(TS_FUNCTION_DECL, "function decl")
+DEFTREESTRUCT(TS_TYPE, "type")
+DEFTREESTRUCT(TS_LIST, "list")
+DEFTREESTRUCT(TS_VEC, "vec")
+DEFTREESTRUCT(TS_EXP, "exp")
+DEFTREESTRUCT(TS_SSA_NAME, "ssa name")
+DEFTREESTRUCT(TS_PHI_NODE, "phi node")
+DEFTREESTRUCT(TS_BLOCK, "block")
+DEFTREESTRUCT(TS_BINFO, "binfo")
+DEFTREESTRUCT(TS_STATEMENT_LIST, "statement list")
+DEFTREESTRUCT(TS_GIMPLE_STATEMENT, "gimple statement")
+DEFTREESTRUCT(TS_CONSTRUCTOR, "constructor")
+DEFTREESTRUCT(TS_MEMORY_TAG, "memory tag")
+DEFTREESTRUCT(TS_OMP_CLAUSE, "omp clause")
+DEFTREESTRUCT(TS_MEMORY_PARTITION_TAG, "memory partition tag")
+DEFTREESTRUCT(TS_OPTIMIZATION, "optimization options")
+DEFTREESTRUCT(TS_TARGET_OPTION, "target options")
+
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/varray.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/varray.h
new file mode 100644 (file)
index 0000000..0081447
--- /dev/null
@@ -0,0 +1,323 @@
+/* Virtual array support.
+   Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2007
+   Free Software Foundation, Inc.
+   Contributed by Cygnus Solutions.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_VARRAY_H
+#define GCC_VARRAY_H
+
+#ifndef HOST_WIDE_INT
+#include "machmode.h"
+#endif
+
+#ifndef GCC_SYSTEM_H
+#include "system.h"
+#include "coretypes.h"
+#include "tm.h"
+#endif
+
+/* Enum indicating what the varray contains.
+   If this is changed, `element' in varray.c needs to be updated.  */
+
+enum varray_data_enum {
+  VARRAY_DATA_C,
+  VARRAY_DATA_UC,
+  VARRAY_DATA_S,
+  VARRAY_DATA_US,
+  VARRAY_DATA_I,
+  VARRAY_DATA_U,
+  VARRAY_DATA_L,
+  VARRAY_DATA_UL,
+  VARRAY_DATA_HINT,
+  VARRAY_DATA_UHINT,
+  VARRAY_DATA_GENERIC,
+  VARRAY_DATA_GENERIC_NOGC,
+  VARRAY_DATA_CPTR,
+  VARRAY_DATA_RTX,
+  VARRAY_DATA_RTVEC,
+  VARRAY_DATA_TREE,
+  VARRAY_DATA_BITMAP,
+  VARRAY_DATA_REG,
+  VARRAY_DATA_BB,
+  VARRAY_DATA_TE,
+  VARRAY_DATA_EDGE,
+  VARRAY_DATA_TREE_PTR,
+  NUM_VARRAY_DATA
+};
+
+/* Union of various array types that are used.  */
+typedef union varray_data_tag GTY (()) {
+  char                   GTY ((length ("%0.num_elements"),
+                               tag ("VARRAY_DATA_C")))         vdt_c[1];
+  unsigned char                  GTY ((length ("%0.num_elements"),
+                               tag ("VARRAY_DATA_UC")))        vdt_uc[1];
+  short                          GTY ((length ("%0.num_elements"),
+                               tag ("VARRAY_DATA_S")))         vdt_s[1];
+  unsigned short         GTY ((length ("%0.num_elements"),
+                               tag ("VARRAY_DATA_US")))        vdt_us[1];
+  int                    GTY ((length ("%0.num_elements"),
+                               tag ("VARRAY_DATA_I")))         vdt_i[1];
+  unsigned int           GTY ((length ("%0.num_elements"),
+                               tag ("VARRAY_DATA_U")))         vdt_u[1];
+  long                   GTY ((length ("%0.num_elements"),
+                               tag ("VARRAY_DATA_L")))         vdt_l[1];
+  unsigned long                  GTY ((length ("%0.num_elements"),
+                               tag ("VARRAY_DATA_UL")))        vdt_ul[1];
+  HOST_WIDE_INT                  GTY ((length ("%0.num_elements"),
+                               tag ("VARRAY_DATA_HINT")))      vdt_hint[1];
+  unsigned HOST_WIDE_INT  GTY ((length ("%0.num_elements"),
+                               tag ("VARRAY_DATA_UHINT")))     vdt_uhint[1];
+  PTR                    GTY ((length ("%0.num_elements"), use_param,
+                               tag ("VARRAY_DATA_GENERIC")))   vdt_generic[1];
+  PTR                    GTY ((length ("%0.num_elements"), skip (""),
+                               tag ("VARRAY_DATA_GENERIC_NOGC")))      vdt_generic_nogc[1];
+  char                  *GTY ((length ("%0.num_elements"),
+                               tag ("VARRAY_DATA_CPTR")))      vdt_cptr[1];
+  rtx                    GTY ((length ("%0.num_elements"),
+                               tag ("VARRAY_DATA_RTX")))       vdt_rtx[1];
+  rtvec                          GTY ((length ("%0.num_elements"),
+                               tag ("VARRAY_DATA_RTVEC")))     vdt_rtvec[1];
+  tree                   GTY ((length ("%0.num_elements"),
+                               tag ("VARRAY_DATA_TREE")))      vdt_tree[1];
+  struct bitmap_head_def *GTY ((length ("%0.num_elements"),
+                               tag ("VARRAY_DATA_BITMAP")))    vdt_bitmap[1];
+  struct reg_info_def   *GTY ((length ("%0.num_elements"), skip,
+                               tag ("VARRAY_DATA_REG")))       vdt_reg[1];
+  struct basic_block_def *GTY ((length ("%0.num_elements"), skip,
+                               tag ("VARRAY_DATA_BB")))        vdt_bb[1];
+  struct elt_list       *GTY ((length ("%0.num_elements"),
+                               tag ("VARRAY_DATA_TE")))        vdt_te[1];
+  struct edge_def        *GTY ((length ("%0.num_elements"),
+                               tag ("VARRAY_DATA_EDGE")))      vdt_e[1];
+  tree                   *GTY ((length ("%0.num_elements"), skip (""),
+                               tag ("VARRAY_DATA_TREE_PTR")))  vdt_tp[1];
+} varray_data;
+
+/* Virtual array of pointers header.  */
+struct varray_head_tag GTY(()) {
+  size_t       num_elements;   /* Maximum element number allocated.  */
+  size_t        elements_used;  /* The number of elements used, if
+                                  using VARRAY_PUSH/VARRAY_POP.  */
+  enum varray_data_enum type;  /* The kind of elements in the varray.  */
+  const char   *name;          /* name of the varray for reporting errors */
+  varray_data  GTY ((desc ("%0.type"))) data;  /* The data elements follow,
+                                                  must be last.  */
+};
+typedef struct varray_head_tag *varray_type;
+
+/* Allocate a virtual array with NUM elements, each of which is SIZE bytes
+   long, named NAME.  Array elements are zeroed.  */
+extern varray_type varray_init (size_t, enum varray_data_enum, const char *);
+
+#define VARRAY_CHAR_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_C, name)
+
+#define VARRAY_UCHAR_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_UC, name)
+
+#define VARRAY_SHORT_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_S, name)
+
+#define VARRAY_USHORT_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_US, name)
+
+#define VARRAY_INT_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_I, name)
+
+#define VARRAY_UINT_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_U, name)
+
+#define VARRAY_LONG_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_L, name)
+
+#define VARRAY_ULONG_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_UL, name)
+
+#define VARRAY_WIDE_INT_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_HINT, name)
+
+#define VARRAY_UWIDE_INT_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_UHINT, name)
+
+#define VARRAY_GENERIC_PTR_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_GENERIC, name)
+
+#define VARRAY_GENERIC_PTR_NOGC_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_GENERIC_NOGC, name)
+
+#define VARRAY_CHAR_PTR_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_CPTR, name)
+
+#define VARRAY_RTX_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_RTX, name)
+
+#define VARRAY_RTVEC_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_RTVEC, name)
+
+#define VARRAY_TREE_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_TREE, name)
+
+#define VARRAY_BITMAP_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_BITMAP, name)
+
+#define VARRAY_REG_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_REG, name)
+
+#define VARRAY_BB_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_BB, name)
+
+#define VARRAY_ELT_LIST_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_TE, name)
+
+#define VARRAY_EDGE_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_EDGE, name)
+
+#define VARRAY_TREE_PTR_INIT(va, num, name) \
+  va = varray_init (num, VARRAY_DATA_TREE_PTR, name)
+
+/* Free up memory allocated by the virtual array, but do not free any of the
+   elements involved.  */
+#define VARRAY_FREE(vp) \
+  do { if (vp) { free (vp); vp = (varray_type) 0; } } while (0)
+
+/* Grow/shrink the virtual array VA to N elements.  */
+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)
+
+#define VARRAY_CLEAR(VA) varray_clear(VA)
+
+extern void varray_clear (varray_type);
+extern void dump_varray_statistics (void);
+
+/* Check for VARRAY_xxx macros being in bound.  */
+#if defined ENABLE_CHECKING && (GCC_VERSION >= 2007)
+extern void varray_check_failed (varray_type, size_t, const char *, int,
+                                const char *) ATTRIBUTE_NORETURN;
+extern void varray_underflow (varray_type, const char *, int, const char *)
+     ATTRIBUTE_NORETURN;
+#define VARRAY_CHECK(VA, N, T) __extension__                   \
+(*({ varray_type const _va = (VA);                             \
+     const size_t _n = (N);                                    \
+     if (_n >= _va->num_elements)                              \
+       varray_check_failed (_va, _n, __FILE__, __LINE__, __FUNCTION__);        \
+     &_va->data.T[_n]; }))
+
+#define VARRAY_POP(VA) do {                                    \
+  varray_type const _va = (VA);                                        \
+  if (_va->elements_used == 0)                                 \
+    varray_underflow (_va, __FILE__, __LINE__, __FUNCTION__);  \
+  else                                                         \
+    _va->elements_used--;                                      \
+} while (0)
+
+#else
+#define VARRAY_CHECK(VA, N, T) ((VA)->data.T[N])
+/* Pop the top element of VA.  */
+#define VARRAY_POP(VA) do { ((VA)->elements_used--); } while (0)
+#endif
+
+/* Push X onto VA.  T is the name of the field in varray_data
+   corresponding to the type of X.  */
+#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)
+
+#define VARRAY_CHAR(VA, N)             VARRAY_CHECK (VA, N, vdt_c)
+#define VARRAY_UCHAR(VA, N)            VARRAY_CHECK (VA, N, vdt_uc)
+#define VARRAY_SHORT(VA, N)            VARRAY_CHECK (VA, N, vdt_s)
+#define VARRAY_USHORT(VA, N)           VARRAY_CHECK (VA, N, vdt_us)
+#define VARRAY_INT(VA, N)              VARRAY_CHECK (VA, N, vdt_i)
+#define VARRAY_UINT(VA, N)             VARRAY_CHECK (VA, N, vdt_u)
+#define VARRAY_LONG(VA, N)             VARRAY_CHECK (VA, N, vdt_l)
+#define VARRAY_ULONG(VA, N)            VARRAY_CHECK (VA, N, vdt_ul)
+#define VARRAY_WIDE_INT(VA, N)         VARRAY_CHECK (VA, N, vdt_hint)
+#define VARRAY_UWIDE_INT(VA, N)                VARRAY_CHECK (VA, N, vdt_uhint)
+#define VARRAY_GENERIC_PTR(VA,N)       VARRAY_CHECK (VA, N, vdt_generic)
+#define VARRAY_GENERIC_PTR_NOGC(VA,N)  VARRAY_CHECK (VA, N, vdt_generic_nogc)
+#define VARRAY_CHAR_PTR(VA,N)          VARRAY_CHECK (VA, N, vdt_cptr)
+#define VARRAY_RTX(VA, N)              VARRAY_CHECK (VA, N, vdt_rtx)
+#define VARRAY_RTVEC(VA, N)            VARRAY_CHECK (VA, N, vdt_rtvec)
+#define VARRAY_TREE(VA, N)             VARRAY_CHECK (VA, N, vdt_tree)
+#define VARRAY_BITMAP(VA, N)           VARRAY_CHECK (VA, N, vdt_bitmap)
+#define VARRAY_REG(VA, N)              VARRAY_CHECK (VA, N, vdt_reg)
+#define VARRAY_BB(VA, N)               VARRAY_CHECK (VA, N, vdt_bb)
+#define VARRAY_ELT_LIST(VA, N)         VARRAY_CHECK (VA, N, vdt_te)
+#define VARRAY_EDGE(VA, N)             VARRAY_CHECK (VA, N, vdt_e)
+#define VARRAY_TREE_PTR(VA, N)         VARRAY_CHECK (VA, N, vdt_tp)
+
+/* Push a new element on the end of VA, extending it if necessary.  */
+#define VARRAY_PUSH_CHAR(VA, X)                VARRAY_PUSH (VA, vdt_c, X)
+#define VARRAY_PUSH_UCHAR(VA, X)       VARRAY_PUSH (VA, vdt_uc, X)
+#define VARRAY_PUSH_SHORT(VA, X)       VARRAY_PUSH (VA, vdt_s, X)
+#define VARRAY_PUSH_USHORT(VA, X)      VARRAY_PUSH (VA, vdt_us, X)
+#define VARRAY_PUSH_INT(VA, X)         VARRAY_PUSH (VA, vdt_i, X)
+#define VARRAY_PUSH_UINT(VA, X)                VARRAY_PUSH (VA, vdt_u, X)
+#define VARRAY_PUSH_LONG(VA, X)                VARRAY_PUSH (VA, vdt_l, X)
+#define VARRAY_PUSH_ULONG(VA, X)       VARRAY_PUSH (VA, vdt_ul, X)
+#define VARRAY_PUSH_WIDE_INT(VA, X)    VARRAY_PUSH (VA, vdt_hint, X)
+#define VARRAY_PUSH_UWIDE_INT(VA, X)   VARRAY_PUSH (VA, vdt_uhint, X)
+#define VARRAY_PUSH_GENERIC_PTR(VA, X) VARRAY_PUSH (VA, vdt_generic, X)
+#define VARRAY_PUSH_GENERIC_PTR_NOGC(VA, X)    VARRAY_PUSH (VA, vdt_generic_nogc, X)
+#define VARRAY_PUSH_CHAR_PTR(VA, X)    VARRAY_PUSH (VA, vdt_cptr, X)
+#define VARRAY_PUSH_RTX(VA, X)         VARRAY_PUSH (VA, vdt_rtx, X)
+#define VARRAY_PUSH_RTVEC(VA, X)       VARRAY_PUSH (VA, vdt_rtvec, X)
+#define VARRAY_PUSH_TREE(VA, X)                VARRAY_PUSH (VA, vdt_tree, X)
+#define VARRAY_PUSH_BITMAP(VA, X)      VARRAY_PUSH (VA, vdt_bitmap, X)
+#define VARRAY_PUSH_REG(VA, X)         VARRAY_PUSH (VA, vdt_reg, X)
+#define VARRAY_PUSH_BB(VA, X)          VARRAY_PUSH (VA, vdt_bb, X)
+#define VARRAY_PUSH_EDGE(VA, X)                VARRAY_PUSH (VA, vdt_e, X)
+#define VARRAY_PUSH_TREE_PTR(VA, X)    VARRAY_PUSH (VA, vdt_tp, X)
+
+/* Return the last element of VA.  */
+#define VARRAY_TOP(VA, T) VARRAY_CHECK(VA, (VA)->elements_used - 1, T)
+
+#define VARRAY_TOP_CHAR(VA)            VARRAY_TOP (VA, vdt_c)
+#define VARRAY_TOP_UCHAR(VA)           VARRAY_TOP (VA, vdt_uc)
+#define VARRAY_TOP_SHORT(VA)           VARRAY_TOP (VA, vdt_s)
+#define VARRAY_TOP_USHORT(VA)          VARRAY_TOP (VA, vdt_us)
+#define VARRAY_TOP_INT(VA)             VARRAY_TOP (VA, vdt_i)
+#define VARRAY_TOP_UINT(VA)            VARRAY_TOP (VA, vdt_u)
+#define VARRAY_TOP_LONG(VA)            VARRAY_TOP (VA, vdt_l)
+#define VARRAY_TOP_ULONG(VA)           VARRAY_TOP (VA, vdt_ul)
+#define VARRAY_TOP_WIDE_INT(VA)                VARRAY_TOP (VA, vdt_hint)
+#define VARRAY_TOP_UWIDE_INT(VA)       VARRAY_TOP (VA, vdt_uhint)
+#define VARRAY_TOP_GENERIC_PTR(VA)     VARRAY_TOP (VA, vdt_generic)
+#define VARRAY_TOP_GENERIC_PTR_NOGC(VA)        VARRAY_TOP (VA, vdt_generic_nogc)
+#define VARRAY_TOP_CHAR_PTR(VA)                VARRAY_TOP (VA, vdt_cptr)
+#define VARRAY_TOP_RTX(VA)             VARRAY_TOP (VA, vdt_rtx)
+#define VARRAY_TOP_RTVEC(VA)           VARRAY_TOP (VA, vdt_rtvec)
+#define VARRAY_TOP_TREE(VA)            VARRAY_TOP (VA, vdt_tree)
+#define VARRAY_TOP_BITMAP(VA)          VARRAY_TOP (VA, vdt_bitmap)
+#define VARRAY_TOP_REG(VA)             VARRAY_TOP (VA, vdt_reg)
+#define VARRAY_TOP_BB(VA)              VARRAY_TOP (VA, vdt_bb)
+#define VARRAY_TOP_EDGE(VA)            VARRAY_TOP (VA, vdt_e)
+#define VARRAY_TOP_TREE_PTR(VA)                VARRAY_TOP (VA, vdt_tp)
+
+#endif /* ! GCC_VARRAY_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/vec.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/vec.h
new file mode 100644 (file)
index 0000000..adbd16a
--- /dev/null
@@ -0,0 +1,1198 @@
+/* Vector API for GNU compiler.
+   Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+   Contributed by Nathan Sidwell <nathan@codesourcery.com>
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_VEC_H
+#define GCC_VEC_H
+
+/* The macros here implement a set of templated vector types and
+   associated interfaces.  These templates are implemented with
+   macros, as we're not in C++ land.  The interface functions are
+   typesafe and use static inline functions, sometimes backed by
+   out-of-line generic functions.  The vectors are designed to
+   interoperate with the GTY machinery.
+
+   Because of the different behavior of structure objects, scalar
+   objects and of pointers, there are three flavors, one for each of
+   these variants.  Both the structure object and pointer variants
+   pass pointers to objects around -- in the former case the pointers
+   are stored into the vector and in the latter case the pointers are
+   dereferenced and the objects copied into the vector.  The scalar
+   object variant is suitable for int-like objects, and the vector
+   elements are returned by value.
+
+   There are both 'index' and 'iterate' accessors.  The iterator
+   returns a boolean iteration condition and updates the iteration
+   variable passed by reference.  Because the iterator will be
+   inlined, the address-of can be optimized away.
+
+   The vectors are implemented using the trailing array idiom, thus
+   they are not resizeable without changing the address of the vector
+   object itself.  This means you cannot have variables or fields of
+   vector type -- always use a pointer to a vector.  The one exception
+   is the final field of a structure, which could be a vector type.
+   You will have to use the embedded_size & embedded_init calls to
+   create such objects, and they will probably not be resizeable (so
+   don't use the 'safe' allocation variants).  The trailing array
+   idiom is used (rather than a pointer to an array of data), because,
+   if we allow NULL to also represent an empty vector, empty vectors
+   occupy minimal space in the structure containing them.
+
+   Each operation that increases the number of active elements is
+   available in 'quick' and 'safe' variants.  The former presumes that
+   there is sufficient allocated space for the operation to succeed
+   (it dies if there is not).  The latter will reallocate the
+   vector, if needed.  Reallocation causes an exponential increase in
+   vector size.  If you know you will be adding N elements, it would
+   be more efficient to use the reserve operation before adding the
+   elements with the 'quick' operation.  This will ensure there are at
+   least as many elements as you ask for, it will exponentially
+   increase if there are too few spare slots.  If you want reserve a
+   specific number of slots, but do not want the exponential increase
+   (for instance, you know this is the last allocation), use the
+   reserve_exact operation.  You can also create a vector of a
+   specific size from the get go.
+
+   You should prefer the push and pop operations, as they append and
+   remove from the end of the vector. If you need to remove several
+   items in one go, use the truncate operation.  The insert and remove
+   operations allow you to change elements in the middle of the
+   vector.  There are two remove operations, one which preserves the
+   element ordering 'ordered_remove', and one which does not
+   'unordered_remove'.  The latter function copies the end element
+   into the removed slot, rather than invoke a memmove operation.  The
+   'lower_bound' function will determine where to place an item in the
+   array using insert that will maintain sorted order.
+
+   When a vector type is defined, first a non-memory managed version
+   is created.  You can then define either or both garbage collected
+   and heap allocated versions.  The allocation mechanism is specified
+   when the type is defined, and is therefore part of the type.  If
+   you need both gc'd and heap allocated versions, you still must have
+   *exactly* one definition of the common non-memory managed base vector.
+   
+   If you need to directly manipulate a vector, then the 'address'
+   accessor will return the address of the start of the vector.  Also
+   the 'space' predicate will tell you whether there is spare capacity
+   in the vector.  You will not normally need to use these two functions.
+   
+   Vector types are defined using a DEF_VEC_{O,P,I}(TYPEDEF) macro, to
+   get the non-memory allocation version, and then a
+   DEF_VEC_ALLOC_{O,P,I}(TYPEDEF,ALLOC) macro to get memory managed
+   vectors.  Variables of vector type are declared using a
+   VEC(TYPEDEF,ALLOC) macro.  The ALLOC argument specifies the
+   allocation strategy, and can be either 'gc' or 'heap' for garbage
+   collected and heap allocated respectively.  It can be 'none' to get
+   a vector that must be explicitly allocated (for instance as a
+   trailing array of another structure).  The characters O, P and I
+   indicate whether TYPEDEF is a pointer (P), object (O) or integral
+   (I) type.  Be careful to pick the correct one, as you'll get an
+   awkward and inefficient API if you use the wrong one.  There is a
+   check, which results in a compile-time warning, for the P and I
+   versions, but there is no check for the O versions, as that is not
+   possible in plain C.  Due to the way GTY works, you must annotate
+   any structures you wish to insert or reference from a vector with a
+   GTY(()) tag.  You need to do this even if you never declare the GC
+   allocated variants.
+
+   An example of their use would be,
+
+   DEF_VEC_P(tree);   // non-managed tree vector.
+   DEF_VEC_ALLOC_P(tree,gc);   // gc'd vector of tree pointers.  This must
+                               // appear at file scope.
+
+   struct my_struct {
+     VEC(tree,gc) *v;      // A (pointer to) a vector of tree pointers.
+   };
+
+   struct my_struct *s;
+
+   if (VEC_length(tree,s->v)) { we have some contents }
+   VEC_safe_push(tree,gc,s->v,decl); // append some decl onto the end
+   for (ix = 0; VEC_iterate(tree,s->v,ix,elt); ix++)
+     { do something with elt }
+
+*/
+
+/* Macros to invoke API calls.  A single macro works for both pointer
+   and object vectors, but the argument and return types might well be
+   different.  In each macro, T is the typedef of the vector elements,
+   and A is the allocation strategy.  The allocation strategy is only
+   present when it is required.  Some of these macros pass the vector,
+   V, by reference (by taking its address), this is noted in the
+   descriptions.  */
+
+/* Length of vector
+   unsigned VEC_T_length(const VEC(T) *v);
+
+   Return the number of active elements in V.  V can be NULL, in which
+   case zero is returned.  */
+
+#define VEC_length(T,V)        (VEC_OP(T,base,length)(VEC_BASE(V)))
+
+
+/* Check if vector is empty
+   int VEC_T_empty(const VEC(T) *v);
+
+   Return nonzero if V is an empty vector (or V is NULL), zero otherwise.  */
+
+#define VEC_empty(T,V) (VEC_length (T,V) == 0)
+
+
+/* Get the final element of the vector.
+   T VEC_T_last(VEC(T) *v); // Integer
+   T VEC_T_last(VEC(T) *v); // Pointer
+   T *VEC_T_last(VEC(T) *v); // Object
+
+   Return the final element.  V must not be empty.  */
+
+#define VEC_last(T,V)  (VEC_OP(T,base,last)(VEC_BASE(V) VEC_CHECK_INFO))
+
+/* Index into vector
+   T VEC_T_index(VEC(T) *v, unsigned ix); // Integer
+   T VEC_T_index(VEC(T) *v, unsigned ix); // Pointer
+   T *VEC_T_index(VEC(T) *v, unsigned ix); // Object
+
+   Return the IX'th element.  If IX must be in the domain of V.  */
+
+#define VEC_index(T,V,I) (VEC_OP(T,base,index)(VEC_BASE(V),I VEC_CHECK_INFO))
+
+/* Iterate over vector
+   int VEC_T_iterate(VEC(T) *v, unsigned ix, T &ptr); // Integer
+   int VEC_T_iterate(VEC(T) *v, unsigned ix, T &ptr); // Pointer
+   int VEC_T_iterate(VEC(T) *v, unsigned ix, T *&ptr); // Object
+
+   Return iteration condition and update PTR to point to the IX'th
+   element.  At the end of iteration, sets PTR to NULL.  Use this to
+   iterate over the elements of a vector as follows,
+
+     for (ix = 0; VEC_iterate(T,v,ix,ptr); ix++)
+       continue;  */
+
+#define VEC_iterate(T,V,I,P)   (VEC_OP(T,base,iterate)(VEC_BASE(V),I,&(P)))
+
+/* Allocate new vector.
+   VEC(T,A) *VEC_T_A_alloc(int reserve);
+
+   Allocate a new vector with space for RESERVE objects.  If RESERVE
+   is zero, NO vector is created.  */
+
+#define VEC_alloc(T,A,N)       (VEC_OP(T,A,alloc)(N MEM_STAT_INFO))
+
+/* Free a vector.
+   void VEC_T_A_free(VEC(T,A) *&);
+
+   Free a vector and set it to NULL.  */
+
+#define VEC_free(T,A,V)        (VEC_OP(T,A,free)(&V))
+
+/* Use these to determine the required size and initialization of a
+   vector embedded within another structure (as the final member).
+   
+   size_t VEC_T_embedded_size(int reserve);
+   void VEC_T_embedded_init(VEC(T) *v, int reserve);
+   
+   These allow the caller to perform the memory allocation.  */
+
+#define VEC_embedded_size(T,N)  (VEC_OP(T,base,embedded_size)(N))
+#define VEC_embedded_init(T,O,N) (VEC_OP(T,base,embedded_init)(VEC_BASE(O),N))
+
+/* Copy a vector.
+   VEC(T,A) *VEC_T_A_copy(VEC(T) *);
+
+   Copy the live elements of a vector into a new vector.  The new and
+   old vectors need not be allocated by the same mechanism.  */
+
+#define VEC_copy(T,A,V) (VEC_OP(T,A,copy)(VEC_BASE(V) MEM_STAT_INFO))
+
+/* Determine if a vector has additional capacity.
+   
+   int VEC_T_space (VEC(T) *v,int reserve)
+
+   If V has space for RESERVE additional entries, return nonzero.  You
+   usually only need to use this if you are doing your own vector
+   reallocation, for instance on an embedded vector.  This returns
+   nonzero in exactly the same circumstances that VEC_T_reserve
+   will.  */
+
+#define VEC_space(T,V,R) \
+       (VEC_OP(T,base,space)(VEC_BASE(V),R VEC_CHECK_INFO))
+
+/* Reserve space.
+   int VEC_T_A_reserve(VEC(T,A) *&v, int reserve);
+
+   Ensure that V has at least RESERVE slots available.  This will
+   create additional headroom.  Note this can cause V to be
+   reallocated.  Returns nonzero iff reallocation actually
+   occurred.  */
+
+#define VEC_reserve(T,A,V,R)   \
+       (VEC_OP(T,A,reserve)(&(V),R VEC_CHECK_INFO MEM_STAT_INFO))
+
+/* Reserve space exactly.
+   int VEC_T_A_reserve_exact(VEC(T,A) *&v, int reserve);
+
+   Ensure that V has at least RESERVE slots available.  This will not
+   create additional headroom.  Note this can cause V to be
+   reallocated.  Returns nonzero iff reallocation actually
+   occurred.  */
+
+#define VEC_reserve_exact(T,A,V,R)     \
+       (VEC_OP(T,A,reserve_exact)(&(V),R VEC_CHECK_INFO MEM_STAT_INFO))
+
+/* Push object with no reallocation
+   T *VEC_T_quick_push (VEC(T) *v, T obj); // Integer
+   T *VEC_T_quick_push (VEC(T) *v, T obj); // Pointer
+   T *VEC_T_quick_push (VEC(T) *v, T *obj); // Object
+   
+   Push a new element onto the end, returns a pointer to the slot
+   filled in. For object vectors, the new value can be NULL, in which
+   case NO initialization is performed.  There must
+   be sufficient space in the vector.  */
+
+#define VEC_quick_push(T,V,O)  \
+       (VEC_OP(T,base,quick_push)(VEC_BASE(V),O VEC_CHECK_INFO))
+
+/* Push object with reallocation
+   T *VEC_T_A_safe_push (VEC(T,A) *&v, T obj); // Integer
+   T *VEC_T_A_safe_push (VEC(T,A) *&v, T obj); // Pointer
+   T *VEC_T_A_safe_push (VEC(T,A) *&v, T *obj); // Object
+   
+   Push a new element onto the end, returns a pointer to the slot
+   filled in. For object vectors, the new value can be NULL, in which
+   case NO initialization is performed.  Reallocates V, if needed.  */
+
+#define VEC_safe_push(T,A,V,O)         \
+       (VEC_OP(T,A,safe_push)(&(V),O VEC_CHECK_INFO MEM_STAT_INFO))
+
+/* Pop element off end
+   T VEC_T_pop (VEC(T) *v);            // Integer
+   T VEC_T_pop (VEC(T) *v);            // Pointer
+   void VEC_T_pop (VEC(T) *v);         // Object
+
+   Pop the last element off the end. Returns the element popped, for
+   pointer vectors.  */
+
+#define VEC_pop(T,V)   (VEC_OP(T,base,pop)(VEC_BASE(V) VEC_CHECK_INFO))
+
+/* Truncate to specific length
+   void VEC_T_truncate (VEC(T) *v, unsigned len);
+   
+   Set the length as specified.  The new length must be less than or
+   equal to the current length.  This is an O(1) operation.  */
+
+#define VEC_truncate(T,V,I)            \
+       (VEC_OP(T,base,truncate)(VEC_BASE(V),I VEC_CHECK_INFO))
+
+/* Grow to a specific length.
+   void VEC_T_A_safe_grow (VEC(T,A) *&v, int len);
+
+   Grow the vector to a specific length.  The LEN must be as
+   long or longer than the current length.  The new elements are
+   uninitialized.  */
+
+#define VEC_safe_grow(T,A,V,I)         \
+       (VEC_OP(T,A,safe_grow)(&(V),I VEC_CHECK_INFO MEM_STAT_INFO))
+
+/* Grow to a specific length.
+   void VEC_T_A_safe_grow_cleared (VEC(T,A) *&v, int len);
+
+   Grow the vector to a specific length.  The LEN must be as
+   long or longer than the current length.  The new elements are
+   initialized to zero.  */
+
+#define VEC_safe_grow_cleared(T,A,V,I)         \
+       (VEC_OP(T,A,safe_grow_cleared)(&(V),I VEC_CHECK_INFO MEM_STAT_INFO))
+
+/* Replace element
+   T VEC_T_replace (VEC(T) *v, unsigned ix, T val); // Integer
+   T VEC_T_replace (VEC(T) *v, unsigned ix, T val); // Pointer
+   T *VEC_T_replace (VEC(T) *v, unsigned ix, T *val);  // Object
+   
+   Replace the IXth element of V with a new value, VAL.  For pointer
+   vectors returns the original value. For object vectors returns a
+   pointer to the new value.  For object vectors the new value can be
+   NULL, in which case no overwriting of the slot is actually
+   performed.  */
+
+#define VEC_replace(T,V,I,O)           \
+       (VEC_OP(T,base,replace)(VEC_BASE(V),I,O VEC_CHECK_INFO))
+
+/* Insert object with no reallocation
+   T *VEC_T_quick_insert (VEC(T) *v, unsigned ix, T val); // Integer
+   T *VEC_T_quick_insert (VEC(T) *v, unsigned ix, T val); // Pointer
+   T *VEC_T_quick_insert (VEC(T) *v, unsigned ix, T *val); // Object
+   
+   Insert an element, VAL, at the IXth position of V. Return a pointer
+   to the slot created.  For vectors of object, the new value can be
+   NULL, in which case no initialization of the inserted slot takes
+   place. There must be sufficient space.  */
+
+#define VEC_quick_insert(T,V,I,O)      \
+       (VEC_OP(T,base,quick_insert)(VEC_BASE(V),I,O VEC_CHECK_INFO))
+
+/* Insert object with reallocation
+   T *VEC_T_A_safe_insert (VEC(T,A) *&v, unsigned ix, T val); // Integer
+   T *VEC_T_A_safe_insert (VEC(T,A) *&v, unsigned ix, T val); // Pointer
+   T *VEC_T_A_safe_insert (VEC(T,A) *&v, unsigned ix, T *val); // Object
+   
+   Insert an element, VAL, at the IXth position of V. Return a pointer
+   to the slot created.  For vectors of object, the new value can be
+   NULL, in which case no initialization of the inserted slot takes
+   place. Reallocate V, if necessary.  */
+
+#define VEC_safe_insert(T,A,V,I,O)     \
+       (VEC_OP(T,A,safe_insert)(&(V),I,O VEC_CHECK_INFO MEM_STAT_INFO))
+     
+/* Remove element retaining order
+   T VEC_T_ordered_remove (VEC(T) *v, unsigned ix); // Integer
+   T VEC_T_ordered_remove (VEC(T) *v, unsigned ix); // Pointer
+   void VEC_T_ordered_remove (VEC(T) *v, unsigned ix); // Object
+   
+   Remove an element from the IXth position of V. Ordering of
+   remaining elements is preserved.  For pointer vectors returns the
+   removed object.  This is an O(N) operation due to a memmove.  */
+
+#define VEC_ordered_remove(T,V,I)      \
+       (VEC_OP(T,base,ordered_remove)(VEC_BASE(V),I VEC_CHECK_INFO))
+
+/* Remove element destroying order
+   T VEC_T_unordered_remove (VEC(T) *v, unsigned ix); // Integer
+   T VEC_T_unordered_remove (VEC(T) *v, unsigned ix); // Pointer
+   void VEC_T_unordered_remove (VEC(T) *v, unsigned ix); // Object
+   
+   Remove an element from the IXth position of V. Ordering of
+   remaining elements is destroyed.  For pointer vectors returns the
+   removed object.  This is an O(1) operation.  */
+
+#define VEC_unordered_remove(T,V,I)    \
+       (VEC_OP(T,base,unordered_remove)(VEC_BASE(V),I VEC_CHECK_INFO))
+
+/* Remove a block of elements
+   void VEC_T_block_remove (VEC(T) *v, unsigned ix, unsigned len);
+   
+   Remove LEN elements starting at the IXth.  Ordering is retained.
+   This is an O(1) operation.  */
+
+#define VEC_block_remove(T,V,I,L)      \
+       (VEC_OP(T,base,block_remove)(VEC_BASE(V),I,L VEC_CHECK_INFO))
+
+/* Get the address of the array of elements
+   T *VEC_T_address (VEC(T) v)
+
+   If you need to directly manipulate the array (for instance, you
+   want to feed it to qsort), use this accessor.  */
+
+#define VEC_address(T,V)               (VEC_OP(T,base,address)(VEC_BASE(V)))
+
+/* Find the first index in the vector not less than the object.
+   unsigned VEC_T_lower_bound (VEC(T) *v, const T val, 
+                               bool (*lessthan) (const T, const T)); // Integer
+   unsigned VEC_T_lower_bound (VEC(T) *v, const T val, 
+                               bool (*lessthan) (const T, const T)); // Pointer
+   unsigned VEC_T_lower_bound (VEC(T) *v, const T *val,
+                               bool (*lessthan) (const T*, const T*)); // Object
+   
+   Find the first position in which VAL could be inserted without
+   changing the ordering of V.  LESSTHAN is a function that returns
+   true if the first argument is strictly less than the second.  */
+   
+#define VEC_lower_bound(T,V,O,LT)    \
+       (VEC_OP(T,base,lower_bound)(VEC_BASE(V),O,LT VEC_CHECK_INFO))
+
+/* Reallocate an array of elements with prefix.  */
+extern void *vec_gc_p_reserve (void *, int MEM_STAT_DECL);
+extern void *vec_gc_p_reserve_exact (void *, int MEM_STAT_DECL);
+extern void *vec_gc_o_reserve (void *, int, size_t, size_t MEM_STAT_DECL);
+extern void *vec_gc_o_reserve_exact (void *, int, size_t, size_t
+                                    MEM_STAT_DECL);
+extern void ggc_free (void *);
+#define vec_gc_free(V) ggc_free (V)
+extern void *vec_heap_p_reserve (void *, int MEM_STAT_DECL);
+extern void *vec_heap_p_reserve_exact (void *, int MEM_STAT_DECL);
+extern void *vec_heap_o_reserve (void *, int, size_t, size_t MEM_STAT_DECL);
+extern void *vec_heap_o_reserve_exact (void *, int, size_t, size_t
+                                      MEM_STAT_DECL);
+extern void dump_vec_loc_statistics (void);
+#ifdef GATHER_STATISTICS
+void vec_heap_free (void *);
+#else
+#define vec_heap_free(V) free (V)
+#endif
+
+#if ENABLE_CHECKING
+#define VEC_CHECK_INFO ,__FILE__,__LINE__,__FUNCTION__
+#define VEC_CHECK_DECL ,const char *file_,unsigned line_,const char *function_
+#define VEC_CHECK_PASS ,file_,line_,function_
+     
+#define VEC_ASSERT(EXPR,OP,T,A) \
+  (void)((EXPR) ? 0 : (VEC_ASSERT_FAIL(OP,VEC(T,A)), 0))
+
+extern void vec_assert_fail (const char *, const char * VEC_CHECK_DECL)
+     ATTRIBUTE_NORETURN;
+#define VEC_ASSERT_FAIL(OP,VEC) vec_assert_fail (OP,#VEC VEC_CHECK_PASS)
+#else
+#define VEC_CHECK_INFO
+#define VEC_CHECK_DECL
+#define VEC_CHECK_PASS
+#define VEC_ASSERT(EXPR,OP,T,A) (void)(EXPR)
+#endif
+
+/* Note: gengtype has hardwired knowledge of the expansions of the
+   VEC, DEF_VEC_*, and DEF_VEC_ALLOC_* macros.  If you change the
+   expansions of these macros you may need to change gengtype too.  */
+
+#define VEC(T,A) VEC_##T##_##A
+#define VEC_OP(T,A,OP) VEC_##T##_##A##_##OP
+
+/* Base of vector type, not user visible.  */     
+#define VEC_T(T,B)                                                       \
+typedef struct VEC(T,B)                                                  \
+{                                                                        \
+  unsigned num;                                                                  \
+  unsigned alloc;                                                        \
+  T vec[1];                                                              \
+} VEC(T,B)
+
+#define VEC_T_GTY(T,B)                                                   \
+typedef struct VEC(T,B) GTY(())                                                  \
+{                                                                        \
+  unsigned num;                                                                  \
+  unsigned alloc;                                                        \
+  T GTY ((length ("%h.num"))) vec[1];                                    \
+} VEC(T,B)
+
+/* Derived vector type, user visible.  */
+#define VEC_TA_GTY(T,B,A,GTY)                                            \
+typedef struct VEC(T,A) GTY                                              \
+{                                                                        \
+  VEC(T,B) base;                                                         \
+} VEC(T,A)
+
+#define VEC_TA(T,B,A)                                                    \
+typedef struct VEC(T,A)                                                          \
+{                                                                        \
+  VEC(T,B) base;                                                         \
+} VEC(T,A)
+
+/* Convert to base type.  */
+#define VEC_BASE(P)  ((P) ? &(P)->base : 0)
+
+/* Vector of integer-like object.  */
+#define DEF_VEC_I(T)                                                     \
+static inline void VEC_OP (T,must_be,integral_type) (void)               \
+{                                                                        \
+  (void)~(T)0;                                                           \
+}                                                                        \
+                                                                         \
+VEC_T(T,base);                                                           \
+VEC_TA(T,base,none);                                                     \
+DEF_VEC_FUNC_P(T)                                                        \
+struct vec_swallow_trailing_semi
+#define DEF_VEC_ALLOC_I(T,A)                                             \
+VEC_TA(T,base,A);                                                        \
+DEF_VEC_ALLOC_FUNC_I(T,A)                                                \
+struct vec_swallow_trailing_semi
+
+/* Vector of pointer to object.  */
+#define DEF_VEC_P(T)                                                     \
+static inline void VEC_OP (T,must_be,pointer_type) (void)                \
+{                                                                        \
+  (void)((T)1 == (void *)1);                                             \
+}                                                                        \
+                                                                         \
+VEC_T_GTY(T,base);                                                       \
+VEC_TA(T,base,none);                                                     \
+DEF_VEC_FUNC_P(T)                                                        \
+struct vec_swallow_trailing_semi
+#define DEF_VEC_ALLOC_P(T,A)                                             \
+VEC_TA(T,base,A);                                                        \
+DEF_VEC_ALLOC_FUNC_P(T,A)                                                \
+struct vec_swallow_trailing_semi
+
+#define DEF_VEC_FUNC_P(T)                                                \
+static inline unsigned VEC_OP (T,base,length) (const VEC(T,base) *vec_)   \
+{                                                                        \
+  return vec_ ? vec_->num : 0;                                           \
+}                                                                        \
+                                                                         \
+static inline T VEC_OP (T,base,last)                                     \
+     (const VEC(T,base) *vec_ VEC_CHECK_DECL)                            \
+{                                                                        \
+  VEC_ASSERT (vec_ && vec_->num, "last", T, base);                       \
+                                                                         \
+  return vec_->vec[vec_->num - 1];                                       \
+}                                                                        \
+                                                                         \
+static inline T VEC_OP (T,base,index)                                    \
+     (const VEC(T,base) *vec_, unsigned ix_ VEC_CHECK_DECL)              \
+{                                                                        \
+  VEC_ASSERT (vec_ && ix_ < vec_->num, "index", T, base);                \
+                                                                         \
+  return vec_->vec[ix_];                                                 \
+}                                                                        \
+                                                                         \
+static inline int VEC_OP (T,base,iterate)                                \
+     (const VEC(T,base) *vec_, unsigned ix_, T *ptr)                     \
+{                                                                        \
+  if (vec_ && ix_ < vec_->num)                                           \
+    {                                                                    \
+      *ptr = vec_->vec[ix_];                                             \
+      return 1;                                                                  \
+    }                                                                    \
+  else                                                                   \
+    {                                                                    \
+      *ptr = 0;                                                                  \
+      return 0;                                                                  \
+    }                                                                    \
+}                                                                        \
+                                                                         \
+static inline size_t VEC_OP (T,base,embedded_size)                       \
+     (int alloc_)                                                        \
+{                                                                        \
+  return offsetof (VEC(T,base),vec) + alloc_ * sizeof(T);                \
+}                                                                        \
+                                                                         \
+static inline void VEC_OP (T,base,embedded_init)                         \
+     (VEC(T,base) *vec_, int alloc_)                                     \
+{                                                                        \
+  vec_->num = 0;                                                         \
+  vec_->alloc = alloc_;                                                          \
+}                                                                        \
+                                                                         \
+static inline int VEC_OP (T,base,space)                                          \
+     (VEC(T,base) *vec_, int alloc_ VEC_CHECK_DECL)                      \
+{                                                                        \
+  VEC_ASSERT (alloc_ >= 0, "space", T, base);                            \
+  return vec_ ? vec_->alloc - vec_->num >= (unsigned)alloc_ : !alloc_;   \
+}                                                                        \
+                                                                         \
+static inline T *VEC_OP (T,base,quick_push)                              \
+     (VEC(T,base) *vec_, T obj_ VEC_CHECK_DECL)                                  \
+{                                                                        \
+  T *slot_;                                                              \
+                                                                         \
+  VEC_ASSERT (vec_->num < vec_->alloc, "push", T, base);                 \
+  slot_ = &vec_->vec[vec_->num++];                                       \
+  *slot_ = obj_;                                                         \
+                                                                         \
+  return slot_;                                                                  \
+}                                                                        \
+                                                                         \
+static inline T VEC_OP (T,base,pop) (VEC(T,base) *vec_ VEC_CHECK_DECL)   \
+{                                                                        \
+  T obj_;                                                                \
+                                                                         \
+  VEC_ASSERT (vec_->num, "pop", T, base);                                \
+  obj_ = vec_->vec[--vec_->num];                                         \
+                                                                         \
+  return obj_;                                                           \
+}                                                                        \
+                                                                         \
+static inline void VEC_OP (T,base,truncate)                              \
+     (VEC(T,base) *vec_, unsigned size_ VEC_CHECK_DECL)                          \
+{                                                                        \
+  VEC_ASSERT (vec_ ? vec_->num >= size_ : !size_, "truncate", T, base);          \
+  if (vec_)                                                              \
+    vec_->num = size_;                                                   \
+}                                                                        \
+                                                                         \
+static inline T VEC_OP (T,base,replace)                                          \
+     (VEC(T,base) *vec_, unsigned ix_, T obj_ VEC_CHECK_DECL)            \
+{                                                                        \
+  T old_obj_;                                                            \
+                                                                         \
+  VEC_ASSERT (ix_ < vec_->num, "replace", T, base);                      \
+  old_obj_ = vec_->vec[ix_];                                             \
+  vec_->vec[ix_] = obj_;                                                 \
+                                                                         \
+  return old_obj_;                                                       \
+}                                                                        \
+                                                                         \
+static inline T *VEC_OP (T,base,quick_insert)                            \
+     (VEC(T,base) *vec_, unsigned ix_, T obj_ VEC_CHECK_DECL)            \
+{                                                                        \
+  T *slot_;                                                              \
+                                                                         \
+  VEC_ASSERT (vec_->num < vec_->alloc, "insert", T, base);               \
+  VEC_ASSERT (ix_ <= vec_->num, "insert", T, base);                      \
+  slot_ = &vec_->vec[ix_];                                               \
+  memmove (slot_ + 1, slot_, (vec_->num++ - ix_) * sizeof (T));                  \
+  *slot_ = obj_;                                                         \
+                                                                         \
+  return slot_;                                                                  \
+}                                                                        \
+                                                                         \
+static inline T VEC_OP (T,base,ordered_remove)                           \
+     (VEC(T,base) *vec_, unsigned ix_ VEC_CHECK_DECL)                    \
+{                                                                        \
+  T *slot_;                                                              \
+  T obj_;                                                                \
+                                                                         \
+  VEC_ASSERT (ix_ < vec_->num, "remove", T, base);                       \
+  slot_ = &vec_->vec[ix_];                                               \
+  obj_ = *slot_;                                                         \
+  memmove (slot_, slot_ + 1, (--vec_->num - ix_) * sizeof (T));          \
+                                                                         \
+  return obj_;                                                           \
+}                                                                        \
+                                                                         \
+static inline T VEC_OP (T,base,unordered_remove)                         \
+     (VEC(T,base) *vec_, unsigned ix_ VEC_CHECK_DECL)                    \
+{                                                                        \
+  T *slot_;                                                              \
+  T obj_;                                                                \
+                                                                         \
+  VEC_ASSERT (ix_ < vec_->num, "remove", T, base);                       \
+  slot_ = &vec_->vec[ix_];                                               \
+  obj_ = *slot_;                                                         \
+  *slot_ = vec_->vec[--vec_->num];                                       \
+                                                                         \
+  return obj_;                                                           \
+}                                                                        \
+                                                                         \
+static inline void VEC_OP (T,base,block_remove)                                  \
+     (VEC(T,base) *vec_, unsigned ix_, unsigned len_ VEC_CHECK_DECL)     \
+{                                                                        \
+  T *slot_;                                                              \
+                                                                         \
+  VEC_ASSERT (ix_ + len_ <= vec_->num, "block_remove", T, base);         \
+  slot_ = &vec_->vec[ix_];                                               \
+  vec_->num -= len_;                                                     \
+  memmove (slot_, slot_ + len_, (vec_->num - ix_) * sizeof (T));         \
+}                                                                        \
+                                                                         \
+static inline T *VEC_OP (T,base,address)                                 \
+     (VEC(T,base) *vec_)                                                 \
+{                                                                        \
+  return vec_ ? vec_->vec : 0;                                           \
+}                                                                        \
+                                                                         \
+static inline unsigned VEC_OP (T,base,lower_bound)                       \
+     (VEC(T,base) *vec_, const T obj_,                                   \
+      bool (*lessthan_)(const T, const T) VEC_CHECK_DECL)                \
+{                                                                        \
+   unsigned int len_ = VEC_OP (T,base, length) (vec_);                   \
+   unsigned int half_, middle_;                                                  \
+   unsigned int first_ = 0;                                              \
+   while (len_ > 0)                                                      \
+     {                                                                   \
+        T middle_elem_;                                                          \
+        half_ = len_ >> 1;                                               \
+        middle_ = first_;                                                \
+        middle_ += half_;                                                \
+        middle_elem_ = VEC_OP (T,base,index) (vec_, middle_ VEC_CHECK_PASS); \
+        if (lessthan_ (middle_elem_, obj_))                              \
+          {                                                              \
+             first_ = middle_;                                           \
+             ++first_;                                                   \
+             len_ = len_ - half_ - 1;                                    \
+          }                                                              \
+        else                                                             \
+          len_ = half_;                                                          \
+     }                                                                   \
+   return first_;                                                        \
+}
+
+#define DEF_VEC_ALLOC_FUNC_P(T,A)                                        \
+static inline VEC(T,A) *VEC_OP (T,A,alloc)                               \
+     (int alloc_ MEM_STAT_DECL)                                                  \
+{                                                                        \
+  return (VEC(T,A) *) vec_##A##_p_reserve_exact (NULL, alloc_            \
+                                                PASS_MEM_STAT);          \
+}                                                                        \
+                                                                         \
+static inline void VEC_OP (T,A,free)                                     \
+     (VEC(T,A) **vec_)                                                   \
+{                                                                        \
+  if (*vec_)                                                             \
+    vec_##A##_free (*vec_);                                              \
+  *vec_ = NULL;                                                                  \
+}                                                                        \
+                                                                         \
+static inline VEC(T,A) *VEC_OP (T,A,copy) (VEC(T,base) *vec_ MEM_STAT_DECL) \
+{                                                                        \
+  size_t len_ = vec_ ? vec_->num : 0;                                    \
+  VEC (T,A) *new_vec_ = NULL;                                            \
+                                                                         \
+  if (len_)                                                              \
+    {                                                                    \
+      new_vec_ = (VEC (T,A) *)(vec_##A##_p_reserve_exact                 \
+                              (NULL, len_ PASS_MEM_STAT));               \
+                                                                         \
+      new_vec_->base.num = len_;                                         \
+      memcpy (new_vec_->base.vec, vec_->vec, sizeof (T) * len_);         \
+    }                                                                    \
+  return new_vec_;                                                       \
+}                                                                        \
+                                                                         \
+static inline int VEC_OP (T,A,reserve)                                   \
+     (VEC(T,A) **vec_, int alloc_ VEC_CHECK_DECL MEM_STAT_DECL)                  \
+{                                                                        \
+  int extend = !VEC_OP (T,base,space) (VEC_BASE(*vec_), alloc_           \
+                                      VEC_CHECK_PASS);                   \
+                                                                         \
+  if (extend)                                                            \
+    *vec_ = (VEC(T,A) *) vec_##A##_p_reserve (*vec_, alloc_ PASS_MEM_STAT); \
+                                                                         \
+  return extend;                                                         \
+}                                                                        \
+                                                                         \
+static inline int VEC_OP (T,A,reserve_exact)                             \
+     (VEC(T,A) **vec_, int alloc_ VEC_CHECK_DECL MEM_STAT_DECL)                  \
+{                                                                        \
+  int extend = !VEC_OP (T,base,space) (VEC_BASE(*vec_), alloc_           \
+                                      VEC_CHECK_PASS);                   \
+                                                                         \
+  if (extend)                                                            \
+    *vec_ = (VEC(T,A) *) vec_##A##_p_reserve_exact (*vec_, alloc_        \
+                                                   PASS_MEM_STAT);       \
+                                                                         \
+  return extend;                                                         \
+}                                                                        \
+                                                                         \
+static inline void VEC_OP (T,A,safe_grow)                                \
+     (VEC(T,A) **vec_, int size_ VEC_CHECK_DECL MEM_STAT_DECL)           \
+{                                                                        \
+  VEC_ASSERT (size_ >= 0                                                 \
+             && VEC_OP(T,base,length) VEC_BASE(*vec_) <= (unsigned)size_, \
+                                                "grow", T, A);           \
+  VEC_OP (T,A,reserve_exact) (vec_,                                      \
+                             size_ - (int)(*vec_ ? VEC_BASE(*vec_)->num : 0) \
+                             VEC_CHECK_PASS PASS_MEM_STAT);              \
+  VEC_BASE (*vec_)->num = size_;                                         \
+}                                                                        \
+                                                                         \
+static inline void VEC_OP (T,A,safe_grow_cleared)                        \
+     (VEC(T,A) **vec_, int size_ VEC_CHECK_DECL MEM_STAT_DECL)           \
+{                                                                        \
+  int oldsize = VEC_OP(T,base,length) VEC_BASE(*vec_);                   \
+  VEC_OP (T,A,safe_grow) (vec_, size_ VEC_CHECK_PASS PASS_MEM_STAT);     \
+  memset (&(VEC_OP (T,base,address) VEC_BASE(*vec_))[oldsize], 0,        \
+         sizeof (T) * (size_ - oldsize));                                \
+}                                                                        \
+                                                                         \
+static inline T *VEC_OP (T,A,safe_push)                                          \
+     (VEC(T,A) **vec_, T obj_ VEC_CHECK_DECL MEM_STAT_DECL)              \
+{                                                                        \
+  VEC_OP (T,A,reserve) (vec_, 1 VEC_CHECK_PASS PASS_MEM_STAT);           \
+                                                                         \
+  return VEC_OP (T,base,quick_push) (VEC_BASE(*vec_), obj_ VEC_CHECK_PASS); \
+}                                                                        \
+                                                                         \
+static inline T *VEC_OP (T,A,safe_insert)                                \
+     (VEC(T,A) **vec_, unsigned ix_, T obj_ VEC_CHECK_DECL MEM_STAT_DECL)  \
+{                                                                        \
+  VEC_OP (T,A,reserve) (vec_, 1 VEC_CHECK_PASS PASS_MEM_STAT);           \
+                                                                         \
+  return VEC_OP (T,base,quick_insert) (VEC_BASE(*vec_), ix_, obj_        \
+                                      VEC_CHECK_PASS);                   \
+}
+
+/* Vector of object.  */
+#define DEF_VEC_O(T)                                                     \
+VEC_T_GTY(T,base);                                                       \
+VEC_TA(T,base,none);                                             \
+DEF_VEC_FUNC_O(T)                                                        \
+struct vec_swallow_trailing_semi
+#define DEF_VEC_ALLOC_O(T,A)                                             \
+VEC_TA(T,base,A);                                                        \
+DEF_VEC_ALLOC_FUNC_O(T,A)                                                \
+struct vec_swallow_trailing_semi
+
+#define DEF_VEC_FUNC_O(T)                                                \
+static inline unsigned VEC_OP (T,base,length) (const VEC(T,base) *vec_)          \
+{                                                                        \
+  return vec_ ? vec_->num : 0;                                           \
+}                                                                        \
+                                                                         \
+static inline T *VEC_OP (T,base,last) (VEC(T,base) *vec_ VEC_CHECK_DECL)  \
+{                                                                        \
+  VEC_ASSERT (vec_ && vec_->num, "last", T, base);                       \
+                                                                         \
+  return &vec_->vec[vec_->num - 1];                                      \
+}                                                                        \
+                                                                         \
+static inline T *VEC_OP (T,base,index)                                   \
+     (VEC(T,base) *vec_, unsigned ix_ VEC_CHECK_DECL)                    \
+{                                                                        \
+  VEC_ASSERT (vec_ && ix_ < vec_->num, "index", T, base);                \
+                                                                         \
+  return &vec_->vec[ix_];                                                \
+}                                                                        \
+                                                                         \
+static inline int VEC_OP (T,base,iterate)                                \
+     (VEC(T,base) *vec_, unsigned ix_, T **ptr)                                  \
+{                                                                        \
+  if (vec_ && ix_ < vec_->num)                                           \
+    {                                                                    \
+      *ptr = &vec_->vec[ix_];                                            \
+      return 1;                                                                  \
+    }                                                                    \
+  else                                                                   \
+    {                                                                    \
+      *ptr = 0;                                                                  \
+      return 0;                                                                  \
+    }                                                                    \
+}                                                                        \
+                                                                         \
+static inline size_t VEC_OP (T,base,embedded_size)                       \
+     (int alloc_)                                                        \
+{                                                                        \
+  return offsetof (VEC(T,base),vec) + alloc_ * sizeof(T);                \
+}                                                                        \
+                                                                         \
+static inline void VEC_OP (T,base,embedded_init)                         \
+     (VEC(T,base) *vec_, int alloc_)                                     \
+{                                                                        \
+  vec_->num = 0;                                                         \
+  vec_->alloc = alloc_;                                                          \
+}                                                                        \
+                                                                         \
+static inline int VEC_OP (T,base,space)                                          \
+     (VEC(T,base) *vec_, int alloc_ VEC_CHECK_DECL)                      \
+{                                                                        \
+  VEC_ASSERT (alloc_ >= 0, "space", T, base);                            \
+  return vec_ ? vec_->alloc - vec_->num >= (unsigned)alloc_ : !alloc_;   \
+}                                                                        \
+                                                                         \
+static inline T *VEC_OP (T,base,quick_push)                              \
+     (VEC(T,base) *vec_, const T *obj_ VEC_CHECK_DECL)                   \
+{                                                                        \
+  T *slot_;                                                              \
+                                                                         \
+  VEC_ASSERT (vec_->num < vec_->alloc, "push", T, base);                 \
+  slot_ = &vec_->vec[vec_->num++];                                       \
+  if (obj_)                                                              \
+    *slot_ = *obj_;                                                      \
+                                                                         \
+  return slot_;                                                                  \
+}                                                                        \
+                                                                         \
+static inline void VEC_OP (T,base,pop) (VEC(T,base) *vec_ VEC_CHECK_DECL) \
+{                                                                        \
+  VEC_ASSERT (vec_->num, "pop", T, base);                                \
+  --vec_->num;                                                           \
+}                                                                        \
+                                                                         \
+static inline void VEC_OP (T,base,truncate)                              \
+     (VEC(T,base) *vec_, unsigned size_ VEC_CHECK_DECL)                          \
+{                                                                        \
+  VEC_ASSERT (vec_ ? vec_->num >= size_ : !size_, "truncate", T, base);          \
+  if (vec_)                                                              \
+    vec_->num = size_;                                                   \
+}                                                                        \
+                                                                         \
+static inline T *VEC_OP (T,base,replace)                                 \
+     (VEC(T,base) *vec_, unsigned ix_, const T *obj_ VEC_CHECK_DECL)     \
+{                                                                        \
+  T *slot_;                                                              \
+                                                                         \
+  VEC_ASSERT (ix_ < vec_->num, "replace", T, base);                      \
+  slot_ = &vec_->vec[ix_];                                               \
+  if (obj_)                                                              \
+    *slot_ = *obj_;                                                      \
+                                                                         \
+  return slot_;                                                                  \
+}                                                                        \
+                                                                         \
+static inline T *VEC_OP (T,base,quick_insert)                            \
+     (VEC(T,base) *vec_, unsigned ix_, const T *obj_ VEC_CHECK_DECL)     \
+{                                                                        \
+  T *slot_;                                                              \
+                                                                         \
+  VEC_ASSERT (vec_->num < vec_->alloc, "insert", T, base);               \
+  VEC_ASSERT (ix_ <= vec_->num, "insert", T, base);                      \
+  slot_ = &vec_->vec[ix_];                                               \
+  memmove (slot_ + 1, slot_, (vec_->num++ - ix_) * sizeof (T));                  \
+  if (obj_)                                                              \
+    *slot_ = *obj_;                                                      \
+                                                                         \
+  return slot_;                                                                  \
+}                                                                        \
+                                                                         \
+static inline void VEC_OP (T,base,ordered_remove)                        \
+     (VEC(T,base) *vec_, unsigned ix_ VEC_CHECK_DECL)                    \
+{                                                                        \
+  T *slot_;                                                              \
+                                                                         \
+  VEC_ASSERT (ix_ < vec_->num, "remove", T, base);                       \
+  slot_ = &vec_->vec[ix_];                                               \
+  memmove (slot_, slot_ + 1, (--vec_->num - ix_) * sizeof (T));                  \
+}                                                                        \
+                                                                         \
+static inline void VEC_OP (T,base,unordered_remove)                      \
+     (VEC(T,base) *vec_, unsigned ix_ VEC_CHECK_DECL)                    \
+{                                                                        \
+  VEC_ASSERT (ix_ < vec_->num, "remove", T, base);                       \
+  vec_->vec[ix_] = vec_->vec[--vec_->num];                               \
+}                                                                        \
+                                                                         \
+static inline void VEC_OP (T,base,block_remove)                                  \
+     (VEC(T,base) *vec_, unsigned ix_, unsigned len_ VEC_CHECK_DECL)     \
+{                                                                        \
+  T *slot_;                                                              \
+                                                                         \
+  VEC_ASSERT (ix_ + len_ <= vec_->num, "block_remove", T, base);         \
+  slot_ = &vec_->vec[ix_];                                               \
+  vec_->num -= len_;                                                     \
+  memmove (slot_, slot_ + len_, (vec_->num - ix_) * sizeof (T));         \
+}                                                                        \
+                                                                         \
+static inline T *VEC_OP (T,base,address)                                 \
+     (VEC(T,base) *vec_)                                                 \
+{                                                                        \
+  return vec_ ? vec_->vec : 0;                                           \
+}                                                                        \
+                                                                         \
+static inline unsigned VEC_OP (T,base,lower_bound)                       \
+     (VEC(T,base) *vec_, const T *obj_,                                          \
+      bool (*lessthan_)(const T *, const T *) VEC_CHECK_DECL)            \
+{                                                                        \
+   unsigned int len_ = VEC_OP (T, base, length) (vec_);                          \
+   unsigned int half_, middle_;                                                  \
+   unsigned int first_ = 0;                                              \
+   while (len_ > 0)                                                      \
+     {                                                                   \
+        T *middle_elem_;                                                 \
+        half_ = len_ >> 1;                                               \
+        middle_ = first_;                                                \
+        middle_ += half_;                                                \
+        middle_elem_ = VEC_OP (T,base,index) (vec_, middle_ VEC_CHECK_PASS); \
+        if (lessthan_ (middle_elem_, obj_))                              \
+          {                                                              \
+             first_ = middle_;                                           \
+             ++first_;                                                   \
+             len_ = len_ - half_ - 1;                                    \
+          }                                                              \
+        else                                                             \
+          len_ = half_;                                                          \
+     }                                                                   \
+   return first_;                                                        \
+}
+
+#define DEF_VEC_ALLOC_FUNC_O(T,A)                                        \
+static inline VEC(T,A) *VEC_OP (T,A,alloc)                               \
+     (int alloc_ MEM_STAT_DECL)                                                  \
+{                                                                        \
+  return (VEC(T,A) *) vec_##A##_o_reserve_exact (NULL, alloc_,           \
+                                                offsetof (VEC(T,A),base.vec), \
+                                                sizeof (T)               \
+                                                PASS_MEM_STAT);          \
+}                                                                        \
+                                                                         \
+static inline VEC(T,A) *VEC_OP (T,A,copy) (VEC(T,base) *vec_ MEM_STAT_DECL) \
+{                                                                        \
+  size_t len_ = vec_ ? vec_->num : 0;                                    \
+  VEC (T,A) *new_vec_ = NULL;                                            \
+                                                                         \
+  if (len_)                                                              \
+    {                                                                    \
+      new_vec_ = (VEC (T,A) *)(vec_##A##_o_reserve_exact                 \
+                              (NULL, len_,                               \
+                               offsetof (VEC(T,A),base.vec), sizeof (T)  \
+                               PASS_MEM_STAT));                          \
+                                                                         \
+      new_vec_->base.num = len_;                                         \
+      memcpy (new_vec_->base.vec, vec_->vec, sizeof (T) * len_);         \
+    }                                                                    \
+  return new_vec_;                                                       \
+}                                                                        \
+                                                                         \
+static inline void VEC_OP (T,A,free)                                     \
+     (VEC(T,A) **vec_)                                                   \
+{                                                                        \
+  if (*vec_)                                                             \
+    vec_##A##_free (*vec_);                                              \
+  *vec_ = NULL;                                                                  \
+}                                                                        \
+                                                                         \
+static inline int VEC_OP (T,A,reserve)                                   \
+     (VEC(T,A) **vec_, int alloc_ VEC_CHECK_DECL MEM_STAT_DECL)                  \
+{                                                                        \
+  int extend = !VEC_OP (T,base,space) (VEC_BASE(*vec_), alloc_           \
+                                      VEC_CHECK_PASS);                   \
+                                                                         \
+  if (extend)                                                            \
+    *vec_ = (VEC(T,A) *) vec_##A##_o_reserve (*vec_, alloc_,             \
+                                             offsetof (VEC(T,A),base.vec),\
+                                             sizeof (T)                  \
+                                             PASS_MEM_STAT);             \
+                                                                         \
+  return extend;                                                         \
+}                                                                        \
+                                                                         \
+static inline int VEC_OP (T,A,reserve_exact)                                     \
+     (VEC(T,A) **vec_, int alloc_ VEC_CHECK_DECL MEM_STAT_DECL)                  \
+{                                                                        \
+  int extend = !VEC_OP (T,base,space) (VEC_BASE(*vec_), alloc_           \
+                                      VEC_CHECK_PASS);                   \
+                                                                         \
+  if (extend)                                                            \
+    *vec_ = (VEC(T,A) *) vec_##A##_o_reserve_exact                       \
+                        (*vec_, alloc_,                                  \
+                         offsetof (VEC(T,A),base.vec),                   \
+                         sizeof (T) PASS_MEM_STAT);                      \
+                                                                         \
+  return extend;                                                         \
+}                                                                        \
+                                                                         \
+static inline void VEC_OP (T,A,safe_grow)                                \
+     (VEC(T,A) **vec_, int size_ VEC_CHECK_DECL MEM_STAT_DECL)           \
+{                                                                        \
+  VEC_ASSERT (size_ >= 0                                                 \
+             && VEC_OP(T,base,length) VEC_BASE(*vec_) <= (unsigned)size_, \
+                                                "grow", T, A);           \
+  VEC_OP (T,A,reserve_exact) (vec_,                                      \
+                             size_ - (int)(*vec_ ? VEC_BASE(*vec_)->num : 0) \
+                             VEC_CHECK_PASS PASS_MEM_STAT);              \
+  VEC_BASE (*vec_)->num = size_;                                         \
+}                                                                        \
+                                                                         \
+static inline void VEC_OP (T,A,safe_grow_cleared)                        \
+     (VEC(T,A) **vec_, int size_ VEC_CHECK_DECL MEM_STAT_DECL)           \
+{                                                                        \
+  int oldsize = VEC_OP(T,base,length) VEC_BASE(*vec_);                   \
+  VEC_OP (T,A,safe_grow) (vec_, size_ VEC_CHECK_PASS PASS_MEM_STAT);     \
+  memset (&(VEC_OP (T,base,address) VEC_BASE(*vec_))[oldsize], 0,        \
+         sizeof (T) * (size_ - oldsize));                                \
+}                                                                        \
+                                                                         \
+static inline T *VEC_OP (T,A,safe_push)                                          \
+     (VEC(T,A) **vec_, const T *obj_ VEC_CHECK_DECL MEM_STAT_DECL)       \
+{                                                                        \
+  VEC_OP (T,A,reserve) (vec_, 1 VEC_CHECK_PASS PASS_MEM_STAT);           \
+                                                                         \
+  return VEC_OP (T,base,quick_push) (VEC_BASE(*vec_), obj_ VEC_CHECK_PASS);  \
+}                                                                        \
+                                                                         \
+static inline T *VEC_OP (T,A,safe_insert)                                \
+     (VEC(T,A) **vec_, unsigned ix_, const T *obj_                       \
+               VEC_CHECK_DECL MEM_STAT_DECL)                             \
+{                                                                        \
+  VEC_OP (T,A,reserve) (vec_, 1 VEC_CHECK_PASS PASS_MEM_STAT);           \
+                                                                         \
+  return VEC_OP (T,base,quick_insert) (VEC_BASE(*vec_), ix_, obj_        \
+                                      VEC_CHECK_PASS);                   \
+}
+
+#define DEF_VEC_ALLOC_FUNC_I(T,A)                                        \
+static inline VEC(T,A) *VEC_OP (T,A,alloc)                               \
+     (int alloc_ MEM_STAT_DECL)                                                  \
+{                                                                        \
+  return (VEC(T,A) *) vec_##A##_o_reserve_exact                                  \
+                     (NULL, alloc_, offsetof (VEC(T,A),base.vec),        \
+                      sizeof (T) PASS_MEM_STAT);                         \
+}                                                                        \
+                                                                         \
+static inline VEC(T,A) *VEC_OP (T,A,copy) (VEC(T,base) *vec_ MEM_STAT_DECL) \
+{                                                                        \
+  size_t len_ = vec_ ? vec_->num : 0;                                    \
+  VEC (T,A) *new_vec_ = NULL;                                            \
+                                                                         \
+  if (len_)                                                              \
+    {                                                                    \
+      new_vec_ = (VEC (T,A) *)(vec_##A##_o_reserve_exact                 \
+                              (NULL, len_,                               \
+                               offsetof (VEC(T,A),base.vec), sizeof (T)  \
+                               PASS_MEM_STAT));                          \
+                                                                         \
+      new_vec_->base.num = len_;                                         \
+      memcpy (new_vec_->base.vec, vec_->vec, sizeof (T) * len_);         \
+    }                                                                    \
+  return new_vec_;                                                       \
+}                                                                        \
+                                                                         \
+static inline void VEC_OP (T,A,free)                                     \
+     (VEC(T,A) **vec_)                                                   \
+{                                                                        \
+  if (*vec_)                                                             \
+    vec_##A##_free (*vec_);                                              \
+  *vec_ = NULL;                                                                  \
+}                                                                        \
+                                                                         \
+static inline int VEC_OP (T,A,reserve)                                   \
+     (VEC(T,A) **vec_, int alloc_ VEC_CHECK_DECL MEM_STAT_DECL)                  \
+{                                                                        \
+  int extend = !VEC_OP (T,base,space) (VEC_BASE(*vec_), alloc_           \
+                                      VEC_CHECK_PASS);                   \
+                                                                         \
+  if (extend)                                                            \
+    *vec_ = (VEC(T,A) *) vec_##A##_o_reserve (*vec_, alloc_,             \
+                                             offsetof (VEC(T,A),base.vec),\
+                                             sizeof (T)                  \
+                                             PASS_MEM_STAT);             \
+                                                                         \
+  return extend;                                                         \
+}                                                                        \
+                                                                         \
+static inline int VEC_OP (T,A,reserve_exact)                                     \
+     (VEC(T,A) **vec_, int alloc_ VEC_CHECK_DECL MEM_STAT_DECL)                  \
+{                                                                        \
+  int extend = !VEC_OP (T,base,space) (VEC_BASE(*vec_), alloc_           \
+                                      VEC_CHECK_PASS);                   \
+                                                                         \
+  if (extend)                                                            \
+    *vec_ = (VEC(T,A) *) vec_##A##_o_reserve_exact                       \
+                        (*vec_, alloc_, offsetof (VEC(T,A),base.vec),    \
+                         sizeof (T) PASS_MEM_STAT);                      \
+                                                                         \
+  return extend;                                                         \
+}                                                                        \
+                                                                         \
+static inline void VEC_OP (T,A,safe_grow)                                \
+     (VEC(T,A) **vec_, int size_ VEC_CHECK_DECL MEM_STAT_DECL)           \
+{                                                                        \
+  VEC_ASSERT (size_ >= 0                                                 \
+             && VEC_OP(T,base,length) VEC_BASE(*vec_) <= (unsigned)size_, \
+                                                "grow", T, A);           \
+  VEC_OP (T,A,reserve_exact) (vec_,                                      \
+                             size_ - (int)(*vec_ ? VEC_BASE(*vec_)->num : 0) \
+                             VEC_CHECK_PASS PASS_MEM_STAT);              \
+  VEC_BASE (*vec_)->num = size_;                                         \
+}                                                                        \
+                                                                         \
+static inline void VEC_OP (T,A,safe_grow_cleared)                        \
+     (VEC(T,A) **vec_, int size_ VEC_CHECK_DECL MEM_STAT_DECL)           \
+{                                                                        \
+  int oldsize = VEC_OP(T,base,length) VEC_BASE(*vec_);                   \
+  VEC_OP (T,A,safe_grow) (vec_, size_ VEC_CHECK_PASS PASS_MEM_STAT);     \
+  memset (&(VEC_OP (T,base,address) VEC_BASE(*vec_))[oldsize], 0,        \
+         sizeof (T) * (size_ - oldsize));                                \
+}                                                                        \
+                                                                         \
+static inline T *VEC_OP (T,A,safe_push)                                          \
+     (VEC(T,A) **vec_, const T obj_ VEC_CHECK_DECL MEM_STAT_DECL)        \
+{                                                                        \
+  VEC_OP (T,A,reserve) (vec_, 1 VEC_CHECK_PASS PASS_MEM_STAT);           \
+                                                                         \
+  return VEC_OP (T,base,quick_push) (VEC_BASE(*vec_), obj_ VEC_CHECK_PASS);  \
+}                                                                        \
+                                                                         \
+static inline T *VEC_OP (T,A,safe_insert)                                \
+     (VEC(T,A) **vec_, unsigned ix_, const T obj_                        \
+               VEC_CHECK_DECL MEM_STAT_DECL)                             \
+{                                                                        \
+  VEC_OP (T,A,reserve) (vec_, 1 VEC_CHECK_PASS PASS_MEM_STAT);           \
+                                                                         \
+  return VEC_OP (T,base,quick_insert) (VEC_BASE(*vec_), ix_, obj_        \
+                                      VEC_CHECK_PASS);                   \
+}
+
+#endif /* GCC_VEC_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtbegin.o b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtbegin.o
new file mode 100644 (file)
index 0000000..2bc225f
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtbegin.o differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtend.o b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtend.o
new file mode 100644 (file)
index 0000000..089f7fd
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtend.o differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crti.o b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crti.o
new file mode 100644 (file)
index 0000000..93e9a26
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crti.o differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtn.o b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtn.o
new file mode 100644 (file)
index 0000000..4b29376
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtn.o differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/libgcc.a b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/libgcc.a
new file mode 100644 (file)
index 0000000..7446d1a
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/libgcc.a differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/libgcov.a b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/libgcov.a
new file mode 100644 (file)
index 0000000..e08ee20
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/libgcov.a differ
index 2ca1247..88ded0d 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtbegin.o and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtbegin.o differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtbegin.o b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtbegin.o
new file mode 100644 (file)
index 0000000..88ded0d
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtbegin.o differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtend.o b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtend.o
new file mode 100644 (file)
index 0000000..b0def71
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtend.o differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crti.o b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crti.o
new file mode 100644 (file)
index 0000000..93e9a26
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crti.o differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtn.o b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtn.o
new file mode 100644 (file)
index 0000000..4b29376
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtn.o differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/libgcc.a b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/libgcc.a
new file mode 100644 (file)
index 0000000..2e7f7f3
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/libgcc.a differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/libgcov.a b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/libgcov.a
new file mode 100644 (file)
index 0000000..32853ad
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/libgcov.a differ
index 8e2ccf7..c1aeb65 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/libgcc.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/libgcc.a differ
index 9f22b60..1b9c421 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/libgcov.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/libgcov.a differ
index a13987b..70a0934 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/libarm-elf-linux-sim.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/libarm-elf-linux-sim.a differ
index 572ddca..4f7c080 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/libiberty.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/libiberty.a differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib32/libiberty.a b/linux-x86/toolchain/arm-eabi-4.4.0/lib32/libiberty.a
new file mode 100644 (file)
index 0000000..51c88cd
Binary files /dev/null and b/linux-x86/toolchain/arm-eabi-4.4.0/lib32/libiberty.a differ
index 1316e99..c1da01c 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/cc1 and b/linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/cc1 differ
index e1281e2..869ca5a 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/cc1plus and b/linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/cc1plus differ
index 233d1db..1651e49 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/collect2 and b/linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/collect2 differ
index b2687d6..140443b 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/install-tools/fixincl and b/linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/install-tools/fixincl differ
index 6c6e5b9..89aec90 100644 (file)
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
 .\"
 .\" Standard preamble:
 .\" ========================================================================
 ..
 .\" Set up some character translations and predefined strings.  \*(-- will
 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  | will give a
-.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
-.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
-.\" expand to `' in nroff, nothing in troff, for use with C<>.
-.tr \(*W-|\(bv\*(Tr
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 .ie n \{\
 .    ds -- \(*W-
index b3d74d0..15b647a 100644 (file)
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
 .\"
 .\" Standard preamble:
 .\" ========================================================================
 ..
 .\" Set up some character translations and predefined strings.  \*(-- will
 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  | will give a
-.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
-.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
-.\" expand to `' in nroff, nothing in troff, for use with C<>.
-.tr \(*W-|\(bv\*(Tr
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 .ie n \{\
 .    ds -- \(*W-
@@ -458,7 +458,8 @@ in the following sections.
 \&\-mcaller\-super\-interworking  \-mcallee\-super\-interworking 
 \&\-mtp=\fR\fIname\fR 
 \&\fB\-mword\-relocations 
-\&\-mfix\-cortex\-m3\-ldrd\fR
+\&\-mfix\-cortex\-m3\-ldrd 
+\&\-mandroid\fR
 .Sp
 \&\fI\s-1AVR\s0 Options\fR
 \&\fB\-mmcu=\fR\fImcu\fR  \fB\-msize  \-minit\-stack=\fR\fIn\fR  \fB\-mno\-interrupts 
@@ -4090,13 +4091,14 @@ and dbg_cnt(tail_call) will return false always.
 .IX Item "-fdump-rtl-pass"
 .PD
 Says to make debugging dumps during compilation at times specified by
-\&\fIletters\fR.    This is used for debugging the RTL-based passes of the
-compiler.  The file names for most of the dumps are made by appending a
-pass number and a word to the \fIdumpname\fR.  \fIdumpname\fR is generated
-from the name of the output file, if explicitly specified and it is not
-an executable, otherwise it is the basename of the source file. These
-switches may have different effects when \fB\-E\fR is used for
-preprocessing.
+\&\fIletters\fR.  This is used for debugging the RTL-based passes of the
+compiler.  The file names for most of the dumps are made by appending
+a pass number and a word to the \fIdumpname\fR, and the files are
+created in the directory of the output file.  \fIdumpname\fR is
+generated from the name of the output file, if explicitly specified
+and it is not an executable, otherwise it is the basename of the
+source file. These switches may have different effects when
+\&\fB\-E\fR is used for preprocessing.
 .Sp
 Debug dumps can be enabled with a \fB\-fdump\-rtl\fR switch or some
 \&\fB\-d\fR option \fIletters\fR.  Here are the possible
@@ -4385,7 +4387,8 @@ invocations with different options, in particular with and without
 .PD
 Dump a representation of the tree structure for the entire translation
 unit to a file.  The file name is made by appending \fI.tu\fR to the
-source file name.  If the \fB\-\fR\fIoptions\fR form is used, \fIoptions\fR
+source file name, and the file is created in the same directory as the
+output file.  If the \fB\-\fR\fIoptions\fR form is used, \fIoptions\fR
 controls the details of the dump as described for the
 \&\fB\-fdump\-tree\fR options.
 .IP "\fB\-fdump\-class\-hierarchy\fR (\*(C+ only)" 4
@@ -4395,15 +4398,18 @@ controls the details of the dump as described for the
 .IX Item "-fdump-class-hierarchy-options ( only)"
 .PD
 Dump a representation of each class's hierarchy and virtual function
-table layout to a file.  The file name is made by appending \fI.class\fR
-to the source file name.  If the \fB\-\fR\fIoptions\fR form is used,
-\&\fIoptions\fR controls the details of the dump as described for the
-\&\fB\-fdump\-tree\fR options.
+table layout to a file.  The file name is made by appending
+\&\fI.class\fR to the source file name, and the file is created in the
+same directory as the output file.  If the \fB\-\fR\fIoptions\fR form
+is used, \fIoptions\fR controls the details of the dump as described
+for the \fB\-fdump\-tree\fR options.
 .IP "\fB\-fdump\-ipa\-\fR\fIswitch\fR" 4
 .IX Item "-fdump-ipa-switch"
 Control the dumping at various stages of inter-procedural analysis
-language tree to a file.  The file name is generated by appending a switch
-specific suffix to the source file name.  The following dumps are possible:
+language tree to a file.  The file name is generated by appending a
+switch specific suffix to the source file name, and the file is created
+in the same directory as the output file.  The following dumps are
+possible:
 .RS 4
 .IP "\fBall\fR" 4
 .IX Item "all"
@@ -4421,11 +4427,13 @@ Dump after function inlining.
 .IP "\fB\-fdump\-statistics\-\fR\fIoption\fR" 4
 .IX Item "-fdump-statistics-option"
 Enable and control dumping of pass statistics in a separate file.  The
-file name is generated by appending a suffix ending in \fB.statistics\fR
-to the source file name.  If the \fB\-\fR\fIoption\fR form is used,
-\&\fB\-stats\fR will cause counters to be summed over the whole compilation unit
-while \fB\-details\fR will dump every event as the passes generate them.
-The default with no option is to sum counters for each function compiled.
+file name is generated by appending a suffix ending in
+\&\fB.statistics\fR to the source file name, and the file is created in
+the same directory as the output file.  If the \fB\-\fR\fIoption\fR
+form is used, \fB\-stats\fR will cause counters to be summed over the
+whole compilation unit while \fB\-details\fR will dump every event as
+the passes generate them.  The default with no option is to sum
+counters for each function compiled.
 .IP "\fB\-fdump\-tree\-\fR\fIswitch\fR" 4
 .IX Item "-fdump-tree-switch"
 .PD 0
@@ -4433,12 +4441,13 @@ The default with no option is to sum counters for each function compiled.
 .IX Item "-fdump-tree-switch-options"
 .PD
 Control the dumping at various stages of processing the intermediate
-language tree to a file.  The file name is generated by appending a switch
-specific suffix to the source file name.  If the \fB\-\fR\fIoptions\fR
-form is used, \fIoptions\fR is a list of \fB\-\fR separated options that
-control the details of the dump.  Not all options are applicable to all
-dumps, those which are not meaningful will be ignored.  The following
-options are available
+language tree to a file.  The file name is generated by appending a
+switch specific suffix to the source file name, and the file is
+created in the same directory as the output file.  If the
+\&\fB\-\fR\fIoptions\fR form is used, \fIoptions\fR is a list of
+\&\fB\-\fR separated options that control the details of the dump.  Not
+all options are applicable to all dumps, those which are not
+meaningful will be ignored.  The following options are available
 .RS 4
 .IP "\fBaddress\fR" 4
 .IX Item "address"
@@ -7114,6 +7123,25 @@ in amount of needed compile time memory, with very large loops.  Loops
 with more basic blocks than this parameter won't have loop invariant
 motion optimization performed on them.  The default value of the
 parameter is 1000 for \-O1 and 10000 for \-O2 and above.
+.IP "\fBctrl-regpre\fR" 4
+.IX Item "ctrl-regpre"
+This is a switch to turn on live range shrinking optimization.
+.IP "\fBctrl-regpre-mode\fR" 4
+.IX Item "ctrl-regpre-mode"
+This is used as a control knob to enable different transformations in
+the live range shrinking phase. Values of 1, 2, and 4 are used to enable
+upward motion, downward motion, and tree reshaping transformations
+ respectively. The values can be bitwise ORed.
+.IP "\fBreg-pressure-min-bb-factor\fR" 4
+.IX Item "reg-pressure-min-bb-factor"
+A performance tuning knob to control register pressure. When the size
+(in the number of gimple statements) of a basic block in a loop is
+larger than the threshold specified by this parameter multiplied by the
+number of available registers, live range shrinking optimization is enabled.
+.IP "\fBreg-pressure-min-tree\fR" 4
+.IX Item "reg-pressure-min-tree"
+The minimal size (number of leaves) of a tree to be reshaped in the Live
+Range Shrinking optimization. 
 .RE
 .RS 4
 .RE
@@ -7807,7 +7835,7 @@ standard-conforming modes it converts them.  See the \fB\-std\fR and
 The nine trigraphs and their replacements are
 .Sp
 .Vb 2
-\&        Trigraph:       ??(  ??)  ??<  ??>  ??=  ??/  ??'  ??!  ??\-
+\&        Trigraph:       ??(  ??)  ??<  ??>  ??=  ??/  ??\(aq  ??!  ??\-
 \&        Replacement:      [    ]    {    }    #    \e    ^    |    ~
 .Ve
 .IP "\fB\-remap\fR" 4
@@ -8539,6 +8567,36 @@ Only generate absolute relocations on word sized values (i.e. R_ARM_ABS32).
 This is enabled by default on targets (uClinux, SymbianOS) where the runtime
 loader imposes this restriction, and when \fB\-fpic\fR or \fB\-fPIC\fR
 is specified.
+.IP "\fB\-mandroid\fR" 4
+.IX Item "-mandroid"
+Enable Android specific compilier options.
+.Sp
+If this option is used, a preprocessor macro \f(CW\*(C`_\|_ANDROID_\|_\*(C'\fR is defined
+and has the value 1 during compilation. The option also implies C/\*(C+ options
+\&\fB\-fno\-exceptions\fR \fB\-fpic\fR \fB\-mthumb\-interwork\fR
+\&\fB\-fno\-short\-enums\fR and \*(C+ option \fB\-fno\-rtti\fR. These implied
+options can be overridden. For example \s-1RTTI\s0 in \*(C+ code can still be enabled
+with \-frtti even when \-mandroid is also used.
+.Sp
+Linking options depend on whether a static executable, a dynamic
+executable or a shared library is built. When \fB\-static\fR is given,
+\&\fB\-mandroid\fR implies linking flag \fB\-Bstatic\fR, start file
+\&\fIcrtbegin_static.o\fR and end file \fIcrtend_android.o\fR.
+.Sp
+When \fB\-shared\fR is given, \fB\-mandroid\fR implies the linking
+flag \fB\-Bsymbolic\fR and no start and end files.
+.Sp
+When none of \fB\-static\fR and \fB\-shared\fR is given, \fB\-mandroid\fR
+implies linking flags \fB\-Bdynamic \-dynamic\-linker /system/bin/linker\fR,
+start file \fIcrtbegin_dynamic.o\fR and end file \fIcrtend_android.o\fR. The
+dynamic linker used can be overriden by another \fB\-dynamic\-linker\fR in
+command line.
+.Sp
+The linking option \fB\-ldl\fR is also added if \fB\-static\fR is not
+given.
+.Sp
+If more than one of \fB\-dynamic\fR, \fB\-static\fR and \fB\-shared\fR
+are given, behaviour of \fB\-mandroid\fR is undefined.
 .PP
 \fI\s-1AVR\s0 Options\fR
 .IX Subsection "AVR Options"
index b3d74d0..15b647a 100644 (file)
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
 .\"
 .\" Standard preamble:
 .\" ========================================================================
 ..
 .\" Set up some character translations and predefined strings.  \*(-- will
 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  | will give a
-.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
-.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
-.\" expand to `' in nroff, nothing in troff, for use with C<>.
-.tr \(*W-|\(bv\*(Tr
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 .ie n \{\
 .    ds -- \(*W-
@@ -458,7 +458,8 @@ in the following sections.
 \&\-mcaller\-super\-interworking  \-mcallee\-super\-interworking 
 \&\-mtp=\fR\fIname\fR 
 \&\fB\-mword\-relocations 
-\&\-mfix\-cortex\-m3\-ldrd\fR
+\&\-mfix\-cortex\-m3\-ldrd 
+\&\-mandroid\fR
 .Sp
 \&\fI\s-1AVR\s0 Options\fR
 \&\fB\-mmcu=\fR\fImcu\fR  \fB\-msize  \-minit\-stack=\fR\fIn\fR  \fB\-mno\-interrupts 
@@ -4090,13 +4091,14 @@ and dbg_cnt(tail_call) will return false always.
 .IX Item "-fdump-rtl-pass"
 .PD
 Says to make debugging dumps during compilation at times specified by
-\&\fIletters\fR.    This is used for debugging the RTL-based passes of the
-compiler.  The file names for most of the dumps are made by appending a
-pass number and a word to the \fIdumpname\fR.  \fIdumpname\fR is generated
-from the name of the output file, if explicitly specified and it is not
-an executable, otherwise it is the basename of the source file. These
-switches may have different effects when \fB\-E\fR is used for
-preprocessing.
+\&\fIletters\fR.  This is used for debugging the RTL-based passes of the
+compiler.  The file names for most of the dumps are made by appending
+a pass number and a word to the \fIdumpname\fR, and the files are
+created in the directory of the output file.  \fIdumpname\fR is
+generated from the name of the output file, if explicitly specified
+and it is not an executable, otherwise it is the basename of the
+source file. These switches may have different effects when
+\&\fB\-E\fR is used for preprocessing.
 .Sp
 Debug dumps can be enabled with a \fB\-fdump\-rtl\fR switch or some
 \&\fB\-d\fR option \fIletters\fR.  Here are the possible
@@ -4385,7 +4387,8 @@ invocations with different options, in particular with and without
 .PD
 Dump a representation of the tree structure for the entire translation
 unit to a file.  The file name is made by appending \fI.tu\fR to the
-source file name.  If the \fB\-\fR\fIoptions\fR form is used, \fIoptions\fR
+source file name, and the file is created in the same directory as the
+output file.  If the \fB\-\fR\fIoptions\fR form is used, \fIoptions\fR
 controls the details of the dump as described for the
 \&\fB\-fdump\-tree\fR options.
 .IP "\fB\-fdump\-class\-hierarchy\fR (\*(C+ only)" 4
@@ -4395,15 +4398,18 @@ controls the details of the dump as described for the
 .IX Item "-fdump-class-hierarchy-options ( only)"
 .PD
 Dump a representation of each class's hierarchy and virtual function
-table layout to a file.  The file name is made by appending \fI.class\fR
-to the source file name.  If the \fB\-\fR\fIoptions\fR form is used,
-\&\fIoptions\fR controls the details of the dump as described for the
-\&\fB\-fdump\-tree\fR options.
+table layout to a file.  The file name is made by appending
+\&\fI.class\fR to the source file name, and the file is created in the
+same directory as the output file.  If the \fB\-\fR\fIoptions\fR form
+is used, \fIoptions\fR controls the details of the dump as described
+for the \fB\-fdump\-tree\fR options.
 .IP "\fB\-fdump\-ipa\-\fR\fIswitch\fR" 4
 .IX Item "-fdump-ipa-switch"
 Control the dumping at various stages of inter-procedural analysis
-language tree to a file.  The file name is generated by appending a switch
-specific suffix to the source file name.  The following dumps are possible:
+language tree to a file.  The file name is generated by appending a
+switch specific suffix to the source file name, and the file is created
+in the same directory as the output file.  The following dumps are
+possible:
 .RS 4
 .IP "\fBall\fR" 4
 .IX Item "all"
@@ -4421,11 +4427,13 @@ Dump after function inlining.
 .IP "\fB\-fdump\-statistics\-\fR\fIoption\fR" 4
 .IX Item "-fdump-statistics-option"
 Enable and control dumping of pass statistics in a separate file.  The
-file name is generated by appending a suffix ending in \fB.statistics\fR
-to the source file name.  If the \fB\-\fR\fIoption\fR form is used,
-\&\fB\-stats\fR will cause counters to be summed over the whole compilation unit
-while \fB\-details\fR will dump every event as the passes generate them.
-The default with no option is to sum counters for each function compiled.
+file name is generated by appending a suffix ending in
+\&\fB.statistics\fR to the source file name, and the file is created in
+the same directory as the output file.  If the \fB\-\fR\fIoption\fR
+form is used, \fB\-stats\fR will cause counters to be summed over the
+whole compilation unit while \fB\-details\fR will dump every event as
+the passes generate them.  The default with no option is to sum
+counters for each function compiled.
 .IP "\fB\-fdump\-tree\-\fR\fIswitch\fR" 4
 .IX Item "-fdump-tree-switch"
 .PD 0
@@ -4433,12 +4441,13 @@ The default with no option is to sum counters for each function compiled.
 .IX Item "-fdump-tree-switch-options"
 .PD
 Control the dumping at various stages of processing the intermediate
-language tree to a file.  The file name is generated by appending a switch
-specific suffix to the source file name.  If the \fB\-\fR\fIoptions\fR
-form is used, \fIoptions\fR is a list of \fB\-\fR separated options that
-control the details of the dump.  Not all options are applicable to all
-dumps, those which are not meaningful will be ignored.  The following
-options are available
+language tree to a file.  The file name is generated by appending a
+switch specific suffix to the source file name, and the file is
+created in the same directory as the output file.  If the
+\&\fB\-\fR\fIoptions\fR form is used, \fIoptions\fR is a list of
+\&\fB\-\fR separated options that control the details of the dump.  Not
+all options are applicable to all dumps, those which are not
+meaningful will be ignored.  The following options are available
 .RS 4
 .IP "\fBaddress\fR" 4
 .IX Item "address"
@@ -7114,6 +7123,25 @@ in amount of needed compile time memory, with very large loops.  Loops
 with more basic blocks than this parameter won't have loop invariant
 motion optimization performed on them.  The default value of the
 parameter is 1000 for \-O1 and 10000 for \-O2 and above.
+.IP "\fBctrl-regpre\fR" 4
+.IX Item "ctrl-regpre"
+This is a switch to turn on live range shrinking optimization.
+.IP "\fBctrl-regpre-mode\fR" 4
+.IX Item "ctrl-regpre-mode"
+This is used as a control knob to enable different transformations in
+the live range shrinking phase. Values of 1, 2, and 4 are used to enable
+upward motion, downward motion, and tree reshaping transformations
+ respectively. The values can be bitwise ORed.
+.IP "\fBreg-pressure-min-bb-factor\fR" 4
+.IX Item "reg-pressure-min-bb-factor"
+A performance tuning knob to control register pressure. When the size
+(in the number of gimple statements) of a basic block in a loop is
+larger than the threshold specified by this parameter multiplied by the
+number of available registers, live range shrinking optimization is enabled.
+.IP "\fBreg-pressure-min-tree\fR" 4
+.IX Item "reg-pressure-min-tree"
+The minimal size (number of leaves) of a tree to be reshaped in the Live
+Range Shrinking optimization. 
 .RE
 .RS 4
 .RE
@@ -7807,7 +7835,7 @@ standard-conforming modes it converts them.  See the \fB\-std\fR and
 The nine trigraphs and their replacements are
 .Sp
 .Vb 2
-\&        Trigraph:       ??(  ??)  ??<  ??>  ??=  ??/  ??'  ??!  ??\-
+\&        Trigraph:       ??(  ??)  ??<  ??>  ??=  ??/  ??\(aq  ??!  ??\-
 \&        Replacement:      [    ]    {    }    #    \e    ^    |    ~
 .Ve
 .IP "\fB\-remap\fR" 4
@@ -8539,6 +8567,36 @@ Only generate absolute relocations on word sized values (i.e. R_ARM_ABS32).
 This is enabled by default on targets (uClinux, SymbianOS) where the runtime
 loader imposes this restriction, and when \fB\-fpic\fR or \fB\-fPIC\fR
 is specified.
+.IP "\fB\-mandroid\fR" 4
+.IX Item "-mandroid"
+Enable Android specific compilier options.
+.Sp
+If this option is used, a preprocessor macro \f(CW\*(C`_\|_ANDROID_\|_\*(C'\fR is defined
+and has the value 1 during compilation. The option also implies C/\*(C+ options
+\&\fB\-fno\-exceptions\fR \fB\-fpic\fR \fB\-mthumb\-interwork\fR
+\&\fB\-fno\-short\-enums\fR and \*(C+ option \fB\-fno\-rtti\fR. These implied
+options can be overridden. For example \s-1RTTI\s0 in \*(C+ code can still be enabled
+with \-frtti even when \-mandroid is also used.
+.Sp
+Linking options depend on whether a static executable, a dynamic
+executable or a shared library is built. When \fB\-static\fR is given,
+\&\fB\-mandroid\fR implies linking flag \fB\-Bstatic\fR, start file
+\&\fIcrtbegin_static.o\fR and end file \fIcrtend_android.o\fR.
+.Sp
+When \fB\-shared\fR is given, \fB\-mandroid\fR implies the linking
+flag \fB\-Bsymbolic\fR and no start and end files.
+.Sp
+When none of \fB\-static\fR and \fB\-shared\fR is given, \fB\-mandroid\fR
+implies linking flags \fB\-Bdynamic \-dynamic\-linker /system/bin/linker\fR,
+start file \fIcrtbegin_dynamic.o\fR and end file \fIcrtend_android.o\fR. The
+dynamic linker used can be overriden by another \fB\-dynamic\-linker\fR in
+command line.
+.Sp
+The linking option \fB\-ldl\fR is also added if \fB\-static\fR is not
+given.
+.Sp
+If more than one of \fB\-dynamic\fR, \fB\-static\fR and \fB\-shared\fR
+are given, behaviour of \fB\-mandroid\fR is undefined.
 .PP
 \fI\s-1AVR\s0 Options\fR
 .IX Subsection "AVR Options"
index 83f20fe..cdd5644 100644 (file)
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
 .\"
 .\" Standard preamble:
 .\" ========================================================================
 ..
 .\" Set up some character translations and predefined strings.  \*(-- will
 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  | will give a
-.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
-.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
-.\" expand to `' in nroff, nothing in troff, for use with C<>.
-.tr \(*W-|\(bv\*(Tr
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 .ie n \{\
 .    ds -- \(*W-
index 47cac17..cb775d4 100644 (file)
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
 .\"
 .\" Standard preamble:
 .\" ========================================================================
 ..
 .\" Set up some character translations and predefined strings.  \*(-- will
 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  | will give a
-.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
-.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
-.\" expand to `' in nroff, nothing in troff, for use with C<>.
-.tr \(*W-|\(bv\*(Tr
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 .ie n \{\
 .    ds -- \(*W-
index 4500183..2555a9e 100644 (file)
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
 .\"
 .\" Standard preamble:
 .\" ========================================================================
 ..
 .\" Set up some character translations and predefined strings.  \*(-- will
 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  | will give a
-.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
-.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
-.\" expand to `' in nroff, nothing in troff, for use with C<>.
-.tr \(*W-|\(bv\*(Tr
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 .ie n \{\
 .    ds -- \(*W-
index 15a1314..5f551cd 100644 (file)
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
 .\"
 .\" Standard preamble:
 .\" ========================================================================
 ..
 .\" Set up some character translations and predefined strings.  \*(-- will
 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  | will give a
-.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
-.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
-.\" expand to `' in nroff, nothing in troff, for use with C<>.
-.tr \(*W-|\(bv\*(Tr
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 .ie n \{\
 .    ds -- \(*W-
@@ -773,7 +773,7 @@ state the exclusion of warranty; and each file should have at least
 the \*(L"copyright\*(R" line and a pointer to where the full notice is found.
 .PP
 .Vb 2
-\&        <one line to give the program's name and a brief idea of what it does.>  
+\&        <one line to give the program\(aqs name and a brief idea of what it does.>  
 \&        Copyright (C) <year> <name of author>
 .Ve
 .PP