From 20dd0b935a7d3bf124c68a13bf4bf0677d75ff5f Mon Sep 17 00:00:00 2001 From: hubicka Date: Thu, 6 Apr 2006 14:32:52 +0000 Subject: [PATCH] * Merge from mainline git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/ipa-branch@112732 138bc75d-0d04-0410-961f-82ee72b054a4 --- ChangeLog | 15 + MAINTAINERS | 9 +- boehm-gc/ChangeLog | 7 + boehm-gc/configure | 16 +- boehm-gc/configure.ac | 9 +- configure | 4 +- configure.in | 4 +- fastjar/AUTHORS | 1 - fastjar/CHANGES | 38 - fastjar/COPYING | 340 - fastjar/ChangeLog | 618 - fastjar/INSTALL | 18 - fastjar/Makefile.am | 121 - fastjar/Makefile.in | 945 -- fastjar/NEWS | 14 - fastjar/README | 78 - fastjar/acinclude.m4 | 21 - fastjar/compress.c | 562 - fastjar/compress.h | 57 - fastjar/config.h.in | 113 - fastjar/configure | 8385 -------------- fastjar/configure.ac | 92 - fastjar/dostime.c | 81 - fastjar/dostime.h | 21 - fastjar/fastjar.texi | 236 - fastjar/install-defs.sh.in | 7 - fastjar/jargrep.c | 791 -- fastjar/jargrep.h | 27 - fastjar/jartool.c | 2357 ---- fastjar/jartool.h | 124 - fastjar/pushback.c | 194 - fastjar/pushback.h | 32 - fastjar/shift.c | 166 - fastjar/shift.h | 29 - fastjar/zipfile.h | 75 - gcc/ChangeLog | 1826 ++- gcc/ChangeLog-2005 | 6 +- gcc/ChangeLog.ipa | 4 + gcc/DATESTAMP | 2 +- gcc/Makefile.in | 240 +- gcc/ada/ChangeLog | 4 + gcc/ada/Make-lang.in | 24 +- gcc/addresses.h | 81 + gcc/builtins.c | 13 +- gcc/c-pragma.c | 67 +- gcc/c-pragma.h | 2 + gcc/caller-save.c | 3 +- gcc/cfgcleanup.c | 2 - gcc/cfglayout.c | 10 +- gcc/cfgloop.h | 1 - gcc/cfgloopmanip.c | 94 - gcc/common.opt | 12 +- gcc/config.gcc | 93 +- gcc/config/alpha/alpha.c | 5 +- gcc/config/alpha/predicates.md | 4 +- gcc/config/arm/arm.c | 3 + gcc/config/arm/arm.h | 3 +- gcc/config/arm/vfp.md | 10 +- gcc/config/avr/avr-protos.h | 5 +- gcc/config/avr/avr.c | 90 +- gcc/config/avr/avr.h | 32 +- gcc/config/avr/avr.md | 38 +- gcc/config/avr/constraints.md | 105 + gcc/config/bfin/bfin-protos.h | 1 + gcc/config/bfin/bfin.c | 44 +- gcc/config/bfin/bfin.h | 52 +- gcc/config/bfin/bfin.md | 45 +- gcc/config/darwin-crt3.c | 740 +- gcc/config/darwin-protos.h | 3 + gcc/config/darwin.c | 80 +- gcc/config/darwin.h | 33 +- gcc/config/i386/constraints.md | 152 + gcc/config/i386/cygming.h | 14 +- gcc/config/i386/i386-protos.h | 1 + gcc/config/i386/i386.c | 124 +- gcc/config/i386/i386.h | 10 +- gcc/config/i386/i386.md | 113 +- gcc/config/i386/predicates.md | 134 - gcc/config/ia64/ia64.c | 2 +- gcc/config/ia64/ia64.h | 12 +- gcc/config/ia64/ia64.opt | 2 + gcc/config/ia64/t-hpux | 5 +- gcc/config/ia64/unwind-hpux.c | 39 + gcc/config/m32c/addsub.md | 6 +- gcc/config/m32c/bitops.md | 15 +- gcc/config/m32c/cond.md | 25 +- gcc/config/m32c/jump.md | 5 + gcc/config/m32c/m32c-protos.h | 1 + gcc/config/m32c/m32c.c | 251 +- gcc/config/m32c/m32c.md | 8 +- gcc/config/m32c/minmax.md | 4 + gcc/config/m32c/mov.md | 23 +- gcc/config/m32c/muldiv.md | 12 + gcc/config/m32c/prologue.md | 16 +- gcc/config/m32c/shift.md | 13 +- gcc/config/mips/mips-protos.h | 26 +- gcc/config/mips/mips.c | 258 +- gcc/config/mips/mips.h | 37 + gcc/config/mips/mips.md | 78 +- gcc/config/mips/mips.opt | 6 +- gcc/config/mips/predicates.md | 93 +- gcc/config/pa/pa64-hpux.h | 12 +- gcc/config/rs6000/constraints.md | 162 + gcc/config/rs6000/darwin-ldouble.c | 3 +- gcc/config/rs6000/predicates.md | 14 +- gcc/config/rs6000/rs6000-protos.h | 4 +- gcc/config/rs6000/rs6000.c | 192 +- gcc/config/rs6000/rs6000.h | 130 +- gcc/config/rs6000/rs6000.md | 161 +- gcc/config/rs6000/rs6000.opt | 8 +- gcc/config/rs6000/sysv4.h | 5 +- gcc/config/rs6000/t-aix43 | 7 - gcc/config/rs6000/t-aix52 | 7 - gcc/config/s390/s390-protos.h | 2 + gcc/config/s390/s390.c | 146 +- gcc/config/s390/s390.h | 81 +- gcc/config/sh/crt1.asm | 258 +- gcc/config/sh/divcost-analysis | 76 + gcc/config/sh/divtab-sh4.c | 90 + gcc/config/sh/embed-elf.h | 5 + gcc/config/sh/lib1funcs.asm | 636 +- gcc/config/sh/sh.c | 149 +- gcc/config/sh/sh.h | 62 +- gcc/config/sh/sh.md | 104 +- gcc/config/sh/sh.opt | 44 +- gcc/config/sh/superh.h | 69 +- gcc/config/sh/superh.opt | 10 + gcc/config/sh/t-elf | 2 +- gcc/config/sh/t-linux | 2 +- gcc/config/sh/t-sh | 28 +- gcc/config/sh/t-superh | 21 +- gcc/config/{sol26.h => sol2-10.h} | 13 +- gcc/config/{sol26.h => sol2-6.h} | 0 gcc/config/sparc/sparc.c | 49 +- gcc/config/sparc/sparc.md | 9 +- gcc/config/sparc/sparc.opt | 3 + gcc/config/t-darwin | 2 + gcc/config/vax/vax.c | 44 +- gcc/config/vax/vax.h | 18 +- gcc/config/vax/vax.md | 34 +- gcc/config/xtensa/ieee754-df.S | 190 +- gcc/config/xtensa/ieee754-sf.S | 166 +- gcc/config/xtensa/lib1funcs.asm | 57 +- gcc/convert.c | 15 +- gcc/cp/ChangeLog | 52 +- gcc/cp/cp-gimplify.c | 29 +- gcc/cp/cp-tree.h | 12 + gcc/cp/decl.c | 20 +- gcc/cp/decl2.c | 117 +- gcc/cp/init.c | 3 +- gcc/cp/name-lookup.c | 59 +- gcc/cp/name-lookup.h | 7 +- gcc/cp/parser.c | 12 +- gcc/cp/search.c | 4 + gcc/cse.c | 1 - gcc/defaults.h | 34 - gcc/diagnostic.c | 4 +- gcc/doc/extend.texi | 83 +- gcc/doc/install.texi | 85 +- gcc/doc/invoke.texi | 84 +- gcc/doc/md.texi | 4 +- gcc/doc/tm.texi | 109 +- gcc/doc/tree-ssa.texi | 20 + gcc/dojump.c | 4 +- gcc/dwarf2.h | 1 + gcc/dwarf2asm.c | 14 +- gcc/dwarf2asm.h | 7 +- gcc/dwarf2out.c | 212 +- gcc/emit-rtl.c | 82 +- gcc/except.c | 283 +- gcc/except.h | 4 +- gcc/expr.c | 143 +- gcc/expr.h | 48 +- gcc/final.c | 3 - gcc/fold-const.c | 172 +- gcc/fortran/ChangeLog | 202 + gcc/fortran/Make-lang.in | 2 +- gcc/fortran/array.c | 6 + gcc/fortran/dependency.c | 466 +- gcc/fortran/error.c | 2 +- gcc/fortran/expr.c | 4 +- gcc/fortran/f95-lang.c | 21 + gcc/fortran/gfortran.h | 4 + gcc/fortran/interface.c | 17 +- gcc/fortran/intrinsic.c | 2 +- gcc/fortran/intrinsic.texi | 36 + gcc/fortran/invoke.texi | 13 +- gcc/fortran/io.c | 24 +- gcc/fortran/iresolve.c | 169 +- gcc/fortran/lang.opt | 8 + gcc/fortran/match.c | 3 + gcc/fortran/module.c | 13 +- gcc/fortran/options.c | 13 +- gcc/fortran/resolve.c | 17 +- gcc/fortran/trans-array.c | 64 +- gcc/fortran/trans-array.h | 4 +- gcc/fortran/trans-common.c | 1 + gcc/fortran/trans-decl.c | 20 + gcc/fortran/trans-expr.c | 75 +- gcc/fortran/trans-intrinsic.c | 261 +- gcc/fortran/trans.c | 4 +- gcc/fortran/trans.h | 2 + gcc/function.c | 18 +- gcc/function.h | 4 +- gcc/gcc.c | 24 +- gcc/genautomata.c | 133 +- gcc/genconditions.c | 3 +- gcc/genemit.c | 1 + gcc/genoutput.c | 1 + gcc/genpeep.c | 6 +- gcc/genpreds.c | 36 +- gcc/genrecog.c | 1 + gcc/gimplify.c | 39 +- gcc/haifa-sched.c | 91 +- gcc/ipa-inline.c | 2 +- gcc/java/ChangeLog | 34 + gcc/java/Make-lang.in | 8 +- gcc/java/class.c | 12 +- gcc/java/expr.c | 31 +- gcc/java/lang.c | 11 + gcc/java/parse.y | 27 +- gcc/jump.c | 14 +- gcc/lambda-code.c | 10 +- gcc/lambda-mat.c | 1 - gcc/lambda-trans.c | 1 - gcc/lambda.h | 1 - gcc/lists.c | 8 +- gcc/loop-unroll.c | 12 +- gcc/omp-low.c | 9 +- gcc/passes.c | 42 +- gcc/po/ChangeLog | 4 + gcc/po/sv.po | 680 +- gcc/recog.c | 6 +- gcc/regclass.c | 154 +- gcc/regrename.c | 88 +- gcc/reload.c | 288 +- gcc/reload1.c | 32 +- gcc/rtl-factoring.c | 6 +- gcc/rtl.def | 7 +- gcc/rtl.h | 10 +- gcc/sched-ebb.c | 2 +- gcc/sched-int.h | 12 +- gcc/sched-rgn.c | 5 +- gcc/simplify-rtx.c | 6 +- gcc/stmt.c | 12 +- gcc/stor-layout.c | 47 +- gcc/system.h | 2 + gcc/target-def.h | 2 + gcc/target.h | 9 +- gcc/targhooks.c | 16 + gcc/targhooks.h | 2 + gcc/testsuite/ChangeLog | 422 +- gcc/testsuite/g++.dg/eh/spbp.C | 1 + gcc/testsuite/g++.dg/ext/visibility/anon1.C | 10 + gcc/testsuite/g++.dg/ext/visibility/local1.C | 25 + gcc/testsuite/g++.dg/ext/visibility/namespace1.C | 30 + gcc/testsuite/g++.dg/gomp/pr26611-1.C | 15 + gcc/testsuite/g++.dg/gomp/pr26611-2.C | 15 + gcc/testsuite/g++.dg/gomp/pr26690-1.C | 15 + gcc/testsuite/g++.dg/gomp/pr26690-2.C | 16 + gcc/testsuite/g++.old-deja/g++.other/init19.C | 85 + gcc/testsuite/gcc.c-torture/compile/pr26781-1.c | 11 + gcc/testsuite/gcc.c-torture/compile/pr26781-2.c | 11 + gcc/testsuite/gcc.c-torture/compile/pr26833.c | 19 + gcc/testsuite/gcc.c-torture/compile/pr26840.c | 42 + gcc/testsuite/gcc.c-torture/execute/pr25737.c | 23 + gcc/testsuite/gcc.dg/980523-1.c | 2 +- gcc/testsuite/gcc.dg/980526-1.c | 2 +- gcc/testsuite/gcc.dg/builtins-18.c | 13 +- gcc/testsuite/gcc.dg/builtins-20.c | 1 + gcc/testsuite/gcc.dg/builtins-53.c | 1 + gcc/testsuite/gcc.dg/builtins-config.h | 5 +- gcc/testsuite/gcc.dg/darwin-20040809-2.c | 2 +- gcc/testsuite/gcc.dg/fold-andxor-1.c | 29 + gcc/testsuite/gcc.dg/fold-convnotconv-1.c | 17 + gcc/testsuite/gcc.dg/fold-xorand-1.c | 29 + gcc/testsuite/gcc.dg/ipa/ipa-1.c | 2 +- gcc/testsuite/gcc.dg/ipa/ipa-2.c | 2 +- gcc/testsuite/gcc.dg/ipa/ipa-3.c | 2 +- gcc/testsuite/gcc.dg/ipa/ipa-5.c | 2 +- gcc/testsuite/gcc.dg/pr26717.c | 7 + gcc/testsuite/gcc.dg/single-precision-constant.c | 4 + gcc/testsuite/gcc.dg/switch-1.c | 2 +- gcc/testsuite/gcc.dg/tree-ssa/20030807-2.c | 2 +- gcc/testsuite/gcc.dg/tree-ssa/loadpre12.c | 15 + gcc/testsuite/gcc.dg/tree-ssa/loadpre13.c | 13 + gcc/testsuite/gcc.dg/tree-ssa/loadpre14.c | 19 + gcc/testsuite/gcc.dg/tree-ssa/loadpre15.c | 19 + gcc/testsuite/gcc.dg/tree-ssa/loadpre16.c | 16 + gcc/testsuite/gcc.dg/tree-ssa/loadpre17.c | 16 + gcc/testsuite/gcc.dg/tree-ssa/loadpre18.c | 16 + gcc/testsuite/gcc.dg/tree-ssa/loadpre19.c | 16 + gcc/testsuite/gcc.dg/tree-ssa/loadpre20.c | 16 + gcc/testsuite/gcc.dg/tree-ssa/loadpre21.c | 19 + gcc/testsuite/gcc.dg/tree-ssa/loadpre22.c | 19 + gcc/testsuite/gcc.dg/tree-ssa/pr21829.c | 21 + gcc/testsuite/gcc.dg/tree-ssa/vrp28.c | 32 + gcc/testsuite/gcc.dg/visibility-11.c | 24 + gcc/testsuite/gcc.target/i386/387-1.c | 16 +- gcc/testsuite/gcc.target/i386/387-5.c | 6 +- gcc/testsuite/gcc.target/i386/sselibm-1.c | 8 +- gcc/testsuite/gcc.target/i386/sselibm-2.c | 8 +- gcc/testsuite/gcc.target/i386/sselibm-3.c | 14 +- gcc/testsuite/gcc.target/i386/sselibm-4.c | 19 +- gcc/testsuite/gcc.target/i386/sselibm-5.c | 27 +- gcc/testsuite/gcc.target/powerpc/indexed-addr.c | 14 + gcc/testsuite/gcc.target/powerpc/pr26350.c | 29 + gcc/testsuite/gfortran.dg/advance.f90 | 1 + gcc/testsuite/gfortran.dg/advance_2.f90 | 6 + gcc/testsuite/gfortran.dg/advance_3.f90 | 8 + gcc/testsuite/gfortran.dg/allocatable_dummy_1.f90 | 2 +- .../gfortran.dg/allocatable_function_1.f90 | 2 +- .../gfortran.dg/allocate_char_star_scalar_1.f90 | 2 + .../gfortran.dg/assumed_charlen_function_1.f90 | 1 + gcc/testsuite/gfortran.dg/assumed_dummy_1.f90 | 2 +- .../gfortran.dg/assumed_shape_ranks_1.f90 | 1 + .../gfortran.dg/assumed_shape_ranks_2.f90 | 47 + .../gfortran.dg/assumed_size_dt_dummy.f90 | 1 + .../gfortran.dg/auto_char_dummy_array_1.f90 | 1 + gcc/testsuite/gfortran.dg/auto_char_len_3.f90 | 2 + .../gfortran.dg/automatic_module_variable.f90 | 2 + gcc/testsuite/gfortran.dg/backspace_2.f | 1 + .../gfortran.dg/bad_automatic_objects_1.f90 | 2 + .../gfortran.dg/char_array_constructor.f90 | 1 + .../char_array_structure_constructor.f90 | 2 + gcc/testsuite/gfortran.dg/char_result_11.f90 | 2 + gcc/testsuite/gfortran.dg/char_result_9.f90 | 2 + gcc/testsuite/gfortran.dg/comma.f | 1 + gcc/testsuite/gfortran.dg/contained_1.f90 | 2 + gcc/testsuite/gfortran.dg/convert_1.f90 | 2 + gcc/testsuite/gfortran.dg/convert_implied_open.f90 | 15 + gcc/testsuite/gfortran.dg/cray_pointers_5.f90 | 2 + gcc/testsuite/gfortran.dg/data_constraints_1.f90 | 2 + .../gfortran.dg/default_initialization.f90 | 2 + gcc/testsuite/gfortran.dg/dependency_12.f90 | 12 + gcc/testsuite/gfortran.dg/dependency_13.f90 | 13 + gcc/testsuite/gfortran.dg/dependency_9.f90 | 13 + gcc/testsuite/gfortran.dg/der_charlen_1.f90 | 2 + gcc/testsuite/gfortran.dg/der_io_2.f90 | 2 +- gcc/testsuite/gfortran.dg/der_io_3.f90 | 2 + gcc/testsuite/gfortran.dg/der_pointer_1.f90 | 2 + gcc/testsuite/gfortran.dg/der_pointer_3.f90 | 2 + gcc/testsuite/gfortran.dg/der_pointer_4.f90 | 2 + .../gfortran.dg/derived_pointer_recursion.f90 | 1 + gcc/testsuite/gfortran.dg/derived_recursion.f90 | 2 + gcc/testsuite/gfortran.dg/direct_io_1.f90 | 2 +- gcc/testsuite/gfortran.dg/direct_io_2.f90 | 1 + gcc/testsuite/gfortran.dg/dummy_functions_1.f90 | 2 + .../gfortran.dg/elemental_initializer_1.f90 | 35 + .../elemental_non_intrinsic_dummy_1.f90 | 2 + gcc/testsuite/gfortran.dg/elemental_pointer_1.f90 | 2 + .../gfortran.dg/elemental_subroutine_1.f90 | 4 +- .../gfortran.dg/elemental_subroutine_2.f90 | 4 +- gcc/testsuite/gfortran.dg/endfile_2.f90 | 1 + gcc/testsuite/gfortran.dg/entry_1.f90 | 2 + gcc/testsuite/gfortran.dg/entry_3.f90 | 2 + gcc/testsuite/gfortran.dg/enum_10.f90 | 2 + gcc/testsuite/gfortran.dg/equiv_constraint_3.f90 | 2 +- gcc/testsuite/gfortran.dg/float_1.f90 | 12 + gcc/testsuite/gfortran.dg/func_derived_1.f90 | 2 + gcc/testsuite/gfortran.dg/func_derived_2.f90 | 2 +- gcc/testsuite/gfortran.dg/func_derived_3.f90 | 2 + gcc/testsuite/gfortran.dg/generic_1.f90 | 2 + gcc/testsuite/gfortran.dg/generic_2.f90 | 2 + gcc/testsuite/gfortran.dg/generic_3.f90 | 2 + gcc/testsuite/gfortran.dg/generic_4.f90 | 2 + gcc/testsuite/gfortran.dg/global_references_1.f90 | 2 + gcc/testsuite/gfortran.dg/host_used_types_1.f90 | 4 +- gcc/testsuite/gfortran.dg/implicit_1.f90 | 1 + gcc/testsuite/gfortran.dg/implicit_2.f90 | 2 + gcc/testsuite/gfortran.dg/implicit_actual.f90 | 1 + gcc/testsuite/gfortran.dg/initialization_1.f90 | 3 + gcc/testsuite/gfortran.dg/int_1.f90 | 2 + gcc/testsuite/gfortran.dg/intent_used_1.f90 | 2 + gcc/testsuite/gfortran.dg/interface_1.f90 | 2 + gcc/testsuite/gfortran.dg/interface_2.f90 | 2 + .../gfortran.dg/internal_references_2.f90 | 4 +- gcc/testsuite/gfortran.dg/io_constraints_1.f90 | 2 + gcc/testsuite/gfortran.dg/io_constraints_2.f90 | 2 + gcc/testsuite/gfortran.dg/iostat_2.f90 | 1 + gcc/testsuite/gfortran.dg/large_integer_kind_1.f90 | 2 + gcc/testsuite/gfortran.dg/large_real_kind_1.f90 | 2 + .../gfortran.dg/large_real_kind_form_io_2.f90 | 2 +- gcc/testsuite/gfortran.dg/module_blank_common.f90 | 2 +- gcc/testsuite/gfortran.dg/module_commons_1.f90 | 1 + gcc/testsuite/gfortran.dg/module_double_reuse.f90 | 1 + gcc/testsuite/gfortran.dg/module_equivalence_1.f90 | 2 +- gcc/testsuite/gfortran.dg/module_interface_1.f90 | 4 +- .../gfortran.dg/module_parameter_array_refs_1.f90 | 1 + .../gfortran.dg/multiple_allocation_1.f90 | 5 +- gcc/testsuite/gfortran.dg/named_interface.f90 | 2 + gcc/testsuite/gfortran.dg/namelist_1.f90 | 2 + gcc/testsuite/gfortran.dg/namelist_14.f90 | 2 + gcc/testsuite/gfortran.dg/namelist_15.f90 | 2 + gcc/testsuite/gfortran.dg/namelist_4.f90 | 1 + gcc/testsuite/gfortran.dg/namelist_use.f90 | 2 + gcc/testsuite/gfortran.dg/namelist_use_only.f90 | 2 + gcc/testsuite/gfortran.dg/nested_modules_1.f90 | 2 + gcc/testsuite/gfortran.dg/nested_modules_2.f90 | 1 + gcc/testsuite/gfortran.dg/nested_modules_3.f90 | 2 + gcc/testsuite/gfortran.dg/nested_modules_4.f90 | 2 + gcc/testsuite/gfortran.dg/nested_modules_5.f90 | 2 + gcc/testsuite/gfortran.dg/open_new.f90 | 2 +- gcc/testsuite/gfortran.dg/open_readonly_1.f90 | 2 +- gcc/testsuite/gfortran.dg/parens_5.f90 | 2 + gcc/testsuite/gfortran.dg/parent_result_ref_4.f90 | 2 + gcc/testsuite/gfortran.dg/pr15164.f90 | 1 + gcc/testsuite/gfortran.dg/pr16861.f90 | 2 + gcc/testsuite/gfortran.dg/pr16935.f90 | 1 + gcc/testsuite/gfortran.dg/pr17615.f90 | 2 + gcc/testsuite/gfortran.dg/pr19926.f90 | 1 + gcc/testsuite/gfortran.dg/pr20954.f | 1 + gcc/testsuite/gfortran.dg/pr21177.f90 | 2 + gcc/testsuite/gfortran.dg/pr26246_1.f90 | 1 + gcc/testsuite/gfortran.dg/private_type_1.f90 | 1 + gcc/testsuite/gfortran.dg/private_type_2.f90 | 2 +- gcc/testsuite/gfortran.dg/private_type_3.f90 | 1 + gcc/testsuite/gfortran.dg/private_type_4.f90 | 2 + gcc/testsuite/gfortran.dg/private_type_5.f90 | 24 + gcc/testsuite/gfortran.dg/procedure_lvalue.f90 | 4 +- gcc/testsuite/gfortran.dg/pure_byref_3.f90 | 2 + gcc/testsuite/gfortran.dg/read_many_1.f | 1 + gcc/testsuite/gfortran.dg/read_size_noadvance.f90 | 23 + gcc/testsuite/gfortran.dg/read_x_past.f | 17 + gcc/testsuite/gfortran.dg/record_marker_1.f90 | 38 + gcc/testsuite/gfortran.dg/record_marker_2.f | 83 + gcc/testsuite/gfortran.dg/record_marker_3.f90 | 38 + gcc/testsuite/gfortran.dg/same_name_1.f90 | 2 + gcc/testsuite/gfortran.dg/scalar_mask_2.f90 | 32 + .../gfortran.dg/sibling_dummy_procedure_1.f90 | 2 + .../gfortran.dg/sibling_dummy_procedure_2.f90 | 2 + .../gfortran.dg/sibling_dummy_procedure_3.f90 | 2 + gcc/testsuite/gfortran.dg/substr_1.f90 | 1 + .../gfortran.dg/substring_equivalence.f90 | 2 + gcc/testsuite/gfortran.dg/tl_editing.f90 | 1 + .../gfortran.dg/transfer_array_intrinsic_1.f90 | 23 + .../gfortran.dg/transfer_array_intrinsic_2.f90 | 119 + .../gfortran.dg/transpose_reshape_r10.f90 | 12 + gcc/testsuite/gfortran.dg/unf_io_convert_1.f90 | 12 +- gcc/testsuite/gfortran.dg/unf_io_convert_2.f90 | 1 + gcc/testsuite/gfortran.dg/use_allocated_1.f90 | 2 + gcc/testsuite/gfortran.dg/used_dummy_types_1.f90 | 4 +- gcc/testsuite/gfortran.dg/used_dummy_types_2.f90 | 2 + gcc/testsuite/gfortran.dg/used_dummy_types_3.f90 | 1 + gcc/testsuite/gfortran.dg/used_dummy_types_4.f90 | 1 + gcc/testsuite/gfortran.dg/used_dummy_types_5.f90 | 1 + gcc/testsuite/gfortran.dg/used_interface_ref.f90 | 3 +- gcc/testsuite/gfortran.dg/used_types_1.f90 | 2 + gcc/testsuite/gfortran.dg/userdef_operator_1.f90 | 1 + gcc/testsuite/gfortran.dg/write_back.f | 1 + gcc/testsuite/gfortran.dg/write_direct_eor.f90 | 12 + .../gfortran.fortran-torture/compile/pr26806.f90 | 11 + .../gfortran.fortran-torture/execute/direct_io.f90 | 1 + .../gfortran.fortran-torture/execute/equiv_5.f | 225 + .../gfortran.fortran-torture/execute/inquire_1.f90 | 1 + .../gfortran.fortran-torture/execute/inquire_2.f90 | 1 + .../gfortran.fortran-torture/execute/inquire_3.f90 | 1 + .../gfortran.fortran-torture/execute/inquire_4.f90 | 1 + .../execute/list_read_1.f90 | 1 + .../execute/open_replace.f90 | 1 + .../execute/slash_edit.f90 | 2 +- .../execute/unopened_unit_1.f90 | 1 + gcc/testsuite/lib/gcc-dg.exp | 7 + gcc/testsuite/lib/target-supports.exp | 270 +- gcc/testsuite/obj-c++.dg/dwarf-2.mm | 3 + gcc/testsuite/objc.dg/dwarf-1.m | 1 + gcc/testsuite/objc.dg/dwarf-2.m | 4 + gcc/testsuite/objc.dg/objc-nofilename-1.m | 3 +- gcc/timevar.def | 1 + gcc/tree-cfg.c | 392 +- gcc/tree-chrec.c | 45 +- gcc/tree-chrec.h | 15 +- gcc/tree-data-ref.c | 1178 +- gcc/tree-data-ref.h | 76 +- gcc/tree-dump.c | 20 +- gcc/tree-flow-inline.h | 11 +- gcc/tree-inline.c | 18 +- gcc/tree-loop-linear.c | 60 +- gcc/tree-mudflap.c | 7 + gcc/tree-object-size.c | 4 +- gcc/tree-pass.h | 4 +- gcc/tree-pretty-print.c | 4 +- gcc/tree-scalar-evolution.c | 106 +- gcc/tree-ssa-alias.c | 32 + gcc/tree-ssa-ccp.c | 6 +- gcc/tree-ssa-copy.c | 100 +- gcc/tree-ssa-dom.c | 491 + gcc/tree-ssa-loop-ivopts.c | 5 +- gcc/tree-ssa-loop-niter.c | 97 +- gcc/tree-ssa-pre.c | 144 +- gcc/tree-ssa-structalias.c | 6 +- gcc/tree-ssa.c | 44 +- gcc/tree-vect-analyze.c | 113 +- gcc/tree-vect-transform.c | 10 +- gcc/tree-vectorizer.c | 8 +- gcc/tree-vectorizer.h | 4 +- gcc/tree-vrp.c | 56 +- gcc/tree.c | 7 +- gcc/tree.h | 11 +- gcc/treelang/ChangeLog | 4 + gcc/treelang/Make-lang.in | 12 +- gcc/varasm.c | 17 +- libcpp/po/ChangeLog | 4 + libcpp/po/sv.po | 8 +- libffi/ChangeLog | 23 + libffi/src/powerpc/ffi.c | 123 +- libffi/src/powerpc/ffitarget.h | 7 +- libffi/src/powerpc/linux64.S | 5 +- libffi/src/powerpc/ppc_closure.S | 222 +- libffi/src/powerpc/sysv.S | 2 + libgcc-math/ChangeLog | 10 + libgcc-math/README | 6 + libgcc-math/dbl-64/MathLib.h | 103 - libgcc-math/dbl-64/asincos.tbl | 5169 --------- libgcc-math/dbl-64/atnat.h | 167 - libgcc-math/dbl-64/atnat2.h | 185 - libgcc-math/dbl-64/branred.c | 144 - libgcc-math/dbl-64/branred.h | 80 - libgcc-math/dbl-64/dla.h | 174 - libgcc-math/dbl-64/doasin.c | 76 - libgcc-math/dbl-64/doasin.h | 64 - libgcc-math/dbl-64/dosincos.c | 189 - libgcc-math/dbl-64/dosincos.h | 81 - libgcc-math/dbl-64/e_asin.c | 637 -- libgcc-math/dbl-64/e_atan2.c | 406 - libgcc-math/dbl-64/e_exp.c | 252 - libgcc-math/dbl-64/e_log.c | 203 - libgcc-math/dbl-64/e_log10.c | 97 - libgcc-math/dbl-64/e_pow.c | 388 - libgcc-math/dbl-64/e_rem_pio2.c | 182 - libgcc-math/dbl-64/e_sqrt.c | 88 - libgcc-math/dbl-64/halfulp.c | 123 - libgcc-math/dbl-64/k_rem_pio2.c | 319 - libgcc-math/dbl-64/mpa.c | 508 - libgcc-math/dbl-64/mpa.h | 90 - libgcc-math/dbl-64/mpa2.h | 98 - libgcc-math/dbl-64/mpatan.c | 102 - libgcc-math/dbl-64/mpatan.h | 174 - libgcc-math/dbl-64/mpatan2.c | 70 - libgcc-math/dbl-64/mpexp.c | 106 - libgcc-math/dbl-64/mpexp.h | 135 - libgcc-math/dbl-64/mplog.c | 72 - libgcc-math/dbl-64/mplog.h | 45 - libgcc-math/dbl-64/mpsqrt.c | 103 - libgcc-math/dbl-64/mpsqrt.h | 51 - libgcc-math/dbl-64/mptan.c | 60 - libgcc-math/dbl-64/mydefs.h | 38 - libgcc-math/dbl-64/powtwo.tbl | 32 - libgcc-math/dbl-64/root.tbl | 58 - libgcc-math/dbl-64/s_atan.c | 229 - libgcc-math/dbl-64/s_floor.c | 85 - libgcc-math/dbl-64/s_isinf.c | 32 - libgcc-math/dbl-64/s_scalbn.c | 69 - libgcc-math/dbl-64/s_sin.c | 1129 -- libgcc-math/dbl-64/s_tan.c | 485 - libgcc-math/dbl-64/sincos.tbl | 912 -- libgcc-math/dbl-64/sincos32.c | 352 - libgcc-math/dbl-64/sincos32.h | 82 - libgcc-math/dbl-64/slowexp.c | 66 - libgcc-math/dbl-64/slowpow.c | 74 - libgcc-math/dbl-64/t_exp.c | 436 - libgcc-math/dbl-64/t_exp2.h | 585 - libgcc-math/dbl-64/uasncs.h | 70 - libgcc-math/dbl-64/uatan.tbl | 11135 ------------------- libgcc-math/dbl-64/uexp.h | 70 - libgcc-math/dbl-64/uexp.tbl | 1787 --- libgcc-math/dbl-64/ulog.h | 200 - libgcc-math/dbl-64/ulog.tbl | 3327 ------ libgcc-math/dbl-64/upow.h | 81 - libgcc-math/dbl-64/upow.tbl | 10189 ----------------- libgcc-math/dbl-64/urem.h | 51 - libgcc-math/dbl-64/uroot.h | 44 - libgcc-math/dbl-64/usncs.h | 80 - libgcc-math/dbl-64/utan.h | 280 - libgcc-math/dbl-64/utan.tbl | 1526 --- libgcc-math/i386/Makefile.am | 32 +- libgcc-math/i386/Makefile.in | 287 +- libgfortran/ChangeLog | 227 + libgfortran/Makefile.am | 2 + libgfortran/Makefile.in | 26 +- {fastjar => libgfortran}/aclocal.m4 | 403 +- libgfortran/config/fpu-387.h | 14 +- libgfortran/generated/maxloc0_16_i16.c | 52 + libgfortran/generated/maxloc0_16_i4.c | 52 + libgfortran/generated/maxloc0_16_i8.c | 52 + libgfortran/generated/maxloc0_16_r10.c | 52 + libgfortran/generated/maxloc0_16_r16.c | 52 + libgfortran/generated/maxloc0_16_r4.c | 52 + libgfortran/generated/maxloc0_16_r8.c | 52 + libgfortran/generated/maxloc0_4_i16.c | 52 + libgfortran/generated/maxloc0_4_i4.c | 52 + libgfortran/generated/maxloc0_4_i8.c | 52 + libgfortran/generated/maxloc0_4_r10.c | 52 + libgfortran/generated/maxloc0_4_r16.c | 52 + libgfortran/generated/maxloc0_4_r4.c | 52 + libgfortran/generated/maxloc0_4_r8.c | 52 + libgfortran/generated/maxloc0_8_i16.c | 52 + libgfortran/generated/maxloc0_8_i4.c | 52 + libgfortran/generated/maxloc0_8_i8.c | 52 + libgfortran/generated/maxloc0_8_r10.c | 52 + libgfortran/generated/maxloc0_8_r16.c | 52 + libgfortran/generated/maxloc0_8_r4.c | 52 + libgfortran/generated/maxloc0_8_r8.c | 52 + libgfortran/generated/maxloc1_16_i16.c | 54 + libgfortran/generated/maxloc1_16_i4.c | 54 + libgfortran/generated/maxloc1_16_i8.c | 54 + libgfortran/generated/maxloc1_16_r10.c | 54 + libgfortran/generated/maxloc1_16_r16.c | 54 + libgfortran/generated/maxloc1_16_r4.c | 54 + libgfortran/generated/maxloc1_16_r8.c | 54 + libgfortran/generated/maxloc1_4_i16.c | 54 + libgfortran/generated/maxloc1_4_i4.c | 54 + libgfortran/generated/maxloc1_4_i8.c | 54 + libgfortran/generated/maxloc1_4_r10.c | 54 + libgfortran/generated/maxloc1_4_r16.c | 54 + libgfortran/generated/maxloc1_4_r4.c | 54 + libgfortran/generated/maxloc1_4_r8.c | 54 + libgfortran/generated/maxloc1_8_i16.c | 54 + libgfortran/generated/maxloc1_8_i4.c | 54 + libgfortran/generated/maxloc1_8_i8.c | 54 + libgfortran/generated/maxloc1_8_r10.c | 54 + libgfortran/generated/maxloc1_8_r16.c | 54 + libgfortran/generated/maxloc1_8_r4.c | 54 + libgfortran/generated/maxloc1_8_r8.c | 54 + libgfortran/generated/maxval_i16.c | 54 + libgfortran/generated/maxval_i4.c | 54 + libgfortran/generated/maxval_i8.c | 54 + libgfortran/generated/maxval_r10.c | 54 + libgfortran/generated/maxval_r16.c | 54 + libgfortran/generated/maxval_r4.c | 54 + libgfortran/generated/maxval_r8.c | 54 + libgfortran/generated/minloc0_16_i16.c | 52 + libgfortran/generated/minloc0_16_i4.c | 52 + libgfortran/generated/minloc0_16_i8.c | 52 + libgfortran/generated/minloc0_16_r10.c | 52 + libgfortran/generated/minloc0_16_r16.c | 52 + libgfortran/generated/minloc0_16_r4.c | 52 + libgfortran/generated/minloc0_16_r8.c | 52 + libgfortran/generated/minloc0_4_i16.c | 52 + libgfortran/generated/minloc0_4_i4.c | 52 + libgfortran/generated/minloc0_4_i8.c | 52 + libgfortran/generated/minloc0_4_r10.c | 52 + libgfortran/generated/minloc0_4_r16.c | 52 + libgfortran/generated/minloc0_4_r4.c | 52 + libgfortran/generated/minloc0_4_r8.c | 52 + libgfortran/generated/minloc0_8_i16.c | 52 + libgfortran/generated/minloc0_8_i4.c | 52 + libgfortran/generated/minloc0_8_i8.c | 52 + libgfortran/generated/minloc0_8_r10.c | 52 + libgfortran/generated/minloc0_8_r16.c | 52 + libgfortran/generated/minloc0_8_r4.c | 52 + libgfortran/generated/minloc0_8_r8.c | 52 + libgfortran/generated/minloc1_16_i16.c | 54 + libgfortran/generated/minloc1_16_i4.c | 54 + libgfortran/generated/minloc1_16_i8.c | 54 + libgfortran/generated/minloc1_16_r10.c | 54 + libgfortran/generated/minloc1_16_r16.c | 54 + libgfortran/generated/minloc1_16_r4.c | 54 + libgfortran/generated/minloc1_16_r8.c | 54 + libgfortran/generated/minloc1_4_i16.c | 54 + libgfortran/generated/minloc1_4_i4.c | 54 + libgfortran/generated/minloc1_4_i8.c | 54 + libgfortran/generated/minloc1_4_r10.c | 54 + libgfortran/generated/minloc1_4_r16.c | 54 + libgfortran/generated/minloc1_4_r4.c | 54 + libgfortran/generated/minloc1_4_r8.c | 54 + libgfortran/generated/minloc1_8_i16.c | 54 + libgfortran/generated/minloc1_8_i4.c | 54 + libgfortran/generated/minloc1_8_i8.c | 54 + libgfortran/generated/minloc1_8_r10.c | 54 + libgfortran/generated/minloc1_8_r16.c | 54 + libgfortran/generated/minloc1_8_r4.c | 54 + libgfortran/generated/minloc1_8_r8.c | 54 + libgfortran/generated/minval_i16.c | 54 + libgfortran/generated/minval_i4.c | 54 + libgfortran/generated/minval_i8.c | 54 + libgfortran/generated/minval_r10.c | 54 + libgfortran/generated/minval_r16.c | 54 + libgfortran/generated/minval_r4.c | 54 + libgfortran/generated/minval_r8.c | 54 + libgfortran/generated/product_c10.c | 54 + libgfortran/generated/product_c16.c | 54 + libgfortran/generated/product_c4.c | 54 + libgfortran/generated/product_c8.c | 54 + libgfortran/generated/product_i16.c | 54 + libgfortran/generated/product_i4.c | 54 + libgfortran/generated/product_i8.c | 54 + libgfortran/generated/product_r10.c | 54 + libgfortran/generated/product_r16.c | 54 + libgfortran/generated/product_r4.c | 54 + libgfortran/generated/product_r8.c | 54 + libgfortran/generated/reshape_r10.c | 268 + libgfortran/generated/sum_c10.c | 54 + libgfortran/generated/sum_c16.c | 54 + libgfortran/generated/sum_c4.c | 54 + libgfortran/generated/sum_c8.c | 54 + libgfortran/generated/sum_i16.c | 54 + libgfortran/generated/sum_i4.c | 54 + libgfortran/generated/sum_i8.c | 54 + libgfortran/generated/sum_r10.c | 54 + libgfortran/generated/sum_r16.c | 54 + libgfortran/generated/sum_r4.c | 54 + libgfortran/generated/sum_r8.c | 54 + libgfortran/generated/transpose_r10.c | 104 + libgfortran/io/file_pos.c | 63 +- libgfortran/io/io.h | 8 +- libgfortran/io/open.c | 21 +- libgfortran/io/read.c | 2 +- libgfortran/io/transfer.c | 215 +- libgfortran/io/write.c | 2 +- libgfortran/libgfortran.h | 2 + libgfortran/m4/iforeach.m4 | 53 + libgfortran/m4/ifunction.m4 | 54 + libgfortran/m4/iparm.m4 | 2 +- libgfortran/m4/maxloc0.m4 | 1 + libgfortran/m4/maxloc1.m4 | 2 + libgfortran/m4/maxval.m4 | 2 + libgfortran/m4/minloc0.m4 | 1 + libgfortran/m4/minloc1.m4 | 2 + libgfortran/m4/minval.m4 | 2 + libgfortran/m4/product.m4 | 2 + libgfortran/m4/sum.m4 | 2 + libgfortran/runtime/compile_options.c | 26 + libgfortran/runtime/error.c | 4 + libgfortran/runtime/memory.c | 16 +- libgomp/ChangeLog | 5 + libgomp/testsuite/libgomp.c++/pr26691.C | 20 + libiberty/ChangeLog | 17 + libiberty/pex-common.c | 15 +- libiberty/pex-win32.c | 580 +- libjava/ChangeLog | 138 + libjava/Makefile.am | 15 +- libjava/Makefile.in | 58 +- libjava/classpath/ChangeLog.gcj | 29 + libjava/classpath/Makefile.am | 6 +- libjava/classpath/Makefile.in | 14 +- libjava/classpath/lib/Makefile.am | 2 +- libjava/classpath/lib/Makefile.in | 10 +- libjava/classpath/lib/gen-classlist.sh.in | 69 +- libjava/classpath/lib/split-for-gcj.sh | 28 +- libjava/configure | 60 +- libjava/configure.ac | 10 +- libjava/configure.host | 1 + libjava/gcj/Makefile.in | 2 +- libjava/gnu/java/lang/natMainThread.cc | 3 +- libjava/gnu/java/rmi/rmic/Compile_gcj.java | 1 + libjava/gnu/java/rmi/rmic/Compile_jikes.java | 1 + libjava/gnu/java/rmi/rmic/Compile_kjc.java | 1 + libjava/gnu/java/rmi/rmic/Compiler.java | 15 + libjava/gnu/java/rmi/rmic/CompilerProcess.java | 31 +- libjava/gnu/java/rmi/rmic/RMIC.java | 319 +- libjava/include/Makefile.in | 2 +- libjava/include/java-chartables.h | 2604 +++-- libjava/java/lang/Character.java | 609 + libjava/java/lang/Runtime.java | 15 +- libjava/java/lang/natCharacter.cc | 138 +- libjava/libltdl/COPYING.LIB | 4 +- libjava/libltdl/ChangeLog | 16 + libjava/libltdl/Makefile.am | 33 +- libjava/libltdl/Makefile.in | 85 +- libjava/libltdl/acinclude.m4 | 1029 +- libjava/libltdl/aclocal.m4 | 24 + libjava/libltdl/configure | 2898 +++-- libjava/libltdl/configure.ac | 18 +- libjava/libltdl/install-sh | 617 +- libjava/libltdl/ltdl.c | 167 +- libjava/libltdl/ltdl.h | 73 +- libjava/libltdl/ltmain.sh | 1258 ++- libjava/libltdl/missing | 127 +- libjava/libltdl/mkinstalldirs | 111 - libjava/posix.cc | 10 +- libjava/prims.cc | 2 +- libjava/scripts/makemake.tcl | 5 +- libjava/scripts/unicode-to-chartables.pl | 802 ++ libjava/sources.am | 40 + libjava/testsuite/Makefile.in | 2 +- libjava/testsuite/libjava.compile/pr26042.java | 12 + libjava/testsuite/libjava.lang/PR26858.java | 2075 ++++ libjava/testsuite/libjava.lang/PR26858.out | 2 + libjava/testsuite/libjava.lang/PR26858.xfail | 2 + libjava/testsuite/libjava.lang/pr26390.java | 45 + libjava/testsuite/libjava.lang/pr26390.out | 0 libstdc++-v3/ChangeLog | 79 + libstdc++-v3/include/bits/cpp_type_traits.h | 28 +- libstdc++-v3/include/bits/fstream.tcc | 17 +- libstdc++-v3/include/bits/stl_algo.h | 10 + libstdc++-v3/include/bits/stl_algobase.h | 32 +- libstdc++-v3/include/bits/streambuf_iterator.h | 151 +- libstdc++-v3/include/ext/vstring.h | 5 +- libstdc++-v3/include/std/std_streambuf.h | 39 +- libstdc++-v3/scripts/testsuite_flags.in | 2 +- .../copy/streambuf_iterators/char/1.cc | 76 + .../copy/streambuf_iterators/char/2.cc | 77 + .../copy/streambuf_iterators/char/3.cc | 72 + .../copy/streambuf_iterators/char/4.cc | 56 + .../copy/streambuf_iterators/wchar_t/1.cc | 76 + .../copy/streambuf_iterators/wchar_t/2.cc | 77 + .../copy/streambuf_iterators/wchar_t/3.cc | 72 + .../copy/streambuf_iterators/wchar_t/4.cc | 56 + .../find/istreambuf_iterators/char/1.cc | 84 + .../find/istreambuf_iterators/char/2.cc | 60 + .../find/istreambuf_iterators/wchar_t/1.cc | 84 + .../find/istreambuf_iterators/wchar_t/2.cc | 60 + .../27_io/basic_filebuf/seekoff/char/26777.cc | 86 + .../27_io/basic_filebuf/sgetn/char/1-in.cc | 4 +- .../27_io/basic_filebuf/sgetn/char/1-io.cc | 4 +- .../27_io/basic_filebuf/sgetn/char/2-in.cc | 6 +- .../27_io/basic_filebuf/sgetn/char/2-io.cc | 6 +- libstdc++-v3/testsuite/data/filebuf_virtuals-1.tst | 4 +- libstdc++-v3/testsuite/data/filebuf_virtuals-1.txt | 4 +- .../testsuite/data/istream_extractor_other-1.tst | 4 +- .../testsuite/data/istream_extractor_other-1.txt | 4 +- .../testsuite/data/istream_extractor_other-2.tst | 4 +- .../testsuite/data/ostream_inserter_other-1.tst | 4 +- .../testsuite/data/ostream_inserter_other-2.tst | 4 +- libstdc++-v3/testsuite/data/sgetn.txt | 2 +- .../testsuite/data/wistream_extractor_other-1.tst | 4 +- .../testsuite/data/wistream_extractor_other-1.txt | 4 +- .../testsuite/data/wistream_extractor_other-2.tst | 4 +- .../testsuite/data/wostream_inserter_other-1.tst | 4 +- .../testsuite/data/wostream_inserter_other-2.tst | 4 +- libstdc++-v3/testsuite/lib/libstdc++.exp | 25 +- .../25_algorithms/copy_streambuf_iterators.cc | 107 + .../25_algorithms/find_istreambuf_iterators.cc | 63 + 824 files changed, 33563 insertions(+), 69998 deletions(-) delete mode 100644 fastjar/AUTHORS delete mode 100644 fastjar/CHANGES delete mode 100644 fastjar/COPYING delete mode 100644 fastjar/ChangeLog delete mode 100644 fastjar/INSTALL delete mode 100644 fastjar/Makefile.am delete mode 100644 fastjar/Makefile.in delete mode 100644 fastjar/NEWS delete mode 100644 fastjar/README delete mode 100644 fastjar/acinclude.m4 delete mode 100644 fastjar/compress.c delete mode 100644 fastjar/compress.h delete mode 100644 fastjar/config.h.in delete mode 100755 fastjar/configure delete mode 100644 fastjar/configure.ac delete mode 100644 fastjar/dostime.c delete mode 100644 fastjar/dostime.h delete mode 100644 fastjar/fastjar.texi delete mode 100644 fastjar/install-defs.sh.in delete mode 100644 fastjar/jargrep.c delete mode 100644 fastjar/jargrep.h delete mode 100644 fastjar/jartool.c delete mode 100644 fastjar/jartool.h delete mode 100644 fastjar/pushback.c delete mode 100644 fastjar/pushback.h delete mode 100644 fastjar/shift.c delete mode 100644 fastjar/shift.h delete mode 100644 fastjar/zipfile.h create mode 100644 gcc/addresses.h create mode 100644 gcc/config/avr/constraints.md rewrite gcc/config/darwin-crt3.c (70%) create mode 100644 gcc/config/i386/constraints.md create mode 100644 gcc/config/ia64/unwind-hpux.c create mode 100644 gcc/config/rs6000/constraints.md create mode 100644 gcc/config/sh/divcost-analysis create mode 100644 gcc/config/sh/divtab-sh4.c create mode 100644 gcc/config/sh/superh.opt rewrite gcc/config/sh/t-superh (100%) copy gcc/config/{sol26.h => sol2-10.h} (69%) rename gcc/config/{sol26.h => sol2-6.h} (100%) create mode 100644 gcc/testsuite/g++.dg/ext/visibility/anon1.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/local1.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/namespace1.C create mode 100644 gcc/testsuite/g++.dg/gomp/pr26611-1.C create mode 100644 gcc/testsuite/g++.dg/gomp/pr26611-2.C create mode 100644 gcc/testsuite/g++.dg/gomp/pr26690-1.C create mode 100644 gcc/testsuite/g++.dg/gomp/pr26690-2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.other/init19.C create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr26781-1.c create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr26781-2.c create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr26833.c create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr26840.c create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr25737.c create mode 100644 gcc/testsuite/gcc.dg/fold-andxor-1.c create mode 100644 gcc/testsuite/gcc.dg/fold-convnotconv-1.c create mode 100644 gcc/testsuite/gcc.dg/fold-xorand-1.c create mode 100644 gcc/testsuite/gcc.dg/pr26717.c create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/loadpre12.c create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/loadpre13.c create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/loadpre14.c create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/loadpre15.c create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/loadpre16.c create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/loadpre17.c create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/loadpre18.c create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/loadpre19.c create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/loadpre20.c create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/loadpre21.c create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/loadpre22.c create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr21829.c create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/vrp28.c create mode 100644 gcc/testsuite/gcc.dg/visibility-11.c create mode 100644 gcc/testsuite/gcc.target/powerpc/indexed-addr.c create mode 100644 gcc/testsuite/gcc.target/powerpc/pr26350.c create mode 100644 gcc/testsuite/gfortran.dg/advance_2.f90 create mode 100644 gcc/testsuite/gfortran.dg/advance_3.f90 create mode 100644 gcc/testsuite/gfortran.dg/assumed_shape_ranks_2.f90 create mode 100644 gcc/testsuite/gfortran.dg/convert_implied_open.f90 create mode 100644 gcc/testsuite/gfortran.dg/dependency_12.f90 create mode 100644 gcc/testsuite/gfortran.dg/dependency_13.f90 create mode 100644 gcc/testsuite/gfortran.dg/dependency_9.f90 create mode 100644 gcc/testsuite/gfortran.dg/elemental_initializer_1.f90 create mode 100644 gcc/testsuite/gfortran.dg/float_1.f90 create mode 100644 gcc/testsuite/gfortran.dg/private_type_5.f90 create mode 100644 gcc/testsuite/gfortran.dg/read_size_noadvance.f90 create mode 100644 gcc/testsuite/gfortran.dg/read_x_past.f create mode 100644 gcc/testsuite/gfortran.dg/record_marker_1.f90 create mode 100644 gcc/testsuite/gfortran.dg/record_marker_2.f create mode 100644 gcc/testsuite/gfortran.dg/record_marker_3.f90 create mode 100644 gcc/testsuite/gfortran.dg/scalar_mask_2.f90 create mode 100644 gcc/testsuite/gfortran.dg/transfer_array_intrinsic_1.f90 create mode 100644 gcc/testsuite/gfortran.dg/transfer_array_intrinsic_2.f90 create mode 100644 gcc/testsuite/gfortran.dg/transpose_reshape_r10.f90 create mode 100644 gcc/testsuite/gfortran.dg/write_direct_eor.f90 create mode 100644 gcc/testsuite/gfortran.fortran-torture/compile/pr26806.f90 create mode 100644 gcc/testsuite/gfortran.fortran-torture/execute/equiv_5.f create mode 100644 gcc/testsuite/obj-c++.dg/dwarf-2.mm create mode 100644 gcc/testsuite/objc.dg/dwarf-2.m create mode 100644 libgcc-math/README delete mode 100644 libgcc-math/dbl-64/MathLib.h delete mode 100644 libgcc-math/dbl-64/asincos.tbl delete mode 100644 libgcc-math/dbl-64/atnat.h delete mode 100644 libgcc-math/dbl-64/atnat2.h delete mode 100644 libgcc-math/dbl-64/branred.c delete mode 100644 libgcc-math/dbl-64/branred.h delete mode 100644 libgcc-math/dbl-64/dla.h delete mode 100644 libgcc-math/dbl-64/doasin.c delete mode 100644 libgcc-math/dbl-64/doasin.h delete mode 100644 libgcc-math/dbl-64/dosincos.c delete mode 100644 libgcc-math/dbl-64/dosincos.h delete mode 100644 libgcc-math/dbl-64/e_asin.c delete mode 100644 libgcc-math/dbl-64/e_atan2.c delete mode 100644 libgcc-math/dbl-64/e_exp.c delete mode 100644 libgcc-math/dbl-64/e_log.c delete mode 100644 libgcc-math/dbl-64/e_log10.c delete mode 100644 libgcc-math/dbl-64/e_pow.c delete mode 100644 libgcc-math/dbl-64/e_rem_pio2.c delete mode 100644 libgcc-math/dbl-64/e_sqrt.c delete mode 100644 libgcc-math/dbl-64/halfulp.c delete mode 100644 libgcc-math/dbl-64/k_rem_pio2.c delete mode 100644 libgcc-math/dbl-64/mpa.c delete mode 100644 libgcc-math/dbl-64/mpa.h delete mode 100644 libgcc-math/dbl-64/mpa2.h delete mode 100644 libgcc-math/dbl-64/mpatan.c delete mode 100644 libgcc-math/dbl-64/mpatan.h delete mode 100644 libgcc-math/dbl-64/mpatan2.c delete mode 100644 libgcc-math/dbl-64/mpexp.c delete mode 100644 libgcc-math/dbl-64/mpexp.h delete mode 100644 libgcc-math/dbl-64/mplog.c delete mode 100644 libgcc-math/dbl-64/mplog.h delete mode 100644 libgcc-math/dbl-64/mpsqrt.c delete mode 100644 libgcc-math/dbl-64/mpsqrt.h delete mode 100644 libgcc-math/dbl-64/mptan.c delete mode 100644 libgcc-math/dbl-64/mydefs.h delete mode 100644 libgcc-math/dbl-64/powtwo.tbl delete mode 100644 libgcc-math/dbl-64/root.tbl delete mode 100644 libgcc-math/dbl-64/s_atan.c delete mode 100644 libgcc-math/dbl-64/s_floor.c delete mode 100644 libgcc-math/dbl-64/s_isinf.c delete mode 100644 libgcc-math/dbl-64/s_scalbn.c delete mode 100644 libgcc-math/dbl-64/s_sin.c delete mode 100644 libgcc-math/dbl-64/s_tan.c delete mode 100644 libgcc-math/dbl-64/sincos.tbl delete mode 100644 libgcc-math/dbl-64/sincos32.c delete mode 100644 libgcc-math/dbl-64/sincos32.h delete mode 100644 libgcc-math/dbl-64/slowexp.c delete mode 100644 libgcc-math/dbl-64/slowpow.c delete mode 100644 libgcc-math/dbl-64/t_exp.c delete mode 100644 libgcc-math/dbl-64/t_exp2.h delete mode 100644 libgcc-math/dbl-64/uasncs.h delete mode 100644 libgcc-math/dbl-64/uatan.tbl delete mode 100644 libgcc-math/dbl-64/uexp.h delete mode 100644 libgcc-math/dbl-64/uexp.tbl delete mode 100644 libgcc-math/dbl-64/ulog.h delete mode 100644 libgcc-math/dbl-64/ulog.tbl delete mode 100644 libgcc-math/dbl-64/upow.h delete mode 100644 libgcc-math/dbl-64/upow.tbl delete mode 100644 libgcc-math/dbl-64/urem.h delete mode 100644 libgcc-math/dbl-64/uroot.h delete mode 100644 libgcc-math/dbl-64/usncs.h delete mode 100644 libgcc-math/dbl-64/utan.h delete mode 100644 libgcc-math/dbl-64/utan.tbl rename {fastjar => libgfortran}/aclocal.m4 (70%) create mode 100644 libgfortran/generated/reshape_r10.c create mode 100644 libgfortran/generated/transpose_r10.c create mode 100644 libgomp/testsuite/libgomp.c++/pr26691.C rewrite libjava/include/java-chartables.h (91%) rewrite libjava/libltdl/install-sh (63%) delete mode 100755 libjava/libltdl/mkinstalldirs create mode 100755 libjava/scripts/unicode-to-chartables.pl create mode 100644 libjava/testsuite/libjava.compile/pr26042.java create mode 100644 libjava/testsuite/libjava.lang/PR26858.java create mode 100644 libjava/testsuite/libjava.lang/PR26858.out create mode 100644 libjava/testsuite/libjava.lang/PR26858.xfail create mode 100644 libjava/testsuite/libjava.lang/pr26390.java create mode 100644 libjava/testsuite/libjava.lang/pr26390.out create mode 100644 libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/1.cc create mode 100644 libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/2.cc create mode 100644 libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/3.cc create mode 100644 libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc create mode 100644 libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/1.cc create mode 100644 libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/2.cc create mode 100644 libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/3.cc create mode 100644 libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc create mode 100644 libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/1.cc create mode 100644 libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc create mode 100644 libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/1.cc create mode 100644 libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc create mode 100644 libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/26777.cc create mode 100644 libstdc++-v3/testsuite/performance/25_algorithms/copy_streambuf_iterators.cc create mode 100644 libstdc++-v3/testsuite/performance/25_algorithms/find_istreambuf_iterators.cc diff --git a/ChangeLog b/ChangeLog index 89ba9fcab22..509eaac55b0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2006-04-05 Ben Elliston + + * configure.in: Require makeinfo 4.4 or higher. + * configure: Regenerate. + +2006-04-04 Gerald Pfeifer + + * MAINTAINERS: Add Richard Henderson as libgomp maintainer. + Rearrange the entries of other libraries to have them in one place. + +2006-03-22 Janne Blomqvist + + * MAINTAINERS (Write After Approval): Remove myself. + (Language Front End Maintainers): Add myself as fortran 95 maintainer. + 2006-03-14 Richard Guenther * configure: Regenerate with autoconf 2.13. diff --git a/MAINTAINERS b/MAINTAINERS index ef1cc0b0f2a..8f114643933 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -122,6 +122,7 @@ fortran 95 Steve Kargl sgk@troutmask.apl.washington.edu fortran 95 Erik Edelmann erik.edelmann@iki.fi fortran 95 Paul Thomas pault@gcc.gnu.org fortran 95 Tobias Schlüter tobias.schlueter@physik.uni-muenchen.de +fortran 95 Janne Blomqvist jb@gcc.gnu.org c++ Jason Merrill jason@redhat.com c++ Mark Mitchell mark@codesourcery.com c++ Nathan Sidwell nathan@codesourcery.com @@ -142,6 +143,10 @@ cpplib Per Bothner per@bothner.com libdecnumber Ben Elliston bje@au.ibm.com libgcj Tom Tromey tromey@redhat.com libgcj Bryce McKinlay mckinlay@redhat.com +libgomp Richard Henderson rth@redhat.com +libiberty DJ Delorie dj@redhat.com +libiberty Ian Lance Taylor ian@airs.com +libffi testsuite Andreas Tobler andreast@gcc.gnu.org libobjc Nicola Pero n.pero@mi.flashnet.it libobjc Andrew Pinski pinskia@physics.uc.edu loop discovery Michael Hayes m.hayes@elec.canterbury.ac.nz @@ -173,8 +178,6 @@ basic block reordering Jason Eckhardt jle@rice.edu i18n Philipp Thomas pthomas@suse.de i18n Joseph Myers jsm@polyomino.org.uk diagnostic messages Gabriel Dos Reis gdr@integrable-solutions.net -libiberty DJ Delorie dj@redhat.com -libiberty Ian Lance Taylor ian@airs.com build machinery (*.in) DJ Delorie dj@redhat.com build machinery (*.in) Nathanael Nerode neroden@gcc.gnu.org build machinery (*.in) Alexandre Oliva aoliva@redhat.com @@ -185,7 +188,6 @@ contrib/regression Geoff Keating geoffk@geoffk.org gcov Jan Hubicka jh@suse.cz gcov Nathan Sidwell nathan@codesourcery.com option handling Neil Booth neil@daikokuya.co.uk -libffi testsuite Andreas Tobler andreast@gcc.gnu.org testsuite Janis Johnson janis187@us.ibm.com middle-end Roger Sayle roger@eyesopen.com middle-end Ian Lance Taylor ian@airs.com @@ -220,7 +222,6 @@ Laurynas Biveinis laurynas.biveinis@mif.vu.lt Uros Bizjak uros@kss-loka.si Eric Blake ericb@gcc.gnu.org Jim Blandy jimb@codesourcery.com -Janne Blomqvist jb@gcc.gnu.org Phil Blundell pb@futuretv.com Hans Boehm hboehm@gcc.gnu.org Segher Boessenkool segher@kernel.crashing.org diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog index 81bf9f6112f..1195d7ee5e9 100644 --- a/boehm-gc/ChangeLog +++ b/boehm-gc/ChangeLog @@ -1,3 +1,10 @@ +2006-03-24 Andreas Tobler + John David Anglin + + * configure.ac (THREADS): Add REENTRANT for *-*-hpux11*. + Warn about POSIX threads not being supported for *-*-hpux10*. + * configure: Regenerate. + 2006-02-09 Tom Tromey * pthread_support.c: Conditionally include dlfcn.h. diff --git a/boehm-gc/configure b/boehm-gc/configure index e0223dd7ea3..65575a5d137 100755 --- a/boehm-gc/configure +++ b/boehm-gc/configure @@ -5409,9 +5409,9 @@ _ACEOF _ACEOF ;; - *-*-hpux*) - { echo "$as_me:$LINENO: WARNING: \"Only HP/UX 11 threads are supported.\"" >&5 -echo "$as_me: WARNING: \"Only HP/UX 11 threads are supported.\"" >&2;} + *-*-hpux11*) + { echo "$as_me:$LINENO: WARNING: \"Only HP-UX 11 POSIX threads are supported.\"" >&5 +echo "$as_me: WARNING: \"Only HP-UX 11 POSIX threads are supported.\"" >&2;} cat >>confdefs.h <<\_ACEOF #define GC_HPUX_THREADS 1 @@ -5433,6 +5433,16 @@ _ACEOF _ACEOF THREADLIBS="-lpthread -lrt" + # HPUX needs REENTRANT for the _r calls. + +cat >>confdefs.h <<\_ACEOF +#define _REENTRANT 1 +_ACEOF + + ;; + *-*-hpux10*) + { echo "$as_me:$LINENO: WARNING: \"Only HP-UX 11 POSIX threads are supported.\"" >&5 +echo "$as_me: WARNING: \"Only HP-UX 11 POSIX threads are supported.\"" >&2;} ;; *-*-freebsd*) { echo "$as_me:$LINENO: WARNING: \"FreeBSD does not yet fully support threads with Boehm GC.\"" >&5 diff --git a/boehm-gc/configure.ac b/boehm-gc/configure.ac index 2b9663dec20..69ad5cd3ab9 100644 --- a/boehm-gc/configure.ac +++ b/boehm-gc/configure.ac @@ -140,8 +140,8 @@ case "$THREADS" in AC_DEFINE(GC_AIX_THREADS,1,[support AIX threads]) AC_DEFINE(_REENTRANT,1) ;; - *-*-hpux*) - AC_MSG_WARN("Only HP/UX 11 threads are supported.") + *-*-hpux11*) + AC_MSG_WARN("Only HP-UX 11 POSIX threads are supported.") AC_DEFINE(GC_HPUX_THREADS,1,[enables support for HP/UX 11 pthreads]) AC_DEFINE(_POSIX_C_SOURCE,199506L,[POSIX version of C Source]) if test "${enable_parallel_mark}" = yes; then @@ -149,6 +149,11 @@ case "$THREADS" in fi AC_DEFINE(THREAD_LOCAL_ALLOC,1) THREADLIBS="-lpthread -lrt" + # HPUX needs REENTRANT for the _r calls. + AC_DEFINE(_REENTRANT, 1, [Required define if using POSIX threads]) + ;; + *-*-hpux10*) + AC_MSG_WARN("Only HP-UX 11 POSIX threads are supported.") ;; *-*-freebsd*) AC_MSG_WARN("FreeBSD does not yet fully support threads with Boehm GC.") diff --git a/configure b/configure index 2dae3f1c722..b8d5b81fc9f 100755 --- a/configure +++ b/configure @@ -3628,10 +3628,10 @@ case " $build_configdirs " in *" texinfo "*) MAKEINFO='$$r/$(BUILD_SUBDIR)/texinfo/makeinfo/makeinfo' ;; *) - # For an installed makeinfo, we require it to be from texinfo 4.2 or + # For an installed makeinfo, we require it to be from texinfo 4.4 or # higher, else we use the "missing" dummy. if ${MAKEINFO} --version \ - | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])' >/dev/null 2>&1; then + | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then : else MAKEINFO="$MISSING makeinfo" diff --git a/configure.in b/configure.in index da7c63f4f5b..def58c466cb 100644 --- a/configure.in +++ b/configure.in @@ -2203,10 +2203,10 @@ case " $build_configdirs " in *" texinfo "*) MAKEINFO='$$r/$(BUILD_SUBDIR)/texinfo/makeinfo/makeinfo' ;; *) changequote(,) - # For an installed makeinfo, we require it to be from texinfo 4.2 or + # For an installed makeinfo, we require it to be from texinfo 4.4 or # higher, else we use the "missing" dummy. if ${MAKEINFO} --version \ - | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])' >/dev/null 2>&1; then + | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then : else MAKEINFO="$MISSING makeinfo" diff --git a/fastjar/AUTHORS b/fastjar/AUTHORS deleted file mode 100644 index 8351d85d460..00000000000 --- a/fastjar/AUTHORS +++ /dev/null @@ -1 +0,0 @@ -Bryan Burns and Cory Jon Hollingsworth. diff --git a/fastjar/CHANGES b/fastjar/CHANGES deleted file mode 100644 index 057aa611051..00000000000 --- a/fastjar/CHANGES +++ /dev/null @@ -1,38 +0,0 @@ -0.92 08/24/2000 Improved support for other Unix platforms. - Now works on Solaris, AIX, True 64, and HP-UX. - Hopefully resolved all big endian problems. - Fixed bug in update which caused it to skip - openning update file - -0.90 12/06/1999 Fixed recursive archival bug. - -0.86 10/12/1999 Applied patch to fix leading "./" problem. - -0.85 5/10/1999 The -t and -x flags now work. Hooray! Those - took quite a long time to get working. - Handling extraction/listing added quite a bit - of code, 500-1000 lines. ouch! - -0.75 4/27/1999 Added support for -C flag, allowing you to - change directories before adding files. See - fastjar's usage screen for more info. Also - improved the total compression display, and - added install/uninstall targets to the - Makefile. - -0.71 4/27/1999 Added -V flag to print version info. Added - better error messages, and added configure - script for better portability. - -0.70 4/25/1999 Added compression. Only deflation is supported - at this time (only one jar supports) and is - enabled by default. use the -0 flag to disable - compression. - -0.60 4/21/1999 Added support for manifest files (-m, -M). - Fixed bug with mod time/date in central header. - -0.50.1 4/20/1999 Added patch from John Bley. (Fixes bug with - not properly closing the file) - -0.50 4/20/1999 First public release diff --git a/fastjar/COPYING b/fastjar/COPYING deleted file mode 100644 index d60c31a97a5..00000000000 --- a/fastjar/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/fastjar/ChangeLog b/fastjar/ChangeLog deleted file mode 100644 index 0c755e9c964..00000000000 --- a/fastjar/ChangeLog +++ /dev/null @@ -1,618 +0,0 @@ -2006-02-08 Thomas Fitzsimmons - - * jartool.h (ACTION_INDEX): New macro. - * jartool.c (main): Handle -i option. - * fastjar.texi (Invoking fastjar): Add description of -i option. - -2006-01-31 Tom Tromey - - * jartool.c (version): Use 2006. - * jargrep.c (version): Use 2006. - -2005-11-29 Tom Tromey - - * compress.c (write_data): Mark 'ze' as unused. - * jartool.h (__attribute__): New define. - * shift.c (shift_up): Added cast. - (shift_down): Likewise. - * jartool.c (help): Split string constant. - -2005-06-29 Kelley Cook - - * all files: Update FSF address. - -2005-05-17 Kelley Cook - - * configure.ac: Use AC_C_BIGENDIAN instead of AC_C_BIGENDIAN_CROSS. - Use AC_CHECK_SIZEOF instead of AC_COMPILE_CHECK_SIZEOF. - * Makefile.am: Remove ACLOCAL_AMFLAGS. - * aclocal.m4, Makefile.in, configure, config.h.in: Regenerate. - -2005-03-28 Marcin Dalecki - - * jartool.c (main): Indentation fixlet. - (add_entry): Likewise. - (init_args): Don't use K&R style. - (jt_strdup): Likewise. - (get_next_arg): Add explicit '(void)'. - (init_headers): Likewise. - (version): Likewise. - -2005-03-15 Zack Weinberg - - * Makefile.am (fastjar_TEXINFOS): Add gcc-vers.texi. - (BASEVER, DEVPHASE): New variables. - (POD2MAN): Adjust setting of --release option. - (fastjar.1, grepjar.1, gcc-vers.texi): New rules. - * Makefile.in: Regenerate. - * configure.ac: Do not invoke TL_AC_GCC_VERSION. - * aclocal.m4, configure: Regenerate. - -2004-12-02 Richard Sandiford - - * configure.ac: Use TL_AC_GCC_VERSION to set gcc_version. - * configure, aclocal.m4, Makefile.in: Regenerate. - -2004-11-15 Kelley Cook - - * Makefile.am: Remove -no-dependencies. - * Makefile.in: Regenerate. - -2004-11-13 Kelley Cook - - * Makefile.am: Define ACLOCAL_AMFLAGS. - * acinclude.m4: Remove unnecessary sinclude. - * aclocal.m4, Makefile.in, configure: Regenerate (autoreconf 1.9.3). - -2004-09-23 Tom Tromey - - * jartool.c (extract_jar): Unconditionally read extra data in the - entry header; don't read it after the file contents. - -2004-08-11 Kelley Cook - - PR bootstrap/16164 - * Makefile.am: Force fastjar.info to be built in build directory. - * Makefile.in: Regenerate. - -2004-07-23 Thomas Fitzsimmons - - * Makefile.am: Rename jar binary to fastjar. - * Makefile.in: Regenerate. - * fastjar.texi: Rename references to jar binary with fastjar. - -2004-07-19 Bryce McKinlay - - * jartool.c (main): Ensure that only one of ftruncate and _chsize - is used. - -2004-07-11 Bryce McKinlay - - PR 16472 - * configure.ac: Check for ftruncate() and _chsize(). - * jartool.c (main): Use _chsize if ftruncate not available. - * configure, config.h.in: Rebuilt. - -2004-07-09 Richard Sandiford - - * jartool.c (find_entry, looks_like_dir): Remove inline spec. - -2004-07-07 Matthias Klose - - * Makefile.am (jar_CPPFLAGS): Add AM_CPPFLAGS. - * Makefile.in: Regenerate. - -2004-07-06 Matthias Klose - - * Makefile.in: Regenerate. - * fastjar.texi: Update for '-u'. - -2004-07-06 Casey Marshall - - PR 7854 - * Makefile.am - (jar_SOURCES): added shift.c, shift.h. - (jar_CPPFLAGS): define WITH_SHIFT_DOWN. - - * compress.c - Added FSF copyright. - (write_data): new function. - (compress_file): call write_data. - - * jartool.c - Updated copyright year. - (progname): new variable. - (end_of_entries): new variable. - (main): open and read file when updating. - (find_entry): new function. - (looks_like_dir): new function. - (read_entries): new function. - (make_manifest): added parameter `updating'. - Call `add_file_to_jar' with `updating'. - (add_to_jar_with_dir): added parameter `updating'. - Call `add_to_jar' with `updating'. - (add_to_jar): added parameter `updating'. - Call `add_file_to_jar' with `updating'. - Don't add directories if they already exist. - (add_file_to_jar): added parameter `updating'. - Update entries if they already exist. - - * jartool.h - Added #ifndef __FASTJAR_JARTOOL_H__. - (struct zipentry): added `flags'. - - * shift.c: new file. - - * shift.h: new file. - - * zipfile.h - (CEN_FLAGS): new constant. - -2004-07-05 Kelley Cook - - * Makefile.am: Silence two automake warnings. - * Makefile.in: Regenerate. - -2004-06-25 Kelley Cook - - PR other/15194 - * configure.ac: Add check for long long. - * jartool.h: Check for long long before using it. - * configure: Regenerate - * config.h.in: Regenerate. - -2004-06-15 Paolo Bonzini - - * acinclude.m4: Quote first argument of AC_DEFUNs. - * aclocal.m4: Regenerate with automake 1.8. - * Makefile.in: Likewise. - * configure: Regenerate. - * .cvsignore: New file. - -2004-04-12 Kelley Cook - - PR bootstrap/14905 - * configure.ac: Parse --enable-generated-files-in-srcdir. - * Makefile.am: Copy man and info files to srcdir if requested. - * configure: Regenerate. - * Makefile.in Regenerate. - -2004-03-10 Kelley Cook - - * configure.ac: Bump AC_PREREQ to 2.59. - * configure: Regenerate. - -2004-03-09 Hans-Peter Nilsson - - * configure: Regenerate for config/accross.m4 correction. - -2004-01-09 Kelley Cook - - * configure.in: Rename file to ... - * configure.ac: ... this. Add in AC_PREREQ(2.57) - * config.h.in: Regenerate. - * aclocal.m4: Regenerate. - * Makefile.in: Regenerate. - -2004-01-07 Andreas Tobler - - * jartool.c (make_manifest): Fix off-by-one bug when creating - an empty MANIFEST.MF. - -2003-12-01 Kelley Cook - - * Makefile.am: Define AM_MAKINFOFLAGS. Remove Automake 1.4 hack. - * Makefile.in: Regenerate with automake 1.7.6 & autoconf 2.57 tools. - * aclocal.m4, config.h.in, configure: Likewise. - * install-sh, missing, mkinstalldirs, stamp-h.in: Remove. - -2003-11-21 Kelley Cook - - * .cvsignore: Delete. - -2003-10-30 Kelley Cook - - * Makefile.am (my_make_i_flags): Add $(srcdir) and update comment - to match. - (fastjar.info): Update target to write to build directory. - (%.1): New implicit rule from a .pod file. - (jar.1): Delete. - (grepjar.1): Delete. - (jar.pod): New intermediate rule. - (grepjar.pod): Likewise. - * Makefile.in: Regenerate. - -2003-08-13 Matthias Klose - - * fastjar.texi: License manual under the GPL. - * Makefile.am: Remove reference to fdl.texi - * Makefile.in: Regenerate - -2003-07-29 Nathanael Nerode - - * mkinstalldirs: Import autoconf 2.57 / automake 1.7 version. - -2003-07-11 Gerald Pfeifer - - * README: Note that FastJar is not part of GCC. - -2003-07-02 Nathanael Nerode - - PR java/9532 - * jartool.c (add_to_jar): Return 1 on failure to open file. - Split out -C case to: - * jartool.c (add_to_jar_with_dir): New function. - -2003-06-15 Nathanael Nerode - - PR java/9532 - * jartool.c (main) Give proper error messages with -C, and - check for missing arguments properly. Send error messages - to stderr. - * jartool.c (add_to_jar): Make getcwd() call portable, - and check for error return. - -2003-03-30 Joseph S. Myers - - * fastjar.texi: Remove @ at start of file. - -2003-03-10 Mohan Embar - - * dostime.c: add #include for definition of NULL - -2003-02-04 Joseph S. Myers - - * fastjar.texi: Update to GFDL 1.2. - -2003-01-31 Daiki Ueno - - * jartool.c (extract_jar): Don't lseek to skip extra fields. - (consume): If the stream is seekable, do lseek. - -2003-01-28 Ranjit Mathew - - * jargrep.c: Include xregex.h from libiberty instead of - system regex.h for better portability. - -2003-01-21 Ranjit Mathew - - * jartool.c (list_jar): Terminate the 'ascii_date' buffer - with a '\0' to guard against the case where the formatted - time string is more than the size allowed by the buffer. - -2003-01-14 Tom Tromey - - * config.h.in: Rebuilt. - -2002-12-30 DJ Delorie - - * Makefile.am (jar.1, grepjar.1): Protect against - texi2pod/pod2man failing. - * Makefile.in: Regenerated. - -2002-12-23 Joseph S. Myers - - * fastjar.texi: Include Cover Texts in man page. - -2002-12-04 Jakub Jelinek - - * fastjar.texi (jar @direntry, grepjar @direntry): Add (fastjar). - -2002-11-23 H.J. Lu - - * acinclude.m4: Include ../config/accross.m4. - (gcc_AC_COMPILE_CHECK_SIZEOF): Removed. - (gcc_AC_EXAMINE_OBJECT): Removed. - (gcc_AC_C_COMPILE_ENDIAN): Removed. - * aclocal.m4; Rebuild. - - * configure.in: Replace AC_C_BIGENDIAN with AC_C_BIGENDIAN_CROSS. - Replace AC_CHECK_SIZEOF with AC_COMPILE_CHECK_SIZEOF. - * configure: Likewise. - -2002-11-21 Ranjit Mathew - - * jartool.c (extract_jar): Use "open" with O_BINARY instead of - "creat" to create extracted files. - -2002-11-11 Tom Tromey - - * dostime.c (dos2unixtime): Mask for seconds is 0x1f. Correctly - compute month. - (unix2dostime): Handle years before 1980. Correctly compute month - and day of month. - -2002-11-10 Jakub Jelinek - - * jartool.c (add_to_jar): Only compare file to jarfile if jarfile is - non-NULL. - - * configure.in (AC_CHECK_HEADERS): Add limits.h. - * configure, config.h.in: Rebuilt. - -2002-11-07 Tom Tromey - - * dostime.c: Rewrote from scratch. - * dostime.h (dostime): Removed. - -2002-10-20 Tom Tromey - - * jartool.c: Use mode 0666 when opening new file. - -2002-09-16 Volker Reichelt - - * jargrep.c (chk_wrd): Remove unused variable(s). - * jartool.c (main, create_central_header, list_jar): Likewise. - -2002-10-15 Ranjit Mathew - - * configure, config.h.in: Rebuilt. - * configure.in: Call gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG. - -2002-09-11 Tom Tromey - - * Makefile.in: Rebuilt. - * Makefile.am (TEXINFO_TEX): New macro. - (info_TEXINFOS): Likewise. - (fastjar_TEXINFOS): Likewise. - (man_MANS): Likewise. - (EXTRA_DIST): Likewise. - (my_makei_flags): Likewise. - (fastjar.info): New rule. - (fastjar_TEXINFOS): Don't mention `$(srcdir)'. - (TEXINFO_TEX): Likewise. - (AUTOMAKE_OPTIONS): Added `cygnus'. - -2002-09-11 Matthias Klose - - * Makefile.am: Revert the previous patch. - * Makefile.in: Regenerated. - -2002-09-10 Matthias Klose - - * fastjar.texi: New. - * Makefile.am: Support building info docs and manpages. - * Makefile.in: Regenerated. - * configure.in: Set gcc_version. - * configure: Regenerated. - * jargrep.c: Update usage and help strings. - -2002-09-09 Tom Tromey - - * jartool.c (mkdir): Define. - * config.h.in: Rebuilt. - * aclocal.m4, configure: Rebuilt. - * acinclude.m4: New file. Copied gcc_AC_COMPILE_CHECK_SIZEOF, - gcc_AC_EXAMINE_OBJECT, and fastjar_AC_COMPILE_C_BIGENDIAN from - aclocal.m4. - -2002-09-04 Tom Tromey - - From greenrd@hotmail.com: - * jartool.c (list_jar): Correctly determine when new `filename' - buffer must be allocated. Fixes PR java/7830. - -2002-06-03 Geoffrey Keating - - * configure.in: Support cross-compiling. - * configure: Regenerate. - * aclocal.m4 (gcc_AC_COMPILE_CHECK_SIZEOF): New. - (gcc_AC_EXAMINE_OBJECT): New. - (fastjar_AC_COMPILE_C_BIGENDIAN): New. - -2002-03-18 Bryce McKinlay - - * jartool.c (expand_options): Handle tar-style argument list with a - leading "-". - -2002-02-23 Anthony Green - - * jartool.c (main): Fix handling of -C. - -2002-01-30 Tom Tromey - - * jartool.c (main): NULL-terminate new_argv. Pass 0 as argument - to init_args. - -2002-01-11 Tom Tromey - - * Makefile.in: Rebuilt. - * Makefile.am (AUTOMAKE_OPTIONS): New macro. - -2002-01-09 Tom Tromey - - For PR libgcj/5303: - * jargrep.h: Removed RCS keywords. - (GVERSION): Removed. - * configure, Makefile.in, config.h.in: Rebuilt. - * configure.in: Added AM_MAINTAINER_MODE. - Don't look for getopt.h. Use `fastjar' as package name. - * Makefile.am (INCLUDES): Look in ../include. - (LIBIBERTY): New macro. - (jar_LDADD): Use it. - (jar_DEPENDENCIES): Likewise. - (grepjar_LDADD): Likewise. - (grepjar_DEPENDENCIES): Likewise. - * jargrep.c: Removed RCS keywords. Always include getopt.h. - (LONG_OPT): New macro. - (OPT_HELP): Likewise. - (main): Use getopt_long. Let getopt print invalid argument - message. Handle --help. Use version(). - (version): New function. - (optarg, optind): Don't declare. - (option_vec): New global. - (help): New function. - (Usage): Updated to GNU standards. - * jartool.c: Removed RCS keywords. Include getopt.h. - (LONG_OPT): New macro. - (OPT_HELP): Likewise. - (options): New global. - (help): New function. - (usage): Print a single line. - (version): New function. - (expand_options): New function. - (main): Use getopt_long and expand_options. Fail if `-u' - specified. Changed handling of -f, -m, -V options. - (OPTION_STRING): New macro. - (version_string): Removed. - -2001-01-02 Craig Rodrigues - - PR bootstrap/5117 - * configure.in (AC_CHECK_HEADERS): Check for stdlib.h. - * Makefile.am: Move grepjar to bin_PROGRAMS. - * config.h.in: Regenerated. - * Makefile.in: Regenerated. - * aclocal.m4: Regenerated. - * stamp-h.in: Regenerated. - * jargrep.c: Eliminate some signed/unsigned and default - uninitialized warnings. Use HAVE_STDLIB_H instead of - STDC_HEADERS macro. - * jartool.c: Likewise. - * compress.c: Likewise. - -2001-09-17 Tom Tromey - - For PR java/4295: - * aclocal.m4, configure, Makefile.in: Rebuilt. - * configure.in: Added AC_EXEEXT. - -2001-10-12 Bryce McKinlay - - * jatool.c (extract_jar): Account for null termination when determining - whether to expand "filename". - -2001-08-28 Alexandre Petit-Bianco - - * jartool.c (add_to_jar): Return 1 if `stat' initialy failed. - Fixes PR java/3949. - -2001-08-27 Tom Tromey - - * jartool.c (jarfile): Remove length limitation. - (main): Use jt_strdup when initializing jarfile. - -2001-07-04 Tom Tromey - - Modified from patch by Julian Hall : - * jartool.c (errno): Conditionally declare. - (O_BINARY): Conditionally define. - (main): Use open, not creat. Use O_BINARY everywhere. - (make_manifest): Use O_BINARY. - (add_to_jar): Likewise. - -2001-06-28 Tom Tromey - - * configure: Rebuilt. - * configure.in: Accept --with-system-zlib. Fixes PR java/3441. - -2001-05-15 Per Bothner - - * Makefile.am (bin_PROGRAMS): Renamed from "fastjar" to "jar". - -2001-05-03 John David Anglin - - * jartool.c (jt_strdup): New function. - (get_next_arg): Use jt_strdup instead of strdup. - -2001-01-21 Tom Tromey - - * Makefile.in: Rebuilt. - * Makefile.am (bin_PROGRAMS): Remove grepjar. - (EXTRA_PROGRAMS): New macro. - -2000-12-28 Robert Lipe - - * jartool.c (MAXPATHLEN): Provide if not defined. - -2000-12-15 Tom Tromey - Kelley Cook - - * jargrep.c: Include getopt.h if it exists. - (optind): Declare. - * configure, config.h: Rebuilt. - * configure.in: Check for getopt.h. - -2000-12-14 Kaveh R. Ghazi - - * configure.in (fastjar_warn_cflags): Set when using gcc. - - * Makefile.am (AM_CFLAGS): Set to @fastjar_warn_cflags@. - -2000-12-14 Kaveh R. Ghazi - - * compress.c: Include stdlib.h and compress.h. - (rcsid): Delete. - (report_str_error): Make static. - (ez_inflate_str): Delete unused variable. Add parens in if-stmt. - (hrd_inflate_str): Likewise. - - * compress.h (init_compression, end_compression, init_inflation, - end_inflation): Prototype void arguments. - - * dostime.c (rcsid): Delete. - - * jargrep.c: Include ctype.h, stdlib.h, zlib.h and compress.h. - Make functions static. Cast ctype function argument to `unsigned - char'. Add parens in if-stmts. Constify. - (Usage): Change into a macro. - (jargrep): Remove unused parameter. - - * jartool.c: Constify. Add parens in if-stmts. Align - signed/unsigned char pointers in functions calls using casts. - (rcsid): Delete. - (list_jar): Fix printf format specifier. - (usage): Chop long string into bits. Reformat. - - * pushback.c (rcsid): Delete. - -2000-12-13 Tom Tromey - - * jartool.c (extract_jar): Use strchr, not index. - -2000-12-11 Alexandre Petit-Bianco - - * install-defs.sh: Removed. - -2000-12-10 Robert Lipe - - * jargrep.c (jargrep): Added null statement after case. - -2000-12-10 Alexandre Petit-Bianco - - * Makefile: Removed. - * Makefile.in: Rebuilt with `-i' and `--enable-foreign'. - -Tue Nov 16 15:11:36 2000 Alexandre Petit-Bianco - - * Makefile.am: New file. - * Makefile.in: Rebuilt. - * aclocal.m4: Likewise. - * stamp-h.in: Likewise. - * config.h.in: Likewise. - * configure.in (AM_INIT_AUTOMAKE): Added. - (AM_CONFIG_HEADER): Likewise. - (AC_CHECK_HEADERS): Check for sys/param.h - (AC_CHECK_LIB): Don't check for system's zlib. - (AC_CHECK_FUNC): Removed system's zlib function checks. - (ZDEPS. ZLIBS, ZINCS): Added. - * configure: Rebuilt. - * jartool.c (sys/param.h): Conditionally included or define MAXPATHLEN. - (init_args, get_next_arg): New function. - (use_explicit_list_only, read_names_from_stdin): New global - (main): Parse new non standard options 'E' and '@', check and - report their usage if necessary. Use init_args and get_next_arg. - Fixed indentation. - (add_to_jar): Don't read directory content if `use_explicit_list_only'. - (usage): Added `-E' and `-@'. - * jartool.h (VERSION): Macro removed. - -Tue Nov 14 15:10:44 2000 Alexandre Petit-Bianco - - * fastjar imported from sourceforge.net/projects/fastjar with - Bryan Burns' permission. Check `CHANGES' for post import changes. - * ChangeLog: Created. - * NEWS: Likewise. - * mkinstalldirs: Likewise. - * COPYING: Likewise. - * AUTHORS: Likewise. diff --git a/fastjar/INSTALL b/fastjar/INSTALL deleted file mode 100644 index cdc770fb741..00000000000 --- a/fastjar/INSTALL +++ /dev/null @@ -1,18 +0,0 @@ ----------------------- -How to install fastjar ----------------------- - - -1. Run the 'configure' script to generate config.h and Makefile. You can - use 'configure --help' to get a list of command-line options. - -2. If you're feeling experimental, you can change some settings in jartool.h - to optimize fastjar for your particular system. - -3. Type 'make' to create the fastjar binary. - -4. Type 'make install' to install fastjar in whichever directory you supplied - to configure (or the default directory if you didn't specify one.) - - - diff --git a/fastjar/Makefile.am b/fastjar/Makefile.am deleted file mode 100644 index 099656a34e2..00000000000 --- a/fastjar/Makefile.am +++ /dev/null @@ -1,121 +0,0 @@ -# Process this with automake to create Makefile.in - -# Work around what appears to be a GNU make bug handling MAKEFLAGS -# values defined in terms of make variables, as is the case for CC and -# friends when we are called from the top level Makefile. -AM_MAKEFLAGS = \ - "AR_FLAGS=$(AR_FLAGS)" \ - "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ - "CFLAGS=$(CFLAGS)" \ - "CXXFLAGS=$(CXXFLAGS)" \ - "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ - "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ - "JC1FLAGS=$(JC1FLAGS)" \ - "LDFLAGS=$(LDFLAGS)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ - "MAKE=$(MAKE)" \ - "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ - "PICFLAG=$(PICFLAG)" \ - "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ - "SHELL=$(SHELL)" \ - "exec_prefix=$(exec_prefix)" \ - "infodir=$(infodir)" \ - "libdir=$(libdir)" \ - "prefix=$(prefix)" \ - "AR=$(AR)" \ - "AS=$(AS)" \ - "CC=$(CC)" \ - "CXX=$(CXX)" \ - "LD=$(LD)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "NM=$(NM)" \ - "PICFLAG=$(PICFLAG)" \ - "RANLIB=$(RANLIB)" \ - "DESTDIR=$(DESTDIR)" - -AM_CPPFLAGS = -I. -I$(top_srcdir) $(ZINCS) -I$(top_srcdir)/../include - -LIBIBERTY = ../libiberty/libiberty.a - -bin_PROGRAMS = fastjar grepjar -fastjar_SOURCES = jartool.c dostime.c compress.c pushback.c shift.c jartool.h \ -zipfile.h dostime.h compress.h pushback.h shift.h -fastjar_LDADD = $(ZLIBS) $(LIBIBERTY) -fastjar_DEPENDENCIES = $(ZDEPS) $(LIBIBERTY) -fastjar_CPPFLAGS = $(AM_CPPFLAGS) -DWITH_SHIFT_DOWN - -grepjar_SOURCES = jargrep.c dostime.c compress.c pushback.c jartool.h \ -zipfile.h dostime.h compress.h pushback.h -grepjar_LDADD = $(ZLIBS) $(LIBIBERTY) -grepjar_DEPENDENCIES = $(ZDEPS) $(LIBIBERTY) - -AM_CFLAGS = @fastjar_warn_cflags@ -AM_MAKEINFOFLAGS = -I $(srcdir)/../gcc/doc/include - -TEXINFO_TEX = ../gcc/doc/include/texinfo.tex -info_TEXINFOS = fastjar.texi -fastjar_TEXINFOS = \ - ../gcc/doc/include/gcc-common.texi \ - ../gcc/doc/include/gpl.texi \ - gcc-vers.texi -man_MANS = fastjar.1 grepjar.1 -EXTRA_DIST = $(man_MANS) - -BASEVER = $(srcdir)/../gcc/BASE-VER -DEVPHASE = $(srcdir)/../gcc/DEV-PHASE - -TEXI2POD = perl $(srcdir)/../contrib/texi2pod.pl -POD2MAN = pod2man --center="GNU" --release="gcc-$(shell cat $(BASEVER))" - -.pod.1: - -($(POD2MAN) --section=1 $< > $(@).T$$$$ && \ - mv -f $(@).T$$$$ $@) || \ - (rm -f $(@).T$$$$ && exit 1) - -.INTERMEDIATE: fastjar.pod grepjar.pod - -fastjar.pod: $(srcdir)/fastjar.texi - -$(TEXI2POD) -D fastjar $< > $@ - -grepjar.pod: $(srcdir)/fastjar.texi - -$(TEXI2POD) -D grepjar $< > $@ - -fastjar.1 grepjar.1: $(BASEVER) - -# gcc-vers.texi is generated from the version files. -gcc-vers.texi: $(BASEVER) $(DEVPHASE) - (echo "@set version-GCC $(shell cat $(BASEVER))"; \ - if [ "$(shell cat $(DEVPHASE))" = "experimental" ]; \ - then echo "@set DEVELOPMENT"; \ - else echo "@clear DEVELOPMENT"; \ - fi) > $@T - mv -f $@T $@ - -# GCC LOCAL CHANGE -# The following commands allow us to release tarballs with the man pages -# and info documentation prebuilt. This feature is enabled via -# --enable-generated-files-in-srcdir in the configure script. - -if GENINSRC -STAMP_GENINSRC = stamp-geninsrc -else -STAMP_GENINSRC = -endif - -all-local: $(STAMP_GENINSRC) - -stamp-geninsrc: fastjar.1 grepjar.1 fastjar.info - -cp -p $(top_builddir)/fastjar.1 $(srcdir)/fastjar.1 - -cp -p $(top_builddir)/grepjar.1 $(srcdir)/grepjar.1 - -cp -p $(top_builddir)/fastjar.info $(srcdir)/fastjar.info - touch $@ - -CLEANFILES = stamp-geninsrc fastjar.info -MAINTAINERCLEANFILES = $(srcdir)/fastjar.1 \ - $(srcdir)/grepjar.1 \ - $(srcdir)/fastjar.info diff --git a/fastjar/Makefile.in b/fastjar/Makefile.in deleted file mode 100644 index 24bd78898b3..00000000000 --- a/fastjar/Makefile.in +++ /dev/null @@ -1,945 +0,0 @@ -# Makefile.in generated by automake 1.9.3 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Process this with automake to create Makefile.in - -SOURCES = $(fastjar_SOURCES) $(grepjar_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = . -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -bin_PROGRAMS = fastjar$(EXEEXT) grepjar$(EXEEXT) -subdir = . -DIST_COMMON = README $(am__configure_deps) $(fastjar_TEXINFOS) \ - $(srcdir)/../compile $(srcdir)/../depcomp \ - $(srcdir)/../install-sh $(srcdir)/../missing \ - $(srcdir)/../mkinstalldirs $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(srcdir)/config.h.in \ - $(srcdir)/install-defs.sh.in $(top_srcdir)/configure AUTHORS \ - COPYING ChangeLog INSTALL NEWS -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno configure.status.lineno -mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = install-defs.sh -am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" \ - "$(DESTDIR)$(man1dir)" -binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -PROGRAMS = $(bin_PROGRAMS) -am_fastjar_OBJECTS = fastjar-jartool.$(OBJEXT) \ - fastjar-dostime.$(OBJEXT) fastjar-compress.$(OBJEXT) \ - fastjar-pushback.$(OBJEXT) fastjar-shift.$(OBJEXT) -fastjar_OBJECTS = $(am_fastjar_OBJECTS) -am__DEPENDENCIES_1 = -am__DEPENDENCIES_2 = ../libiberty/libiberty.a -am_grepjar_OBJECTS = jargrep.$(OBJEXT) dostime.$(OBJEXT) \ - compress.$(OBJEXT) pushback.$(OBJEXT) -grepjar_OBJECTS = $(am_grepjar_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I. -depcomp = $(SHELL) $(top_srcdir)/../depcomp -am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(fastjar_SOURCES) $(grepjar_SOURCES) -DIST_SOURCES = $(fastjar_SOURCES) $(grepjar_SOURCES) -INFO_DEPS = fastjar.info -am__TEXINFO_TEX_DIR = $(srcdir)/../gcc/doc/include -DVIS = fastjar.dvi -PDFS = fastjar.pdf -PSS = fastjar.ps -HTMLS = fastjar.html -TEXINFOS = fastjar.texi -TEXI2DVI = texi2dvi -TEXI2PDF = $(TEXI2DVI) --pdf --batch -MAKEINFOHTML = $(MAKEINFO) --html -AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) -DVIPS = dvips -man1dir = $(mandir)/man1 -NROFF = nroff -MANS = $(man_MANS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - { test ! -d $(distdir) \ - || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr $(distdir); }; } -DIST_ARCHIVES = $(distdir).tar.gz -GZIP_ENV = --best -distuninstallcheck_listfiles = find . -type f -print -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CHMOD = @CHMOD@ -CP = @CP@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -GENINSRC_FALSE = @GENINSRC_FALSE@ -GENINSRC_TRUE = @GENINSRC_TRUE@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ -MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ -MAKEINFO = @MAKEINFO@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RM = @RM@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -ZDEPS = @ZDEPS@ -ZINCS = @ZINCS@ -ZLIBS = @ZLIBS@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build_alias = @build_alias@ -datadir = @datadir@ -exec_prefix = @exec_prefix@ -fastjar_warn_cflags = @fastjar_warn_cflags@ -host_alias = @host_alias@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ - -# Work around what appears to be a GNU make bug handling MAKEFLAGS -# values defined in terms of make variables, as is the case for CC and -# friends when we are called from the top level Makefile. -AM_MAKEFLAGS = \ - "AR_FLAGS=$(AR_FLAGS)" \ - "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ - "CFLAGS=$(CFLAGS)" \ - "CXXFLAGS=$(CXXFLAGS)" \ - "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ - "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ - "JC1FLAGS=$(JC1FLAGS)" \ - "LDFLAGS=$(LDFLAGS)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ - "MAKE=$(MAKE)" \ - "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ - "PICFLAG=$(PICFLAG)" \ - "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ - "SHELL=$(SHELL)" \ - "exec_prefix=$(exec_prefix)" \ - "infodir=$(infodir)" \ - "libdir=$(libdir)" \ - "prefix=$(prefix)" \ - "AR=$(AR)" \ - "AS=$(AS)" \ - "CC=$(CC)" \ - "CXX=$(CXX)" \ - "LD=$(LD)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "NM=$(NM)" \ - "PICFLAG=$(PICFLAG)" \ - "RANLIB=$(RANLIB)" \ - "DESTDIR=$(DESTDIR)" - -AM_CPPFLAGS = -I. -I$(top_srcdir) $(ZINCS) -I$(top_srcdir)/../include -LIBIBERTY = ../libiberty/libiberty.a -fastjar_SOURCES = jartool.c dostime.c compress.c pushback.c shift.c jartool.h \ -zipfile.h dostime.h compress.h pushback.h shift.h - -fastjar_LDADD = $(ZLIBS) $(LIBIBERTY) -fastjar_DEPENDENCIES = $(ZDEPS) $(LIBIBERTY) -fastjar_CPPFLAGS = $(AM_CPPFLAGS) -DWITH_SHIFT_DOWN -grepjar_SOURCES = jargrep.c dostime.c compress.c pushback.c jartool.h \ -zipfile.h dostime.h compress.h pushback.h - -grepjar_LDADD = $(ZLIBS) $(LIBIBERTY) -grepjar_DEPENDENCIES = $(ZDEPS) $(LIBIBERTY) -AM_CFLAGS = @fastjar_warn_cflags@ -AM_MAKEINFOFLAGS = -I $(srcdir)/../gcc/doc/include -TEXINFO_TEX = ../gcc/doc/include/texinfo.tex -info_TEXINFOS = fastjar.texi -fastjar_TEXINFOS = \ - ../gcc/doc/include/gcc-common.texi \ - ../gcc/doc/include/gpl.texi \ - gcc-vers.texi - -man_MANS = fastjar.1 grepjar.1 -EXTRA_DIST = $(man_MANS) -BASEVER = $(srcdir)/../gcc/BASE-VER -DEVPHASE = $(srcdir)/../gcc/DEV-PHASE -TEXI2POD = perl $(srcdir)/../contrib/texi2pod.pl -POD2MAN = pod2man --center="GNU" --release="gcc-$(shell cat $(BASEVER))" -@GENINSRC_FALSE@STAMP_GENINSRC = - -# GCC LOCAL CHANGE -# The following commands allow us to release tarballs with the man pages -# and info documentation prebuilt. This feature is enabled via -# --enable-generated-files-in-srcdir in the configure script. -@GENINSRC_TRUE@STAMP_GENINSRC = stamp-geninsrc -CLEANFILES = stamp-geninsrc fastjar.info -MAINTAINERCLEANFILES = $(srcdir)/fastjar.1 \ - $(srcdir)/grepjar.1 \ - $(srcdir)/fastjar.info - -all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-am - -.SUFFIXES: -.SUFFIXES: .1 .c .dvi .o .obj .pod .ps -am--refresh: - @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ - cd $(srcdir) && $(AUTOMAKE) --gnu \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) - -config.h: stamp-h1 - @if test ! -f $@; then \ - rm -f stamp-h1; \ - $(MAKE) stamp-h1; \ - else :; fi - -stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h -$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_srcdir) && $(AUTOHEADER) - rm -f stamp-h1 - touch $@ - -distclean-hdr: - -rm -f config.h stamp-h1 -install-defs.sh: $(top_builddir)/config.status $(srcdir)/install-defs.sh.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - if test -f $$p \ - ; then \ - f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ - $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ - else :; fi; \ - done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ - rm -f "$(DESTDIR)$(bindir)/$$f"; \ - done - -clean-binPROGRAMS: - -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) -fastjar$(EXEEXT): $(fastjar_OBJECTS) $(fastjar_DEPENDENCIES) - @rm -f fastjar$(EXEEXT) - $(LINK) $(fastjar_LDFLAGS) $(fastjar_OBJECTS) $(fastjar_LDADD) $(LIBS) -grepjar$(EXEEXT): $(grepjar_OBJECTS) $(grepjar_DEPENDENCIES) - @rm -f grepjar$(EXEEXT) - $(LINK) $(grepjar_LDFLAGS) $(grepjar_OBJECTS) $(grepjar_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/compress.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dostime.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fastjar-compress.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fastjar-dostime.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fastjar-jartool.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fastjar-pushback.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fastjar-shift.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jargrep.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pushback.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -fastjar-jartool.o: jartool.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastjar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fastjar-jartool.o -MD -MP -MF "$(DEPDIR)/fastjar-jartool.Tpo" -c -o fastjar-jartool.o `test -f 'jartool.c' || echo '$(srcdir)/'`jartool.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fastjar-jartool.Tpo" "$(DEPDIR)/fastjar-jartool.Po"; else rm -f "$(DEPDIR)/fastjar-jartool.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='jartool.c' object='fastjar-jartool.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastjar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fastjar-jartool.o `test -f 'jartool.c' || echo '$(srcdir)/'`jartool.c - -fastjar-jartool.obj: jartool.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastjar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fastjar-jartool.obj -MD -MP -MF "$(DEPDIR)/fastjar-jartool.Tpo" -c -o fastjar-jartool.obj `if test -f 'jartool.c'; then $(CYGPATH_W) 'jartool.c'; else $(CYGPATH_W) '$(srcdir)/jartool.c'; fi`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fastjar-jartool.Tpo" "$(DEPDIR)/fastjar-jartool.Po"; else rm -f "$(DEPDIR)/fastjar-jartool.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='jartool.c' object='fastjar-jartool.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastjar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fastjar-jartool.obj `if test -f 'jartool.c'; then $(CYGPATH_W) 'jartool.c'; else $(CYGPATH_W) '$(srcdir)/jartool.c'; fi` - -fastjar-dostime.o: dostime.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastjar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fastjar-dostime.o -MD -MP -MF "$(DEPDIR)/fastjar-dostime.Tpo" -c -o fastjar-dostime.o `test -f 'dostime.c' || echo '$(srcdir)/'`dostime.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fastjar-dostime.Tpo" "$(DEPDIR)/fastjar-dostime.Po"; else rm -f "$(DEPDIR)/fastjar-dostime.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dostime.c' object='fastjar-dostime.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastjar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fastjar-dostime.o `test -f 'dostime.c' || echo '$(srcdir)/'`dostime.c - -fastjar-dostime.obj: dostime.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastjar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fastjar-dostime.obj -MD -MP -MF "$(DEPDIR)/fastjar-dostime.Tpo" -c -o fastjar-dostime.obj `if test -f 'dostime.c'; then $(CYGPATH_W) 'dostime.c'; else $(CYGPATH_W) '$(srcdir)/dostime.c'; fi`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fastjar-dostime.Tpo" "$(DEPDIR)/fastjar-dostime.Po"; else rm -f "$(DEPDIR)/fastjar-dostime.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dostime.c' object='fastjar-dostime.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastjar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fastjar-dostime.obj `if test -f 'dostime.c'; then $(CYGPATH_W) 'dostime.c'; else $(CYGPATH_W) '$(srcdir)/dostime.c'; fi` - -fastjar-compress.o: compress.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastjar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fastjar-compress.o -MD -MP -MF "$(DEPDIR)/fastjar-compress.Tpo" -c -o fastjar-compress.o `test -f 'compress.c' || echo '$(srcdir)/'`compress.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fastjar-compress.Tpo" "$(DEPDIR)/fastjar-compress.Po"; else rm -f "$(DEPDIR)/fastjar-compress.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='compress.c' object='fastjar-compress.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastjar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fastjar-compress.o `test -f 'compress.c' || echo '$(srcdir)/'`compress.c - -fastjar-compress.obj: compress.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastjar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fastjar-compress.obj -MD -MP -MF "$(DEPDIR)/fastjar-compress.Tpo" -c -o fastjar-compress.obj `if test -f 'compress.c'; then $(CYGPATH_W) 'compress.c'; else $(CYGPATH_W) '$(srcdir)/compress.c'; fi`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fastjar-compress.Tpo" "$(DEPDIR)/fastjar-compress.Po"; else rm -f "$(DEPDIR)/fastjar-compress.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='compress.c' object='fastjar-compress.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastjar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fastjar-compress.obj `if test -f 'compress.c'; then $(CYGPATH_W) 'compress.c'; else $(CYGPATH_W) '$(srcdir)/compress.c'; fi` - -fastjar-pushback.o: pushback.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastjar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fastjar-pushback.o -MD -MP -MF "$(DEPDIR)/fastjar-pushback.Tpo" -c -o fastjar-pushback.o `test -f 'pushback.c' || echo '$(srcdir)/'`pushback.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fastjar-pushback.Tpo" "$(DEPDIR)/fastjar-pushback.Po"; else rm -f "$(DEPDIR)/fastjar-pushback.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pushback.c' object='fastjar-pushback.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastjar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fastjar-pushback.o `test -f 'pushback.c' || echo '$(srcdir)/'`pushback.c - -fastjar-pushback.obj: pushback.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastjar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fastjar-pushback.obj -MD -MP -MF "$(DEPDIR)/fastjar-pushback.Tpo" -c -o fastjar-pushback.obj `if test -f 'pushback.c'; then $(CYGPATH_W) 'pushback.c'; else $(CYGPATH_W) '$(srcdir)/pushback.c'; fi`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fastjar-pushback.Tpo" "$(DEPDIR)/fastjar-pushback.Po"; else rm -f "$(DEPDIR)/fastjar-pushback.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pushback.c' object='fastjar-pushback.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastjar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fastjar-pushback.obj `if test -f 'pushback.c'; then $(CYGPATH_W) 'pushback.c'; else $(CYGPATH_W) '$(srcdir)/pushback.c'; fi` - -fastjar-shift.o: shift.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastjar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fastjar-shift.o -MD -MP -MF "$(DEPDIR)/fastjar-shift.Tpo" -c -o fastjar-shift.o `test -f 'shift.c' || echo '$(srcdir)/'`shift.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fastjar-shift.Tpo" "$(DEPDIR)/fastjar-shift.Po"; else rm -f "$(DEPDIR)/fastjar-shift.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='shift.c' object='fastjar-shift.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastjar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fastjar-shift.o `test -f 'shift.c' || echo '$(srcdir)/'`shift.c - -fastjar-shift.obj: shift.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastjar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fastjar-shift.obj -MD -MP -MF "$(DEPDIR)/fastjar-shift.Tpo" -c -o fastjar-shift.obj `if test -f 'shift.c'; then $(CYGPATH_W) 'shift.c'; else $(CYGPATH_W) '$(srcdir)/shift.c'; fi`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fastjar-shift.Tpo" "$(DEPDIR)/fastjar-shift.Po"; else rm -f "$(DEPDIR)/fastjar-shift.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='shift.c' object='fastjar-shift.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fastjar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fastjar-shift.obj `if test -f 'shift.c'; then $(CYGPATH_W) 'shift.c'; else $(CYGPATH_W) '$(srcdir)/shift.c'; fi` - -fastjar.info: fastjar.texi $(fastjar_TEXINFOS) - restore=: && backupdir="$(am__leading_dot)am$$$$" && \ - rm -rf $$backupdir && mkdir $$backupdir && \ - for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ - if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ - done; \ - if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ - -o $@ `test -f 'fastjar.texi' || echo '$(srcdir)/'`fastjar.texi; \ - then \ - rc=0; \ - else \ - rc=$$?; \ - $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ - fi; \ - rm -rf $$backupdir; exit $$rc - -fastjar.dvi: fastjar.texi $(fastjar_TEXINFOS) - TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ - MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ - $(TEXI2DVI) -o $@ `test -f 'fastjar.texi' || echo '$(srcdir)/'`fastjar.texi - -fastjar.pdf: fastjar.texi $(fastjar_TEXINFOS) - TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ - MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ - $(TEXI2PDF) -o $@ `test -f 'fastjar.texi' || echo '$(srcdir)/'`fastjar.texi - -fastjar.html: fastjar.texi $(fastjar_TEXINFOS) - rm -rf $(@:.html=.htp) - if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ - -o $(@:.html=.htp) `test -f 'fastjar.texi' || echo '$(srcdir)/'`fastjar.texi; \ - then \ - rm -rf $@; \ - if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ - mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \ - else \ - if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ - rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \ - exit 1; \ - fi -.dvi.ps: - $(DVIPS) -o $@ $< - -uninstall-info-am: - $(PRE_UNINSTALL) - @if (install-info --version && \ - install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ - list='$(INFO_DEPS)'; \ - for file in $$list; do \ - relfile=`echo "$$file" | sed 's|^.*/||'`; \ - echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ - install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ - done; \ - else :; fi - @$(NORMAL_UNINSTALL) - @list='$(INFO_DEPS)'; \ - for file in $$list; do \ - relfile=`echo "$$file" | sed 's|^.*/||'`; \ - relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ - (if cd "$(DESTDIR)$(infodir)"; then \ - echo " rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9])"; \ - rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ - else :; fi); \ - done - -dist-info: $(INFO_DEPS) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - list='$(INFO_DEPS)'; \ - for base in $$list; do \ - case $$base in \ - $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ - esac; \ - if test -f $$base; then d=.; else d=$(srcdir); fi; \ - for file in $$d/$$base*; do \ - relfile=`expr "$$file" : "$$d/\(.*\)"`; \ - test -f $(distdir)/$$relfile || \ - cp -p $$file $(distdir)/$$relfile; \ - done; \ - done - -mostlyclean-aminfo: - -rm -rf fastjar.aux fastjar.cp fastjar.cps fastjar.fn fastjar.fns fastjar.ky \ - fastjar.kys fastjar.log fastjar.pg fastjar.pgs fastjar.tmp \ - fastjar.toc fastjar.tp fastjar.tps fastjar.vr fastjar.vrs \ - fastjar.dvi fastjar.pdf fastjar.ps fastjar.html - -maintainer-clean-aminfo: - @list='$(INFO_DEPS)'; for i in $$list; do \ - i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ - echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ - rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ - done -install-man1: $(man1_MANS) $(man_MANS) - @$(NORMAL_INSTALL) - test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)" - @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.1*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ - else file=$$i; fi; \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - case "$$ext" in \ - 1*) ;; \ - *) ext='1' ;; \ - esac; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \ - done -uninstall-man1: - @$(NORMAL_UNINSTALL) - @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.1*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - case "$$ext" in \ - 1*) ;; \ - *) ext='1' ;; \ - esac; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \ - rm -f "$(DESTDIR)$(man1dir)/$$inst"; \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - $(am__remove_distdir) - mkdir $(distdir) - $(mkdir_p) $(distdir)/. $(distdir)/.. $(distdir)/../gcc/doc/include - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" distdir="$(distdir)" \ - dist-info - -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r $(distdir) -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 - $(am__remove_distdir) - -dist-tarZ: distdir - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__remove_distdir) - -dist-shar: distdir - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) - -dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir); chmod a+w $(distdir) - mkdir $(distdir)/_build - mkdir $(distdir)/_inst - chmod a-w $(distdir) - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && cd $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck - $(am__remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' -distuninstallcheck: - @cd $(distuninstallcheck_dir) \ - && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-am -all-am: Makefile $(INFO_DEPS) $(PROGRAMS) $(MANS) config.h all-local -installdirs: - for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -clean: clean-am - -clean-am: clean-binPROGRAMS clean-generic mostlyclean-am - -distclean: distclean-am - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-hdr distclean-tags - -dvi: dvi-am - -dvi-am: $(DVIS) - -html: html-am - -html-am: $(HTMLS) - -info: info-am - -info-am: $(INFO_DEPS) - -install-data-am: install-info-am install-man - -install-exec-am: install-binPROGRAMS - -install-info: install-info-am - -install-info-am: $(INFO_DEPS) - @$(NORMAL_INSTALL) - test -z "$(infodir)" || $(mkdir_p) "$(DESTDIR)$(infodir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - list='$(INFO_DEPS)'; \ - for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - esac; \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ - file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ - for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ - $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ - if test -f $$ifile; then \ - relfile=`echo "$$ifile" | sed 's|^.*/||'`; \ - echo " $(INSTALL_DATA) '$$ifile' '$(DESTDIR)$(infodir)/$$relfile'"; \ - $(INSTALL_DATA) "$$ifile" "$(DESTDIR)$(infodir)/$$relfile"; \ - else : ; fi; \ - done; \ - done - @$(POST_INSTALL) - @if (install-info --version && \ - install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ - list='$(INFO_DEPS)'; \ - for file in $$list; do \ - relfile=`echo "$$file" | sed 's|^.*/||'`; \ - echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ - install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ - done; \ - else : ; fi -install-man: install-man1 - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-aminfo \ - maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-aminfo mostlyclean-compile \ - mostlyclean-generic - -pdf: pdf-am - -pdf-am: $(PDFS) - -ps: ps-am - -ps-am: $(PSS) - -uninstall-am: uninstall-binPROGRAMS uninstall-info-am uninstall-man - -uninstall-man: uninstall-man1 - -.PHONY: CTAGS GTAGS all all-am all-local am--refresh check check-am \ - clean clean-binPROGRAMS clean-generic ctags dist dist-all \ - dist-bzip2 dist-gzip dist-info dist-shar dist-tarZ dist-zip \ - distcheck distclean distclean-compile distclean-generic \ - distclean-hdr distclean-tags distcleancheck distdir \ - distuninstallcheck dvi dvi-am html html-am info info-am \ - install install-am install-binPROGRAMS install-data \ - install-data-am install-exec install-exec-am install-info \ - install-info-am install-man install-man1 install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-aminfo maintainer-clean-generic mostlyclean \ - mostlyclean-aminfo mostlyclean-compile mostlyclean-generic pdf \ - pdf-am ps ps-am tags uninstall uninstall-am \ - uninstall-binPROGRAMS uninstall-info-am uninstall-man \ - uninstall-man1 - - -.pod.1: - -($(POD2MAN) --section=1 $< > $(@).T$$$$ && \ - mv -f $(@).T$$$$ $@) || \ - (rm -f $(@).T$$$$ && exit 1) - -.INTERMEDIATE: fastjar.pod grepjar.pod - -fastjar.pod: $(srcdir)/fastjar.texi - -$(TEXI2POD) -D fastjar $< > $@ - -grepjar.pod: $(srcdir)/fastjar.texi - -$(TEXI2POD) -D grepjar $< > $@ - -fastjar.1 grepjar.1: $(BASEVER) - -# gcc-vers.texi is generated from the version files. -gcc-vers.texi: $(BASEVER) $(DEVPHASE) - (echo "@set version-GCC $(shell cat $(BASEVER))"; \ - if [ "$(shell cat $(DEVPHASE))" = "experimental" ]; \ - then echo "@set DEVELOPMENT"; \ - else echo "@clear DEVELOPMENT"; \ - fi) > $@T - mv -f $@T $@ - -all-local: $(STAMP_GENINSRC) - -stamp-geninsrc: fastjar.1 grepjar.1 fastjar.info - -cp -p $(top_builddir)/fastjar.1 $(srcdir)/fastjar.1 - -cp -p $(top_builddir)/grepjar.1 $(srcdir)/grepjar.1 - -cp -p $(top_builddir)/fastjar.info $(srcdir)/fastjar.info - touch $@ -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/fastjar/NEWS b/fastjar/NEWS deleted file mode 100644 index 70ee4990fb2..00000000000 --- a/fastjar/NEWS +++ /dev/null @@ -1,14 +0,0 @@ -Noteworthy changes in fastjar, 11/2000 --------------------------------------- - -Fastjar as been imported from sourceforge.net/projects/fastjar with -Brian Burns' permission so that it can be used as a replacement to the -zip utility in order to create the libgcj.zip archive. Several missing -distribution files were created, most notably Makefile.am. - -Two new options were added: `-E' to prevent fastjar from reading the -content of a directory when specifying one (and instead relying on the -provided list of files to populate the archive with regard to the -directory entry) and `-@' to let fastjar read the name of the files to -add to the archive from the standard input. This last option is -supported only when creating or augmenting an archive. diff --git a/fastjar/README b/fastjar/README deleted file mode 100644 index a16a501829d..00000000000 --- a/fastjar/README +++ /dev/null @@ -1,78 +0,0 @@ -This directory contains the FastJar package, which is not part of GCC but -shipped with GCC as convenience. - -======= -FastJar 0.90 - -12/6/1999 -======= - -FastJar is an attempt at creating a feature-for-feature copy of Sun's JDK's -'jar' command. Sun's jar (or Blackdown's for that matter) is written entirely -in Java which makes it dog slow. Since FastJar is written in C, it can create -the same .jar file as Sun's tool in a fraction of the time. On my system, -Sun's jar takes 50 seconds to create a 10MB jar file, while FastJar only takes -a little over a second. - -The reason I wrote fastjar is that building .jar files is a regular process -of the build where I work. The way we have it setup, you have to re-create -the .jar file everytime you want to test it out, which is about every 5 minutes -when I'm busy coding. The .jar file wasn't -that- big, but it did take about -30 seconds to be made, and watching all the garbage collection messages was -pretty irritating as well. I probably wasted a half-hour a day watching -Sun's jar tool chug along. By writing the program in C, I spend much less time -banging my head against the monitor waiting for the build to finish. Yay! - -FastJar has been tested on Solaris and Linux 2.2.x systems and nothing else. -It should compile/run without any problems on either system, provided you have -zlib installed. - -Please mail any bug reports to burnsbr@ucs.orst.edu. - -If you use FastJar and want me to add the rest of the features, send me mail -(toast@users.sourceforge.net). I'll be much more likely to put more work into this -if I know other people find it useful other than me. - -As always, this not being a final release, bugs may exist. I test each -release pretty well, but I can always miss things... - -Compression will slow things down quite a bit. A 10MB jar file takes about -1 second on my machine without compression, and 9 seconds with it. If you -want fastjar to be fast, use the -0 (zero, not O) flag to turn off compression. - -Supported flags: --------------------------- --c | create a new archive --v | verbose output --f | specify archive file name --m | specify existing manifest file --M | don't create manifest --0 | store only --C | change to dir --t | list contents --x | extract contents - -Unsupported flags: ----------------------------- --u | update exisiting archive - -If you use the "unsupported" flags, nothing bad will happen, but then again -nothing will happen at all. - - -Unsupported features (in this release): ---------------------------------------------- - * updating - * full manifest support (?) - -Order or features for the future: --------------------------------------------- - * archive updating - * full manifest support - * filtering - * dependency checking - - -=========================================================================== -http://fastjar.sourceforge.net -toast@users.sourceforge.net diff --git a/fastjar/acinclude.m4 b/fastjar/acinclude.m4 deleted file mode 100644 index c856366e549..00000000000 --- a/fastjar/acinclude.m4 +++ /dev/null @@ -1,21 +0,0 @@ -dnl Define MKDIR_TAKES_ONE_ARG if mkdir accepts only one argument instead -dnl of the usual 2. -AC_DEFUN([gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG], -[AC_CACHE_CHECK([if mkdir takes one argument], gcc_cv_mkdir_takes_one_arg, -[AC_TRY_COMPILE([ -#include -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif -#ifdef HAVE_DIRECT_H -# include -#endif], [mkdir ("foo", 0);], - gcc_cv_mkdir_takes_one_arg=no, gcc_cv_mkdir_takes_one_arg=yes)]) -if test $gcc_cv_mkdir_takes_one_arg = yes ; then - AC_DEFINE(MKDIR_TAKES_ONE_ARG, 1, [Define if host mkdir takes a -single argument.]) -fi -]) diff --git a/fastjar/compress.c b/fastjar/compress.c deleted file mode 100644 index 84b3dad1768..00000000000 --- a/fastjar/compress.c +++ /dev/null @@ -1,562 +0,0 @@ -/* $Id: compress.c,v 1.2 2000/12/14 18:45:35 ghazi Exp $ - - $Log: compress.c,v $ - Revision 1.2 2000/12/14 18:45:35 ghazi - Warning fixes: - - * compress.c: Include stdlib.h and compress.h. - (rcsid): Delete. - (report_str_error): Make static. - (ez_inflate_str): Delete unused variable. Add parens in if-stmt. - (hrd_inflate_str): Likewise. - - * compress.h (init_compression, end_compression, init_inflation, - end_inflation): Prototype void arguments. - - * dostime.c (rcsid): Delete. - - * jargrep.c: Include ctype.h, stdlib.h, zlib.h and compress.h. - Make functions static. Cast ctype function argument to `unsigned - char'. Add parens in if-stmts. Constify. - (Usage): Change into a macro. - (jargrep): Remove unused parameter. - - * jartool.c: Constify. Add parens in if-stmts. Align - signed/unsigned char pointers in functions calls using casts. - (rcsid): Delete. - (list_jar): Fix printf format specifier. - (usage): Chop long string into bits. Reformat. - - * pushback.c (rcsid): Delete. - - Revision 1.1 2000/12/09 03:08:23 apbianco - 2000-12-08 Alexandre Petit-Bianco - - * fastjar: Imported. - - Revision 1.7 2000/09/13 14:02:02 cory - Reformatted some of the code to more closly match the layout of the orriginal - fastjar utility. - - Revision 1.6 2000/09/12 22:29:36 cory - Jargrep now seems to do what I want it to do. Performs properly on Linux x86, - will test some other platforms later. - - Revision 1.1.1.1 1999/12/06 03:09:16 toast - initial checkin.. - - - - Revision 1.7 1999/05/10 08:50:05 burnsbr - *** empty log message *** - - Revision 1.6 1999/05/10 08:38:44 burnsbr - *** empty log message *** - - Revision 1.5 1999/05/10 08:30:29 burnsbr - added inflation code - - Revision 1.4 1999/04/27 10:03:33 burnsbr - added configure support - - Revision 1.3 1999/04/26 02:35:32 burnsbr - compression now works.. yahoo - - Revision 1.2 1999/04/23 12:01:59 burnsbr - added licence stuff. - - Revision 1.1 1999/04/23 11:58:25 burnsbr - Initial revision - - -*/ - -/* - compress.c - code for handling deflation - Copyright (C) 1999 Bryan Burns - Copyright (C) 2004 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 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. - */ - -#include "config.h" - -#include -#include -#include -#include - -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef STDC_HEADERS -#include -#endif - -#include - -#include "jartool.h" -#include "pushback.h" -#include "compress.h" -#include "shift.h" - -int write_data (int, void *, size_t, struct zipentry *); - -extern int seekable; -extern off_t end_of_entries; - -static z_stream zs; - -void init_compression(){ - - memset(&zs, 0, sizeof(z_stream)); - - zs.zalloc = Z_NULL; - zs.zfree = Z_NULL; - zs.opaque = Z_NULL; - - /* Why -MAX_WBITS? zlib has an undocumented feature, where if the windowbits - parameter is negative, it omits the zlib header, which seems to kill - any other zip/unzip program. This caused me SO much pain.. */ - if(deflateInit2(&zs, Z_DEFAULT_COMPRESSION, Z_DEFLATED, -MAX_WBITS, - 9, Z_DEFAULT_STRATEGY) != Z_OK){ - - fprintf(stderr, "Error initializing deflation!\n"); - exit(1); - } -} - -int -write_data (int fd, void *buf, size_t len, - struct zipentry *ze __attribute__((unused))) -{ -#ifdef WITH_SHIFT_DOWN - struct zipentry *next = NULL; - off_t here = lseek (fd, 0, SEEK_CUR); - /* - * If we are updating and there is not enough space before the next - * entry, expand the file. - */ - if (ze) - { - next = ze->next_entry; - if (next && here + len >= next->offset) - { - if (shift_down (fd, next->offset, (here + len) - next->offset, next)) - { - perror ("can't expand file"); - exit (1); - } - } - } -#endif /* WITH_SHIFT_DOWN */ - - return write (fd, buf, len); -} - -int compress_file(int in_fd, int out_fd, struct zipentry *ze, - struct zipentry *existing) -{ - Bytef in_buff[RDSZ]; - Bytef out_buff[RDSZ]; - unsigned int rdamt, wramt; - unsigned long tr = 0; - int rtval; - - rdamt = 0; - - zs.avail_in = 0; - zs.next_in = in_buff; - - zs.next_out = out_buff; - zs.avail_out = (uInt)RDSZ; - - ze->crc = crc32(0L, Z_NULL, 0); - - for(; ;){ - - /* If deflate is out of input, fill the input buffer for it */ - if(zs.avail_in == 0 && zs.avail_out > 0){ - if((rtval = read(in_fd, in_buff, RDSZ)) == 0) - break; - - if(rtval == -1){ - perror("read"); - exit(1); - } - - rdamt = rtval; - - /* compute the CRC while we're at it */ - ze->crc = crc32(ze->crc, in_buff, rdamt); - - /* update the total amount read sofar */ - tr += rdamt; - - zs.next_in = in_buff; - zs.avail_in = rdamt; - } - - /* deflate the data */ - if(deflate(&zs, 0) != Z_OK){ - fprintf(stderr, "Error deflating! %s:%d\n", __FILE__, __LINE__); - exit(1); - } - - /* If the output buffer is full, dump it to disk */ - if(zs.avail_out == 0){ - - if (write_data (out_fd, out_buff, RDSZ, existing) != RDSZ) - { - perror("write"); - exit(1); - } - - /* clear the output buffer */ - zs.next_out = out_buff; - zs.avail_out = (uInt)RDSZ; - } - - } - - /* If we have any data waiting in the buffer after we're done with the file - we can flush it */ - if(zs.avail_out < RDSZ){ - - wramt = RDSZ - zs.avail_out; - - if (write_data (out_fd, out_buff, wramt, existing) != (int)wramt) - { - perror("write"); - exit(1); - } - /* clear the output buffer */ - zs.next_out = out_buff; - zs.avail_out = (uInt)RDSZ; - } - - - /* finish deflation. This purges zlib's internal data buffers */ - while(deflate(&zs, Z_FINISH) == Z_OK){ - wramt = RDSZ - zs.avail_out; - - if (write_data (out_fd, out_buff, wramt, existing) != (int)wramt) - { - perror("write"); - exit(1); - } - - zs.next_out = out_buff; - zs.avail_out = (uInt)RDSZ; - } - - /* If there's any data left in the buffer, write it out */ - if(zs.avail_out != RDSZ){ - wramt = RDSZ - zs.avail_out; - - if (write_data (out_fd, out_buff, wramt, existing) != (int)wramt) - { - perror("write"); - exit(1); - } - } - - /* update fastjar's entry information */ - ze->usize = (ub4)zs.total_in; - ze->csize = (ub4)zs.total_out; - - /* Reset the deflation for the next time around */ - if(deflateReset(&zs) != Z_OK){ - fprintf(stderr, "Error resetting deflation\n"); - exit(1); - } - - return 0; -} - -void end_compression(){ - int rtval; - - /* Oddly enough, zlib always returns Z_DATA_ERROR if you specify no - zlib header. Go fig. */ - if((rtval = deflateEnd(&zs)) != Z_OK && rtval != Z_DATA_ERROR){ - fprintf(stderr, "Error calling deflateEnd\n"); - fprintf(stderr, "error: (%d) %s\n", rtval, zs.msg); - exit(1); - } -} - - -void init_inflation(){ - - memset(&zs, 0, sizeof(z_stream)); - - zs.zalloc = Z_NULL; - zs.zfree = Z_NULL; - zs.opaque = Z_NULL; - - if(inflateInit2(&zs, -15) != Z_OK){ - fprintf(stderr, "Error initializing deflation!\n"); - exit(1); - } - -} - -int inflate_file(pb_file *pbf, int out_fd, struct zipentry *ze){ - Bytef in_buff[RDSZ]; - Bytef out_buff[RDSZ]; - unsigned int rdamt; - int rtval; - ub4 crc = 0; - - zs.avail_in = 0; - - crc = crc32(crc, NULL, 0); /* initialize crc */ - - /* loop until we've consumed all the compressed data */ - for(;;){ - - if(zs.avail_in == 0){ - if((rdamt = pb_read(pbf, in_buff, RDSZ)) == 0) - break; - else if((int)rdamt < 0){ - perror("read"); - exit(1); - } - -#ifdef DEBUG - printf("%d bytes read\n", rdamt); -#endif - - zs.next_in = in_buff; - zs.avail_in = rdamt; - } - - zs.next_out = out_buff; - zs.avail_out = RDSZ; - - if((rtval = inflate(&zs, 0)) != Z_OK){ - if(rtval == Z_STREAM_END){ -#ifdef DEBUG - printf("end of stream\n"); -#endif - if(zs.avail_out != RDSZ){ - crc = crc32(crc, out_buff, (RDSZ - zs.avail_out)); - - if(out_fd >= 0) - if(write(out_fd, out_buff, (RDSZ - zs.avail_out)) != - (int)(RDSZ - zs.avail_out)){ - perror("write"); - exit(1); - } - } - - break; - } else { - fprintf(stderr, "Error inflating file! (%d)\n", rtval); - exit(1); - } - } else { - if(zs.avail_out != RDSZ){ - crc = crc32(crc, out_buff, (RDSZ - zs.avail_out)); - - if(out_fd >= 0) - if(write(out_fd, out_buff, (RDSZ - zs.avail_out)) != - (int)(RDSZ - zs.avail_out)){ - perror("write"); - exit(1); - } - zs.next_out = out_buff; - zs.avail_out = RDSZ; - } - } - } -#ifdef DEBUG - printf("done inflating\n"); -#endif - -#ifdef DEBUG - printf("%d bytes left over\n", zs.avail_in); -#endif - -#ifdef DEBUG - printf("CRC is %x\n", crc); -#endif - - ze->crc = crc; - - pb_push(pbf, zs.next_in, zs.avail_in); - - ze->usize = zs.total_out; - - inflateReset(&zs); - return 0; -} - -/* -Function name: report_str_error -args: val Error code returned from zlib. -purpose: Put out an error message corresponding to error code returned from zlib. -Be suitably cryptic seeing I don't really know exactly what these errors mean. -*/ - -static void report_str_error(int val) { - switch(val) { - case Z_STREAM_END: - break; - case Z_NEED_DICT: - fprintf(stderr, "Need a dictionary?\n"); - exit(1); - case Z_DATA_ERROR: - fprintf(stderr, "Z_DATA_ERROR\n"); - exit(1); - case Z_STREAM_ERROR: - fprintf(stderr, "Z_STREAM_ERROR\n"); - exit(1); - case Z_MEM_ERROR: - fprintf(stderr, "Z_MEM_ERROR\n"); - exit(1); - case Z_BUF_ERROR: - fprintf(stderr, "Z_BUF_ERROR\n"); - exit(1); - case Z_OK: - break; - default: - fprintf(stderr, "Unknown behavior from inflate\n"); - exit(1); - } -} - -/* -Function name: ez_inflate_str -args: pbf Pointer to pushback handle for file. - csize Compressed size of embedded file. - usize Uncompressed size of embedded file. -purpose: Read in and decompress the contents of an embedded file and store it in a -byte array. -returns: Byte array of uncompressed embedded file. -*/ - -static Bytef *ez_inflate_str(pb_file *pbf, ub4 csize, ub4 usize) { - Bytef *out_buff; - Bytef *in_buff; - unsigned int rdamt; - - if((zs.next_in = in_buff = (Bytef *) malloc(csize))) { - if((zs.next_out = out_buff = (Bytef *) malloc(usize + 1))) { - if((rdamt = pb_read(pbf, zs.next_in, csize)) == csize) { - zs.avail_in = csize; - zs.avail_out = usize; - report_str_error(inflate(&zs, 0)); - free(in_buff); - inflateReset(&zs); - out_buff[usize] = '\0'; - } - else { - fprintf(stderr, "Read failed on input file.\n"); - fprintf(stderr, "Tried to read %u but read %u instead.\n", csize, rdamt); - free(in_buff); - free(out_buff); - exit(1); - } - } - else { - fprintf(stderr, "Malloc of out_buff failed.\n"); - fprintf(stderr, "Error: %s\n", strerror(errno)); - free(in_buff); - exit(1); - } - } - else { - fprintf(stderr, "Malloc of in_buff failed.\n"); - fprintf(stderr, "Error: %s\n", strerror(errno)); - exit(1); - } - - return out_buff; -} - -/* -Function name: hrd_inflate_str -args: pbf Pointer to pushback handle for file. - csize Pointer to compressed size of embedded file. - usize Pointer to uncompressed size of embedded file. -purpose: Read and decompress an embedded file into a string. Set csize and usize -accordingly. This function does the reading for us in the case there is not size -information in the header for the embedded file. -returns: Byte array of the contents of the embedded file. -*/ - -static Bytef *hrd_inflate_str(pb_file *pbf, ub4 *csize, ub4 *usize) { - Bytef *out_buff; - Bytef *tmp; - Bytef in_buff[RDSZ]; - unsigned int rdamt; - int i; - int zret; - - i = 1; - out_buff = NULL; - zret = Z_OK; - while(zret != Z_STREAM_END && (rdamt = pb_read(pbf, in_buff, RDSZ))) - { - zs.avail_in = rdamt; - zs.avail_out = 0; - zs.next_in = in_buff; - do { - if((tmp = (Bytef *) realloc(out_buff, (RDSZ * i) + 1))) { - out_buff = tmp; - zs.next_out = &(out_buff[(RDSZ * (i - 1)) - zs.avail_out]); - zs.avail_out += RDSZ; - i++; - } - else { - fprintf(stderr, "Realloc of out_buff failed.\n"); - fprintf(stderr, "Error: %s\n", strerror(errno)); - exit(1); - } - } while((zret = inflate(&zs, 0)) == Z_OK); - report_str_error(zret); - } - pb_push(pbf, zs.next_in, zs.avail_in); - - out_buff[(RDSZ * (i - 1)) - zs.avail_out] = '\0'; - *usize = zs.total_out; - *csize = zs.total_in; - - inflateReset(&zs); - - return out_buff; -} - -/* -Function name: inflate_string -args: pbf Pointer to pushback handle for file. - csize Pointer to compressed size of embedded file. May be 0 if not set. - usize Pointer to uncompressed size of embedded file. May be 0 if not set. -purpose: Decide the easiest (in computer terms) methos of decompressing this embedded -file to a string. -returns: Pointer to a string containing the decompressed contents of the embedded file. -If csize and usize are not set set them to correct numbers. -*/ - -Bytef *inflate_string(pb_file *pbf, ub4 *csize, ub4 *usize) { -Bytef *ret_buf; - - if(*csize && *usize) ret_buf = ez_inflate_str(pbf, *csize, *usize); - else ret_buf = hrd_inflate_str(pbf, csize, usize); - - return ret_buf; -} diff --git a/fastjar/compress.h b/fastjar/compress.h deleted file mode 100644 index bf0b8deceae..00000000000 --- a/fastjar/compress.h +++ /dev/null @@ -1,57 +0,0 @@ -/* $Id: compress.h,v 1.1 2000/12/09 03:08:23 apbianco Exp $ - - $Log: compress.h,v $ - Revision 1.1 2000/12/09 03:08:23 apbianco - 2000-12-08 Alexandre Petit-Bianco - - * fastjar: Imported. - - Revision 1.1.1.1 1999/12/06 03:09:12 toast - initial checkin.. - - - - Revision 1.3 1999/05/10 08:32:09 burnsbr - added new function protos. - - Revision 1.2 1999/04/23 12:02:20 burnsbr - added licence - - Revision 1.1 1999/04/23 11:59:37 burnsbr - Initial revision - - -*/ - -/* - compress.h - header for compression - Copyright (C) 1999 Bryan Burns - - 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. - */ - -/* Initializes the compression data structure(s) */ -void init_compression(void); - -/* Compresses the file specified by in_fd and appends it to out_fd */ -int compress_file(int, int, struct zipentry *, struct zipentry *); - -/* Frees memory used by compression function */ -void end_compression(void); - -void init_inflation(void); -int inflate_file(pb_file *, int, struct zipentry *); -void end_inflation(void); -Bytef *inflate_string(pb_file *, ub4 *, ub4 *); diff --git a/fastjar/config.h.in b/fastjar/config.h.in deleted file mode 100644 index 330488a5cff..00000000000 --- a/fastjar/config.h.in +++ /dev/null @@ -1,113 +0,0 @@ -/* config.h.in. Generated from configure.ac by autoheader. */ - -/* Define to 1 if you have the header file, and it defines `DIR'. - */ -#undef HAVE_DIRENT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_FCNTL_H - -/* Define to 1 if you have the `ftruncate' function. */ -#undef HAVE_FTRUNCATE - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_LIMITS_H - -/* Define to 1 if the system has the type `long long'. */ -#undef HAVE_LONG_LONG - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the header file, and it defines `DIR'. */ -#undef HAVE_NDIR_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file, and it defines `DIR'. - */ -#undef HAVE_SYS_DIR_H - -/* Define to 1 if you have the header file, and it defines `DIR'. - */ -#undef HAVE_SYS_NDIR_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_PARAM_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define to 1 if you have the `_chsize' function. */ -#undef HAVE__CHSIZE - -/* Define if host mkdir takes a single argument. */ -#undef MKDIR_TAKES_ONE_ARG - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* The size of a `char', as computed by sizeof. */ -#undef SIZEOF_CHAR - -/* The size of a `int', as computed by sizeof. */ -#undef SIZEOF_INT - -/* The size of a `long', as computed by sizeof. */ -#undef SIZEOF_LONG - -/* The size of a `long long', as computed by sizeof. */ -#undef SIZEOF_LONG_LONG - -/* The size of a `short', as computed by sizeof. */ -#undef SIZEOF_SHORT - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Define to 1 if your declares `struct tm'. */ -#undef TM_IN_SYS_TIME - -/* Version number of package */ -#undef VERSION - -/* Define to 1 if your processor stores words with the most significant byte - first (like Motorola and SPARC, unlike Intel and VAX). */ -#undef WORDS_BIGENDIAN - -/* Define to `long' if does not define. */ -#undef off_t diff --git a/fastjar/configure b/fastjar/configure deleted file mode 100755 index 6d0f5b57f8f..00000000000 --- a/fastjar/configure +++ /dev/null @@ -1,8385 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59. -# -# Copyright (C) 2003 Free Software Foundation, Inc. -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -exec 6>&1 - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_config_libobj_dir=. -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= - -ac_unique_file="jartool.h" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#if HAVE_SYS_TYPES_H -# include -#endif -#if HAVE_SYS_STAT_H -# include -#endif -#if STDC_HEADERS -# include -# include -#else -# if HAVE_STDLIB_H -# include -# endif -#endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H -# include -# endif -# include -#endif -#if HAVE_STRINGS_H -# include -#endif -#if HAVE_INTTYPES_H -# include -#else -# if HAVE_STDINT_H -# include -# endif -#endif -#if HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE RM CP CHMOD MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT fastjar_warn_cflags CPP EGREP ZLIBS ZDEPS ZINCS GENINSRC_TRUE GENINSRC_FALSE LIBOBJS LTLIBOBJS' -ac_subst_files='' - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -ac_prev= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_option in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi -fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 - { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures this package to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -_ACEOF - - cat <<_ACEOF -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names -_ACEOF -fi - -if test -n "$ac_init_help"; then - - cat <<\_ACEOF - -Optional Features: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer - --enable-generated-files-in-srcdir - put copies of generated files in source dir - intended for creating source tarballs for users - without texinfo, perl, bison or flex. - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-system-zlib use installed libz - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have - headers in a nonstandard directory - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -_ACEOF -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - ac_popdir=`pwd` - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd $ac_popdir - done -fi - -test -n "$ac_init_help" && exit 0 -if $ac_init_version; then - cat <<\_ACEOF - -Copyright (C) 2003 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit 0 -fi -exec 5>config.log -cat >&5 <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by $as_me, which was -generated by GNU Autoconf 2.59. Invocation command line was - - $ $0 $@ - -_ACEOF -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_sep= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " - ;; - esac - done -done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -{ - (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) - sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; - *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} - echo - - cat <<\_ASBOX -## ----------------- ## -## Output variables. ## -## ----------------- ## -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - fi - - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - sed "/^$/d" confdefs.h | sort - echo - fi - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status - ' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; - esac - fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - - - - -am__api_version="1.9" -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} - { (exit 1); exit 1; }; } -fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done - - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL=$ac_install_sh - fi -fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -echo "$as_me:$LINENO: checking whether build environment is sane" >&5 -echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 -# Just in case -sleep 1 -echo timestamp > conftest.file -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&5 -echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&2;} - { (exit 1); exit 1; }; } - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! -Check your system clock" >&5 -echo "$as_me: error: newly created file is older than distributed files! -Check your system clock" >&2;} - { (exit 1); exit 1; }; } -fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -test "$program_prefix" != NONE && - program_transform_name="s,^,$program_prefix,;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s,\$,$program_suffix,;$program_transform_name" -# Double any \ or $. echo might interpret backslashes. -# By default was `s,x,x', remove it if useless. -cat <<\_ACEOF >conftest.sed -s/[\\$]/&&/g;s/;s,x,x,$// -_ACEOF -program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -rm conftest.sed - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 -echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then - # We used to keeping the `.' as first argument, in order to - # allow $(mkdir_p) to be used without argument. As in - # $(mkdir_p) $(somedir) - # where $(somedir) is conditionally defined. However this is wrong - # for two reasons: - # 1. if the package is installed by a user who cannot write `.' - # make install will fail, - # 2. the above comment should most certainly read - # $(mkdir_p) $(DESTDIR)$(somedir) - # so it does not work when $(somedir) is undefined and - # $(DESTDIR) is not. - # To support the latter case, we have to write - # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), - # so the `.' trick is pointless. - mkdir_p='mkdir -p --' -else - # On NextStep and OpenStep, the `mkdir' command does not - # recognize any option. It will interpret all options as - # directories to create, and then abort because `.' already - # exists. - for d in ./-p ./--version; - do - test -d $d && rmdir $d - done - # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. - if test -f "$ac_aux_dir/mkinstalldirs"; then - mkdir_p='$(mkinstalldirs)' - else - mkdir_p='$(install_sh) -d' - fi -fi - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$AWK" && break -done - -echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` -if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.make <<\_ACEOF -all: - @echo 'ac_maketemp="$(MAKE)"' -_ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi -rm -f conftest.make -fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - SET_MAKE= -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -# test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 -echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} - { (exit 1); exit 1; }; } -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE=fastjar - VERSION=0.92-gcc - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -install_sh=${install_sh-"$am_aux_dir/install-sh"} - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - STRIP=$ac_ct_STRIP -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. - -AMTAR=${AMTAR-"${am_missing_run}tar"} - -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' - - - - - - ac_config_headers="$ac_config_headers config.h" - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_CC" && break -done - - CC=$ac_ct_CC -fi - -fi - - -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - -# Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -# b.out is created by i960 compilers. -for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) - ;; - conftest.$ac_ext ) - # This is the source file. - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool, - # but it would be cool to find out if it's true. Does anybody - # maintain Libtool? --akim. - export ac_cv_exeext - break;; - * ) - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } -fi - -ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 - -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - fi - fi -fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -rm -f a.out a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext - break;; - * ) break;; - esac -done -else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_compiler_gnu=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 -GCC=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_prog_cc_g=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_stdc=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std1 is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std1. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext -done -rm -f conftest.$ac_ext conftest.$ac_objext -CC=$ac_save_CC - -fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; - *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; -esac - -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -#include -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -DEPDIR="${am__leading_dot}deps" - - ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo done -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 -echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi - - -echo "$as_me:$LINENO: result: $_am_result" >&5 -echo "${ECHO_T}$_am_result" >&6 -rm -f confinc confmf - -# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then - enableval="$enable_dependency_tracking" - -fi; -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi - - -if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - - - -depcc="$CC" am_compiler_list= - -echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 -if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - - -if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done - - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL=$ac_install_sh - fi -fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -# Extract the first word of "rm", so it can be a program name with args. -set dummy rm; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_RM+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $RM in - [\\/]* | ?:[\\/]*) - ac_cv_path_RM="$RM" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/bin:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_path_RM" && ac_cv_path_RM="/bin/rm" - ;; -esac -fi -RM=$ac_cv_path_RM - -if test -n "$RM"; then - echo "$as_me:$LINENO: result: $RM" >&5 -echo "${ECHO_T}$RM" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -# Extract the first word of "cp", so it can be a program name with args. -set dummy cp; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_CP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $CP in - [\\/]* | ?:[\\/]*) - ac_cv_path_CP="$CP" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/bin:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_CP="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_path_CP" && ac_cv_path_CP="/bin/cp" - ;; -esac -fi -CP=$ac_cv_path_CP - -if test -n "$CP"; then - echo "$as_me:$LINENO: result: $CP" >&5 -echo "${ECHO_T}$CP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -# Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $STRIP in - [\\/]* | ?:[\\/]*) - ac_cv_path_STRIP="$STRIP" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/bin:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_STRIP="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_path_STRIP" && ac_cv_path_STRIP="/usr/bin/strip" - ;; -esac -fi -STRIP=$ac_cv_path_STRIP - -if test -n "$STRIP"; then - echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -# Extract the first word of "chmod", so it can be a program name with args. -set dummy chmod; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_CHMOD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $CHMOD in - [\\/]* | ?:[\\/]*) - ac_cv_path_CHMOD="$CHMOD" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/bin:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_CHMOD="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_path_CHMOD" && ac_cv_path_CHMOD="/bin/chmod" - ;; -esac -fi -CHMOD=$ac_cv_path_CHMOD - -if test -n "$CHMOD"; then - echo "$as_me:$LINENO: result: $CHMOD" >&5 -echo "${ECHO_T}$CHMOD" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - - -echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 -echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 - # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. -if test "${enable_maintainer_mode+set}" = set; then - enableval="$enable_maintainer_mode" - USE_MAINTAINER_MODE=$enableval -else - USE_MAINTAINER_MODE=no -fi; - echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 -echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 - - -if test $USE_MAINTAINER_MODE = yes; then - MAINTAINER_MODE_TRUE= - MAINTAINER_MODE_FALSE='#' -else - MAINTAINER_MODE_TRUE='#' - MAINTAINER_MODE_FALSE= -fi - - MAINT=$MAINTAINER_MODE_TRUE - - - -if test "$GCC" = yes; then - fastjar_warn_cflags='-W -Wall -pedantic -Wstrict-prototypes -Wmissing-prototypes -Wwrite-strings' -fi - - - - - - - - -ac_header_dirent=no -for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do - as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 -echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include <$ac_hdr> - -int -main () -{ -if ((DIR *) 0) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 -_ACEOF - -ac_header_dirent=$ac_hdr; break -fi - -done -# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. -if test $ac_header_dirent = dirent.h; then - echo "$as_me:$LINENO: checking for library containing opendir" >&5 -echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 -if test "${ac_cv_search_opendir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_func_search_save_LIBS=$LIBS -ac_cv_search_opendir=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir (); -int -main () -{ -opendir (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_opendir="none required" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_opendir" = no; then - for ac_lib in dir; do - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir (); -int -main () -{ -opendir (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_opendir="-l$ac_lib" -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - done -fi -LIBS=$ac_func_search_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 -echo "${ECHO_T}$ac_cv_search_opendir" >&6 -if test "$ac_cv_search_opendir" != no; then - test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" - -fi - -else - echo "$as_me:$LINENO: checking for library containing opendir" >&5 -echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 -if test "${ac_cv_search_opendir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_func_search_save_LIBS=$LIBS -ac_cv_search_opendir=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir (); -int -main () -{ -opendir (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_opendir="none required" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_opendir" = no; then - for ac_lib in x; do - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir (); -int -main () -{ -opendir (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_opendir="-l$ac_lib" -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - done -fi -LIBS=$ac_func_search_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 -echo "${ECHO_T}$ac_cv_search_opendir" >&6 -if test "$ac_cv_search_opendir" != no; then - test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" - -fi - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_prog_egrep+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' - fi -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 -echo "${ECHO_T}$ac_cv_prog_egrep" >&6 - EGREP=$ac_cv_prog_egrep - - -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_header_stdc=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - -echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 -echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6 -if test "${ac_cv_struct_tm+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include - -int -main () -{ -struct tm *tp; tp->tm_sec; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_struct_tm=time.h -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_struct_tm=sys/time.h -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 -echo "${ECHO_T}$ac_cv_struct_tm" >&6 -if test $ac_cv_struct_tm = sys/time.h; then - -cat >>confdefs.h <<\_ACEOF -#define TM_IN_SYS_TIME 1 -_ACEOF - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. - - - - - - - - - -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - - - -for ac_header in fcntl.h unistd.h sys/param.h stdlib.h limits.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - -for ac_func in ftruncate _chsize -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - -echo "$as_me:$LINENO: checking for off_t" >&5 -echo $ECHO_N "checking for off_t... $ECHO_C" >&6 -if test "${ac_cv_type_off_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((off_t *) 0) - return 0; -if (sizeof (off_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_off_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_off_t=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 -echo "${ECHO_T}$ac_cv_type_off_t" >&6 -if test $ac_cv_type_off_t = yes; then - : -else - -cat >>confdefs.h <<_ACEOF -#define off_t long -_ACEOF - -fi - -echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 -echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6 -if test "${ac_cv_struct_tm+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include - -int -main () -{ -struct tm *tp; tp->tm_sec; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_struct_tm=time.h -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_struct_tm=sys/time.h -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 -echo "${ECHO_T}$ac_cv_struct_tm" >&6 -if test $ac_cv_struct_tm = sys/time.h; then - -cat >>confdefs.h <<\_ACEOF -#define TM_IN_SYS_TIME 1 -_ACEOF - -fi - - -# mkdir takes a single argument on some systems. -echo "$as_me:$LINENO: checking if mkdir takes one argument" >&5 -echo $ECHO_N "checking if mkdir takes one argument... $ECHO_C" >&6 -if test "${gcc_cv_mkdir_takes_one_arg+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#include -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif -#ifdef HAVE_DIRECT_H -# include -#endif -int -main () -{ -mkdir ("foo", 0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - gcc_cv_mkdir_takes_one_arg=no -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -gcc_cv_mkdir_takes_one_arg=yes -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $gcc_cv_mkdir_takes_one_arg" >&5 -echo "${ECHO_T}$gcc_cv_mkdir_takes_one_arg" >&6 -if test $gcc_cv_mkdir_takes_one_arg = yes ; then - -cat >>confdefs.h <<\_ACEOF -#define MKDIR_TAKES_ONE_ARG 1 -_ACEOF - -fi - - -echo "$as_me:$LINENO: checking for char" >&5 -echo $ECHO_N "checking for char... $ECHO_C" >&6 -if test "${ac_cv_type_char+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((char *) 0) - return 0; -if (sizeof (char)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_char=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_char=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_char" >&5 -echo "${ECHO_T}$ac_cv_type_char" >&6 - -echo "$as_me:$LINENO: checking size of char" >&5 -echo $ECHO_N "checking size of char... $ECHO_C" >&6 -if test "${ac_cv_sizeof_char+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_char" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (char))) >= 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (char))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (char))) < 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (char))) >= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo= ac_hi= -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (char))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr '(' $ac_mid ')' + 1` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof_char=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (char), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; -esac -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -long longval () { return (long) (sizeof (char)); } -unsigned long ulongval () { return (long) (sizeof (char)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (char))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (char)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (char)))) - exit (1); - fprintf (f, "%lu\n", i); - } - exit (ferror (f) || fclose (f) != 0); - - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_char=`cat conftest.val` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (char), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.val -else - ac_cv_sizeof_char=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5 -echo "${ECHO_T}$ac_cv_sizeof_char" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_CHAR $ac_cv_sizeof_char -_ACEOF - - -echo "$as_me:$LINENO: checking for short" >&5 -echo $ECHO_N "checking for short... $ECHO_C" >&6 -if test "${ac_cv_type_short+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((short *) 0) - return 0; -if (sizeof (short)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_short=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_short=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5 -echo "${ECHO_T}$ac_cv_type_short" >&6 - -echo "$as_me:$LINENO: checking size of short" >&5 -echo $ECHO_N "checking size of short... $ECHO_C" >&6 -if test "${ac_cv_sizeof_short+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_short" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (short))) >= 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (short))) < 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (short))) >= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo= ac_hi= -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr '(' $ac_mid ')' + 1` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof_short=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (short), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; -esac -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -long longval () { return (long) (sizeof (short)); } -unsigned long ulongval () { return (long) (sizeof (short)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (short))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (short)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (short)))) - exit (1); - fprintf (f, "%lu\n", i); - } - exit (ferror (f) || fclose (f) != 0); - - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_short=`cat conftest.val` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (short), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.val -else - ac_cv_sizeof_short=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 -echo "${ECHO_T}$ac_cv_sizeof_short" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_SHORT $ac_cv_sizeof_short -_ACEOF - - -echo "$as_me:$LINENO: checking for int" >&5 -echo $ECHO_N "checking for int... $ECHO_C" >&6 -if test "${ac_cv_type_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((int *) 0) - return 0; -if (sizeof (int)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_int=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_int=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 -echo "${ECHO_T}$ac_cv_type_int" >&6 - -echo "$as_me:$LINENO: checking size of int" >&5 -echo $ECHO_N "checking size of int... $ECHO_C" >&6 -if test "${ac_cv_sizeof_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_int" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (int))) >= 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (int))) < 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo= ac_hi= -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr '(' $ac_mid ')' + 1` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof_int=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (int), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; -esac -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -long longval () { return (long) (sizeof (int)); } -unsigned long ulongval () { return (long) (sizeof (int)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (int))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (int)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (int)))) - exit (1); - fprintf (f, "%lu\n", i); - } - exit (ferror (f) || fclose (f) != 0); - - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_int=`cat conftest.val` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (int), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.val -else - ac_cv_sizeof_int=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 -echo "${ECHO_T}$ac_cv_sizeof_int" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_INT $ac_cv_sizeof_int -_ACEOF - - -echo "$as_me:$LINENO: checking for long" >&5 -echo $ECHO_N "checking for long... $ECHO_C" >&6 -if test "${ac_cv_type_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((long *) 0) - return 0; -if (sizeof (long)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_long=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_long=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 -echo "${ECHO_T}$ac_cv_type_long" >&6 - -echo "$as_me:$LINENO: checking size of long" >&5 -echo $ECHO_N "checking size of long... $ECHO_C" >&6 -if test "${ac_cv_sizeof_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_long" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo= ac_hi= -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr '(' $ac_mid ')' + 1` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof_long=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; -esac -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -long longval () { return (long) (sizeof (long)); } -unsigned long ulongval () { return (long) (sizeof (long)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (long))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (long)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (long)))) - exit (1); - fprintf (f, "%lu\n", i); - } - exit (ferror (f) || fclose (f) != 0); - - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_long=`cat conftest.val` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.val -else - ac_cv_sizeof_long=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 -echo "${ECHO_T}$ac_cv_sizeof_long" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG $ac_cv_sizeof_long -_ACEOF - - -echo "$as_me:$LINENO: checking for long long" >&5 -echo $ECHO_N "checking for long long... $ECHO_C" >&6 -if test "${ac_cv_type_long_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((long long *) 0) - return 0; -if (sizeof (long long)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_long_long=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_long_long=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 -echo "${ECHO_T}$ac_cv_type_long_long" >&6 -if test $ac_cv_type_long_long = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_LONG_LONG 1 -_ACEOF - -echo "$as_me:$LINENO: checking for long long" >&5 -echo $ECHO_N "checking for long long... $ECHO_C" >&6 -if test "${ac_cv_type_long_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((long long *) 0) - return 0; -if (sizeof (long long)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_long_long=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_long_long=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 -echo "${ECHO_T}$ac_cv_type_long_long" >&6 - -echo "$as_me:$LINENO: checking size of long long" >&5 -echo $ECHO_N "checking size of long long... $ECHO_C" >&6 -if test "${ac_cv_sizeof_long_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_long_long" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (long long))) < 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo= ac_hi= -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr '(' $ac_mid ')' + 1` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof_long_long=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long long), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; -esac -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -long longval () { return (long) (sizeof (long long)); } -unsigned long ulongval () { return (long) (sizeof (long long)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (long long))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (long long)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (long long)))) - exit (1); - fprintf (f, "%lu\n", i); - } - exit (ferror (f) || fclose (f) != 0); - - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_long_long=`cat conftest.val` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long long), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.val -else - ac_cv_sizeof_long_long=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 -echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long -_ACEOF - - -fi - - -echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 -echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 -if test "${ac_cv_c_bigendian+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # See if sys/param.h defines the BYTE_ORDER macro. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include - -int -main () -{ -#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN - bogus endian macros -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - # It does; now see whether it defined to BIG_ENDIAN or not. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include - -int -main () -{ -#if BYTE_ORDER != BIG_ENDIAN - not big endian -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_bigendian=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_c_bigendian=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -# It does not; compile a test program. -if test "$cross_compiling" = yes; then - # try to guess the endianness by grepping values into an object file - ac_cv_c_bigendian=unknown - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; -short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; -void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } -short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; -short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; -void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } -int -main () -{ - _ascii (); _ebcdic (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then - ac_cv_c_bigendian=yes -fi -if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -int -main () -{ - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long l; - char c[sizeof (long)]; - } u; - u.l = 1; - exit (u.c[sizeof (long) - 1] == 1); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_bigendian=no -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_c_bigendian=yes -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 -echo "${ECHO_T}$ac_cv_c_bigendian" >&6 -case $ac_cv_c_bigendian in - yes) - -cat >>confdefs.h <<\_ACEOF -#define WORDS_BIGENDIAN 1 -_ACEOF - ;; - no) - ;; - *) - { { echo "$as_me:$LINENO: error: unknown endianness -presetting ac_cv_c_bigendian=no (or yes) will help" >&5 -echo "$as_me: error: unknown endianness -presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} - { (exit 1); exit 1; }; } ;; -esac - - - -# Check whether --with-system-zlib or --without-system-zlib was given. -if test "${with_system_zlib+set}" = set; then - withval="$with_system_zlib" - -fi; - -ZLIBS= -ZDEPS= -ZINCS= -use_zlib=maybe -if test "$with_system_zlib" = yes; then - echo "$as_me:$LINENO: checking for deflate in -lz" >&5 -echo $ECHO_N "checking for deflate in -lz... $ECHO_C" >&6 -if test "${ac_cv_lib_z_deflate+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lz $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char deflate (); -int -main () -{ -deflate (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_z_deflate=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_z_deflate=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_z_deflate" >&5 -echo "${ECHO_T}$ac_cv_lib_z_deflate" >&6 -if test $ac_cv_lib_z_deflate = yes; then - ZLIBS=-lz -else - use_zlib=no -fi - -else - use_zlib=no -fi - -if test "$use_zlib" = no; then - # Brain dead way to find tree's zlib. - ZDEPS='$(top_builddir)/../zlib/libz.a' - ZLIBS="$ZDEPS -L\$(here)/../zlib/$libsubdir" - ZINCS='-I$(top_srcdir)/../zlib' -fi - - - - -# GCC LOCAL CHANGE -# We would like to our source tree to be readonly. However when releases or -# pre-releases are generated, the man pages need to be included as they are -# converted from the texi files via perl which we don't require end users to -# have installed. -# Therefore we have --enable-generated-files-in-srcdir to do just that. - -echo "$as_me:$LINENO: checking whether to place generated files in the source directory" >&5 -echo $ECHO_N "checking whether to place generated files in the source directory... $ECHO_C" >&6 - # Check whether --enable-generated-files-in-srcdir or --disable-generated-files-in-srcdir was given. -if test "${enable_generated_files_in_srcdir+set}" = set; then - enableval="$enable_generated_files_in_srcdir" - generated_files_in_srcdir=$enableval -else - generated_files_in_srcdir=no -fi; - -echo "$as_me:$LINENO: result: $generated_files_in_srcdir" >&5 -echo "${ECHO_T}$generated_files_in_srcdir" >&6 - - -if test x$generated_files_in_srcdir = xyes; then - GENINSRC_TRUE= - GENINSRC_FALSE='#' -else - GENINSRC_TRUE='#' - GENINSRC_FALSE= -fi - - - ac_config_files="$ac_config_files Makefile install-defs.sh" -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -{ - (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} | - sed ' - t clear - : clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" - cat confcache >$cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_i=`echo "$ac_i" | - sed 's/\$U\././;s/\.o$//;s/\.obj$//'` - # 2. Add them. - ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${GENINSRC_TRUE}" && test -z "${GENINSRC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"GENINSRC\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"GENINSRC\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi - -: ${CONFIG_STATUS=./config.status} -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - -exec 6>&1 - -# Open the log real soon, to keep \$[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - -This file was extended by $as_me, which was -generated by GNU Autoconf 2.59. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 -_ACEOF - -# Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi - -cat >>$CONFIG_STATUS <<\_ACEOF - -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to ." -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -config.status -configured by $0, generated by GNU Autoconf 2.59, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" - -Copyright (C) 2003 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir -INSTALL="$INSTALL" -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - ac_shift=: - ;; - -*) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; - esac - - case $ac_option in - # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" - ac_need_defaults=false;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -fi - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -# -# INIT-COMMANDS section. -# - -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - -_ACEOF - - - -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "install-defs.sh" ) CONFIG_FILES="$CONFIG_FILES install-defs.sh" ;; - "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF - -# -# CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@DEFS@,$DEFS,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@LIBS@,$LIBS,;t t -s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t -s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t -s,@INSTALL_DATA@,$INSTALL_DATA,;t t -s,@CYGPATH_W@,$CYGPATH_W,;t t -s,@PACKAGE@,$PACKAGE,;t t -s,@VERSION@,$VERSION,;t t -s,@ACLOCAL@,$ACLOCAL,;t t -s,@AUTOCONF@,$AUTOCONF,;t t -s,@AUTOMAKE@,$AUTOMAKE,;t t -s,@AUTOHEADER@,$AUTOHEADER,;t t -s,@MAKEINFO@,$MAKEINFO,;t t -s,@install_sh@,$install_sh,;t t -s,@STRIP@,$STRIP,;t t -s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t -s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t -s,@mkdir_p@,$mkdir_p,;t t -s,@AWK@,$AWK,;t t -s,@SET_MAKE@,$SET_MAKE,;t t -s,@am__leading_dot@,$am__leading_dot,;t t -s,@AMTAR@,$AMTAR,;t t -s,@am__tar@,$am__tar,;t t -s,@am__untar@,$am__untar,;t t -s,@CC@,$CC,;t t -s,@CFLAGS@,$CFLAGS,;t t -s,@LDFLAGS@,$LDFLAGS,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@DEPDIR@,$DEPDIR,;t t -s,@am__include@,$am__include,;t t -s,@am__quote@,$am__quote,;t t -s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t -s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t -s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t -s,@CCDEPMODE@,$CCDEPMODE,;t t -s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t -s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t -s,@RM@,$RM,;t t -s,@CP@,$CP,;t t -s,@CHMOD@,$CHMOD,;t t -s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t -s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t -s,@MAINT@,$MAINT,;t t -s,@fastjar_warn_cflags@,$fastjar_warn_cflags,;t t -s,@CPP@,$CPP,;t t -s,@EGREP@,$EGREP,;t t -s,@ZLIBS@,$ZLIBS,;t t -s,@ZDEPS@,$ZDEPS,;t t -s,@ZINCS@,$ZINCS,;t t -s,@GENINSRC_TRUE@,$GENINSRC_TRUE,;t t -s,@GENINSRC_FALSE@,$GENINSRC_FALSE,;t t -s,@LIBOBJS@,$LIBOBJS,;t t -s,@LTLIBOBJS@,$LTLIBOBJS,;t t -CEOF - -_ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi -fi # test -n "$CONFIG_FILES" - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_builddir$INSTALL ;; - esac - - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@abs_srcdir@,$ac_abs_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s,@builddir@,$ac_builddir,;t t -s,@abs_builddir@,$ac_abs_builddir,;t t -s,@top_builddir@,$ac_top_builddir,;t t -s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' - -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - # Do quote $f, to prevent DOS paths from being IFS'd. - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - -_ACEOF - -# Transform confdefs.h into two sed scripts, `conftest.defines' and -# `conftest.undefs', that substitutes the proper values into -# config.h.in to produce config.h. The first handles `#define' -# templates, and the second `#undef' templates. -# And first: Protect against being on the right side of a sed subst in -# config.status. Protect against being in an unquoted here document -# in config.status. -rm -f conftest.defines conftest.undefs -# Using a here document instead of a string reduces the quoting nightmare. -# Putting comments in sed scripts is not portable. -# -# `end' is used to avoid that the second main sed command (meant for -# 0-ary CPP macros) applies to n-ary macro definitions. -# See the Autoconf documentation for `clear'. -cat >confdef2sed.sed <<\_ACEOF -s/[\\&,]/\\&/g -s,[\\$`],\\&,g -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp -t end -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp -: end -_ACEOF -# If some macros were called several times there might be several times -# the same #defines, which is useless. Nevertheless, we may not want to -# sort them, since we want the *last* AC-DEFINE to be honored. -uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines -sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs -rm -f confdef2sed.sed - -# This sed command replaces #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -cat >>conftest.undefs <<\_ACEOF -s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, -_ACEOF - -# Break up conftest.defines because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS -echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS -echo ' :' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.defines >/dev/null -do - # Write a limited-size here document to $tmp/defines.sed. - echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#define' lines. - echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/defines.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines -echo ' fi # grep' >>$CONFIG_STATUS -echo >>$CONFIG_STATUS - -# Break up conftest.undefs because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #undef templates' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.undefs >/dev/null -do - # Write a limited-size here document to $tmp/undefs.sed. - echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#undef' - echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/undefs.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail - rm -f conftest.undefs - mv conftest.tail conftest.undefs -done -rm -f conftest.undefs - -cat >>$CONFIG_STATUS <<\_ACEOF - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in - if test x"$ac_file" != x-; then - if diff $ac_file $tmp/config.h >/dev/null 2>&1; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} - else - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - rm -f $ac_file - mv $tmp/config.h $ac_file - fi - else - cat $tmp/config.h - rm -f $tmp/config.h - fi -# Compute $ac_file's index in $config_headers. -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $ac_file | $ac_file:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || -$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X$ac_file : 'X\(//\)[^/]' \| \ - X$ac_file : 'X\(//\)$' \| \ - X$ac_file : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X$ac_file | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'`/stamp-h$_am_stamp_count -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - - { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 -echo "$as_me: executing $ac_dest commands" >&6;} - case $ac_dest in - depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`(dirname "$mf") 2>/dev/null || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`(dirname "$file") 2>/dev/null || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p $dirpart/$fdir - else - as_dir=$dirpart/$fdir - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 -echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} - { (exit 1); exit 1; }; }; } - - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done - ;; - esac -done -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -{ (exit 0); exit 0; } -_ACEOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi - diff --git a/fastjar/configure.ac b/fastjar/configure.ac deleted file mode 100644 index 92bbf54de4a..00000000000 --- a/fastjar/configure.ac +++ /dev/null @@ -1,92 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_PREREQ(2.59) -AC_INIT(jartool.h) -AM_INIT_AUTOMAKE(fastjar, 0.92-gcc) -AM_CONFIG_HEADER(config.h) - -dnl Checks for programs. -AC_PROG_CC -AC_PROG_INSTALL -AC_PATH_PROG(RM, rm, /bin/rm, $PATH:/bin:/usr/bin:/usr/local/bin) -AC_PATH_PROG(CP, cp, /bin/cp, $PATH:/bin:/usr/bin:/usr/local/bin) -AC_PATH_PROG(STRIP, strip, /usr/bin/strip, $PATH:/bin:/usr/bin:/usr/local/bin) -AC_PATH_PROG(CHMOD, chmod, /bin/chmod, $PATH:/bin:/usr/bin:/usr/local/bin) -AC_EXEEXT - -AM_MAINTAINER_MODE - -dnl Add warning flags if we are using gcc. -if test "$GCC" = yes; then - fastjar_warn_cflags='-W -Wall -pedantic -Wstrict-prototypes -Wmissing-prototypes -Wwrite-strings' -fi -AC_SUBST(fastjar_warn_cflags) - -dnl Checks for header files. -AC_HEADER_DIRENT -AC_HEADER_STDC -AC_STRUCT_TM -AC_CHECK_HEADERS(fcntl.h unistd.h sys/param.h stdlib.h limits.h) - -AC_CHECK_FUNCS(ftruncate _chsize) - -dnl Checks for typedefs, structures, and compiler characteristics. -AC_TYPE_OFF_T -AC_STRUCT_TM - -# mkdir takes a single argument on some systems. -gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG - -dnl Check for type-widths -AC_CHECK_SIZEOF(char) -AC_CHECK_SIZEOF(short) -AC_CHECK_SIZEOF(int) -AC_CHECK_SIZEOF(long) -AC_CHECK_TYPES([long long],[AC_CHECK_SIZEOF(long long)]) - -dnl Check byte order -AC_C_BIGENDIAN - -AC_ARG_WITH(system-zlib, -[ --with-system-zlib use installed libz]) - -ZLIBS= -ZDEPS= -ZINCS= -use_zlib=maybe -if test "$with_system_zlib" = yes; then - AC_CHECK_LIB(z, deflate, ZLIBS=-lz, use_zlib=no) -else - use_zlib=no -fi - -if test "$use_zlib" = no; then - # Brain dead way to find tree's zlib. - ZDEPS='$(top_builddir)/../zlib/libz.a' - ZLIBS="$ZDEPS -L\$(here)/../zlib/$libsubdir" - ZINCS='-I$(top_srcdir)/../zlib' -fi -AC_SUBST(ZLIBS) -AC_SUBST(ZDEPS) -AC_SUBST(ZINCS) - -# GCC LOCAL CHANGE -# We would like to our source tree to be readonly. However when releases or -# pre-releases are generated, the man pages need to be included as they are -# converted from the texi files via perl which we don't require end users to -# have installed. -# Therefore we have --enable-generated-files-in-srcdir to do just that. - -AC_MSG_CHECKING([whether to place generated files in the source directory]) - dnl generated-files-in-srcdir is disabled by default - AC_ARG_ENABLE(generated-files-in-srcdir, -[ --enable-generated-files-in-srcdir - put copies of generated files in source dir - intended for creating source tarballs for users - without texinfo, perl, bison or flex.], - generated_files_in_srcdir=$enableval, - generated_files_in_srcdir=no) - -AC_MSG_RESULT($generated_files_in_srcdir) -AM_CONDITIONAL(GENINSRC, test x$generated_files_in_srcdir = xyes) - -AC_OUTPUT(Makefile install-defs.sh) diff --git a/fastjar/dostime.c b/fastjar/dostime.c deleted file mode 100644 index 10c0bf32a9a..00000000000 --- a/fastjar/dostime.c +++ /dev/null @@ -1,81 +0,0 @@ -/* dostime.c - convert dos time to/from time_t. - - Copyright (C) 2002 Free Software Foundation - - 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. -*/ - -#include - -#include - -#include - -#include "dostime.h" - -/* - * The specification to which this was written. From Joe Buck. - * The DOS format appears to have only 2 second resolution. It is an - * unsigned long, and ORs together - * - * (year-1980)<<25 - * month<<21 (month is tm_mon + 1, 1=Jan through 12=Dec) - * day<<16 (day is tm_mday, 1-31) - * hour<<11 (hour is tm_hour, 0-23) - * min<<5 (min is tm_min, 0-59) - * sec>>1 (sec is tm_sec, 0-59, that's right, we throw away the LSB) - * - * DOS uses local time, so the localtime() call is used to turn the time_t - * into a struct tm. - */ - -time_t -dos2unixtime (unsigned long dostime) -{ - struct tm ltime; - time_t now = time (NULL); - - /* Call localtime to initialize timezone in TIME. */ - ltime = *localtime (&now); - - ltime.tm_year = (dostime >> 25) + 80; - ltime.tm_mon = ((dostime >> 21) & 0x0f) - 1; - ltime.tm_mday = (dostime >> 16) & 0x1f; - ltime.tm_hour = (dostime >> 11) & 0x0f; - ltime.tm_min = (dostime >> 5) & 0x3f; - ltime.tm_sec = (dostime & 0x1f) << 1; - - ltime.tm_wday = -1; - ltime.tm_yday = -1; - ltime.tm_isdst = -1; - - return mktime (<ime); -} - -unsigned long -unix2dostime (time_t *time) -{ - struct tm *ltime = localtime (time); - int year = ltime->tm_year - 80; - if (year < 0) - year = 0; - - return (year << 25 - | (ltime->tm_mon + 1) << 21 - | ltime->tm_mday << 16 - | ltime->tm_hour << 11 - | ltime->tm_min << 5 - | ltime->tm_sec >> 1); -} diff --git a/fastjar/dostime.h b/fastjar/dostime.h deleted file mode 100644 index dd092b58aed..00000000000 --- a/fastjar/dostime.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - dostime.h - function prototypes - Copyright (C) 1999, 2002 Bryan Burns - - 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. - */ - -time_t dos2unixtime(unsigned long dostime); -unsigned long unix2dostime(time_t*); diff --git a/fastjar/fastjar.texi b/fastjar/fastjar.texi deleted file mode 100644 index d39f4a9d7f3..00000000000 --- a/fastjar/fastjar.texi +++ /dev/null @@ -1,236 +0,0 @@ -\input texinfo @c -*-texinfo-*- -@setfilename fastjar.info -@settitle Guide to GNU jar utilites - -@c Note: When reading this manual you'll find lots of strange -@c circumlocutions like ``compiler for the Java language''. -@c This is necessary due to Sun's restrictions on the use of -@c the word ``Java'. - -@c When this manual is copyrighted. -@set copyrights-fastjar 2002 - -@include gcc-common.texi - -@c Versions -@set which-gcj GCC-@value{version-GCC} - -@ifinfo -@format -@dircategory Programming -@direntry -* fastjar: (fastjar). GNU jar utilities -@end direntry - -@dircategory Individual utilities -@direntry -* fastjar: (fastjar)Invoking fastjar. - An archive tool for Java archives -* grepjar: (fastjar)Invoking grepjar. - Search files in a jar file for a pattern -@end direntry -@end format - -@c man begin COPYRIGHT -Copyright (C) @value{copyrights-fastjar} Matthias Klose - -Permission is granted to copy, distribute and/or modify this document -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. A copy of the license is included in the -@c man end -section entitled ``GNU General Public License''. -@ignore -@c man begin COPYRIGHT -man page gpl(7). -@c man end -@end ignore -@end ifinfo - -@titlepage -@title GNU jar utilites -@author Brian Burns - -@page -@vskip 0pt plus 1filll -Copyright @copyright{} @value{copyrights-gcj} Matthias Klose -@sp 2 -For the @value{which-gcj} Version* -@sp 1 -Published by the Free Software Foundation @* -51 Franklin Street, Fifth Floor@* -Boston, MA 02110-1301, USA@* -@sp 1 -Permission is granted to copy, distribute and/or modify this document -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. A copy of the license is included in the -section entitled ``GNU General Public License''. -@end titlepage -@contents -@page - - -@node Top -@top Introduction - -This manual describes how to use @command{fastjar} and @command{grepjar}. - -@menu -* Invoking fastjar:: Options supported by @command{fastjar} -* Invoking grepjar:: Options supported by @command{grepjar} -* Copying:: The GNU General Public License -@end menu - -@node Invoking fastjar -@chapter Invoking fastjar - -@c man title fastjar archive tool for Java archives - -@c man begin DESCRIPTION fastjar - -@code{fastjar} is an implementation of Sun's jar utility that comes with -the JDK, written entirely in C, and runs in a fraction of the time while -being feature compatible. - -If any file is a directory then it is processed recursively. The -manifest file name and the archive file name needs to be specified in -the same order the @option{-m} and @option{-f} flags are specified. - -@c man end - -@ignore -@c man begin SYNOPSIS fastjar -fastjar @option{-ctxu} [@option{OPTIONS}] [@var{jar-file}] [@var{manifest-file}] [@option{-C} @var{dir}] @var{files}@dots{} -@c man end -@c man begin SEEALSO fastjar -gcj(1), gij(1), grepjar(1) -and the Info entry for @file{gcj}. -@c man end -@end ignore - -@c man begin OPTIONS fastjar - -Exactly one of the following actions must be specified: - -@table @gcctabopt - -@item -c -Create new archive. - -@item -t -List table of contents for archive. - -@item -x -Extract named (or all) files from archive. - -@item -u -Update existing archive. - -@end table - -The following parameters are optional: - -@table @gcctabopt - -@item -@@ -Read the names of the files to add to the archive from stdin. This -option is supported only in combination with @option{-c} or @option{-u}. -Non standard option added in the GCC version. - -@item -C @var{directory} -Change to the @var{directory} and include the following file. - -@item -E -Prevent fastjar from reading the content of a directory when specifying -one (and instead relying on the provided list of files to populate the -archive with regard to the directory entry). Non standard option added -in the GCC version. - -@item -M -Do not create a manifest file for the entries. - -@item -i -Generate an index of the packages in this jar and its Class-Path -(currently a no-op for jar command-line compatibility). - -@item -0 -Store only; use no ZIP compression. - -@item -V -@itemx --version -Display version information. - -@item -f @var{archive} -Specify archive file name. - -@item -m @var{manifest} -Include manifest information from specified @var{manifest} file. - -@item -v -Generate verbose output on standard output. - -@end table - -All remaining options are considered to be names of files. - -@c man end - -@node Invoking grepjar -@chapter Invoking grepjar - -@c man title grepjar search files in a jar file for a pattern - -@c man begin DESCRIPTION grepjar - -The @code{grepjar} program can be used to search files in a jar file for -a pattern. - -@c man end - -@ignore -@c man begin SYNOPSIS grepjar -grepjar [@option{-bcinsw}] @option{-e} @var{PATTERN} | @var{PATTERN} @var{files}@dots{} -@c man end -@c man begin SEEALSO grepjar -fastjar(1), gcj(1), gij(1), gfdl(7) and the Info entry for @file{gcj}. -@c man end -@end ignore - -@c man begin OPTIONS grepjar - -@table @gcctabopt -@item -b -Print byte offset of match. - -@item -c -Print number of matches. - -@item -i -Compare case-insensitively. - -@item -n -Print line number of each match. - -@item -s -Suppress error messages. - -@item -w -Force @var{PATTERN} to match only whole words. - -@item -e @var{PATTERN} -Use @var{PATTERN} as regular expression. - -@item --help -Print help, then exit. - -@item -V -@itemx --version -Print version number, then exit. -@end table - -@c man end - -@include gpl.texi - -@bye diff --git a/fastjar/install-defs.sh.in b/fastjar/install-defs.sh.in deleted file mode 100644 index b90410c417f..00000000000 --- a/fastjar/install-defs.sh.in +++ /dev/null @@ -1,7 +0,0 @@ -CP=@CP@ -STRIP=@STRIP@ -CHMOD=@CHMOD@ - -prefix=@prefix@ -exec_prefix=@exec_prefix@ -BINDIR=@bindir@ diff --git a/fastjar/jargrep.c b/fastjar/jargrep.c deleted file mode 100644 index 99f4df22f9b..00000000000 --- a/fastjar/jargrep.c +++ /dev/null @@ -1,791 +0,0 @@ -/* - jargrep.c - main functions for jargrep utility - Copyright (C) 2002, 2003, 2006 Free Software Foundation - Copyright (C) 1999, 2000 Bryan Burns - Copyright (C) 2000 Cory Hollingsworth - - Parts of this program are base on Bryan Burns work with fastjar - Copyright (C) 1999. - - 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. -*/ - -/* Id: jargrep.c,v 1.5 2002/01/03 04:57:56 rodrigc Exp - -Log: jargrep.c,v -Revision 1.5 2002/01/03 04:57:56 rodrigc -2001-01-02 Craig Rodrigues - - PR bootstrap/5117 - * configure.in (AC_CHECK_HEADERS): Check for stdlib.h. - * Makefile.am: Move grepjar to bin_PROGRAMS. - * config.h.in: Regenerated. - * Makefile.in: Regenerated. - * aclocal.m4: Regenerated. - * jargrep.c: Eliminate some signed/unsigned and default - uninitialized warnings. Use HAVE_STDLIB_H instead of - STDC_HEADERS macro. - * jartool.c: Likewise. - * compress.c: Likewise. - -Revision 1.4 2000/12/15 18:45:09 tromey - * jargrep.c: Include getopt.h if it exists. - (optind): Declare. - * configure, config.h: Rebuilt. - * configure.in: Check for getopt.h. - -Revision 1.3 2000/12/14 18:45:35 ghazi -Warning fixes: - - * compress.c: Include stdlib.h and compress.h. - (rcsid): Delete. - (report_str_error): Make static. - (ez_inflate_str): Delete unused variable. Add parens in if-stmt. - (hrd_inflate_str): Likewise. - - * compress.h (init_compression, end_compression, init_inflation, - end_inflation): Prototype void arguments. - - * dostime.c (rcsid): Delete. - - * jargrep.c: Include ctype.h, stdlib.h, zlib.h and compress.h. - Make functions static. Cast ctype function argument to `unsigned - char'. Add parens in if-stmts. Constify. - (Usage): Change into a macro. - (jargrep): Remove unused parameter. - - * jartool.c: Constify. Add parens in if-stmts. Align - signed/unsigned char pointers in functions calls using casts. - (rcsid): Delete. - (list_jar): Fix printf format specifier. - (usage): Chop long string into bits. Reformat. - - * pushback.c (rcsid): Delete. - -Revision 1.2 2000/12/11 02:59:55 apbianco -2000-12-10 Robert Lipe - - * jargrep.c (jargrep): Added null statement after case. - -2000-12-10 Alexandre Petit-Bianco - - * Makefile: Removed. - * Makefile.in: Rebuilt with `-i' and `--enable-foreign'. - -(http://gcc.gnu.org/ml/gcc/2000-12/msg00294.html) - -Revision 1.1 2000/12/09 03:08:23 apbianco -2000-12-08 Alexandre Petit-Bianco - - * fastjar: Imported. - -Revision 1.8 2000/09/13 14:02:02 cory -Reformatted some of the code to more closly match the layout of the orriginal -fastjar utility. - -Revision 1.7 2000/09/12 22:29:36 cory -Jargrep now seems to do what I want it to do. Performs properly on Linux x86, -will test some other platforms later. - - -*/ - -#include "config.h" -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef HAVE_STDLIB_H -#include -#endif - -#include "xregex.h" - -#include "jargrep.h" -#include "jartool.h" -#include "pushback.h" -#include "zipfile.h" -#include "zlib.h" -#include "compress.h" -#include - -void version(void); -void help(const char *name); - -#define Usage "Usage: %s [-bcinsVw] [--version|--help] <-e PATTERN | PATTERN> FILE ...\n" - -/* -Function name: opt_valid -arg: options Bitfield flag that contains the command line options of grepjar. -purpose: To guard agains the occurance of certain incompatible flags being used -together. -returns: TRUE if options are valid, FALSE otherwise. -*/ - -static int opt_valid(int options) { - int retflag; - - if((options & JG_PRINT_COUNT) && - (options & (JG_PRINT_BYTEOFFSET | JG_PRINT_LINE_NUMBER))) - { - retflag = FALSE; - } - else retflag = TRUE; - - return retflag; -} - -/* -Function name: create_regexp -args: regstr String containing the uncompiled regular expression. This may be the - expression as is passed in through argv. - options This is the flag containing the commandline options that have been - parsed by getopt. -purpose: Handle the exception handling involved with setting upt a new regular -expression. -returns: Newly allocated compile regular expression ready to be used in an regexec call. -*/ - -static regex_t *create_regexp(const char *regstr, int options) { - regex_t *exp; - int errcode; - int msgsize; - char *errmsg; - - if((exp = (regex_t *) malloc(sizeof(regex_t)))) - { - if((errcode = regcomp(exp, regstr, (options & JG_IGNORE_CASE) ? REG_ICASE : 0))) { - fprintf(stderr, "regcomp of regex failed,\n"); - if((errmsg = (char *) malloc(msgsize = regerror(errcode, exp, NULL, 0) + 1))) { - regerror(errcode, exp, errmsg, msgsize); - fprintf(stderr, "Error: %s\n", errmsg); - free(exp); - free(errmsg); - exit(1); - } - else { - fprintf(stderr, "Malloc of errmsg failed.\n"); - fprintf(stderr, "Error: %s\n", strerror(errno)); - free(exp); - exit(1); - } - } - } - else { - fprintf(stderr, "Malloc of regex failed,\n"); - fprintf(stderr, "Error: %s\n", strerror(errno)); - exit(1); - } - - return exp; -} - -/* -Function name: check_sig -args: scratch Pointer to array of bytes containing signature. - pbf Pointer to push back handle for jar file. -purpose: Verify that checksum is correct. -returns: 0, 1, or 2. 0 means we are ready to read embedded file information. 1 means -we have read beyound the embedded file list and can exit knowing we have read all the -relevent information. 2 means we still haven't reached embdedded file list and need to -do some more reading. -*/ -static int check_sig(ub1 *scratch, pb_file *pbfp) { - ub4 signature; - int retflag = 0; - - signature = UNPACK_UB4(scratch, 0); - -#ifdef DEBUG - printf("signature is %x\n", signature); -#endif - if(signature == 0x08074b50){ -#ifdef DEBUG - printf("skipping data descriptor\n"); -#endif - pb_read(pbfp, scratch, 12); - retflag = 2; - } else if(signature == 0x02014b50){ -#ifdef DEBUG - printf("Central header reached.. we're all done!\n"); -#endif - retflag = 1; - }else if(signature != 0x04034b50){ - printf("Ick! %#x\n", signature); - retflag = 1; - } - - return retflag; -} - -/* -Function name: decd_siz -args csize Pointer to embedded file's compressed size. - usize Pointer to embedded file's uncmpressed size. - fnlen Pointer to embedded file's file name length. - elfen Pointer to length of extra fields in jar file. - flags Pointer to bitmapped flags. - method Pointer to indicator of storage method of embedded file. - file_header Pointer to string containing the above values to be unbacked. -Purpose: Unpack the series of values from file_header. -*/ - -static void decd_siz(ub4 *csize, ub4 *usize, ub2 *fnlen, ub2 *eflen, ub2 *flags, ub2 *method, ub1 *file_header) { - *csize = UNPACK_UB4(file_header, LOC_CSIZE); -#ifdef DEBUG - printf("Compressed size is %u\n", *csize); -#endif - - *usize = UNPACK_UB4(file_header, LOC_USIZE); -#ifdef DEBUG - printf("Uncompressed size is %u\n", *usize); -#endif - - *fnlen = UNPACK_UB2(file_header, LOC_FNLEN); -#ifdef DEBUG - printf("Filename length is %hu\n", *fnlen); -#endif - - *eflen = UNPACK_UB2(file_header, LOC_EFLEN); -#ifdef DEBUG - printf("Extra field length is %hu\n", *eflen); -#endif - - *flags = UNPACK_UB2(file_header, LOC_EXTRA); -#ifdef DEBUG - printf("Flags are %#hx\n", *flags); -#endif - - *method = UNPACK_UB2(file_header, LOC_COMP); -#ifdef DEBUG - printf("Compression method is %#hx\n", *method); -#endif - -} - -/* -Function name: new_filename -args: pbf Pointer to push back file handle. Used for reading input file. - len Length of file name to be read. -purpose: Read in the embedded file name from jar file. -returns: Pointer to newly allocated string containing file name. -*/ - -static char *new_filename(pb_file *pbf, ub4 len) { - char *filename; - - if(!(filename = (char *) malloc(len + 1))) { - fprintf(stderr, "Malloc failed of filename\n"); - fprintf(stderr, "Error: %s\n", strerror(errno)); - } - pb_read(pbf, filename, len); - filename[len] = '\0'; - -#ifdef DEBUG - printf("filename is %s\n", filename); -#endif - - return filename; -} - -/* -Funtion name: read_string -args: pbf Pointer to push back file handle. Used for reading input file. - size Size of embedded file in bytes. -purpose: Create a string containing the contents of the embedded noncompressed file. -returns: Pointer to newly allocated string containing embedded file contents. -*/ - -static char *read_string(pb_file *pbf, int size) { - char *page; - - if((page = (char *) malloc(size + 1))) { - pb_read(pbf, page, size); - page[size] = '\0'; - } - else { - fprintf(stderr, "Malloc of page buffer failed.\n"); - fprintf(stderr, "Error: %s\n", strerror(errno)); - exit(1); - } - - return page; -} - -/* -Function name: extract_line -args: stream String containing the full contents of a file which is to be substringed - in order to provide line representing our grep output. - begin Index into stream which regular expression first matches. - end Index into stream which end of match to the regular expression. - b Pointer to the index of what will be the beginning of the line when - string is returned. Used for -b option. -purpose: Create a string that can be printed by jargrep from the long string stream. -The matching line that is printed out by jargrep is generated by this function. -returns: Pointer to newly allocated string containing matched expression. -*/ - -static char *extract_line(const char *stream, regoff_t begin, regoff_t end, int *b) { - int e; - int length; - char *retstr; - - for(*b = begin; *b >= 0 && !iscntrl((unsigned char)stream[*b]); (*b)--); - (*b)++; - for(e = end; stream[e] == '\t' || !iscntrl((unsigned char)stream[e]); e++); - length = e - *b; - if((retstr = (char *) malloc(length + 1))) { - sprintf(retstr, "%d:", *b); - strncpy(retstr, &(stream[*b]), length); - retstr[length] = '\0'; - } - else { - fprintf(stderr, "Malloc failed of output string.\n"); - fprintf(stderr, "Error: %s\n", strerror(errno)); - exit(1); - } - - return retstr; -} - -/* -Function name: chk_wrd -args: exp Pointer to compiled POSIX style regular expression of search target. - str String known to contain at least one match of exp. -purpose: Verify that the occurance of the regular expression in str occurs as a whole -word and not a substring of another word. -returns: TRUE if it is a word, FALSE of it is a substring. -*/ - -static int chk_wrd(regex_t *exp, const char *str) { - int wrd_fnd = FALSE; - int frnt_ok; - int bck_ok; - const char *str2; - regmatch_t match; - - str2 = str; - frnt_ok = bck_ok = FALSE; - while(!wrd_fnd && !regexec(exp, str2, 1, &match, 0)) { - if(!match.rm_so && (str2 == str)) frnt_ok = TRUE; - else if(!isalnum((unsigned char)str2[match.rm_so - 1]) - && str2[match.rm_so - 1] != '_') - frnt_ok = TRUE; - else frnt_ok = FALSE; - if(frnt_ok) { - if(str2[match.rm_eo] == '\0') bck_ok = TRUE; - else if(!isalnum((unsigned char)str2[match.rm_eo]) - && str2[match.rm_eo] != '_') - bck_ok = TRUE; - else bck_ok = FALSE; - } - wrd_fnd = frnt_ok && bck_ok; - str2 = &(str2[match.rm_eo]); - } - - return wrd_fnd; -} - -/* -Function name: prnt_mtchs -args: exp Pointer to compiled POSIX style regular expression of search target. - filename String containing the name of the embedded file which matches have - been found in. - stream String containing the processed contents of the embedded jar file - represended with filename. - pmatch Array of regmatch_t matches into stream. - nl_offset Array of offsets of '\n' characters in stream. May be NULL if -n is - not set on command line. - num Number of matches in pmatch array. - lines Number of lines in file. Not set if -n is not set on command line. - options Bitwise flag containing flags set to represent the command line - options. -purpose: Control output of jargrep. Output is controlled by which options have been -set at the command line. -*/ - -static void prnt_mtchs(regex_t *exp, const char *filename, const char *stream, regmatch_t *pmatch, regmatch_t *nl_offset, int num, int lines, int options) { - int i; - int j = 0; - int ln_cnt; - int begin; - int o_begin; - char *str; - - o_begin = -1; - ln_cnt = 0; - for(i = 0; i < num; i++) { - str = extract_line(stream, pmatch[i].rm_so, pmatch[i].rm_eo, &begin); - if(begin > o_begin) { - if(!(options & JG_WORD_EXPRESSIONS) || chk_wrd(exp, str)) { - ln_cnt++; - if(!(options & JG_PRINT_COUNT)) { - printf("%s:", filename); - if(options & JG_PRINT_LINE_NUMBER) { - for(; j < lines && nl_offset[j].rm_so < begin; j++); - printf("%d:", j + 1); - } - if(options & JG_PRINT_BYTEOFFSET) printf("%d:", begin); - printf("%s\n", str); - } - } - } - o_begin = begin; - free(str); - } - if(options & JG_PRINT_COUNT) printf("%s:%d\n", filename, ln_cnt); -} - -/* -Function name: check_crc -args: pbf Pointer to pushback file pointer for jar file. - stream String containing the non modified contents fo the extraced file entry. - usize Size of file in bytes. -purpose: Verify the CRC matches that as what is stored in the jar file. -*/ - -static void check_crc(pb_file *pbf, const char *stream, ub4 usize) { - ub4 crc=0; - ub4 lcrc; - ub1 scratch[16]; - - crc = crc32(crc, NULL, 0); - crc = crc32(crc, (const unsigned char *)stream, usize); - if(pb_read(pbf, scratch, 16) != 16) { - perror("read"); - exit(1); - } - if(UNPACK_UB4(scratch, 0) != 0x08074b50) { - fprintf(stderr, "Error! Missing data descriptor!\n"); - exit(1); - } - lcrc = UNPACK_UB4(scratch, 4); - if(crc != lcrc){ - fprintf(stderr, "Error! CRCs do not match! Got %x, expected %x\n", - crc, lcrc); - exit(1); - } -} - -/* -Function name mk_ascii -args: stream String that contains the contents of the extraced file entry. - usize String size. -purpose: Make certain that the contents of the file are ASCII, not binary. This -permits grepping of binary files as well by converting non ASCII and control characters -into '\n'. -*/ - -static void mk_ascii(char *stream, size_t usize) { - size_t i; - - for(i = 0; i < usize; i++) - if(stream[i] != '\t' - && (iscntrl((unsigned char)stream[i]) - || (unsigned char) stream[i] >= 128)) - stream[i] = '\n'; -} - -/* -Funtion name: fnd_match -args: exp Pointer to compiled POSIX style regular expression of search target. - str_stream String that contains the contents of the extracted file entry. - i Pointer to counter and index of matches. -purpose: Search str_stream for occurances of the regular expression exp and create -an array of matches. -returns: Pointer to newly allocated array of regmatch_t which gives indexes to start -and end of matches. NULL is returned upon no matches found. -*/ - -static regmatch_t *fnd_match(regex_t *exp, const char *str_stream, int *i) { - int regflag; - regmatch_t match; - regmatch_t *match_array; - regmatch_t *tmp; - - match_array = NULL; - for(*i = 0, regflag = regexec(exp, str_stream, 1, &match, 0); !regflag; - regflag = regexec(exp, &(str_stream[match.rm_eo]), 1, &match, 0), (*i)++) - { - if((tmp = (regmatch_t *) - realloc(match_array, sizeof(regmatch_t) * ((*i) + 1)))) - { - match_array = tmp; - if(*i) { - match.rm_so += match_array[(*i) - 1].rm_eo; - match.rm_eo += match_array[(*i) - 1].rm_eo; - } - match_array[*i] = match; - } - else { - fprintf(stderr, "Realloc of match_array failed.\n"); - fprintf(stderr, "Error: %s\n", strerror(errno)); - exit(1); - } - } - - return match_array; -} - -/* -Function name: cont_grep -args: exp Pointer to compiled POSIX style regular expression of search target. - nl_exp Pointer to compiled POSIX style regular expression of newlines. This - argument is NULL unless the -n option is used on the command line. - fd File descriptor of the jar file being grepped. - pbf Pointer to pushback file style file stream. This is for use with - the pushback.c file io funtions. - options Bitwise flag containing flags set to represent the command line options. -purpose: This function handles single entries in an open jar file. The header is -read and then the embeded file is extracted and grepped. -returns: FALSE upon failure, TRUE otherwise. -*/ - -static int cont_grep(regex_t *exp, regex_t *nl_exp, int fd, pb_file *pbf, int options) { - int retflag = TRUE; - int i; - int j; - ub4 csize; - ub4 usize; - ub2 fnlen; - ub2 eflen; - ub2 flags; - ub2 method; - ub1 file_header[30]; - char *filename; - char *str_stream; - regmatch_t *match_array; - regmatch_t *nl_offsets=0; - - if(pb_read(pbf, (file_header + 4), 26) != 26) { - perror("read"); - retflag = FALSE; - } - else { - decd_siz(&csize, &usize, &fnlen, &eflen, &flags, &method, file_header); - filename = new_filename(pbf, fnlen); - lseek(fd, eflen, SEEK_CUR); - if(filename[fnlen - 1] != '/') { - str_stream = (method == 8 || (flags & 0x0008)) ? - (char *) inflate_string(pbf, &csize, &usize) : - read_string(pbf, csize); - if(flags & 0x008) check_crc(pbf, str_stream, usize); - mk_ascii(str_stream, usize); - match_array = fnd_match(exp, str_stream, &i); - if((options & JG_PRINT_LINE_NUMBER) && i) - nl_offsets = fnd_match(nl_exp, str_stream, &j); - prnt_mtchs(exp, filename, str_stream, match_array, nl_offsets, i, j, options); - if(match_array) free(match_array); - free(str_stream); - } - free(filename); - retflag = TRUE; - } - - return retflag; -} - -/* -Funtion name: jargrep -args: exp Pointer to compiled POSIX style regular expression of search target. - nl_exp Pointer to compiled regular expression for newlines or NULL. Only set - if -n option is present at command line. - jarfile Filename of jar file to be searched. - options Bitwise flag containing flags set to represent the command line options. -purpose: Open jar file. Check signatures. When right signature is found go to deeper -grep routine. -*/ - -static void jargrep(regex_t *exp, regex_t *nl_exp, const char *jarfile, int options){ - int fd; - int floop = TRUE; - pb_file pbf; - ub1 scratch[16]; - - if((fd = open(jarfile, O_RDONLY)) == -1) { - if(!(options & JG_SUPRESS_ERROR)) - fprintf(stderr, "Error reading file '%s': %s\n", jarfile, strerror(errno)); - } - else { - pb_init(&pbf, fd); - - do { - if(pb_read(&pbf, scratch, 4) != 4) { - perror("read"); - floop = FALSE; - } - else { - switch (check_sig(scratch, &pbf)) { - case 0: - floop = cont_grep(exp, nl_exp, fd, &pbf, options); - break; - case 1: - floop = FALSE; - break; - case 2: - /* fall through continue */ - ; - } - } - } while(floop); - } -} - -/* This is used to mark options with no short value. */ -#define LONG_OPT(Num) ((Num) + 128) - -#define OPT_HELP LONG_OPT (0) - -static const struct option option_vec[] = -{ - { "help", no_argument, NULL, OPT_HELP }, - { "version", no_argument, NULL, 'V' }, - { NULL, no_argument, NULL, 0 } -}; - -/* -Funtion Name: main -args: argc number of in coming args. - argv array of strings. -purpose: Entry point of the program. Parse command line arguments and set options. -Set up regular expressions. Call grep routines for each file as input. -returns: 1 on error 0 on success. -*/ - -int main(int argc, char **argv) { - int c; - int retval = 0; - int fileindex; - int options = 0; - regex_t *regexp; - regex_t *nl_exp = NULL; - char *regexpstr = NULL; - - while((c = getopt_long(argc, argv, "bce:insVw", - option_vec, NULL)) != -1) { - switch(c) { - case 'b': - options |= JG_PRINT_BYTEOFFSET; - break; - case 'c': - options |= JG_PRINT_COUNT; - break; - case 'e': - if(!(regexpstr = (char *) malloc(strlen(optarg) + 1))) { - fprintf(stderr, "Malloc failure.\n"); - fprintf(stderr, "Error: %s\n", strerror(errno)); - exit(1); - } - strcpy(regexpstr, optarg); - break; - case 'i': - options |= JG_IGNORE_CASE; - break; - case 'n': - options |= JG_PRINT_LINE_NUMBER; - break; - case 's': - options |= JG_SUPRESS_ERROR; - break; - case 'v': - options |= JG_INVERT; - break; - case 'V': - version (); - break; - case 'w': - options |= JG_WORD_EXPRESSIONS; - break; - case OPT_HELP: - help(argv[0]); - break; - default: - fprintf(stderr, Usage, argv[0]); - exit(1); - } - } - if(!regexpstr){ - if(((argc - optind) >= 2)) { - regexpstr = argv[optind]; - fileindex = optind + 1; - } - else { - fprintf(stderr, "Invalid arguments.\n"); - fprintf(stderr, Usage, argv[0]); - exit(1); - } - } - else if((argc - optind) == 1) { - fileindex = optind; - } - else { - fprintf(stderr, "Invalid arguments.\n"); - fprintf(stderr, Usage, argv[0]); - exit(1); - } - - if(opt_valid(options)) { - regexp = create_regexp(regexpstr, options); - if(options & JG_PRINT_LINE_NUMBER) nl_exp = create_regexp("\n", 0); - init_inflation(); - for(; fileindex < argc; fileindex++) - jargrep(regexp, nl_exp, argv[fileindex], options); - regfree(regexp); - if(options & JG_PRINT_LINE_NUMBER) regfree(nl_exp); - } - else { - retval = 1; - fprintf(stderr, "Error: Invalid combination of options.\n"); - } - - return retval; -} - -void help(const char *filename) -{ - printf (Usage, filename); - printf ("\ -\n\ -Search files in a jar file for a pattern.\n\ -\n\ - -b print byte offset of match\n\ - -c print number of matches\n\ - -i compare case-insensitively\n\ - -n print line number of each match\n\ - -s suppress error messages\n\ - -w force PATTERN to match only whole words\n\ - -e PATTERN use PATTERN as regular expression\n\ - -V|--version print version number and exit\n\ - --help print help\n\ -"); - - exit (0); -} - -void version () -{ - printf("grepjar (%s) %s\n\n", PACKAGE, VERSION); - printf("Copyright 1999, 2000, 2001 Bryan Burns\n"); - printf("Copyright 2000 Cory Hollingsworth\n"); - printf("Copyright 2006 Free Software Foundation\n"); - printf("\ -This is free software; see the source for copying conditions. There is NO\n\ -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"); - exit (0); -} diff --git a/fastjar/jargrep.h b/fastjar/jargrep.h deleted file mode 100644 index 14fa2dac701..00000000000 --- a/fastjar/jargrep.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - jargrep.h - header file for jargrep utility - Copyright (C) 2002 Free Software Foundation - Copyright (C) 2000 Cory Hollingsworth - - 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. -*/ - -#define JG_PRINT_BYTEOFFSET 0x00000001 -#define JG_PRINT_COUNT 0x00000002 -#define JG_IGNORE_CASE 0x00000004 -#define JG_PRINT_LINE_NUMBER 0x00000008 -#define JG_SUPRESS_ERROR 0x00000010 -#define JG_INVERT 0x00000020 -#define JG_WORD_EXPRESSIONS 0x00000040 diff --git a/fastjar/jartool.c b/fastjar/jartool.c deleted file mode 100644 index 7faa518a2e1..00000000000 --- a/fastjar/jartool.c +++ /dev/null @@ -1,2357 +0,0 @@ -/* - jartool.c - main functions for fastjar utility - Copyright (C) 2002, 2004, 2005, 2006 Free Software Foundation - Copyright (C) 1999, 2000, 2001 Bryan Burns - - 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. -*/ - -/* - Revision 1.10 2002/01/03 04:57:56 rodrigc - 2001-01-02 Craig Rodrigues - - PR bootstrap/5117 - * configure.in (AC_CHECK_HEADERS): Check for stdlib.h. - * Makefile.am: Move grepjar to bin_PROGRAMS. - * config.h.in: Regenerated. - * Makefile.in: Regenerated. - * aclocal.m4: Regenerated. - * jargrep.c: Eliminate some signed/unsigned and default - uninitialized warnings. Use HAVE_STDLIB_H instead of - STDC_HEADERS macro. - * jartool.c: Likewise. - * compress.c: Likewise. - - Revision 1.9 2001/10/12 00:49:42 bryce - * jatool.c (extract_jar): Account for null termination when - determining whether to expand "filename". - - Revision 1.8 2001/08/29 01:35:31 apbianco - 2001-08-28 Alexandre Petit-Bianco - - * jartool.c (add_to_jar): Return 1 if `stat' initialy failed. - Fixes PR java/3949. - - (http://gcc.gnu.org/ml/gcc-patches/2001-08/msg01641.html) - - Revision 1.7 2001/08/27 23:09:37 tromey - * jartool.c (jarfile): Remove length limitation. - (main): Use jt_strdup when initializing jarfile. - - Revision 1.6 2001/07/04 18:33:53 tromey - Modified from patch by Julian Hall : - * jartool.c (errno): Conditionally declare. - (O_BINARY): Conditionally define. - (main): Use open, not creat. Use O_BINARY everywhere. - (make_manifest): Use O_BINARY. - (add_to_jar): Likewise. - - Revision 1.5 2001/05/03 21:40:47 danglin - * jartool.c (jt_strdup): New function. - (get_next_arg): Use jt_strdup instead of strdup. - - Revision 1.4 2000/12/28 21:47:37 robertl - 2000-12-28 Robert Lipe - - * jartool.c (MAXPATHLEN): Provide if not defined. - - Revision 1.3 2000/12/14 18:45:35 ghazi - Warning fixes: - - * compress.c: Include stdlib.h and compress.h. - (rcsid): Delete. - (report_str_error): Make static. - (ez_inflate_str): Delete unused variable. Add parens in if-stmt. - (hrd_inflate_str): Likewise. - - * compress.h (init_compression, end_compression, init_inflation, - end_inflation): Prototype void arguments. - - * dostime.c (rcsid): Delete. - - * jargrep.c: Include ctype.h, stdlib.h, zlib.h and compress.h. - Make functions static. Cast ctype function argument to `unsigned - char'. Add parens in if-stmts. Constify. - (Usage): Change into a macro. - (jargrep): Remove unused parameter. - - * jartool.c: Constify. Add parens in if-stmts. Align - signed/unsigned char pointers in functions calls using casts. - (rcsid): Delete. - (list_jar): Fix printf format specifier. - (usage): Chop long string into bits. Reformat. - - * pushback.c (rcsid): Delete. - - Revision 1.2 2000/12/13 18:11:57 tromey - * jartool.c (extract_jar): Use strchr, not index. - - Revision 1.1 2000/12/09 03:08:23 apbianco - 2000-12-08 Alexandre Petit-Bianco - - * fastjar: Imported. - - Revision 1.5 2000/08/24 15:01:27 cory - Made certain that fastjar opened the jar file before trying to update it - with the -u option. - - Revision 1.4 2000/08/24 13:39:21 cory - Changed +'s to |'s in jartool.c to insure there was no confusion with sign - when byte swapping. Better safe than sorry. - - Revision 1.3 2000/08/23 19:42:17 cory - Added support for more Unix platforms. The following code has been hacked - to work on AIX, Solaris, True 64, and HP-UX. - Added bigendian check. Probably works on most big and little endian platforms - now. - - Revision 1.2 1999/12/06 07:38:28 toast - fixed recursive archiving bug - - Revision 1.1.1.1 1999/12/06 03:09:34 toast - initial checkin.. - - - - Revision 1.22 1999/10/12 19:45:13 burnsbr - adding patch to fix compat problem - - Revision 1.21 1999/05/10 09:15:49 burnsbr - fixed manifest file version info - - Revision 1.20 1999/05/10 08:53:16 burnsbr - *** empty log message *** - - Revision 1.19 1999/05/10 08:30:39 burnsbr - added extract / listing code - - Revision 1.18 1999/04/28 04:24:29 burnsbr - updated version - - Revision 1.17 1999/04/28 04:21:23 burnsbr - added support for -C dir-changing flag.. Updated total compression display - - Revision 1.16 1999/04/27 10:28:22 burnsbr - updated version string - - Revision 1.15 1999/04/27 10:04:06 burnsbr - configure support - - Revision 1.14 1999/04/27 08:56:14 burnsbr - added -V flag, better error messages - - Revision 1.13 1999/04/26 02:35:21 burnsbr - changed all sorts of stuff.. compression now works 100% - - Revision 1.12 1999/04/23 12:00:45 burnsbr - 90% done with compression code - - Revision 1.11 1999/04/22 04:12:57 burnsbr - finished first round of Manifest file support.. - might need to do more, digest etc.. - - Revision 1.10 1999/04/22 02:35:23 burnsbr - added more manifest support, about 75% done now. Replaced all the - redundant shifts and bit-logic with a macro or two, making the code - easier to read. - - Revision 1.9 1999/04/21 09:55:16 burnsbr - pulled out printfs - - Revision 1.8 1999/04/21 02:58:01 burnsbr - started manifest code - - Revision 1.7 1999/04/20 23:15:28 burnsbr - added patch sent by John Bley - - Revision 1.6 1999/04/20 08:56:02 burnsbr - added GPL comment - - Revision 1.5 1999/04/20 08:16:09 burnsbr - fixed verbose flag, did some optimization - - Revision 1.4 1999/04/20 05:09:59 burnsbr - added rcsid variable - - Revision 1.3 1999/04/20 05:08:54 burnsbr - fixed Log statement - -*/ - -#include "config.h" - -#include - -#ifdef HAVE_STDLIB_H -#include -#endif - -#ifdef HAVE_UNISTD_H -#include -#endif - -#include -#include -#include - -#ifdef HAVE_SYS_PARAM_H -#include -#endif - -#ifndef MAXPATHLEN -#define MAXPATHLEN 1024 -#endif - -#ifdef HAVE_DIRENT_H -#include -#endif - -#ifdef HAVE_FCNTL_H -#include -#endif - -#include -#include - -#ifdef TM_IN_SYS_TIME -#include -#else -#include -#endif - -#include - -#include "jartool.h" -#include "zipfile.h" -#include "dostime.h" -#include "pushback.h" -#include "compress.h" -#include "shift.h" - -/* Some systems have mkdir that takes a single argument. */ -#ifdef MKDIR_TAKES_ONE_ARG -# define mkdir(a,b) mkdir(a) -#endif - - -#ifdef WORDS_BIGENDIAN - -#define L2BI(l) ((l & 0xff000000) >> 24) | \ - ((l & 0x00ff0000) >> 8) | \ - ((l & 0x0000ff00) << 8) | \ - ((l & 0x000000ff) << 24); - -#define L2BS(l) ((l & 0xff00) >> 8) | ((l & 0x00ff) << 8); - -#endif - -#ifndef errno -extern int errno; -#endif - -#ifndef O_BINARY -#define O_BINARY 0 -#endif - -void usage(const char*); -void help(const char *); -void version(void); -void add_entry(struct zipentry *); -void init_headers(void); - -int consume(pb_file *, int); -int list_jar(int, char**, int); -int extract_jar(int, char**, int); -int add_file_to_jar(int, int, const char*, struct stat*, int); -int add_to_jar(int, const char*, int); -int add_to_jar_with_dir(int, const char*, const char*, int); -int create_central_header(int); -int make_manifest(int, const char*, int); -int read_entries (int); -static void init_args(char **, int); -static char *get_next_arg (void); -static char *jt_strdup (char*); -static void expand_options (int *argcp, char ***argvp); -static struct zipentry *find_entry (const char *); -static int looks_like_dir (const char *); - -/* global variables */ -ub1 file_header[30]; -ub1 data_descriptor[16]; -int do_compress; -int seekable; -int verbose; -char *jarfile; - -/* If non zero, then don't recurse in directory. Instead, add the - directory entry and relie on an explicit list of files to populate - the archive. This option isn't supported by the original jar tool. */ -int use_explicit_list_only; - -/* If non zero, then read the entry names from stdin. This option - isn't supported by the original jar tool. */ -int read_names_from_stdin; - -zipentry *ziplist; /* linked list of entries */ -zipentry *ziptail; /* tail of the linked list */ - -int number_of_entries; /* number of entries in the linked list */ - -/* What we go by. */ -const char *progname; - -/* The offset of the end of the last zip entry. */ -ub4 end_of_entries; - -/* This is used to mark options with no short value. */ -#define LONG_OPT(Num) ((Num) + 128) - -#define OPT_HELP LONG_OPT (0) - -/* This holds all options. */ -#define OPTION_STRING "-ctxuvVf:m:C:0MiE@" - -/* Define the MANIFEST content here to have it easier with calculations - below. This is for the case we create an empty MANIFEST.MF. */ -#define MANIFEST_STR "Manifest-Version: 1.0\nCreated-By: " -#define MANIFEST_END "\n\n" - -static const struct option options[] = -{ - { "help", no_argument, NULL, OPT_HELP }, - { "version", no_argument, NULL, 'V' }, - { NULL, no_argument, NULL, 0 } -}; - -int main(int argc, char **argv) -{ - - char *mfile = NULL; - - int action = ACTION_NONE; - int manifest = TRUE; - int opt; - - int jarfd = -1; - - /* These are used to collect file names and `-C' options for the - second pass through the command line. */ - int new_argc; - char **new_argv; - - progname = argv[0]; - - do_compress = TRUE; - verbose = FALSE; - - ziplist = NULL; - - number_of_entries = 0; - - if(argc < 2) - usage(argv[0]); - - new_argc = 0; - new_argv = (char **) malloc (argc * sizeof (char *)); - - expand_options (&argc, &argv); - while ((opt = getopt_long (argc, argv, OPTION_STRING, - options, NULL)) != -1) { - switch(opt){ - case 'C': - new_argv[new_argc++] = (char *) "-C"; - /* ... fall through ... */ - case 1: - /* File name or unparsed option, due to RETURN_IN_ORDER. */ - new_argv[new_argc++] = optarg; - break; - case 'c': - action = ACTION_CREATE; - break; - case 't': - action = ACTION_LIST; - break; - case 'x': - action = ACTION_EXTRACT; - break; - case 'u': - action = ACTION_UPDATE; - break; - case 'v': - verbose = TRUE; - break; - case 'V': - version(); - exit(0); - case 'f': - jarfile = optarg; - break; - case 'm': - mfile = optarg; - break; - case '0': - do_compress = FALSE; - break; - case 'M': - manifest = FALSE; - break; - case 'i': - action = ACTION_INDEX; - break; - - case OPT_HELP: - help(argv[0]); - break; - - /* The following options aren't supported by the original jar tool. */ - case 'E': - use_explicit_list_only = TRUE; - break; - case '@': - read_names_from_stdin = TRUE; - break; - default: - usage(argv[0]); - } - } - - if(verbose && action == ACTION_INDEX) - fprintf(stderr, "Warning: '-i' option is currently a no-op\n"); - - /* FIXME: implement -i option. */ - if(action == ACTION_INDEX) - exit(0); - - /* We might have seen `--'. In this case we want to make sure that - all following options are handled as file names. */ - while (optind < argc) - new_argv[new_argc++] = argv[optind++]; - new_argv[new_argc] = NULL; - - if(action == ACTION_NONE){ - fprintf(stderr, "%s: one of options -{ctxu} must be specified.\n", - progname); - usage(argv[0]); - } - - /* Verify unsupported combinations and warn of the use of non - standard features */ - if(verbose && use_explicit_list_only) - fprintf (stderr, "Warning: using non standard '-E' option\n"); - if(verbose && read_names_from_stdin) - fprintf (stderr, "Warning: using non standard '-@' option\n"); - if(read_names_from_stdin - && (action != ACTION_CREATE && action != ACTION_UPDATE)){ - fprintf(stderr, "%s: option '-@' is supported only with '-c' or '-u'.\n", - progname); - usage(argv[0]); - } - - /* create the jarfile */ - if(action == ACTION_CREATE){ - if(jarfile){ - jarfd = open(jarfile, O_CREAT | O_BINARY | O_WRONLY | O_TRUNC, 0666); - - if(jarfd < 0){ - fprintf(stderr, "%s: error opening %s for writing: %s\n", progname, - jarfile, strerror (errno)); - exit(1); - } - - /* We assume that the file is seekable */ - seekable = TRUE; - - } else { - - jarfd = STDOUT_FILENO; /* jarfd is stdout otherwise */ - - /* standard out is not seekable */ - seekable = FALSE; - - /* don't want our output to be part of the jar file.. figured this one - out the hard way.. =P */ - verbose = FALSE; - } - } else if(action == ACTION_LIST || action == ACTION_EXTRACT){ - - if(jarfile){ - jarfd = open(jarfile, O_RDONLY | O_BINARY); - - if(jarfd < 0){ - fprintf(stderr, "%s: error opening %s for reading: %s\n", progname, - jarfile, strerror (errno)); - exit(1); - } - - seekable = TRUE; - } else { - jarfd = STDIN_FILENO; /* jarfd is standard in */ - - /* we assume that the stream isn't seekable for safety */ - seekable = FALSE; - } - } - - if (action == ACTION_UPDATE) - { - if (!jarfile) - { - fprintf (stderr, "%s: `-u' mode requires a file name\n", - argv[0]); - exit (1); - } - - if ((jarfd = open (jarfile, O_RDWR | O_BINARY)) < 0) - { - fprintf (stderr, "Error opening %s for reading!\n", jarfile); - perror (jarfile); - exit (1); - } - - /* Assert that jarfd is seekable. */ - if (lseek (jarfd, 0, SEEK_CUR) == -1) - { - fprintf (stderr, "%s: %s is not seekable\n", argv[0], jarfile); - exit (1); - } - - seekable = TRUE; - } - - if(action == ACTION_CREATE || action == ACTION_UPDATE){ - const char *arg; - init_headers(); - - if(do_compress) - init_compression(); - - if (action == ACTION_UPDATE) - { - if (read_entries (jarfd)) - exit (1); - } - - /* Add the META-INF/ directory and the manifest */ - if(manifest && mfile) - make_manifest(jarfd, mfile, action == ACTION_UPDATE); - else if(manifest && action == ACTION_CREATE) - make_manifest(jarfd, NULL, FALSE); - - init_args (new_argv, 0); - /* now we add the files to the archive */ - while ((arg = get_next_arg ())){ - - if(!strcmp(arg, "-C")){ - const char *dir_to_change = get_next_arg (); - const char *file_to_add = get_next_arg (); - if (!dir_to_change || !file_to_add) { - fprintf(stderr, "%s: error: missing argument for -C.\n", progname); - exit(1); - } - if (add_to_jar_with_dir(jarfd, dir_to_change, file_to_add, - action == ACTION_UPDATE)) - { - fprintf(stderr, - "Error adding %s (in directory %s) to jar archive!\n", - file_to_add, dir_to_change); - exit(1); - } - } else { - if(add_to_jar(jarfd, arg, action == ACTION_UPDATE)){ - fprintf(stderr, "Error adding %s to jar archive!\n", arg); - exit(1); - } - } - } - /* de-initialize the compression DS */ - if(do_compress) - end_compression(); - - if (action == ACTION_UPDATE) - lseek (jarfd, end_of_entries, SEEK_SET); - - create_central_header(jarfd); - -#if ! (HAVE_FTRUNCATE || HAVE__CHSIZE) - #error neither ftruncate() or _chsize() available -#endif - /* Check if the file shrunk when we updated it. */ - if (action == ACTION_UPDATE) -#if HAVE_FTRUNCATE - ftruncate (jarfd, lseek (jarfd, 0, SEEK_CUR)); -#else - _chsize (jarfd, lseek (jarfd, 0, SEEK_CUR)); -#endif - - if (jarfd != STDIN_FILENO && close(jarfd) != 0) { - fprintf(stderr, "%s: error closing jar archive: %s\n", - progname, strerror (errno)); - exit (1); - } - } else if(action == ACTION_LIST){ - list_jar(jarfd, &new_argv[0], new_argc); - } else if(action == ACTION_EXTRACT){ - extract_jar(jarfd, &new_argv[0], new_argc); - } - - exit(0); -} - -static int args_current_g; -static char **args_g; - -static void -init_args(char **args, int current) -{ - if(!read_names_from_stdin) - { - args_g = args; - args_current_g = current; - } -} - -static char * -get_next_arg (void) -{ - static int reached_end = 0; - - if (reached_end) - return NULL; - - if (args_g) - { - if (!args_g [args_current_g]) - { - reached_end = 1; - return NULL; - } - return args_g [args_current_g++]; - } - else - { - /* Read the name from stdin. Delimiters are '\n' and - '\r'. Reading EOF indicates that we don't have anymore file - names characters to read. */ - - char s [MAXPATHLEN]; - int pos = 0; - - /* Get rid of '\n' and '\r' first. */ - while (1) - { - int c = getc (stdin); - if (c == '\n' || c == '\r') - continue; - else - { - if (c == EOF) - return NULL; - ungetc (c, stdin); - break; - } - } - - while (1) - { - int c = getc (stdin); - /* Exit when we get a delimiter or don't have any characters - to read */ - if (c == '\n'|| c == '\r'|| c == EOF) - break; - s [pos++] = (char) c; - } - - if (pos) - { - s [pos] = '\0'; - return jt_strdup (s); - } - else - return NULL; - } -} - -void init_headers(void) -{ - /* packing file header */ - /* magic number */ - file_header[0] = 0x50; - file_header[1] = 0x4b; - file_header[2] = 0x03; - file_header[3] = 0x04; - /* version number (Unix 1.0)*/ - file_header[4] = 10; - file_header[5] = 0; - /* bit flag (normal deflation)*/ - file_header[6] = 0x00; - - file_header[7] = 0x00; - /* do_compression method (deflation) */ - file_header[8] = 0; - file_header[9] = 0; - - /* last mod file time (MS-DOS format) */ - file_header[10] = 0; - file_header[11] = 0; - /* last mod file date (MS-DOS format) */ - file_header[12] = 0; - file_header[13] = 0; - /* CRC 32 */ - file_header[14] = 0; - file_header[15] = 0; - file_header[16] = 0; - file_header[17] = 0; - /* compressed size */ - file_header[18] = 0; - file_header[19] = 0; - file_header[20] = 0; - file_header[21] = 0; - /* uncompressed size */ - file_header[22] = 0; - file_header[23] = 0; - file_header[24] = 0; - file_header[25] = 0; - /* filename length */ - file_header[26] = 0; - file_header[27] = 0; - /* extra field length */ - file_header[28] = 0; - file_header[29] = 0; - - /* Initialize the compression DS */ - PACK_UB4(data_descriptor, 0, 0x08074b50); - -} - -void add_entry(struct zipentry *ze) -{ - - if(ziplist == NULL){ - ziplist = ze; - ziptail = ziplist; - } else { - ziplist->next_entry = ze; - ziplist = ze; - } - - number_of_entries++; -} - -static struct zipentry * -find_entry (const char *fname) -{ - struct zipentry *ze; - - for (ze = ziptail; ze; ze = ze->next_entry) - { - if (!strcmp (ze->filename, fname)) - return ze; - } - return NULL; -} - - -static int -looks_like_dir (const char *fname) -{ - struct zipentry *ze; - size_t len = strlen (fname); - - for (ze = ziptail; ze; ze = ze->next_entry) - { - if (strlen (ze->filename) > len - && !strncmp (fname, ze->filename, len) - && ze->filename[len] == '/') - return 1; - } - return 0; -} - - -/* - * Read the zip entries of an existing file, building `ziplist' as we go. - */ -int read_entries (int fd) -{ - struct zipentry *ze; - ub1 intbuf[4]; - ub1 header[46]; - ub2 len; - ub2 count, i; - off_t offset; - - if (lseek (fd, -22, SEEK_END) == -1) - { - fprintf (stderr, "%s: %s: can't seek file\n", progname, jarfile); - return 1; - } - - if (read (fd, intbuf, 4) < 4) - { - perror (progname); - return 1; - } - /* Is there a zipfile comment? */ - while (UNPACK_UB4(intbuf, 0) != 0x06054b50) - { - if (lseek (fd, -5, SEEK_CUR) == -1 || - read (fd, intbuf, 4) != 4) - { - fprintf (stderr, "%s: can't find end of central directory: %s\n", - progname, strerror (errno)); - return 1; - } - } - - /* Skip disk numbers. */ - if (lseek (fd, 6, SEEK_CUR) == -1) - { - perror (progname); - return 1; - } - - /* Number of entries in the central directory. */ - if (read (fd, intbuf, 2) != 2) - { - perror (progname); - return 1; - } - count = UNPACK_UB2(intbuf, 0); - - if (lseek (fd, 4, SEEK_CUR) == -1) - { - perror (progname); - return 1; - } - - /* Offset where the central directory begins. */ - if (read (fd, intbuf, 4) != 4) - { - perror (progname); - return 1; - } - offset = UNPACK_UB4(intbuf, 0); - end_of_entries = offset; - - if (lseek (fd, offset, SEEK_SET) != offset) - { - perror (progname); - return 1; - } - - if (read (fd, header, 46) != 46) - { - fprintf (stderr, "%s: %s: unexpected end of file\n", - progname, jarfile); - return 1; - } - - for (i = 0; i < count; i++) - { - if (UNPACK_UB4(header, 0) != 0x02014b50) - { - fprintf (stderr, "%s: can't find central directory header\n", - progname); - return 1; - } - ze = (struct zipentry *) malloc (sizeof (struct zipentry)); - if (!ze) - { - perror (progname); - return 1; - } - memset (ze, 0, sizeof (struct zipentry)); - ze->flags = UNPACK_UB2(header, CEN_FLAGS); - ze->mod_time = UNPACK_UB2(header, CEN_MODTIME); - ze->mod_date = UNPACK_UB2(header, CEN_MODDATE); - ze->crc = UNPACK_UB4(header, CEN_CRC); - ze->usize = UNPACK_UB4(header, CEN_USIZE); - ze->csize = UNPACK_UB4(header, CEN_CSIZE); - ze->offset = UNPACK_UB4(header, CEN_OFFSET); - ze->compressed = (header[CEN_COMP] || header[CEN_COMP+1]); - len = UNPACK_UB2(header, CEN_FNLEN); - ze->filename = (char *) malloc ((len+1) * sizeof (char)); - if (!ze->filename) - { - perror (progname); - return 1; - } - if (read (fd, ze->filename, len) != len) - { - fprintf (stderr, "%s: %s: unexpected end of file\n", - progname, jarfile); - return 1; - } - len = UNPACK_UB4(header, CEN_EFLEN); - len += UNPACK_UB4(header, CEN_COMLEN); - if (lseek (fd, len, SEEK_CUR) == -1) - { - perror (progname); - return 1; - } - add_entry (ze); - if (i < count - 1) - { - if (read (fd, header, 46) != 46) - { - fprintf (stderr, "%s: %s: unexpected end of file\n", - progname, jarfile); - return 1; - } - } - } - - lseek (fd, 0, SEEK_SET); - return 0; -} - -int make_manifest(int jfd, const char *mf_name, int updating) -{ - time_t current_time; - int nlen; /* length of file name */ - int mod_time; /* file modification time */ - struct zipentry *ze; - - nlen = 9; /* trust me on this one */ - - memset((file_header + 12), '\0', 16); /*clear mod time, crc, size fields*/ - - current_time = time(NULL); - if(current_time == (time_t)-1){ - perror("time"); - exit(1); - } - - mod_time = unix2dostime(¤t_time); - - PACK_UB2(file_header, LOC_EXTRA, 0); - PACK_UB2(file_header, LOC_COMP, 0); - PACK_UB2(file_header, LOC_FNLEN, nlen); - PACK_UB4(file_header, LOC_MODTIME, mod_time); - - if(verbose) - printf("adding: META-INF/ (in=0) (out=0) (stored 0%%)\n"); - - ze = (zipentry*)malloc(sizeof(zipentry)); - if(ze == NULL){ - perror("malloc"); - exit(1); - } - - memset(ze, 0, sizeof(zipentry)); /* clear all the fields*/ - ze->filename = (char*)malloc((nlen + 1) * sizeof(char) + 1); - strcpy(ze->filename, "META-INF/"); - ze->filename[nlen] = '\0'; - - ze->offset = lseek(jfd, 0, SEEK_CUR); - ze->mod_time = (ub2)(mod_time & 0x0000ffff); - ze->mod_date = (ub2)((mod_time & 0xffff0000) >> 16); - ze->compressed = FALSE; - - add_entry(ze); - - write(jfd, file_header, 30); - write(jfd, "META-INF/", nlen); - - /* if the user didn't specify an external manifest file... */ - if(mf_name == NULL){ - - int mf_len = strlen(MANIFEST_STR) + strlen(VERSION) + strlen(MANIFEST_END); - char *mf; - - if((mf = (char *) malloc(mf_len + 1))) { - uLong crc; - - sprintf(mf, "%s%s%s", MANIFEST_STR, VERSION, MANIFEST_END); - - crc = crc32(0L, Z_NULL, 0); - - crc = crc32(crc, (const unsigned char *)mf, mf_len); - - nlen = 20; /* once again, trust me */ - - PACK_UB2(file_header, LOC_EXTRA, 0); - PACK_UB2(file_header, LOC_COMP, 0); - PACK_UB2(file_header, LOC_FNLEN, nlen); - PACK_UB4(file_header, LOC_USIZE, mf_len); - - memcpy((file_header + LOC_CSIZE), (file_header + LOC_USIZE), 4); - - PACK_UB4(file_header, LOC_CRC, crc); - - if(verbose) - printf("adding: META-INF/MANIFEST.MF (in=56) (out=56) (stored 0%%)\n"); - - ze = (zipentry*)malloc(sizeof(zipentry)); - if(ze == NULL){ - perror("malloc"); - exit(1); - } - - memset(ze, 0, sizeof(zipentry)); /* clear all the fields*/ - ze->filename = (char*)malloc((nlen + 1) * sizeof(char) + 1); - strcpy(ze->filename, "META-INF/MANIFEST.MF"); - ze->filename[nlen] = '\0'; - - ze->offset = lseek(jfd, 0, SEEK_CUR); - ze->mod_time = (ub2)(mod_time & 0x0000ffff); - ze->mod_date = (ub2)((mod_time & 0xffff0000) >> 16); - ze->crc = crc; - ze->csize = mf_len; - ze->usize = ze->csize; - ze->compressed = FALSE; - - add_entry(ze); - - write(jfd, file_header, 30); - write(jfd, "META-INF/MANIFEST.MF", nlen); - write(jfd, mf, mf_len); - free(mf); - } - else { - printf("malloc errror\n"); - exit(-1); - } - } else { - int mfd; - struct stat statbuf; - - stat(mf_name, &statbuf); - - if(!S_ISREG(statbuf.st_mode)){ - fprintf(stderr, "Invalid manifest file specified.\n"); - exit(1); - } - - mfd = open(mf_name, O_RDONLY | O_BINARY); - - if(mfd < 0){ - fprintf(stderr, "Error opening %s.\n", mf_name); - exit(1); - } - - if(add_file_to_jar(jfd, mfd, "META-INF/MANIFEST.MF", &statbuf, updating)){ - perror("error writing to jar"); - exit(1); - } - - } - - return 0; -} - -/* Implements -C by wrapping add_to_jar. new_dir is the directory - to switch to. - - `updating', if nonzero, will indicate that we are updating an - existing file, and will need to take special care. If set, we will - also expect that the linked list of zip entries will be filled in - with the jar file's current contents. - */ -int -add_to_jar_with_dir (int fd, const char* new_dir, const char* file, - const int updating) -{ - int retval; - char old_dir[MAXPATHLEN]; - if (getcwd(old_dir, MAXPATHLEN) == NULL) { - perror("getcwd"); - return 1; - } - if (chdir(new_dir) == -1) { - perror(new_dir); - return 1; - } - retval=add_to_jar(fd, file, updating); - if (chdir(old_dir) == -1) { - perror(old_dir); - return 1; - } - return retval; -} - -int -add_to_jar (int fd, const char *file, const int updating) -{ - struct stat statbuf; - DIR *dir; - struct dirent *de; - zipentry *ze; - zipentry *existing = NULL; - int stat_return; - - /* This is a quick compatibility fix -- Simon Weijgers - * It fixes this: - * "normal" jar : org/apache/java/io/LogRecord.class - * fastjar : ./org/apache/java/io/LogRecord.class - * Fastjar's preservation of the ./'s makes the jarfile unusuable for use - * with both kaffe-1.0b4 and JDK. - */ - while (*file=='.' && *(file+1)=='/') - file+=2; - - if(jarfile && !strcmp(file, jarfile)){ - if(verbose) - printf("skipping: %s\n", file); - return 0; /* we don't want to add ourselves.. */ - } - - stat_return = stat(file, &statbuf); - - if(stat_return == -1){ - perror(file); - return 1; - } else if(S_ISDIR(statbuf.st_mode)){ - char *fullname; - char *t_ptr; - int nlen; - unsigned long mod_time; - - dir = opendir(file); - - if(dir == NULL){ - perror("opendir"); - return 1; - } - - nlen = strlen(file) + 256; - fullname = (char*)malloc(nlen * sizeof(char)); - memset(fullname, 0, (nlen * sizeof(char))); - - if(fullname == NULL){ - fprintf(stderr, "Filename is NULL!\n"); - return 1; - } - - strcpy(fullname, file); - nlen = strlen(file); - - if(fullname[nlen - 1] != '/'){ - fullname[nlen] = '/'; - t_ptr = (fullname + nlen + 1); - } else - t_ptr = (fullname + nlen); - - - memset((file_header + 12), '\0', 16); /*clear mod time, crc, size fields*/ - - nlen = (t_ptr - fullname); - - mod_time = unix2dostime(&statbuf.st_mtime); - - PACK_UB2(file_header, LOC_EXTRA, 0); - PACK_UB2(file_header, LOC_COMP, 0); - PACK_UB2(file_header, LOC_FNLEN, nlen); - PACK_UB4(file_header, LOC_MODTIME, mod_time); - - ze = (zipentry*)malloc(sizeof(zipentry)); - if(ze == NULL){ - perror("malloc"); - exit(1); - } - - memset(ze, 0, sizeof(zipentry)); /* clear all the fields*/ - ze->filename = (char*)malloc((nlen + 1) * sizeof(char) + 1); - strcpy(ze->filename, fullname); - ze->filename[nlen] = '\0'; - - ze->offset = lseek(fd, 0, SEEK_CUR); - ze->mod_time = (ub2)(mod_time & 0x0000ffff); - ze->mod_date = (ub2)((mod_time & 0xffff0000) >> 16); - ze->compressed = FALSE; - - if (updating) - { - if ((existing = find_entry (ze->filename)) != NULL) - { - if (existing->usize != 0) - { - /* XXX overwriting non-directory with directory? */ - fprintf (stderr, "%s: %s: can't overwrite non-directory with directory\n", - progname, fullname); - return 1; - } - } - if (lseek (fd, end_of_entries, SEEK_SET) == -1) - { - fprintf (stderr, "%s %d\n", __FILE__, __LINE__); - perror ("lseek"); - return 1; - } - } - - if (!existing) - { - add_entry (ze); - write (fd, file_header, 30); - write (fd, fullname, nlen); - end_of_entries = lseek (fd, 0, SEEK_CUR); - - if (verbose) - printf ("adding: %s (in=%d) (out=%d) (stored 0%%)\n", fullname, 0, 0); - } - - while(!use_explicit_list_only && (de = readdir(dir)) != NULL){ - if(de->d_name[0] == '.') - continue; - if(jarfile && !strcmp(de->d_name, jarfile)){ - /* we don't want to add ourselves. Believe me */ - if(verbose) - printf("skipping: %s\n", de->d_name); - continue; - } - - strcpy(t_ptr, de->d_name); - - if (add_to_jar(fd, fullname, updating)) { - fprintf(stderr, "Error adding file to jar!\n"); - return 1; - } - } - - free(fullname); - closedir(dir); - - } else if(S_ISREG(statbuf.st_mode)){ - int add_fd; - - add_fd = open(file, O_RDONLY | O_BINARY); - if(add_fd < 0){ - fprintf(stderr, "Error opening %s.\n", file); - return 1; - } - - if(add_file_to_jar(fd, add_fd, file, &statbuf, updating)){ - fprintf(stderr, "Error adding file to jar!\n"); - return 1; - } - - } else { - fprintf(stderr, "Illegal file specified: %s\n", file); - } - return 0; -} - -int add_file_to_jar(int jfd, int ffd, const char *fname, struct stat *statbuf, - const int updating) -{ - unsigned short file_name_length; - unsigned long mod_time; - ub1 rd_buff[RDSZ]; - uLong crc = 0; - off_t offset = 0; - int rdamt; - struct zipentry *ze; - struct zipentry *existing = NULL; - - if (updating) - { - existing = find_entry (fname); - if (existing && looks_like_dir (fname)) - { - fprintf (stderr, "%s: %s is a directory in the archive\n", - progname, fname); - return 1; - } - } - - mod_time = unix2dostime(&(statbuf->st_mtime)); - file_name_length = strlen(fname); - - if(!seekable && !do_compress){ - crc = crc32(0L, Z_NULL, 0); - - while((rdamt = read(ffd, rd_buff, RDSZ)) != 0) - crc = crc32(crc, rd_buff, rdamt); - - lseek(ffd, 0, SEEK_SET); - } - - /* data descriptor */ - if(!seekable && do_compress){ - PACK_UB2(file_header, LOC_EXTRA, 8); - } else { - PACK_UB2(file_header, LOC_EXTRA, 0); - } - - if(do_compress){ - PACK_UB2(file_header, LOC_COMP, 8); - } else { - PACK_UB2(file_header, LOC_COMP, 0); - } - - PACK_UB4(file_header, LOC_MODTIME, mod_time); - PACK_UB2(file_header, LOC_FNLEN, file_name_length); - - if(!seekable && !do_compress){ - PACK_UB4(file_header, LOC_CRC, crc); - PACK_UB4(file_header, LOC_USIZE, statbuf->st_size); - PACK_UB4(file_header, LOC_CSIZE, statbuf->st_size); - } else - memset((file_header + LOC_CRC), '\0', 12); /* clear crc/usize/csize */ - - ze = (zipentry*)malloc(sizeof(zipentry)); - if(ze == NULL){ - perror("malloc"); - exit(1); - } - - memset(ze, 0, sizeof(zipentry)); /* clear all the fields*/ - ze->filename = (char*)malloc((file_name_length + 1) * sizeof(char)); - strcpy(ze->filename, fname); - - ze->mod_time = (ub2)(mod_time & 0x0000ffff); - ze->mod_date = (ub2)((mod_time & 0xffff0000) >> 16); - - if(!seekable && !do_compress) - ze->crc = crc; - - ze->csize = statbuf->st_size; - ze->usize = ze->csize; - - if (existing) - ze->offset = existing->offset; - else if (updating) - ze->offset = end_of_entries; - else - ze->offset = lseek(jfd, 0, SEEK_CUR); - - if(do_compress) - ze->compressed = TRUE; - else - ze->compressed = FALSE; - - if (!existing) - add_entry(ze); - if (updating && lseek (jfd, ze->offset, SEEK_SET) < 0) - { - perror ("lseek"); - return 1; - } - - /* We can safely write the header here, since it will be the same size - as before */ - - /* Write the local header */ - write(jfd, file_header, 30); - - /* write the file name to the zip file */ - write(jfd, fname, file_name_length); - - - if(verbose){ - if (existing) - printf ("updating: %s ", fname); - else - printf("adding: %s ", fname); - fflush(stdout); - } - - if(do_compress){ - /* compress the file */ - compress_file(ffd, jfd, ze, existing); - } else { - /* If we are not writing the last entry, make space for it. */ - if (existing && existing->next_entry) - { - if (ze->usize > existing->usize) - { - if (shift_down (jfd, existing->next_entry->offset, - ze->usize - existing->usize, existing->next_entry)) - { - fprintf (stderr, "%s: %s\n", progname, strerror (errno)); - return 1; - } - } - } - - /* Write the contents of the file (uncompressed) to the zip file */ - /* calculate the CRC as we go along */ - ze->crc = crc32(0L, Z_NULL, 0); - - while((rdamt = read(ffd, rd_buff, RDSZ)) != 0){ - ze->crc = crc32(ze->crc, rd_buff, rdamt); - if(write(jfd, rd_buff, rdamt) != rdamt){ - perror("write"); - return 0; - } - } - } - close(ffd); - - /* write out data descriptor */ - PACK_UB4(data_descriptor, 4, ze->crc); - PACK_UB4(data_descriptor, 8, ze->csize); - PACK_UB4(data_descriptor, 12, ze->usize); - - /* we need to seek back and fill the header */ - if(seekable){ - offset = (ze->csize + strlen(ze->filename) + 16); - - if(lseek(jfd, -offset, SEEK_CUR) == (off_t)-1){ - perror("lseek"); - exit(1); - } - - if(write(jfd, (data_descriptor + 4), 12) != 12){ - perror("write"); - return 0; - } - - offset -= 12; - - if(lseek(jfd, offset, SEEK_CUR) == (off_t)-1){ - perror("lseek"); - exit(1); - } - } else if(do_compress){ - /* Sun's jar tool will only allow a data descriptor if the entry is - compressed, but we'll save 16 bytes/entry if we only use it when - we can't seek back on the file */ - /* Technically, you CAN'T have a data descriptor unless the data - part has an obvious end, which DEFLATED does. Otherwise, there - would not be any way to determine where the data descriptor is. - Store an uncompressed file that ends with 0x504b0708, and see. - -- csm */ - - if(write(jfd, data_descriptor, 16) != 16){ - perror("write"); - return 0; - } - } - - if (existing) - { - int dd = (existing->flags & (1 << 3)) ? 12 : 0; - if (existing->next_entry && ze->csize < existing->csize + dd) - { - if (shift_up (jfd, existing->next_entry->offset, - existing->csize + dd - ze->csize, - existing->next_entry)) - { - perror (progname); - return 1; - } - } - /* Replace the existing entry data with this entry's. */ - existing->csize = ze->csize; - existing->usize = ze->usize; - existing->crc = ze->crc; - existing->mod_time = ze->mod_time; - existing->mod_date = ze->mod_date; - free (ze->filename); - free (ze); - } - else if (updating) - end_of_entries = lseek (jfd, 0, SEEK_CUR); - - if(verbose) - printf("(in=%d) (out=%d) (%s %d%%)\n", - (int)ze->usize, (int)ze->csize, - (do_compress ? "deflated" : "stored"), - (do_compress ? ((int)((1 - ze->csize/(float)ze->usize) * 100)) : 0)); - - return 0; -} - -int create_central_header(int fd){ - ub1 header[46]; - ub1 end_header[22]; - int start_offset; - int dir_size; - int total_in = 0, total_out = 22; - - zipentry *ze; - - /* magic number */ - header[0] = 'P'; - header[1] = 'K'; - header[2] = 1; - header[3] = 2; - /* version made by */ - header[4] = 10; - header[5] = 0; - /* version needed to extract */ - header[6] = 10; - header[7] = 0; - /* bit flag */ - header[8] = 0; - header[9] = 0; - /* compression method */ - header[10] = 0; - header[11] = 0; - /* file mod time */ - header[12] = 0; - header[13] = 0; - /* file mod date */ - header[14] = 0; - header[15] = 0; - /* crc 32 */ - header[16] = 0; - header[17] = 0; - header[18] = 0; - header[19] = 0; - /* compressed size */ - header[20] = 0; - header[21] = 0; - header[22] = 0; - header[23] = 0; - /* uncompressed size */ - header[24] = 0; - header[25] = 0; - header[26] = 0; - header[27] = 0; - /* filename length */ - header[28] = 0; - header[29] = 0; - /* extra field length */ - header[30] = 0; - header[31] = 0; - /* file comment length */ - header[32] = 0; - header[33] = 0; - /* disk number start */ - header[34] = 0; - header[35] = 0; - /* internal file attribs */ - header[36] = 0; - header[37] = 0; - /* external file attribs */ - header[38] = 0; - header[39] = 0; - header[40] = 0; - header[41] = 0; - /* relative offset of local header */ - header[42] = 0; - header[43] = 0; - header[44] = 0; - header[45] = 0; - - start_offset = lseek(fd, 0, SEEK_CUR); - - for(ze = ziptail; ze != NULL; ze = ze->next_entry){ - - total_in += ze->usize; - total_out += ze->csize + 76 + strlen(ze->filename) * 2; - - if(ze->compressed){ - PACK_UB2(header, CEN_COMP, 8); - } else { - PACK_UB2(header, CEN_COMP, 0); - } - - PACK_UB2(header, CEN_MODTIME, ze->mod_time); - PACK_UB2(header, CEN_MODDATE, ze->mod_date); - PACK_UB4(header, CEN_CRC, ze->crc); - PACK_UB4(header, CEN_CSIZE, ze->csize); - PACK_UB4(header, CEN_USIZE, ze->usize); - PACK_UB2(header, CEN_FNLEN, strlen(ze->filename)); - PACK_UB4(header, CEN_OFFSET, ze->offset); - - write(fd, header, 46); - - write(fd, ze->filename, strlen(ze->filename)); - } - - dir_size = lseek(fd, 0, SEEK_CUR) - start_offset; - - /* magic number */ - end_header[0] = 0x50; - end_header[1] = 0x4b; - end_header[2] = 0x05; - end_header[3] = 0x06; - /* number of this disk */ - end_header[4] = 0; - end_header[5] = 0; - /* number of disk w/ start of central header */ - end_header[6] = 0; - end_header[7] = 0; - /* total number of entries in central dir on this disk*/ - PACK_UB2(end_header, 8, number_of_entries); - /* total number of entries in central dir*/ - PACK_UB2(end_header, 10, number_of_entries); - /* size of central dir. */ - PACK_UB4(end_header, 12, dir_size); - /* offset of start of central dir */ - PACK_UB4(end_header, 16, start_offset); - /* zipfile comment length */ - end_header[20] = 0; - end_header[21] = 0; - - write(fd, end_header, 22); - - if(verbose) - printf("Total:\n------\n(in = %d) (out = %d) (%s %d%%)\n", - total_in, - total_out, - (do_compress ? "deflated" : "stored"), - (int)((1 - (total_out / (float)total_in)) * 100) - ); - - return 0; -} - -int extract_jar(int fd, char **files, int file_num){ - int rdamt; - int out_a, in_a; - ub4 signature; - ub4 csize; - ub4 crc; - ub2 fnlen; - ub2 eflen; - ub2 flags; - ub2 method; - ub1 *filename = NULL; - int filename_len = 0; - ub4 rd_buff[RDSZ]; - pb_file pbf; - ub1 scratch[16]; - zipentry ze; - int f_fd; - int dir; - int handle; - int j; - - init_inflation(); - - pb_init(&pbf, fd); - - for(;;){ - f_fd = 0; - crc = 0; - ze.crc = 0; - - dir = FALSE; /* by default, the file isn't a dir */ - handle = TRUE; /* by default we'll extract/create the file */ - - if((rdamt = pb_read(&pbf, scratch, 4)) != 4){ - perror("read"); - break; - } - - signature = UNPACK_UB4(scratch, 0); - -#ifdef DEBUG - printf("signature is %x\n", signature); -#endif - if(signature == 0x08074b50){ -#ifdef DEBUG - printf("skipping data descriptor\n"); -#endif - pb_read(&pbf, scratch, 12); - continue; - } else if(signature == 0x02014b50){ -#ifdef DEBUG - printf("Central header reached.. we're all done!\n"); -#endif - break; - }else if(signature != 0x04034b50){ - printf("Ick! %#x\n", signature); - break; - } - - if((rdamt = pb_read(&pbf, (file_header + 4), 26)) != 26){ - perror("read"); - break; - } - - csize = UNPACK_UB4(file_header, LOC_CSIZE); -#ifdef DEBUG - printf("Compressed size is %u\n", csize); -#endif - - fnlen = UNPACK_UB2(file_header, LOC_FNLEN); -#ifdef DEBUG - printf("Filename length is %hu\n", fnlen); -#endif - - eflen = UNPACK_UB2(file_header, LOC_EFLEN); -#ifdef DEBUG - printf("Extra field length is %hu\n", eflen); -#endif - - flags = UNPACK_UB2(file_header, LOC_EXTRA); -#ifdef DEBUG - printf("Flags are %#hx\n", flags); -#endif - - method = UNPACK_UB2(file_header, LOC_COMP); -#ifdef DEBUG - printf("Compression method is %#hx\n", method); -#endif - - /* if there isn't a data descriptor */ - if(!(flags & 0x0008)){ - crc = UNPACK_UB4(file_header, LOC_CRC); -#ifdef DEBUG - printf("CRC is %x\n", crc); -#endif - } - - if(filename_len < fnlen + 1){ - if(filename != NULL) - free(filename); - - filename = malloc(sizeof(ub1) * (fnlen + 1)); - filename_len = fnlen + 1; - } - - pb_read(&pbf, filename, fnlen); - filename[fnlen] = '\0'; - -#ifdef DEBUG - printf("filename is %s\n", filename); -#endif - - if(file_num > 0){ - handle = FALSE; - - for(j = 0; j < file_num; j++) - if(strcmp(files[j], (const char *)filename) == 0){ - handle = TRUE; - break; - } - } - - if(!handle) - f_fd = -1; - - /* OK, there is some directory information in the file. Nothing to do - but ensure the directory(s) exist, and create them if they don't. - What a pain! */ - if(strchr((const char *)filename, '/') != NULL && handle){ - /* Loop through all the directories in the path, (everything w/ a '/') */ - const ub1 *start = filename; - char *tmp_buff; - struct stat sbuf; - - tmp_buff = malloc(sizeof(char) * strlen((const char *)filename)); - - for(;;){ - const ub1 *idx = (const unsigned char *)strchr((const char *)start, '/'); - - if(idx == NULL) - break; - else if(idx == start){ - start++; - continue; - } - start = idx + 1; - - strncpy(tmp_buff, (const char *)filename, (idx - filename)); - tmp_buff[(idx - filename)] = '\0'; - -#ifdef DEBUG - printf("checking the existance of %s\n", tmp_buff); -#endif - - if(stat(tmp_buff, &sbuf) < 0){ - if(errno != ENOENT){ - perror("stat"); - exit(1); - } - - } else if(S_ISDIR(sbuf.st_mode)){ -#ifdef DEBUG - printf("Directory exists\n"); -#endif - continue; - }else { - fprintf(stderr, "Hmmm.. %s exists but isn't a directory!\n", - tmp_buff); - exit(1); - } - -#ifdef DEBUG - printf("Making directory..\n"); -#endif - if(mkdir(tmp_buff, 0755) < 0){ - perror("mkdir"); - exit(1); - } - if(verbose && handle) - printf("%10s: %s/\n", "created", tmp_buff); - - } - - /* only a directory */ - if(strlen((const char *)start) == 0) - dir = TRUE; - -#ifdef DEBUG - printf("Leftovers are \"%s\" (%d)\n", start, strlen((const char *)start)); -#endif - - /* If the entry was just a directory, don't write to file, etc */ - if(strlen((const char *)start) == 0) - f_fd = -1; - - free(tmp_buff); - } - - if(f_fd != -1 && handle){ - f_fd = open((const char *)filename, - O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0644); - - if(f_fd < 0){ - fprintf(stderr, "Error extracting JAR archive!\n"); - perror((const char *)filename); - exit(1); - } - } - - if(method != 8 && flags & 0x0008){ - fprintf(stderr, "Error in JAR file! (not compressed but data desc.)\n"); - exit(1); - } - - if (eflen > 0) - consume(&pbf, eflen); - - if(method == 8 || flags & 0x0008){ - - inflate_file(&pbf, f_fd, &ze); - } else { - -#ifdef DEBUG - printf("writing stored data.. (%d bytes)\n", csize); -#endif - - out_a = 0; - in_a = csize; - - ze.crc = crc32(ze.crc, NULL, 0); /* initialize the crc */ - - while(out_a < (int)csize){ - rdamt = (in_a > RDSZ ? RDSZ : in_a); - if(pb_read(&pbf, rd_buff, rdamt) != rdamt){ - perror("read"); - exit(1); - } - - ze.crc = crc32(ze.crc, (Bytef*)rd_buff, rdamt); - - if(f_fd >= 0) - write(f_fd, rd_buff, rdamt); - - out_a += rdamt; - in_a -= rdamt; - -#ifdef DEBUG - printf("%d bytes written\n", out_a); -#endif - } - } - - /* if there is a data descriptor left, compare the CRC */ - if(flags & 0x0008){ - - if(pb_read(&pbf, scratch, 16) != 16){ - perror("read"); - exit(1); - } - - signature = UNPACK_UB4(scratch, 0); - - if(signature != 0x08074b50){ - fprintf(stderr, "Error! Missing data descriptor!\n"); - exit(1); - } - - crc = UNPACK_UB4(scratch, 4); - - } - - if(crc != ze.crc){ - fprintf(stderr, "Error! CRCs do not match! Got %x, expected %x\n", - ze.crc, crc); - exit(1); - } - - close(f_fd); - - if(verbose && dir == FALSE && handle) - printf("%10s: %s\n", - (method == 8 ? "inflated" : "extracted"), - filename); - } - - return 0; -} - -int list_jar(int fd, char **files, int file_num){ - ub4 signature; - ub4 csize; - ub4 usize; - ub4 mdate; - ub4 tmp; - ub2 fnlen; - ub2 eflen; - ub2 clen; - ub2 flags; - ub2 method; - ub2 cen_size; - ub1 *filename = NULL; - ub1 scratch[16]; - ub1 cen_header[46]; - int filename_len = 0; - off_t size; - int i, j; - time_t tdate; - struct tm *s_tm; - char ascii_date[31]; - zipentry ze; - -#ifdef DEBUG - printf("Listing jar file, looking for %d files\n", file_num); -#endif - - /* This should be the start of the central-header-end section */ - if(seekable){ - if(lseek(fd, -22, SEEK_END) == (off_t)-1){ - perror("lseek"); - exit(1); - } - - if(read(fd, &tmp, sizeof(ub4)) != 4){ - perror("read"); - exit(1); - } - -#ifdef WORDS_BIGENDIAN - tmp = L2BI(tmp); -#endif - - if(tmp != 0x06054b50){ - fprintf(stderr, "Error in JAR file format. zip-style comment?\n"); - exit(1); - } - - if(lseek(fd, 6, SEEK_CUR) == (off_t)-1){ - perror("lseek"); - exit(1); - } - - if(read(fd, &cen_size, 2) != 2){ - perror("read"); - exit(1); - } - -#ifdef WORDS_BIGENDIAN - cen_size = L2BS(cen_size); -#endif - - /* printf("%hu entries in central header\n", cen_size); */ - - if(lseek(fd, 4, SEEK_CUR) == (off_t)-1){ - perror("lseek"); - exit(1); - } - - if(read(fd, &tmp, 4) != 4){ - perror("read"); - exit(1); - } - -#ifdef WORDS_BIGENDIAN - tmp = L2BI(tmp); -#endif - - /* printf("Central header offset = %d\n", tmp); */ - - if(lseek(fd, tmp, SEEK_SET) != (int)tmp){ - perror("lseek"); - exit(1); - } - - /* Loop through the entries in the central header */ - for(i = 0; i < cen_size; i++){ - - if(read(fd, &cen_header, 46) != 46){ - perror("read"); - exit(1); - } - - signature = UNPACK_UB4(cen_header, 0); - if(signature != 0x02014b50){ - fprintf(stderr, "Error in JAR file! Cannot locate central header!\n"); - exit(1); - } - - usize = UNPACK_UB4(cen_header, CEN_USIZE); - fnlen = UNPACK_UB2(cen_header, CEN_FNLEN); - eflen = UNPACK_UB2(cen_header, CEN_EFLEN); - clen = UNPACK_UB2(cen_header, CEN_COMLEN); - - /* If we're providing verbose output, we need to make an ASCII - * formatted version of the date. */ - if(verbose){ - mdate = UNPACK_UB4(cen_header, CEN_MODTIME); - tdate = dos2unixtime(mdate); - s_tm = localtime(&tdate); - strftime(ascii_date, 30, "%a %b %d %H:%M:%S %Z %Y", s_tm); - ascii_date[30] = '\0'; - } - - if(filename_len < fnlen + 1){ - if(filename != NULL) - free(filename); - - filename = malloc(sizeof(ub1) * (fnlen + 1)); - filename_len = fnlen + 1; - } - - if(read(fd, filename, fnlen) != fnlen){ - perror("read"); - exit(1); - } - filename[fnlen] = '\0'; - - /* if the user specified a list of files on the command line, - we'll only display those, otherwise we'll display everything */ - if(file_num > 0){ - for(j = 0; j < file_num; j++) - if(strcmp(files[j], (const char *)filename) == 0){ - if(verbose) - printf("%6d %s %s\n", usize, ascii_date, filename); - else - printf("%s\n", filename); - break; - } - } else { - if(verbose) - printf("%6d %s %s\n", usize, ascii_date, filename); - else - printf("%s\n", filename); - } - - size = eflen + clen; - if(size > 0){ - if(lseek(fd, size, SEEK_CUR) == (off_t)-1){ - perror("lseek"); - exit(1); - } - } - } - } else { - /* the file isn't seekable.. evil! */ - pb_file pbf; - - pb_init(&pbf, fd); - - init_inflation(); - - for(;;){ - if(pb_read(&pbf, scratch, 4) != 4){ - perror("read"); - break; - } - - signature = UNPACK_UB4(scratch, 0); - -#ifdef DEBUG - printf("signature is %x\n", signature); -#endif - - if(signature == 0x08074b50){ -#ifdef DEBUG - printf("skipping data descriptor\n"); -#endif - pb_read(&pbf, scratch, 12); - continue; - } else if(signature == 0x02014b50){ -#ifdef DEBUG - printf("Central header reached.. we're all done!\n"); -#endif - break; - }else if(signature != 0x04034b50){ -#ifdef DEBUG - printf("Ick! %#x\n", signature); -#endif - break; - } - - if(pb_read(&pbf, (file_header + 4), 26) != 26){ - perror("read"); - break; - } - - csize = UNPACK_UB4(file_header, LOC_CSIZE); -#ifdef DEBUG - printf("Compressed size is %u\n", csize); -#endif - - fnlen = UNPACK_UB2(file_header, LOC_FNLEN); -#ifdef DEBUG - printf("Filename length is %hu\n", fnlen); -#endif - - eflen = UNPACK_UB2(file_header, LOC_EFLEN); -#ifdef DEBUG - printf("Extra field length is %hu\n", eflen); -#endif - - method = UNPACK_UB2(file_header, LOC_COMP); -#ifdef DEBUG - printf("Compression method is %#hx\n", method); -#endif - - flags = UNPACK_UB2(file_header, LOC_EXTRA); -#ifdef DEBUG - printf("Flags are %#hx\n", flags); -#endif - - usize = UNPACK_UB4(file_header, LOC_USIZE); - - /* If we're providing verbose output, we need to make an ASCII - * formatted version of the date. */ - if(verbose){ - mdate = UNPACK_UB4(file_header, LOC_MODTIME); - tdate = dos2unixtime(mdate); - s_tm = localtime(&tdate); - strftime(ascii_date, 30, "%a %b %d %H:%M:%S %Z %Y", s_tm); - } - - if(filename_len < fnlen + 1){ - if(filename != NULL) - free(filename); - - filename = malloc(sizeof(ub1) * (fnlen + 1)); - ascii_date[30] = '\0'; - filename_len = fnlen + 1; - } - - pb_read(&pbf, filename, fnlen); - filename[fnlen] = '\0'; - - /* the header is at the end. In a JAR file, this means that the data - happens to be compressed. We have no choice but to inflate the - data */ - if(flags & 0x0008){ - - size = eflen; - - if(size > 0) - consume(&pbf, size); - - if(method == 8){ -#ifdef DEBUG - printf("inflating %s\n", filename); -#endif - inflate_file(&pbf, -1, &ze); - - usize = ze.usize; - } else - printf("We're shit outta luck!\n"); - - } else { - size = csize + (eflen > 0 ? eflen : 0); - - -#ifdef DEBUG - printf("Skipping %ld bytes\n", (long)size); -#endif - - consume(&pbf, size); - } - /* print out the listing */ - if(file_num > 0){ - for(j = 0; j < file_num; j++) - if(strcmp(files[j], (const char *)filename) == 0){ - if(verbose) - printf("%6d %s %s\n", usize, ascii_date, filename); - else - printf("%s\n", filename); - break; - } - } else { - if(verbose) - printf("%6d %s %s\n", usize, ascii_date, filename); - else - printf("%s\n", filename); - } - } - } - return 0; -} - -int consume(pb_file *pbf, int amt){ - int tc = 0; /* total amount consumed */ - ub1 buff[RDSZ]; - int rdamt; - -#ifdef DEBUG - printf("Consuming %d bytes\n", amt); -#endif - - if (seekable){ - if (amt <= (int)pbf->buff_amt) - pb_read(pbf, buff, amt); - else { - lseek(pbf->fd, amt - pbf->buff_amt, SEEK_CUR); - pb_read(pbf, buff, pbf->buff_amt); /* clear pbf */ - } - } else - while(tc < amt){ - rdamt = pb_read(pbf, buff, ((amt - tc) < RDSZ ? (amt - tc) : RDSZ)); -#ifdef DEBUG - printf("got %d bytes\n", rdamt); -#endif - tc += rdamt; - } - -#ifdef DEBUG - printf("%d bytes consumed\n", amt); -#endif - - return 0; -} - -void usage(const char *filename){ - fprintf(stderr, "Try `%s --help' for more information.\n", filename); - exit (1); -} - -void version (void) -{ - printf("jar (%s) %s\n\n", PACKAGE, VERSION); - printf("Copyright 1999, 2000, 2001 Bryan Burns\n"); - printf("Copyright 2006 Free Software Foundation\n"); - printf("\ -This is free software; see the source for copying conditions. There is NO\n\ -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"); - exit (0); -} - -void help(const char *filename) -{ - printf("\ -Usage: %s {ctxuV}[vfm0ME@] [jar-file] [manifest-file] [-C dir] files ...\n\ -\n\ -Store many files together in a single `jar' file.\n\ -\n\ - -c create new archive\n\ - -t list table of contents for archive\n\ - -x extract named (or all) files from archive\n\ - -u update existing archive\n\ -", filename); - printf("\n\ - -@ read names from stdin\n\ - -0 store only; use no ZIP compression\n\ - -C DIR FILE change to the specified directory and include\n\ - the following file\n\ - -E don't include the files found in a directory\n\ - -f FILE specify archive file name\n\ - --help print this help, then exit\n\ -"); - printf("\ - -m FILE include manifest information from specified manifest file\n\ - -M Do not create a manifest file for the entries\n\ - -i generate an index of the packages in this jar\n\ - and its Class-Path (currently unimplemented)\n\ - -v generate verbose output on standard output\n\ - -V, --version display version information\n\ -"); - printf("\n\ -If any file is a directory then it is processed recursively.\n\ -The manifest file name and the archive file name needs to be specified\n\ -in the same order the 'm' and 'f' flags are specified.\n\ -\n\ -Example 1: to archive two class files into an archive called classes.jar: \n\ - jar cvf classes.jar Foo.class Bar.class \n\ -Example 2: use an existing manifest file 'mymanifest' and archive all the\n\ - files in the foo/ directory into 'classes.jar': \n\ - jar cvfm classes.jar mymanifest -C foo/ .\n\ -"); - - exit(0); -} - -static char * -jt_strdup(char *s) -{ - char *result = (char*)malloc(strlen(s) + 1); - if (result == (char*)0) - return (char*)0; - strcpy(result, s); - return result; -} - -/* Convert "tar-style" first argument to a form expected by getopt. - This idea and the code comes from GNU tar. This can allocate a new - argument vector. This might leak some memory, but we don't care. */ -static void -expand_options (int *argcp, char ***argvp) -{ - int argc = *argcp; - char **argv = *argvp; - - /* Accept arguments with a leading "-" (eg "-cvf"), but don't do expansion - if a long argument (like "--help") is detected. */ - if (argc > 1 && argv[1][1] != '-') - { - char buf[3]; - char **new_argv; - int new_argc; - int args_to_expand; - char *p; - char **in, **out; - - buf[0] = '-'; - buf[2] = '\0'; - - args_to_expand = strlen (argv[1]); - if (argv[1][0] == '-') - --args_to_expand; - - new_argc = argc - 1 + args_to_expand; - new_argv = (char **) malloc (new_argc * sizeof (char *)); - in = argv; - out = new_argv; - - *out++ = *in++; - p = *in++; - if (*p == '-') - p++; - while (*p != '\0') - { - char *opt; - buf[1] = *p; - *out++ = jt_strdup (buf); - /* If the option takes an argument, move the next argument - to just after this option. */ - opt = strchr (OPTION_STRING, *p); - if (opt && opt[1] == ':') - { - if (in < argv + argc) - *out++ = *in++; - else - { - fprintf(stderr, "%s: option `%s' requires an argument.\n", - argv[0], buf); - usage(argv[0]); - } - } - ++p; - } - - /* Copy remaining options. */ - while (in < argv + argc) - *out++ = *in++; - - *argcp = new_argc; - *argvp = new_argv; - } -} diff --git a/fastjar/jartool.h b/fastjar/jartool.h deleted file mode 100644 index 5865c8021dc..00000000000 --- a/fastjar/jartool.h +++ /dev/null @@ -1,124 +0,0 @@ -/* $Id: jartool.h,v 1.4 2000/08/24 15:23:35 cory Exp $ - - $Log: jartool.h,v $ - Revision 1.4 2000/08/24 15:23:35 cory - Set version number since I think we can let this one out. - - Revision 1.3 2000/08/23 19:42:17 cory - Added support for more Unix platforms. The following code has been hacked - to work on AIX, Solaris, True 64, and HP-UX. - Added bigendian check. Probably works on most big and little endian platforms - now. - - Revision 1.2 1999/12/06 03:47:20 toast - fixing version string - - Revision 1.1.1.1 1999/12/06 03:08:24 toast - initial checkin.. - - - - Revision 1.6 1999/05/10 09:16:08 burnsbr - *** empty log message *** - - Revision 1.5 1999/04/27 10:04:20 burnsbr - configure support - - Revision 1.4 1999/04/26 02:36:15 burnsbr - changed RDSZ to 4096 from 512 - - Revision 1.3 1999/04/23 12:00:29 burnsbr - modified zipentry struct - - -*/ - -/* - jartool.h - generic defines, struct defs etc. - Copyright (C) 1999, 2005 Bryan Burns - - 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 __FASTJAR_JARTOOL_H__ -#define __FASTJAR_JARTOOL_H__ - -#include -#include "config.h" - -#define ACTION_NONE 0 -#define ACTION_CREATE 1 -#define ACTION_EXTRACT 2 -#define ACTION_UPDATE 3 -#define ACTION_LIST 4 -#define ACTION_INDEX 5 - -#define TRUE 1 -#define FALSE 0 - -/* Amount of bytes to read at a time. You can change this to optimize for - your system */ -#define RDSZ 4096 - -/* Change these to match your system: - ub1 == unsigned 1 byte word - ub2 == unsigned 2 byte word - ub4 == unsigned 4 byte word -*/ -#if SIZEOF_CHAR == 1 -typedef unsigned char ub1; -#else -typedef u_int8_t ub1; -#endif - -#if SIZEOF_SHORT == 2 -typedef unsigned short ub2; -#elif SIZEOF_INT == 2 -typedef unsigned int ub2; -#else -typedef u_int16_t ub2; -#endif - -#if SIZEOF_INT == 4 -typedef unsigned int ub4; -#elif SIZEOF_LONG == 4 -typedef unsigned long ub4; -#elif defined(HAVE_LONG_LONG) && SIZEOF_LONG_LONG == 4 -typedef unsigned long long ub4; -#else -typedef u_int32_t ub4; -#endif - -struct zipentry { - ub2 mod_time; - ub2 mod_date; - ub4 crc; - ub4 csize; - ub4 usize; - ub4 offset; - ub1 compressed; - ub2 flags; - char *filename; - - struct zipentry *next_entry; -}; - -typedef struct zipentry zipentry; - -#ifndef __GNUC__ -#define __attribute__() -#endif - -#endif /* __FASTJAR_JARTOOL_H__ */ diff --git a/fastjar/pushback.c b/fastjar/pushback.c deleted file mode 100644 index fd5a01a2dea..00000000000 --- a/fastjar/pushback.c +++ /dev/null @@ -1,194 +0,0 @@ -/* $Id: pushback.c,v 1.2 2000/12/14 18:45:35 ghazi Exp $ - - $Log: pushback.c,v $ - Revision 1.2 2000/12/14 18:45:35 ghazi - Warning fixes: - - * compress.c: Include stdlib.h and compress.h. - (rcsid): Delete. - (report_str_error): Make static. - (ez_inflate_str): Delete unused variable. Add parens in if-stmt. - (hrd_inflate_str): Likewise. - - * compress.h (init_compression, end_compression, init_inflation, - end_inflation): Prototype void arguments. - - * dostime.c (rcsid): Delete. - - * jargrep.c: Include ctype.h, stdlib.h, zlib.h and compress.h. - Make functions static. Cast ctype function argument to `unsigned - char'. Add parens in if-stmts. Constify. - (Usage): Change into a macro. - (jargrep): Remove unused parameter. - - * jartool.c: Constify. Add parens in if-stmts. Align - signed/unsigned char pointers in functions calls using casts. - (rcsid): Delete. - (list_jar): Fix printf format specifier. - (usage): Chop long string into bits. Reformat. - - * pushback.c (rcsid): Delete. - - Revision 1.1 2000/12/09 03:08:23 apbianco - 2000-12-08 Alexandre Petit-Bianco - - * fastjar: Imported. - - Revision 1.2 2000/08/23 19:42:17 cory - Added support for more Unix platforms. The following code has been hacked - to work on AIX, Solaris, True 64, and HP-UX. - Added bigendian check. Probably works on most big and little endian platforms - now. - - Revision 1.1.1.1 1999/12/06 03:09:13 toast - initial checkin.. - - - - Revision 1.1 1999/05/10 08:32:37 burnsbr - Initial revision - -*/ - -/* - pushback.c - code for a pushback buffer to handle file I/O - Copyright (C) 1999 Bryan Burns - - 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. - */ - -#include -#include -#include - -#include "jartool.h" -#include "pushback.h" - -void pb_init(pb_file *pbf, int fd){ - pbf->fd = fd; - pbf->next = pbf->pb_buff; - pbf->buff_amt = 0; -} - -int pb_push(pb_file *pbf, void *buff, int amt){ - int in_amt; - int wrap = 0; - -#ifdef DEBUG - printf("%d bytes being pushed back to the buffer\n", amt); -#endif - - /* determine how much we can take */ - if((int)(RDSZ - pbf->buff_amt) < amt) - in_amt = RDSZ - pbf->buff_amt; - else - in_amt = amt; - - if(in_amt == 0) - return 0; - - /* figure out if we need to wrap around, and if so, by how much */ - if(((pbf->pb_buff + RDSZ) - pbf->next) < in_amt) - wrap = in_amt - ((pbf->pb_buff + RDSZ) - pbf->next); - - /* write everything up til the end of the buffer */ - memcpy(pbf->next, buff, (in_amt - wrap)); - - /* finish writing what's wrapped around */ - memcpy(pbf->pb_buff, ((char *)buff + (in_amt - wrap)), wrap); - - /* update the buff_amt field */ - pbf->buff_amt += in_amt; - -#ifdef DEBUG - printf("%d bytes we can't accept\n", (amt - in_amt)); -#endif - - return in_amt; -} - - -int pb_read(pb_file *pbf, void *buff, int amt){ - int out_amt = 0; - int wrap = 0; - void *bp = buff; - int tmp; - -#ifdef DEBUG - printf("%d bytes requested from us\n", amt); -#endif - while(out_amt < amt){ - /* if our push-back buffer contains some data */ - if(pbf->buff_amt > 0){ - -#ifdef DEBUG - printf("giving data from buffer\n"); -#endif - - /* calculate how much we can actually give the caller */ - if( (amt - out_amt) < (int)pbf->buff_amt ) - tmp = (amt - out_amt); - else - tmp = pbf->buff_amt; - - /* Determine if we're going to need to wrap around the buffer */ - if(tmp > ((pbf->pb_buff + RDSZ) - pbf->next)) - wrap = tmp - ((pbf->pb_buff + RDSZ) - pbf->next); - - memcpy(bp, pbf->next, (tmp - wrap)); - bp = &(((char *)bp)[tmp - wrap]); - - /* If we need to wrap, read from the start of the buffer */ - if(wrap > 0){ - memcpy(bp, pbf->pb_buff, wrap); - bp = &(((char *)bp)[wrap]); - } - - /* update the buff_amt field */ - pbf->buff_amt -= tmp; - pbf->next += tmp; - -#ifdef DEBUG - printf("%d bytes remaining in buffer\n", pbf->buff_amt); -#endif - - /* if the buffer is empty, reset the next header to the front of the - buffer so subsequent pushbacks/reads won't have to wrap */ - if(pbf->buff_amt == 0) - pbf->next = pbf->pb_buff; - - out_amt += tmp; - - } else { -#ifdef DEBUG - printf("Reading from file..\n"); -#endif - - /* The pushback buffer was empty, so we just need to read from the file */ - tmp = read(pbf->fd, bp, (amt - out_amt)); - if(tmp == 0) - break; - else - out_amt += tmp; - - bp = &(((char *)bp)[tmp]); - } - } - -#ifdef DEBUG - printf("managed to read %d bytes\n", out_amt); -#endif - return out_amt; -} diff --git a/fastjar/pushback.h b/fastjar/pushback.h deleted file mode 100644 index 2e25b24383c..00000000000 --- a/fastjar/pushback.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - pushback.h - header for pushback.c - Copyright (C) 1999 Bryan Burns - - 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. -*/ - -struct pb_file { - unsigned int buff_amt; - ub1 pb_buff[RDSZ]; - int fd; - ub1 *next; -}; - -typedef struct pb_file pb_file; - - -void pb_init(pb_file *, int); -int pb_push(pb_file *, void *, int); -int pb_read(pb_file *, void *, int); diff --git a/fastjar/shift.c b/fastjar/shift.c deleted file mode 100644 index 2b08a2efab2..00000000000 --- a/fastjar/shift.c +++ /dev/null @@ -1,166 +0,0 @@ -/* shift.c -- utilities to move regions of data in a file. - Copyright (C) 2004, 2005 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 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. */ - - -#include -#include -#include -#include "jartool.h" -#include "shift.h" - -#define BUFFER_SIZE 1024 - -#define MIN(a, b) ((a) < (b) ? (a) : (b)) - -/* - * Shift the contents of a file up by `amount' bytes, starting at `begin'. - * The file is not truncated, data from `amount' to `begin - amount' is - * overwritten. The current file pointer of `fd' is preserved. Note that - * this might be past the new "end" of the file. - * - * If this function is passed a `struct zipentry', then all `offset' - * fields from that entry down the list that are greater than or equal - * to `begin' will be decreased by `amount'. - * - * fd - The file descriptor. - * begin - The offset of the first byte that should be shifted. - * amount - The number of bytes to shift by. - * ze - A pointer into a list of zip entries that should be updated - * to reflect the modified offset. - */ -int -shift_up (int fd, off_t begin, off_t amount, struct zipentry *ze) -{ - extern off_t end_of_entries; - int len, moved = 0; - ub1 buffer[BUFFER_SIZE]; - off_t where, end, save; - - if (amount <= 0) - return 0; - - if ((save = lseek (fd, 0, SEEK_CUR)) == -1) - return 1; - if ((end = lseek (fd, 0, SEEK_END)) == -1) - return 1; - if (end < begin) - return 0; - - where = begin; - - do - { - if (lseek (fd, where, SEEK_SET) < 0) - return 1; - if ((len = read (fd, buffer, BUFFER_SIZE)) < 0) - return 1; - if (len == 0) - break; - if (lseek (fd, where - amount, SEEK_SET) < 0) - return 1; - if (write (fd, buffer, len) < 0) - return 1; - where += len; - } - while (where < end); - - for (; ze; ze = ze->next_entry) - { - if ((off_t) ze->offset >= begin) - { - ze->offset -= amount; - moved = 1; - } - } - if (moved) - end_of_entries -= amount; - - if (lseek (fd, save, SEEK_SET) == -1) - return 1; - return 0; -} - -/* - * Shift the contents of this file down by `amount' bytes, extending the - * end of file, starting at `begin'. This function will preserve the - * current file pointer of `fd'. Naturally, this function will fail if - * `fd' is not seekable. - * - * If this function is passed a `struct zipentry', then all `offset' - * fields from that entry down the list that are greater than or equal - * to `begin' will be increased by `amount'. - * - * fd - The file descriptor. - * begin - The offset of the first byte that should be shifted. - * amount - The number of bytes to shift by. - * ze - A pointer into a list of zip entries that should be updated - * to reflect the modified offset. - */ -int -shift_down (int fd, off_t begin, off_t amount, struct zipentry *ze) -{ - extern off_t end_of_entries; - int off, len, moved = 0; - ub1 buffer[BUFFER_SIZE]; - off_t where, save; - - if (amount <= 0) - return 0; - - if ((save = lseek (fd, 0, SEEK_CUR)) == -1) - return 1; - if ((where = lseek (fd, 0, SEEK_END)) == -1) - return 1; - if (where < begin) - return 0; - off = (where - begin) % BUFFER_SIZE; - if (off == 0) - where -= BUFFER_SIZE; - else - where -= off; - - do - { - if (lseek (fd, where, SEEK_SET) < 0) - return 1; - if ((len = read (fd, buffer, BUFFER_SIZE)) < 0) - return 1; - if (lseek (fd, where + amount, SEEK_SET) < 0) - return 1; - if (write (fd, buffer, len) < 0) - return 1; - where -= BUFFER_SIZE; - } - while (where >= begin); - - for (; ze; ze = ze->next_entry) - { - if ((off_t) ze->offset >= begin) - { - ze->offset += amount; - moved = 1; - } - } - if (moved) - end_of_entries += amount; - - if (lseek (fd, save, SEEK_SET) == -1) - return 1; - - return 0; -} diff --git a/fastjar/shift.h b/fastjar/shift.h deleted file mode 100644 index 97c99b87740..00000000000 --- a/fastjar/shift.h +++ /dev/null @@ -1,29 +0,0 @@ -/* shift.h -- utilities to move regions of data in a file. - Copyright (C) 2004 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 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 __FASTJAR_SHIFT_H__ -#define __FASTJAR_SHIFT_H__ - -#include -#include "jartool.h" - -int shift_down (int, off_t, off_t, struct zipentry *); -int shift_up (int, off_t, off_t, struct zipentry *); - -#endif /* __FASTJAR_SHIFT_H__ */ diff --git a/fastjar/zipfile.h b/fastjar/zipfile.h deleted file mode 100644 index 47aaaea9270..00000000000 --- a/fastjar/zipfile.h +++ /dev/null @@ -1,75 +0,0 @@ -/* $Id: zipfile.h,v 1.1.1.1 1999/12/06 03:09:11 toast Exp $ - - $Log: zipfile.h,v $ - Revision 1.1.1.1 1999/12/06 03:09:11 toast - initial checkin.. - - - - Revision 1.6 1999/05/10 08:33:08 burnsbr - added UNPACK_UB4 and UNPACK_UB2 - - Revision 1.5 1999/04/26 02:36:34 burnsbr - added LOC_EXTRA macro - - Revision 1.4 1999/04/23 12:01:19 burnsbr - added more defines - - -*/ - -/* - zipfile.h - defines for indexing zipfile headers - Copyright (C) 1999 Bryan Burns - - 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. - */ - -#define LOC_EXTRA 6 /* extra bytes */ -#define LOC_COMP 8 /* compression method */ -#define LOC_MODTIME 10 /* last modification time */ -#define LOC_MODDATE 12 /* last modification date */ -#define LOC_CRC 14 /* CRC */ -#define LOC_CSIZE 18 /* compressed size */ -#define LOC_USIZE 22 /* uncompressed size */ -#define LOC_FNLEN 26 /* filename length */ -#define LOC_EFLEN 28 /* extra-field length */ - -#define CEN_FLAGS 8 -#define CEN_COMP 10 /* compression method */ -#define CEN_MODTIME 12 -#define CEN_MODDATE 14 -#define CEN_CRC 16 -#define CEN_CSIZE 20 -#define CEN_USIZE 24 -#define CEN_FNLEN 28 -#define CEN_EFLEN 30 -#define CEN_COMLEN 32 -#define CEN_OFFSET 42 - - -/* macros */ -#define PACK_UB4(d, o, v) d[o] = (ub1)((v) & 0x000000ff); \ - d[o + 1] = (ub1)(((v) & 0x0000ff00) >> 8); \ - d[o + 2] = (ub1)(((v) & 0x00ff0000) >> 16); \ - d[o + 3] = (ub1)(((v) & 0xff000000) >> 24) - -#define PACK_UB2(d, o, v) d[o] = (ub1)((v) & 0x00ff); \ - d[o + 1] = (ub1)(((v) & 0xff00) >> 8) - -#define UNPACK_UB4(s, o) (ub4)s[o] + (((ub4)s[o + 1]) << 8) +\ - (((ub4)s[o + 2]) << 16) + (((ub4)s[o + 3]) << 24) - -#define UNPACK_UB2(s, o) (ub2)s[o] + (((ub2)s[o + 1]) << 8) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3b380fe89a8..3014563a35f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,1465 @@ +2006-04-05 Bernd Schmidt + + * config/bfin/bfin.c (bfin_legitimate_address_p): Disallow + got-relative addressing for anything but SImode. + +2006-04-05 Richard Guenther + + PR tree-optimization/26919 + * ipa-inline.c (cgraph_decide_inlining_incrementally): Fix argument + to cgraph_estimate_size_after_inlining. + +2006-04-05 Alan Modra + + * reload.c (find_dummy_reload): Fix typo in 2006-04-03 change. + +2006-04-05 Sebastian Pop + + PR tree-optimization/26996 + * tree-scalar-evolution.c (analyze_scalar_evolution_1): Don't analyze + VECTOR_TYPE variables. + +2006-04-05 Richard Guenther + + PR tree-optimization/26763 + * fold-const.c (fold_comparison): Move folding of + PTR + CST CMP PTR + CST ... + (fold_binary): ... here. Fold only for EQ_EXPR and NE_EXPR. + +2006-04-05 Gerald Pfeifer + + * doc/install.texi (Prerequisites): Refine some wording on + bootstrapping and ksh. + Move the version numbers of DejaGnu here from the testing section + and fix casing of names. + Fix markup and clarify wording for autogen requirements. + Refer to GCJ instead of just java. + Refer to SVN instead of CVS. + Describe diffutils as useful instead of necessary. + (Downloading the source): Refer to SVN instead of CVS. + Adjust a link to our web site accordingly. + (Configuration): Fix casing of Bison. + (Building): Refer to SVN instead of CVS. + Fix a sentence on the use of Bison and remove duplicate (and + incorrect) version number of Bison requirement. + Remove one redundant list of packages needed for building. + (Specific): Avoid reference to CVS. + +2006-04-04 Eric Christopher + + * config/rs6000/rs6000.c (TARGET_MS_BITFIELD_LAYOUT_P): Define. + (TARGET_USE_MS_BITFIELD_LAYOUT): Ditto. + (rs6000_handle_struct_attribute): New. + (rs6000_ms_bitfield_layout_p): Ditto. + +2006-04-04 Geoffrey Keating + + * config/darwin-crt3.c (atexit): Pass &__dso_handle rather than + NULL for dso parameter to atexit_common. + +2006-04-04 Eric Christopher + + * config/i386/i386.c (machopic_output_stub): Output \t + between instructions and operands. + +2006-04-04 David Edelsohn + + * config/rs6000/rs6000.c (num_insns_constant_wide): Change + satisfies_constraint_[IL] to explicit tests on value. + +2006-04-04 Sebastian Pop + + * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop, + set_nb_iterations_in_loop): Use build_int_cst instead of + build_int_cst_type. + * tree-data-ref.c (can_use_analyze_subscript_affine_affine): Use + build_int_cst instead of convert. + +2006-04-04 Carlos O'Donell + + * doc/tm.texi (TARGET_STRUCT_VALUE_RTX): Document + new value 2 for incoming. + * function.c (expand_function_start): Call struct_value_rtx + with incoming as 2. + * config/sparc/sparc.md: Comment updated_return. + * config/sparc/sparc.opt: Add -mstd-struct-return option. + * config/sparc/sparc.c (sparc_struct_value_rtx): Use standard + struct return if sparc_std_struct_return and incoming is 2. + (print_operand): Do not adjust return if + sparc_std_struct_return. + +2006-04-04 Roger Sayle + + * builtins.c (fold_builtin_sprintf): Use fold_convert instead of + convert in the middle-end. + * expr.c (store_expr, store_constructor, get_inner_reference, + expand_expr_real_1, string_constant, try_casesi, try_tablejump): + Likewise. + * tree.c (build_range_type): Likewise. + +2006-04-04 Tom Tromey + + * doc/install.texi (Prerequisites): Mention jar. + +2006-04-04 Daniel Berlin + + * doc/tree-ssa.texi (Preserving the virtual ssa form): New + subsection. + +2006-04-04 Matthias Klose + + * Makefile.in (unprotoize.o): Same dependencies as for protoize.o. + +2006-04-03 Geoffrey Keating + + * doc/extend.texi (Function Attributes): Rewrite visibility + attribute documentation. + * doc/invoke.texi (C++ Dialect Options): Rewrite + -fvisibility-inlines-hidden documentation to describe something + entirely different, although in practise compatible. + (Code Gen Options): Warn about system headers in -fvisibiltity= + documentation. + + * doc/extend.texi (Other Builtins): Document that + __builtin_nan is a compile-time constant only when its argument + is valid. + +2006-04-03 Adam Nemet + + * simplify-rtx.c (simplify_unary_operation_1) : When + trying to remove TRUNCATE check if all bits outside the new mode + are identical to the sign bit. + +2006-04-03 Jeff Law + + * tree-ssa-dom.c (propagate_rhs_into_lhs): Avoid useless folding + and operand scanning in some common cases. + +2006-04-03 Paolo Bonzini + Dale Johannesen + + PR target/19653 + * regclass.c (struct reg_pref): Update documentation. + (regclass): Set prefclass to NO_REGS if memory is the best option. + (record_reg_classes): Cope with a prefclass set to NO_REGS. + * reload.c (find_reloads): Take PREFERRED_OUTPUT_RELOAD_CLASS + into account. For non-registers, equate an empty preferred + reload class to a `!' in the constraint; move the if clause to + do so after those that reject the insn. + (push_reload): Allow PREFERRED_*_RELOAD_CLASS to liberally + return NO_REGS. + (find_dummy_reload): Likewise. + * doc/tm.texi (Register Classes): Document what it means + if PREFERRED_*_RELOAD_CLASS return NO_REGS. + * config/i386/i386.c (ix86_preferred_reload_class): Force + using SSE registers (and return NO_REGS for floating-point + constants) if math is done with SSE. + (ix86_preferred_output_reload_class): New. + * config/i386/i386-protos.h (ix86_preferred_output_reload_class): New. + * config/i386/i386.h (PREFERRED_OUTPUT_RELOAD_CLASS): New. + * config/i386/i386.md: Remove # register preferences. + +2006-04-02 Sebastian Pop + + PR bootstrap/26992 + * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop, + chrec_is_positive, set_nb_iterations_in_loop): Use a variable for + the type of nb_iter. + (instantiate_parameters_1): Convert the operands before calling + chrec_fold_minus, chrec_fold_plus, or chrec_fold_multiply. + * tree-data-ref.c (can_use_analyze_subscript_affine_affine): Same. + +2006-04-02 Roger Sayle + + * builtins.c (dummy_object): Use build_int_cst instead of convert. + * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use fold_convert + instead of convert. + * dojump.c (do_jump): Likewise. + * expr.h (ADD_PARM_SIZE, SUB_PARM_SIZE, ARGS_SIZE_TREE): Likewise. + * gimplify.c (gimple_boolify, gimplify_init_constructor, + gimplify_boolean_expr): Likewise. + * emit-rtl.c (set_mem_attributes_minus_bitpos): Likewise. + * varasm.c (array_size_for_constructor): Likewise. + * tree-object-size.c (compute_object_offset): Likewise. + +2006-04-02 Roger Sayle + + PR middle-end/26977 + * expr.c (emit_group_store): Check whether simplify_gen_subreg returns + NULL_RTX, indicating it couldn't create a valid paradoxical subreg. + +2006-04-02 Sebastian Pop + + PR tree-optimization/26939 + * tree-chrec.c (chrec_merge): Use eq_evolutions_p. + +2006-04-02 Sebastian Pop + + * tree-scalar-evolution.c (add_to_evolution_1): Pass an extra argument + at_stmt. Convert the type of operands before calling + build_polynomial_chrec. + (add_to_evolution): Pass an extra argument at_stmt. Adjust the call to + add_to_evolution_1. + (follow_ssa_edge_in_rhs): Adjust call to add_to_evolution. + (instantiate_parameters_1): Convert the type of operands before calling + build_polynomial_chrec. + * tree-chrec.c (chrec_fold_poly_cst, chrec_fold_plus_poly_poly, + chrec_fold_multiply_poly_poly, chrec_replace_initial_condition, + reset_evolution_in_loop): Insert asserts to check the types of the + operands. + (chrec_type): Moved... + (eq_evolutions_p): Use operand_equal_p. + * tree-chrec.h (build_polynomial_chrec): Insert an assert to check + the types of the operands. + (chrec_type): ...here. + * tree-data-ref.c (create_data_ref): Convert the operands before + calling chrec_replace_initial_condition. + (same_access_functions, analyze_subscript_affine_affine, + analyze_miv_subscript, all_chrecs_equal_p): Use eq_evolutions_p. + (compute_subscript_distance, analyze_ziv_subscript, + analyze_siv_subscript_cst_affine, compute_overlap_steps_for_affine_1_2, + analyze_miv_subscript): Convert the operands before calling + chrec_fold_minus or chrec_fold_plus. + +2006-04-02 Sebastian Pop + + * tree-data-ref.c (compute_all_dependences): Use a pointer to + the dependence_relations vector. + (compute_data_dependences_for_loop): Adjust call to + compute_all_dependences. + +2006-04-01 Roger Sayle + Richard Henderson + + * gimplify.c (gimplify_scan_omp_clauses) : Call + gimple_boolify on the condition before calling gimplify_expr. + +2006-03-31 Bob Wilson + + * config/xtensa/lib1funcs.asm: Rename abi_entry/abi_return macros + to leaf_entry/leaf_return. Change leaf_entry to add 16 bytes to + the frame size. Update to use the new macros. + * config/xtensa/ieee754-sf.S: Use new leaf_entry/leaf_return macros. + * config/xtensa/ieee754-df.S: Likewise. + +2006-03-31 Richard Henderson + + * tree-cfg.c (make_ctrl_stmt_edges, make_exit_edges): Merge into... + (make_edges): ... here. Control fallthru creation with a local + variable. Do not play with fake edges. + (make_omp_sections_edges): Don't set EDGE_ABNORMAL. + (make_goto_expr_edges): Don't play with fake edges. Make for_call + a boolean. + +2006-04-01 Joseph S. Myers + + * dwarf2.h (DW64_CIE_ID): Define. + * dwarf2out.c (DWARF_CIE_ID): Define. + (output_call_frame_info): Output 0xffffffff before standard 8-byte + length header. Use DWARF_CIE_ID. + (value_format): Use DW_FORM_data4 or DW_FORM_data8 for + dw_val_class_loc_list depending on DWARF_OFFSET_SIZE. + +2006-03-31 Kaz Kojima + + * config/sh/linux-atomic.asm: New file. + * config/sh/t-linux (LIB2FUNCS_EXTRA): Add linux-atomic.asm. + +2006-03-31 DJ Delorie + + * config/m32c/cond.md: Set condition flags properly throughout. + * config/m32c/minmax.md: Likewise. + * config/m32c/prologue.md: Likewise. + * config/m32c/bitops.md: Likewise. + * config/m32c/muldiv.md: Likewise. + * config/m32c/mov.md: Likewise. + * config/m32c/addsub.md: Likewise. + * config/m32c/m32c.md: Likewise. + * config/m32c/jump.md: Likewise. + * config/m32c/shift.md: Likewise. + + * config/m32c/cond.md (cmp): Call m32c_output_compare to + conditionally output the pattern for this. + * config/m32c/m32c.c (flags_needed_for_conditional): New. + (m32c_compare_redundant): New. + (m32c_output_compare): New. + * config/m32c/m32c-protos.h (m32c_output_compare): New. + + * config/m32c/m32c.c (m32c_prepare_shift): Fix logic to clobber + dest, not src. Allow other 4-byte modes. + +2006-03-30 Denis Chertykov + + * doc/md.texi: Refer to avr/constraints.md instead of + avr/avr.h. + +2006-03-30 Roger Sayle + + * expr.c (emit_group_store): Make BYTEPOS a HOST_WIDE_INT to + signed vs. unsigned comparison failures on some hosts. + +2006-03-31 Alan Modra + + PR target/26459 + * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Limit 2003-12-08 + change to FLOAT_REGS. + + * config/rs6000/rs6000.c (rs6000_explicit_options): Add ieee. + (rs6000_override_options): Use it. + (rs6000_handle_option): Set it. Set rs6000_explicit_options.abi + only for -mabi=spe/no-spe and -mabi=altivec. + +2006-03-30 Geoffrey Keating + + * config/darwin.h (LINK_COMMAND_SPEC): Don't try to protect %S with + !Zdynamiclib. + +2006-03-30 Carlos O'Donell + + * Makefile.in: Rename docdir to gcc_docdir. + +2006-03-30 Roger Sayle + + PR target/17959 + * expr.c (emit_group_store): Optimize group stores into a pseudo + register by using a paradoxical subreg to initialize the destination + if the first or last member of the group specifies a "low part". + +2006-03-30 Maxim Kuvyrkov + + PR target/26734 + * rtl.def (DEPS_LIST): Change type of the second operand to 'int'. + * target.h (struct gcc_target.speculate_insn): Change type of the + second parameter to 'int'. + * lists.c (alloc_DEPS_LIST): Change signature. Update reference to + the second operand of the DEPS_LIST. + (copy_DEPS_LIST_list): Update reference to the second operand of the + DEPS_LIST. + * rtl.h (alloc_DEPS_LIST): Update signature. + * sched-int.h (ds_t): Change typedef to 'int'. + (DEP_STATUS, BITS_PER_DEP_STATUS): Update. + +2006-03-30 Maxim Kuvyrkov + + * haifa-sched.c (try_ready): Change condition to restore + non-speculative pattern of the instruction. + (process_insn_depend_be_in_spec): Code to keep probability of the + speculative dependence non-decreasing. + +2006-03-30 Jie Zhang + + * config/bfin/bfin.c (single_move_for_strmov): Renamed to... + (single_move_for_movmem): ... this. Also change all uses. + (bfin_expand_strmov): Renamed to... + (bfin_expand_movmem): ... this. Also change all uses. + * config/bfin/bfin.md (movstrsi): Renamed to... + (movstrsi): ...this. + +2006-03-30 Paolo Bonzini + + PR tree-optimization/26830 + + * tree-ssa-copy.c (copy_prop_visit_assignment): Do not check loop depth. + (copy_prop_visit_stmt): Remove write-only variable ann. + (init_copy_prop): Check variable loop depth here. Do not simulate + memory-tag and virtual operand PHIs except for store copy prop. + +2006-03-30 Richard Guenther + + * config/i386/i386.c: Remove builtins for SSE2 ABI intrinsic + variants with double arguments. + +2006-03-29 David Edelsohn + + * genpreds.c (write_tm_constrs_h): Delete variable p. + * genconditions.c (write_header): Add tm-constrs.h to included + headers. + * genpeep.c (main): Add toplev.h to included headers. + * Makefile.in (build/gencondmd.o): Add tm-constrs.h dependency. + (build/genpeep.o): Add toplev.h dependency. + * config/rs6000/constraints.md: Add "W" constraint. + +2006-03-29 Roger Sayle + + * stor-layout.c (mode_for_size_tree): Remove restiction on type + sizes by correctly testing whether the size fits a host integer. + (initialize_sizetypes): Use set_min_and_max_values_for_integral_type + to correctly set TYPE_MIN_VALUE and TYPE_MAX_VALUE to the full + SImode range for the default sizetype and bitsizetype. + +2006-03-29 Roger Sayle + + * convert.c (convert_to_pointer): Preserve the TREE_OVERFLOW + and TREE_CONSTANT_OVERFLOW bits of the argument. Return + quickly if the argument is already of the correct type. + Call fold_build1 instead of build1. Tidy up blank lines. + +2006-03-29 David Edelsohn + + * genemit.c (main): Add tm-constrs.h to included headers. + * genoutput.c (output_prologue): Add tm-constrs.h to included headers. + * genpeep.c (main): Add tm-constrs.h to included headers. + * genpreds.c (write_satisfies_constraint_fns): Rename to ... + (write_tm_constrs_h): this and write complete file. + (write_tm_preds_h): Do not emit satisfies_constraint fns. + (write_insn_preds_c): Add tm-constrs.h to included headers. + (gen_constrs): New variable. + (parse_option): Parse "-c". + (main): Invoke write_tm_constrs_h. + * genrecog.c (write_header): Add tm-constrs.h to included headers. + * Makefile.in (STAGECOPYSTUFF): Add tm-constrs.h. + (object_out_file): Add tm-constrs.h dependency. + (insn-emit.o): Same. + (insn-output.o): Same. + (insn-peep.o): Same. + (insn-preds.o): Same. + (insn-recog.o): Same. + (tm-constsr.h): New target. + (s-constrs-h): New target. + + * config/rs6000/constraints.md: New file. + * config/rs6000/rs6000.c: Include tm-constrs.h. + (num_insn_constant_wide): Convert to satisfies_constraint. + (rs6000_rtx_costs): Convert to satisfies_constraint. + * config/rs6000/rs6000.h (REG_CLASS_FROM_LETTER): Delete. + (CONST_OK_FOR_LETTER_P): Delete. + (CONST_DOUBLE_OK_FOR_LETTER_P): Delete. + (EXTRA_CONSTRAINT): Delete. + (EXTRA_MEMORY_CONSTRAINT): Delete. + (EXTRA_ADDRESS_CONSTRAINT): Delete. + * config/rs6000/predicates.md: Convert to satisfies_constraint. + * config/rs6000/rs6000.md: Include constraints.md. Convert to + satisfies_constraint. + + * config/i386/i386.c: Include tm-constrs.h. + +2006-03-29 Sebastian Pop + + * tree-loop-linear.c (compute_data_dependences_for_loop): Adjust calls. + * tree-data-ref.c (find_data_references_in_loop, + compute_data_dependences_for_loop): Use pointers to VEC. + (analyze_all_data_dependences): Adjust calls. + * tree-data-ref.h (find_data_references_in_loop, + compute_data_dependences_for_loop): Adjust declarations. + * tree-vect-analyze.c (vect_analyze_data_refs): Adjust call to + compute_data_dependences_for_loop. + +2006-03-29 Paul Brook + + * config/arm/vfp.md (movsf_vfp): Disparage w<->r alternatives. + (movdf_vfp): Ditto. + +2006-03-29 Sebastian Pop + + PR tree-optimization/26859 + * tree-ssa-loop-niter.c (infer_loop_bounds_from_undefined): Avoid + division by zero. + (convert_step): Remove TREE_OVERFLOW and TREE_CONSTANT_OVERFLOW flags + for the step after fold_convert. + +2006-03-29 Paul Brook + + * reload1.c (choose_reload_regs): Check for all RTX_AUTOINC operators. + (inc_for_reload): Handle PRE_MODIFY and POST_MODIFY addresses. + +2006-03-29 Paul Brook + + PR middle-end/23623 + * targhooks.c (default_narrow_bitfield): New fuction. + * targhooks.h (default_narrow_bitfield): add prototype. + * target.h (gcc_target): Add narrow_volatile_bitfield. + * target-def.h (TARGET_NARROW_VOLATILE_BITFIELD): Define. + * stor-layout.c (get_best_mode): Use targetm.narrow_volatile_bitfield. + * doc/tm.texi: Document TARGET_NARROW_VOLATILE_BITFIELDS. + * config/arm/arm.c (TARGET_NARROW_VOLATILE_BITFIELD): Define. + +2006-03-29 Andreas Krebbel + + * config.gcc (s390-*-linux-*, s390x-*-linux*): Add t-dfprules to + tmake_file. + * config/s390/s390.c (S390_scalar_mode_supported_p): New function. + (NR_C_MODES): Add TDmode, DDmode and SDmode. + (s390_output_pool_entry, ): Accept MODE_DECIMAL_FLOAT. + (s390_hard_regno_mode_ok): Disallow TDmode in integer regs. + (s390_function_arg_float): Allow SDmode and DDmode values to be + passed in floating point registers. + (s390_function_arg_integer, s390_function_value): Replace MODE_FLOAT + check with SCALAR_FLOAT_MODE_P. + (TARGET_SCALAR_MODE_SUPPORTED_P): Define target macro. + +2006-03-28 Zdenek Dvorak + + PR tree-optimization/25985 + * tree-ssa-loop-niter.c (number_of_iterations_le, + number_of_iterations_ne): Make comments more precise. + (number_of_iterations_cond): Add only_exit argument. Use the + fact that signed variables do not overflow only when only_exit + is true. + (loop_only_exit_p): New. + (number_of_iterations_exit): Pass result of loop_only_exit_p to + number_of_iterations_cond. + +2006-03-28 Zdenek Dvorak + + PR tree-optimization/26643 + * tree-ssa-loop-ivopts.c (find_interesting_uses_address): Do not handle + bit_field_refs. + +2006-03-28 Kaz Kojima + + * config/sh/sh.md (udivsi3_i4_int): Clobber MACH_REG and MACL_REG. + (divsi3_i4_int): Likewise. + +2006-03-28 Roger Sayle + + * expr.c (emit_group_store): Only create a new pseudo reg if the + quantity it needs to hold isn't already a suitable pseudo. + +2006-03-28 Jeff Law + + * timevar.def (TV_TREE_PHI_CPROP): New timevar. + * tree-ssa-dom.c (pass_phi_only_cprop): Use it. + +2006-03-28 Roger Sayle + + * fold-const.c (fold_binary) : Fold (X & Y) ^ Y as + the equivalent ~X & Y, and the symmetry related transformations. + (fold_binary) : Similarly, fold (X ^ Y) & Y as + ~X & Y, and symmetry related transforms. + +2006-03-28 Maxim Kuvyrkov + + Revert my 2006-03-27 patches. + +2006-03-28 Roger Sayle + + * fold-const.c (fold_unary) : Fold (T1)(~(T2)X) as + ~(T1)X, when T1 and T2 are integer types of the same precision + and (T2)X isn't an extension. + +2006-03-28 Jeff Law + + PR tree-optimization/26796 + * tree-ssa-dom.c (propagate_rhs_into_lhs): Queue blocks which + need EH edge cleanups rather than purging them immediately. + (eliminate_degenerate_phis): Handle queued EH cleanups. + +2006-03-28 Daniel Berlin + + * tree-ssa-alias.c (create_sft): Initially inherit TREE_ADDRESSABLE + from parent_var. + +2006-03-27 Roger Sayle + + PR middle-end/22524 + * fold-const.c (fold_binary) : Call fold_convert to + cast BIT_NOT_EXPR operand to the correct type. + +2006-03-27 Sebastian Pop + + * tree-loop-linear.c: Don't include varray.h. + (gather_interchange_stats, try_interchange_loops, + linear_transform_loops): Use VEC instead of VARRAY. + * lambda-mat.c: Don't include varray.h. + * tree-chrec.c: Same. + * lambda-trans.c: Same. + * tree-vectorizer.c (new_loop_vec_info, destroy_loop_vec_info): Use + VEC instead of VARRAY. + * tree-vectorizer.h: Idem. + * tree-data-ref.c (dump_data_references, + dump_data_dependence_relations, dump_dist_dir_vectors, dump_ddrs, + initialize_data_dependence_relation, finalize_ddr_dependent, + compute_all_dependences, find_data_references_in_loop, + compute_data_dependences_for_loop, analyze_all_data_dependences, + free_dependence_relation, free_dependence_relations, + free_data_refs): Idem. + * tree-data-ref.h (data_reference_p, subscript_p): New. + (data_dependence_relation, DDR_SUBSCRIPT, DDR_NUM_SUBSCRIPTS): Use + VEC instead of VARRAY. + (DDR_SUBSCRIPTS_VECTOR_INIT): Removed. + (find_data_references_in_loop, compute_data_dependences_for_loop, + dump_ddrs, dump_dist_dir_vectors, dump_data_references, + dump_data_dependence_relations, free_dependence_relations, + free_data_refs): Adjust declaration. + (lambda_transform_legal_p): Move declaration here... + * tree-vect-analyze.c (vect_analyze_data_ref_dependences, + vect_compute_data_refs_alignment, vect_verify_datarefs_alignment, + vect_enhance_data_refs_alignment, vect_analyze_data_ref_accesses, + vect_analyze_data_refs): Use VEC instead of VARRAY. + * lambda.h (lambda_transform_legal_p): ...from here. + * lambda-code.c (lambda_transform_legal_p): Use VEC instead of VARRAY. + * tree-vect-transform.c (vect_update_inits_of_drs): Idem. + * Makefile.in (tree-loop-linear.o, lambda-mat.o, lambda-trans.o, + tree-chrec.o): Don't depend on VARRAY_H. + +2006-03-27 Maxim Kuvyrkov + + * rtl.def (Copyright): Update date. + (DEPS_LIST): Change type of the second operand to 'int'. + * target.h (Copyright): Update date. + (struct gcc_target.speculate_insn): Change type of the second parameter + to 'int'. + * lists.c (Copyright): Update date. + (alloc_DEPS_LIST): Change signature. Update reference to the second + operand of the DEPS_LIST. + (copy_DEPS_LIST_list): Update reference to the second operand of the + DEPS_LIST. + * rtl.h (Copyright): Update date. + (alloc_DEPS_LIST): Update signature. + * sched-int.h (Copyright): Update date. + (ds_t): Change typedef to 'int'. + (DEP_STATUS, BITS_PER_DEP_STATUS): Update. + +2006-03-27 Maxim Kuvyrkov + + * haifa-sched.c (Copyright): Update date. + (try_ready): Change condition to restore non-speculative pattern + of the instruction. + (process_insn_depend_be_in_spec): Code to keep probability of the + speculative dependence non-decreasing. + +2006-03-27 Bernd Schmidt + + * regrename.c (replace_oldest_value_addr): Initialize a variable to + shut up the compiler. + +2006-03-27 J"orn Rennecke + + * config/sh/t-sh ($(T)libic_invalidate_array_4-100.a): Fix rule + to use lib prefix for target. + ($(T)libic_invalidate_array_4-200.a): Likewise. + ($(T)libic_invalidate_array_4a.a): Likewise. + +2006-03-27 Andrew Stubbs + J"orn Rennecke + + * superh.opt: New file. + * sh.c (boardtype, osruntime): Remove. + * superh.h (SUBTARGET_OPTIONS): Remove. + * config.gcc (sh*-superh-elf): Add sh/superh.opt to extra_options. + + * config.gcc (sh*-*-*): Don't use c-c ranges for tr. Quote sed + arguments with ^ and/or []. + + * config.gcc (sh-*-*): Add quoting to account for quirk of + Solaris /bin/sh. + Replace == with = in enable_incomplete_targets test. + + * config/sh/superh.h (SUBTARGET_LINK_SPEC): Replace LITTLE_ENDIAN_BIT + with MASK_LITTLE_ENDIAN. + + * config.gcc (sh*-superh-elf): Add sh/superh.h to tm_file. + * config/sh/sh.opt: Added to some comments. + * config/sh/superh.h: Removed some chaff. + + * config/sh/sh.opt: Add m4-[1234]00* options. + * config/sh/sh.c (sh_handle_option): Likewise. + * config/sh/t-sh (IC_EXTRA_PARTS, EXTRA_MULTILIB_PARTS): Define. + (ic_invalidate_array_4-100.o): New rule. + ($(T)libic_invalidate_array_4-100.a): Likewise. + (ic_invalidate_array_4-200.o): Likewise. + ($(T)libic_invalidate_array_4-200.a): Likewise. + (ic_invalidate_array_4a.o): Likewise. + ($(T)libic_invalidate_array_4a.a): Likewise. + * config/sh/t-elf (EXTRA_MULTILIB_PARTS): Add IC_EXTRA_PARTS. + * config/sh/embed-elf.h (LIBGCC_SPEC): Add clauses for m4-100*, + m4-200*, and m4a*. + * config/sh/crt1.asm: Merged in profiling code. + * config/sh/superh.h (STARTFILE_SPEC): Override. + * config/sh/t-superh: Override EXTRA_MULTILIB_PARTS. + Add rules for $(T)crt1-mmu.o, $(T)gcrt1-mmu.o and $(T)gcrt1.o. + * config.gcc (sh*-superh-elf): Add t-superh to tmake_file. + + * t-sh (MULTILIB_MATCHES): Add sh4-[1245]00* variants. + * config/sh/t-superh: Removed now-redundant MULTILIB_OPTIONS / + MULTILIB_DIRNAMES / MULTILIB_MATCHES settings. + + * sh.opt (mpretend-cmove): New option. + * sh.h (OPERRIDE_OPTIONS): Switch it off if not TARGET_SH1. + * sh.md (movsicc_t_false, movsicc_t_tru): New patterns. + (movsicc): Add TARGET_PRETEND_CMOVE code. + +2006-03-27 Andreas Krebbel + + * config/s390/s390-protos.h (s390_hard_regno_mode_ok, + s390_class_max_nregs): New function prototypes. + * config/s390/s390.c (REGNO_PAIR_OK): New macro. + (s390_hard_regno_mode_ok, s390_class_max_nregs): New functions. + * config/s390/s390.h (HARD_REGNO_NREGS, HARD_REGNO_MODE_OK, + CLASS_MAX_NREGS): Macro bodies replaced by function calls. + +2006-03-26 Geoffrey Keating + + * dwarf2out.c (add_location_or_const_value_attribute): Call + tree_add_const_value_attribute if nothing else works. + (reference_to_unused): New. + (rtl_for_decl_init): Use reference_to_unused to decide whether + to output an initializer. + +2006-03-27 Alan Modra + + PR target/26459 + * config/rs6000/rs6000.md (DF reg move peephole): Prevent + peephole removing spe frob_di_df_2. + +2006-03-26 Sebastian Pop + + * tree-data-ref.c: Rename DDR_SIZE_VECT to DDR_NB_LOOPS. + (subscript_dependence_tester_1): Declared. + (print_dir_vectors, print_dist_vectors): New. + (debug_data_dependence_relation): New. + (dump_data_dependence_relation): Print more details. + (initialize_data_dependence_relation): Initialize DDR_LOOP_NEST. + (analyze_subscript_affine_affine): Don't ICE when gcd_alpha_beta is 0. + (save_dist_v, save_dir_v, add_outer_distances, + build_classic_dist_vector_1): New. + (build_classic_dist_vector): Rewrite to work on DDR_LOOP_NEST. + Don't test for lambda_vector_lexico_pos. + (same_access_functions, add_multivariate_self_dist, + add_other_self_distances, dir_from_dist): New. + (build_classic_dir_vector): Replace implementation almost identical to + build_classic_dist_vector with a walk of DDR_DIST_VECTS with a call to + dir_from_dist. + (subscript_dependence_tester_1): New. + (subscript_dependence_tester): Handle the lexicographically negative + distance vectors by recomputing the dependence relation. + (compute_affine_dependence): Remove parameter loop_nest_depth. + (compute_self_dependence): Don't call compute_subscript_distance. + (compute_all_dependences): Remove parameters nb_loops, loop_nest_depth. + Add a parameter for the loop_nest. + (find_loop_nest_1, find_loop_nest): New. + (compute_data_dependences_for_loop): Compute the loop nest, and give + up if the nest is not well formed. + * tree-data-ref.h (loop_p): New. + (struct data_dependence_relation): Replace size_vect field with + loop_nest, a vec of loops. + (DDR_SIZE_VECT): Renamed DDR_NB_LOOPS. + (DDR_LOOP_NEST): New. + (print_dir_vectors, print_dist_vectors, + debug_data_dependence_relation): Declared. + (index_in_loop_nest): New. + * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Use + DDR_LOOP_NEST and index_in_loop_nest to determine the dependence + distance. + +2006-03-25 Adam Nemet + + * simplify-rtx.c (simplify_relational_operation): Call + simplify_relational_operation_1 even if mode is VOIDmode. + +2006-03-25 Daniel Berlin + + PR tree-optimization/26804 + * tree.h (DECL_CALL_CLOBBERED): New macro. + (tree_decl_common): Add call_clobbered_flag. + * tree-flow-inline.h (is_call_clobbered): Use DECL_CALL_CLOBBERED. + (mark_call_clobbered): Set DECL_CALL_CLOBBERED. + (clear_call_clobbered): Clear DECL_CALL_CLOBBERED. + (mark_non_addressable): Ditto. + * tree-ssa.c (verify_call_clobbered): New function. + (verify_alias_info): Use it. + * tree-pass.h (pass_reset_cc_flags): New prototype. + * tree-ssa-alias.c (pass_reset_cc_flags): New structure. + (reset_cc_flags): New function. + * passes.c (init_optimization_passes): Call reset_cc_flags after + initializing referenced_vars. + +2006-03-25 Uros Bizjak + Roger Sayle + + PR middle-end/26717 + * fold-const.c (fold_binary) [RDIV_EXPR]: Do not optimize A / A + to 1.0 for non-real operands. Implement A / A optimization for + complex operands. + +2006-03-25 H.J. Lu + + * config/i386/i386.c (size_cost): Correct the comment for + cost of storing fp registers. + (i386_cost): Likewise. + (i486_cost): Likewise. + (pentium_cost): Likewise. + (pentiumpro_cost): Likewise. + (k6_cost): Likewise. + (athlon_cost): Likewise. + (k8_cost): Likewise. + (pentium4_cost): Likewise. + (nocona_cost): Likewise. + (generic64_cost): Likewise. + (generic32_cost): Likewise. + +2006-03-24 Denis Chertykov + + * config/avr/avr-protos.h (extra_constraint): Delete. + (extra_constraint_Q): New declaration. + * config/avr/constraints.md: New file. + * config/avr/avr.md: Include it. + (REG_X, REG_Y, REG_Z, REG_W): New constants. + (TMP_REGNO, ZERO_REGNO): Likewise. + (UNSPEC_STRLEN, UNSPEC_INDEX_JMP): Likewise. + * config/avr/avr.c (avr_reg_class_from_letter): Delete. + (extra_constraint): Delete. + (extra_constraint_Q): Test for memory constraint 'Q'. + * config/avr/avr.h (REG_X,REG_Y,REG_Z,REG_W): Delete. + (REG_CLASS_FROM_LETTER): Delete. + (CONST_OK_FOR_LETTER_P): Delete. + (CONST_DOUBLE_OK_FOR_LETTER_P): Delete. + (EXTRA_CONSTRAINT): Delete. + (TMP_REGNO): Delete. + (ZERO_REGNO): Delete. + +2006-03-24 Jeff Law + + * tree-ssa-dom.c (propagate_rhs_into_lhs): Don't call update_stmt + directly. Call mark_new_vars_to_rename slightly earlier. + +2006-03-24 Geoffrey Keating + + * dwarf2out.c (is_c_family): Understand new DWARF3 language types. + (is_cxx): Likewise. + (gen_compile_unit_die): Use new language types for Objective-C and + Objective-C++. + (dwarf2out_decl): Use is_cxx rather than testing explicitly against + DW_LANG_C_plus_plus. + + PR 26793 + * config/t-darwin (crt3.o): Work around bug 26840. + * config/darwin-crt3.c: Rewrite. + * config/darwin.h (STARTFILE_SPEC): Don't use -l for crt3.o. + +2006-03-24 Carlos O'Donell + + * doc/invoke.texi: Document -femit-class-debug-always + * common.opt: Add -femit-class-debug-always. + +2006-03-24 Andreas Krebbel + + * config/s390/s390.c (s390_decompose_address): Allow SImode for + index and base register. + (s390_expand_plug_operand, legitimate_address_p, preferred_la_operand_p, + print_operand_address, print_operand): Replaced REG_OK_FOR_BASE_STRICT_P + with REGNO_OK_FOR_BASE_P and REG_OK_FOR_INDEX_STRICT_P with + REGNO_OK_FOR_INDEX_P. + * config/s390/s390.h (REGNO_OK_FOR_INDEX_P): Replaced check with + ADDR_REGNO_P. + (REG_OK_FOR_INDEX_NONSTRICT_P, REG_OK_FOR_BASE_NONSTRICT_P, + REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P, REG_OK_FOR_INDEX_P, + REG_OK_FOR_BASE_P): Definitions removed. + +2006-03-24 Jakub Jelinek + + PR middle-end/26611 + * gimplify.c (gimplify_bind_expr): Only call omp_add_variable on + non-global variables that don't have DECL_SEEN_IN_BIND_EXPR_P bit + set yet or weren't marked as local yet. + +2006-03-24 Bernd Schmidt + + * regrename.c (scan_rtx_address): Initialize a variable to shut up + the compiler. + +2006-03-24 Eric Botcazou + + * config/rs6000/rs6000-protos.h (rs6000_offsettable_memref_p): Declare. + (rs6000_legitimate_small_data_p): Delete. + * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New predicate. + (rs6000_legitimate_small_data_p): Rename to legitimate_small_data_p + and make static. Add forward declaration. Update uses. + (rs6000_split_multireg_move): Use rs6000_offsettable_memref_p instead + of offsettable_memref_p. + * config/rs6000/rs6000.md (movdf_hardfloat32): Revert 2005-08-23 fix. + Use rs6000_offsettable_memref_p instead of a less accurate predicate. + +2006-03-24 Jeff Law + + * tree-ssa-dom.c (propagate_rhs_into_lhs): Temporarily work + around bug in immediate-use iterator. + +2006-03-24 Alan Modra + + PR target/26607 + * config/rs6000/darwin-ldouble.c: Don't compile when __NO_FPRS__ + or __LITTLE_ENDIAN__. + +2006-03-23 J"orn Rennecke + + * config/sh/divtab-sh4.c, config/sh/divcost-analysis: New files. + * config/sh/lib1funcs.asm (div_table): Add !__SH5__ variant. + * config/sh/t-sh (LIB1ASMFUNCS): Add _div_table. + * config/sh/sh.opt (mdiv=): Amend description. + * config/sh/sh.h (TARGET_DIVIDE_CALL_DIV1): New macro. + (TARGET_DIVIDE_CALL_FP, TARGET_DIVIDE_CALL_TABLE): Likewise. + (sh_divide_strategy_e): Add new members SH_DIV_CALL_DIV1, + SH_DIV_CALL_FP, SH_DIV_CALL_TABLE and SH_DIV_INTRINSIC. + (OVERRIDE_OPTIONS): Also process sh_div_str for TARGET_SH1. + Calculate sh_divsi3_libfunc using TARGET_DIVIDE_* macros. + * config/sh/sh.md (udivsi3_i4_int, divsi3_i4_int): New patterns. + (udivsi3, divsi3): Use them. Check TARGET_DIVIDE_CALL_TABLE / + TARGET_DIVIDE_CALL_FP. + +2006-03-23 Maxim Kuvyrkov + + * haifa-sched.c (choose_ready): Fix type of the local variable. + Move local variables. Add comment. + (check_reg_live): Change signature. Make callable from debugger. + * sched-int.h (check_reg_live): Update signature. + * sched-ebb.c (check_reg_live): Update parameters. + * sched-rgn.c (check_reg_live): Ditto. + (region_head_or_leaf_p): Check pointer before dereferencing. + * config/ia64/ia64.c (ia64_set_sched_flags): Disable data speculation + before reload on optimization levels below 1. + +2006-03-23 Richard Henderson + + * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject + tls symbols. + + PR target/26347 + * config/alpha/predicates.md (local_symbolic_operand): Reject + weak symbols. + +2006-03-23 Andrew Pinski + + PR tree-opt/26795 + * tree-ssa-pre.c (create_value_expr_from): Don't reject + expressions which have overflowed constants. + +2006-03-23 Zdenek Dvorak + + * cse.c (cse_end_of_basic_block): Do not check for LOOP_END note. + +2006-03-23 Zdenek Dvorak + + * cfgloopmanip.c (create_loop_notes): Removed. + * final.c (final_scan_insn): Do not handle loop notes. + * jump.c (squeeze_notes): Ditto. + * cfglayout.c (skip_insns_after_block, + duplicate_insn_chain): Ditto. + * cfgcleanup.c (rest_of_handle_jump2): Do not call + create_loop_notes. + * cfgloop.h (create_loop_notes): Declaration removed. + +2006-03-23 Richard Sandiford + + * varasm.c (output_constant_pool): Restore fnname and fndecl + arguments. + (assemble_start_function): Adjust call accordingly. + (assemble_end_function): Likewise. + +2006-03-22 Volker Reichelt + + PR mudflap/26790 + * tree-mudflap.c (mudflap_finish_file): Skip erroneous objects. + + PR mudflap/26789 + * tree-mudflap.c (mf_xform_derefs_1): Return early on error_mark_node. + +2006-03-22 Volker Reichelt + + PR driver/22600 + * system.h (ICE_EXIT_CODE): New macro. + * diagnostic.c (diagnostic_count_diagnostic): Exit with ICE_EXIT_CODE. + (diagnostic_action_after_output): Likewise. + * gcc.c (fatal_ice): New function. + (execute): Use it instead of fatal. + (fancy_abort): Likewise. + * doc/invoke.texi (-pass-exit-codes): Document return code for ICEs. + +2006-03-22 Jeff Law + + * loop-unroll.c (analyze_iv_to_split_insn): Handle + iv_analyze_result returning false. + +2006-03-22 Jie Zhang + + * config/bfin/bfin.h (ASM_FORMAT_PRIVATE_NAME): Remove. + +2006-03-22 Richard Henderson + + PR middle-end/26084 + * except.c (duplicate_eh_regions_0): New. + (duplicate_eh_region_1): Duplicate the children of the node as + well as the node itself. Link them up properly. + (duplicate_eh_region_2): Merge into ... + (duplicate_eh_regions): ... here. Take copy_region argument, and + copy only a sub-tree if asked. Simplify copying and fixup. + (eh_region_outer_p): New. + * except.h (duplicate_eh_regions): Update decl. + (eh_region_outer_p): Declare. + * omp-low.c (lower_omp_single): Fix eh region placement wrt OMP_RETURN. + (lower_omp_master): Likewise. + (lower_omp_ordered): Likewise. + * tree-cfg.c (struct move_stmt_d): Add new_label_map. + (move_stmt_r): Use it to remap labels. Handle recursion vs + remap_decls_p properly. + (move_block_to_fn): Pass in new_label_map. Remap RESX_EXPR. + (find_outermost_region_in_block): New. + (new_label_mapper): New. + (move_sese_region_to_fn): Copy eh information to the new function + properly. + * tree-inline.c (copy_cfg_body): Update for new duplicate_eh_regions + argument. + * tree-pretty-print.c (dump_generic_node): Dump RESX_EXPR region + number. + +2006-03-22 Richard Sandiford + + * doc/md.texi (-mshared): Mention that -mshared code can be linked + into shared libraries. + +2006-03-22 Richard Sandiford + + * doc/md.texi: Refer to i386/constraints.md instead of + i386/predicates.md. + * config/i386/constraints.md: New file, extracted from... + * config/i386/predicates.md: ...here. + * config/i386/i386.md: Include constraints.md. + +2006-03-21 Jason Merrill + + * builtins.c (expand_builtin_fork_or_exec): Fix pasto. + + PR middle-end/20297 + * expr.c (init_block_move_fn): Force default visibility. + (init_block_clear_fn): Likewise. + * builtins.c (expand_builtin_fork_or_exec): Likewise. + * targhooks.c (default_external_stack_protect_fail): Likewise. + +2006-03-21 Richard Sandiford + + * config/mips/predicates.md (const_call_insn_operand): Allow direct + calls to locally-defined functions if TARGET_ABSOLUTE_ABICALLS. + * config/mips/mips.md (jal_macro): Test TARGET_ABSOLUTE_ABICALLS. + Use TARGET_OLDABI instead of !TARGET_NEWABI. + (loadgp): Use mips_current_loadgp_style. + (loadgp_noshared): New pattern. + (sibcall_internal): Use MIPS_CALL. + (sibcall_value_internal): Likewise. + (sibcall_value_multiple_internal): Likewise. + (call_internal): Likewise. + (call_value_internal): Likewise. + (call_value_multiple_internal): Likewise. + (call_split): Use MIPS_CALL and add an 'S' constraint. + (call_value_split): Likewise. + (call_value_multiple_split): Likewise. + * config/mips/mips.opt (-mabicalls): Tweak docstring. + (-mshared): New option. + * config/mips/mips-protos.h (mips_loadgp_style): New enum. + (mips_current_loadgp_style): Declare. + * config/mips/mips.c (mips_classify_symbol): Avoid using + SYMBOL_GOT_LOCAL if TARGET_ABSOLUTE_ABICALLS. Use SYMBOL_GENERAL + rather than SYMBOL_GOT_GLOBAL for locally-binding symbols if + TARGET_ABSOLUTE_ABICALLS. + (override_options): Adjust comments. Improve the warning that is + issued when -mabicalls and -G are used together. + (mips_file_start): Remove comment. + (mips_current_loadgp_style): New function. + (mips_gnu_local_gp): New variable. + (mips_emit_loadgp): Use mips_current_loadgp_style. Handle + LOADGP_ABSOLUTE. + (mips_output_function_prologue): Use mips_current_laodgp_style. + (mips_expand_prologue): Call mips_emit_loadgp before emitting + the cprestore instruction. + (mips_extra_live_on_entry): Fix reversed test. Don't make $25 + live for TARGET_ABSOLUTE_ABICALLS. + * config/mips/mips.h (TARGET_ABSOLUTE_ABICALLS): New macro. + (ASM_SPEC): Pass down -mshared and -mno-shared. + (MIPS_CALL): New macro. + * config/mips/netbsd.h (TARGET_OS_CPP_BUILTINS): Remove __ABICALLS__ + definition. + * doc/invoke.texi (-mabicalls): Update documentation. + (-mshared): Document. + +2006-03-21 Steve Ellcey + + * config/ia64/unwind-hpux.c: New file. + * config/ia64/t-hpux: Add unwind-hpux.c to libgcc. + +2006-03-21 Steve Ellcey + + PR libgomp/26384 + * config/pa/pa64-hpux.h (LIB_SPEC): Fix for -mt and -pthread options. + +2006-03-21 Jeff Law + + * tree-vrp.c (extract_range_from_unary_expr): Derive ranges for + type conversions of a VR_VARYING source to a wider type. + +2006-03-21 Eric Botcazou + + * config.gcc (i[34567]86-*-solaris2*): Add config/sol2-10.h to + tm_file on Solaris 10 and later. + (sparc64-*-solaris2*): Likewise. + (sparc-*-solaris2*): Likewise. + * config/sol26.h: Rename to config/sol2-6.h. + * config/sol2-10.h: New file. + +2006-03-21 Andrew Pinski + + PR tree-opt/26781 + * tree-ssa-pre.c (create_component_ref_by_pieces): + Handle STRING_CST. + +2006-03-21 Jakub Jelinek + + PR c++/26690 + * tree.c (get_callee_fndecl): If CALL is error_mark_node, + return it immediately. + +2006-03-21 Michael Matz + + * genautomata.c (, num_out_arcs, presence_signature): + New members. + (remove_arc, add_arc): Update num_out_arcs member. + (set_out_arc_insns_equiv_num): Returns nothing instead of number + of out arcs. + (cache_presence): New function. + (compare_states_for_equiv): New function. + (state_is_differed): Don't take number of outargs, adjust callers. + Use new invariant for speeding up. + (init_equiv_class): Create initial classes based on sorted + input. + (partition_equiv_class): Don't track out_arcs_num. + (evaluate_equiv_classes): Call cache_presence on all states and + sort them. + +2006-03-21 Bernd Schmidt + + * config/bfin/bfin-protos.h (bfin_dsp_memref_p): Declare. + * config/bfin/bfin.c (bfin_dsp_memref_p): New function. + (bfin_valid_reg_p): Test for pseudos explicitly and use only + REGNO_MODE_CODE_OK_FOR_BASE_P. New args MODE and OUTER_CODE; all + callers changed. + * config/bfin/bfin.h (PREG_P): Use P_REGNO_P. + (IREG_P, P_REGNO_P, I_REGNO_P): New macros. + (enum reg_class, REG_CLASS_CONTENTS): Add IPREGS. + (BASE_REG_CLASS, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, + REGNO_OK_FOR_BASE_STRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): Delete + macros. + (IREG_POSSIBLE_P, MODE_CODE_BASE_REG_CLASS, + REGNO_MODE_CODE_OK_FOR_BASE_P): New macros. + (REGNO_REG_CLASS): ARGP is in PREGS. + * config/bfin/bfin.md (movhi_insn): Allow for addresses containing + IREGS. + (zero_extendhisi2, extendhisi2): Likewise; changed to define_and_split + to deal with those addresses. + * addresses.h: New file. + * caller-save.c: Include "addresses.h". + (init_caller_save): Use new base_reg_class function. + * rtl-factoring.c: Include "addresses.h". + (recompute_gain_for_pattern_seq): Use new function ok_for_base_p_1. + * recog.c: Include "addresses.h". + (preprocess_constraints): Use new base_reg_class function. + * regrename.c: Include "addresses.h". + (scan_rtx_address): Use new regno_ok_for_base_p and base_reg_class + functions. Keep track of a new var INDEX_CODE to compute valid + classes. + (replace_oldest_value_addr): Likewise. + (replace_oldest_value_mem): Use base_reg_class. + * reload.c: Include "addresses.h". + (REGNO_MODE_OK_FOR_BASE_P, REG_MODE_OK_FOR_BASE_P): Delete macros. + (find_reloads): Use new base_reg_class function. + (find_reloads_address): Likewise; also use regno_ok_for_base_p. + (find_reloads_address_1): Likewise. New args OUTER_CODE and INDEX_CODE; + all callers and prototype changed. + * reload1.c: Include "addresses.h". + (maybe_fix_stack_asms): Use base_reg_class. + * regclass.c: Include "addresses.h". + (ok_for_index_p_nonstrict, ok_for_base_p_nonstrict): New functions. + (init_reg_autoinc): Use new base_reg_class function. + (record_reg_classes): Likewise. + (record_address_regs): Delete arg CLASS; add args CONTEXT, MODE, + OUTER_CODE and INDEX_CODE. All callers and prototype changed. + Use new args to compute necessary class. + + * Makefile.in (regclass.o, reload.o, reload1.o, caller-save.o, recog.o, + regrename.o, rtl-factoring.o): Update dependencies. + * doc/tm.texi (MODE_CODE_BASE_REG_CLASS): Document. + (REGNO_MODE_CODE_OK_FOR_BASE_P): Likewise. + (REG_OK_FOR_BASE_P, REG_MODE_OK_FOR_BASE_P, REG_MODE_OK_FOR_REG_BASE_P, + REG_OK_FOR_INDEX_P): Delete documentation. + +2006-03-21 Alexey Starovoytov + + * config.gcc (sparc-*-solaris2*): Change the default CPU setting + from V7 to V9 for Solaris 7 and above. + +2006-03-21 Toon Moene + + * doc/invoke.texi: Document new flag -fargument-noalias-anything. + * tree-ssa-alias.c (may_alias_p): If flag_argument_noalias > 2, + argument pointers may not alias any other storage. + * common.opt: Define option -fargument-noalias-anything. + * tree-ssa-structalias.c (intra_create_variable_infos): Fortran + alias semantics is specified by flag_argument_noalias > 2. + +2006-03-20 Jeff Law + + * tree-pass.h (pass_phi_only_copy_prop): Delete. + (pass_phi_only_cprop): Declare. + * passes.c (init_optimization_passes): Replace pass_phi_only_copy_prop + with phi_only_cprop + * tree-ssa-dom.c (degenerate_phi_result): New function. + (remove_stmt_or_phi, get_lhs_or_phi_result): Likewise. + (get_rhs_or_phi_arg, propagate_rhs_into_lhs): Likewise. + (eliminate_const_or_copy, eliminate_degenerate_phis_1): Likewise. + (eliminate_degenerate_phis): Likewise. + (pass_phi_only_cprop): New pass descriptor. + * tree-ssa-copy.c (init_copy_prop): Lose PHIS_ONLY argument and + support code. Callers updated. + (execute_copy_prop, do_copy_prop): Likewise and corresponding changes. + (store_copy_prop): Likewise. + (do_phi_only_copy_prop, pass_phi_only_copy_prop): Remove. + +2006-03-20 Jason Merrill + + PR c++/21764 + * c-pragma.c (visstack): Move out of handle_pragma_visibility. + (push_visibility, pop_visibility): Likewise. + * c-pragma.h: Declare them. + +2006-03-20 Kaz Kojima + + * config/sh/sh.c (untangle_mova): Initialize n_addr and n_target. + + * config/sh/sh.c (find_regmode_weight): Change the type of the first + parameter and use get_ebb_head_tail. + (sh_md_init_global): Adjust uses of find_regmode_weight. + +2006-03-20 Steven Bosscher + + * function.h (struct function) : + Rename to x_stack_check_probe_note. + (tail_recursion_reentry): Rename to stack_check_probe_note. + * function.c: Replace tail_recursion_reentry with + stack_check_probe_note everywhere. + (expand_function_start): Only emit a note for + stack_check_probe_note with -fstack-protect. + * stmt.c (expand_case): Don't emit NOTE_INSN_DELETED notes. + + * emit-rtl.c (remove_unnecessary_notes): Remove. + (pass_remove_unnecessary_notes): Remove. + * rtl.h (remove_unnecessary_notes): Remove prototype. + * final.c (final_start_function): Don't call remove_unnecessary_notes. + * tree-pass.h (pass_remove_unnecessary_notes): Remove. + * passes.c (pass_remove_unnecessary_notes): Don't run it. + +2006-03-20 Andrew Pinski + + PR tree-opt/26629 + * tree-ssa-pre (phi_translate): Handle ARRAY_REF's operands. + (valid_in_set): Handle ARRAY_REF. + Change "if min_variant or VH" to asserts. + (create_component_ref_by_pieces): Handle ARRAY_REF. + (create_expression_by_pieces): Likewise. + (can_PRE_operation): ARRAY_REFs can now be PRE'd. + +2006-03-20 David Edelsohn + + * genpreds.c (write_insn_extra_address_constraint): Argument `c' + is operand of switch, not str[0]. + +2006-03-20 Alan Modra + + * config/rs6000/rs6000.c (rs6000_handle_option): Use + TARGET_NO_FP_IN_TOC inside #ifdef TARGET_USES_SYSV4_OPT too. + +2006-03-19 David Edelsohn + + * genpreds.c (write_tm_preds_h): Add semicolon and newline at + end of insn_extra_address_constraint declaration. + +2006-03-19 David Edelsohn + + * config/rs6000/rs6000.opt (no-fp-in-toc): Use Var not Mask. + (no-sum-in-toc): Same. + * config/rs6000/rs6000.c (rs6000_handle_option): Use new + variables. + * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Set + NO_FP_IN_TOC for -fPIC instead of mask. + + * config/rs6000/t-aix43 (T_ADAFLAGS): Delete. + (BOOT_LDFLAGS): Delete. + (LDFLAGS): Delete. + * config/rs6000/t-aix52: Same. + + * config/rs6000/rs6000.md (store_multiple_power): Delete. + (stmsi[345678]_power): New. + +2006-03-17 Steve Ellcey + + * config/ia64/ia64.opt: Add empty line to end of file. + +2006-03-17 Richard Guenther + + PR middle-end/26721 + * builtins.c (get_pointer_alignment): For component style references + adjust alignment to the component type alignment. Make sure + to adjust alignment for component access of constants. + +2006-03-17 David Edelsohn + + * config/rs6000/rs6000.md (strlensi): Emit barrier after + unconditional jump. + +2006-03-17 Paul Brook + + * doc/install.texi: Docuemnt --with-mode. + * config.gcc: Add --with-mode for arm*-*-*. + * config/arm/arm.h (OPTION_DEFAULT_SPECS): Add "mode". + +2006-03-17 J"orn Rennecke + + * sh.c (max_labelno_before_reorg): New variable. + (sh_reorg): Initialize it. + (find_barrier): Check max_labelno_before_reorg before using + label_to_alignment. Take length of explicit alignment insns + into account. When seeing a UNSPECV_CONST_END, return it. + + * sh.c (fixup_mova): Set mode of affected label to QImode. + (untangle_mova): New function. + (find_barrier): Use it. Check mode of label before decrementing + num_mova. + (sh_reorg): Likewise. + Set mode of all insns back to VOIDmode. + + * sh.c (MOVA_LABELREF): New macro. + (mova_p, fixup_mova, sh_reorg): Use it. + (find_barrier, sh_reorg): Don't count num_mova back to 0 unless + ADDR_DIFF_VEC matches mova. + +2006-03-17 Steven Bosscher + + * dwarf2asm.c (dw2_asm_output_offset): Mark 'base' argument + with ATTRIBUTE_UNUSED. + +2006-03-17 Alexandre Oliva + + * dwarf2out.c (dwarf2out_stack_adjust): Always track the stack + pointer, instead of assuming it is possible to derive the + correct args size from a call insn. + +2006-03-16 Jan-Benedict Glaw + + * rtl.h (CONST_INT_P): Define. + * config/vax/vax.c (print_operand_address): Use CONST_INT_P() + instead of GET_CODE(x) == CONST_INT. + (vax_rtx_costs): Likewise. + (vax_output_int_move): Likewise. + (vax_output_int_add): Likewise. + (legitimate_constant_address_p): Likewise. + (index_term_p): Likewise. + * config/vax/vax.h (PRINT_OPERAND): Likewise. + * config/vax/vax.md (and3): Likewise. + (ashrsi3): Likewise. + (extv): Likewise. + (movstricthi): Likewise. + (movstrictqi): Likewise. + (rotrsi3): Likewise. + (five unnamed insns): Likewise. + +2006-03-16 Geoffrey Keating + + * doc/tm.texi (SDB and DWARF): Add extra parameter to + ASM_OUTPUT_DWARF_OFFSET. Use @var to indicate metavariables. + * dwarf2asm.h (dw2_asm_output_offset): Add section parameter. + * dwarf2asm.c (dw2_asm_output_offset): Add base section parameter. + Pass to ASM_OUTPUT_DWARF_OFFSET. + * dwarf2out.c (debug_frame_section): New. + (output_call_frame_info): Use debug_frame_section. Pass it to + dw2_asm_output_offset. + (output_die): Pass appropriate section to dw2_asm_output_offset. + (output_compilation_unit_header): Likewise. + (output_pubnames): Likewise. + (output_aranges): Likewise. + (enum dw_val_class): Break dw_val_class_lbl_offset into + dw_val_class_lineptr and dw_val_class_macptr. + (add_AT_lbl_offset): Delete. + (add_AT_lineptr): New. + (add_AT_macptr): New. + (AT_lbl): Expect a lineptr or macptr. + (print_die): Handle dw_val_class_lineptr and dw_val_class_macptr. + (attr_checksum): Likewise. + (same_dw_val_p): Likewise. + (size_of_die): Likewise. + (value_format): Likewise. + (output_die): Likewise. + (dwarf2out_finish): Call add_AT_lineptr and add_AT_macptr instead of + add_AT_lbl_offset. + * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add extra parameter. + * config/i386/i386.c (x86_file_start): Call darwin_file_start. + * config/darwin-protos.h (darwin_file_start): New. + (darwin_asm_output_dwarf_offset): New. + * config/ia64/ia64.h (ASM_OUTPUT_DWARF_OFFSET): Add extra parameter. + * config/rs6000/rs6000.c (rs6000_darwin_file_start): Call + darwin_file_start. + * config/darwin.c (darwin_emit_unwind_label): Don't output label + if not EH section; simplify. + (darwin_file_start): New. + (darwin_asm_output_dwarf_offset): New. + * config/darwin.h (DEBUG_FRAME_SECTION): In __DWARF segment, + mark as 'debug'. + (DEBUG_INFO_SECTION): Likewise. + (DEBUG_ABBREV_SECTION): Likewise. + (DEBUG_ARANGES_SECTION): Likewise. + (DEBUG_MACINFO_SECTION): Likewise. + (DEBUG_LINE_SECTION): Likewise. + (DEBUG_LOC_SECTION): Likewise. + (DEBUG_PUBNAMES_SECTION): Likewise. + (DEBUG_STR_SECTION): Likewise. + (DEBUG_RANGES_SECTION): Likewise. + (FRAME_BEGIN_LABEL): Must start with 'L' in debug section. + (ASM_OUTPUT_DWARF_OFFSET): New. + +2006-03-16 Joseph S. Myers + + * config.gcc (tm_defines): Always add to previous value rather + than replacing it. + +2006-03-16 Richard Sandiford + + * config/mips/predicates.md (splittable_const_int_operand): New, + split from move_operand. + (splittable_symbolic_operand): New. + (move_operand): Add commentary. Use splittable_const_int_operand. + Inline mips_atomic_symbolic_constant_p. + * config/mips/mips.md: Add combine splitters for handling moves + of splittable_const_int_operands and splittable_symbolic_operands. + * config/mips/mips-protos.h (mips_atomic_symbolic_constant_p): Delete. + (mips_split_symbol): Declare. + (mips_move_integer): Declare. + * config/mips/mips.c (mips_split_p): Make global. + (TARGET_MIN_ANCHOR_OFFSET): Override default. + (TARGET_MAX_ANCHOR_OFFSET): Likewise. + (TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise. + (TARGET_USE_ANCHORS_FOR_SYMBOL_P): Likewise. + (mips_offset_within_object_p): Handle block symbols. + (mips_atomic_symbolic_constant_p): Delete. + (mips_cannot_force_const_mem): Return false for constants that + mips_legitimize_move can handle. + (mips_use_blocks_for_constant_p): New function. + (mips_split_symbol): Make global. + (mips_move_integer): Likewise. Add a temporary register argument. + (mips_legitimize_const_move): Use splittable_const_int_operand and + splittable_symbolic_operand. + (mips_use_anchors_for_symbol_p): New function. + * config/mips/mips.h: Protect externs with !USED_FOR_TARGET. + (mips_split_p): Declare. + +2006-03-16 Richard Sandiford + + * config.gcc (mips64*-*-linux*): Keep existing tm_defines. + (mips*-*-linux*): Likewise. + +2006-03-16 Roger Sayle + Daniel Speyer + + PR middle-end/18259 + * tree-dump.c (dump_real): New function. + (dequeue_and_dump) : Use it to dump FP constants. + * Makefile.in (REAL_H): New macro for dependencies on real.h. + (tree-dump.o): Add $(REAL_H) to the dependencies. + 2006-03-16 Roger Sayle PR middle-end/21781 @@ -10,150 +1472,150 @@ 2006-03-16 Maxim Kuvyrkov - * config/ia64/ia64.c (stops_p): Added explicit initialization. - (ia64_first_cycle_multipass_dfa_lookahead_guard_spec, - ia64_h_i_d_extended, ia64_set_sched_flags, ia64_speculate_insn, - ia64_needs_block_p, ia64_gen_check, ia64_sched_init_global, + * config/ia64/ia64.c (stops_p): Added explicit initialization. + (ia64_first_cycle_multipass_dfa_lookahead_guard_spec, + ia64_h_i_d_extended, ia64_set_sched_flags, ia64_speculate_insn, + ia64_needs_block_p, ia64_gen_check, ia64_sched_init_global, ia64_sched_finish_global): New static functions to implement hooks from gcc_target.sched. (spec_check_no, max_uid, pending_data_specs): New static variables. - (ia64_mode_to_int, ia64_gen_spec_insn, ia64_spec_check_p, + (ia64_mode_to_int, ia64_gen_spec_insn, ia64_spec_check_p, ia64_spec_check_src_p): New static functions. - (ia64_adjust_cost): Renamed to ia64_adjust_cost_2. - (TARGET_SCHED_ADJUST_COST): Removed. - (TARGET_SCHED_ADJUST_COST_2, TARGET_SCHED_INIT_GLOBAL, + (ia64_adjust_cost): Renamed to ia64_adjust_cost_2. + (TARGET_SCHED_ADJUST_COST): Removed. + (TARGET_SCHED_ADJUST_COST_2, TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_FINISH_GLOBAL, TARGET_SCHED_H_I_D_EXTENDED, TARGET_SCHED_SPECULATE_INSN, TARGET_SCHED_NEEDS_BLOCK_P, TARGET_SCHED_GEN_CHECK, TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC, - TARGET_SCHED_SET_SCHED_FLAGS): New macros. - (update_set_flags, group_barrier_needed, set_src_needs_barrier): + TARGET_SCHED_SET_SCHED_FLAGS): New macros. + (update_set_flags, group_barrier_needed, set_src_needs_barrier): Fixed to handle speculation checks. - (rtx_needs_barrier): Fixed to handle speculative loads and - their checks. - (ia64_variable_issue): Added code to count speculative loads and their - checks. - (ia64_first_cycle_multipass_dfa_lookahead_guard): Fixed to handle - speculative loads. - (enum SPEC_MODES, enum SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET): - New enumerations. - (SPEC_GEN_EXTEND_OFFSET, SPEC_N, SPEC_GEN_CHECK_MUTATION_OFFSET): - New constants. - (ia64_ld_address_bypass_p): Fixed to handle speculative loads. + (rtx_needs_barrier): Fixed to handle speculative loads and + their checks. + (ia64_variable_issue): Added code to count speculative loads and their + checks. + (ia64_first_cycle_multipass_dfa_lookahead_guard): Fixed to handle + speculative loads. + (enum SPEC_MODES, enum SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET): + New enumerations. + (SPEC_GEN_EXTEND_OFFSET, SPEC_N, SPEC_GEN_CHECK_MUTATION_OFFSET): + New constants. + (ia64_ld_address_bypass_p): Fixed to handle speculative loads. (ia64_reorg): Reset stops_p to NULL after it is freed. - * config/ia64/ia64.md (UNSPEC_LDA, UNSPEC_LDS, UNSPEC_LDSA, + * config/ia64/ia64.md (UNSPEC_LDA, UNSPEC_LDS, UNSPEC_LDSA, UNSPEC_LDCCLR, UNSPEC_CHKACLR, UNSPEC_CHKS): New constants. - (itanium_class): chk_s renamed to chk_s_i. New constants: chk_s_f, - chk_a. - (data_speculative, control_speculative, check_load): New attributes. - (mov_advanced, mov_speculative, - mov_speculative_advanced, zero_extenddi2_advanced, - zero_extenddi2_speculative, - zero_extenddi2_speculative_advanced): New patterns for - data and control speculative loads. - (mov_clr, zero_extenddi2_clr): New patterns for - check loads. - (advanced_load_check_clr_, speculation_check_): - New pattern for data and control speculation checks. + (itanium_class): chk_s renamed to chk_s_i. New constants: chk_s_f, + chk_a. + (data_speculative, control_speculative, check_load): New attributes. + (mov_advanced, mov_speculative, + mov_speculative_advanced, zero_extenddi2_advanced, + zero_extenddi2_speculative, + zero_extenddi2_speculative_advanced): New patterns for + data and control speculative loads. + (mov_clr, zero_extenddi2_clr): New patterns for + check loads. + (advanced_load_check_clr_, speculation_check_): + New pattern for data and control speculation checks. (MODE, MODE_FOR_EXTEND, output_a, output_s, output_sa, output_c_clr, ld_reg_constr, ldc_reg_constr, chk_reg_constr, mem_constr, reg_pred_prefix, ld_class, chka_class, chks_class, attr_yes): Auxiliary definitions for the patterns. - * config/ia64/itanium1.md (1_fldc, 1_fldpc, 1_ldc, 1_chk_s_f, 1_chk_a, - 1b_fldc, 1b_fldpc, 1b_ldc, 1b_chk_s_f, 1b_chk_a): New resource - constraints. + * config/ia64/itanium1.md (1_fldc, 1_fldpc, 1_ldc, 1_chk_s_f, 1_chk_a, + 1b_fldc, 1b_fldpc, 1b_ldc, 1b_chk_s_f, 1b_chk_a): New resource + constraints. (1_fld, 1_fldp, 1_ld, 1b_fld, 1b_fldp, 1b_ld): Add a condition - for speculation. - (1_chk_s, 1b_chk_s): Renamed to 1_chk_s_i, 1b_chk_s_i. - * config/ia64/itanium2.md (2_flda, 2_fldc, 2_fldpc, 2_ldc, 2_chk_s_f, + for speculation. + (1_chk_s, 1b_chk_s): Renamed to 1_chk_s_i, 1b_chk_s_i. + * config/ia64/itanium2.md (2_flda, 2_fldc, 2_fldpc, 2_ldc, 2_chk_s_f, 2_chk_a, 2b_flda, 2b_fldc, 2b_fldpc, 2b_ldc, 2b_chk_s_f, 2b_chk_a): New resource constraints. (2_fld, 2_fldp, 2_ld, 2b_fld, 2b_fldp, 2b_ld): Add a condition - for speculation. - (2_chk_s, 2b_chk_s): Renamed to 2_chk_s_i, 2b_chk_s_i. - * config/ia64/ia64.opt (msched-br-data-spec, msched-ar-data-spec, - msched-control-spec, msched-br-in-data-spec, msched-ar-in-data-spec, - msched-in-control-spec, msched-ldc, msched-control-ldc, - msched-spec-verbose, msched-prefer-non-data-spec-insns, - msched-prefer-non-control-spec-insns, + for speculation. + (2_chk_s, 2b_chk_s): Renamed to 2_chk_s_i, 2b_chk_s_i. + * config/ia64/ia64.opt (msched-br-data-spec, msched-ar-data-spec, + msched-control-spec, msched-br-in-data-spec, msched-ar-in-data-spec, + msched-in-control-spec, msched-ldc, msched-control-ldc, + msched-spec-verbose, msched-prefer-non-data-spec-insns, + msched-prefer-non-control-spec-insns, msched-count-spec-in-critical-path): New flags to tune speculative scheduling. * doc/invoke.texi (msched-br-data-spec, msched-ar-data-spec, - msched-control-spec, msched-br-in-data-spec, msched-ar-in-data-spec, - msched-in-control-spec, msched-ldc, msched-control-ldc, - msched-spec-verbose, msched-prefer-non-data-spec-insns, - msched-prefer-non-control-spec-insns, + msched-control-spec, msched-br-in-data-spec, msched-ar-in-data-spec, + msched-in-control-spec, msched-ldc, msched-control-ldc, + msched-spec-verbose, msched-prefer-non-data-spec-insns, + msched-prefer-non-control-spec-insns, msched-count-spec-in-critical-path): Document new flags. 2006-03-16 Maxim Kuvyrkov - * target.h (struct spec_info_def): New opaque declaration. - (struct gcc_target.sched): New fields: adjust_cost_2, h_i_d_extended, - speculate_insn, needs_block_p, gen_check, - first_cycle_multipass_dfa_lookahead_guard_spec, set_sched_flags. - * target-def.h (TARGET_SCHED_ADJUST_COST_2, - TARGET_SCHED_H_I_D_EXTENDED, TARGET_SCHED_SPECULATE_INSN, - TARGET_SCHED_NEEDS_BLOCK_P, TARGET_SCHED_GEN_CHECK, - TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC, - TARGET_SCHED_SET_SCHED_FLAGS): New macros to initialize fields in - gcc_target.sched. - (TARGET_SCHED): Use new macros. - * rtl.h (copy_DEPS_LIST_list): New prototype. - * sched-int.h (struct sched_info): Change signature of new_ready field, + * target.h (struct spec_info_def): New opaque declaration. + (struct gcc_target.sched): New fields: adjust_cost_2, h_i_d_extended, + speculate_insn, needs_block_p, gen_check, + first_cycle_multipass_dfa_lookahead_guard_spec, set_sched_flags. + * target-def.h (TARGET_SCHED_ADJUST_COST_2, + TARGET_SCHED_H_I_D_EXTENDED, TARGET_SCHED_SPECULATE_INSN, + TARGET_SCHED_NEEDS_BLOCK_P, TARGET_SCHED_GEN_CHECK, + TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC, + TARGET_SCHED_SET_SCHED_FLAGS): New macros to initialize fields in + gcc_target.sched. + (TARGET_SCHED): Use new macros. + * rtl.h (copy_DEPS_LIST_list): New prototype. + * sched-int.h (struct sched_info): Change signature of new_ready field, adjust all initializations. New fields: add_remove_insn, - begin_schedule_ready, add_block, advance_target_bb, fix_recovery_cfg, + begin_schedule_ready, add_block, advance_target_bb, fix_recovery_cfg, region_head_or_leaf_p. - (struct spec_info_def): New structure declaration. - (spec_info_t): New typedef. - (struct haifa_insn_data): New fields: todo_spec, done_spec, check_spec, - recovery_block, orig_pat. - (glat_start, glat_end): New variables declaraions. - (TODO_SPEC, DONE_SPEC, CHECK_SPEC, RECOVERY_BLOCK, ORIG_PAT): + (struct spec_info_def): New structure declaration. + (spec_info_t): New typedef. + (struct haifa_insn_data): New fields: todo_spec, done_spec, check_spec, + recovery_block, orig_pat. + (glat_start, glat_end): New variables declaraions. + (TODO_SPEC, DONE_SPEC, CHECK_SPEC, RECOVERY_BLOCK, ORIG_PAT): New access macros. - (enum SCHED_FLAGS): New constants: SCHED_RGN, SCHED_EBB, - DETACH_LIFE_INFO, USE_GLAT. - (enum SPEC_SCHED_FLAGS): New enumeration. - (NOTE_NOTE_BB_P): New macro. - (extend_dependency_caches, xrecalloc, unlink_bb_notes, add_block, - attach_life_info, debug_spec_status, check_reg_live): New functions. - (get_block_head_tail): Change signature to get_ebb_head_tail, adjust - all uses in ddg.c, modulo-sched.c, haifa-sched.c, sched-rgn.c, - sched-ebb.c + (enum SCHED_FLAGS): New constants: SCHED_RGN, SCHED_EBB, + DETACH_LIFE_INFO, USE_GLAT. + (enum SPEC_SCHED_FLAGS): New enumeration. + (NOTE_NOTE_BB_P): New macro. + (extend_dependency_caches, xrecalloc, unlink_bb_notes, add_block, + attach_life_info, debug_spec_status, check_reg_live): New functions. + (get_block_head_tail): Change signature to get_ebb_head_tail, adjust + all uses in ddg.c, modulo-sched.c, haifa-sched.c, sched-rgn.c, + sched-ebb.c (get_dep_weak, ds_merge): Prototype functions from sched-deps.c . - * ddg.c (get_block_head_tail): Adjust all uses. - * modulo-sched.c (get_block_head_tail): Adjust all uses. + * ddg.c (get_block_head_tail): Adjust all uses. + * modulo-sched.c (get_block_head_tail): Adjust all uses. (sms_sched_info): Initialize new fields. (contributes_to_priority): Removed. - * haifa-sched.c (params.h): New include. + * haifa-sched.c (params.h): New include. (get_block_head_tail): Adjust all uses. - (ISSUE_POINTS): New macro. - (glat_start, glat_end): New global variables. - (spec_info_var, spec_info, added_recovery_block_p, nr_begin_data, + (ISSUE_POINTS): New macro. + (glat_start, glat_end): New global variables. + (spec_info_var, spec_info, added_recovery_block_p, nr_begin_data, nr_be_in_data, nr_begin_control, nr_be_in_control, bb_header, old_last_basic_block, before_recovery, current_sched_info_var, rgn_n_insns, luid): New static variables. - (insn_cost1): New function. Move logic from insn_cost to here. - (find_insn_reg_weight1): New function. Move logic from - find_insn_reg_weight to here. - (reemit_notes, move_insn, max_issue): Change signature. - (move_insn1): Removed. - (extend_h_i_d, extend_ready, extend_global, extend_all, init_h_i_d, - extend_bb): New static functions to support extension of scheduler's - data structures. - (generate_recovery_code, process_insn_depend_be_in_spec, - begin_speculative_block, add_to_speculative_block, - init_before_recovery, create_recovery_block, create_check_block_twin, - fix_recovery_deps): New static functions to support - generation of recovery code. - (fix_jump_move, find_fallthru_edge, dump_new_block_header, - restore_bb_notes, move_block_after_check, move_succs): New static - functions to support ebb scheduling. - (init_glat, init_glat1, attach_life_info1, free_glat): New static - functions to support handling of register live information. - (associate_line_notes_with_blocks, change_pattern, speculate_insn, + (insn_cost1): New function. Move logic from insn_cost to here. + (find_insn_reg_weight1): New function. Move logic from + find_insn_reg_weight to here. + (reemit_notes, move_insn, max_issue): Change signature. + (move_insn1): Removed. + (extend_h_i_d, extend_ready, extend_global, extend_all, init_h_i_d, + extend_bb): New static functions to support extension of scheduler's + data structures. + (generate_recovery_code, process_insn_depend_be_in_spec, + begin_speculative_block, add_to_speculative_block, + init_before_recovery, create_recovery_block, create_check_block_twin, + fix_recovery_deps): New static functions to support + generation of recovery code. + (fix_jump_move, find_fallthru_edge, dump_new_block_header, + restore_bb_notes, move_block_after_check, move_succs): New static + functions to support ebb scheduling. + (init_glat, init_glat1, attach_life_info1, free_glat): New static + functions to support handling of register live information. + (associate_line_notes_with_blocks, change_pattern, speculate_insn, sched_remove_insn, clear_priorities, calc_priorities, bb_note, add_jump_dependencies): New static functions. - (check_cfg, has_edge_p, check_sched_flags): New static functions for + (check_cfg, has_edge_p, check_sched_flags): New static functions for consistancy checking. (debug_spec_status): New function to call from debugger. (priority): Added code to handle speculation checks. @@ -161,76 +1623,76 @@ (schedule_insn): Added code to handle speculation checks. (unlink_other_notes, rm_line_notes, restore_line_notes, rm_other_notes): Fixed to handle ebbs. - (move_insn): Added code to handle ebb scheduling. + (move_insn): Added code to handle ebb scheduling. (max_issue): Added code to use ISSUE_POINTS of instructions. - (choose_ready): Added code to choose between speculative and - non-speculative instructions. - (schedule_block): Added code to handle ebb scheduling and scheduling of - speculative instructions. - (sched_init): Initialize new variables. - (sched_finish): Free new variables. Print statistics. - (try_ready): Added code to handle speculative instructions. - * lists.c (copy_DEPS_LIST_list): New function. - * sched-deps.c (extend_dependency_caches): New function. Move logic - from create_dependency_caches to here. + (choose_ready): Added code to choose between speculative and + non-speculative instructions. + (schedule_block): Added code to handle ebb scheduling and scheduling of + speculative instructions. + (sched_init): Initialize new variables. + (sched_finish): Free new variables. Print statistics. + (try_ready): Added code to handle speculative instructions. + * lists.c (copy_DEPS_LIST_list): New function. + * sched-deps.c (extend_dependency_caches): New function. Move logic + from create_dependency_caches to here. (get_dep_weak, ds_merge): Make global. - * genattr.c (main): Code to output prototype for - dfa_clear_single_insn_cache. - * genautomata.c (DFA_CLEAR_SINGLE_INSN_CACHE_FUNC_NAME): New macros. - (output_dfa_clean_insn_cache_func): Code to output - dfa_clear_single_insn_cache function. - * sched-ebb.c (target_n_insns): Remove. Adjust all users to use + * genattr.c (main): Code to output prototype for + dfa_clear_single_insn_cache. + * genautomata.c (DFA_CLEAR_SINGLE_INSN_CACHE_FUNC_NAME): New macros. + (output_dfa_clean_insn_cache_func): Code to output + dfa_clear_single_insn_cache function. + * sched-ebb.c (target_n_insns): Remove. Adjust all users to use n_insns. - (can_schedule_ready_p, fix_basic_block_boundaries, add_missing_bbs): - Removed. - (n_insns, dont_calc_deps, ebb_head, ebb_tail, last_bb): - New static variables. - (begin_schedule_ready, add_remove_insn, add_block1, advance_target_bb, + (can_schedule_ready_p, fix_basic_block_boundaries, add_missing_bbs): + Removed. + (n_insns, dont_calc_deps, ebb_head, ebb_tail, last_bb): + New static variables. + (begin_schedule_ready, add_remove_insn, add_block1, advance_target_bb, fix_recovery_cfg, ebb_head_or_leaf_p): Implement hooks from struct sched_info. - (ebb_sched_info): Initialize new fields. + (ebb_sched_info): Initialize new fields. (get_block_head_tail): Adjust all uses. (compute_jump_reg_dependencies): Fixed to use glat_start. (schedule_ebb): Code to remove unreachable last block. - (schedule_ebbs): Added code to update register live information. - * sched-rgn.c (region_sched_info): Initialize new fields. + (schedule_ebbs): Added code to update register live information. + * sched-rgn.c (region_sched_info): Initialize new fields. (get_block_head_tail): Adjust all uses. (last_was_jump): Removed. Adjust users. - (begin_schedule_ready, add_remove_insn, insn_points, extend_regions, + (begin_schedule_ready, add_remove_insn, insn_points, extend_regions, add_block1, fix_recovery_cfg, advance_target_bb, region_head_or_leaf_p): Implement new hooks. - (check_dead_notes1): New static function. - (struct region): New fields: dont_calc_deps, has_real_ebb. - (RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB): New access macros. - (BB_TO_BLOCK): Fixed to handle EBBs. - (EBB_FIRST_BB, EBB_LAST_BB): New macros. - (ebb_head): New static variable. - (debug_regions, contributes_to_priority): Fixed to handle EBBs. - (find_single_block_regions, find_rgns, find_more_rgns): Initialize + (check_dead_notes1): New static function. + (struct region): New fields: dont_calc_deps, has_real_ebb. + (RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB): New access macros. + (BB_TO_BLOCK): Fixed to handle EBBs. + (EBB_FIRST_BB, EBB_LAST_BB): New macros. + (ebb_head): New static variable. + (debug_regions, contributes_to_priority): Fixed to handle EBBs. + (find_single_block_regions, find_rgns, find_more_rgns): Initialize new fields. (compute_dom_prob_ps): New assertion. - (check_live_1, update_live_1): Fixed to work with glat_start instead of - global_live_at_start. + (check_live_1, update_live_1): Fixed to work with glat_start instead of + global_live_at_start. (init_ready_list): New assertions. (can_schedule_ready_p): Split update code to begin_schedule_ready. (new_ready): Add support for BEGIN_CONTROL speculation. - (schedule_insns): Fixed code that updates register live information - to handle EBBs. - (schedule_region): Fixed to handle EBBs. + (schedule_insns): Fixed code that updates register live information + to handle EBBs. + (schedule_region): Fixed to handle EBBs. (init_regions): Use extend_regions and check_dead_notes1. - * params.def (PARAM_MAX_SCHED_INSN_CONFLICT_DELAY, - PARAM_SCHED_SPEC_PROB_CUTOFF): New parameters. + * params.def (PARAM_MAX_SCHED_INSN_CONFLICT_DELAY, + PARAM_SCHED_SPEC_PROB_CUTOFF): New parameters. * doc/tm.texi (TARGET_SCHED_ADJUST_COST_2, TARGET_SCHED_H_I_D_EXTENDED, TARGET_SCHED_SPECULATE_INSN, TARGET_SCHED_NEEDS_BLOCK_P, TARGET_SCHED_GEN_CHECK, TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC, TARGET_SCHED_SET_SCHED_FLAGS): Document. - * doc/invoke.texi (max-sched-insn-conflict-delay, + * doc/invoke.texi (max-sched-insn-conflict-delay, sched-spec-prob-cutoff): Document. 2006-03-16 Maxim Kuvyrkov - * sched-int.h (struct haifa_insn_data): New fields: resolved_deps, + * sched-int.h (struct haifa_insn_data): New fields: resolved_deps, inter_tick, queue_index. (struct sched_info): Change signature of init_ready_list field. Adjust all initializations. @@ -281,60 +1743,60 @@ (gather_region_statistics, print_region_statistics): New static functions. * params.def (PARAM_MAX_SCHED_EXTEND_REGIONS_ITERS): New parameter. - * doc/invoke.texi (max-sched-extend-regions-iters): Document. + * doc/invoke.texi (max-sched-extend-regions-iters): Document. 2006-03-16 Maxim Kuvyrkov - Andrey Belevantsev + Andrey Belevantsev * ddg.c (build_intra_loop_deps): Adjust add_forward_dependence call. - * lists.c (unused_deps_list): New variable. - (free_list): Add assertions to verify the proper distinguishing - between INSN_LISTs and DEPS_LISTs. - (find_list_elem, remove_list_elem, remove_list_node): New static + * lists.c (unused_deps_list): New variable. + (free_list): Add assertions to verify the proper distinguishing + between INSN_LISTs and DEPS_LISTs. + (find_list_elem, remove_list_elem, remove_list_node): New static functions. - (alloc_DEPS_LIST, free_DEPS_LIST, free_DEPS_LIST_node, - remove_free_INSN_LIST_elem, remove_free_DEPS_LIST_elem, - remove_free_INSN_LIST_node, remove_free_DEPS_LIST_node): New functions. - (alloc_INSN_LIST): Assert that the list we're working on is indeed + (alloc_DEPS_LIST, free_DEPS_LIST, free_DEPS_LIST_node, + remove_free_INSN_LIST_elem, remove_free_DEPS_LIST_elem, + remove_free_INSN_LIST_node, remove_free_DEPS_LIST_node): New functions. + (alloc_INSN_LIST): Assert that the list we're working on is indeed an INSN_LIST. - (free_INSN_LIST_node): Likewise. + (free_INSN_LIST_node): Likewise. * modulo-sched.c (current_sched_info): Initialize flags field. * reg-notes.def: Exchange DEP_ANTI and DEP_OUTPUT. * rtl.def (DEPS_LIST): Define. - * rtl.h: Declare new functions from lists.c. - * sched-deps.c (spec_dependency_cache): New static variable. - (maybe_add_or_update_back_dep_1, add_back_dep): New static functions. - (add_dependence): Change return type to void. Move the logic to ... - (add_or_update_back_dep_1): ... here. Handle speculative dependencies. - (delete_all_dependences): Add comment about forward_dependency_cache. + * rtl.h: Declare new functions from lists.c. + * sched-deps.c (spec_dependency_cache): New static variable. + (maybe_add_or_update_back_dep_1, add_back_dep): New static functions. + (add_dependence): Change return type to void. Move the logic to ... + (add_or_update_back_dep_1): ... here. Handle speculative dependencies. + (delete_all_dependences): Add comment about forward_dependency_cache. Handle spec_dependency_cache. Handle DEPS_LISTs. - (fixup_sched_groups): Clarify the change of priority of output - and anti dependencies. - (sched_analyze_2): Adjust add_dependence calls to create data + (fixup_sched_groups): Clarify the change of priority of output + and anti dependencies. + (sched_analyze_2): Adjust add_dependence calls to create data speculative dependence. - (add_forward_dependence): Renamed to add_forw_dep, change prototype. + (add_forward_dependence): Renamed to add_forw_dep, change prototype. Adjust all callers. Handle DEPS_LISTS. - (compute_forward_dependences): Use add_forw_dep. Sort LOG_LINKs in + (compute_forward_dependences): Use add_forw_dep. Sort LOG_LINKs in presence of speculation. - (init_dependency_caches, free_dependency_caches): + (init_dependency_caches, free_dependency_caches): Handle spec_dependency_cache. - (adjust_add_sorted_back_dep, adjust_back_add_forw_dep, delete_forw_dep, + (adjust_add_sorted_back_dep, adjust_back_add_forw_dep, delete_forw_dep, estimate_dep_weak, get_dep_weak, ds_merge, check_dep_status): New static functions. - (add_or_update_back_dep, add_or_update_back_forw_dep, + (add_or_update_back_dep, add_or_update_back_forw_dep, add_back_forw_dep, delete_back_forw_dep): New functions. * sched-int.h (ds_t, dw_t): New typedefs. (struct sched_info): Add new field flags. (struct haifa_insn_data): Add new bitfield has_internal_dep. Prototype new sched-deps.c functions. - (HAS_INTERNAL_DEP, DEP_STATUS): New access macros. + (HAS_INTERNAL_DEP, DEP_STATUS): New access macros. (BITS_PER_DEP_STATUS, BITS_PER_DEP_WEAK, DEP_WEAK_MASK, MAX_DEP_WEAK, MIN_DEP_WEAK, NO_DEP_WEAK, UNCERTAIN_DEP_WEAK, BEGIN_DATA, BE_IN_DATA, BEGIN_CONTROL, BE_IN_CONTROL, BEGIN_SPEC, DATA_SPEC, CONTROL_SPEC, SPECULATIVE, BE_IN_SPEC, FIRST_SPEC_TYPE, LAST_SPEC_TYPE, SPEC_TYPE_SHIFT, DEP_TRUE, DEP_OUTPUT, DEP_ANTI, DEP_TYPES, HARD_DEP): New constants. - (enum SPEC_TYPES_OFFSETS, enum DEPS_ADJUST_RESULT, enum SCHED_FLAGS): + (enum SPEC_TYPES_OFFSETS, enum DEPS_ADJUST_RESULT, enum SCHED_FLAGS): New enums. * sched-rgn.c (current_sched_info): Initialize flags field. (schedule_insns): Initialize current_sched_info before the sched_init @@ -374,7 +1836,7 @@ * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Likewise. (EXTRA_CONSTRAINT): Likewise. * config/vax/vax.md (four unnamed insns): Likewise. - + 2006-03-15 Paul Brook * config/arm/arm.c (minipool_pad): New. @@ -590,7 +2052,7 @@ 2006-03-13 Kazu Hirata * doc/invoke.texi (-fdump-rtl-loop): Remove. - (-dL, -fdump-rtl-loop2): Update the dump file names + (-dL, -fdump-rtl-loop2): Update the dump file names * doc/invoke.texi: Update dump file names. @@ -636,7 +2098,7 @@ 2006-03-10 Jason Merrill PR c/26004 - * gimplify.c (gimplify_modify_expr_rhs): Don't do return slot opt if + * gimplify.c (gimplify_modify_expr_rhs): Don't do return slot opt if the target was declared 'register'. 2006-03-10 Adam Nemet @@ -661,7 +2123,7 @@ * config.gcc (sh*-superh-elf, sh*elf (newlib)): Use newlib.h when building with libgloss. (sh*elf): Implement --without-fp option. - (sh64-superh-linux*): Don't multilib. + (sh64-superh-linux*): Don't multilib. 2006-03-10 J"orn Rennecke @@ -706,7 +2168,7 @@ (*branch_zero): Rename to... (*branch_order): ...this. Remove mode from comparison operator. Use mips_output_order_conditional_branch. Only accept ordered - comparisons. + comparisons. (*branch_zero_inverted): Rename to... (*branch_order_inverted): ...this and update as for *branch_order. @@ -1049,7 +2511,7 @@ (tree_ssa_forward_propagate_single_use_vars): Return TODO_update_smt_usage if we need to update SMT usage. (pass_forwprop): Remove TODO_update_smt_usage. - + 2006-03-03 Diego Novillo * tree-ssa-operands.c: Tidy whitespace. Fix spelling. diff --git a/gcc/ChangeLog-2005 b/gcc/ChangeLog-2005 index 78c97092827..175bbb334f4 100644 --- a/gcc/ChangeLog-2005 +++ b/gcc/ChangeLog-2005 @@ -233,7 +233,7 @@ PR tree-optimization/25125 * convert.c (convert_to_integer): Don't narrow the type of a - PLUX_EXPR or MINUS_EXPR if !flag_wrapv and the unwidened type + PLUS_EXPR or MINUS_EXPR if !flag_wrapv and the unwidened type is signed. 2005-12-26 Graham Stott @@ -5878,6 +5878,10 @@ * config/i386/i386.md (movsi_1, movdi_1_rex64): Use mmxadd type for setting MMX register to 0 rather than mmx. +2005-10-10 Mark Mitchell + + * toplev.c (check_global_declaration_1): Robustify. + 2005-10-10 Steve Ellcey PR target/12098 diff --git a/gcc/ChangeLog.ipa b/gcc/ChangeLog.ipa index 5fed00ca355..4755e07afd8 100644 --- a/gcc/ChangeLog.ipa +++ b/gcc/ChangeLog.ipa @@ -1,3 +1,7 @@ +2006-04-06 Jan Hubicka + + * Merge from mainline + 2006-03-29 Jan Hubicka * Merge from mainline (revision 112588). diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index dc37313d683..61b813b1940 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20060316 +20060405 diff --git a/gcc/Makefile.in b/gcc/Makefile.in index d5db639fd79..45112c32b02 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -72,7 +72,7 @@ program_transform_name := @program_transform_name@ # Directory where sources are, from where we are. srcdir = @srcdir@ -docdir = @srcdir@/doc +gcc_docdir = @srcdir@/doc # Directory where sources are, absolute. abs_srcdir = @abs_srcdir@ @@ -105,7 +105,7 @@ VPATH = @srcdir@ # pattern rule for everything. # This vpath could be extended within the Make-lang fragments. -vpath %.texi $(docdir):$(docdir)/include +vpath %.texi $(gcc_docdir):$(gcc_docdir)/include # ---- # Default values for variables overridden in Makefile fragments. @@ -736,7 +736,7 @@ HOSTHOOKS_DEF_H = hosthooks-def.h $(HOOKS_H) LANGHOOKS_DEF_H = langhooks-def.h $(HOOKS_H) TARGET_DEF_H = target-def.h $(HOOKS_H) RTL_BASE_H = rtl.h rtl.def $(MACHMODE_H) reg-notes.def insn-notes.def \ - input.h real.h statistics.h vec.h + input.h $(REAL_H) statistics.h vec.h RTL_H = $(RTL_BASE_H) genrtl.h PARAMS_H = params.h params.def BUILTINS_DEF = builtins.def sync-builtins.def omp-builtins.def @@ -797,6 +797,7 @@ LAMBDA_H = lambda.h $(TREE_H) vec.h $(GGC_H) TREE_DATA_REF_H = tree-data-ref.h $(LAMBDA_H) VARRAY_H = varray.h $(MACHMODE_H) $(SYSTEM_H) coretypes.h $(TM_H) TREE_INLINE_H = tree-inline.h varray.h $(SPLAY_TREE_H) +REAL_H = real.h $(MACHMODE_H) # # Now figure out from those variables how to compile and link. @@ -1016,7 +1017,7 @@ BACKEND = main.o @TREEBROWSER@ libbackend.a $(CPPLIB) $(LIBDECNUMBER) STAGECOPYSTUFF = insn-flags.h insn-config.h insn-codes.h \ insn-output.c insn-recog.c insn-emit.c insn-extract.c insn-peep.c \ insn-attr.h insn-attrtab.c insn-opinit.c insn-preds.c insn-constants.h \ - tm-preds.h \ + tm-preds.h tm-constrs.h \ tree-check.h min-insn-modes.c insn-modes.c insn-modes.h \ genrtl.c genrtl.h gt-*.h gtype-*.h gtype-desc.c gtyp-gen.h @@ -1582,7 +1583,7 @@ c-lang.o : c-lang.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ stub-objc.o : stub-objc.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \ $(C_COMMON_H) c-lex.o : c-lex.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ - $(RTL_H) debug.h $(C_TREE_H) $(C_COMMON_H) real.h $(SPLAY_TREE_H) \ + $(RTL_H) debug.h $(C_TREE_H) $(C_COMMON_H) $(REAL_H) $(SPLAY_TREE_H) \ $(C_PRAGMA_H) input.h intl.h $(FLAGS_H) toplev.h output.h \ $(CPPLIB_H) $(TIMEVAR_H) $(TM_P_H) c-ppoutput.o : c-ppoutput.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ @@ -1630,11 +1631,11 @@ c-common.o : c-common.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ $(GGC_H) $(EXPR_H) $(TM_P_H) builtin-types.def builtin-attrs.def \ $(DIAGNOSTIC_H) gt-c-common.h langhooks.h $(VARRAY_H) $(RTL_H) \ $(TARGET_H) $(C_TREE_H) tree-iterator.h langhooks.h tree-mudflap.h \ - intl.h opts.h real.h $(CPPLIB_H) $(TREE_INLINE_H) $(HASHTAB_H) \ + intl.h opts.h $(REAL_H) $(CPPLIB_H) $(TREE_INLINE_H) $(HASHTAB_H) \ $(BUILTINS_DEF) c-pretty-print.o : c-pretty-print.c $(C_PRETTY_PRINT_H) \ - $(C_TREE_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) real.h \ + $(C_TREE_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(REAL_H) \ $(DIAGNOSTIC_H) tree-iterator.h c-opts.o : c-opts.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ @@ -1646,7 +1647,7 @@ c-opts.o : c-opts.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ c-cppbuiltin.o : c-cppbuiltin.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) version.h $(C_COMMON_H) $(C_PRAGMA_H) $(FLAGS_H) toplev.h \ - output.h except.h real.h $(TARGET_H) $(TM_P_H) + output.h except.h $(REAL_H) $(TARGET_H) $(TM_P_H) # A file used by all variants of C and some other languages. @@ -1780,7 +1781,7 @@ prefix.o: prefix.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) prefix.h \ -c $(srcdir)/prefix.c $(OUTPUT_OPTION) convert.o: convert.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ - $(FLAGS_H) convert.h toplev.h langhooks.h real.h + $(FLAGS_H) convert.h toplev.h langhooks.h $(REAL_H) double-int.o: double-int.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) @@ -1791,11 +1792,11 @@ langhooks.o : langhooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ tree.o : tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ $(FLAGS_H) $(FUNCTION_H) $(PARAMS_H) \ toplev.h $(GGC_H) $(HASHTAB_H) $(TARGET_H) output.h $(TM_P_H) langhooks.h \ - real.h gt-tree.h tree-iterator.h $(BASIC_BLOCK_H) $(TREE_FLOW_H) \ + $(REAL_H) gt-tree.h tree-iterator.h $(BASIC_BLOCK_H) $(TREE_FLOW_H) \ $(OBSTACK_H) pointer-set.h tree-dump.o: tree-dump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) langhooks.h toplev.h $(SPLAY_TREE_H) $(TREE_DUMP_H) \ - tree-iterator.h tree-pass.h $(DIAGNOSTIC_H) + tree-iterator.h tree-pass.h $(DIAGNOSTIC_H) $(REAL_H) tree-inline.o : tree-inline.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) $(RTL_H) $(EXPR_H) $(FLAGS_H) $(PARAMS_H) input.h insn-config.h \ $(VARRAY_H) $(HASHTAB_H) $(SPLAY_TREE_H) toplev.h \ @@ -1803,7 +1804,7 @@ tree-inline.o : tree-inline.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ debug.h $(DIAGNOSTIC_H) $(TREE_FLOW_H) tree-iterator.h tree-mudflap.h \ $(IPA_PROP_H) print-tree.o : print-tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ - $(GGC_H) langhooks.h real.h tree-iterator.h + $(GGC_H) langhooks.h $(REAL_H) tree-iterator.h stor-layout.o : stor-layout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) $(PARAMS_H) $(FLAGS_H) $(FUNCTION_H) $(EXPR_H) $(RTL_H) \ $(GGC_H) $(TM_P_H) $(TARGET_H) langhooks.h $(REGS_H) gt-stor-layout.h \ @@ -1858,13 +1859,13 @@ tree-ssa-propagate.o : tree-ssa-propagate.c $(TREE_FLOW_H) $(CONFIG_H) \ tree-ssa-dom.o : tree-ssa-dom.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h $(DIAGNOSTIC_H) \ $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \ - $(BASIC_BLOCK_H) domwalk.h real.h tree-pass.h $(FLAGS_H) langhooks.h \ - tree-ssa-propagate.h $(CFGLOOP_H) $(PARAMS_H) + $(BASIC_BLOCK_H) domwalk.h tree-pass.h $(FLAGS_H) langhooks.h \ + tree-ssa-propagate.h $(CFGLOOP_H) $(PARAMS_H) $(REAL_H) tree-ssa-uncprop.o : tree-ssa-uncprop.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h \ $(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \ - $(TREE_DUMP_H) $(BASIC_BLOCK_H) domwalk.h real.h tree-pass.h $(FLAGS_H) \ - langhooks.h tree-ssa-propagate.h + $(TREE_DUMP_H) $(BASIC_BLOCK_H) domwalk.h tree-pass.h $(FLAGS_H) \ + langhooks.h tree-ssa-propagate.h $(REAL_H) tree-ssa-threadedge.o : tree-ssa-threadedge.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h \ $(DIAGNOSTIC_H) $(FUNCTION_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \ @@ -1916,7 +1917,7 @@ tree-cfgcleanup.o : tree-cfgcleanup.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ tree-ssa-propagate.h rtl-factoring.o : rtl-factoring.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \ coretypes.h $(TM_H) $(BASIC_BLOCK_H) $(GGC_H) $(REGS_H) $(PARAMS_H) $(EXPR_H) \ - $(TM_P_H) tree-pass.h tree-flow.h timevar.h output.h + addresses.h $(TM_P_H) tree-pass.h tree-flow.h timevar.h output.h tree-tailcall.o : tree-tailcall.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(RTL_H) $(TREE_H) $(TM_P_H) $(FUNCTION_H) $(TM_H) coretypes.h \ $(TREE_DUMP_H) $(DIAGNOSTIC_H) except.h tree-pass.h $(FLAGS_H) langhooks.h \ @@ -1925,7 +1926,7 @@ tree-ssa-sink.o : tree-ssa-sink.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \ $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) alloc-pool.h \ $(BASIC_BLOCK_H) bitmap.h $(CFGLOOP_H) $(FIBHEAP_H) $(HASHTAB_H) \ - langhooks.h real.h $(TREE_GIMPLE_H) $(TREE_INLINE_H) tree-iterator.h + langhooks.h $(REAL_H) $(TREE_GIMPLE_H) $(TREE_INLINE_H) tree-iterator.h tree-nested.o: tree-nested.c $(CONFIG_H) $(SYSTEM_H) $(TM_H) $(TREE_H) \ $(RTL_H) $(TM_P_H) $(FUNCTION_H) $(TREE_DUMP_H) $(TREE_INLINE_H) \ tree-iterator.h $(TREE_GIMPLE_H) $(CGRAPH_H) $(EXPR_H) langhooks.h \ @@ -1999,7 +2000,7 @@ tree-ssa-loop-manip.o : tree-ssa-loop-manip.c $(TREE_FLOW_H) $(CONFIG_H) \ tree-ssa-loop-im.o : tree-ssa-loop-im.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) domwalk.h \ $(PARAMS_H) output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h \ - $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) real.h $(BASIC_BLOCK_H) \ + $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) $(REAL_H) $(BASIC_BLOCK_H) \ hard-reg-set.h tree-ssa-math-opts.o : tree-ssa-math-opts.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(TREE_H) $(TIMEVAR_H) tree-pass.h $(TM_H) $(FLAGS_H) \ @@ -2030,7 +2031,8 @@ gimplify.o : gimplify.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \ $(DIAGNOSTIC_H) $(TREE_GIMPLE_H) $(TREE_INLINE_H) $(VARRAY_H) langhooks.h \ $(LANGHOOKS_DEF_H) $(TREE_FLOW_H) $(CGRAPH_H) $(TIMEVAR_H) $(TM_H) \ coretypes.h except.h $(FLAGS_H) $(RTL_H) $(FUNCTION_H) $(EXPR_H) output.h \ - $(GGC_H) gt-gimplify.h $(HASHTAB_H) real.h $(TARGET_H) toplev.h $(OPTABS_H) + $(GGC_H) gt-gimplify.h $(HASHTAB_H) $(TARGET_H) toplev.h $(OPTABS_H) \ + $(REAL_H) gimple-low.o : gimple-low.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \ $(DIAGNOSTIC_H) $(TREE_GIMPLE_H) $(TREE_INLINE_H) $(VARRAY_H) langhooks.h \ $(LANGHOOKS_DEF_H) $(TREE_FLOW_H) $(TIMEVAR_H) $(TM_H) coretypes.h \ @@ -2044,10 +2046,10 @@ tree-browser.o : tree-browser.c tree-browser.def $(CONFIG_H) $(SYSTEM_H) \ $(TREE_H) $(TREE_INLINE_H) $(DIAGNOSTIC_H) $(HASHTAB_H) \ $(TM_H) coretypes.h tree-chrec.o: tree-chrec.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ - $(GGC_H) $(TREE_H) real.h $(SCEV_H) tree-pass.h $(PARAMS_H) \ - $(DIAGNOSTIC_H) $(VARRAY_H) $(CFGLOOP_H) $(TREE_FLOW_H) + $(GGC_H) $(TREE_H) $(REAL_H) $(SCEV_H) tree-pass.h $(PARAMS_H) \ + $(DIAGNOSTIC_H) $(CFGLOOP_H) $(TREE_FLOW_H) tree-scalar-evolution.o: tree-scalar-evolution.c $(CONFIG_H) $(SYSTEM_H) \ - coretypes.h $(TM_H) $(GGC_H) $(TREE_H) real.h $(RTL_H) \ + coretypes.h $(TM_H) $(GGC_H) $(TREE_H) $(REAL_H) $(RTL_H) \ $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) \ $(TIMEVAR_H) $(CFGLOOP_H) $(SCEV_H) tree-pass.h $(FLAGS_H) tree-chrec.h tree-data-ref.o: tree-data-ref.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ @@ -2077,7 +2079,7 @@ tree-loop-linear.o: tree-loop-linear.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(GGC_H) $(OPTABS_H) $(TREE_H) $(RTL_H) $(BASIC_BLOCK_H) \ $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(TIMEVAR_H) $(CFGLOOP_H) \ tree-pass.h $(TREE_DATA_REF_H) $(SCEV_H) $(EXPR_H) $(LAMBDA_H) \ - $(TARGET_H) tree-chrec.h $(VARRAY_H) + $(TARGET_H) tree-chrec.h tree-stdarg.o: tree-stdarg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) $(FUNCTION_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) tree-pass.h \ tree-stdarg.h $(TARGET_H) langhooks.h @@ -2097,10 +2099,10 @@ tree-nomudflap.o : $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TREE_INLINE_H) \ output.h $(VARRAY_H) langhooks.h tree-mudflap.h $(TM_H) coretypes.h \ $(GGC_H) gt-tree-mudflap.h tree-pass.h toplev.h tree-pretty-print.o : tree-pretty-print.c $(CONFIG_H) $(SYSTEM_H) \ - $(TREE_H) $(DIAGNOSTIC_H) real.h $(HASHTAB_H) $(TREE_FLOW_H) \ + $(TREE_H) $(DIAGNOSTIC_H) $(REAL_H) $(HASHTAB_H) $(TREE_FLOW_H) \ $(TM_H) coretypes.h tree-iterator.h tree-chrec.h langhooks.h tree-pass.h fold-const.o : fold-const.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ - $(TREE_H) $(FLAGS_H) real.h toplev.h $(HASHTAB_H) $(EXPR_H) $(RTL_H) \ + $(TREE_H) $(FLAGS_H) $(REAL_H) toplev.h $(HASHTAB_H) $(EXPR_H) $(RTL_H) \ $(GGC_H) $(TM_P_H) langhooks.h $(MD5_H) diagnostic.o : diagnostic.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) version.h $(TM_P_H) $(FLAGS_H) input.h toplev.h intl.h \ @@ -2119,9 +2121,9 @@ toplev.o : toplev.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ $(RECOG_H) Makefile toplev.h dwarf2out.h sdbout.h dbxout.h $(EXPR_H) \ hard-reg-set.h $(BASIC_BLOCK_H) graph.h except.h $(REGS_H) $(TIMEVAR_H) \ value-prof.h $(PARAMS_H) $(TM_P_H) reload.h dwarf2asm.h $(TARGET_H) \ - langhooks.h insn-flags.h $(CFGLAYOUT_H) real.h $(CFGLOOP_H) hosthooks.h \ + langhooks.h insn-flags.h $(CFGLAYOUT_H) $(CFGLOOP_H) hosthooks.h \ $(CGRAPH_H) $(COVERAGE_H) alloc-pool.h $(GGC_H) $(INTEGRATE_H) \ - $(CPPLIB_H) opts.h params.def tree-mudflap.h + $(CPPLIB_H) opts.h params.def tree-mudflap.h $(REAL_H) $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ -DTARGET_NAME=\"$(target_noncanonical)\" \ -c $(srcdir)/toplev.c $(OUTPUT_OPTION) @@ -2132,7 +2134,7 @@ passes.o : passes.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ dwarf2out.h sdbout.h dbxout.h $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) \ graph.h except.h $(REGS_H) $(TIMEVAR_H) value-prof.h \ $(PARAMS_H) $(TM_P_H) reload.h dwarf2asm.h $(TARGET_H) \ - langhooks.h insn-flags.h $(CFGLAYOUT_H) real.h $(CFGLOOP_H) \ + langhooks.h insn-flags.h $(CFGLAYOUT_H) $(REAL_H) $(CFGLOOP_H) \ hosthooks.h $(CGRAPH_H) $(COVERAGE_H) tree-pass.h $(TREE_DUMP_H) \ $(GGC_H) $(INTEGRATE_H) $(CPPLIB_H) opts.h tree-flow.h $(TREE_INLINE_H) @@ -2145,21 +2147,21 @@ rtl-error.o: rtl-error.c $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(INSN_ATTR_H) insn-config.h input.h toplev.h intl.h $(DIAGNOSTIC_H) \ $(CONFIG_H) -rtl.o : rtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) real.h \ - $(GGC_H) $(BCONFIG_H) insn-notes.def reg-notes.def toplev.h +rtl.o : rtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ + $(GGC_H) $(BCONFIG_H) insn-notes.def reg-notes.def toplev.h $(REAL_H) print-rtl.o : print-rtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ - $(RTL_H) $(TREE_H) hard-reg-set.h $(BASIC_BLOCK_H) real.h $(FLAGS_H) \ - $(BCONFIG_H) + $(RTL_H) $(TREE_H) hard-reg-set.h $(BASIC_BLOCK_H) $(FLAGS_H) \ + $(BCONFIG_H) $(REAL_H) rtlanal.o : rtlanal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) toplev.h \ - $(RTL_H) hard-reg-set.h $(TM_P_H) insn-config.h $(RECOG_H) real.h \ + $(RTL_H) hard-reg-set.h $(TM_P_H) insn-config.h $(RECOG_H) $(REAL_H) \ $(FLAGS_H) $(REGS_H) output.h $(TARGET_H) $(FUNCTION_H) varasm.o : varasm.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ $(RTL_H) $(FLAGS_H) $(FUNCTION_H) $(EXPR_H) hard-reg-set.h $(REGS_H) \ output.h $(C_PRAGMA_H) toplev.h xcoffout.h debug.h $(GGC_H) $(TM_P_H) \ - $(HASHTAB_H) $(TARGET_H) langhooks.h gt-varasm.h real.h $(BASIC_BLOCK_H) \ - $(CFGLAYOUT_H) $(CGRAPH_H) tree-mudflap.h + $(HASHTAB_H) $(TARGET_H) langhooks.h gt-varasm.h $(BASIC_BLOCK_H) \ + $(CFGLAYOUT_H) $(CGRAPH_H) tree-mudflap.h $(REAL_H) function.o : function.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(CFGLAYOUT_H) $(TREE_GIMPLE_H) $(FLAGS_H) $(FUNCTION_H) $(EXPR_H) \ $(OPTABS_H) libfuncs.h $(REGS_H) hard-reg-set.h insn-config.h $(RECOG_H) \ @@ -2181,7 +2183,7 @@ expr.o : expr.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(FLAGS_H) $(FUNCTION_H) $(REGS_H) $(EXPR_H) $(OPTABS_H) \ libfuncs.h $(INSN_ATTR_H) insn-config.h $(RECOG_H) output.h \ typeclass.h hard-reg-set.h toplev.h hard-reg-set.h except.h reload.h \ - $(GGC_H) langhooks.h intl.h $(TM_P_H) real.h $(TARGET_H) \ + $(GGC_H) langhooks.h intl.h $(TM_P_H) $(REAL_H) $(TARGET_H) \ tree-iterator.h gt-expr.h $(MACHMODE_H) $(TIMEVAR_H) $(TREE_FLOW_H) \ tree-pass.h dojump.o : dojump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) \ @@ -2191,14 +2193,14 @@ builtins.o : builtins.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(TREE_GIMPLE_H) $(FLAGS_H) $(TARGET_H) $(FUNCTION_H) $(REGS_H) \ $(EXPR_H) $(OPTABS_H) insn-config.h $(RECOG_H) output.h typeclass.h \ hard-reg-set.h toplev.h hard-reg-set.h except.h $(TM_P_H) $(PREDICT_H) \ - libfuncs.h real.h langhooks.h $(BASIC_BLOCK_H) tree-mudflap.h \ + libfuncs.h $(REAL_H) langhooks.h $(BASIC_BLOCK_H) tree-mudflap.h \ $(BUILTINS_DEF) $(MACHMODE_H) calls.o : calls.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(FLAGS_H) $(EXPR_H) $(OPTABS_H) langhooks.h $(TARGET_H) \ libfuncs.h $(REGS_H) toplev.h output.h $(FUNCTION_H) $(TIMEVAR_H) $(TM_P_H) \ $(CGRAPH_H) except.h sbitmap.h expmed.o : expmed.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) \ - $(FLAGS_H) insn-config.h $(EXPR_H) $(OPTABS_H) $(RECOG_H) real.h \ + $(FLAGS_H) insn-config.h $(EXPR_H) $(OPTABS_H) $(RECOG_H) $(REAL_H) \ toplev.h $(TM_P_H) langhooks.h explow.o : explow.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) \ $(FLAGS_H) hard-reg-set.h insn-config.h $(EXPR_H) $(OPTABS_H) $(RECOG_H) \ @@ -2206,7 +2208,7 @@ explow.o : explow.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_ output.h optabs.o : optabs.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(FLAGS_H) insn-config.h $(EXPR_H) $(OPTABS_H) libfuncs.h \ - $(RECOG_H) reload.h toplev.h $(GGC_H) real.h $(TM_P_H) except.h \ + $(RECOG_H) reload.h toplev.h $(GGC_H) $(REAL_H) $(TM_P_H) except.h \ gt-optabs.h $(BASIC_BLOCK_H) $(TARGET_H) $(FUNCTION_H) dbxout.o : dbxout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ $(RTL_H) $(FLAGS_H) $(REGS_H) debug.h $(TM_P_H) $(TARGET_H) $(FUNCTION_H) \ @@ -2219,7 +2221,7 @@ sdbout.o : sdbout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) debug.h \ gt-sdbout.h reload.h $(VARRAY_H) dwarf2out.o : dwarf2out.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) version.h $(RTL_H) dwarf2.h debug.h $(FLAGS_H) insn-config.h \ - output.h $(DIAGNOSTIC_H) real.h hard-reg-set.h $(REGS_H) $(EXPR_H) \ + output.h $(DIAGNOSTIC_H) $(REAL_H) hard-reg-set.h $(REGS_H) $(EXPR_H) \ libfuncs.h toplev.h dwarf2out.h reload.h $(GGC_H) except.h dwarf2asm.h \ $(TM_P_H) langhooks.h $(HASHTAB_H) gt-dwarf2out.h $(TARGET_H) $(CGRAPH_H) \ $(MD5_H) input.h $(FUNCTION_H) $(VARRAY_H) @@ -2232,26 +2234,26 @@ xcoffout.o : xcoffout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) $(RTL_H) xcoffout.h $(FLAGS_H) toplev.h output.h dbxout.h \ $(GGC_H) $(TARGET_H) gstab.h xcoff.h emit-rtl.o : emit-rtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ - $(TREE_H) $(FLAGS_H) $(FUNCTION_H) $(REGS_H) insn-config.h $(RECOG_H) real.h \ + $(TREE_H) $(FLAGS_H) $(FUNCTION_H) $(REGS_H) insn-config.h $(RECOG_H) \ $(GGC_H) $(EXPR_H) hard-reg-set.h bitmap.h toplev.h $(BASIC_BLOCK_H) \ - $(HASHTAB_H) $(TM_P_H) debug.h langhooks.h tree-pass.h gt-emit-rtl.h + $(HASHTAB_H) $(TM_P_H) debug.h langhooks.h tree-pass.h gt-emit-rtl.h \ + $(REAL_H) real.o : real.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ - toplev.h $(TM_P_H) real.h + toplev.h $(TM_P_H) $(REAL_H) dfp.o : dfp.c dfp.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ - toplev.h $(TM_P_H) real.h $(DECNUM_H) + toplev.h $(TM_P_H) $(REAL_H) $(DECNUM_H) integrate.o : integrate.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(TREE_H) $(FLAGS_H) debug.h $(INTEGRATE_H) insn-config.h \ - $(EXPR_H) real.h $(REGS_H) intl.h $(FUNCTION_H) output.h $(RECOG_H) \ + $(EXPR_H) $(REAL_H) $(REGS_H) intl.h $(FUNCTION_H) output.h $(RECOG_H) \ except.h toplev.h $(PARAMS_H) $(TM_P_H) $(TARGET_H) langhooks.h \ gt-integrate.h $(GGC_H) tree-pass.h -jump.o : jump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(FLAGS_H) \ - hard-reg-set.h $(REGS_H) insn-config.h $(RECOG_H) $(EXPR_H) real.h except.h \ - $(FUNCTION_H) tree-pass.h \ - toplev.h $(INSN_ATTR_H) $(TM_P_H) reload.h $(PREDICT_H) $(TIMEVAR_H) \ - $(DIAGNOSTIC_H) +jump.o : jump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ + $(FLAGS_H) hard-reg-set.h $(REGS_H) insn-config.h $(RECOG_H) $(EXPR_H) \ + $(REAL_H) except.h $(FUNCTION_H) tree-pass.h $(DIAGNOSTIC_H) \ + toplev.h $(INSN_ATTR_H) $(TM_P_H) reload.h $(PREDICT_H) $(TIMEVAR_H) simplify-rtx.o : simplify-rtx.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ - $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) real.h insn-config.h \ + $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) $(REAL_H) insn-config.h \ $(RECOG_H) $(EXPR_H) toplev.h output.h $(FUNCTION_H) $(GGC_H) $(TM_P_H) \ $(TREE_H) $(TARGET_H) cgraph.o : cgraph.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ @@ -2299,18 +2301,18 @@ coverage.o : coverage.c $(GCOV_IO_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(FUNCTION_H) toplev.h $(GGC_H) langhooks.h $(COVERAGE_H) gt-coverage.h \ $(HASHTAB_H) $(CGRAPH_H) tree-iterator.h cselib.o : cselib.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ - $(REGS_H) hard-reg-set.h $(FLAGS_H) real.h insn-config.h $(RECOG_H) \ + $(REGS_H) hard-reg-set.h $(FLAGS_H) $(REAL_H) insn-config.h $(RECOG_H) \ $(EMIT_RTL_H) toplev.h output.h $(FUNCTION_H) cselib.h $(GGC_H) $(TM_P_H) \ gt-cselib.h $(PARAMS_H) alloc-pool.h $(HASHTAB_H) cse.o : cse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(REGS_H) \ - hard-reg-set.h $(FLAGS_H) real.h insn-config.h $(RECOG_H) $(EXPR_H) toplev.h \ + hard-reg-set.h $(FLAGS_H) insn-config.h $(RECOG_H) $(EXPR_H) toplev.h \ output.h $(FUNCTION_H) $(BASIC_BLOCK_H) $(GGC_H) $(TM_P_H) $(TIMEVAR_H) \ - except.h $(TARGET_H) $(PARAMS_H) rtlhooks-def.h tree-pass.h + except.h $(TARGET_H) $(PARAMS_H) rtlhooks-def.h tree-pass.h $(REAL_H) web.o : web.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ hard-reg-set.h $(FLAGS_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h toplev.h \ $(DF_H) $(OBSTACK_H) timevar.h tree-pass.h gcse.o : gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ - $(REGS_H) hard-reg-set.h $(FLAGS_H) real.h insn-config.h $(GGC_H) \ + $(REGS_H) hard-reg-set.h $(FLAGS_H) $(REAL_H) insn-config.h $(GGC_H) \ $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h toplev.h \ $(TM_P_H) $(PARAMS_H) except.h gt-gcse.h $(TREE_H) cselib.h $(TIMEVAR_H) \ intl.h $(OBSTACK_H) tree-pass.h @@ -2318,12 +2320,12 @@ resource.o : resource.c $(CONFIG_H) $(RTL_H) hard-reg-set.h $(SYSTEM_H) \ coretypes.h $(TM_H) $(REGS_H) $(FLAGS_H) output.h $(RESOURCE_H) \ $(FUNCTION_H) toplev.h $(INSN_ATTR_H) except.h $(PARAMS_H) $(TM_P_H) lcm.o : lcm.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(REGS_H) \ - hard-reg-set.h $(FLAGS_H) real.h insn-config.h $(INSN_ATTR_H) $(RECOG_H) \ - $(BASIC_BLOCK_H) $(TM_P_H) $(FUNCTION_H) output.h + hard-reg-set.h $(FLAGS_H) insn-config.h $(INSN_ATTR_H) $(RECOG_H) \ + $(BASIC_BLOCK_H) $(TM_P_H) $(FUNCTION_H) output.h $(REAL_H) mode-switching.o : mode-switching.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ - $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) real.h insn-config.h \ - $(INSN_ATTR_H) $(RECOG_H) $(BASIC_BLOCK_H) $(TM_P_H) $(FUNCTION_H) output.h \ - tree-pass.h timevar.h + $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \ + $(INSN_ATTR_H) $(RECOG_H) $(BASIC_BLOCK_H) $(TM_P_H) $(FUNCTION_H) \ + output.h tree-pass.h timevar.h $(REAL_H) tree-ssa-dce.o : tree-ssa-dce.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \ $(RTL_H) $(TM_P_H) $(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) \ coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) $(BASIC_BLOCK_H) \ @@ -2340,7 +2342,7 @@ tree-sra.o : tree-sra.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) \ langhooks.h tree-pass.h $(FLAGS_H) $(EXPR_H) $(BASIC_BLOCK_H) \ bitmap.h $(GGC_H) hard-reg-set.h $(OBSTACK_H) $(PARAMS_H) $(TARGET_H) tree-complex.o : tree-complex.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \ - $(TM_H) $(RTL_H) real.h $(FLAGS_H) $(TREE_FLOW_H) $(TREE_GIMPLE_H) \ + $(TM_H) $(RTL_H) $(REAL_H) $(FLAGS_H) $(TREE_FLOW_H) $(TREE_GIMPLE_H) \ tree-iterator.h tree-pass.h tree-ssa-propagate.h $(DIAGNOSTIC_H) tree-vect-generic.o : tree-vect-generic.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \ $(TM_H) $(TREE_FLOW_H) $(TREE_GIMPLE_H) tree-iterator.h tree-pass.h \ @@ -2446,12 +2448,12 @@ et-forest.o : et-forest.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ et-forest.h alloc-pool.h $(BASIC_BLOCK_H) combine.o : combine.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(FLAGS_H) $(FUNCTION_H) insn-config.h $(INSN_ATTR_H) $(REGS_H) $(EXPR_H) \ - rtlhooks-def.h $(BASIC_BLOCK_H) $(RECOG_H) real.h hard-reg-set.h \ + rtlhooks-def.h $(BASIC_BLOCK_H) $(RECOG_H) $(REAL_H) hard-reg-set.h \ toplev.h $(TM_P_H) $(TREE_H) $(TARGET_H) output.h $(PARAMS_H) $(OPTABS_H) \ insn-codes.h timevar.h tree-pass.h regclass.o : regclass.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ hard-reg-set.h $(FLAGS_H) $(BASIC_BLOCK_H) $(REGS_H) insn-config.h \ - $(RECOG_H) reload.h real.h toplev.h $(FUNCTION_H) output.h $(GGC_H) \ + $(RECOG_H) reload.h $(REAL_H) toplev.h $(FUNCTION_H) output.h $(GGC_H) \ $(TM_P_H) $(EXPR_H) $(TIMEVAR_H) gt-regclass.h $(HASHTAB_H) local-alloc.o : local-alloc.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(FLAGS_H) $(REGS_H) hard-reg-set.h insn-config.h $(RECOG_H) \ @@ -2469,27 +2471,28 @@ vec.o : vec.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) coretypes.h vec.h $(GGC_H) \ toplev.h reload.o : reload.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(FLAGS_H) output.h $(EXPR_H) $(OPTABS_H) reload.h $(RECOG_H) \ - hard-reg-set.h insn-config.h $(REGS_H) $(FUNCTION_H) real.h toplev.h \ - $(TM_P_H) $(PARAMS_H) $(TARGET_H) + hard-reg-set.h insn-config.h $(REGS_H) $(FUNCTION_H) toplev.h \ + addresses.h $(TM_P_H) $(PARAMS_H) $(TARGET_H) $(REAL_H) reload1.o : reload1.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) hard-reg-set.h insn-config.h \ $(BASIC_BLOCK_H) $(RECOG_H) output.h $(FUNCTION_H) toplev.h $(TM_P_H) \ - except.h $(TREE_H) real.h $(FLAGS_H) $(MACHMODE_H) $(OBSTACK_H) + addresses.h except.h $(TREE_H) $(REAL_H) $(FLAGS_H) $(MACHMODE_H) \ + $(OBSTACK_H) rtlhooks.o : rtlhooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ rtlhooks-def.h $(EXPR_H) $(RECOG_H) postreload.o : postreload.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ - $(RTL_H) real.h $(FLAGS_H) $(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) \ + $(RTL_H) $(REAL_H) $(FLAGS_H) $(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) \ hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) $(RECOG_H) output.h \ $(FUNCTION_H) toplev.h cselib.h $(TM_P_H) except.h $(TREE_H) $(MACHMODE_H) \ $(OBSTACK_H) timevar.h tree-pass.h postreload-gcse.o : postreload-gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ - $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) real.h insn-config.h \ + $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \ $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h toplev.h \ $(TM_P_H) except.h $(TREE_H) $(TARGET_H) $(HASHTAB_H) intl.h $(OBSTACK_H) \ - $(PARAMS_H) timevar.h tree-pass.h + $(PARAMS_H) timevar.h tree-pass.h $(REAL_H) caller-save.o : caller-save.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(FLAGS_H) $(REGS_H) hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) $(FUNCTION_H) \ - $(RECOG_H) reload.h $(EXPR_H) toplev.h $(TM_P_H) + addresses.h $(RECOG_H) reload.h $(EXPR_H) toplev.h $(TM_P_H) bt-load.o : bt-load.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) except.h \ $(RTL_H) hard-reg-set.h $(REGS_H) $(TM_P_H) $(FIBHEAP_H) output.h $(EXPR_H) \ $(TARGET_H) $(FLAGS_H) $(INSN_ATTR_H) $(FUNCTION_H) tree-pass.h toplev.h @@ -2535,17 +2538,17 @@ sched-ebb.o : sched-ebb.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(PARAMS_H) $(CFGLAYOUT_H) $(TARGET_H) output.h sched-vis.o : sched-vis.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(SCHED_INT_H) hard-reg-set.h $(BASIC_BLOCK_H) $(OBSTACK_H) \ - $(TM_P_H) real.h toplev.h tree-pass.h + $(TM_P_H) $(REAL_H) toplev.h tree-pass.h final.o : final.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(FLAGS_H) intl.h $(REGS_H) $(RECOG_H) conditions.h \ - insn-config.h $(INSN_ATTR_H) $(FUNCTION_H) real.h output.h hard-reg-set.h \ + insn-config.h $(INSN_ATTR_H) $(FUNCTION_H) output.h hard-reg-set.h \ except.h debug.h xcoffout.h toplev.h reload.h dwarf2out.h tree-pass.h \ $(BASIC_BLOCK_H) $(TM_P_H) $(TARGET_H) $(EXPR_H) $(CFGLAYOUT_H) dbxout.h \ - timevar.h cgraph.h $(COVERAGE_H) + timevar.h cgraph.h $(COVERAGE_H) $(REAL_H) recog.o : recog.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ - $(FUNCTION_H) $(BASIC_BLOCK_H) $(REGS_H) $(RECOG_H) $(EXPR_H) hard-reg-set.h \ - $(FLAGS_H) insn-config.h $(INSN_ATTR_H) real.h toplev.h output.h reload.h \ - $(TM_P_H) timevar.h tree-pass.h + $(FUNCTION_H) $(BASIC_BLOCK_H) $(REGS_H) $(RECOG_H) $(EXPR_H) \ + $(FLAGS_H) insn-config.h $(INSN_ATTR_H) toplev.h output.h reload.h \ + addresses.h $(TM_P_H) timevar.h tree-pass.h hard-reg-set.h $(REAL_H) reg-stack.o : reg-stack.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(TREE_H) $(RECOG_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) \ insn-config.h toplev.h reload.h $(FUNCTION_H) $(TM_P_H) $(GGC_H) \ @@ -2554,10 +2557,10 @@ reg-stack.o : reg-stack.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ sreal.o: sreal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) sreal.h predict.o: predict.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(FLAGS_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) \ - hard-reg-set.h output.h toplev.h $(RECOG_H) $(FUNCTION_H) except.h $(EXPR_H) \ + hard-reg-set.h output.h toplev.h $(RECOG_H) $(FUNCTION_H) except.h \ $(TM_P_H) $(PREDICT_H) sreal.h $(PARAMS_H) $(TARGET_H) $(CFGLOOP_H) \ $(COVERAGE_H) $(SCEV_H) $(GGC_H) predict.def $(TIMEVAR_H) $(TREE_DUMP_H) \ - $(TREE_FLOW_H) tree-pass.h + $(TREE_FLOW_H) tree-pass.h $(EXPR_H) lists.o: lists.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) toplev.h \ $(RTL_H) $(GGC_H) gt-lists.h bb-reorder.o : bb-reorder.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ @@ -2577,15 +2580,15 @@ timevar.o : timevar.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ regrename.o : regrename.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h \ output.h $(RECOG_H) $(FUNCTION_H) $(OBSTACK_H) $(FLAGS_H) $(TM_P_H) \ - reload.h toplev.h timevar.h tree-pass.h + addresses.h reload.h toplev.h timevar.h tree-pass.h ifcvt.o : ifcvt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(REGS_H) toplev.h $(FLAGS_H) insn-config.h $(FUNCTION_H) $(RECOG_H) \ $(TARGET_H) $(BASIC_BLOCK_H) $(EXPR_H) output.h except.h $(TM_P_H) \ - real.h $(OPTABS_H) $(CFGLOOP_H) hard-reg-set.h timevar.h tree-pass.h + $(REAL_H) $(OPTABS_H) $(CFGLOOP_H) hard-reg-set.h timevar.h tree-pass.h lambda-mat.o : lambda-mat.c $(LAMBDA_H) $(GGC_H) $(SYSTEM_H) $(CONFIG_H) \ - $(TM_H) coretypes.h $(TREE_H) $(VARRAY_H) + $(TM_H) coretypes.h $(TREE_H) lambda-trans.o: lambda-trans.c $(LAMBDA_H) $(GGC_H) $(SYSTEM_H) $(CONFIG_H) \ - $(TM_H) coretypes.h $(TARGET_H) $(TREE_H) $(VARRAY_H) + $(TM_H) coretypes.h $(TARGET_H) $(TREE_H) lambda-code.o: lambda-code.c $(LAMBDA_H) $(GGC_H) $(SYSTEM_H) $(CONFIG_H) \ $(TM_H) $(OPTABS_H) $(TREE_H) $(RTL_H) $(BASIC_BLOCK_H) \ $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(TIMEVAR_H) $(CFGLOOP_H) \ @@ -2598,11 +2601,11 @@ pretty-print.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h intl.h $(PRETTY_PRINT_H) \ $(TREE_H) errors.o : errors.c $(CONFIG_H) $(SYSTEM_H) errors.h $(BCONFIG_H) -$(out_object_file): $(out_file) $(CONFIG_H) coretypes.h $(TM_H) $(TREE_H) $(GGC_H) \ - $(RTL_H) $(REGS_H) hard-reg-set.h real.h insn-config.h conditions.h \ +$(out_object_file): $(out_file) $(CONFIG_H) coretypes.h $(TM_H) $(TREE_H) \ + $(RTL_H) $(REGS_H) hard-reg-set.h insn-config.h conditions.h \ output.h $(INSN_ATTR_H) $(SYSTEM_H) toplev.h $(TARGET_H) libfuncs.h \ - $(TARGET_DEF_H) $(FUNCTION_H) $(SCHED_INT_H) $(TM_P_H) $(EXPR_H) $(OPTABS_H) \ - langhooks.h + $(TARGET_DEF_H) $(FUNCTION_H) $(SCHED_INT_H) $(TM_P_H) $(EXPR_H) \ + langhooks.h $(GGC_H) $(OPTABS_H) $(REAL_H) tm-constrs.h $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ $(out_file) $(OUTPUT_OPTION) @@ -2653,37 +2656,38 @@ s-mddeps: $(md_file) $(MD_INCLUDES) build/genmddeps$(build_exeext) genrtl.o : genrtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H)\ $(GGC_H) insn-attrtab.o : insn-attrtab.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ - $(TM_H) $(RTL_H) $(REGS_H) real.h output.h $(INSN_ATTR_H) \ + $(TM_H) $(RTL_H) $(REGS_H) $(REAL_H) output.h $(INSN_ATTR_H) \ insn-config.h toplev.h $(RECOG_H) $(TM_P_H) $(FLAGS_H) insn-automata.o : insn-automata.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ - $(TM_H) $(RTL_H) $(REGS_H) real.h output.h $(INSN_ATTR_H) \ + $(TM_H) $(RTL_H) $(REGS_H) $(REAL_H) output.h $(INSN_ATTR_H) \ insn-config.h toplev.h $(RECOG_H) $(TM_P_H) $(FLAGS_H) insn-emit.o : insn-emit.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ - $(RTL_H) $(EXPR_H) real.h output.h insn-config.h $(OPTABS_H) \ + $(RTL_H) $(EXPR_H) $(REAL_H) output.h insn-config.h $(OPTABS_H) \ reload.h $(RECOG_H) toplev.h $(FUNCTION_H) $(FLAGS_H) hard-reg-set.h \ - $(RESOURCE_H) $(TM_P_H) $(BASIC_BLOCK_H) + $(RESOURCE_H) $(TM_P_H) $(BASIC_BLOCK_H) tm-constrs.h insn-extract.o : insn-extract.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(RTL_H) toplev.h insn-config.h $(RECOG_H) insn-modes.o : insn-modes.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ - $(MACHMODE_H) real.h + $(MACHMODE_H) $(REAL_H) insn-opinit.o : insn-opinit.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(RTL_H) insn-config.h $(FLAGS_H) $(RECOG_H) $(EXPR_H) \ $(OPTABS_H) reload.h insn-output.o : insn-output.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ - $(TM_H) $(RTL_H) $(GGC_H) $(REGS_H) real.h conditions.h \ + $(TM_H) $(RTL_H) $(GGC_H) $(REGS_H) $(REAL_H) conditions.h \ hard-reg-set.h insn-config.h $(INSN_ATTR_H) $(EXPR_H) output.h \ $(RECOG_H) $(FUNCTION_H) toplev.h $(FLAGS_H) insn-codes.h $(TM_P_H) \ - $(TARGET_H) + $(TARGET_H) tm-constrs.h insn-peep.o : insn-peep.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ - $(RTL_H) $(REGS_H) output.h real.h insn-config.h $(RECOG_H) except.h \ - $(FUNCTION_H) $(TM_P_H) + $(RTL_H) $(REGS_H) output.h insn-config.h $(RECOG_H) except.h \ + $(FUNCTION_H) $(TM_P_H) $(REAL_H) tm-constrs.h insn-preds.o : insn-preds.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ - $(TM_H) $(RTL_H) $(TREE_H) insn-config.h $(RECOG_H) real.h output.h \ - $(FLAGS_H) $(FUNCTION_H) hard-reg-set.h $(RESOURCE_H) $(TM_P_H) \ - toplev.h reload.h $(REGS_H) + $(TM_H) $(RTL_H) $(TREE_H) insn-config.h $(RECOG_H) output.h \ + $(FLAGS_H) $(FUNCTION_H) hard-reg-set.h $(RESOURCE_H) $(TM_P_H) \ + toplev.h reload.h $(REGS_H) $(REAL_H) tm-constrs.h insn-recog.o : insn-recog.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ - $(TM_H) $(RTL_H) insn-config.h $(RECOG_H) real.h output.h $(FLAGS_H) \ - $(FUNCTION_H) hard-reg-set.h $(RESOURCE_H) $(TM_P_H) toplev.h reload.h + $(TM_H) $(RTL_H) insn-config.h $(RECOG_H) output.h $(FLAGS_H) \ + $(FUNCTION_H) hard-reg-set.h $(RESOURCE_H) $(TM_P_H) toplev.h \ + reload.h $(REAL_H) tm-constrs.h # For each of the files generated by running a generator program over # the machine description, the following pair of static pattern rules @@ -2783,6 +2787,7 @@ s-modes-m: build/genmodes$(build_exeext) insn-preds.c: s-preds; @true tm-preds.h: s-preds-h; @true +tm-constrs.h: s-constrs-h; @true s-preds: $(MD_DEPS) build/genpreds$(build_exeext) $(RUN_GEN) build/genpreds$(build_exeext) $(md_file) > tmp-preds.c @@ -2794,6 +2799,11 @@ s-preds-h: $(MD_DEPS) build/genpreds$(build_exeext) $(SHELL) $(srcdir)/../move-if-change tmp-preds.h tm-preds.h $(STAMP) s-preds-h +s-constrs-h: $(MD_DEPS) build/genpreds$(build_exeext) + $(RUN_GEN) build/genpreds$(build_exeext) -c $(md_file) > tmp-constrs.h + $(SHELL) $(srcdir)/../move-if-change tmp-constrs.h tm-constrs.h + $(STAMP) s-constrs-h + GTFILES = $(srcdir)/input.h $(srcdir)/coretypes.h \ $(CPP_ID_DATA_H) $(host_xm_file_list) \ $(tm_file_list) $(HASHTAB_H) $(SPLAY_TREE_H) $(srcdir)/bitmap.h \ @@ -2912,13 +2922,13 @@ build/print-rtl.o: print-rtl.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h \ build/read-rtl.o: read-rtl.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h \ $(GTM_H) $(RTL_BASE_H) $(OBSTACK_H) $(HASHTAB_H) gensupport.h build/rtl.o: rtl.c $(BCONFIG_H) coretypes.h $(GTM_H) $(SYSTEM_H) \ - $(RTL_H) real.h $(GGC_H) errors.h + $(RTL_H) $(REAL_H) $(GGC_H) errors.h build/vec.o : vec.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) coretypes.h vec.h \ $(GGC_H) toplev.h build/gencondmd.o : build/gencondmd.c $(BCONFIG_H) $(SYSTEM_H) \ coretypes.h $(GTM_H) insn-constants.h $(RTL_H) $(TM_P_H) \ - $(FUNCTION_H) $(REGS_H) $(RECOG_H) real.h output.h $(FLAGS_H) \ - $(RESOURCE_H) toplev.h reload.h except.h + $(FUNCTION_H) $(REGS_H) $(RECOG_H) $(REAL_H) output.h $(FLAGS_H) \ + $(RESOURCE_H) toplev.h reload.h except.h tm-constrs.h # ...these are the programs themselves. build/genattr.o : genattr.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ @@ -2962,7 +2972,7 @@ build/genopinit.o : genopinit.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ build/genoutput.o : genoutput.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ coretypes.h $(GTM_H) errors.h gensupport.h build/genpeep.o : genpeep.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ - coretypes.h $(GTM_H) errors.h gensupport.h + coretypes.h $(GTM_H) errors.h gensupport.h toplev.h build/genpreds.o : genpreds.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ coretypes.h $(GTM_H) errors.h gensupport.h $(OBSTACK_H) build/genrecog.o : genrecog.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ @@ -3052,8 +3062,8 @@ protoize.o: protoize.c $(srcdir)/../include/getopt.h $(CONFIG_H) $(SYSTEM_H) \ $(DRIVER_DEFINES) \ $(srcdir)/protoize.c $(OUTPUT_OPTION)) -unprotoize.o: protoize.c $(srcdir)/../include/getopt.h \ - $(CONFIG_H) $(SYSTEM_H) Makefile version.h +unprotoize.o: protoize.c $(srcdir)/../include/getopt.h $(CONFIG_H) \ + $(SYSTEM_H) coretypes.h $(TM_H) Makefile version.h cppdefault.h intl.h (SHLIB_LINK='$(SHLIB_LINK)' \ SHLIB_MULTILIB='$(SHLIB_MULTILIB)'; \ $(CC) -c -DUNPROTOIZE $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ @@ -3165,8 +3175,8 @@ install-gcc-tooldir: macro_list: s-macro_list; @true s-macro_list : $(GCC_PASSES) echo | $(GCC_FOR_TARGET) -E -dM - | \ - sed -n 's/^#define \([^_][a-zA-Z0-9_]*\).*/\1/p ; \ - s/^#define \(_[^_A-Z][a-zA-Z0-9_]*\).*/\1/p' | \ + sed -n -e 's/^#define \([^_][a-zA-Z0-9_]*\).*/\1/p' \ + -e 's/^#define \(_[^_A-Z][a-zA-Z0-9_]*\).*/\1/p' | \ sort -u > tmp-macro_list $(SHELL) $(srcdir)/../move-if-change tmp-macro_list macro_list $(STAMP) s-macro_list @@ -3361,15 +3371,15 @@ doc/cppinternals.info: $(TEXI_CPPINT_FILES) doc/%.info: %.texi if [ x$(BUILD_INFO) = xinfo ]; then \ - $(MAKEINFO) $(MAKEINFOFLAGS) -I . -I $(docdir) \ - -I $(docdir)/include -o $@ $<; \ + $(MAKEINFO) $(MAKEINFOFLAGS) -I . -I $(gcc_docdir) \ + -I $(gcc_docdir)/include -o $@ $<; \ fi # Duplicate entry to handle renaming of gccinstall.info doc/gccinstall.info: $(TEXI_GCCINSTALL_FILES) if [ x$(BUILD_INFO) = xinfo ]; then \ - $(MAKEINFO) $(MAKEINFOFLAGS) -I $(docdir) \ - -I $(docdir)/include -o $@ $<; \ + $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \ + -I $(gcc_docdir)/include -o $@ $<; \ fi doc/cpp.dvi: $(TEXI_CPP_FILES) @@ -3570,7 +3580,7 @@ maintainer-clean: $(MAKE) lang.maintainer-clean distclean -rm -f cpp.??s cpp.*aux -rm -f gcc.??s gcc.*aux - -rm -f $(docdir)/*.info $(docdir)/*.1 $(docdir)/*.7 $(docdir)/*.dvi + -rm -f $(gcc_docdir)/*.info $(gcc_docdir)/*.1 $(gcc_docdir)/*.7 $(gcc_docdir)/*.dvi # # Entry points `install' and `uninstall'. # Also use `install-collect2' to install collect2 when the config files don't. @@ -4037,7 +4047,7 @@ qmtest-gui: ${QMTEST_DIR}/context # Run Paranoia on real.c. paranoia.o: $(srcdir)/../contrib/paranoia.cc $(CONFIG_H) $(SYSTEM_H) \ - real.h $(TREE_H) + $(REAL_H) $(TREE_H) g++ -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION) paranoia: paranoia.o real.o $(LIBIBERTY) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 56e21e018de..50818170328 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,7 @@ +2006-03-29 Carlos O'Donell + + * Make-lang.in: Rename docdir to gcc_docdir. + 2006-03-04 Eric Botcazou * gigi.h (get_ada_base_type): Delete. diff --git a/gcc/ada/Make-lang.in b/gcc/ada/Make-lang.in index d0e0d6f30d0..5667afa5bcd 100644 --- a/gcc/ada/Make-lang.in +++ b/gcc/ada/Make-lang.in @@ -392,27 +392,27 @@ doc/gnat_ugn_unw.texi: $(srcdir)/ada/gnat_ugn.texi $(srcdir)/ada/ug_words $(srcdir)/ada/ug_words doc/gnat_ugn_unw.texi doc/gnat_ugn_unw.info: doc/gnat_ugn_unw.texi \ - $(docdir)/include/fdl.texi $(docdir)/include/gcc-common.texi \ + $(gcc_docdir)/include/fdl.texi $(gcc_docdir)/include/gcc-common.texi \ gcc-vers.texi if [ x$(BUILD_INFO) = xinfo ]; then \ rm -f $(@)*; \ - $(MAKEINFO) $(MAKEINFOFLAGS) -I$(docdir)/include \ + $(MAKEINFO) $(MAKEINFOFLAGS) -I$(gcc_docdir)/include \ -I$(srcdir)/ada -o $@ $<; \ else true; fi -doc/gnat_rm.info: ada/gnat_rm.texi $(docdir)/include/fdl.texi \ - $(docdir)/include/gcc-common.texi gcc-vers.texi +doc/gnat_rm.info: ada/gnat_rm.texi $(gcc_docdir)/include/fdl.texi \ + $(gcc_docdir)/include/gcc-common.texi gcc-vers.texi if [ x$(BUILD_INFO) = xinfo ]; then \ rm -f $(@)*; \ - $(MAKEINFO) $(MAKEINFOFLAGS) -I$(docdir)/include \ + $(MAKEINFO) $(MAKEINFOFLAGS) -I$(gcc_docdir)/include \ -I$(srcdir)/ada -o $@ $<; \ else true; fi -doc/gnat-style.info: ada/gnat-style.texi $(docdir)/include/fdl.texi +doc/gnat-style.info: ada/gnat-style.texi $(gcc_docdir)/include/fdl.texi if [ x$(BUILD_INFO) = xinfo ]; then \ rm -f $(@)*; \ - $(MAKEINFO) $(MAKEINFOFLAGS) -I$(docdir)/include \ + $(MAKEINFO) $(MAKEINFOFLAGS) -I$(gcc_docdir)/include \ -I$(srcdir)/ada -o $@ $<; \ else true; fi @@ -433,15 +433,15 @@ ada.dvi: doc/gnat_ugn_unw.dvi \ ada.html: -doc/gnat_ugn_unw.dvi: doc/gnat_ugn_unw.texi $(docdir)/include/fdl.texi \ - $(docdir)/include/gcc-common.texi gcc-vers.texi +doc/gnat_ugn_unw.dvi: doc/gnat_ugn_unw.texi $(gcc_docdir)/include/fdl.texi \ + $(gcc_docdir)/include/gcc-common.texi gcc-vers.texi $(TEXI2DVI) -c -I $(abs_docdir)/include -o $@ $< -doc/gnat_rm.dvi: ada/gnat_rm.texi $(docdir)/include/fdl.texi \ - $(docdir)/include/gcc-common.texi gcc-vers.texi +doc/gnat_rm.dvi: ada/gnat_rm.texi $(gcc_docdir)/include/fdl.texi \ + $(gcc_docdir)/include/gcc-common.texi gcc-vers.texi $(TEXI2DVI) -c -I $(abs_docdir)/include -o $@ $< -doc/gnat-style.dvi: ada/gnat-style.texi $(docdir)/include/fdl.texi +doc/gnat-style.dvi: ada/gnat-style.texi $(gcc_docdir)/include/fdl.texi $(TEXI2DVI) -c -I $(abs_docdir)/include -o $@ $< diff --git a/gcc/addresses.h b/gcc/addresses.h new file mode 100644 index 00000000000..6741acac041 --- /dev/null +++ b/gcc/addresses.h @@ -0,0 +1,81 @@ +/* Inline functions to test validity of reg classes for addressing modes. + Copyright (C) 2006 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 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. */ + +/* Wrapper function to unify target macros MODE_CODE_BASE_REG_CLASS, + MODE_BASE_REG_REG_CLASS, MODE_BASE_REG_CLASS and BASE_REG_CLASS. + Arguments as for the MODE_CODE_BASE_REG_CLASS macro. */ + +static inline enum reg_class +base_reg_class (enum machine_mode mode ATTRIBUTE_UNUSED, + enum rtx_code outer_code ATTRIBUTE_UNUSED, + enum rtx_code index_code ATTRIBUTE_UNUSED) +{ +#ifdef MODE_CODE_BASE_REG_CLASS + return MODE_CODE_BASE_REG_CLASS (mode, outer_code, index_code); +#else +#ifdef MODE_BASE_REG_REG_CLASS + if (index_code == REG) + return MODE_BASE_REG_REG_CLASS (mode); +#endif +#ifdef MODE_BASE_REG_CLASS + return MODE_BASE_REG_CLASS (mode); +#else + return BASE_REG_CLASS; +#endif +#endif +} + +/* Wrapper function to unify target macros REGNO_MODE_CODE_OK_FOR_BASE_P, + REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_OK_FOR_BASE_P and + REGNO_OK_FOR_BASE_P. + Arguments as for the REGNO_MODE_CODE_OK_FOR_BASE_P macro. */ + +static inline bool +ok_for_base_p_1 (unsigned regno, enum machine_mode mode ATTRIBUTE_UNUSED, + enum rtx_code outer_code ATTRIBUTE_UNUSED, + enum rtx_code index_code ATTRIBUTE_UNUSED) +{ +#ifdef REGNO_MODE_CODE_OK_FOR_BASE_P + return REGNO_MODE_CODE_OK_FOR_BASE_P (regno, mode, outer_code, index_code); +#else +#ifdef REGNO_MODE_OK_FOR_REG_BASE_P + if (index_code == REG) + return REGNO_MODE_OK_FOR_REG_BASE_P (regno, mode); +#endif +#ifdef REGNO_MODE_OK_FOR_BASE_P + return REGNO_MODE_OK_FOR_BASE_P (regno, mode); +#else + return REGNO_OK_FOR_BASE_P (regno); +#endif +#endif +} + +/* Wrapper around ok_for_base_p_1, for use after register allocation is + complete. Arguments as for the called function. */ + +static inline bool +regno_ok_for_base_p (unsigned regno, enum machine_mode mode, + enum rtx_code outer_code, enum rtx_code index_code) +{ + if (regno >= FIRST_PSEUDO_REGISTER && reg_renumber[regno] >= 0) + regno = reg_renumber[regno]; + + return ok_for_base_p_1 (regno, mode, outer_code, index_code); +} diff --git a/gcc/builtins.c b/gcc/builtins.c index a6283425b0b..8177f890ded 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -278,8 +278,13 @@ get_pointer_alignment (tree exp, unsigned int max_align) inner = max_align; while (handled_component_p (exp)) { + /* Fields in a structure can be packed, honour DECL_ALIGN + of the FIELD_DECL. For all other references the conservative + alignment is the element type alignment. */ if (TREE_CODE (exp) == COMPONENT_REF) inner = MIN (inner, DECL_ALIGN (TREE_OPERAND (exp, 1))); + else + inner = MIN (inner, TYPE_ALIGN (TREE_TYPE (exp))); exp = TREE_OPERAND (exp, 0); } if (TREE_CODE (exp) == FUNCTION_DECL) @@ -288,7 +293,7 @@ get_pointer_alignment (tree exp, unsigned int max_align) align = MIN (inner, DECL_ALIGN (exp)); #ifdef CONSTANT_ALIGNMENT else if (CONSTANT_CLASS_P (exp)) - align = CONSTANT_ALIGNMENT (exp, align); + align = MIN (inner, (unsigned)CONSTANT_ALIGNMENT (exp, align)); #endif else align = MIN (align, inner); @@ -4290,7 +4295,7 @@ build_va_arg_indirect_ref (tree addr) static tree dummy_object (tree type) { - tree t = convert (build_pointer_type (type), null_pointer_node); + tree t = build_int_cst (build_pointer_type (type), 0); return build1 (INDIRECT_REF, type, t); } @@ -5376,6 +5381,8 @@ expand_builtin_fork_or_exec (tree fn, tree arglist, rtx target, int ignore) TREE_PUBLIC (decl) = 1; DECL_ARTIFICIAL (decl) = 1; TREE_NOTHROW (decl) = 1; + DECL_VISIBILITY (decl) = VISIBILITY_DEFAULT; + DECL_VISIBILITY_SPECIFIED (decl) = 1; call = build_function_call_expr (decl, arglist); return expand_call (call, target, ignore); @@ -9650,7 +9657,7 @@ fold_builtin_sprintf (tree arglist, int ignored) if (call && retval) { - retval = convert + retval = fold_convert (TREE_TYPE (TREE_TYPE (implicit_built_in_decls[BUILT_IN_SPRINTF])), retval); return build2 (COMPOUND_EXPR, TREE_TYPE (retval), call, retval); diff --git a/gcc/c-pragma.c b/gcc/c-pragma.c index 39c459528e0..b62352c2e6b 100644 --- a/gcc/c-pragma.c +++ b/gcc/c-pragma.c @@ -593,9 +593,42 @@ static void handle_pragma_visibility (cpp_reader *); typedef enum symbol_visibility visibility; DEF_VEC_I (visibility); DEF_VEC_ALLOC_I (visibility, heap); +static VEC (visibility, heap) *visstack; + +/* Push the visibility indicated by STR onto the top of the #pragma + visibility stack. */ + +void +push_visibility (const char *str) +{ + VEC_safe_push (visibility, heap, visstack, + default_visibility); + if (!strcmp (str, "default")) + default_visibility = VISIBILITY_DEFAULT; + else if (!strcmp (str, "internal")) + default_visibility = VISIBILITY_INTERNAL; + else if (!strcmp (str, "hidden")) + default_visibility = VISIBILITY_HIDDEN; + else if (!strcmp (str, "protected")) + default_visibility = VISIBILITY_PROTECTED; + else + GCC_BAD ("#pragma GCC visibility push() must specify default, internal, hidden or protected"); + visibility_options.inpragma = 1; +} + +/* Pop a level of the #pragma visibility stack. */ + +void +pop_visibility (void) +{ + default_visibility = VEC_pop (visibility, visstack); + visibility_options.inpragma + = VEC_length (visibility, visstack) != 0; +} /* Sets the default visibility for symbols to something other than that specified on the command line. */ + static void handle_pragma_visibility (cpp_reader *dummy ATTRIBUTE_UNUSED) { @@ -603,7 +636,6 @@ handle_pragma_visibility (cpp_reader *dummy ATTRIBUTE_UNUSED) tree x; enum cpp_ttype token; enum { bad, push, pop } action = bad; - static VEC (visibility, heap) *visstack; token = pragma_lex (&x); if (token == CPP_NAME) @@ -621,15 +653,9 @@ handle_pragma_visibility (cpp_reader *dummy ATTRIBUTE_UNUSED) if (pop == action) { if (!VEC_length (visibility, visstack)) - { - GCC_BAD ("no matching push for %<#pragma GCC visibility pop%>"); - } + GCC_BAD ("no matching push for %<#pragma GCC visibility pop%>"); else - { - default_visibility = VEC_pop (visibility, visstack); - visibility_options.inpragma - = VEC_length (visibility, visstack) != 0; - } + pop_visibility (); } else { @@ -637,28 +663,9 @@ handle_pragma_visibility (cpp_reader *dummy ATTRIBUTE_UNUSED) GCC_BAD ("missing %<(%> after %<#pragma GCC visibility push%> - ignored"); token = pragma_lex (&x); if (token != CPP_NAME) - { - GCC_BAD ("malformed #pragma GCC visibility push"); - } + GCC_BAD ("malformed #pragma GCC visibility push"); else - { - const char *str = IDENTIFIER_POINTER (x); - VEC_safe_push (visibility, heap, visstack, - default_visibility); - if (!strcmp (str, "default")) - default_visibility = VISIBILITY_DEFAULT; - else if (!strcmp (str, "internal")) - default_visibility = VISIBILITY_INTERNAL; - else if (!strcmp (str, "hidden")) - default_visibility = VISIBILITY_HIDDEN; - else if (!strcmp (str, "protected")) - default_visibility = VISIBILITY_PROTECTED; - else - { - GCC_BAD ("#pragma GCC visibility push() must specify default, internal, hidden or protected"); - } - visibility_options.inpragma = 1; - } + push_visibility (IDENTIFIER_POINTER (x)); if (pragma_lex (&x) != CPP_CLOSE_PAREN) GCC_BAD ("missing %<(%> after %<#pragma GCC visibility push%> - ignored"); } diff --git a/gcc/c-pragma.h b/gcc/c-pragma.h index 5868f07251c..6ebb08b685c 100644 --- a/gcc/c-pragma.h +++ b/gcc/c-pragma.h @@ -75,6 +75,8 @@ extern struct cpp_reader* parse_in; visibility is not supported on the host OS platform the statements are ignored. */ #define HANDLE_PRAGMA_VISIBILITY 1 +extern void push_visibility (const char *); +extern void pop_visibility (void); extern void init_pragma (void); diff --git a/gcc/caller-save.c b/gcc/caller-save.c index ea85044cfec..d0c33e3cf31 100644 --- a/gcc/caller-save.c +++ b/gcc/caller-save.c @@ -25,6 +25,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include "tm.h" #include "rtl.h" #include "regs.h" +#include "addresses.h" #include "insn-config.h" #include "flags.h" #include "hard-reg-set.h" @@ -153,7 +154,7 @@ init_caller_save (void) for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) if (TEST_HARD_REG_BIT (reg_class_contents - [(int) MODE_BASE_REG_CLASS (regno_save_mode [i][1])], i)) + [(int) base_reg_class (regno_save_mode [i][1], PLUS, CONST_INT)], i)) break; gcc_assert (i < FIRST_PSEUDO_REGISTER); diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c index cd9d708961d..954a9569f16 100644 --- a/gcc/cfgcleanup.c +++ b/gcc/cfgcleanup.c @@ -2312,8 +2312,6 @@ rest_of_handle_jump2 (void) cleanup_cfg ((optimize ? CLEANUP_EXPENSIVE : 0) | (flag_thread_jumps ? CLEANUP_THREADING : 0)); - create_loop_notes (); - purge_line_number_notes (); if (optimize) diff --git a/gcc/cfglayout.c b/gcc/cfglayout.c index bcdeb96c130..f427a2bb57e 100644 --- a/gcc/cfglayout.c +++ b/gcc/cfglayout.c @@ -99,7 +99,6 @@ skip_insns_after_block (basic_block bb) case NOTE: switch (NOTE_LINE_NUMBER (insn)) { - case NOTE_INSN_LOOP_END: case NOTE_INSN_BLOCK_END: last_insn = insn; continue; @@ -135,12 +134,12 @@ skip_insns_after_block (basic_block bb) /* It is possible to hit contradictory sequence. For instance: jump_insn - NOTE_INSN_LOOP_BEG + NOTE_INSN_BLOCK_BEG barrier Where barrier belongs to jump_insn, but the note does not. This can be created by removing the basic block originally following - NOTE_INSN_LOOP_BEG. In such case reorder the notes. */ + NOTE_INSN_BLOCK_BEG. In such case reorder the notes. */ for (insn = last_insn; insn != BB_END (bb); insn = prev) { @@ -148,7 +147,6 @@ skip_insns_after_block (basic_block bb) if (NOTE_P (insn)) switch (NOTE_LINE_NUMBER (insn)) { - case NOTE_INSN_LOOP_END: case NOTE_INSN_BLOCK_END: case NOTE_INSN_DELETED: case NOTE_INSN_DELETED_LABEL: @@ -986,10 +984,6 @@ duplicate_insn_chain (rtx from, rtx to) in first BB, we may want to copy the block. */ case NOTE_INSN_PROLOGUE_END: - case NOTE_INSN_LOOP_BEG: - case NOTE_INSN_LOOP_END: - /* Strip down the loop notes - we don't really want to keep - them consistent in loop copies. */ case NOTE_INSN_DELETED: case NOTE_INSN_DELETED_LABEL: /* No problem to strip these. */ diff --git a/gcc/cfgloop.h b/gcc/cfgloop.h index c2f7bbb3638..3309e0fdca9 100644 --- a/gcc/cfgloop.h +++ b/gcc/cfgloop.h @@ -198,7 +198,6 @@ int flow_loop_nodes_find (basic_block, struct loop *); void fix_loop_structure (struct loops *, bitmap changed_bbs); void mark_irreducible_loops (struct loops *); void mark_single_exit_loops (struct loops *); -extern void create_loop_notes (void); /* Loop data structure manipulation/querying. */ extern void flow_loop_tree_node_add (struct loop *, struct loop *); diff --git a/gcc/cfgloopmanip.c b/gcc/cfgloopmanip.c index bb7aca0faeb..79c5142a078 100644 --- a/gcc/cfgloopmanip.c +++ b/gcc/cfgloopmanip.c @@ -1275,100 +1275,6 @@ loop_split_edge_with (edge e, rtx insns) return new_bb; } -/* Uses the natural loop discovery to recreate loop notes. */ -void -create_loop_notes (void) -{ - rtx insn, head, end; - struct loops loops; - struct loop *loop; - basic_block *first, *last, bb, pbb; - struct loop **stack, **top; - -#ifdef ENABLE_CHECKING - /* Verify that there really are no loop notes. */ - for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) - gcc_assert (!NOTE_P (insn) || - NOTE_LINE_NUMBER (insn) != NOTE_INSN_LOOP_BEG); -#endif - - flow_loops_find (&loops); - free_dominance_info (CDI_DOMINATORS); - if (loops.num > 1) - { - last = XCNEWVEC (basic_block, loops.num); - - FOR_EACH_BB (bb) - { - for (loop = bb->loop_father; loop->outer; loop = loop->outer) - last[loop->num] = bb; - } - - first = XCNEWVEC (basic_block, loops.num); - stack = XCNEWVEC (struct loop *, loops.num); - top = stack; - - FOR_EACH_BB (bb) - { - for (loop = bb->loop_father; loop->outer; loop = loop->outer) - { - if (!first[loop->num]) - { - *top++ = loop; - first[loop->num] = bb; - } - - if (bb == last[loop->num]) - { - /* Prevent loops from overlapping. */ - while (*--top != loop) - last[(*top)->num] = EXIT_BLOCK_PTR; - - /* If loop starts with jump into it, place the note in - front of the jump. */ - insn = PREV_INSN (BB_HEAD (first[loop->num])); - if (insn - && BARRIER_P (insn)) - insn = PREV_INSN (insn); - - if (insn - && JUMP_P (insn) - && any_uncondjump_p (insn) - && onlyjump_p (insn)) - { - pbb = BLOCK_FOR_INSN (insn); - gcc_assert (pbb && single_succ_p (pbb)); - - if (!flow_bb_inside_loop_p (loop, single_succ (pbb))) - insn = BB_HEAD (first[loop->num]); - } - else - insn = BB_HEAD (first[loop->num]); - - head = BB_HEAD (first[loop->num]); - emit_note_before (NOTE_INSN_LOOP_BEG, insn); - BB_HEAD (first[loop->num]) = head; - - /* Position the note correctly wrto barrier. */ - insn = BB_END (last[loop->num]); - if (NEXT_INSN (insn) - && BARRIER_P (NEXT_INSN (insn))) - insn = NEXT_INSN (insn); - - end = BB_END (last[loop->num]); - emit_note_after (NOTE_INSN_LOOP_END, insn); - BB_END (last[loop->num]) = end; - } - } - } - - free (first); - free (last); - free (stack); - } - flow_loops_free (&loops); -} - /* This function is called from loop_version. It splits the entry edge of the loop we want to version, adds the versioning condition, and adjust the edges to the two versions of the loop appropriately. diff --git a/gcc/common.opt b/gcc/common.opt index 5a32f823ab3..7f2e5afcd98 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -257,7 +257,9 @@ Common RejectNegative Joined UInteger ; 1 if pointer arguments may not alias each other but may alias ; global variables. ; 2 if pointer arguments may not alias each other and may not -; alias global variables. True in Fortran. +; alias global variables. +; 3 if pointer arguments may not alias anything. True in Fortran. +; Set by the front end. fargument-alias Common Report Var(flag_argument_noalias,0) Specify that arguments may alias each other and globals @@ -270,6 +272,10 @@ fargument-noalias-global Common Report Var(flag_argument_noalias,2) VarExists Assume arguments alias neither each other nor globals +fargument-noalias-anything +Common Report Var(flag_argument_noalias,3) VarExists +Assume arguments alias no other storage + fasynchronous-unwind-tables Common Report Var(flag_asynchronous_unwind_tables) Generate unwind tables that are exact at each instruction boundary @@ -391,6 +397,10 @@ feliminate-unused-debug-types Common Report Var(flag_eliminate_unused_debug_types) Init(1) Perform unused type elimination in debug info +femit-class-debug-always +Common Report Var(flag_emit_class_debug_always) Init(1) +Do not suppress C++ class debug information. + fexceptions Common Report Var(flag_exceptions) Enable exception handling diff --git a/gcc/config.gcc b/gcc/config.gcc index 78a7cc1803c..ef6364de7de 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -608,7 +608,7 @@ alpha*-*-netbsd*) tmake_file="${tmake_file} alpha/t-alpha alpha/t-ieee" ;; alpha*-*-openbsd*) - tm_defines="OBSD_NO_DYNAMIC_LIBRARIES OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT" + tm_defines="${tm_defines} OBSD_NO_DYNAMIC_LIBRARIES OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT" tm_file="alpha/alpha.h openbsd.h alpha/openbsd.h" # default x-alpha is only appropriate for dec-osf. target_cpu_default="MASK_GAS" @@ -632,12 +632,12 @@ alpha*-dec-osf[45]*) # Define TARGET_SUPPORT_ARCH except on 4.0a. case ${target} in *-*-osf4.0a) ;; - *) tm_defines="TARGET_SUPPORT_ARCH=1" + *) tm_defines="${tm_defines} TARGET_SUPPORT_ARCH=1" esac ;; *-*-osf5*) tm_file="${tm_file} alpha/osf5.h" - tm_defines="TARGET_SUPPORT_ARCH=1" + tm_defines="${tm_defines} TARGET_SUPPORT_ARCH=1" ;; esac case ${enable_threads} in @@ -1149,7 +1149,11 @@ i[34567]86-*-solaris2*) tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h i386/sysv4.h sol2.h" case ${target} in *-*-solaris2.[0-6] | *-*-solaris2.[0-6].*) - tm_file="${tm_file} sol26.h" + tm_file="${tm_file} sol2-6.h" + ;; + *-*-solaris2.1[0-9]*) + tm_file="${tm_file} sol2-10.h" + ;; esac tm_file="${tm_file} i386/sol2.h" tmake_file="t-sol2 i386/t-sol2 t-svr4" @@ -1402,19 +1406,19 @@ m68k-*-aout*) ;; m68k-*-coff*) tmake_file=m68k/t-m68kbare - tm_defines="MOTOROLA USE_GAS" + tm_defines="${tm_defines} MOTOROLA USE_GAS" tm_file="m68k/m68k.h m68k/m68k-none.h m68k/m68kemb.h dbxcoff.h m68k/coff.h dbx.h" use_fixproto=yes ;; m68020-*-elf* | m68k-*-elf*) tm_file="m68k/m68k.h m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/m68kemb.h m68k/m68020-elf.h" - tm_defines="MOTOROLA USE_GAS" + tm_defines="${tm_defines} MOTOROLA USE_GAS" tmake_file=m68k/t-m68kelf extra_parts="crtbegin.o crtend.o" ;; m68010-*-netbsdelf* | m68k*-*-netbsdelf*) tm_file="${tm_file} dbxelf.h elfos.h netbsd.h netbsd-elf.h m68k/netbsd-elf.h" - tm_defines="MOTOROLA USE_GAS" + tm_defines="${tm_defines} MOTOROLA USE_GAS" case ${target} in m68010*) target_cpu_default="0" @@ -1426,7 +1430,7 @@ m68010-*-netbsdelf* | m68k*-*-netbsdelf*) ;; m68k*-*-openbsd*) # needed to unconfuse gdb - tm_defines="OBSD_OLD_GAS TARGET_DEFAULT=(MASK_68020|MASK_68881|MASK_BITFIELD)" + tm_defines="${tm_defines} OBSD_OLD_GAS TARGET_DEFAULT=(MASK_68020|MASK_68881|MASK_BITFIELD)" tm_file="m68k/m68k.h openbsd.h m68k/openbsd.h" tmake_file="t-libc-ok t-openbsd m68k/t-openbsd" # we need collect2 until our bug is fixed... @@ -1434,7 +1438,7 @@ m68k*-*-openbsd*) ;; m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux with uClibc tm_file="m68k/m68k.h m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/uclinux.h" - tm_defines="MOTOROLA USE_GAS" + tm_defines="${tm_defines} MOTOROLA USE_GAS" tmake_file=m68k/t-uclinux use_fixproto=no ;; @@ -1443,7 +1447,7 @@ m68k-*-linux*) # Motorola m68k's running GNU/Linux # aka the GNU/Linux C library 6. tm_file="m68k/m68k.h dbxelf.h elfos.h svr4.h linux.h m68k/linux.h" extra_options="${extra_options} m68k/ieee.opt" - tm_defines="MOTOROLA USE_GAS" + tm_defines="${tm_defines} MOTOROLA USE_GAS" # if not configured with --enable-sjlj-exceptions, bump the # libgcc version number if test x$sjlj != x1; then @@ -1453,7 +1457,7 @@ m68k-*-linux*) # Motorola m68k's running GNU/Linux m68k-*-rtems*) tmake_file="m68k/t-m68kbare m68k/t-crtstuff t-rtems m68k/t-rtems" tm_file="m68k/m68k.h m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/m68kemb.h m68k/m68020-elf.h m68k/rtemself.h rtems.h" - tm_defines="MOTOROLA USE_GAS" + tm_defines="${tm_defines} MOTOROLA USE_GAS" extra_parts="crtbegin.o crtend.o" ;; mcore-*-elf) @@ -1478,7 +1482,7 @@ mips-sgi-irix[56]*) *-*-irix6*) tm_file="${tm_file} mips/iris6.h" tmake_file="${tmake_file} mips/t-iris6" - tm_defines="MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_N32" + tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_N32" ;; esac if test "x$stabs" = xyes @@ -1501,7 +1505,7 @@ mips*-*-netbsd*) # NetBSD/mips, either endian. mips64*-*-linux*) tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h mips/linux64.h" tmake_file="${tmake_file} mips/t-linux64" - tm_defines="MIPS_ABI_DEFAULT=ABI_N32" + tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32" gnu_ld=yes gas=yes ;; @@ -1510,12 +1514,12 @@ mips*-*-linux*) # Linux MIPS, either endian. case ${target} in mipsisa32*-*) target_cpu_default="MASK_SOFT_FLOAT" - tm_defines="MIPS_ISA_DEFAULT=32" + tm_defines="${tm_defines} MIPS_ISA_DEFAULT=32" ;; esac ;; mips*-*-openbsd*) - tm_defines="OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_OBJECT OBSD_HAS_CORRECT_SPECS" + tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_OBJECT OBSD_HAS_CORRECT_SPECS" target_cpu_default="MASK_ABICALLS" tm_file="mips/mips.h openbsd.h mips/openbsd.h mips/sdb.h" case ${target} in @@ -1527,34 +1531,34 @@ mips*-*-openbsd*) mipsisa32-*-elf* | mipsisa32el-*-elf*) tm_file="elfos.h ${tm_file} mips/elf.h" tmake_file=mips/t-isa3264 - tm_defines="MIPS_ISA_DEFAULT=32 MIPS_ABI_DEFAULT=ABI_EABI" + tm_defines="${tm_defines} MIPS_ISA_DEFAULT=32 MIPS_ABI_DEFAULT=ABI_EABI" use_fixproto=yes ;; mipsisa32r2-*-elf* | mipsisa32r2el-*-elf*) tm_file="elfos.h ${tm_file} mips/elf.h" tmake_file=mips/t-isa3264 - tm_defines="MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_EABI" + tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_EABI" use_fixproto=yes ;; mipsisa64-*-elf* | mipsisa64el-*-elf*) tm_file="elfos.h ${tm_file} mips/elf.h" tmake_file=mips/t-isa3264 target_cpu_default="MASK_64BIT|MASK_FLOAT64" - tm_defines="MIPS_ISA_DEFAULT=64 MIPS_ABI_DEFAULT=ABI_EABI" + tm_defines="${tm_defines} MIPS_ISA_DEFAULT=64 MIPS_ABI_DEFAULT=ABI_EABI" use_fixproto=yes ;; mipsisa64sr71k-*-elf*) tm_file="elfos.h ${tm_file} mips/elf.h" tmake_file=mips/t-sr71k target_cpu_default="MASK_64BIT|MASK_FLOAT64" - tm_defines="MIPS_ISA_DEFAULT=64 MIPS_CPU_STRING_DEFAULT=\\\"sr71000\\\" MIPS_ABI_DEFAULT=ABI_EABI" + tm_defines="${tm_defines} MIPS_ISA_DEFAULT=64 MIPS_CPU_STRING_DEFAULT=\\\"sr71000\\\" MIPS_ABI_DEFAULT=ABI_EABI" use_fixproto=yes ;; mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*) tm_file="elfos.h ${tm_file} mips/elf.h" tmake_file=mips/t-elf target_cpu_default="MASK_64BIT|MASK_FLOAT64" - tm_defines="MIPS_ISA_DEFAULT=64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64" + tm_defines="${tm_defines} MIPS_ISA_DEFAULT=64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64" use_fixproto=yes ;; mips-*-elf* | mipsel-*-elf*) @@ -1566,7 +1570,7 @@ mips64-*-elf* | mips64el-*-elf*) tm_file="elfos.h ${tm_file} mips/elf.h" tmake_file=mips/t-elf target_cpu_default="MASK_64BIT|MASK_FLOAT64" - tm_defines="MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64" + tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64" use_fixproto=yes ;; mips64vr-*-elf* | mips64vrel-*-elf*) @@ -1578,7 +1582,7 @@ mips64orion-*-elf* | mips64orionel-*-elf*) tm_file="elfos.h ${tm_file} mips/elforion.h mips/elf.h" tmake_file=mips/t-elf target_cpu_default="MASK_64BIT|MASK_FLOAT64" - tm_defines="MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64" + tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64" use_fixproto=yes ;; mips*-*-rtems*) @@ -1883,7 +1887,7 @@ rs6000-ibm-aix[56789].* | powerpc-ibm-aix[56789].*) ;; s390-*-linux*) tm_file="s390/s390.h dbxelf.h elfos.h svr4.h linux.h s390/linux.h" - tmake_file="${tmake_file} s390/t-crtstuff s390/t-linux" + tmake_file="${tmake_file} t-dfprules s390/t-crtstuff s390/t-linux" ;; s390x-*-linux*) tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h svr4.h linux.h s390/linux.h" @@ -1891,7 +1895,7 @@ s390x-*-linux*) md_file=s390/s390.md extra_modes=s390/s390-modes.def out_file=s390/s390.c - tmake_file="${tmake_file} s390/t-crtstuff s390/t-linux s390/t-linux64" + tmake_file="${tmake_file} t-dfprules s390/t-crtstuff s390/t-linux s390/t-linux64" ;; s390x-ibm-tpf*) tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h svr4.h s390/tpf.h" @@ -1945,7 +1949,8 @@ sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \ with_libgloss=yes tm_file="${tm_file} sh/newlib.h" fi - tm_file="${tm_file} sh/embed-elf.h" ;; + tm_file="${tm_file} sh/embed-elf.h" + extra_options="${extra_options} sh/superh.opt" ;; *) if test x$with_newlib = xyes \ && test x$with_libgloss = xyes; then tm_file="${tm_file} sh/newlib.h" @@ -2044,9 +2049,9 @@ sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \ sh_multilibs="`echo $sh_multilibs|sed -e s/m4/sh4-nofpu/ -e s/,m4-[^,]*//g -e s/,m[23]e// -e s/m2a,m2a-single/m2a-nofpu/ -e s/m5-..m....,//g`" fi fi - target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr a-z- A-Z_` + target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_` tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"' - sh_multilibs=`echo $sh_multilibs,$sh_cpu_default | sed -e 's/[ ,/][ ,]*/ /g' -e 's/ $//' -e s/^m/sh/ -e 's/ m/ sh/g' | tr A-Z_ a-z-` + sh_multilibs=`echo $sh_multilibs,$sh_cpu_default | sed -e 's/[ ,/][ ,]*/ /g' -e 's/ $//' -e 's/^m/sh/' -e 's/ m/ sh/g' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-` for sh_multilib in ${sh_multilibs}; do case ${sh_multilib} in sh1 | sh2 | sh2e | sh3 | sh3e | \ @@ -2057,7 +2062,7 @@ sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \ sh5-32media | sh5-32media-nofpu | \ sh5-compact | sh5-compact-nofpu) tmake_file="${tmake_file} sh/t-mlib-${sh_multilib}" - tm_defines="$tm_defines SUPPORT_`echo $sh_multilib|tr a-z- A-Z_`=1" + tm_defines="$tm_defines SUPPORT_`echo $sh_multilib|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1" ;; *) echo "with_multilib_list=${sh_multilib} not supported." @@ -2065,7 +2070,7 @@ sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \ ;; esac done - if test x${enable_incomplete_targets} == xyes ; then + if test x${enable_incomplete_targets} = xyes ; then tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1 SUPPORT_SH5_32MEDIA=1 SUPPORT_SH5_32MEDIA_NOFPU=1 SUPPORT_SH5_64MEDIA=1 SUPPORT_SH5_64MEDIA_NOFPU=1" fi use_fixproto=yes @@ -2113,7 +2118,13 @@ sparc-*-rtems*) extra_parts="crti.o crtn.o crtbegin.o crtend.o" ;; sparc64-*-solaris2* | sparcv9-*-solaris2*) - tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h sparc/sol2.h sparc/sol2-64.h sparc/sol2-bi.h" + tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h" + case ${target} in + *-*-solaris2.1[0-9]*) + tm_file="${tm_file} sol2-10.h" + ;; + esac + tm_file="${tm_file} sparc/sol2.h sparc/sol2-64.h sparc/sol2-bi.h" if test x$gnu_ld = xyes; then tm_file="${tm_file} sparc/sol2-gld.h sparc/sol2-gld-bi.h" fi @@ -2142,7 +2153,11 @@ sparc-*-solaris2*) tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h" case ${target} in *-*-solaris2.[0-6] | *-*-solaris2.[0-6].*) - tm_file="${tm_file} sol26.h" + tm_file="${tm_file} sol2-6.h" + ;; + *-*-solaris2.1[0-9]*) + tm_file="${tm_file} sol2-10.h" + ;; esac tm_file="${tm_file} sparc/sol2.h" if test x$gnu_ld = xyes; then @@ -2174,6 +2189,7 @@ sparc-*-solaris2*) tm_file="${tm_file} tm-dwarf2.h" tmake_file="$tmake_file sparc/t-sol2-64" need_64bit_hwint=yes + test x$with_cpu != x || with_cpu=v9 ;; esac c_target_objs="sol2-c.o" @@ -2564,7 +2580,7 @@ case "${target}" in ;; arm*-*-*) - supported_defaults="arch cpu float tune fpu abi" + supported_defaults="arch cpu float tune fpu abi mode" for which in cpu tune; do # See if it matches any of the entries in arm-cores.def eval "val=\$with_$which" @@ -2632,6 +2648,17 @@ case "${target}" in ;; esac + case "$with_mode" in + "" \ + | arm | thumb ) + #OK + ;; + *) + echo "Unknown mode used in --with-mode=$with_mode" + exit 1 + ;; + esac + if test "x$with_arch" != x && test "x$with_cpu" != x; then echo "Warning: --with-arch overrides --with-cpu=$with_cpu" 1>&2 fi @@ -2829,7 +2856,7 @@ case "${target}" in sh[123456ble]-*-* | sh-*-*) supported_defaults="cpu" - case "`echo $with_cpu | tr A-Z_ a-z- | sed s/sh/m/`" in + case "`echo $with_cpu | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz- | sed s/sh/m/`" in "" | m1 | m2 | m2e | m3 | m3e | m4 | m4-single | m4-single-only | m4-nofpu ) # OK ;; diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 3e6136f6b23..c19e7293f2e 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -2113,10 +2113,13 @@ alpha_legitimate_constant_p (rtx x) { case CONST: case LABEL_REF: - case SYMBOL_REF: case HIGH: return true; + case SYMBOL_REF: + /* TLS symbols are never valid. */ + return SYMBOL_REF_TLS_MODEL (x) == 0; + case CONST_DOUBLE: if (x == CONST0_RTX (mode)) return true; diff --git a/gcc/config/alpha/predicates.md b/gcc/config/alpha/predicates.md index fc330ff12c3..a035fffd841 100644 --- a/gcc/config/alpha/predicates.md +++ b/gcc/config/alpha/predicates.md @@ -338,7 +338,9 @@ if (GET_CODE (op) != SYMBOL_REF) return 0; - return SYMBOL_REF_LOCAL_P (op) && !SYMBOL_REF_TLS_MODEL (op); + return (SYMBOL_REF_LOCAL_P (op) + && !SYMBOL_REF_WEAK (op) + && !SYMBOL_REF_TLS_MODEL (op)); }) ;; Return true if OP is a SYMBOL_REF or CONST referencing a variable diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 2e5c9c43bb8..e6b97dfbcf1 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -312,6 +312,9 @@ static bool arm_tls_symbol_p (rtx x); #undef TARGET_ALIGN_ANON_BITFIELD #define TARGET_ALIGN_ANON_BITFIELD arm_align_anon_bitfield +#undef TARGET_NARROW_VOLATILE_BITFIELD +#define TARGET_NARROW_VOLATILE_BITFIELD hook_bool_void_false + #undef TARGET_CXX_GUARD_TYPE #define TARGET_CXX_GUARD_TYPE arm_cxx_guard_type diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index e2826dce49a..6cc612b0d9f 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -220,7 +220,8 @@ extern GTY(()) rtx aof_pic_label; {"float", \ "%{!msoft-float:%{!mhard-float:%{!mfloat-abi=*:-mfloat-abi=%(VALUE)}}}" }, \ {"fpu", "%{!mfpu=*:-mfpu=%(VALUE)}"}, \ - {"abi", "%{!mabi=*:-mabi=%(VALUE)}"}, + {"abi", "%{!mabi=*:-mabi=%(VALUE)}"}, \ + {"mode", "%{!marm:%{!mthumb:-m%(VALUE)}}"}, /* Which floating point model to use. */ enum arm_fp_model diff --git a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md index c85f58cf88b..3f8b397e153 100644 --- a/gcc/config/arm/vfp.md +++ b/gcc/config/arm/vfp.md @@ -181,10 +181,12 @@ ;; SFmode moves +;; Disparage the w<->r cases because reloading an invalid address is +;; preferable to loading the value via integer registers. (define_insn "*movsf_vfp" - [(set (match_operand:SF 0 "nonimmediate_operand" "=w,r,w ,Uv,r ,m,w,r") - (match_operand:SF 1 "general_operand" " r,w,UvE,w, mE,r,w,r"))] + [(set (match_operand:SF 0 "nonimmediate_operand" "=w,?r,w ,Uv,r ,m,w,r") + (match_operand:SF 1 "general_operand" " ?r,w,UvE,w, mE,r,w,r"))] "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP && ( s_register_operand (operands[0], SFmode) || s_register_operand (operands[1], SFmode))" @@ -207,8 +209,8 @@ ;; DFmode moves (define_insn "*movdf_vfp" - [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,r,r, m,w ,Uv,w,r") - (match_operand:DF 1 "soft_df_operand" " r,w,mF,r,UvF,w, w,r"))] + [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,?r,r, m,w ,Uv,w,r") + (match_operand:DF 1 "soft_df_operand" " ?r,w,mF,r,UvF,w, w,r"))] "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP && ( register_operand (operands[0], DFmode) || register_operand (operands[1], DFmode))" diff --git a/gcc/config/avr/avr-protos.h b/gcc/config/avr/avr-protos.h index 169be85f6d4..82c4e6facb3 100644 --- a/gcc/config/avr/avr-protos.h +++ b/gcc/config/avr/avr-protos.h @@ -1,6 +1,7 @@ /* Prototypes for exported functions defined in avr.c - Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006 + Free Software Foundation, Inc. Contributed by Denis Chertykov (denisc@overta.ru) This file is part of GCC. @@ -92,7 +93,7 @@ extern void avr_output_addr_vec_elt (FILE *stream, int value); extern const char *avr_out_sbxx_branch (rtx insn, rtx operands[]); extern enum reg_class preferred_reload_class (rtx x, enum reg_class class); -extern int extra_constraint (rtx x, int c); +extern int extra_constraint_Q (rtx x); extern rtx legitimize_address (rtx x, rtx oldx, enum machine_mode mode); extern int adjust_insn_length (rtx insn, int len); extern rtx avr_libcall_value (enum machine_mode mode); diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index f6e9f9fbd03..0712a10d164 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -1,5 +1,5 @@ /* Subroutines for insn-output.c for ATMEL AVR micro controllers - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005 + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006 Free Software Foundation, Inc. Contributed by Denis Chertykov (denisc@overta.ru) @@ -324,35 +324,6 @@ avr_regno_reg_class (int r) return ALL_REGS; } - -/* A C expression which defines the machine-dependent operand - constraint letters for register classes. If C is such a - letter, the value should be the register class corresponding to - it. Otherwise, the value should be `NO_REGS'. The register - letter `r', corresponding to class `GENERAL_REGS', will not be - passed to this macro; you do not need to handle it. */ - -enum reg_class -avr_reg_class_from_letter (int c) -{ - switch (c) - { - case 't' : return R0_REG; - case 'b' : return BASE_POINTER_REGS; - case 'e' : return POINTER_REGS; - case 'w' : return ADDW_REGS; - case 'd' : return LD_REGS; - case 'l' : return NO_LD_REGS; - case 'a' : return SIMPLE_LD_REGS; - case 'x' : return POINTER_X_REGS; - case 'y' : return POINTER_Y_REGS; - case 'z' : return POINTER_Z_REGS; - case 'q' : return STACK_REG; - default: break; - } - return NO_REGS; -} - /* Return nonzero if FUNC is a naked function. */ static int @@ -5475,48 +5446,35 @@ avr_address_cost (rtx x) return 4; } -/* EXTRA_CONSTRAINT helper */ +/* Test for extra memory constraint 'Q'. + It's a memory address based on Y or Z pointer with valid displacement. */ int -extra_constraint (rtx x, int c) +extra_constraint_Q (rtx x) { - if (c == 'Q' - && GET_CODE (x) == MEM - && GET_CODE (XEXP (x,0)) == PLUS) + if (GET_CODE (XEXP (x,0)) == PLUS + && REG_P (XEXP (XEXP (x,0), 0)) + && GET_CODE (XEXP (XEXP (x,0), 1)) == CONST_INT + && (INTVAL (XEXP (XEXP (x,0), 1)) + <= MAX_LD_OFFSET (GET_MODE (x)))) { - if (TARGET_ALL_DEBUG) - { - fprintf (stderr, ("extra_constraint:\n" - "reload_completed: %d\n" - "reload_in_progress: %d\n"), - reload_completed, reload_in_progress); - debug_rtx (x); - } - if (GET_CODE (x) == MEM - && GET_CODE (XEXP (x,0)) == PLUS - && REG_P (XEXP (XEXP (x,0), 0)) - && GET_CODE (XEXP (XEXP (x,0), 1)) == CONST_INT - && (INTVAL (XEXP (XEXP (x,0), 1)) - <= MAX_LD_OFFSET (GET_MODE (x)))) + rtx xx = XEXP (XEXP (x,0), 0); + int regno = REGNO (xx); + if (TARGET_ALL_DEBUG) { - rtx xx = XEXP (XEXP (x,0), 0); - int regno = REGNO (xx); - if (TARGET_ALL_DEBUG) - { - fprintf (stderr, ("extra_constraint:\n" - "reload_completed: %d\n" - "reload_in_progress: %d\n"), - reload_completed, reload_in_progress); - debug_rtx (x); - } - if (regno >= FIRST_PSEUDO_REGISTER) - return 1; /* allocate pseudos */ - else if (regno == REG_Z || regno == REG_Y) - return 1; /* strictly check */ - else if (xx == frame_pointer_rtx - || xx == arg_pointer_rtx) - return 1; /* XXX frame & arg pointer checks */ + fprintf (stderr, ("extra_constraint:\n" + "reload_completed: %d\n" + "reload_in_progress: %d\n"), + reload_completed, reload_in_progress); + debug_rtx (x); } + if (regno >= FIRST_PSEUDO_REGISTER) + return 1; /* allocate pseudos */ + else if (regno == REG_Z || regno == REG_Y) + return 1; /* strictly check */ + else if (xx == frame_pointer_rtx + || xx == arg_pointer_rtx) + return 1; /* XXX frame & arg pointer checks */ } return 0; } diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h index 6fe46014dc4..39b4d21493a 100644 --- a/gcc/config/avr/avr.h +++ b/gcc/config/avr/avr.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for ATMEL AVR at90s8515, ATmega103/103L, ATmega603/603L microcontrollers. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. Contributed by Denis Chertykov (denisc@overta.ru) @@ -206,11 +206,6 @@ enum reg_class { "GENERAL_REGS", /* r0 - r31 */ \ "ALL_REGS" } -#define REG_X 26 -#define REG_Y 28 -#define REG_Z 30 -#define REG_W 24 - #define REG_CLASS_CONTENTS { \ {0x00000000,0x00000000}, /* NO_REGS */ \ {0x00000001,0x00000000}, /* R0_REG */ \ @@ -238,8 +233,6 @@ enum reg_class { #define INDEX_REG_CLASS NO_REGS -#define REG_CLASS_FROM_LETTER(C) avr_reg_class_from_letter(C) - #define REGNO_OK_FOR_BASE_P(r) (((r) < FIRST_PSEUDO_REGISTER \ && ((r) == REG_X \ || (r) == REG_Y \ @@ -262,23 +255,6 @@ enum reg_class { #define CLASS_MAX_NREGS(CLASS, MODE) class_max_nregs (CLASS, MODE) -#define CONST_OK_FOR_LETTER_P(VALUE, C) \ - ((C) == 'I' ? (VALUE) >= 0 && (VALUE) <= 63 : \ - (C) == 'J' ? (VALUE) <= 0 && (VALUE) >= -63: \ - (C) == 'K' ? (VALUE) == 2 : \ - (C) == 'L' ? (VALUE) == 0 : \ - (C) == 'M' ? (VALUE) >= 0 && (VALUE) <= 0xff : \ - (C) == 'N' ? (VALUE) == -1: \ - (C) == 'O' ? (VALUE) == 8 || (VALUE) == 16 || (VALUE) == 24: \ - (C) == 'P' ? (VALUE) == 1 : \ - 0) - -#define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) \ - ((C) == 'G' ? (VALUE) == CONST0_RTX (SFmode) \ - : 0) - -#define EXTRA_CONSTRAINT(x, c) extra_constraint(x, c) - #define STACK_PUSH_CODE POST_DEC #define STACK_GROWS_DOWNWARD @@ -841,10 +817,4 @@ extern int avr_case_values_threshold; #define OUT_AS2(a,b,c) output_asm_insn (AS2(a,b,c), operands) #define CR_TAB "\n\t" -/* Temporary register r0 */ -#define TMP_REGNO 0 - -/* zero register r1 */ -#define ZERO_REGNO 1 - #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md index 59d35f050e1..97a000d5bb5 100644 --- a/gcc/config/avr/avr.md +++ b/gcc/config/avr/avr.md @@ -1,7 +1,7 @@ ;; -*- Mode: Scheme -*- ;; Machine description for GNU compiler, ;; for ATMEL AVR micro controllers. -;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005 +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006 ;; Free Software Foundation, Inc. ;; Contributed by Denis Chertykov (denisc@overta.ru) @@ -36,8 +36,20 @@ ;; UNSPEC usage: ;; 0 Length of a string, see "strlenhi". -;; 1 Read from a word address in program memory, see "casesi". - +;; 1 Jump by register pair Z or by table addressed by Z, see "casesi". + +(define_constants + [(REG_X 26) + (REG_Y 28) + (REG_Z 30) + (REG_W 24) + (TMP_REGNO 0) ; temporary register r0 + (ZERO_REGNO 1) ; zero register r1 + (UNSPEC_STRLEN 0) + (UNSPEC_INDEX_JMP 1)]) + +(include "constraints.md") + ;; Condition code settings. (define_attr "cc" "none,set_czn,set_zn,set_n,compare,clobber" (const_string "none")) @@ -482,7 +494,8 @@ [(set (match_dup 4) (unspec:HI [(match_operand:BLK 1 "memory_operand" "") (match_operand:QI 2 "const_int_operand" "") - (match_operand:HI 3 "immediate_operand" "")] 0)) + (match_operand:HI 3 "immediate_operand" "")] + UNSPEC_STRLEN)) (set (match_dup 4) (plus:HI (match_dup 4) (const_int -1))) (set (match_operand:HI 0 "register_operand" "") @@ -503,7 +516,8 @@ [(set (match_operand:HI 0 "register_operand" "=e") (unspec:HI [(mem:BLK (match_operand:HI 1 "register_operand" "%0")) (const_int 0) - (match_operand:HI 2 "immediate_operand" "i")] 0))] + (match_operand:HI 2 "immediate_operand" "i")] + UNSPEC_STRLEN))] "" "ld __tmp_reg__,%a0+ tst __tmp_reg__ @@ -2180,7 +2194,8 @@ ;; Table made from "rjmp" instructions for <=8K devices. (define_insn "*tablejump_rjmp" - [(set (pc) (unspec:HI [(match_operand:HI 0 "register_operand" "!z,*r")] 1)) + [(set (pc) (unspec:HI [(match_operand:HI 0 "register_operand" "!z,*r")] + UNSPEC_INDEX_JMP)) (use (label_ref (match_operand 1 "" ""))) (clobber (match_dup 0))] "!AVR_MEGA" @@ -2192,7 +2207,8 @@ ;; Not a prologue, but similar idea - move the common piece of code to libgcc. (define_insn "*tablejump_lib" - [(set (pc) (unspec:HI [(match_operand:HI 0 "register_operand" "z")] 1)) + [(set (pc) (unspec:HI [(match_operand:HI 0 "register_operand" "z")] + UNSPEC_INDEX_JMP)) (use (label_ref (match_operand 1 "" ""))) (clobber (match_dup 0))] "AVR_MEGA && TARGET_CALL_PROLOGUES" @@ -2201,7 +2217,8 @@ (set_attr "cc" "clobber")]) (define_insn "*tablejump_enh" - [(set (pc) (unspec:HI [(match_operand:HI 0 "register_operand" "z")] 1)) + [(set (pc) (unspec:HI [(match_operand:HI 0 "register_operand" "z")] + UNSPEC_INDEX_JMP)) (use (label_ref (match_operand 1 "" ""))) (clobber (match_dup 0))] "AVR_MEGA && AVR_ENHANCED" @@ -2215,7 +2232,8 @@ (set_attr "cc" "clobber")]) (define_insn "*tablejump" - [(set (pc) (unspec:HI [(match_operand:HI 0 "register_operand" "z")] 1)) + [(set (pc) (unspec:HI [(match_operand:HI 0 "register_operand" "z")] + UNSPEC_INDEX_JMP)) (use (label_ref (match_operand 1 "" ""))) (clobber (match_dup 0))] "AVR_MEGA" @@ -2248,7 +2266,7 @@ (set (match_dup 6) (plus:HI (match_dup 6) (label_ref (match_operand:HI 3 "" "")))) - (parallel [(set (pc) (unspec:HI [(match_dup 6)] 1)) + (parallel [(set (pc) (unspec:HI [(match_dup 6)] UNSPEC_INDEX_JMP)) (use (label_ref (match_dup 3))) (clobber (match_dup 6))])] "" diff --git a/gcc/config/avr/constraints.md b/gcc/config/avr/constraints.md new file mode 100644 index 00000000000..eca5cbef292 --- /dev/null +++ b/gcc/config/avr/constraints.md @@ -0,0 +1,105 @@ +;; Constraint definitions for ATMEL AVR micro controllers. +;; Copyright (C) 2006 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 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. + +;; Register constraints + +(define_register_constraint "t" "R0_REG" + "Temporary register r0") + +(define_register_constraint "b" "BASE_POINTER_REGS" + "Base pointer registers (r28--r31)") + +(define_register_constraint "e" "POINTER_REGS" + "Pointer registers (r26--r31)") + +(define_register_constraint "w" "ADDW_REGS" + "Registers from r24 to r31. These registers + can be used in @samp{adiw} command.") + +(define_register_constraint "d" "LD_REGS" + "Registers from r16 to r31.") + +(define_register_constraint "l" "NO_LD_REGS" + "Registers from r0 to r15.") + +(define_register_constraint "a" "SIMPLE_LD_REGS" + "Registers from r16 to r23.") + +(define_register_constraint "x" "POINTER_X_REGS" + "Register pair X (r27:r26).") + +(define_register_constraint "y" "POINTER_Y_REGS" + "Register pair Y (r29:r28).") + +(define_register_constraint "z" "POINTER_Z_REGS" + "Register pair Z (r31:r30).") + +(define_register_constraint "q" "STACK_REG" + "Stack pointer register (SPH:SPL).") + +(define_constraint "I" + "Integer constant in the range 0 @dots{} 63." + (and (match_code "const_int") + (match_test "ival >= 0 && ival <= 63"))) + +(define_constraint "J" + "Integer constant in the range -63 @dots{} 0." + (and (match_code "const_int") + (match_test "ival <= 0 && ival >= -63"))) + +(define_constraint "K" + "Integer constant 2." + (and (match_code "const_int") + (match_test "ival == 2"))) + +(define_constraint "L" + "Zero." + (and (match_code "const_int") + (match_test "ival == 0"))) + +(define_constraint "M" + "Integer constant in the range 0 @dots{} 0xff." + (and (match_code "const_int") + (match_test "ival >= 0 && ival <= 0xff"))) + +(define_constraint "N" + "Constant integer @minus{}1." + (and (match_code "const_int") + (match_test "ival == -1"))) + +(define_constraint "O" + "Constant integer 8, 16, or 24." + (and (match_code "const_int") + (match_test "ival == 8 || ival == 16 || ival == 24"))) + +(define_constraint "P" + "Constant integer 1." + (and (match_code "const_int") + (match_test "ival == 1"))) + +(define_constraint "G" + "Constant float 0." + (and (match_code "const_double") + (match_test "op == CONST0_RTX (SFmode)"))) + +(define_memory_constraint "Q" + "A memory address based on X or Y pointer with displacement." + (and (match_code "mem") + (match_test "extra_constraint_Q (op)"))) diff --git a/gcc/config/bfin/bfin-protos.h b/gcc/config/bfin/bfin-protos.h index ae38a07369d..4d586acb96e 100644 --- a/gcc/config/bfin/bfin-protos.h +++ b/gcc/config/bfin/bfin-protos.h @@ -47,6 +47,7 @@ extern rtx bfin_gen_compare (rtx, Mmode); extern void expand_move (rtx *, Mmode); extern void bfin_expand_call (rtx, rtx, rtx, rtx, int); extern bool bfin_longcall_p (rtx, int); +extern bool bfin_dsp_memref_p (rtx); extern bool bfin_expand_strmov (rtx, rtx, rtx, rtx); extern void conditional_register_usage (void); diff --git a/gcc/config/bfin/bfin.c b/gcc/config/bfin/bfin.c index 9e8bee6bc0c..e4893e88172 100644 --- a/gcc/config/bfin/bfin.c +++ b/gcc/config/bfin/bfin.c @@ -1062,6 +1062,19 @@ effective_address_32bit_p (rtx op, enum machine_mode mode) return offset < 0 || offset > 30; } +/* Returns true if X is a memory reference using an I register. */ +bool +bfin_dsp_memref_p (rtx x) +{ + if (! MEM_P (x)) + return false; + x = XEXP (x, 0); + if (GET_CODE (x) == POST_INC || GET_CODE (x) == PRE_INC + || GET_CODE (x) == POST_DEC || GET_CODE (x) == PRE_DEC) + x = XEXP (x, 0); + return IREG_P (x); +} + /* Return cost of the memory address ADDR. All addressing modes are equally cheap on the Blackfin. */ @@ -2100,10 +2113,13 @@ bfin_valid_add (enum machine_mode mode, HOST_WIDE_INT value) } static bool -bfin_valid_reg_p (unsigned int regno, int strict) +bfin_valid_reg_p (unsigned int regno, int strict, enum machine_mode mode, + enum rtx_code outer_code) { - return ((strict && REGNO_OK_FOR_BASE_STRICT_P (regno)) - || (!strict && REGNO_OK_FOR_BASE_NONSTRICT_P (regno))); + if (strict) + return REGNO_OK_FOR_BASE_STRICT_P (regno, mode, outer_code, SCRATCH); + else + return REGNO_OK_FOR_BASE_NONSTRICT_P (regno, mode, outer_code, SCRATCH); } bool @@ -2111,13 +2127,13 @@ bfin_legitimate_address_p (enum machine_mode mode, rtx x, int strict) { switch (GET_CODE (x)) { case REG: - if (bfin_valid_reg_p (REGNO (x), strict)) + if (bfin_valid_reg_p (REGNO (x), strict, mode, MEM)) return true; break; case PLUS: if (REG_P (XEXP (x, 0)) - && bfin_valid_reg_p (REGNO (XEXP (x, 0)), strict) - && (GET_CODE (XEXP (x, 1)) == UNSPEC + && bfin_valid_reg_p (REGNO (XEXP (x, 0)), strict, mode, PLUS) + && ((GET_CODE (XEXP (x, 1)) == UNSPEC && mode == SImode) || (GET_CODE (XEXP (x, 1)) == CONST_INT && bfin_valid_add (mode, INTVAL (XEXP (x, 1)))))) return true; @@ -2126,13 +2142,13 @@ bfin_legitimate_address_p (enum machine_mode mode, rtx x, int strict) case POST_DEC: if (LEGITIMATE_MODE_FOR_AUTOINC_P (mode) && REG_P (XEXP (x, 0)) - && bfin_valid_reg_p (REGNO (XEXP (x, 0)), strict)) + && bfin_valid_reg_p (REGNO (XEXP (x, 0)), strict, mode, POST_INC)) return true; case PRE_DEC: if (LEGITIMATE_MODE_FOR_AUTOINC_P (mode) && XEXP (x, 0) == stack_pointer_rtx && REG_P (XEXP (x, 0)) - && bfin_valid_reg_p (REGNO (XEXP (x, 0)), strict)) + && bfin_valid_reg_p (REGNO (XEXP (x, 0)), strict, mode, PRE_DEC)) return true; break; default: @@ -2411,7 +2427,7 @@ output_pop_multiple (rtx insn, rtx *operands) /* Adjust DST and SRC by OFFSET bytes, and generate one move in mode MODE. */ static void -single_move_for_strmov (rtx dst, rtx src, enum machine_mode mode, HOST_WIDE_INT offset) +single_move_for_movmem (rtx dst, rtx src, enum machine_mode mode, HOST_WIDE_INT offset) { rtx scratch = gen_reg_rtx (mode); rtx srcmem, dstmem; @@ -2427,7 +2443,7 @@ single_move_for_strmov (rtx dst, rtx src, enum machine_mode mode, HOST_WIDE_INT back on a different method. */ bool -bfin_expand_strmov (rtx dst, rtx src, rtx count_exp, rtx align_exp) +bfin_expand_movmem (rtx dst, rtx src, rtx count_exp, rtx align_exp) { rtx srcreg, destreg, countreg; HOST_WIDE_INT align = 0; @@ -2472,7 +2488,7 @@ bfin_expand_strmov (rtx dst, rtx src, rtx count_exp, rtx align_exp) { if ((count & ~3) == 4) { - single_move_for_strmov (dst, src, SImode, offset); + single_move_for_movmem (dst, src, SImode, offset); offset = 4; } else if (count & ~3) @@ -2484,7 +2500,7 @@ bfin_expand_strmov (rtx dst, rtx src, rtx count_exp, rtx align_exp) } if (count & 2) { - single_move_for_strmov (dst, src, HImode, offset); + single_move_for_movmem (dst, src, HImode, offset); offset += 2; } } @@ -2492,7 +2508,7 @@ bfin_expand_strmov (rtx dst, rtx src, rtx count_exp, rtx align_exp) { if ((count & ~1) == 2) { - single_move_for_strmov (dst, src, HImode, offset); + single_move_for_movmem (dst, src, HImode, offset); offset = 2; } else if (count & ~1) @@ -2505,7 +2521,7 @@ bfin_expand_strmov (rtx dst, rtx src, rtx count_exp, rtx align_exp) } if (count & 1) { - single_move_for_strmov (dst, src, QImode, offset); + single_move_for_movmem (dst, src, QImode, offset); } return true; } diff --git a/gcc/config/bfin/bfin.h b/gcc/config/bfin/bfin.h index 0e931cdc015..b7df995371e 100644 --- a/gcc/config/bfin/bfin.h +++ b/gcc/config/bfin/bfin.h @@ -215,9 +215,13 @@ extern const char *bfin_library_id_string; #define FIRST_PSEUDO_REGISTER 44 -#define PREG_P(X) (REG_P (X) && REGNO (X) >= REG_P0 && REGNO (X) <= REG_P7) +#define PREG_P(X) (REG_P (X) && P_REGNO_P (REGNO (X))) +#define IREG_P(X) (REG_P (X) && I_REGNO_P (REGNO (X))) #define ADDRESS_REGNO_P(X) ((X) >= REG_P0 && (X) <= REG_M3) #define D_REGNO_P(X) ((X) <= REG_R7) +#define P_REGNO_P(X) ((X) >= REG_P0 && (X) <= REG_P7) +#define I_REGNO_P(X) \ + ((X) == REG_I0 || (X) == REG_I1 || (X) == REG_I2 || (X) == REG_I3) #define REGISTER_NAMES { \ "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7", \ @@ -344,6 +348,7 @@ enum reg_class DREGS, PREGS_CLOBBERED, PREGS, + IPREGS, DPREGS, MOST_REGS, PROLOGUE_REGS, @@ -374,6 +379,7 @@ enum reg_class "DREGS", \ "PREGS_CLOBBERED", \ "PREGS", \ + "IPREGS", \ "DPREGS", \ "MOST_REGS", \ "PROLOGUE_REGS", \ @@ -412,27 +418,40 @@ enum reg_class { 0x000000ff, 0 }, /* DREGS */ \ { 0x00004700, 0x800 }, /* PREGS_CLOBBERED */ \ { 0x0000ff00, 0x800 }, /* PREGS */ \ + { 0x000fff00, 0x800 }, /* IPREGS */ \ { 0x0000ffff, 0x800 }, /* DPREGS */ \ { 0xffffffff, 0x800 }, /* MOST_REGS */\ { 0x00000000, 0x7f8 }, /* PROLOGUE_REGS */\ { 0xffffffff, 0xff8 }, /* NON_A_CC_REGS */\ { 0xffffffff, 0xfff }} /* ALL_REGS */ -#define BASE_REG_CLASS PREGS +#define IREG_POSSIBLE_P(OUTER) \ + ((OUTER) == POST_INC || (OUTER) == PRE_INC \ + || (OUTER) == POST_DEC || (OUTER) == PRE_DEC \ + || (OUTER) == MEM || (OUTER) == ADDRESS) + +#define MODE_CODE_BASE_REG_CLASS(MODE, OUTER, INDEX) \ + ((MODE) == HImode && IREG_POSSIBLE_P (OUTER) ? IPREGS : PREGS) + #define INDEX_REG_CLASS PREGS -#define REGNO_OK_FOR_BASE_STRICT_P(X) (REGNO_REG_CLASS (X) == BASE_REG_CLASS) -#define REGNO_OK_FOR_BASE_NONSTRICT_P(X) \ - (((X) >= FIRST_PSEUDO_REGISTER) || REGNO_REG_CLASS (X) == BASE_REG_CLASS) +#define REGNO_OK_FOR_BASE_STRICT_P(X, MODE, OUTER, INDEX) \ + (P_REGNO_P (X) || (X) == REG_ARGP \ + || (IREG_POSSIBLE_P (OUTER) && (MODE) == HImode \ + && I_REGNO_P (X))) + +#define REGNO_OK_FOR_BASE_NONSTRICT_P(X, MODE, OUTER, INDEX) \ + ((X) >= FIRST_PSEUDO_REGISTER \ + || REGNO_OK_FOR_BASE_STRICT_P (X, MODE, OUTER, INDEX)) #ifdef REG_OK_STRICT -#define REGNO_OK_FOR_BASE_P(X) REGNO_OK_FOR_BASE_STRICT_P (X) +#define REGNO_MODE_CODE_OK_FOR_BASE_P(X, MODE, OUTER, INDEX) \ + REGNO_OK_FOR_BASE_STRICT_P (X, MODE, OUTER, INDEX) #else -#define REGNO_OK_FOR_BASE_P(X) REGNO_OK_FOR_BASE_NONSTRICT_P (X) +#define REGNO_MODE_CODE_OK_FOR_BASE_P(X, MODE, OUTER, INDEX) \ + REGNO_OK_FOR_BASE_NONSTRICT_P (X, MODE, OUTER, INDEX) #endif -#define REG_OK_FOR_BASE_P(X) (REG_P (X) && REGNO_OK_FOR_BASE_P (REGNO (X))) -#define REG_OK_FOR_INDEX_P(X) 0 #define REGNO_OK_FOR_INDEX_P(X) 0 /* Get reg_class from a letter such as appears in the machine description. */ @@ -464,7 +483,7 @@ enum reg_class #define REGNO_REG_CLASS(REGNO) \ ((REGNO) < REG_P0 ? DREGS \ : (REGNO) < REG_I0 ? PREGS \ - : (REGNO) == REG_ARGP ? BASE_REG_CLASS \ + : (REGNO) == REG_ARGP ? PREGS \ : (REGNO) >= REG_I0 && (REGNO) <= REG_I3 ? IREGS \ : (REGNO) >= REG_L0 && (REGNO) <= REG_L3 ? LREGS \ : (REGNO) >= REG_B0 && (REGNO) <= REG_B3 ? BREGS \ @@ -1045,19 +1064,6 @@ typedef enum directives { do { fprintf (FILE, "_%s", NAME); \ } while (0) -#define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO) \ - do { \ - int len = strlen (NAME); \ - char *temp = (char *) alloca (len + 4); \ - temp[0] = 'L'; \ - temp[1] = '_'; \ - strcpy (&temp[2], (NAME)); \ - temp[len + 2] = '_'; \ - temp[len + 3] = 0; \ - (OUTPUT) = (char *) alloca (strlen (NAME) + 13); \ - sprintf (OUTPUT, "_%s$%d", temp, LABELNO); \ - } while (0) - #define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \ do { char __buf[256]; \ fprintf (FILE, "\t.dd\t"); \ diff --git a/gcc/config/bfin/bfin.md b/gcc/config/bfin/bfin.md index 2b125b5fc63..fdd1363622b 100644 --- a/gcc/config/bfin/bfin.md +++ b/gcc/config/bfin/bfin.md @@ -418,12 +418,23 @@ [(set (match_operand:HI 0 "nonimmediate_operand" "=x,da,x,d,mr") (match_operand:HI 1 "general_operand" "x,xKs7,xKsh,mr,d"))] "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" - "@ - %0 = %1; - %0 = %1 (X); - %0 = %1 (X); - %0 = W %1 (X); - W %0 = %1;" +{ + static const char *templates[] = { + "%0 = %1;", + "%0 = %1 (X);", + "%0 = %1 (X);", + "%0 = W %1 (X);", + "W %0 = %1;", + "%h0 = W %1;", + "W %0 = %h1;" + }; + int alt = which_alternative; + rtx mem = (MEM_P (operands[0]) ? operands[0] + : MEM_P (operands[1]) ? operands[1] : NULL_RTX); + if (mem && bfin_dsp_memref_p (mem)) + alt += 2; + return templates[alt]; +} [(set_attr "type" "move,mvi,mvi,mcld,mcst") (set_attr "length" "2,2,4,*,*")]) @@ -588,22 +599,34 @@ ;; Sign and zero extensions -(define_insn "extendhisi2" +(define_insn_and_split "extendhisi2" [(set (match_operand:SI 0 "register_operand" "=d, d") (sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "d, m")))] "" "@ %0 = %h1 (X); %0 = W %h1 (X);" + "reload_completed && bfin_dsp_memref_p (operands[1])" + [(set (match_dup 2) (match_dup 1)) + (set (match_dup 0) (sign_extend:SI (match_dup 2)))] +{ + operands[2] = gen_lowpart (HImode, operands[0]); +} [(set_attr "type" "alu0,mcld")]) -(define_insn "zero_extendhisi2" +(define_insn_and_split "zero_extendhisi2" [(set (match_operand:SI 0 "register_operand" "=d, d") (zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "d, m")))] "" "@ %0 = %h1 (Z); - %0 = W%h1 (Z);" + %0 = W %h1 (Z);" + "reload_completed && bfin_dsp_memref_p (operands[1])" + [(set (match_dup 2) (match_dup 1)) + (set (match_dup 0) (zero_extend:SI (match_dup 2)))] +{ + operands[2] = gen_lowpart (HImode, operands[0]); +} [(set_attr "type" "alu0,mcld")]) (define_insn "zero_extendbisi2" @@ -1491,14 +1514,14 @@ [(set_attr "type" "misc") (set_attr "length" "16")]) -(define_expand "movstrsi" +(define_expand "movmemsi" [(match_operand:BLK 0 "general_operand" "") (match_operand:BLK 1 "general_operand" "") (match_operand:SI 2 "const_int_operand" "") (match_operand:SI 3 "const_int_operand" "")] "" { - if (bfin_expand_strmov (operands[0], operands[1], operands[2], operands[3])) + if (bfin_expand_movmem (operands[0], operands[1], operands[2], operands[3])) DONE; FAIL; }) diff --git a/gcc/config/darwin-crt3.c b/gcc/config/darwin-crt3.c dissimilarity index 70% index 698b375c69c..65b766369ee 100644 --- a/gcc/config/darwin-crt3.c +++ b/gcc/config/darwin-crt3.c @@ -1,208 +1,532 @@ -/* __cxa_atexit backwards-compatibility support for Darwin. - Copyright (C) 2006 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 2, or (at your option) any later -version. - -In addition to the permissions in the GNU General Public License, the -Free Software Foundation gives you unlimited permission to link the -compiled version of this file into combinations with other programs, -and to distribute those combinations without any restriction coming -from the use of this file. (The General Public License restrictions -do apply in other respects; for example, they cover modification of -the file, and distribution when not linked into a combine -executable.) - -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. */ - -/* It is incorrect to include config.h here, because this file is being - compiled for the target, and hence definitions concerning only the host - do not apply. */ - -#include "tconfig.h" -#include "tsystem.h" - -#include -#include -#include - -/* This file works around two different problems. - - The first problem is that there is no __cxa_atexit on Mac OS versions - before 10.4. It fixes this by providing one, and having it called from - a destructor. This is not quite as good as having a real __cxa_atexit, - but it's good enough to imitate the behaviour that you'd get if - you didn't have one. - - The second problem is that on 10.4 Mac OS versions, __cxa_finalize - doesn't work right: it doesn't run routines that were registered - while other atexit routines are running. This is worked around by - installing our own handler so that it runs last, and repeatedly - running __cxa_finalize until no new calls to __cxa_atexit are made. */ - -typedef int (*cxa_atexit_p)(void (*func) (void*), void* arg, void* dso); - -#ifdef __ppc__ -void __cxa_finalize (void* dso) __attribute__((weak)); -#else -void __cxa_finalize (void* dso); -#endif - -/* new_atexit_routines is set if __cxa_finalize exists in the system C - library and our copy of __cxa_atexit has been called. */ - -static bool new_atexit_routines; - -/* first_atexit_handler is called after all other atexit routines - that were registered before __cxa_finalize is called. - It may be called more than once, but is not re-entered. */ - -static void -first_atexit_handler(void* dso) -{ - /* Keep running __cxa_finalize until no new atexit routines are - registered. - Note that this means __cxa_finalize will be called at least twice, - even if the first call didn't register any new routines. */ - while (new_atexit_routines) { - new_atexit_routines = false; - __cxa_finalize (dso); - }; -} - -/* This is our wrapper around __cxa_atexit that's called if __cxa_finalize - exists in the system library. All it does is, on its first call, - install first_atexit_handler; and on every call, set new_atexit_routines - and pass control to the system __cxa_atexit. - This proves to be somewhat more complicated than you might expect, - because it may be called in a multithreaded environment. Fortunately - it turns out to be possible to do what's needed without resorting - to locking. */ - -static int -cxa_atexit_wrapper (void (*func) (void*), void* arg, void* dso) -{ - static volatile cxa_atexit_p real_cxa_atexit; - cxa_atexit_p auto_cxa_atexit = real_cxa_atexit; - if (! auto_cxa_atexit) - { - void* handle = dlopen ("/usr/lib/libSystem.B.dylib", RTLD_NOLOAD); - if (! handle) - return -1; - - auto_cxa_atexit = (cxa_atexit_p)dlsym (handle, "__cxa_atexit"); - if (! auto_cxa_atexit) - return -1; - } - /* At this point, auto_cxa_atexit contains the address of - the system __cxa_atexit. */ - if (! real_cxa_atexit) - { - /* Install our handler above before any other handlers - for this image, so it will be called last. */ - int result = (*auto_cxa_atexit)(first_atexit_handler, dso, dso); - if (result != 0) - return result; - /* Now set the global real_cxa_atexit to prevent further - installations of first_atexit_handler. Do this after - the installation so that if another thread sees it is set, - it can be sure that first_atexit_handler really has been - installed. */ - real_cxa_atexit = auto_cxa_atexit; - } - /* At this point, we know that first_atexit_handler has been - installed at least once, and real_cxa_atexit is not NULL. */ - /* It's not necessary to mark new_atexit_routines as volatile, so long - as this write eventually happens before this shared object is - unloaded. */ - new_atexit_routines = true; - /* Call the original __cxa_atexit for this function. */ - return (*auto_cxa_atexit)(func, arg, dso); -} - -#ifdef __ppc__ -/* This code is used while running on 10.3.9, when __cxa_atexit doesn't - exist in the system library. 10.3.9 only supported regular PowerPC, - so this code isn't necessary on x86 or ppc64. */ - -/* This structure holds a routine to call. */ -struct atexit_routine -{ - struct atexit_routine * next; - void (*func)(void *); - void * arg; -}; - -static struct atexit_routine * volatile atexit_routines_list; - -/* If __cxa_atexit doesn't exist at all in the system library, this - routine is used; it completely emulates __cxa_atexit. - - This routine has to be thread-safe, but fortunately this just means - that it has to do atomic list insertion. */ - -static int -cxa_atexit_substitute (void (*func) (void*), void* arg, - /* The 'dso' value will always be equal to this - object's __dso_handle. */ - void* dso __attribute__((unused))) -{ - struct atexit_routine * s = malloc (sizeof (struct atexit_routine)); - struct atexit_routine * next, * old_next; - if (!s) - return -1; - s->func = func; - s->arg = arg; - next = atexit_routines_list; - do { - s->next = old_next = next; - next = __sync_val_compare_and_swap (&atexit_routines_list, old_next, s); - } while (next != old_next); - return 0; -} - -/* The routines added in cxa_atexit_substitute get run here, in a destructor. - This routine doesn't have to be thread-safe. */ - -static void cxa_dtor (void) __attribute__((destructor)); -static void -cxa_dtor (void) -{ - while (atexit_routines_list) - { - struct atexit_routine * working_list = atexit_routines_list; - atexit_routines_list = NULL; - while (working_list) - { - struct atexit_routine * called_routine = working_list; - working_list->func (working_list->arg); - working_list = working_list->next; - free (called_routine); - } - } -} -#endif - -int __cxa_atexit (void (*func) (void*), void* arg, - void* dso) __attribute__((visibility("hidden"))); -int -__cxa_atexit (void (*func) (void*), void* arg, void* dso) -{ -#ifdef __ppc__ - if (! __cxa_finalize) - return cxa_atexit_substitute (func, arg, dso); -#endif - return cxa_atexit_wrapper (func, arg, dso); -} +/* __cxa_atexit backwards-compatibility support for Darwin. + Copyright (C) 2006 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 2, or (at your option) any later +version. + +In addition to the permissions in the GNU General Public License, the +Free Software Foundation gives you unlimited permission to link the +compiled version of this file into combinations with other programs, +and to distribute those combinations without any restriction coming +from the use of this file. (The General Public License restrictions +do apply in other respects; for example, they cover modification of +the file, and distribution when not linked into a combine +executable.) + +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. */ + +/* It is incorrect to include config.h here, because this file is being + compiled for the target, and hence definitions concerning only the host + do not apply. */ + +#include "tconfig.h" +#include "tsystem.h" + +#include +#include +#include +#include + +/* This file works around two different problems. + + The first problem is that there is no __cxa_atexit on Mac OS versions + before 10.4. It fixes this by providing a complete atexit and + __cxa_atexit emulation called from the regular atexit. + + The second problem is that on all shipping versions of Mac OS, + __cxa_finalize and exit() don't work right: they don't run routines + that were registered while other atexit routines are running. This + is worked around by wrapping each atexit/__cxa_atexit routine with + our own routine which ensures that any __cxa_atexit calls while it + is running are honoured. + + There are still problems which this does not solve. Before 10.4, + shared objects linked with previous compilers won't have their + atexit calls properly interleaved with code compiled with newer + compilers. Also, atexit routines registered from shared objects + linked with previous compilers won't get the bug fix. */ + +typedef int (*cxa_atexit_p)(void (*func) (void*), void* arg, const void* dso); +typedef void (*cxa_finalize_p)(const void *dso); +typedef int (*atexit_p)(void (*func)(void)); + +/* These are from "keymgr.h". */ +extern void *_keymgr_get_and_lock_processwide_ptr (unsigned key); +extern int _keymgr_get_and_lock_processwide_ptr_2 (unsigned, void **); +extern int _keymgr_set_and_unlock_processwide_ptr (unsigned key, void *ptr); + +extern void *__keymgr_global[]; +typedef struct _Sinfo_Node { + unsigned int size ; /*size of this node*/ + unsigned short major_version ; /*API major version.*/ + unsigned short minor_version ; /*API minor version.*/ + } _Tinfo_Node ; + +#ifdef __ppc__ +#define CHECK_KEYMGR_ERROR(e) \ + (((_Tinfo_Node *)__keymgr_global[2])->major_version >= 4 ? (e) : 0) +#else +#define CHECK_KEYMGR_ERROR(e) (e) +#endif + +/* Our globals are stored under this keymgr index. */ +#define KEYMGR_ATEXIT_LIST 14 + +/* The different kinds of callback routines. */ +typedef void (*atexit_callback)(void); +typedef void (*cxa_atexit_callback)(void *); + +/* This structure holds a routine to call. There may be extra fields + at the end of the structure that this code doesn't know about. */ +struct one_atexit_routine +{ + union { + atexit_callback ac; + cxa_atexit_callback cac; + } callback; + /* has_arg is 0/2/4 if 'ac' is live, 1/3/5 if 'cac' is live. + Higher numbers indicate a later version of the structure that this + code doesn't understand and will ignore. */ + int has_arg; + void * arg; +}; + +struct atexit_routine_list +{ + struct atexit_routine_list * next; + struct one_atexit_routine r; +}; + +/* The various possibilities for status of atexit(). */ +enum atexit_status { + atexit_status_unknown = 0, + atexit_status_missing = 1, + atexit_status_broken = 2, + atexit_status_working = 16 +}; + +struct keymgr_atexit_list +{ + /* Version of this list. This code knows only about version 0. + If the version is higher than 0, this code may add new atexit routines + but should not attempt to run the list. */ + short version; + /* 1 if an atexit routine is currently being run by this code, 0 + otherwise. */ + char running_routines; + /* Holds a value from 'enum atexit_status'. */ + unsigned char atexit_status; + /* The list of atexit and cxa_atexit routines registered. If + atexit_status_missing it contains all routines registered while + linked with this code. If atexit_status_broken it contains all + routines registered during cxa_finalize while linked with this + code. */ + struct atexit_routine_list *l; + /* &__cxa_atexit; set if atexit_status >= atexit_status_broken. */ + cxa_atexit_p cxa_atexit_f; + /* &__cxa_finalize; set if atexit_status >= atexit_status_broken. */ + cxa_finalize_p cxa_finalize_f; + /* &atexit; set if atexit_status >= atexit_status_working + or atexit_status == atexit_status_missing. */ + atexit_p atexit_f; +}; + +/* Return 0 if __cxa_atexit has the bug it has in Mac OS 10.4: it + fails to call routines registered while an atexit routine is + running. Return 1 if it works properly, and -1 if an error occurred. */ + +struct atexit_data +{ + int result; + cxa_atexit_p cxa_atexit; +}; + +static void cxa_atexit_check_2 (void *arg) +{ + ((struct atexit_data *)arg)->result = 1; +} + +static void cxa_atexit_check_1 (void *arg) +{ + struct atexit_data * aed = arg; + if (aed->cxa_atexit (cxa_atexit_check_2, arg, arg) != 0) + aed->result = -1; +} + +static int +check_cxa_atexit (cxa_atexit_p cxa_atexit, cxa_finalize_p cxa_finalize) +{ + struct atexit_data aed = { 0, cxa_atexit }; + + /* We re-use &aed as the 'dso' parameter, since it's a unique address. */ + if (cxa_atexit (cxa_atexit_check_1, &aed, &aed) != 0) + return -1; + cxa_finalize (&aed); + if (aed.result == 0) + { + /* Call __cxa_finalize again to make sure that cxa_atexit_check_2 + is removed from the list before AED goes out of scope. */ + cxa_finalize (&aed); + aed.result = 0; + } + return aed.result; +} + +#ifdef __ppc__ +/* This comes from Csu. It works only before 10.4. The prototype has + been altered a bit to avoid casting. */ +extern int _dyld_func_lookup(const char *dyld_func_name, + void *address) __attribute__((visibility("hidden"))); + +static void our_atexit (void); + +/* We're running on 10.3.9. Find the address of the system atexit() + function. So easy to say, so hard to do. */ +static atexit_p +find_atexit_10_3 (void) +{ + unsigned int (*dyld_image_count_fn)(void); + const char *(*dyld_get_image_name_fn)(unsigned int image_index); + const void *(*dyld_get_image_header_fn)(unsigned int image_index); + const void *(*NSLookupSymbolInImage_fn)(const void *image, + const char *symbolName, + unsigned int options); + void *(*NSAddressOfSymbol_fn)(const void *symbol); + unsigned i, count; + + /* Find some dyld functions. */ + _dyld_func_lookup("__dyld_image_count", &dyld_image_count_fn); + _dyld_func_lookup("__dyld_get_image_name", &dyld_get_image_name_fn); + _dyld_func_lookup("__dyld_get_image_header", &dyld_get_image_header_fn); + _dyld_func_lookup("__dyld_NSLookupSymbolInImage", &NSLookupSymbolInImage_fn); + _dyld_func_lookup("__dyld_NSAddressOfSymbol", &NSAddressOfSymbol_fn); + + /* If any of these don't exist, that's an error. */ + if (! dyld_image_count_fn || ! dyld_get_image_name_fn + || ! dyld_get_image_header_fn || ! NSLookupSymbolInImage_fn + || ! NSAddressOfSymbol_fn) + return NULL; + + count = dyld_image_count_fn (); + for (i = 0; i < count; i++) + { + const char * path = dyld_get_image_name_fn (i); + const void * image; + const void * symbol; + + if (strcmp (path, "/usr/lib/libSystem.B.dylib") != 0) + continue; + image = dyld_get_image_header_fn (i); + if (! image) + return NULL; + /* '4' is NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR. */ + symbol = NSLookupSymbolInImage_fn (image, "_atexit", 4); + if (! symbol) + return NULL; + return NSAddressOfSymbol_fn (symbol); + } + return NULL; +} +#endif + +/* Create (if necessary), find, lock, fill in, and return our globals. + Return NULL on error, in which case the globals will not be locked. + The caller should call keymgr_set_and_unlock. */ +static struct keymgr_atexit_list * +get_globals (void) +{ + struct keymgr_atexit_list * r; + +#ifdef __ppc__ + /* 10.3.9 doesn't have _keymgr_get_and_lock_processwide_ptr_2 so the + PPC side can't use it. On 10.4 this just means the error gets + reported a little later when + _keymgr_set_and_unlock_processwide_ptr finds that the key was + never locked. */ + r = _keymgr_get_and_lock_processwide_ptr (KEYMGR_ATEXIT_LIST); +#else + void * rr; + if (_keymgr_get_and_lock_processwide_ptr_2 (KEYMGR_ATEXIT_LIST, &rr)) + return NULL; + r = rr; +#endif + + if (r == NULL) + { + r = calloc (sizeof (struct keymgr_atexit_list), 1); + if (! r) + return NULL; + } + + if (r->atexit_status == atexit_status_unknown) + { + void *handle; + + handle = dlopen ("/usr/lib/libSystem.B.dylib", RTLD_NOLOAD); + if (!handle) + { +#ifdef __ppc__ + r->atexit_status = atexit_status_missing; + r->atexit_f = find_atexit_10_3 (); + if (! r->atexit_f) + goto error; + if (r->atexit_f (our_atexit)) + goto error; +#else + goto error; +#endif + } + else + { + int chk_result; + + r->cxa_atexit_f = (cxa_atexit_p)dlsym (handle, "__cxa_atexit"); + r->cxa_finalize_f = (cxa_finalize_p)dlsym (handle, "__cxa_finalize"); + if (! r->cxa_atexit_f || ! r->cxa_finalize_f) + goto error; + + chk_result = check_cxa_atexit (r->cxa_atexit_f, r->cxa_finalize_f); + if (chk_result == -1) + goto error; + else if (chk_result == 0) + r->atexit_status = atexit_status_broken; + else + { + r->atexit_f = (atexit_p)dlsym (handle, "atexit"); + if (! r->atexit_f) + goto error; + r->atexit_status = atexit_status_working; + } + } + } + + return r; + + error: + _keymgr_set_and_unlock_processwide_ptr (KEYMGR_ATEXIT_LIST, r); + return NULL; +} + +/* Add TO_ADD to ATEXIT_LIST. ATEXIT_LIST may be NULL but is + always the result of calling _keymgr_get_and_lock_processwide_ptr and + so KEYMGR_ATEXIT_LIST is known to be locked; this routine is responsible + for unlocking it. */ + +static int +add_routine (struct keymgr_atexit_list * g, + const struct one_atexit_routine * to_add) +{ + struct atexit_routine_list * s + = malloc (sizeof (struct atexit_routine_list)); + int result; + + if (!s) + { + _keymgr_set_and_unlock_processwide_ptr (KEYMGR_ATEXIT_LIST, g); + return -1; + } + s->r = *to_add; + s->next = g->l; + g->l = s; + result = _keymgr_set_and_unlock_processwide_ptr (KEYMGR_ATEXIT_LIST, g); + return CHECK_KEYMGR_ERROR (result) == 0 ? 0 : -1; +} + +/* This runs the routines in G->L up to STOP. */ +static struct keymgr_atexit_list * +run_routines (struct keymgr_atexit_list *g, + struct atexit_routine_list *stop) +{ + for (;;) + { + struct atexit_routine_list * cur = g->l; + if (! cur || cur == stop) + break; + g->l = cur->next; + _keymgr_set_and_unlock_processwide_ptr (KEYMGR_ATEXIT_LIST, g); + + switch (cur->r.has_arg) { + case 0: case 2: case 4: + cur->r.callback.ac (); + break; + case 1: case 3: case 5: + cur->r.callback.cac (cur->r.arg); + break; + default: + /* Don't understand, so don't call it. */ + break; + } + free (cur); + + g = _keymgr_get_and_lock_processwide_ptr (KEYMGR_ATEXIT_LIST); + if (! g) + break; + } + return g; +} + +/* Call the routine described by ROUTINE_PARAM and then call any + routines added to KEYMGR_ATEXIT_LIST while that routine was + running, all with in_cxa_finalize set. */ + +static void +cxa_atexit_wrapper (void* routine_param) +{ + struct one_atexit_routine * routine = routine_param; + struct keymgr_atexit_list *g; + struct atexit_routine_list * base = NULL; + char prev_running = 0; + + g = _keymgr_get_and_lock_processwide_ptr (KEYMGR_ATEXIT_LIST); + if (g) + { + prev_running = g->running_routines; + g->running_routines = 1; + base = g->l; + _keymgr_set_and_unlock_processwide_ptr (KEYMGR_ATEXIT_LIST, g); + } + + if (routine->has_arg) + routine->callback.cac (routine->arg); + else + routine->callback.ac (); + + if (g) + g = _keymgr_get_and_lock_processwide_ptr (KEYMGR_ATEXIT_LIST); + if (g) + g = run_routines (g, base); + if (g) + { + g->running_routines = prev_running; + _keymgr_set_and_unlock_processwide_ptr (KEYMGR_ATEXIT_LIST, g); + } +} + +#ifdef __ppc__ +/* This code is used while running on 10.3.9, when __cxa_atexit doesn't + exist in the system library. 10.3.9 only supported regular PowerPC, + so this code isn't necessary on x86 or ppc64. */ + +/* This routine is called from the system atexit(); it runs everything + registered on the KEYMGR_ATEXIT_LIST. */ + +static void +our_atexit (void) +{ + struct keymgr_atexit_list *g; + char prev_running; + + g = _keymgr_get_and_lock_processwide_ptr (KEYMGR_ATEXIT_LIST); + if (! g || g->version != 0 || g->atexit_status != atexit_status_missing) + return; + + prev_running = g->running_routines; + g->running_routines = 1; + g = run_routines (g, NULL); + if (! g) + return; + g->running_routines = prev_running; + _keymgr_set_and_unlock_processwide_ptr (KEYMGR_ATEXIT_LIST, g); +} +#endif + +/* This is our wrapper around atexit and __cxa_atexit. It will return + nonzero if an error occurs, and otherwise: + - if in_cxa_finalize is set, or running on 10.3.9, add R to + KEYMGR_ATEXIT_LIST; or + - call the system __cxa_atexit to add cxa_atexit_wrapper with an argument + that indicates how cxa_atexit_wrapper should call R. */ + +static int +atexit_common (const struct one_atexit_routine *r, const void *dso) +{ + struct keymgr_atexit_list *g = get_globals (); + + if (! g) + return -1; + + if (g->running_routines || g->atexit_status == atexit_status_missing) + return add_routine (g, r); + + if (g->atexit_status >= atexit_status_working) + { + int result; + if (r->has_arg) + { + cxa_atexit_p cxa_atexit = g->cxa_atexit_f; + result = _keymgr_set_and_unlock_processwide_ptr (KEYMGR_ATEXIT_LIST, + g); + if (CHECK_KEYMGR_ERROR (result)) + return -1; + return cxa_atexit (r->callback.cac, r->arg, dso); + } + else + { + atexit_p atexit_f = g->atexit_f; + result = _keymgr_set_and_unlock_processwide_ptr (KEYMGR_ATEXIT_LIST, + g); + if (CHECK_KEYMGR_ERROR (result)) + return -1; + return atexit_f (r->callback.ac); + } + } + else + { + cxa_atexit_p cxa_atexit = g->cxa_atexit_f; + struct one_atexit_routine *alloced; + int result; + + result = _keymgr_set_and_unlock_processwide_ptr (KEYMGR_ATEXIT_LIST, g); + if (CHECK_KEYMGR_ERROR (result)) + return -1; + + alloced = malloc (sizeof (struct one_atexit_routine)); + if (! alloced) + return -1; + *alloced = *r; + return cxa_atexit (cxa_atexit_wrapper, alloced, dso); + } +} + +/* These are the actual replacement routines; they just funnel into + atexit_common. */ + +int __cxa_atexit (cxa_atexit_callback func, void* arg, + const void* dso) __attribute__((visibility("hidden"))); + +int +__cxa_atexit (cxa_atexit_callback func, void* arg, const void* dso) +{ + struct one_atexit_routine r; + r.callback.cac = func; + r.has_arg = 1; + r.arg = arg; + return atexit_common (&r, dso); +} + +int atexit (atexit_callback func) __attribute__((visibility("hidden"))); + +/* Use __dso_handle to allow even bundles that call atexit() to be unloaded + on 10.4. */ +extern void __dso_handle; + +int +atexit (atexit_callback func) +{ + struct one_atexit_routine r; + r.callback.ac = func; + r.has_arg = 0; + return atexit_common (&r, &__dso_handle); +} diff --git a/gcc/config/darwin-protos.h b/gcc/config/darwin-protos.h index 75308fb6f48..abcb172b926 100644 --- a/gcc/config/darwin-protos.h +++ b/gcc/config/darwin-protos.h @@ -66,6 +66,7 @@ extern void darwin_pragma_ignore (struct cpp_reader *); extern void darwin_pragma_options (struct cpp_reader *); extern void darwin_pragma_unused (struct cpp_reader *); +extern void darwin_file_start (void); extern void darwin_file_end (void); extern void darwin_mark_decl_preserved (const char *); @@ -78,6 +79,8 @@ extern void darwin_globalize_label (FILE *, const char *); extern void darwin_assemble_visibility (tree, int); extern void darwin_asm_output_dwarf_delta (FILE *, int, const char *, const char *); +extern void darwin_asm_output_dwarf_offset (FILE *, int, const char *, + section *); extern bool darwin_binds_local_p (tree); extern void darwin_cpp_builtins (struct cpp_reader *); extern void darwin_asm_output_anchor (rtx symbol); diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c index 2ae24a9661f..4db4cc68239 100644 --- a/gcc/config/darwin.c +++ b/gcc/config/darwin.c @@ -1328,31 +1328,16 @@ darwin_emit_unwind_label (FILE *file, tree decl, int for_eh, int empty) ? DECL_ASSEMBLER_NAME (decl) : DECL_NAME (decl); - const char *prefix = user_label_prefix; - const char *base = IDENTIFIER_POINTER (id); - unsigned int base_len = IDENTIFIER_LENGTH (id); - - const char *suffix = ".eh"; - int need_quotes = name_needs_quotes (base); - int quotes_len = need_quotes ? 2 : 0; + bool need_quotes = name_needs_quotes (base); char *lab; if (! for_eh) - suffix = ".eh1"; - - lab = XNEWVEC (char, strlen (prefix) - + base_len + strlen (suffix) + quotes_len + 1); - lab[0] = '\0'; + return; - if (need_quotes) - strcat(lab, "\""); - strcat(lab, prefix); - strcat(lab, base); - strcat(lab, suffix); - if (need_quotes) - strcat(lab, "\""); + lab = concat (need_quotes ? "\"" : "", user_label_prefix, base, ".eh", + need_quotes ? "\"" : "", NULL); if (TREE_PUBLIC (decl)) fprintf (file, "\t%s %s\n", @@ -1457,6 +1442,63 @@ darwin_asm_output_dwarf_delta (FILE *file, int size, fprintf (file, "\n\t%s L$set$%d", directive, darwin_dwarf_label_counter++); } +/* Output labels for the start of the DWARF sections if necessary. */ +void +darwin_file_start (void) +{ + if (write_symbols == DWARF2_DEBUG) + { + static const char * const debugnames[] = + { + DEBUG_FRAME_SECTION, + DEBUG_INFO_SECTION, + DEBUG_ABBREV_SECTION, + DEBUG_ARANGES_SECTION, + DEBUG_MACINFO_SECTION, + DEBUG_LINE_SECTION, + DEBUG_LOC_SECTION, + DEBUG_PUBNAMES_SECTION, + DEBUG_STR_SECTION, + DEBUG_RANGES_SECTION + }; + size_t i; + + for (i = 0; i < ARRAY_SIZE (debugnames); i++) + { + int namelen; + + switch_to_section (get_section (debugnames[i], SECTION_DEBUG, NULL)); + + gcc_assert (strncmp (debugnames[i], "__DWARF,", 8) == 0); + gcc_assert (strchr (debugnames[i] + 8, ',')); + + namelen = strchr (debugnames[i] + 8, ',') - (debugnames[i] + 8); + fprintf (asm_out_file, "Lsection%.*s:\n", namelen, debugnames[i] + 8); + } + } +} + +/* Output an offset in a DWARF section on Darwin. On Darwin, DWARF section + offsets are not represented using relocs in .o files; either the + section never leaves the .o file, or the linker or other tool is + responsible for parsing the DWARF and updating the offsets. */ + +void +darwin_asm_output_dwarf_offset (FILE *file, int size, const char * lab, + section *base) +{ + char sname[64]; + int namelen; + + gcc_assert (base->common.flags & SECTION_NAMED); + gcc_assert (strncmp (base->named.name, "__DWARF,", 8) == 0); + gcc_assert (strchr (base->named.name + 8, ',')); + + namelen = strchr (base->named.name + 8, ',') - (base->named.name + 8); + sprintf (sname, "*Lsection%.*s", namelen, base->named.name + 8); + darwin_asm_output_dwarf_delta (file, size, lab, sname); +} + void darwin_file_end (void) { diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h index edced4d80cf..21ed7da0b9e 100644 --- a/gcc/config/darwin.h +++ b/gcc/config/darwin.h @@ -205,7 +205,7 @@ Boston, MA 02110-1301, USA. */ %l %X %{d} %{s} %{t} %{Z} \ %{!Zdynamiclib:%{A} %{e*} %{m} %{N} %{n} %{r} %{u*} %{x} %{z}} \ %{@:-o %f%u.out}%{!@:%{o*}%{!o:-o a.out}} \ - %{!Zdynamiclib:%{!A:%{!nostdlib:%{!nostartfiles:%S}}}} \ + %{!A:%{!nostdlib:%{!nostartfiles:%S}}} \ %{L*} %{fopenmp:%:include(libgomp.spec)%(link_gomp)} \ %(link_libgcc) %o %{fprofile-arcs|fprofile-generate|coverage:-lgcov} \ %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %G %L}} \ @@ -341,7 +341,7 @@ Boston, MA 02110-1301, USA. */ %{!static:%{object:-lcrt0.o} \ %{!object:%{preload:-lcrt0.o} \ %{!preload:-lcrt1.o %(darwin_crt2)}}}}}} \ - %{shared-libgcc:%:version-compare(< 10.5 mmacosx-version-min= -lcrt3.o)}" + %{shared-libgcc:%:version-compare(< 10.5 mmacosx-version-min= crt3.o%s)}" /* The native Darwin linker doesn't necessarily place files in the order that they're specified on the link line. Thus, it is pointless @@ -360,16 +360,16 @@ Boston, MA 02110-1301, USA. */ #define DWARF2_DEBUGGING_INFO #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG -#define DEBUG_FRAME_SECTION "__DWARFA,__debug_frame,coalesced,no_toc+strip_static_syms" -#define DEBUG_INFO_SECTION "__DWARFA,__debug_info" -#define DEBUG_ABBREV_SECTION "__DWARFA,__debug_abbrev" -#define DEBUG_ARANGES_SECTION "__DWARFA,__debug_aranges" -#define DEBUG_MACINFO_SECTION "__DWARFA,__debug_macinfo" -#define DEBUG_LINE_SECTION "__DWARFA,__debug_line" -#define DEBUG_LOC_SECTION "__DWARFA,__debug_loc" -#define DEBUG_PUBNAMES_SECTION "__DWARFA,__debug_pubnames" -#define DEBUG_STR_SECTION "__DWARFA,__debug_str" -#define DEBUG_RANGES_SECTION "__DWARFA,__debug_ranges" +#define DEBUG_FRAME_SECTION "__DWARF,__debug_frame,regular,debug" +#define DEBUG_INFO_SECTION "__DWARF,__debug_info,regular,debug" +#define DEBUG_ABBREV_SECTION "__DWARF,__debug_abbrev,regular,debug" +#define DEBUG_ARANGES_SECTION "__DWARF,__debug_aranges,regular,debug" +#define DEBUG_MACINFO_SECTION "__DWARF,__debug_macinfo,regular,debug" +#define DEBUG_LINE_SECTION "__DWARF,__debug_line,regular,debug" +#define DEBUG_LOC_SECTION "__DWARF,__debug_loc,regular,debug" +#define DEBUG_PUBNAMES_SECTION "__DWARF,__debug_pubnames,regular,debug" +#define DEBUG_STR_SECTION "__DWARF,__debug_str,regular,debug" +#define DEBUG_RANGES_SECTION "__DWARF,__debug_ranges,regular,debug" /* When generating stabs debugging, use N_BINCL entries. */ @@ -439,9 +439,11 @@ Boston, MA 02110-1301, USA. */ #define TARGET_USES_WEAK_UNWIND_INFO 1 /* We need to use a nonlocal label for the start of an EH frame: the - Darwin linker requires that a coalesced section start with a label. */ + Darwin linker requires that a coalesced section start with a label. + Unfortunately, it also requires that 'debug' sections don't contain + labels. */ #undef FRAME_BEGIN_LABEL -#define FRAME_BEGIN_LABEL "EH_frame" +#define FRAME_BEGIN_LABEL (for_eh ? "EH_frame" : "Lframe") /* Emit a label for the FDE corresponding to DECL. EMPTY means emit a label for an empty FDE. */ @@ -798,6 +800,9 @@ enum machopic_addr_class { #define ASM_OUTPUT_DWARF_DELTA(FILE,SIZE,LABEL1,LABEL2) \ darwin_asm_output_dwarf_delta (FILE, SIZE, LABEL1, LABEL2) +#define ASM_OUTPUT_DWARF_OFFSET(FILE,SIZE,LABEL,BASE) \ + darwin_asm_output_dwarf_offset (FILE, SIZE, LABEL, BASE) + #define ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX(ASM_OUT_FILE, ENCODING, SIZE, ADDR, DONE) \ if (ENCODING == ASM_PREFERRED_EH_DATA_FORMAT (2, 1)) { \ darwin_non_lazy_pcrel (ASM_OUT_FILE, ADDR); \ diff --git a/gcc/config/i386/constraints.md b/gcc/config/i386/constraints.md new file mode 100644 index 00000000000..0ab4995f3b8 --- /dev/null +++ b/gcc/config/i386/constraints.md @@ -0,0 +1,152 @@ +;; Constraint definitions for IA-32 and x86-64. +;; Copyright (C) 2006 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 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. + +;;; Unused letters: +;;; B H TU W +;;; h jk vw z + +;; Integer register constraints. +;; It is not necessary to define 'r' here. +(define_register_constraint "R" "LEGACY_REGS" + "Legacy register---the eight integer registers available on all + i386 processors (@code{a}, @code{b}, @code{c}, @code{d}, + @code{si}, @code{di}, @code{bp}, @code{sp}).") + +(define_register_constraint "q" "TARGET_64BIT ? GENERAL_REGS : Q_REGS" + "Any register accessible as @code{@var{r}l}. In 32-bit mode, @code{a}, + @code{b}, @code{c}, and @code{d}; in 64-bit mode, any integer register.") + +(define_register_constraint "Q" "Q_REGS" + "Any register accessible as @code{@var{r}h}: @code{a}, @code{b}, + @code{c}, and @code{d}.") + +(define_register_constraint "l" "INDEX_REGS" + "@internal Any register that can be used as the index in a base+index + memory access: that is, any general register except the stack pointer.") + +(define_register_constraint "a" "AREG" + "The @code{a} register.") + +(define_register_constraint "b" "BREG" + "The @code{b} register.") + +(define_register_constraint "c" "CREG" + "The @code{c} register.") + +(define_register_constraint "d" "DREG" + "The @code{d} register.") + +(define_register_constraint "S" "SIREG" + "The @code{si} register.") + +(define_register_constraint "D" "DIREG" + "The @code{di} register.") + +(define_register_constraint "A" "AD_REGS" + "The @code{a} and @code{d} registers, as a pair (for instructions + that return half the result in one and half in the other).") + +;; Floating-point register constraints. +(define_register_constraint "f" + "TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387 ? FLOAT_REGS : NO_REGS" + "Any 80387 floating-point (stack) register.") + +(define_register_constraint "t" + "TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387 ? FP_TOP_REG : NO_REGS" + "Top of 80387 floating-point stack (@code{%st(0)}).") + +(define_register_constraint "u" + "TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387 ? FP_SECOND_REG : NO_REGS" + "Second from top of 80387 floating-point stack (@code{%st(1)}).") + +;; Vector registers (also used for plain floating point nowadays). +(define_register_constraint "y" "TARGET_MMX ? MMX_REGS : NO_REGS" + "Any MMX register.") + +(define_register_constraint "x" "TARGET_SSE ? SSE_REGS : NO_REGS" + "Any SSE register.") + +(define_register_constraint "Y" "TARGET_SSE2? SSE_REGS : NO_REGS" + "@internal Any SSE2 register.") + +;; Integer constant constraints. +(define_constraint "I" + "Integer constant in the range 0 @dots{} 31, for 32-bit shifts." + (and (match_code "const_int") + (match_test "ival >= 0 && ival <= 31"))) + +(define_constraint "J" + "Integer constant in the range 0 @dots{} 63, for 64-bit shifts." + (and (match_code "const_int") + (match_test "ival >= 0 && ival <= 63"))) + +(define_constraint "K" + "Signed 8-bit integer constant." + (and (match_code "const_int") + (match_test "ival >= -128 && ival <= 127"))) + +(define_constraint "L" + "@code{0xFF} or @code{0xFFFF}, for andsi as a zero-extending move." + (and (match_code "const_int") + (match_test "ival == 0xFF || ival == 0xFFFF"))) + +(define_constraint "M" + "0, 1, 2, or 3 (shifts for the @code{lea} instruction)." + (and (match_code "const_int") + (match_test "ival >= 0 && ival <= 3"))) + +(define_constraint "N" + "Unsigned 8-bit integer constant (for @code{in} and @code{out} + instructions)." + (and (match_code "const_int") + (match_test "ival >= 0 && ival <= 255"))) + +(define_constraint "O" + "@internal Integer constant in the range 0 @dots{} 127, for 128-bit shifts." + (and (match_code "const_int") + (match_test "ival >= 0 && ival <= 127"))) + +;; Floating-point constant constraints. +;; We allow constants even if TARGET_80387 isn't set, because the +;; stack register converter may need to load 0.0 into the function +;; value register (top of stack). +(define_constraint "G" + "Standard 80387 floating point constant." + (and (match_code "const_double") + (match_test "standard_80387_constant_p (op)"))) + +;; This can theoretically be any mode's CONST0_RTX. +(define_constraint "C" + "Standard SSE floating point constant." + (match_test "standard_sse_constant_p (op)")) + +;; Constant-or-symbol-reference constraints. + +(define_constraint "e" + "32-bit signed integer constant, or a symbolic reference known + to fit that range (for immediate operands in sign-extending x86-64 + instructions)." + (match_operand 0 "x86_64_immediate_operand")) + +(define_constraint "Z" + "32-bit unsigned integer constant, or a symbolic reference known + to fit that range (for immediate operands in zero-extending x86-64 + instructions)." + (match_operand 0 "x86_64_zext_immediate_operand")) diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h index bb02b7b8d49..1fe8e4e3f82 100644 --- a/gcc/config/i386/cygming.h +++ b/gcc/config/i386/cygming.h @@ -37,13 +37,13 @@ Boston, MA 02110-1301, USA. */ /* Use section relative relocations for debugging offsets. Unlike other targets that fake this by putting the section VMA at 0, PE won't allow it. */ -#define ASM_OUTPUT_DWARF_OFFSET(FILE, SIZE, LABEL) \ - do { \ - if (SIZE != 4) \ - abort (); \ - \ - fputs ("\t.secrel32\t", FILE); \ - assemble_name (FILE, LABEL); \ +#define ASM_OUTPUT_DWARF_OFFSET(FILE, SIZE, LABEL, SECTION) \ + do { \ + if (SIZE != 4) \ + abort (); \ + \ + fputs ("\t.secrel32\t", FILE); \ + assemble_name (FILE, LABEL); \ } while (0) #endif diff --git a/gcc/config/i386/i386-protos.h b/gcc/config/i386/i386-protos.h index ed9d4f3d62e..315487e8fd4 100644 --- a/gcc/config/i386/i386-protos.h +++ b/gcc/config/i386/i386-protos.h @@ -142,6 +142,7 @@ extern int ix86_secondary_memory_needed (enum reg_class, enum reg_class, extern bool ix86_cannot_change_mode_class (enum machine_mode, enum machine_mode, enum reg_class); extern enum reg_class ix86_preferred_reload_class (rtx, enum reg_class); +extern enum reg_class ix86_preferred_output_reload_class (rtx, enum reg_class); extern int ix86_memory_move_cost (enum machine_mode, enum reg_class, int); extern int ix86_mode_needed (int, rtx); extern void emit_i387_cw_initialization (int); diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 01a025e0459..175d20d9386 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -49,6 +49,7 @@ Boston, MA 02110-1301, USA. */ #include "cgraph.h" #include "tree-gimple.h" #include "dwarf2.h" +#include "tm-constrs.h" #ifndef CHECK_STACK_LIMIT #define CHECK_STACK_LIMIT (-1) @@ -95,7 +96,8 @@ struct processor_costs size_cost = { /* costs for tunning for size */ 2, /* cost of reg,reg fld/fst */ {2, 2, 2}, /* cost of loading fp registers in SFmode, DFmode and XFmode */ - {2, 2, 2}, /* cost of loading integer registers */ + {2, 2, 2}, /* cost of storing fp registers + in SFmode, DFmode and XFmode */ 3, /* cost of moving MMX register */ {3, 3}, /* cost of loading MMX registers in SImode and DImode */ @@ -148,7 +150,8 @@ struct processor_costs i386_cost = { /* 386 specific costs */ 2, /* cost of reg,reg fld/fst */ {8, 8, 8}, /* cost of loading fp registers in SFmode, DFmode and XFmode */ - {8, 8, 8}, /* cost of loading integer registers */ + {8, 8, 8}, /* cost of storing fp registers + in SFmode, DFmode and XFmode */ 2, /* cost of moving MMX register */ {4, 8}, /* cost of loading MMX registers in SImode and DImode */ @@ -200,7 +203,8 @@ struct processor_costs i486_cost = { /* 486 specific costs */ 2, /* cost of reg,reg fld/fst */ {8, 8, 8}, /* cost of loading fp registers in SFmode, DFmode and XFmode */ - {8, 8, 8}, /* cost of loading integer registers */ + {8, 8, 8}, /* cost of storing fp registers + in SFmode, DFmode and XFmode */ 2, /* cost of moving MMX register */ {4, 8}, /* cost of loading MMX registers in SImode and DImode */ @@ -252,7 +256,8 @@ struct processor_costs pentium_cost = { 2, /* cost of reg,reg fld/fst */ {2, 2, 6}, /* cost of loading fp registers in SFmode, DFmode and XFmode */ - {4, 4, 6}, /* cost of loading integer registers */ + {4, 4, 6}, /* cost of storing fp registers + in SFmode, DFmode and XFmode */ 8, /* cost of moving MMX register */ {8, 8}, /* cost of loading MMX registers in SImode and DImode */ @@ -304,7 +309,8 @@ struct processor_costs pentiumpro_cost = { 2, /* cost of reg,reg fld/fst */ {2, 2, 6}, /* cost of loading fp registers in SFmode, DFmode and XFmode */ - {4, 4, 6}, /* cost of loading integer registers */ + {4, 4, 6}, /* cost of storing fp registers + in SFmode, DFmode and XFmode */ 2, /* cost of moving MMX register */ {2, 2}, /* cost of loading MMX registers in SImode and DImode */ @@ -356,7 +362,8 @@ struct processor_costs k6_cost = { 4, /* cost of reg,reg fld/fst */ {6, 6, 6}, /* cost of loading fp registers in SFmode, DFmode and XFmode */ - {4, 4, 4}, /* cost of loading integer registers */ + {4, 4, 4}, /* cost of storing fp registers + in SFmode, DFmode and XFmode */ 2, /* cost of moving MMX register */ {2, 2}, /* cost of loading MMX registers in SImode and DImode */ @@ -408,7 +415,8 @@ struct processor_costs athlon_cost = { 4, /* cost of reg,reg fld/fst */ {4, 4, 12}, /* cost of loading fp registers in SFmode, DFmode and XFmode */ - {6, 6, 8}, /* cost of loading integer registers */ + {6, 6, 8}, /* cost of storing fp registers + in SFmode, DFmode and XFmode */ 2, /* cost of moving MMX register */ {4, 4}, /* cost of loading MMX registers in SImode and DImode */ @@ -460,7 +468,8 @@ struct processor_costs k8_cost = { 4, /* cost of reg,reg fld/fst */ {4, 4, 12}, /* cost of loading fp registers in SFmode, DFmode and XFmode */ - {6, 6, 8}, /* cost of loading integer registers */ + {6, 6, 8}, /* cost of storing fp registers + in SFmode, DFmode and XFmode */ 2, /* cost of moving MMX register */ {3, 3}, /* cost of loading MMX registers in SImode and DImode */ @@ -512,7 +521,8 @@ struct processor_costs pentium4_cost = { 2, /* cost of reg,reg fld/fst */ {2, 2, 6}, /* cost of loading fp registers in SFmode, DFmode and XFmode */ - {4, 4, 6}, /* cost of loading integer registers */ + {4, 4, 6}, /* cost of storing fp registers + in SFmode, DFmode and XFmode */ 2, /* cost of moving MMX register */ {2, 2}, /* cost of loading MMX registers in SImode and DImode */ @@ -564,7 +574,8 @@ struct processor_costs nocona_cost = { 3, /* cost of reg,reg fld/fst */ {12, 12, 12}, /* cost of loading fp registers in SFmode, DFmode and XFmode */ - {4, 4, 4}, /* cost of loading integer registers */ + {4, 4, 4}, /* cost of storing fp registers + in SFmode, DFmode and XFmode */ 6, /* cost of moving MMX register */ {12, 12}, /* cost of loading MMX registers in SImode and DImode */ @@ -621,7 +632,8 @@ struct processor_costs generic64_cost = { 4, /* cost of reg,reg fld/fst */ {12, 12, 12}, /* cost of loading fp registers in SFmode, DFmode and XFmode */ - {6, 6, 8}, /* cost of loading integer registers */ + {6, 6, 8}, /* cost of storing fp registers + in SFmode, DFmode and XFmode */ 2, /* cost of moving MMX register */ {8, 8}, /* cost of loading MMX registers in SImode and DImode */ @@ -676,7 +688,8 @@ struct processor_costs generic32_cost = { 4, /* cost of reg,reg fld/fst */ {12, 12, 12}, /* cost of loading fp registers in SFmode, DFmode and XFmode */ - {6, 6, 8}, /* cost of loading integer registers */ + {6, 6, 8}, /* cost of storing fp registers + in SFmode, DFmode and XFmode */ 2, /* cost of moving MMX register */ {8, 8}, /* cost of loading MMX registers in SImode and DImode */ @@ -15227,7 +15240,7 @@ ix86_init_mmx_sse_builtins (void) static void ix86_init_sse_abi_builtins (void) { - tree dbl, flt, dbl2, flt2; + tree flt, flt2; /* Bail out in case the template definitions are not available. */ if (! built_in_decls [BUILT_IN_SIN] @@ -15237,18 +15250,10 @@ ix86_init_sse_abi_builtins (void) return; /* Build the function types as variants of the existing ones. */ - dbl = build_variant_type_copy (TREE_TYPE (built_in_decls [BUILT_IN_SIN])); - TYPE_ATTRIBUTES (dbl) - = tree_cons (get_identifier ("sseregparm"), - NULL_TREE, TYPE_ATTRIBUTES (dbl)); flt = build_variant_type_copy (TREE_TYPE (built_in_decls [BUILT_IN_SINF])); TYPE_ATTRIBUTES (flt) = tree_cons (get_identifier ("sseregparm"), NULL_TREE, TYPE_ATTRIBUTES (flt)); - dbl2 = build_variant_type_copy (TREE_TYPE (built_in_decls [BUILT_IN_ATAN2])); - TYPE_ATTRIBUTES (dbl2) - = tree_cons (get_identifier ("sseregparm"), - NULL_TREE, TYPE_ATTRIBUTES (dbl2)); flt2 = build_variant_type_copy (TREE_TYPE (built_in_decls [BUILT_IN_ATAN2F])); TYPE_ATTRIBUTES (flt2) = tree_cons (get_identifier ("sseregparm"), @@ -15261,25 +15266,15 @@ ix86_init_sse_abi_builtins (void) BUILT_IN_NORMAL, \ "__libm_sse2_" # name, NULL_TREE) - def_builtin (ACOS, acos, dbl); def_builtin (ACOSF, acosf, flt); - def_builtin (ASIN, asin, dbl); def_builtin (ASINF, asinf, flt); - def_builtin (ATAN, atan, dbl); def_builtin (ATANF, atanf, flt); - def_builtin (ATAN2, atan2, dbl2); def_builtin (ATAN2F, atan2f, flt2); - def_builtin (COS, cos, dbl); def_builtin (COSF, cosf, flt); - def_builtin (EXP, exp, dbl); def_builtin (EXPF, expf, flt); - def_builtin (LOG10, log10, dbl); def_builtin (LOG10F, log10f, flt); - def_builtin (LOG, log, dbl); def_builtin (LOGF, logf, flt); - def_builtin (SIN, sin, dbl); def_builtin (SINF, sinf, flt); - def_builtin (TAN, tan, dbl); def_builtin (TANF, tanf, flt); #undef def_builtin @@ -16257,15 +16252,28 @@ ix86_free_from_memory (enum machine_mode mode) enum reg_class ix86_preferred_reload_class (rtx x, enum reg_class class) { + enum machine_mode mode = GET_MODE (x); + /* We're only allowed to return a subclass of CLASS. Many of the following checks fail for NO_REGS, so eliminate that early. */ if (class == NO_REGS) return NO_REGS; /* All classes can load zeros. */ - if (x == CONST0_RTX (GET_MODE (x))) + if (x == CONST0_RTX (mode)) return class; + /* Force constants into memory if we are loading a (non-zero) constant into + an MMX or SSE register. This is because there are no MMX/SSE instructions + to load from a constant. */ + if (CONSTANT_P (x) + && (MAYBE_MMX_CLASS_P (class) || MAYBE_SSE_CLASS_P (class))) + return NO_REGS; + + /* Prefer SSE regs only, if we can use them for math. */ + if (TARGET_SSE_MATH && !TARGET_MIX_SSE_I387 && SSE_FLOAT_MODE_P (mode)) + return SSE_CLASS_P (class) ? class : NO_REGS; + /* Floating-point constants need more complex checks. */ if (GET_CODE (x) == CONST_DOUBLE && GET_MODE (x) != VOIDmode) { @@ -16277,8 +16285,6 @@ ix86_preferred_reload_class (rtx x, enum reg_class class) zero above. We only want to wind up preferring 80387 registers if we plan on doing computation with them. */ if (TARGET_80387 - && (TARGET_MIX_SSE_I387 - || !(TARGET_SSE_MATH && SSE_FLOAT_MODE_P (GET_MODE (x)))) && standard_80387_constant_p (x)) { /* Limit class to non-sse. */ @@ -16294,10 +16300,6 @@ ix86_preferred_reload_class (rtx x, enum reg_class class) return NO_REGS; } - if (MAYBE_MMX_CLASS_P (class) && CONSTANT_P (x)) - return NO_REGS; - if (MAYBE_SSE_CLASS_P (class) && CONSTANT_P (x)) - return NO_REGS; /* Generally when we see PLUS here, it's the function invariant (plus soft-fp const_int). Which can only be computed into general @@ -16319,6 +16321,33 @@ ix86_preferred_reload_class (rtx x, enum reg_class class) return class; } +/* Discourage putting floating-point values in SSE registers unless + SSE math is being used, and likewise for the 387 registers. */ +enum reg_class +ix86_preferred_output_reload_class (rtx x, enum reg_class class) +{ + enum machine_mode mode = GET_MODE (x); + + /* Restrict the output reload class to the register bank that we are doing + math on. If we would like not to return a subset of CLASS, reject this + alternative: if reload cannot do this, it will still use its choice. */ + mode = GET_MODE (x); + if (TARGET_SSE_MATH && SSE_FLOAT_MODE_P (mode)) + return MAYBE_SSE_CLASS_P (class) ? SSE_REGS : NO_REGS; + + if (TARGET_80387 && SCALAR_FLOAT_MODE_P (mode)) + { + if (class == FP_TOP_SSE_REGS) + return FP_TOP_REG; + else if (class == FP_SECOND_SSE_REGS) + return FP_SECOND_REG; + else + return FLOAT_CLASS_P (class) ? class : NO_REGS; + } + + return class; +} + /* If we are copying between general and FP registers, we need a memory location. The same is true for SSE and MMX registers. @@ -17016,24 +17045,24 @@ machopic_output_stub (FILE *file, const char *symb, const char *stub) if (MACHOPIC_PURE) { - fprintf (file, "\tcall LPC$%d\nLPC$%d:\tpopl %%eax\n", label, label); - fprintf (file, "\tmovl %s-LPC$%d(%%eax),%%edx\n", lazy_ptr_name, label); - fprintf (file, "\tjmp *%%edx\n"); + fprintf (file, "\tcall\tLPC$%d\nLPC$%d:\tpopl\t%%eax\n", label, label); + fprintf (file, "\tmovl\t%s-LPC$%d(%%eax),%%edx\n", lazy_ptr_name, label); + fprintf (file, "\tjmp\t*%%edx\n"); } else - fprintf (file, "\tjmp *%s\n", lazy_ptr_name); + fprintf (file, "\tjmp\t*%s\n", lazy_ptr_name); fprintf (file, "%s:\n", binder_name); if (MACHOPIC_PURE) { - fprintf (file, "\tlea %s-LPC$%d(%%eax),%%eax\n", lazy_ptr_name, label); - fprintf (file, "\tpushl %%eax\n"); + fprintf (file, "\tlea\t%s-LPC$%d(%%eax),%%eax\n", lazy_ptr_name, label); + fprintf (file, "\tpushl\t%%eax\n"); } else - fprintf (file, "\t pushl $%s\n", lazy_ptr_name); + fprintf (file, "\tpushl\t$%s\n", lazy_ptr_name); - fprintf (file, "\tjmp dyld_stub_binding_helper\n"); + fprintf (file, "\tjmp\tdyld_stub_binding_helper\n"); switch_to_section (darwin_sections[machopic_lazy_symbol_ptr_section]); fprintf (file, "%s:\n", lazy_ptr_name); @@ -17348,6 +17377,9 @@ static void x86_file_start (void) { default_file_start (); +#if TARGET_MACHO + darwin_file_start (); +#endif if (X86_FILE_START_VERSION_DIRECTIVE) fputs ("\t.version\t\"01.01\"\n", asm_out_file); if (X86_FILE_START_FLTUSED) diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index 5948ede02a1..6923eaaa661 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -669,7 +669,9 @@ extern int x86_prefetch_sse; #define STACK_REGS #define IS_STACK_MODE(MODE) \ - ((MODE) == DFmode || (MODE) == SFmode || (MODE) == XFmode) \ + (((MODE) == SFmode && (!TARGET_SSE || !TARGET_SSE_MATH)) \ + || ((MODE) == DFmode && (!TARGET_SSE2 || !TARGET_SSE_MATH)) \ + || (MODE) == XFmode) /* Number of actual hardware registers. The hardware registers are assigned numbers for the compiler @@ -1222,6 +1224,12 @@ enum reg_class #define PREFERRED_RELOAD_CLASS(X, CLASS) \ ix86_preferred_reload_class ((X), (CLASS)) +/* Discourage putting floating-point values in SSE registers unless + SSE math is being used, and likewise for the 387 registers. */ + +#define PREFERRED_OUTPUT_RELOAD_CLASS(X, CLASS) \ + ix86_preferred_output_reload_class ((X), (CLASS)) + /* If we are copying between general and FP registers, we need a memory location. The same is true for SSE and MMX registers. */ #define SECONDARY_MEMORY_NEEDED(CLASS1, CLASS2, MODE) \ diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index cefd0196304..e651672bd6b 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -473,9 +473,10 @@ (include "athlon.md") -;; Operand and operator predicates +;; Operand and operator predicates and constraints (include "predicates.md") +(include "constraints.md") ;; Compare instructions. @@ -965,8 +966,8 @@ (define_insn "*cmpfp_i_mixed" [(set (reg:CCFP FLAGS_REG) - (compare:CCFP (match_operand 0 "register_operand" "f#x,x#f") - (match_operand 1 "nonimmediate_operand" "f#x,xm#f")))] + (compare:CCFP (match_operand 0 "register_operand" "f,x") + (match_operand 1 "nonimmediate_operand" "f,xm")))] "TARGET_MIX_SSE_I387 && SSE_FLOAT_MODE_P (GET_MODE (operands[0])) && GET_MODE (operands[0]) == GET_MODE (operands[1])" @@ -1014,8 +1015,8 @@ (define_insn "*cmpfp_iu_mixed" [(set (reg:CCFPU FLAGS_REG) - (compare:CCFPU (match_operand 0 "register_operand" "f#x,x#f") - (match_operand 1 "nonimmediate_operand" "f#x,xm#f")))] + (compare:CCFPU (match_operand 0 "register_operand" "f,x") + (match_operand 1 "nonimmediate_operand" "f,xm")))] "TARGET_MIX_SSE_I387 && SSE_FLOAT_MODE_P (GET_MODE (operands[0])) && GET_MODE (operands[0]) == GET_MODE (operands[1])" @@ -2219,7 +2220,7 @@ (define_insn "*pushsf" [(set (match_operand:SF 0 "push_operand" "=<,<,<") - (match_operand:SF 1 "general_no_elim_operand" "f#rx,rFm#fx,x#rf"))] + (match_operand:SF 1 "general_no_elim_operand" "f,rFm,x"))] "!TARGET_64BIT" { /* Anything else should be already split before reg-stack. */ @@ -2232,7 +2233,7 @@ (define_insn "*pushsf_rex64" [(set (match_operand:SF 0 "push_operand" "=X,X,X") - (match_operand:SF 1 "nonmemory_no_elim_operand" "f#rx,rF#fx,x#rf"))] + (match_operand:SF 1 "nonmemory_no_elim_operand" "f,rF,x"))] "TARGET_64BIT" { /* Anything else should be already split before reg-stack. */ @@ -2271,9 +2272,9 @@ (define_insn "*movsf_1" [(set (match_operand:SF 0 "nonimmediate_operand" - "=f#xr,m ,f#xr,r#xf ,m ,x#rf,x#rf,x#rf ,m ,!*y,!rm,!*y") + "=f,m ,f,r,m ,x,x,x,m ,!*y,!rm,!*y") (match_operand:SF 1 "general_operand" - "fm#rx,f#rx,G ,rmF#fx,Fr#fx,C ,x ,xm#rf,x#rf,rm ,*y ,*y"))] + "fm,f,G ,rmF,Fr,C ,x ,xm,x,rm ,*y ,*y"))] "!(MEM_P (operands[0]) && MEM_P (operands[1])) && (reload_in_progress || reload_completed || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE) @@ -2386,7 +2387,7 @@ (define_insn "*pushdf_nointeger" [(set (match_operand:DF 0 "push_operand" "=<,<,<,<") - (match_operand:DF 1 "general_no_elim_operand" "f#Y,Fo#fY,*r#fY,Y#f"))] + (match_operand:DF 1 "general_no_elim_operand" "f,Fo,*r,Y"))] "!TARGET_64BIT && !TARGET_INTEGER_DFMODE_MOVES" { /* This insn should be already split before reg-stack. */ @@ -2398,7 +2399,7 @@ (define_insn "*pushdf_integer" [(set (match_operand:DF 0 "push_operand" "=<,<,<") - (match_operand:DF 1 "general_no_elim_operand" "f#rY,rFo#fY,Y#rf"))] + (match_operand:DF 1 "general_no_elim_operand" "f,rFo,Y"))] "TARGET_64BIT || TARGET_INTEGER_DFMODE_MOVES" { /* This insn should be already split before reg-stack. */ @@ -2438,9 +2439,9 @@ (define_insn "*movdf_nointeger" [(set (match_operand:DF 0 "nonimmediate_operand" - "=f#Y,m ,f#Y,*r ,o ,Y*x#f,Y*x#f,Y*x#f ,m ") + "=f,m ,f,*r ,o ,Y*x,Y*x,Y*x,m ") (match_operand:DF 1 "general_operand" - "fm#Y,f#Y,G ,*roF,F*r,C ,Y*x#f,mY*x#f,Y*x#f"))] + "fm,f,G ,*roF,F*r,C ,Y*x,mY*x,Y*x"))] "(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM) && ((optimize_size || !TARGET_INTEGER_DFMODE_MOVES) && !TARGET_64BIT) && (reload_in_progress || reload_completed @@ -2558,9 +2559,9 @@ (define_insn "*movdf_integer" [(set (match_operand:DF 0 "nonimmediate_operand" - "=f#Yr,m ,f#Yr,r#Yf ,o ,Y*x#rf,Y*x#rf,Y*x#rf,m") + "=f,m ,f,r,o ,Y*x,Y*x,Y*x,m") (match_operand:DF 1 "general_operand" - "fm#Yr,f#Yr,G ,roF#Yf,Fr#Yf,C ,Y*x#rf,m ,Y*x#rf"))] + "fm,f,G ,roF,Fr,C ,Y*x,m ,Y*x"))] "(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM) && ((!optimize_size && TARGET_INTEGER_DFMODE_MOVES) || TARGET_64BIT) && (reload_in_progress || reload_completed @@ -2733,7 +2734,7 @@ (define_insn "*pushxf_integer" [(set (match_operand:XF 0 "push_operand" "=<,<") - (match_operand:XF 1 "general_no_elim_operand" "f#r,ro#f"))] + (match_operand:XF 1 "general_no_elim_operand" "f,ro"))] "!optimize_size" { /* This insn should be already split before reg-stack. */ @@ -2805,8 +2806,8 @@ (set_attr "mode" "XF,XF,XF,SI,SI")]) (define_insn "*movxf_integer" - [(set (match_operand:XF 0 "nonimmediate_operand" "=f#r,m,f#r,r#f,o") - (match_operand:XF 1 "general_operand" "fm#r,f#r,G,roF#f,Fr#f"))] + [(set (match_operand:XF 0 "nonimmediate_operand" "=f,m,f,r,o") + (match_operand:XF 1 "general_operand" "fm,f,G,roF,Fr"))] "!optimize_size && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM) && (reload_in_progress || reload_completed @@ -3535,8 +3536,8 @@ }) (define_insn "*extendsfdf2_mixed" - [(set (match_operand:DF 0 "nonimmediate_operand" "=f#Y,m#fY,Y#f") - (float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "fm#Y,f#Y,mY#f")))] + [(set (match_operand:DF 0 "nonimmediate_operand" "=f,m,Y") + (float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "fm,f,mY")))] "TARGET_SSE2 && TARGET_MIX_SSE_I387 && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)" { @@ -3869,7 +3870,7 @@ }) (define_insn "*truncxfsf2_mixed" - [(set (match_operand:SF 0 "nonimmediate_operand" "=m,?f#rx,?r#fx,?x#rf") + [(set (match_operand:SF 0 "nonimmediate_operand" "=m,?f,?r,?x") (float_truncate:SF (match_operand:XF 1 "register_operand" "f,f,f,f"))) (clobber (match_operand:SF 2 "memory_operand" "=X,m,m,m"))] @@ -3896,7 +3897,7 @@ (set_attr "mode" "SF")]) (define_insn "*truncxfsf2_i387" - [(set (match_operand:SF 0 "nonimmediate_operand" "=m,?f#r,?r#f") + [(set (match_operand:SF 0 "nonimmediate_operand" "=m,?f,?r") (float_truncate:SF (match_operand:XF 1 "register_operand" "f,f,f"))) (clobber (match_operand:SF 2 "memory_operand" "=X,m,m"))] @@ -3967,7 +3968,7 @@ }) (define_insn "*truncxfdf2_mixed" - [(set (match_operand:DF 0 "nonimmediate_operand" "=m,?f#rY,?r#fY,?Y#rf") + [(set (match_operand:DF 0 "nonimmediate_operand" "=m,?f,?r,?Y") (float_truncate:DF (match_operand:XF 1 "register_operand" "f,f,f,f"))) (clobber (match_operand:DF 2 "memory_operand" "=X,m,m,m"))] @@ -3994,7 +3995,7 @@ (set_attr "mode" "DF")]) (define_insn "*truncxfdf2_i387" - [(set (match_operand:DF 0 "nonimmediate_operand" "=m,?f#r,?r#f") + [(set (match_operand:DF 0 "nonimmediate_operand" "=m,?f,?r") (float_truncate:DF (match_operand:XF 1 "register_operand" "f,f,f"))) (clobber (match_operand:DF 2 "memory_operand" "=X,m,m"))] @@ -4468,7 +4469,7 @@ "") (define_insn "*floatsisf2_mixed" - [(set (match_operand:SF 0 "register_operand" "=f#x,?f#x,x#f,x#f") + [(set (match_operand:SF 0 "register_operand" "=f,?f,x,x") (float:SF (match_operand:SI 1 "nonimmediate_operand" "m,r,r,mr")))] "TARGET_MIX_SSE_I387" "@ @@ -4511,7 +4512,7 @@ "") (define_insn "*floatdisf2_mixed" - [(set (match_operand:SF 0 "register_operand" "=f#x,?f#x,x#f,x#f") + [(set (match_operand:SF 0 "register_operand" "=f,?f,x,x") (float:SF (match_operand:DI 1 "nonimmediate_operand" "m,r,r,mr")))] "TARGET_64BIT && TARGET_MIX_SSE_I387" "@ @@ -4579,7 +4580,7 @@ "") (define_insn "*floatsidf2_mixed" - [(set (match_operand:DF 0 "register_operand" "=f#Y,?f#Y,Y#f,Y#f") + [(set (match_operand:DF 0 "register_operand" "=f,?f,Y,Y") (float:DF (match_operand:SI 1 "nonimmediate_operand" "m,r,r,mr")))] "TARGET_SSE2 && TARGET_MIX_SSE_I387" "@ @@ -4622,7 +4623,7 @@ "") (define_insn "*floatdidf2_mixed" - [(set (match_operand:DF 0 "register_operand" "=f#Y,?f#Y,Y#f,Y#f") + [(set (match_operand:DF 0 "register_operand" "=f,?f,Y,Y") (float:DF (match_operand:DI 1 "nonimmediate_operand" "m,r,r,mr")))] "TARGET_64BIT && TARGET_SSE2 && TARGET_MIX_SSE_I387" "@ @@ -9542,9 +9543,9 @@ "ix86_expand_fp_absneg_operator (ABS, SFmode, operands); DONE;") (define_insn "*absnegsf2_mixed" - [(set (match_operand:SF 0 "nonimmediate_operand" "=x#f,x#f,f#x,rm") + [(set (match_operand:SF 0 "nonimmediate_operand" "=x,x,f,rm") (match_operator:SF 3 "absneg_operator" - [(match_operand:SF 1 "nonimmediate_operand" "0 ,x#f,0 ,0")])) + [(match_operand:SF 1 "nonimmediate_operand" "0 ,x,0 ,0")])) (use (match_operand:V4SF 2 "nonimmediate_operand" "xm ,0 ,X ,X")) (clobber (reg:CC FLAGS_REG))] "TARGET_SSE_MATH && TARGET_MIX_SSE_I387 @@ -9638,9 +9639,9 @@ "ix86_expand_fp_absneg_operator (ABS, DFmode, operands); DONE;") (define_insn "*absnegdf2_mixed" - [(set (match_operand:DF 0 "nonimmediate_operand" "=Y#f,Y#f,f#Y,rm") + [(set (match_operand:DF 0 "nonimmediate_operand" "=Y,Y,f,rm") (match_operator:DF 3 "absneg_operator" - [(match_operand:DF 1 "nonimmediate_operand" "0 ,Y#f,0 ,0")])) + [(match_operand:DF 1 "nonimmediate_operand" "0 ,Y,0 ,0")])) (use (match_operand:V2DF 2 "nonimmediate_operand" "Ym ,0 ,X ,X")) (clobber (reg:CC FLAGS_REG))] "TARGET_SSE2 && TARGET_SSE_MATH && TARGET_MIX_SSE_I387 @@ -13167,8 +13168,8 @@ (define_insn "*fp_jcc_1_mixed" [(set (pc) (if_then_else (match_operator 0 "comparison_operator" - [(match_operand 1 "register_operand" "f#x,x#f") - (match_operand 2 "nonimmediate_operand" "f#x,xm#f")]) + [(match_operand 1 "register_operand" "f,x") + (match_operand 2 "nonimmediate_operand" "f,xm")]) (label_ref (match_operand 3 "" "")) (pc))) (clobber (reg:CCFP FPSR_REG)) @@ -13212,8 +13213,8 @@ (define_insn "*fp_jcc_2_mixed" [(set (pc) (if_then_else (match_operator 0 "comparison_operator" - [(match_operand 1 "register_operand" "f#x,x#f") - (match_operand 2 "nonimmediate_operand" "f#x,xm#f")]) + [(match_operand 1 "register_operand" "f,x") + (match_operand 2 "nonimmediate_operand" "f,xm")]) (pc) (label_ref (match_operand 3 "" "")))) (clobber (reg:CCFP FPSR_REG)) @@ -14532,10 +14533,10 @@ ;; so use special patterns for add and mull. (define_insn "*fop_sf_comm_mixed" - [(set (match_operand:SF 0 "register_operand" "=f#x,x#f") + [(set (match_operand:SF 0 "register_operand" "=f,x") (match_operator:SF 3 "binary_fp_operator" [(match_operand:SF 1 "nonimmediate_operand" "%0,0") - (match_operand:SF 2 "nonimmediate_operand" "fm#x,xm#f")]))] + (match_operand:SF 2 "nonimmediate_operand" "fm,xm")]))] "TARGET_MIX_SSE_I387 && COMMUTATIVE_ARITH_P (operands[3]) && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" @@ -14584,7 +14585,7 @@ [(set (match_operand:SF 0 "register_operand" "=f,f,x") (match_operator:SF 3 "binary_fp_operator" [(match_operand:SF 1 "nonimmediate_operand" "0,fm,0") - (match_operand:SF 2 "nonimmediate_operand" "fm,0,xm#f")]))] + (match_operand:SF 2 "nonimmediate_operand" "fm,0,xm")]))] "TARGET_MIX_SSE_I387 && !COMMUTATIVE_ARITH_P (operands[3]) && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" @@ -14678,10 +14679,10 @@ (set_attr "mode" "")]) (define_insn "*fop_df_comm_mixed" - [(set (match_operand:DF 0 "register_operand" "=f#Y,Y#f") + [(set (match_operand:DF 0 "register_operand" "=f,Y") (match_operator:DF 3 "binary_fp_operator" [(match_operand:DF 1 "nonimmediate_operand" "%0,0") - (match_operand:DF 2 "nonimmediate_operand" "fm#Y,Ym#f")]))] + (match_operand:DF 2 "nonimmediate_operand" "fm,Ym")]))] "TARGET_SSE2 && TARGET_MIX_SSE_I387 && COMMUTATIVE_ARITH_P (operands[3]) && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" @@ -14727,10 +14728,10 @@ (set_attr "mode" "DF")]) (define_insn "*fop_df_1_mixed" - [(set (match_operand:DF 0 "register_operand" "=f#Y,f#Y,Y#f") + [(set (match_operand:DF 0 "register_operand" "=f,f,Y") (match_operator:DF 3 "binary_fp_operator" [(match_operand:DF 1 "nonimmediate_operand" "0,fm,0") - (match_operand:DF 2 "nonimmediate_operand" "fm,0,Ym#f")]))] + (match_operand:DF 2 "nonimmediate_operand" "fm,0,Ym")]))] "TARGET_SSE2 && TARGET_SSE_MATH && TARGET_MIX_SSE_I387 && !COMMUTATIVE_ARITH_P (operands[3]) && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" @@ -15045,8 +15046,8 @@ }) (define_insn "*sqrtsf2_mixed" - [(set (match_operand:SF 0 "register_operand" "=f#x,x#f") - (sqrt:SF (match_operand:SF 1 "nonimmediate_operand" "0#x,xm#f")))] + [(set (match_operand:SF 0 "register_operand" "=f,x") + (sqrt:SF (match_operand:SF 1 "nonimmediate_operand" "0,xm")))] "TARGET_USE_FANCY_MATH_387 && TARGET_MIX_SSE_I387" "@ fsqrt @@ -15083,8 +15084,8 @@ }) (define_insn "*sqrtdf2_mixed" - [(set (match_operand:DF 0 "register_operand" "=f#Y,Y#f") - (sqrt:DF (match_operand:DF 1 "nonimmediate_operand" "0#Y,Ym#f")))] + [(set (match_operand:DF 0 "register_operand" "=f,Y") + (sqrt:DF (match_operand:DF 1 "nonimmediate_operand" "0,Ym")))] "TARGET_USE_FANCY_MATH_387 && TARGET_SSE2 && TARGET_MIX_SSE_I387" "@ fsqrt @@ -18581,11 +18582,11 @@ "if (! ix86_expand_fp_movcc (operands)) FAIL; DONE;") (define_insn "*movsfcc_1_387" - [(set (match_operand:SF 0 "register_operand" "=f#r,f#r,r#f,r#f") + [(set (match_operand:SF 0 "register_operand" "=f,f,r,r") (if_then_else:SF (match_operator 1 "fcmov_comparison_operator" [(reg FLAGS_REG) (const_int 0)]) - (match_operand:SF 2 "nonimmediate_operand" "f#r,0,rm#f,0") - (match_operand:SF 3 "nonimmediate_operand" "0,f#r,0,rm#f")))] + (match_operand:SF 2 "nonimmediate_operand" "f,0,rm,0") + (match_operand:SF 3 "nonimmediate_operand" "0,f,0,rm")))] "TARGET_80387 && TARGET_CMOVE && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)" "@ @@ -18605,11 +18606,11 @@ "if (! ix86_expand_fp_movcc (operands)) FAIL; DONE;") (define_insn "*movdfcc_1" - [(set (match_operand:DF 0 "register_operand" "=f#r,f#r,&r#f,&r#f") + [(set (match_operand:DF 0 "register_operand" "=f,f,&r,&r") (if_then_else:DF (match_operator 1 "fcmov_comparison_operator" [(reg FLAGS_REG) (const_int 0)]) - (match_operand:DF 2 "nonimmediate_operand" "f#r,0,rm#f,0") - (match_operand:DF 3 "nonimmediate_operand" "0,f#r,0,rm#f")))] + (match_operand:DF 2 "nonimmediate_operand" "f,0,rm,0") + (match_operand:DF 3 "nonimmediate_operand" "0,f,0,rm")))] "!TARGET_64BIT && TARGET_80387 && TARGET_CMOVE && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)" "@ @@ -18621,11 +18622,11 @@ (set_attr "mode" "DF")]) (define_insn "*movdfcc_1_rex64" - [(set (match_operand:DF 0 "register_operand" "=f#r,f#r,r#f,r#f") + [(set (match_operand:DF 0 "register_operand" "=f,f,r,r") (if_then_else:DF (match_operator 1 "fcmov_comparison_operator" [(reg FLAGS_REG) (const_int 0)]) - (match_operand:DF 2 "nonimmediate_operand" "f#r,0#r,rm#f,0#f") - (match_operand:DF 3 "nonimmediate_operand" "0#r,f#r,0#f,rm#f")))] + (match_operand:DF 2 "nonimmediate_operand" "f,0,rm,0") + (match_operand:DF 3 "nonimmediate_operand" "0,f,0,rm")))] "TARGET_64BIT && TARGET_80387 && TARGET_CMOVE && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)" "@ diff --git a/gcc/config/i386/predicates.md b/gcc/config/i386/predicates.md index d97f6fccbca..acc01eeb537 100644 --- a/gcc/config/i386/predicates.md +++ b/gcc/config/i386/predicates.md @@ -947,137 +947,3 @@ (define_predicate "absneg_operator" (match_code "abs,neg")) - -;;; Constraint definitions. -;;; Unused letters: -;;; B H TU W -;;; h jk vw z - -;; Integer register constraints. -;; It is not necessary to define 'r' here. -(define_register_constraint "R" "LEGACY_REGS" - "Legacy register---the eight integer registers available on all - i386 processors (@code{a}, @code{b}, @code{c}, @code{d}, - @code{si}, @code{di}, @code{bp}, @code{sp}).") - -(define_register_constraint "q" "TARGET_64BIT ? GENERAL_REGS : Q_REGS" - "Any register accessible as @code{@var{r}l}. In 32-bit mode, @code{a}, - @code{b}, @code{c}, and @code{d}; in 64-bit mode, any integer register.") - -(define_register_constraint "Q" "Q_REGS" - "Any register accessible as @code{@var{r}h}: @code{a}, @code{b}, - @code{c}, and @code{d}.") - -(define_register_constraint "l" "INDEX_REGS" - "@internal Any register that can be used as the index in a base+index - memory access: that is, any general register except the stack pointer.") - -(define_register_constraint "a" "AREG" - "The @code{a} register.") - -(define_register_constraint "b" "BREG" - "The @code{b} register.") - -(define_register_constraint "c" "CREG" - "The @code{c} register.") - -(define_register_constraint "d" "DREG" - "The @code{d} register.") - -(define_register_constraint "S" "SIREG" - "The @code{si} register.") - -(define_register_constraint "D" "DIREG" - "The @code{di} register.") - -(define_register_constraint "A" "AD_REGS" - "The @code{a} and @code{d} registers, as a pair (for instructions - that return half the result in one and half in the other).") - -;; Floating-point register constraints. -(define_register_constraint "f" - "TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387 ? FLOAT_REGS : NO_REGS" - "Any 80387 floating-point (stack) register.") - -(define_register_constraint "t" - "TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387 ? FP_TOP_REG : NO_REGS" - "Top of 80387 floating-point stack (@code{%st(0)}).") - -(define_register_constraint "u" - "TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387 ? FP_SECOND_REG : NO_REGS" - "Second from top of 80387 floating-point stack (@code{%st(1)}).") - -;; Vector registers (also used for plain floating point nowadays). -(define_register_constraint "y" "TARGET_MMX ? MMX_REGS : NO_REGS" - "Any MMX register.") - -(define_register_constraint "x" "TARGET_SSE ? SSE_REGS : NO_REGS" - "Any SSE register.") - -(define_register_constraint "Y" "TARGET_SSE2? SSE_REGS : NO_REGS" - "@internal Any SSE2 register.") - -;; Integer constant constraints. -(define_constraint "I" - "Integer constant in the range 0 @dots{} 31, for 32-bit shifts." - (and (match_code "const_int") - (match_test "ival >= 0 && ival <= 31"))) - -(define_constraint "J" - "Integer constant in the range 0 @dots{} 63, for 64-bit shifts." - (and (match_code "const_int") - (match_test "ival >= 0 && ival <= 63"))) - -(define_constraint "K" - "Signed 8-bit integer constant." - (and (match_code "const_int") - (match_test "ival >= -128 && ival <= 127"))) - -(define_constraint "L" - "@code{0xFF} or @code{0xFFFF}, for andsi as a zero-extending move." - (and (match_code "const_int") - (match_test "ival == 0xFF || ival == 0xFFFF"))) - -(define_constraint "M" - "0, 1, 2, or 3 (shifts for the @code{lea} instruction)." - (and (match_code "const_int") - (match_test "ival >= 0 && ival <= 3"))) - -(define_constraint "N" - "Unsigned 8-bit integer constant (for @code{in} and @code{out} - instructions)." - (and (match_code "const_int") - (match_test "ival >= 0 && ival <= 255"))) - -(define_constraint "O" - "@internal Integer constant in the range 0 @dots{} 127, for 128-bit shifts." - (and (match_code "const_int") - (match_test "ival >= 0 && ival <= 127"))) - -;; Floating-point constant constraints. -;; We allow constants even if TARGET_80387 isn't set, because the -;; stack register converter may need to load 0.0 into the function -;; value register (top of stack). -(define_constraint "G" - "Standard 80387 floating point constant." - (and (match_code "const_double") - (match_test "standard_80387_constant_p (op)"))) - -;; This can theoretically be any mode's CONST0_RTX. -(define_constraint "C" - "Standard SSE floating point constant." - (match_test "standard_sse_constant_p (op)")) - -;; Constant-or-symbol-reference constraints. - -(define_constraint "e" - "32-bit signed integer constant, or a symbolic reference known - to fit that range (for immediate operands in sign-extending x86-64 - instructions)." - (match_operand 0 "x86_64_immediate_operand")) - -(define_constraint "Z" - "32-bit unsigned integer constant, or a symbolic reference known - to fit that range (for immediate operands in zero-extending x86-64 - instructions)." - (match_operand 0 "x86_64_zext_immediate_operand")) diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index 2fb1c153366..81d4f354c61 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -6713,7 +6713,7 @@ ia64_set_sched_flags (spec_info_t spec_info) { int mask = 0; - if ((mflag_sched_br_data_spec && !reload_completed) + if ((mflag_sched_br_data_spec && !reload_completed && optimize > 0) || (mflag_sched_ar_data_spec && reload_completed)) { mask |= BEGIN_DATA; diff --git a/gcc/config/ia64/ia64.h b/gcc/config/ia64/ia64.h index 0e036dede93..a4e0c7eba2c 100644 --- a/gcc/config/ia64/ia64.h +++ b/gcc/config/ia64/ia64.h @@ -1891,12 +1891,12 @@ do { \ /* Use section-relative relocations for debugging offsets. Unlike other targets that fake this by putting the section VMA at 0, IA-64 has proper relocations for them. */ -#define ASM_OUTPUT_DWARF_OFFSET(FILE, SIZE, LABEL) \ - do { \ - fputs (integer_asm_op (SIZE, FALSE), FILE); \ - fputs ("@secrel(", FILE); \ - assemble_name (FILE, LABEL); \ - fputc (')', FILE); \ +#define ASM_OUTPUT_DWARF_OFFSET(FILE, SIZE, LABEL, SECTION) \ + do { \ + fputs (integer_asm_op (SIZE, FALSE), FILE); \ + fputs ("@secrel(", FILE); \ + assemble_name (FILE, LABEL); \ + fputc (')', FILE); \ } while (0) /* Emit a PC-relative relocation. */ diff --git a/gcc/config/ia64/ia64.opt b/gcc/config/ia64/ia64.opt index 1166020b0b6..d01dad22a03 100644 --- a/gcc/config/ia64/ia64.opt +++ b/gcc/config/ia64/ia64.opt @@ -143,3 +143,5 @@ If set, control speculative instructions will be choosen for schedule only if th msched-count-spec-in-critical-path Common Report Var(mflag_sched_count_spec_in_critical_path) Init(0) Count speculative dependencies while calculating priority of instructions + +; This comment is to ensure we retain the blank line above. diff --git a/gcc/config/ia64/t-hpux b/gcc/config/ia64/t-hpux index 7d294d17457..e7af793ceb8 100644 --- a/gcc/config/ia64/t-hpux +++ b/gcc/config/ia64/t-hpux @@ -9,11 +9,14 @@ MULTILIB_MATCHES = # Support routines for HP-UX 128 bit floats. -LIB2FUNCS_EXTRA=quadlib.c $(srcdir)/config/floatunsitf.c +LIB2FUNCS_EXTRA=quadlib.c $(srcdir)/config/floatunsitf.c unwind-hpux.c quadlib.c: $(srcdir)/config/ia64/quadlib.c cat $(srcdir)/config/ia64/quadlib.c > quadlib.c +unwind-hpux.c: $(srcdir)/config/ia64/unwind-hpux.c + cat $(srcdir)/config/ia64/unwind-hpux.c > unwind-hpux.c + # We get an undefined main when building a cross compiler because our # linkspec has "-u main" and we want that for linking but it makes # LIBGCC1_TEST fail because it uses -nostdlib -nostartup. diff --git a/gcc/config/ia64/unwind-hpux.c b/gcc/config/ia64/unwind-hpux.c new file mode 100644 index 00000000000..cfe341e5f1e --- /dev/null +++ b/gcc/config/ia64/unwind-hpux.c @@ -0,0 +1,39 @@ +/* Subroutine for _Unwind_* routines not provided by the standard + HP-UX unwind library. + + Copyright (C) 2006 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 2, or (at your option) +any later version. + +In addition to the permissions in the GNU General Public License, the +Free Software Foundation gives you unlimited permission to link the +compiled version of this file into combinations with other programs, +and to distribute those combinations without any restriction coming +from the use of this file. (The General Public License restrictions +do apply in other respects; for example, they cover modification of +the file, and distribution when not linked into a combine +executable.) + +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. */ + +#include + +uint64_t +_Unwind_GetIPInfo (struct _Unwind_Context *context, int *ip_before_insn) +{ + *ip_before_insn = 0; + return _Unwind_GetIP (context); +} diff --git a/gcc/config/m32c/addsub.md b/gcc/config/m32c/addsub.md index 6ac31dd1209..83587564ebd 100644 --- a/gcc/config/m32c/addsub.md +++ b/gcc/config/m32c/addsub.md @@ -53,7 +53,7 @@ stc\t%1,%0 mova\t%D2[%1],%0 add.w\t%2,%0" - [(set_attr "flags" "oszc,oszc,oszc,oszc,oszc,oszc,oszc,oszc,oszc,oszc")] + [(set_attr "flags" "oszc,oszc,oszc,oszc,oszc,oszc,n,n,n,oszc")] ) (define_insn "addpsi3" @@ -69,7 +69,7 @@ add.l\t%2,%0 mova\t%d2[%1],%0 mova\t%D2[%1],%0" - [(set_attr "flags" "oszc,oszc,oszc,oszc,oszc,*,*")] + [(set_attr "flags" "oszc,oszc,oszc,oszc,oszc,n,n")] ) (define_insn "subqi3" @@ -134,7 +134,7 @@ (neg:SI (match_operand:SI 1 "mra_operand" "0,0")))] "" "not.w %h0 | not.w %H0 | add.w #1,%h0 | adcf.w %H0" - [(set_attr "flags" "oszc,oszc")] + [(set_attr "flags" "x")] ) (define_insn "absqi2" diff --git a/gcc/config/m32c/bitops.md b/gcc/config/m32c/bitops.md index e7823b92c72..56d6a75e163 100644 --- a/gcc/config/m32c/bitops.md +++ b/gcc/config/m32c/bitops.md @@ -47,7 +47,7 @@ (match_operand:QI 2 "" "0")))] "TARGET_A16" "bset\t%0[%1]" - [(set_attr "flags" "sz")] + [(set_attr "flags" "n")] ) (define_insn "bset_hi" @@ -57,7 +57,7 @@ (const_int 1))] "TARGET_A16" "bset\t%0[%1]" - [(set_attr "flags" "sz")] + [(set_attr "flags" "n")] ) ;;---------------------------------------------------------------------- @@ -73,7 +73,7 @@ (const_int 0))] "TARGET_A16" "bclr\t%0[%1]" - [(set_attr "flags" "sz")] + [(set_attr "flags" "n")] ) @@ -183,18 +183,17 @@ (define_insn "iorqi3_24" - [(set (match_operand:QI 0 "mra_operand" "=Sd,Rqi,RqiSd,??Rmm,RqiSd,??Rmm") - (ior:QI (match_operand:QI 1 "mra_operand" "%0,0,0,0,0,0") - (match_operand:QI 2 "mrai_operand" "Ilb,Ilb,iRhlSd,iRhlSd,?Rmm,?Rmm")))] + [(set (match_operand:QI 0 "mra_operand" "=RqiSd,RqiSd,??Rmm,RqiSd,??Rmm") + (ior:QI (match_operand:QI 1 "mra_operand" "%0,0,0,0,0") + (match_operand:QI 2 "mrai_operand" "Ilb,iRhlSd,iRhlSd,?Rmm,?Rmm")))] "TARGET_A24" "@ bset\t%B2,%0 - bset\t%B2,%0 or.b\t%x2,%0 or.b\t%x2,%0 or.b\t%x2,%0 or.b\t%x2,%0" - [(set_attr "flags" "n,n,sz,sz,sz,sz")] + [(set_attr "flags" "n,sz,sz,sz,sz")] ) (define_insn "iorhi3_24" diff --git a/gcc/config/m32c/cond.md b/gcc/config/m32c/cond.md index ad8a5d655cb..9df4d041409 100644 --- a/gcc/config/m32c/cond.md +++ b/gcc/config/m32c/cond.md @@ -60,7 +60,9 @@ "@ stzx\t%1,%2,%0 stz\t%1,%0 - stnz\t%2,%0") + stnz\t%2,%0" + [(set_attr "flags" "n,n,n")] +) (define_insn "stzx_24_" [(set (match_operand:QHI 0 "mrai_operand" "=RraSd,RraSd,RraSd") @@ -71,7 +73,8 @@ "@ stzx.\t%1,%2,%0 stz.\t%1,%0 - stnz.\t%2,%0") + stnz.\t%2,%0" + [(set_attr "flags" "n,n,n")]) (define_insn_and_split "stzx_reversed" [(set (match_operand 0 "m32c_r0_operand" "") @@ -94,7 +97,8 @@ (compare (match_operand:QHPSI 0 "mra_operand" "RraSd") (match_operand:QHPSI 1 "mrai_operand" "RraSdi")))] "" - "cmp.\t%1,%0") + "* return m32c_output_compare(insn, operands); " + [(set_attr "flags" "oszc")]) (define_insn "b" [(set (pc) @@ -104,6 +108,7 @@ (pc)))] "" "j\t%l0" + [(set_attr "flags" "n")] ) ;; m32c_conditional_register_usage changes the setcc_gen_code array to @@ -119,7 +124,9 @@ [(set (match_operand:HI 0 "mra_operand" "=RhiSd") (any_cond:HI (reg:CC FLG_REGNO) (const_int 0)))] "TARGET_A24" - "sc\t%0") + "sc\t%0" + [(set_attr "flags" "n")] +) (define_expand "movqicc" [(set (match_operand:QI 0 "register_operand" "") @@ -148,10 +155,10 @@ ;; value. This pattern recovers the sign of the discarded value based ;; on the flags. Operand 0 is set to -1, 0, or 1. This is used for ;; the cmpstr pattern. For optimal code, this should be removed if -;; followed by a suitable CMP insn, as SCMPU sets the flags correctly -;; already (see the peephole following). This pattern is 7 bytes and -;; 5 cycles. If you don't need specific values, a 5/4 pattern can be -;; made with SCGT and BMLT to set the appropriate bits. +;; followed by a suitable CMP insn (see the peephole following). This +;; pattern is 7 bytes and 5 cycles. If you don't need specific +;; values, a 5/4 pattern can be made with SCGT and BMLT to set the +;; appropriate bits. (define_insn "cond_to_int" [(set (match_operand:HI 0 "mra_qi_operand" "=Rqi") @@ -162,7 +169,7 @@ (const_int -1))))] "TARGET_A24" "sceq\t%0\n\tbmgt\t1,%h0\n\tdec.w\t%0" - [(set_attr "flags" "sz")] + [(set_attr "flags" "x")] ) ;; A cond_to_int followed by a compare against zero is essentially a no-op. diff --git a/gcc/config/m32c/jump.md b/gcc/config/m32c/jump.md index 705bb32b985..5507fb46561 100644 --- a/gcc/config/m32c/jump.md +++ b/gcc/config/m32c/jump.md @@ -29,6 +29,7 @@ ; "jmpi.a\t%0" ; no 16 bit jmpi in r8c "push.b #0 | push.w\t%0 | rts" + [(set_attr "flags" "x")] ) (define_insn "indirect_jump_24" @@ -36,6 +37,7 @@ (match_operand:PSI 0 "register_operand" "Rpi"))] "TARGET_A24" "jmpi.a\t%0" + [(set_attr "flags" "n")] ) (define_expand "indirect_jump" @@ -56,6 +58,7 @@ (label_ref (match_operand 0 "" "")))] "" "jmp.a\t%l0" + [(set_attr "flags" "n")] ) ; No 16 bit indirect calls on r8c/m16c. */ @@ -70,6 +73,7 @@ switch (which_alternative) { case 1: return TARGET_A16 ? \"push.w %a0 | jsr.a\tm32c_jsri16\" : \"jsri.a\t%a0\"; case 2: return \"jsri.a\t%a0\"; }" + [(set_attr "flags" "x")] ) (define_insn "call_value" @@ -84,4 +88,5 @@ switch (which_alternative) { case 1: return TARGET_A16 ? \"push.w %a1 | jsr.a\tm32c_jsri16\" : \"jsri.a\t%a1\"; case 2: return \"jsri.a\t%a1\"; }" + [(set_attr "flags" "x,x,x")] ) diff --git a/gcc/config/m32c/m32c-protos.h b/gcc/config/m32c/m32c-protos.h index eb977961bd9..a7bcd334393 100644 --- a/gcc/config/m32c/m32c-protos.h +++ b/gcc/config/m32c/m32c-protos.h @@ -84,6 +84,7 @@ int m32c_memory_move_cost (MM, int, int); int m32c_mode_dependent_address (rtx); int m32c_modes_tieable_p (MM, MM); bool m32c_mov_ok (rtx *, MM); +char * m32c_output_compare (rtx, rtx *); int m32c_preferred_output_reload_class (rtx, int); int m32c_preferred_reload_class (rtx, int); int m32c_prepare_move (rtx *, MM); diff --git a/gcc/config/m32c/m32c.c b/gcc/config/m32c/m32c.c index 0f7269b094e..3625640c4e4 100644 --- a/gcc/config/m32c/m32c.c +++ b/gcc/config/m32c/m32c.c @@ -3291,9 +3291,8 @@ m32c_prepare_shift (rtx * operands, int scale, int shift_code) else /* We'll only use it for the shift, no point emitting a move. */ temp = operands[2]; - - if (TARGET_A16 && mode == SImode) + if (TARGET_A16 && GET_MODE_SIZE (mode) == 4) { /* The m16c has a limit of -16..16 for SI shifts, even when the shift count is in a register. Since there are so many targets @@ -3318,6 +3317,8 @@ m32c_prepare_shift (rtx * operands, int scale, int shift_code) rtx count; rtx label, lref, insn; + emit_move_insn (operands[0], operands[1]); + count = temp; label = gen_label_rtx (); lref = gen_rtx_LABEL_REF (VOIDmode, label); @@ -3328,8 +3329,8 @@ m32c_prepare_shift (rtx * operands, int scale, int shift_code) /* This is a left shift. We only need check positive counts. */ emit_jump_insn (gen_cbranchqi4 (gen_rtx_LE (VOIDmode, 0, 0), count, GEN_INT (16), label)); - emit_insn (func (operands[1], operands[1], GEN_INT (8))); - emit_insn (func (operands[1], operands[1], GEN_INT (8))); + emit_insn (func (operands[0], operands[0], GEN_INT (8))); + emit_insn (func (operands[0], operands[0], GEN_INT (8))); insn = emit_insn (gen_addqi3 (count, count, GEN_INT (-16))); emit_label_after (label, insn); } @@ -3338,12 +3339,14 @@ m32c_prepare_shift (rtx * operands, int scale, int shift_code) /* This is a right shift. We only need check negative counts. */ emit_jump_insn (gen_cbranchqi4 (gen_rtx_GE (VOIDmode, 0, 0), count, GEN_INT (-16), label)); - emit_insn (func (operands[1], operands[1], GEN_INT (-8))); - emit_insn (func (operands[1], operands[1], GEN_INT (-8))); + emit_insn (func (operands[0], operands[0], GEN_INT (-8))); + emit_insn (func (operands[0], operands[0], GEN_INT (-8))); insn = emit_insn (gen_addqi3 (count, count, GEN_INT (16))); emit_label_after (label, insn); } - + operands[1] = operands[0]; + emit_insn (func (operands[0], operands[0], count)); + return 1; } operands[2] = temp; @@ -3459,6 +3462,7 @@ m32c_expand_insv (rtx *operands) storing a zero, we want an AND mask, so invert it. */ if (INTVAL (operands[3]) == 0) { + /* Storing a zero, use an AND mask */ if (GET_MODE (op0) == HImode) mask ^= 0xffff; else @@ -3691,6 +3695,239 @@ m32c_emit_eh_epilogue (rtx ret_addr) emit_barrier (); } +/* Indicate which flags must be properly set for a given conditional. */ +static int +flags_needed_for_conditional (rtx cond) +{ + switch (GET_CODE (cond)) + { + case LE: + case GT: + return FLAGS_OSZ; + case LEU: + case GTU: + return FLAGS_ZC; + case LT: + case GE: + return FLAGS_OS; + case LTU: + case GEU: + return FLAGS_C; + case EQ: + case NE: + return FLAGS_Z; + default: + return FLAGS_N; + } +} + +#define DEBUG_CMP 0 + +/* Returns true if a compare insn is redundant because it would only + set flags that are already set correctly. */ +static bool +m32c_compare_redundant (rtx cmp, rtx *operands) +{ + int flags_needed; + int pflags; + rtx prev, pp, next; + rtx op0, op1, op2; +#if DEBUG_CMP + int prev_icode, i; +#endif + + op0 = operands[0]; + op1 = operands[1]; + op2 = operands[2]; + +#if DEBUG_CMP + fprintf(stderr, "\n\033[32mm32c_compare_redundant\033[0m\n"); + debug_rtx(cmp); + for (i=0; i<2; i++) + { + fprintf(stderr, "operands[%d] = ", i); + debug_rtx(operands[i]); + } +#endif + + next = next_nonnote_insn (cmp); + if (!next || !INSN_P (next)) + { +#if DEBUG_CMP + fprintf(stderr, "compare not followed by insn\n"); + debug_rtx(next); +#endif + return false; + } + if (GET_CODE (PATTERN (next)) == SET + && GET_CODE (XEXP ( PATTERN (next), 1)) == IF_THEN_ELSE) + { + next = XEXP (XEXP (PATTERN (next), 1), 0); + } + else if (GET_CODE (PATTERN (next)) == SET) + { + /* If this is a conditional, flags_needed will be something + other than FLAGS_N, which we test below. */ + next = XEXP (PATTERN (next), 1); + } + else + { +#if DEBUG_CMP + fprintf(stderr, "compare not followed by conditional\n"); + debug_rtx(next); +#endif + return false; + } +#if DEBUG_CMP + fprintf(stderr, "conditional is: "); + debug_rtx(next); +#endif + + flags_needed = flags_needed_for_conditional (next); + if (flags_needed == FLAGS_N) + { +#if DEBUG_CMP + fprintf(stderr, "compare not followed by conditional\n"); + debug_rtx(next); +#endif + return false; + } + + /* Compare doesn't set overflow and carry the same way that + arithmetic instructions do, so we can't replace those. */ + if (flags_needed & FLAGS_OC) + return false; + + prev = cmp; + do { + prev = prev_nonnote_insn (prev); + if (!prev) + { +#if DEBUG_CMP + fprintf(stderr, "No previous insn.\n"); +#endif + return false; + } + if (!INSN_P (prev)) + { +#if DEBUG_CMP + fprintf(stderr, "Previous insn is a non-insn.\n"); +#endif + return false; + } + pp = PATTERN (prev); + if (GET_CODE (pp) != SET) + { +#if DEBUG_CMP + fprintf(stderr, "Previous insn is not a SET.\n"); +#endif + return false; + } + pflags = get_attr_flags (prev); + + /* Looking up attributes of previous insns corrupted the recog + tables. */ + INSN_UID (cmp) = -1; + recog (PATTERN (cmp), cmp, 0); + + if (pflags == FLAGS_N + && reg_mentioned_p (op0, pp)) + { +#if DEBUG_CMP + fprintf(stderr, "intermediate non-flags insn uses op:\n"); + debug_rtx(prev); +#endif + return false; + } + } while (pflags == FLAGS_N); +#if DEBUG_CMP + fprintf(stderr, "previous flag-setting insn:\n"); + debug_rtx(prev); + debug_rtx(pp); +#endif + + if (GET_CODE (pp) == SET + && GET_CODE (XEXP (pp, 0)) == REG + && REGNO (XEXP (pp, 0)) == FLG_REGNO + && GET_CODE (XEXP (pp, 1)) == COMPARE) + { + /* Adjacent cbranches must have the same operands to be + redundant. */ + rtx pop0 = XEXP (XEXP (pp, 1), 0); + rtx pop1 = XEXP (XEXP (pp, 1), 1); +#if DEBUG_CMP + fprintf(stderr, "adjacent cbranches\n"); + debug_rtx(pop0); + debug_rtx(pop1); +#endif + if (rtx_equal_p (op0, pop0) + && rtx_equal_p (op1, pop1)) + return true; +#if DEBUG_CMP + fprintf(stderr, "prev cmp not same\n"); +#endif + return false; + } + + /* Else the previous insn must be a SET, with either the source or + dest equal to operands[0], and operands[1] must be zero. */ + + if (!rtx_equal_p (op1, const0_rtx)) + { +#if DEBUG_CMP + fprintf(stderr, "operands[1] not const0_rtx\n"); +#endif + return false; + } + if (GET_CODE (pp) != SET) + { +#if DEBUG_CMP + fprintf (stderr, "pp not set\n"); +#endif + return false; + } + if (!rtx_equal_p (op0, SET_SRC (pp)) + && !rtx_equal_p (op0, SET_DEST (pp))) + { +#if DEBUG_CMP + fprintf(stderr, "operands[0] not found in set\n"); +#endif + return false; + } + +#if DEBUG_CMP + fprintf(stderr, "cmp flags %x prev flags %x\n", flags_needed, pflags); +#endif + if ((pflags & flags_needed) == flags_needed) + return true; + + return false; +} + +/* Return the pattern for a compare. This will be commented out if + the compare is redundant, else a normal pattern is returned. Thus, + the assembler output says where the compare would have been. */ +char * +m32c_output_compare (rtx insn, rtx *operands) +{ + static char template[] = ";cmp.b\t%1,%0"; + /* ^ 5 */ + + template[5] = " bwll"[GET_MODE_SIZE(GET_MODE(operands[0]))]; + if (m32c_compare_redundant (insn, operands)) + { +#if DEBUG_CMP + fprintf(stderr, "cbranch: cmp not needed\n"); +#endif + return template; + } + +#if DEBUG_CMP + fprintf(stderr, "cbranch: cmp needed: `%s'\n", template); +#endif + return template + 1; +} + /* The Global `targetm' Variable. */ struct gcc_target targetm = TARGET_INITIALIZER; diff --git a/gcc/config/m32c/m32c.md b/gcc/config/m32c/m32c.md index f1930d4fdf3..cffa5ba961b 100644 --- a/gcc/config/m32c/m32c.md +++ b/gcc/config/m32c/m32c.md @@ -70,9 +70,13 @@ (define_insn "nop" [(const_int 0)] "" - "nop") + "nop" + [(set_attr "flags" "n")] +) (define_insn "no_insn" [(const_int 1)] "" - "") + "" + [(set_attr "flags" "n")] +) diff --git a/gcc/config/m32c/minmax.md b/gcc/config/m32c/minmax.md index de0ea4f20df..21d63dc7019 100644 --- a/gcc/config/m32c/minmax.md +++ b/gcc/config/m32c/minmax.md @@ -28,6 +28,7 @@ (match_operand:QI 2 "mrai_operand" "iRhlSdRaa,?Rmm,iRhlSdRaa,?Rmm,iRhlSd,?Rmm")))] "TARGET_A24" "min.b\t%2,%0" + [(set_attr "flags" "n")] ) (define_insn "sminhi3" @@ -36,6 +37,7 @@ (match_operand:HI 2 "mrai_operand" "iRhiSd,?Rmm,iRhiSd,?Rmm")))] "TARGET_A24" "min.w\t%2,%0" + [(set_attr "flags" "n")] ) (define_insn "smaxqi3" @@ -44,6 +46,7 @@ (match_operand:QI 2 "mrai_operand" "iRhlSdRaa,?Rmm,iRhlSdRaa,?Rmm,iRhlSd,?Rmm")))] "TARGET_A24" "max.b\t%2,%0" + [(set_attr "flags" "n")] ) (define_insn "smaxhi3" @@ -52,4 +55,5 @@ (match_operand:HI 2 "mrai_operand" "iRhiSd,?Rmm,iRhiSd,?Rmm")))] "TARGET_A24" "max.w\t%2,%0" + [(set_attr "flags" "n")] ) diff --git a/gcc/config/m32c/mov.md b/gcc/config/m32c/mov.md index 1a6878d0e7c..791ac5dcdbd 100644 --- a/gcc/config/m32c/mov.md +++ b/gcc/config/m32c/mov.md @@ -71,7 +71,7 @@ pop.w\t%0 pushc\t%1 popc\t%0" - [(set_attr "flags" "sz,sz,sz,*,*,*,*,*,*")] + [(set_attr "flags" "sz,sz,sz,n,n,n,n,n,n")] ) (define_expand "movhi" @@ -97,7 +97,7 @@ pushc\t%1 popc\t%0 #" - [(set_attr "flags" "sz,sz,*,*,*,*,*,*")] + [(set_attr "flags" "sz,sz,n,n,n,n,n,*")] ) @@ -182,6 +182,7 @@ (match_operand 0 "a_operand" "Raa"))] "" "push.l\t%0" + [(set_attr "flags" "n")] ) (define_insn "movsi_24" @@ -193,6 +194,7 @@ mov.l\t%1,%0 # push.l\t%1" + [(set_attr "flags" "sz,sz,*,n")] ) (define_expand "movdi" @@ -220,6 +222,7 @@ (match_operand:QI 0 "mrai_operand" "iRqiSd*Rmm"))] "" "push.b\t%0" + [(set_attr "flags" "n")] ) (define_expand "pushhi" @@ -240,6 +243,7 @@ "@ push.w\t%0 pushc\t%0" + [(set_attr "flags" "n,n")] ) (define_insn "pushhi_24" @@ -247,6 +251,7 @@ (match_operand:HI 0 "mrai_operand" "iRhiSd*Rmm"))] "TARGET_A24" "push.w\t%0" + [(set_attr "flags" "n")] ) ;(define_insn "pushpi" @@ -263,6 +268,7 @@ (match_operand:SI 0 "mrai_operand" "iRsiSd*Rmm"))] "TARGET_A24" "push.l\t%0" + [(set_attr "flags" "n")] ) (define_expand "pophi" @@ -283,6 +289,7 @@ "@ pop.w\t%0 popc\t%0" + [(set_attr "flags" "n,n")] ) (define_insn "pophi_24" @@ -290,6 +297,7 @@ (mem:HI (post_inc:PSI (reg:PSI SP_REGNO))))] "TARGET_A24" "pop.w\t%0" + [(set_attr "flags" "n")] ) (define_insn "poppsi" @@ -297,6 +305,7 @@ (mem:PSI (post_inc:PSI (reg:PSI SP_REGNO))))] "TARGET_A24" "popc\t%0" + [(set_attr "flags" "n")] ) @@ -316,7 +325,7 @@ "* if (REGNO(operands[0]) == 0) return \"exts.w\t%1\"; else return \"mov.w r1,r3 | sha.w #-8,r3 | sha.w #-7,r3\";" - [(set_attr "flags" "sz")] + [(set_attr "flags" "x")] ) (define_insn "extendpsisi2" @@ -324,6 +333,7 @@ (sign_extend:SI (match_operand:PSI 1 "mr_operand" "0")))] "" "; expand psi %1 to si %0" + [(set_attr "flags" "n")] ) (define_insn "zero_extendpsisi2" @@ -331,6 +341,7 @@ (zero_extend:SI (match_operand:PSI 1 "mr_operand" "0")))] "" "; expand psi %1 to si %0" + [(set_attr "flags" "n")] ) (define_insn "zero_extendhipsi2" @@ -338,6 +349,7 @@ (truncate:PSI (zero_extend:SI (match_operand:HI 1 "register_operand" "R03"))))] "" "mov.w\t%1,%0" + [(set_attr "flags" "sz")] ) (define_insn "zero_extendhisi2" @@ -345,6 +357,7 @@ (zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "0")))] "" "mov.w\t#0,%H0" + [(set_attr "flags" "x")] ) (define_insn "zero_extendqihi2" @@ -354,6 +367,7 @@ "@ mov.b\t#0,%H0 and.w\t#255,%0" + [(set_attr "flags" "x,x")] ) (define_insn "truncsipsi2_16" @@ -365,6 +379,7 @@ # ldc\t%1,%0 stc\t%1,%0" + [(set_attr "flags" "n,*,n,n")] ) (define_insn "trunchiqi2" @@ -372,6 +387,7 @@ (truncate:QI (match_operand:HI 1 "mra_qi_operand" "0")))] "" "; no-op trunc hi %1 to qi %0" + [(set_attr "flags" "n")] ) (define_insn "truncsipsi2_24" @@ -383,6 +399,7 @@ mov.l\t%1,%0 ldc\t%1,%0 stc\t%1,%0" + [(set_attr "flags" "n,sz,n,n")] ) (define_expand "truncsipsi2" diff --git a/gcc/config/m32c/muldiv.md b/gcc/config/m32c/muldiv.md index 038ca8a1268..a4bde6496ab 100644 --- a/gcc/config/m32c/muldiv.md +++ b/gcc/config/m32c/muldiv.md @@ -29,6 +29,7 @@ (match_operand 2 "immediate_operand" "i,i")))] "" "mul.b\t%2,%1" + [(set_attr "flags" "o")] ) ; Here is the pattern for registers and such. @@ -38,6 +39,7 @@ (sign_extend:HI (match_operand:QI 2 "mra_operand" "RqiSd,?Rmm,RqiSd,?Rmm,RhlSd,?Rmm"))))] "" "mul.b\t%2,%1" + [(set_attr "flags" "o")] ) ; Don't try to sign_extend a const_int. Same for all other multiplies. @@ -56,6 +58,7 @@ (match_operand 2 "immediate_operand" "i,i")))] "" "mulu.b\t%U2,%1" + [(set_attr "flags" "o")] ) (define_insn "umulqihi3_r" @@ -64,6 +67,7 @@ (zero_extend:HI (match_operand:QI 2 "mra_operand" "RqiSd,?Rmm,RqiSd,?Rmm,RhlSd,?Rmm"))))] "" "mulu.b\t%U2,%1" + [(set_attr "flags" "o")] ) (define_expand "umulqihi3" @@ -81,6 +85,7 @@ (match_operand 2 "immediate_operand" "i,i")))] "" "mul.w\t%2,%1" + [(set_attr "flags" "o")] ) (define_insn "mulhisi3_r" @@ -89,6 +94,7 @@ (sign_extend:SI (match_operand:HI 2 "mra_operand" "RhiSd,?Rmm,RhiSd,?Rmm"))))] "" "mul.w\t%2,%1" + [(set_attr "flags" "o")] ) (define_expand "mulhisi3" @@ -106,6 +112,7 @@ (match_operand 2 "immediate_operand" "i,i")))] "" "mulu.w\t%u2,%1" + [(set_attr "flags" "o")] ) (define_insn "umulhisi3_r" @@ -114,6 +121,7 @@ (zero_extend:SI (match_operand:HI 2 "mra_operand" "RhiSd,?Rmm,RhiSd,?Rmm"))))] "" "mulu.w\t%u2,%1" + [(set_attr "flags" "o")] ) (define_expand "umulhisi3" @@ -175,6 +183,7 @@ ] "0" "div.b\t%2" + [(set_attr "flags" "o")] ) (define_expand "udivmodqi4" @@ -199,6 +208,7 @@ ] "0" "divu.b\t%2" + [(set_attr "flags" "o")] ) (define_expand "divmodhi4" @@ -223,6 +233,7 @@ ] "" "div.w\t%2" + [(set_attr "flags" "o")] ) (define_expand "udivmodhi4" @@ -247,4 +258,5 @@ ] "" "divu.w\t%2" + [(set_attr "flags" "o")] ) diff --git a/gcc/config/m32c/prologue.md b/gcc/config/m32c/prologue.md index 7e78594badd..98c40acc3ca 100644 --- a/gcc/config/m32c/prologue.md +++ b/gcc/config/m32c/prologue.md @@ -43,6 +43,7 @@ ] "TARGET_A16" "enter\t%0" + [(set_attr "flags" "x")] ) (define_insn "prologue_enter_24" @@ -56,6 +57,7 @@ ] "TARGET_A24" "enter\t%0" + [(set_attr "flags" "x")] ) ; Just a comment, for debugging the assembler output. @@ -63,6 +65,7 @@ [(unspec_volatile [(const_int 0)] UNS_PROLOGUE_END)] "" "; end of prologue" + [(set_attr "flags" "n")] ) @@ -86,6 +89,7 @@ ] UNS_EH_EPILOGUE))] "" "jmp.a\t__m32c_eh_return" + [(set_attr "flags" "x")] ) (define_insn "epilogue_exitd" @@ -100,6 +104,7 @@ ] "" "exitd" + [(set_attr "flags" "x")] ) (define_insn "epilogue_reit" @@ -110,6 +115,7 @@ ] "" "reit" + [(set_attr "flags" "x")] ) (define_insn "epilogue_rts" @@ -117,12 +123,14 @@ ] "" "rts" + [(set_attr "flags" "x")] ) (define_insn "epilogue_start" [(unspec_volatile [(const_int 0)] UNS_EPILOGUE_START)] "" "; start of epilogue" + [(set_attr "flags" "n")] ) @@ -131,9 +139,13 @@ (define_insn "pushm" [(unspec [(match_operand 0 "const_int_operand" "i")] UNS_PUSHM)] "" - "pushm\t%p0") + "pushm\t%p0" + [(set_attr "flags" "n")] + ) (define_insn "popm" [(unspec [(match_operand 0 "const_int_operand" "i")] UNS_POPM)] "" - "popm\t%p0") + "popm\t%p0" + [(set_attr "flags" "n")] + ) diff --git a/gcc/config/m32c/shift.md b/gcc/config/m32c/shift.md index 3e07b25c5ed..6679f38ffe7 100644 --- a/gcc/config/m32c/shift.md +++ b/gcc/config/m32c/shift.md @@ -39,6 +39,7 @@ "@ sha.b\t%2,%0 mov.b\t%2,r1h\n\tsha.b\tr1h,%0" + [(set_attr "flags" "oszc,oszc")] ) (define_insn "ashrqi3_i" @@ -50,6 +51,7 @@ "@ sha.b\t%2,%0 mov.b\t%2,r1h\n\tsha.b\tr1h,%0" + [(set_attr "flags" "oszc,oszc")] ) (define_insn "lshrqi3_i" @@ -61,6 +63,7 @@ "@ shl.b\t%2,%0 mov.b\t%2,r1h\n\tshl.b\tr1h,%0" + [(set_attr "flags" "szc,szc")] ) @@ -105,6 +108,7 @@ "@ sha.w\t%2,%0 mov.b\t%2,r1h\n\tsha.w\tr1h,%0" + [(set_attr "flags" "oszc,oszc")] ) (define_insn "ashrhi3_i" @@ -116,6 +120,7 @@ "@ sha.w\t%2,%0 mov.b\t%2,r1h\n\tsha.w\tr1h,%0" + [(set_attr "flags" "oszc,oszc")] ) (define_insn "lshrhi3_i" @@ -127,6 +132,7 @@ "@ shl.w\t%2,%0 mov.b\t%2,r1h\n\tshl.w\tr1h,%0" + [(set_attr "flags" "szc,szc")] ) @@ -175,6 +181,7 @@ "@ sha.l\t%2,%0 mov.b\t%2,r1h\n\tsha.l\tr1h,%0" + [(set_attr "flags" "oszc,oszc")] ) (define_insn "ashrpsi3_i" @@ -186,6 +193,7 @@ "@ sha.l\t%2,%0 mov.b\t%2,r1h\n\tsha.l\tr1h,%0" + [(set_attr "flags" "oszc,oszc")] ) (define_insn "lshrpsi3_i" @@ -197,6 +205,7 @@ "@ shl.l\t%2,%0 mov.b\t%2,r1h\n\tshl.l\tr1h,%0" + [(set_attr "flags" "szc,szc")] ) @@ -248,7 +257,7 @@ "@ sha.l\t%2,%0 mov.b\t%2,r1h\n\tsha.l\tr1h,%0" - [(set_attr "flags" "sz,sz")] + [(set_attr "flags" "oszc,oszc")] ) (define_insn "ashrsi3_16" @@ -260,6 +269,7 @@ "@ sha.l\t%2,%0 mov.b\t%2,r1h\n\tsha.l\tr1h,%0" + [(set_attr "flags" "oszc,oszc")] ) (define_insn "lshrsi3_16" @@ -271,6 +281,7 @@ "@ shl.l\t%2,%0 mov.b\t%2,r1h\n\tshl.l\tr1h,%0" + [(set_attr "flags" "szc,szc")] ) diff --git a/gcc/config/mips/mips-protos.h b/gcc/config/mips/mips-protos.h index 1dc31f565eb..60f81ada5aa 100644 --- a/gcc/config/mips/mips-protos.h +++ b/gcc/config/mips/mips-protos.h @@ -105,8 +105,29 @@ enum mips_symbol_type { }; #define NUM_SYMBOL_TYPES (SYMBOL_64_LOW + 1) +/* Identifiers a style of $gp initialization sequence. + + LOADGP_NONE + No initialization sequence is needed. + + LOADGP_OLDABI + The o32 and o64 PIC sequence (the kind traditionally generated + by .cpload). + + LOADGP_NEWABI + The n32 and n64 PIC sequence (the kind traditionally generated + by .cpsetup). + + LOADGP_ABSOLUTE + The GNU absolute sequence, as generated by loadgp_noshared. */ +enum mips_loadgp_style { + LOADGP_NONE, + LOADGP_OLDABI, + LOADGP_NEWABI, + LOADGP_ABSOLUTE +}; + extern bool mips_symbolic_constant_p (rtx, enum mips_symbol_type *); -extern bool mips_atomic_symbolic_constant_p (rtx); extern int mips_regno_mode_ok_for_base_p (int, enum machine_mode, int); extern bool mips_stack_address_p (rtx, enum machine_mode); extern int mips_address_insns (rtx, enum machine_mode); @@ -116,8 +137,10 @@ extern int mips_idiv_insns (void); extern int fp_register_operand (rtx, enum machine_mode); extern int lo_operand (rtx, enum machine_mode); extern bool mips_legitimate_address_p (enum machine_mode, rtx, int); +extern rtx mips_split_symbol (rtx, rtx); extern rtx mips_unspec_address (rtx, enum mips_symbol_type); extern bool mips_legitimize_address (rtx *, enum machine_mode); +extern void mips_move_integer (rtx, rtx, unsigned HOST_WIDE_INT); extern bool mips_legitimize_move (enum machine_mode, rtx, rtx); extern int m16_uimm3_b (rtx, enum machine_mode); @@ -193,6 +216,7 @@ extern rtx mips_rewrite_small_data (rtx); extern HOST_WIDE_INT compute_frame_size (HOST_WIDE_INT); extern HOST_WIDE_INT mips_initial_elimination_offset (int, int); extern rtx mips_return_addr (int, rtx); +extern enum mips_loadgp_style mips_current_loadgp_style (void); extern void mips_expand_prologue (void); extern void mips_expand_epilogue (int); extern int mips_can_use_return_insn (void); diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 12394caf376..ffe047ea068 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -274,10 +274,10 @@ static bool mips_symbolic_address_p (enum mips_symbol_type, enum machine_mode); static bool mips_classify_address (struct mips_address_info *, rtx, enum machine_mode, int); static bool mips_cannot_force_const_mem (rtx); +static bool mips_use_blocks_for_constant_p (enum machine_mode, rtx); static int mips_symbol_insns (enum mips_symbol_type); static bool mips16_unextended_reference_p (enum machine_mode mode, rtx, rtx); static rtx mips_force_temporary (rtx, rtx); -static rtx mips_split_symbol (rtx, rtx); static rtx mips_unspec_offset_high (rtx, rtx, rtx, enum mips_symbol_type); static rtx mips_add_offset (rtx, rtx, HOST_WIDE_INT); static unsigned int mips_build_shift (struct mips_integer_op *, HOST_WIDE_INT); @@ -285,7 +285,6 @@ static unsigned int mips_build_lower (struct mips_integer_op *, unsigned HOST_WIDE_INT); static unsigned int mips_build_integer (struct mips_integer_op *, unsigned HOST_WIDE_INT); -static void mips_move_integer (rtx, unsigned HOST_WIDE_INT); static void mips_legitimize_const_move (enum machine_mode, rtx, rtx); static int m16_check_op (rtx, int, int, int); static bool mips_rtx_costs (rtx, int, int, int *); @@ -333,6 +332,7 @@ static section *mips_select_rtx_section (enum machine_mode, rtx, unsigned HOST_WIDE_INT); static section *mips_function_rodata_section (tree); static bool mips_in_small_data_p (tree); +static bool mips_use_anchors_for_symbol_p (rtx); static int mips_fpr_return_fields (tree, tree *); static bool mips_return_in_msb (tree); static rtx mips_return_fpr_pair (enum machine_mode mode, @@ -628,7 +628,7 @@ static GTY (()) int mips_output_filename_first_time = 1; /* mips_split_p[X] is true if symbols of type X can be split by mips_split_symbol(). */ -static bool mips_split_p[NUM_SYMBOL_TYPES]; +bool mips_split_p[NUM_SYMBOL_TYPES]; /* mips_lo_relocs[X] is the relocation to use when a symbol of type X appears in a LO_SUM. It can be null if such LO_SUMs aren't valid or @@ -1162,6 +1162,15 @@ static struct mips_rtx_cost_data const mips_rtx_cost_data[PROCESSOR_MAX] = #undef TARGET_EXTRA_LIVE_ON_ENTRY #define TARGET_EXTRA_LIVE_ON_ENTRY mips_extra_live_on_entry +#undef TARGET_MIN_ANCHOR_OFFSET +#define TARGET_MIN_ANCHOR_OFFSET -32768 +#undef TARGET_MAX_ANCHOR_OFFSET +#define TARGET_MAX_ANCHOR_OFFSET 32767 +#undef TARGET_USE_BLOCKS_FOR_CONSTANT_P +#define TARGET_USE_BLOCKS_FOR_CONSTANT_P mips_use_blocks_for_constant_p +#undef TARGET_USE_ANCHORS_FOR_SYMBOL_P +#define TARGET_USE_ANCHORS_FOR_SYMBOL_P mips_use_anchors_for_symbol_p + struct gcc_target targetm = TARGET_INITIALIZER; /* Classify symbol X, which must be a SYMBOL_REF or a LABEL_REF. */ @@ -1173,7 +1182,7 @@ mips_classify_symbol (rtx x) { if (TARGET_MIPS16) return SYMBOL_CONSTANT_POOL; - if (TARGET_ABICALLS) + if (TARGET_ABICALLS && !TARGET_ABSOLUTE_ABICALLS) return SYMBOL_GOT_LOCAL; return SYMBOL_GENERAL; } @@ -1188,13 +1197,8 @@ mips_classify_symbol (rtx x) if (TARGET_MIPS16) return SYMBOL_CONSTANT_POOL; - if (TARGET_ABICALLS) - return SYMBOL_GOT_LOCAL; - if (GET_MODE_SIZE (get_pool_mode (x)) <= mips_section_threshold) return SYMBOL_SMALL_DATA; - - return SYMBOL_GENERAL; } if (SYMBOL_REF_SMALL_P (x)) @@ -1203,32 +1207,43 @@ mips_classify_symbol (rtx x) if (TARGET_ABICALLS) { if (SYMBOL_REF_DECL (x) == 0) - return SYMBOL_REF_LOCAL_P (x) ? SYMBOL_GOT_LOCAL : SYMBOL_GOT_GLOBAL; - - /* There are three cases to consider: - - - o32 PIC (either with or without explicit relocs) - - n32/n64 PIC without explicit relocs - - n32/n64 PIC with explicit relocs - - In the first case, both local and global accesses will use an - R_MIPS_GOT16 relocation. We must correctly predict which of - the two semantics (local or global) the assembler and linker - will apply. The choice doesn't depend on the symbol's - visibility, so we deliberately ignore decl_visibility and - binds_local_p here. - - In the second case, the assembler will not use R_MIPS_GOT16 - relocations, but it chooses between local and global accesses - in the same way as for o32 PIC. - - In the third case we have more freedom since both forms of - access will work for any kind of symbol. However, there seems - little point in doing things differently. */ - if (DECL_P (SYMBOL_REF_DECL (x)) && TREE_PUBLIC (SYMBOL_REF_DECL (x))) - return SYMBOL_GOT_GLOBAL; + { + if (!SYMBOL_REF_LOCAL_P (x)) + return SYMBOL_GOT_GLOBAL; + } + else + { + /* Don't use GOT accesses for locally-binding symbols if + TARGET_ABSOLUTE_ABICALLS. Otherwise, there are three + cases to consider: + + - o32 PIC (either with or without explicit relocs) + - n32/n64 PIC without explicit relocs + - n32/n64 PIC with explicit relocs + + In the first case, both local and global accesses will use an + R_MIPS_GOT16 relocation. We must correctly predict which of + the two semantics (local or global) the assembler and linker + will apply. The choice doesn't depend on the symbol's + visibility, so we deliberately ignore decl_visibility and + binds_local_p here. + + In the second case, the assembler will not use R_MIPS_GOT16 + relocations, but it chooses between local and global accesses + in the same way as for o32 PIC. + + In the third case we have more freedom since both forms of + access will work for any kind of symbol. However, there seems + little point in doing things differently. */ + if (DECL_P (SYMBOL_REF_DECL (x)) + && TREE_PUBLIC (SYMBOL_REF_DECL (x)) + && !(TARGET_ABSOLUTE_ABICALLS + && targetm.binds_local_p (SYMBOL_REF_DECL (x)))) + return SYMBOL_GOT_GLOBAL; + } - return SYMBOL_GOT_LOCAL; + if (!TARGET_ABSOLUTE_ABICALLS) + return SYMBOL_GOT_LOCAL; } return SYMBOL_GENERAL; @@ -1256,7 +1271,7 @@ mips_split_const (rtx x, rtx *base, HOST_WIDE_INT *offset) /* Return true if SYMBOL is a SYMBOL_REF and OFFSET + SYMBOL points - to the same object as SYMBOL. */ + to the same object as SYMBOL, or to the same object_block. */ static bool mips_offset_within_object_p (rtx symbol, HOST_WIDE_INT offset) @@ -1274,6 +1289,13 @@ mips_offset_within_object_p (rtx symbol, HOST_WIDE_INT offset) && offset < int_size_in_bytes (TREE_TYPE (SYMBOL_REF_DECL (symbol)))) return true; + if (SYMBOL_REF_HAS_BLOCK_INFO_P (symbol) + && SYMBOL_REF_BLOCK (symbol) + && SYMBOL_REF_BLOCK_OFFSET (symbol) >= 0 + && ((unsigned HOST_WIDE_INT) offset + SYMBOL_REF_BLOCK_OFFSET (symbol) + < (unsigned HOST_WIDE_INT) SYMBOL_REF_BLOCK (symbol)->size)) + return true; + return false; } @@ -1357,17 +1379,6 @@ mips_symbolic_constant_p (rtx x, enum mips_symbol_type *symbol_type) } -/* Return true if X is a symbolic constant whose value is not split - into separate relocations. */ - -bool -mips_atomic_symbolic_constant_p (rtx x) -{ - enum mips_symbol_type type; - return mips_symbolic_constant_p (x, &type) && !mips_split_p[type]; -} - - /* This function is used to implement REG_MODE_OK_FOR_BASE_P. */ int @@ -1542,10 +1553,42 @@ mips_tls_symbol_ref_1 (rtx *x, void *data ATTRIBUTE_UNUSED) static bool mips_cannot_force_const_mem (rtx x) { - if (! TARGET_HAVE_TLS) - return false; + rtx base; + HOST_WIDE_INT offset; + + if (!TARGET_MIPS16) + { + /* As an optimization, reject constants that mips_legitimize_move + can expand inline. + + Suppose we have a multi-instruction sequence that loads constant C + into register R. If R does not get allocated a hard register, and + R is used in an operand that allows both registers and memory + references, reload will consider forcing C into memory and using + one of the instruction's memory alternatives. Returning false + here will force it to use an input reload instead. */ + if (GET_CODE (x) == CONST_INT) + return true; + + mips_split_const (x, &base, &offset); + if (symbolic_operand (base, VOIDmode) && SMALL_OPERAND (offset)) + return true; + } - return for_each_rtx (&x, &mips_tls_symbol_ref_1, 0); + if (TARGET_HAVE_TLS && for_each_rtx (&x, &mips_tls_symbol_ref_1, 0)) + return true; + + return false; +} + +/* Implement TARGET_USE_BLOCKS_FOR_CONSTANT_P. MIPS16 uses per-function + constant pools, but normal-mode code doesn't need to. */ + +static bool +mips_use_blocks_for_constant_p (enum machine_mode mode ATTRIBUTE_UNUSED, + rtx x ATTRIBUTE_UNUSED) +{ + return !TARGET_MIPS16; } /* Return the number of instructions needed to load a symbol of the @@ -1845,7 +1888,7 @@ mips_force_temporary (rtx dest, rtx value) /* Return a LO_SUM expression for ADDR. TEMP is as for mips_force_temporary and is used to load the high part into a register. */ -static rtx +rtx mips_split_symbol (rtx temp, rtx addr) { rtx high; @@ -2175,10 +2218,10 @@ mips_build_integer (struct mips_integer_op *codes, } -/* Move VALUE into register DEST. */ +/* Load VALUE into DEST, using TEMP as a temporary register if need be. */ -static void -mips_move_integer (rtx dest, unsigned HOST_WIDE_INT value) +void +mips_move_integer (rtx dest, rtx temp, unsigned HOST_WIDE_INT value) { struct mips_integer_op codes[MIPS_MAX_INTEGER_OPS]; enum machine_mode mode; @@ -2194,7 +2237,10 @@ mips_move_integer (rtx dest, unsigned HOST_WIDE_INT value) for (i = 1; i < cost; i++) { if (no_new_pseudos) - emit_move_insn (dest, x), x = dest; + { + emit_insn (gen_rtx_SET (VOIDmode, temp, x)); + x = temp; + } else x = force_reg (mode, x); x = gen_rtx_fmt_ee (codes[i].code, mode, x, GEN_INT (codes[i].value)); @@ -2213,30 +2259,24 @@ mips_legitimize_const_move (enum machine_mode mode, rtx dest, rtx src) { rtx base; HOST_WIDE_INT offset; - enum mips_symbol_type symbol_type; - /* Split moves of big integers into smaller pieces. In mips16 code, - it's better to force the constant into memory instead. */ - if (GET_CODE (src) == CONST_INT && !TARGET_MIPS16) + /* Split moves of big integers into smaller pieces. */ + if (splittable_const_int_operand (src, mode)) { - mips_move_integer (dest, INTVAL (src)); + mips_move_integer (dest, dest, INTVAL (src)); return; } - if (mips_tls_operand_p (src)) + /* Split moves of symbolic constants into high/low pairs. */ + if (splittable_symbolic_operand (src, mode)) { - emit_move_insn (dest, mips_legitimize_tls_address (src)); + emit_insn (gen_rtx_SET (VOIDmode, dest, mips_split_symbol (dest, src))); return; } - /* See if the symbol can be split. For mips16, this is often worse than - forcing it in the constant pool since it needs the single-register form - of addiu or daddiu. */ - if (!TARGET_MIPS16 - && mips_symbolic_constant_p (src, &symbol_type) - && mips_split_p[symbol_type]) + if (mips_tls_operand_p (src)) { - emit_move_insn (dest, mips_split_symbol (dest, src)); + emit_move_insn (dest, mips_legitimize_tls_address (src)); return; } @@ -4719,15 +4759,18 @@ override_options (void) target_flags &= ~MASK_ABICALLS; } - /* -fpic (-KPIC) is the default when TARGET_ABICALLS is defined. We need - to set flag_pic so that the LEGITIMATE_PIC_OPERAND_P macro will work. */ - /* ??? -non_shared turns off pic code generation, but this is not - implemented. */ if (TARGET_ABICALLS) { + /* We need to set flag_pic for executables as well as DSOs + because we may reference symbols that are not defined in + the final executable. (MIPS does not use things like + copy relocs, for example.) + + Also, there is a body of code that uses __PIC__ to distinguish + between -mabicalls and -mno-abicalls code. */ flag_pic = 1; if (mips_section_threshold > 0) - warning (0, "-G is incompatible with PIC code which is the default"); + warning (0, "%<-G%> is incompatible with %<-mabicalls%>"); } /* mips_split_addresses is a half-way house between explicit @@ -5763,7 +5806,6 @@ mips_file_start (void) /* Generate the pseudo ops that System V.4 wants. */ if (TARGET_ABICALLS) - /* ??? but do not want this (or want pic0) if -non-shared? */ fprintf (asm_out_file, "\t.abicalls\n"); if (TARGET_MIPS16) @@ -6459,22 +6501,55 @@ mips_output_cplocal (void) output_asm_insn (".cplocal %+", 0); } +/* Return the style of GP load sequence that is being used for the + current function. */ + +enum mips_loadgp_style +mips_current_loadgp_style (void) +{ + if (!TARGET_ABICALLS || cfun->machine->global_pointer == 0) + return LOADGP_NONE; + + if (TARGET_ABSOLUTE_ABICALLS) + return LOADGP_ABSOLUTE; + + return TARGET_NEWABI ? LOADGP_NEWABI : LOADGP_OLDABI; +} + +/* The __gnu_local_gp symbol. */ + +static GTY(()) rtx mips_gnu_local_gp; + /* If we're generating n32 or n64 abicalls, emit instructions to set up the global pointer. */ static void mips_emit_loadgp (void) { - if (TARGET_ABICALLS && TARGET_NEWABI && cfun->machine->global_pointer > 0) + rtx addr, offset, incoming_address; + + switch (mips_current_loadgp_style ()) { - rtx addr, offset, incoming_address; + case LOADGP_ABSOLUTE: + if (mips_gnu_local_gp == NULL) + { + mips_gnu_local_gp = gen_rtx_SYMBOL_REF (Pmode, "__gnu_local_gp"); + SYMBOL_REF_FLAGS (mips_gnu_local_gp) |= SYMBOL_FLAG_LOCAL; + } + emit_insn (gen_loadgp_noshared (mips_gnu_local_gp)); + break; + case LOADGP_NEWABI: addr = XEXP (DECL_RTL (current_function_decl), 0); offset = mips_unspec_address (addr, SYMBOL_GOTOFF_LOADGP); incoming_address = gen_rtx_REG (Pmode, PIC_FUNCTION_ADDR_REGNUM); emit_insn (gen_loadgp (offset, incoming_address)); if (!TARGET_EXPLICIT_RELOCS) emit_insn (gen_loadgp_blockage ()); + break; + + default: + break; } } @@ -6554,7 +6629,7 @@ mips_output_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED) HIGHEST_GP_SAVED == *FRAMEREG + FRAMESIZE + GPOFFSET => can find saved regs. */ } - if (TARGET_ABICALLS && !TARGET_NEWABI && cfun->machine->global_pointer > 0) + if (mips_current_loadgp_style () == LOADGP_OLDABI) { /* Handle the initialization of $gp for SVR4 PIC. */ if (!cfun->machine->all_noreorder_p) @@ -6741,12 +6816,12 @@ mips_expand_prologue (void) stack_pointer_rtx)) = 1; } + mips_emit_loadgp (); + /* If generating o32/o64 abicalls, save $gp on the stack. */ if (TARGET_ABICALLS && !TARGET_NEWABI && !current_function_is_leaf) emit_insn (gen_cprestore (GEN_INT (current_function_outgoing_args_size))); - mips_emit_loadgp (); - /* If we are profiling, make sure no instructions are scheduled before the call to mcount. */ @@ -7205,6 +7280,25 @@ mips_in_small_data_p (tree decl) size = int_size_in_bytes (TREE_TYPE (decl)); return (size > 0 && size <= mips_section_threshold); } + +/* Implement TARGET_USE_ANCHORS_FOR_SYMBOL_P. We don't want to use + anchors for small data: the GP register acts as an anchor in that + case. We also don't want to use them for PC-relative accesses, + where the PC acts as an anchor. */ + +static bool +mips_use_anchors_for_symbol_p (rtx symbol) +{ + switch (mips_classify_symbol (symbol)) + { + case SYMBOL_CONSTANT_POOL: + case SYMBOL_SMALL_DATA: + return false; + + default: + return true; + } +} /* See whether VALTYPE is a record whose fields should be returned in floating-point registers. If so, return the number of fields and @@ -10621,13 +10715,13 @@ mips_encode_section_info (tree decl, rtx rtl, int first) } } -/* Implement TARGET_EXTRA_LIVE_ON_ENTRY. TARGET_ABICALLS makes - PIC_FUNCTION_ADDR_REGNUM live on entry to a function. */ +/* Implement TARGET_EXTRA_LIVE_ON_ENTRY. PIC_FUNCTION_ADDR_REGNUM is live + on entry to a function when generating -mshared abicalls code. */ static void mips_extra_live_on_entry (bitmap regs) { - if (!TARGET_ABICALLS) + if (TARGET_ABICALLS && !TARGET_ABSOLUTE_ABICALLS) bitmap_set_bit (regs, PIC_FUNCTION_ADDR_REGNUM); } diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h index b0ae120d5be..3823963ebac 100644 --- a/gcc/config/mips/mips.h +++ b/gcc/config/mips/mips.h @@ -106,6 +106,7 @@ struct mips_cpu_info { int isa; }; +#ifndef USED_FOR_TARGET extern char mips_print_operand_punct[256]; /* print_operand punctuation chars */ extern const char *current_function_file; /* filename current function is in */ extern int num_source_filenames; /* current .file # */ @@ -117,6 +118,7 @@ extern int set_noat; /* # of nested .set noat's */ extern int set_volatile; /* # of nested .set volatile's */ extern int mips_branch_likely; /* emit 'l' after br (branch likely) */ extern int mips_dbx_regno[]; /* Map register # to debug register # */ +extern bool mips_split_p[]; extern GTY(()) rtx cmp_operands[2]; extern enum processor_type mips_arch; /* which cpu to codegen for */ extern enum processor_type mips_tune; /* which cpu to schedule for */ @@ -127,6 +129,7 @@ extern const struct mips_cpu_info mips_cpu_info_table[]; extern const struct mips_cpu_info *mips_arch_info; extern const struct mips_cpu_info *mips_tune_info; extern const struct mips_rtx_cost_data *mips_cost; +#endif /* Macros to silence warnings about numbers being signed in traditional C and unsigned in ISO C when compiled on 32-bit hosts. */ @@ -146,6 +149,19 @@ extern const struct mips_rtx_cost_data *mips_cost; #define TARGET_SPLIT_CALLS \ (TARGET_EXPLICIT_RELOCS && TARGET_ABICALLS && !TARGET_NEWABI) +/* True if we're generating a form of -mabicalls in which we can use + operators like %hi and %lo to refer to locally-binding symbols. + We can only do this for -mno-shared, and only then if we can use + relocation operations instead of assembly macros. It isn't really + worth using absolute sequences for 64-bit symbols because GOT + accesses are so much shorter. */ + +#define TARGET_ABSOLUTE_ABICALLS \ + (TARGET_ABICALLS \ + && !TARGET_SHARED \ + && TARGET_EXPLICIT_RELOCS \ + && !ABI_HAS_64BIT_SYMBOLS) + /* True if we can optimize sibling calls. For simplicity, we only handle cases in which call_insn_operand will reject invalid sibcall addresses. There are two cases in which this isn't true: @@ -817,6 +833,7 @@ extern const struct mips_rtx_cost_data *mips_cost; %(subtarget_asm_debugging_spec) \ %{mabi=*} %{!mabi*: %(asm_abi_default_spec)} \ %{mgp32} %{mgp64} %{march=*} %{mxgot:-xgot} \ +%{mshared} %{mno-shared} \ %{msym32} %{mno-sym32} \ %{mtune=*} %{v} \ %(subtarget_asm_spec)" @@ -2278,6 +2295,26 @@ typedef struct mips_args { its operands. */ #define MIPS_BRANCH(OPCODE, OPERANDS) \ "%*" OPCODE "%?\t" OPERANDS "%/" + +/* Return the asm template for a call. INSN is the instruction's mnemonic + ("j" or "jal"), OPERANDS are its operands, and OPNO is the operand number + of the target. + + When generating -mabicalls without explicit relocation operators, + all calls should use assembly macros. Otherwise, all indirect + calls should use "jr" or "jalr"; we will arrange to restore $gp + afterwards if necessary. Finally, we can only generate direct + calls for -mabicalls by temporarily switching to non-PIC mode. */ +#define MIPS_CALL(INSN, OPERANDS, OPNO) \ + (TARGET_ABICALLS && !TARGET_EXPLICIT_RELOCS \ + ? "%*" INSN "\t%" #OPNO "%/" \ + : REG_P (OPERANDS[OPNO]) \ + ? "%*" INSN "r\t%" #OPNO "%/" \ + : TARGET_ABICALLS \ + ? (".option\tpic0\n\t" \ + "%*" INSN "\t%" #OPNO "%/\n\t" \ + ".option\tpic2") \ + : "%*" INSN "\t%" #OPNO "%/") /* Control the assembler format that we output. */ diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md index cc327f95aee..32d0c418697 100644 --- a/gcc/config/mips/mips.md +++ b/gcc/config/mips/mips.md @@ -166,14 +166,15 @@ ;; This attribute is YES if the instruction is a jal macro (not a ;; real jal instruction). ;; -;; jal is always a macro in SVR4 PIC since it includes an instruction to -;; restore $gp. Direct jals are also macros in NewABI PIC since they -;; load the target address into $25. +;; jal is always a macro for o32 and o64 abicalls because it includes an +;; instruction to restore $gp. Direct jals are also macros for -mshared +;; abicalls because they first load the target address into $25. (define_attr "jal_macro" "no,yes" (cond [(eq_attr "jal" "direct") - (symbol_ref "TARGET_ABICALLS != 0") + (symbol_ref "TARGET_ABICALLS + && (TARGET_OLDABI || !TARGET_ABSOLUTE_ABICALLS)") (eq_attr "jal" "indirect") - (symbol_ref "(TARGET_ABICALLS && !TARGET_NEWABI) != 0")] + (symbol_ref "TARGET_ABICALLS && TARGET_OLDABI")] (const_string "no"))) ;; Classification of each insn. @@ -3194,6 +3195,28 @@ (set_attr "mode" "") (set_attr "length" "8")]) +;; Allow combine to split complex const_int load sequences, using operand 2 +;; to store the intermediate results. See move_operand for details. +(define_split + [(set (match_operand:GPR 0 "register_operand") + (match_operand:GPR 1 "splittable_const_int_operand")) + (clobber (match_operand:GPR 2 "register_operand"))] + "" + [(const_int 0)] +{ + mips_move_integer (operands[0], operands[2], INTVAL (operands[1])); + DONE; +}) + +;; Likewise, for symbolic operands. +(define_split + [(set (match_operand:P 0 "register_operand") + (match_operand:P 1 "splittable_symbolic_operand")) + (clobber (match_operand:P 2 "register_operand"))] + "" + [(set (match_dup 0) (match_dup 1))] + { operands[1] = mips_split_symbol (operands[2], operands[1]); }) + ;; 64-bit integer moves ;; Unlike most other insns, the move insns can't be split with @@ -3960,7 +3983,7 @@ (define_insn_and_split "loadgp" [(unspec_volatile [(match_operand 0 "" "") (match_operand 1 "register_operand" "")] UNSPEC_LOADGP)] - "TARGET_ABICALLS && TARGET_NEWABI" + "mips_current_loadgp_style () == LOADGP_NEWABI" "#" "" [(set (match_dup 2) (match_dup 3)) @@ -3974,6 +3997,19 @@ } [(set_attr "length" "12")]) +;; Likewise, for -mno-shared code. Operand 0 is the __gnu_local_gp symbol. +(define_insn_and_split "loadgp_noshared" + [(unspec_volatile [(match_operand 0 "" "")] UNSPEC_LOADGP)] + "mips_current_loadgp_style () == LOADGP_ABSOLUTE" + "#" + "" + [(const_int 0)] +{ + emit_move_insn (pic_offset_table_rtx, operands[0]); + DONE; +} + [(set_attr "length" "8")]) + ;; The use of gp is hidden when not using explicit relocations. ;; This blockage instruction prevents the gp load from being ;; scheduled after an implicit use of gp. It also prevents @@ -5038,9 +5074,7 @@ [(call (mem:SI (match_operand 0 "call_insn_operand" "j,S")) (match_operand 1 "" ""))] "TARGET_SIBCALLS && SIBLING_CALL_P (insn)" - "@ - %*jr\t%0%/ - %*j\t%0%/" + { return MIPS_CALL ("j", operands, 0); } [(set_attr "type" "call")]) (define_expand "sibcall_value" @@ -5060,9 +5094,7 @@ (call (mem:SI (match_operand 1 "call_insn_operand" "j,S")) (match_operand 2 "" "")))] "TARGET_SIBCALLS && SIBLING_CALL_P (insn)" - "@ - %*jr\t%1%/ - %*j\t%1%/" + { return MIPS_CALL ("j", operands, 1); } [(set_attr "type" "call")]) (define_insn "sibcall_value_multiple_internal" @@ -5073,9 +5105,7 @@ (call (mem:SI (match_dup 1)) (match_dup 2)))] "TARGET_SIBCALLS && SIBLING_CALL_P (insn)" - "@ - %*jr\t%1%/ - %*j\t%1%/" + { return MIPS_CALL ("j", operands, 1); } [(set_attr "type" "call")]) (define_expand "call" @@ -5131,7 +5161,7 @@ (match_operand 1 "" "")) (clobber (reg:SI 31))] "" - { return TARGET_SPLIT_CALLS ? "#" : "%*jal\t%0%/"; } + { return TARGET_SPLIT_CALLS ? "#" : MIPS_CALL ("jal", operands, 0); } "reload_completed && TARGET_SPLIT_CALLS && (operands[2] = insn)" [(const_int 0)] { @@ -5144,12 +5174,12 @@ (set_attr "extended_mips16" "no,yes")]) (define_insn "call_split" - [(call (mem:SI (match_operand 0 "call_insn_operand" "c")) + [(call (mem:SI (match_operand 0 "call_insn_operand" "cS")) (match_operand 1 "" "")) (clobber (reg:SI 31)) (clobber (reg:SI 28))] "TARGET_SPLIT_CALLS" - "%*jalr\t%0%/" + { return MIPS_CALL ("jal", operands, 0); } [(set_attr "type" "call")]) (define_expand "call_value" @@ -5171,7 +5201,7 @@ (match_operand 2 "" ""))) (clobber (reg:SI 31))] "" - { return TARGET_SPLIT_CALLS ? "#" : "%*jal\t%1%/"; } + { return TARGET_SPLIT_CALLS ? "#" : MIPS_CALL ("jal", operands, 1); } "reload_completed && TARGET_SPLIT_CALLS && (operands[3] = insn)" [(const_int 0)] { @@ -5186,12 +5216,12 @@ (define_insn "call_value_split" [(set (match_operand 0 "register_operand" "=df") - (call (mem:SI (match_operand 1 "call_insn_operand" "c")) + (call (mem:SI (match_operand 1 "call_insn_operand" "cS")) (match_operand 2 "" ""))) (clobber (reg:SI 31)) (clobber (reg:SI 28))] "TARGET_SPLIT_CALLS" - "%*jalr\t%1%/" + { return MIPS_CALL ("jal", operands, 1); } [(set_attr "type" "call")]) ;; See comment for call_internal. @@ -5204,7 +5234,7 @@ (match_dup 2))) (clobber (reg:SI 31))] "" - { return TARGET_SPLIT_CALLS ? "#" : "%*jal\t%1%/"; } + { return TARGET_SPLIT_CALLS ? "#" : MIPS_CALL ("jal", operands, 1); } "reload_completed && TARGET_SPLIT_CALLS && (operands[4] = insn)" [(const_int 0)] { @@ -5219,7 +5249,7 @@ (define_insn "call_value_multiple_split" [(set (match_operand 0 "register_operand" "=df") - (call (mem:SI (match_operand 1 "call_insn_operand" "c")) + (call (mem:SI (match_operand 1 "call_insn_operand" "cS")) (match_operand 2 "" ""))) (set (match_operand 3 "register_operand" "=df") (call (mem:SI (match_dup 1)) @@ -5227,7 +5257,7 @@ (clobber (reg:SI 31)) (clobber (reg:SI 28))] "TARGET_SPLIT_CALLS" - "%*jalr\t%1%/" + { return MIPS_CALL ("jal", operands, 1); } [(set_attr "type" "call")]) ;; Call subroutine returning any type. diff --git a/gcc/config/mips/mips.opt b/gcc/config/mips/mips.opt index 737f5edecb1..7f8214bb146 100644 --- a/gcc/config/mips/mips.opt +++ b/gcc/config/mips/mips.opt @@ -25,7 +25,7 @@ Target RejectNegative Joined mabicalls Target Report Mask(ABICALLS) -Use SVR4-style PIC +Generate code that can be used in SVR4-style dynamic objects mad Target Report Var(TARGET_MAD) @@ -185,6 +185,10 @@ mpaired-single Target Report Mask(PAIRED_SINGLE_FLOAT) Use paired-single floating-point instructions +mshared +Target Report Var(TARGET_SHARED) Init(1) +When generating -mabicalls code, make the code suitable for use in shared libraries + msingle-float Target Report RejectNegative Mask(SINGLE_FLOAT) Restrict the use of hardware floating-point instructions to 32-bit operations diff --git a/gcc/config/mips/predicates.md b/gcc/config/mips/predicates.md index d93621d7d72..9a6756c20a2 100644 --- a/gcc/config/mips/predicates.md +++ b/gcc/config/mips/predicates.md @@ -103,6 +103,16 @@ switch (symbol_type) { case SYMBOL_GENERAL: + /* We can only use direct calls for TARGET_ABSOLUTE_ABICALLS if we + are sure that the target function does not need $25 to be live + on entry. This is true for any locally-defined function because + any such function will use %hi/%lo accesses to set up $gp. */ + if (TARGET_ABSOLUTE_ABICALLS + && !(GET_CODE (op) == SYMBOL_REF + && SYMBOL_REF_DECL (op) + && !DECL_EXTERNAL (SYMBOL_REF_DECL (op)))) + return false; + /* If -mlong-calls, force all calls to use register addressing. Also, if this function has the long_call attribute, we must use register addressing. */ @@ -125,30 +135,85 @@ (ior (match_operand 0 "const_call_insn_operand") (match_operand 0 "register_operand"))) +;; A legitimate CONST_INT operand that takes more than one instruction +;; to load. +(define_predicate "splittable_const_int_operand" + (match_code "const_int") +{ + /* When generating mips16 code, LEGITIMATE_CONSTANT_P rejects + CONST_INTs that can't be loaded using simple insns. */ + if (TARGET_MIPS16) + return false; + + /* Don't handle multi-word moves this way; we don't want to introduce + the individual word-mode moves until after reload. */ + if (GET_MODE_SIZE (mode) > UNITS_PER_WORD) + return false; + + /* Otherwise check whether the constant can be loaded in a single + instruction. */ + return !LUI_INT (op) && !SMALL_INT (op) && !SMALL_INT_UNSIGNED (op); +}) + +;; A legitimate symbolic operand that takes more than one instruction +;; to load. +(define_predicate "splittable_symbolic_operand" + (match_code "const,symbol_ref,label_ref") +{ + enum mips_symbol_type symbol_type; + return (mips_symbolic_constant_p (op, &symbol_type) + && mips_split_p[symbol_type]); +}) + (define_predicate "move_operand" (match_operand 0 "general_operand") { + enum mips_symbol_type symbol_type; + + /* The thinking here is as follows: + + (1) The move expanders should split complex load sequences into + individual instructions. Those individual instructions can + then be optimized by all rtl passes. + + (2) The target of pre-reload load sequences should not be used + to store temporary results. If the target register is only + assigned one value, reload can rematerialize that value + on demand, rather than spill it to the stack. + + (3) If we allowed pre-reload passes like combine and cse to recreate + complex load sequences, we would want to be able to split the + sequences before reload as well, so that the pre-reload scheduler + can see the individual instructions. This falls foul of (2); + the splitter would be forced to reuse the target register for + intermediate results. + + (4) We want to define complex load splitters for combine. These + splitters can request a temporary scratch register, which avoids + the problem in (2). They allow things like: + + (set (reg T1) (high SYM)) + (set (reg T2) (low (reg T1) SYM)) + (set (reg X) (plus (reg T2) (const_int OFFSET))) + + to be combined into: + + (set (reg T3) (high SYM+OFFSET)) + (set (reg X) (lo_sum (reg T3) SYM+OFFSET)) + + if T2 is only used this once. */ switch (GET_CODE (op)) { case CONST_INT: - /* When generating mips16 code, LEGITIMATE_CONSTANT_P rejects - CONST_INTs that can't be loaded using simple insns. */ - if (TARGET_MIPS16) - return true; - - /* When generating 32-bit code, allow DImode move_operands to - match arbitrary constants. We split them after reload. */ - if (!TARGET_64BIT && mode == DImode) - return true; - - /* Otherwise check whether the constant can be loaded in a single - instruction. */ - return LUI_INT (op) || SMALL_INT (op) || SMALL_INT_UNSIGNED (op); + return !splittable_const_int_operand (op, mode); case CONST: case SYMBOL_REF: case LABEL_REF: - return CONST_GP_P (op) || mips_atomic_symbolic_constant_p (op); + if (CONST_GP_P (op)) + return true; + return (mips_symbolic_constant_p (op, &symbol_type) + && !mips_split_p[symbol_type]); default: return true; diff --git a/gcc/config/pa/pa64-hpux.h b/gcc/config/pa/pa64-hpux.h index 9f51f66ae31..dc589230bf8 100644 --- a/gcc/config/pa/pa64-hpux.h +++ b/gcc/config/pa/pa64-hpux.h @@ -56,25 +56,25 @@ Boston, MA 02110-1301, USA. */ #if ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_GNU_LD) #define LIB_SPEC \ "%{!shared:\ - %{!p:%{!pg: %{static:-lpthread} -lc\ + %{!p:%{!pg: %{static|mt|pthread:-lpthread} -lc\ %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\ %{p:%{!pg:%{static:%{!mhp-ld:-a shared}%{mhp-ld:-a archive_shared}}\ - -lprof %{static:-a archive -lpthread} -lc\ + -lprof %{static:-a archive} %{static|mt|pthread:-lpthread} -lc\ %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\ %{pg:%{static:%{!mhp-ld:-a shared}%{mhp-ld:-a archive_shared}}\ - -lgprof %{static:-a archive -lpthread} -lc\ + -lgprof %{static:-a archive} %{static|mt|pthread:-lpthread} -lc\ %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\ /usr/lib/pa20_64/milli.a" #else #define LIB_SPEC \ "%{!shared:\ - %{!p:%{!pg: %{static:-lpthread} -lc\ + %{!p:%{!pg: %{static|mt|pthread:-lpthread} -lc\ %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\ %{p:%{!pg:%{static:%{mgnu-ld:-a shared}%{!mgnu-ld:-a archive_shared}}\ - -lprof %{static:-a archive -lpthread} -lc\ + -lprof %{static:-a archive} %{shatic|mt|pthread:-lpthread} -lc\ %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\ %{pg:%{static:%{mgnu-ld:-a shared}%{!mgnu-ld:-a archive_shared}}\ - -lgprof %{static:-a archive -lpthread} -lc\ + -lgprof %{static:-a archive} %{static|mt|pthread:-lpthread} -lc\ %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\ /usr/lib/pa20_64/milli.a" #endif diff --git a/gcc/config/rs6000/constraints.md b/gcc/config/rs6000/constraints.md new file mode 100644 index 00000000000..a7d46611813 --- /dev/null +++ b/gcc/config/rs6000/constraints.md @@ -0,0 +1,162 @@ +;; Constraint definitions for RS6000 +;; Copyright (C) 2006 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 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. + +;; Register constraints + +(define_register_constraint "f" "TARGET_HARD_FLOAT && TARGET_FPRS + ? FLOAT_REGS : NO_REGS" + "@internal") + +(define_register_constraint "b" "BASE_REGS" + "@internal") + +(define_register_constraint "h" "SPECIAL_REGS" + "@internal") + +(define_register_constraint "q" "MQ_REGS" + "@internal") + +(define_register_constraint "c" "CTR_REGS" + "@internal") + +(define_register_constraint "l" "LINK_REGS" + "@internal") + +(define_register_constraint "v" "ALTIVEC_REGS" + "@internal") + +(define_register_constraint "x" "CR0_REGS" + "@internal") + +(define_register_constraint "y" "CR_REGS" + "@internal") + +(define_register_constraint "z" "XER_REGS" + "@internal") + +;; Integer constraints + +(define_constraint "I" + "A signed 16-bit constant" + (and (match_code "const_int") + (match_test "(unsigned HOST_WIDE_INT) (ival + 0x8000) < 0x10000"))) + +(define_constraint "J" + "high-order 16 bits nonzero" + (and (match_code "const_int") + (match_test "(ival & (~ (unsigned HOST_WIDE_INT) 0xffff0000)) == 0"))) + +(define_constraint "K" + "low-order 16 bits nonzero" + (and (match_code "const_int") + (match_test "(ival & (~ (HOST_WIDE_INT) 0xffff)) == 0"))) + +(define_constraint "L" + "signed 16-bit constant shifted left 16 bits" + (and (match_code "const_int") + (match_test "((ival & 0xffff) == 0 + && (ival >> 31 == -1 || ival >> 31 == 0))"))) + +(define_constraint "M" + "constant greater than 31" + (and (match_code "const_int") + (match_test "ival > 31"))) + +(define_constraint "N" + "positive constant that is an exact power of two" + (and (match_code "const_int") + (match_test "ival > 0 && exact_log2 (ival) >= 0"))) + +(define_constraint "O" + "constant zero" + (and (match_code "const_int") + (match_test "ival == 0"))) + +(define_constraint "P" + "constant whose negation is signed 16-bit constant" + (and (match_code "const_int") + (match_test "(unsigned HOST_WIDE_INT) ((- ival) + 0x8000) < 0x10000"))) + +;; Floating-point constraints + +(define_constraint "G" + "Constant that can be copied into GPR with two insns for DF/DI + and one for SF." + (and (match_code "const_double") + (match_test "num_insns_constant (op, mode) + == (mode == SFmode ? 1 : 2)"))) + +(define_constraint "H" + "DF/DI constant that takes three insns." + (and (match_code "const_double") + (match_test "num_insns_constant (op, mode) == 3"))) + +;; Memory constraints + +(define_memory_constraint "Q" + "Memory operand that is just an offset from a reg" + (and (match_code "mem") + (match_test "GET_CODE (XEXP (op, 0)) == REG"))) + +(define_memory_constraint "Y" + "Indexed or word-aligned displacement memory operand" + (match_operand 0 "word_offset_memref_operand")) + +(define_memory_constraint "Z" + "Indexed or indirect memory operand" + (match_operand 0 "indexed_or_indirect_operand")) + +;; Address constraints + +(define_address_constraint "a" + "Indexed or indirect address operand" + (match_operand 0 "indexed_or_indirect_address")) + +(define_constraint "R" + "AIX TOC entry" + (match_test "legitimate_constant_pool_address_p (op)")) + +;; General constraints + +(define_constraint "S" + "Constant that can be placed into a 64-bit mask operand" + (match_operand 0 "mask64_operand")) + +(define_constraint "T" + "Constant that can be placed into a 32-bit mask operand" + (match_operand 0 "mask_operand")) + +(define_constraint "U" + "V.4 small data reference" + (and (match_test "DEFAULT_ABI == ABI_V4") + (match_operand 0 "small_data_operand"))) + +(define_constraint "t" + "AND masks that can be performed by two rldic{l,r} insns + (but excluding those that could match other constraints of anddi3)" + (and (and (and (match_operand 0 "mask64_2_operand") + (match_test "(fixed_regs[CR0_REGNO] + || !logical_operand (op, DImode))")) + (not (match_operand 0 "mask_operand"))) + (not (match_operand 0 "mask64_operand")))) + +(define_constraint "W" + "vector constant that does not require memory" + (match_operand 0 "easy_vector_constant")) diff --git a/gcc/config/rs6000/darwin-ldouble.c b/gcc/config/rs6000/darwin-ldouble.c index 08ff351d52c..356bc18b57e 100644 --- a/gcc/config/rs6000/darwin-ldouble.c +++ b/gcc/config/rs6000/darwin-ldouble.c @@ -49,7 +49,8 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA This code currently assumes big-endian. */ -#if !_SOFT_FLOAT && (defined (__MACH__) || defined (__powerpc64__) || defined (__powerpc__) || defined (_AIX)) +#if (!defined (__NO_FPRS__) && !defined (__LITTLE_ENDIAN__) \ + && (defined (__MACH__) || defined (__powerpc__) || defined (_AIX))) #define fabs(x) __builtin_fabs(x) #define isless(x, y) __builtin_isless (x, y) diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md index 8d24d8f74c5..e0486a9b06f 100644 --- a/gcc/config/rs6000/predicates.md +++ b/gcc/config/rs6000/predicates.md @@ -63,12 +63,12 @@ ;; Return 1 if op is a constant integer that can fit in a D field. (define_predicate "short_cint_operand" (and (match_code "const_int") - (match_test "CONST_OK_FOR_LETTER_P (INTVAL (op), 'I')"))) + (match_test "satisfies_constraint_I (op)"))) ;; Return 1 if op is a constant integer that can fit in an unsigned D field. (define_predicate "u_short_cint_operand" (and (match_code "const_int") - (match_test "CONST_OK_FOR_LETTER_P (INTVAL (op), 'K')"))) + (match_test "satisfies_constraint_K (op)"))) ;; Return 1 if op is a constant integer that cannot fit in a signed D field. (define_predicate "non_short_cint_operand" @@ -117,7 +117,7 @@ ;; or equal to const, which does not work for zero. (define_predicate "reg_or_neg_short_operand" (if_then_else (match_code "const_int") - (match_test "CONST_OK_FOR_LETTER_P (INTVAL (op), 'P') + (match_test "satisfies_constraint_P (op) && INTVAL (op) != 0") (match_operand 0 "gpc_reg_operand"))) @@ -400,15 +400,15 @@ ;; as the operand of a `mode' add insn. (define_predicate "add_operand" (if_then_else (match_code "const_int") - (match_test "CONST_OK_FOR_LETTER_P (INTVAL (op), 'I') - || CONST_OK_FOR_LETTER_P (INTVAL (op), 'L')") + (match_test "satisfies_constraint_I (op) + || satisfies_constraint_L (op)") (match_operand 0 "gpc_reg_operand"))) ;; Return 1 if OP is a constant but not a valid add_operand. (define_predicate "non_add_cint_operand" (and (match_code "const_int") - (match_test "!CONST_OK_FOR_LETTER_P (INTVAL (op), 'I') - && !CONST_OK_FOR_LETTER_P (INTVAL (op), 'L')"))) + (match_test "!satisfies_constraint_I (op) + && !satisfies_constraint_L (op)"))) ;; Return 1 if the operand is a constant that can be used as the operand ;; of an OR or XOR. diff --git a/gcc/config/rs6000/rs6000-protos.h b/gcc/config/rs6000/rs6000-protos.h index c1f6a045b48..0cb5a50b773 100644 --- a/gcc/config/rs6000/rs6000-protos.h +++ b/gcc/config/rs6000/rs6000-protos.h @@ -42,8 +42,6 @@ extern bool invalid_e500_subreg (rtx, enum machine_mode); extern void validate_condition_mode (enum rtx_code, enum machine_mode); extern bool legitimate_constant_pool_address_p (rtx); extern bool legitimate_indirect_address_p (rtx, int); -extern bool rs6000_legitimate_offset_address_p (enum machine_mode, rtx, int); -extern bool rs6000_legitimate_small_data_p (enum machine_mode, rtx); extern rtx rs6000_got_register (rtx); extern rtx find_addr_reg (rtx); @@ -102,7 +100,9 @@ extern rtx rs6000_legitimize_address (rtx, rtx, enum machine_mode); extern rtx rs6000_legitimize_reload_address (rtx, enum machine_mode, int, int, int, int *); extern int rs6000_legitimate_address (enum machine_mode, rtx, int); +extern bool rs6000_legitimate_offset_address_p (enum machine_mode, rtx, int); extern bool rs6000_mode_dependent_address (rtx); +extern bool rs6000_offsettable_memref_p (rtx); extern rtx rs6000_return_addr (int, rtx); extern void rs6000_output_symbol_ref (FILE*, rtx); extern HOST_WIDE_INT rs6000_initial_elimination_offset (int, int); diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index b9305622f0e..764ca16e028 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -56,6 +56,7 @@ #include "tree-gimple.h" #include "intl.h" #include "params.h" +#include "tm-constrs.h" #if TARGET_XCOFF #include "xcoffout.h" /* get declarations of xcoff_*_section_name */ #endif @@ -248,11 +249,12 @@ int rs6000_alignment_flags; struct { bool aix_struct_ret; /* True if -maix-struct-ret was used. */ bool alignment; /* True if -malign- was used. */ - bool abi; /* True if -mabi= was used. */ + bool abi; /* True if -mabi=spe/nospe was used. */ bool spe; /* True if -mspe= was used. */ bool float_gprs; /* True if -mfloat-gprs= was used. */ bool isel; /* True if -misel was used. */ bool long_double; /* True if -mlong-double- was used. */ + bool ieee; /* True if -mabi=ieee/ibmlongdouble used. */ } rs6000_explicit_options; struct builtin_description @@ -588,6 +590,7 @@ static unsigned toc_hash_function (const void *); static int toc_hash_eq (const void *, const void *); static int constant_pool_expr_1 (rtx, int *, int *); static bool constant_pool_expr_p (rtx); +static bool legitimate_small_data_p (enum machine_mode, rtx); static bool legitimate_indexed_address_p (rtx, int); static bool legitimate_lo_sum_address_p (enum machine_mode, rtx, int); static struct machine_function * rs6000_init_machine_status (void); @@ -599,6 +602,8 @@ static void rs6000_assemble_visibility (tree, int); static int rs6000_ra_ever_killed (void); static tree rs6000_handle_longcall_attribute (tree *, tree, tree, int, bool *); static tree rs6000_handle_altivec_attribute (tree *, tree, tree, int, bool *); +static bool rs6000_ms_bitfield_layout_p (tree); +static tree rs6000_handle_struct_attribute (tree *, tree, tree, int, bool *); static void rs6000_eliminate_indexed_memrefs (rtx operands[2]); static const char *rs6000_mangle_fundamental_type (tree); extern const struct attribute_spec rs6000_attribute_table[]; @@ -929,6 +934,9 @@ static const char alt_reg_names[][8] = #define TARGET_BINDS_LOCAL_P darwin_binds_local_p #endif +#undef TARGET_MS_BITFIELD_LAYOUT_P +#define TARGET_MS_BITFIELD_LAYOUT_P rs6000_ms_bitfield_layout_p + #undef TARGET_ASM_OUTPUT_MI_THUNK #define TARGET_ASM_OUTPUT_MI_THUNK rs6000_output_mi_thunk @@ -1320,7 +1328,7 @@ rs6000_override_options (const char *default_cpu) rs6000_long_double_type_size = RS6000_DEFAULT_LONG_DOUBLE_SIZE; #ifndef POWERPC_LINUX - if (!rs6000_explicit_options.abi) + if (!rs6000_explicit_options.ieee) rs6000_ieeequad = 1; #endif @@ -1635,10 +1643,10 @@ rs6000_handle_option (size_t code, const char *arg, int value) | MASK_PPC_GFXOPT | MASK_POWERPC64); break; case OPT_mfull_toc: - target_flags &= ~(MASK_MINIMAL_TOC | MASK_NO_FP_IN_TOC - | MASK_NO_SUM_IN_TOC); - target_flags_explicit |= (MASK_MINIMAL_TOC | MASK_NO_FP_IN_TOC - | MASK_NO_SUM_IN_TOC); + target_flags &= ~MASK_MINIMAL_TOC; + TARGET_NO_FP_IN_TOC = 0; + TARGET_NO_SUM_IN_TOC = 0; + target_flags_explicit |= MASK_MINIMAL_TOC; #ifdef TARGET_USES_SYSV4_OPT /* Note, V.4 no longer uses a normal TOC, so make -mfull-toc, be just the same as -mminimal-toc. */ @@ -1681,8 +1689,8 @@ rs6000_handle_option (size_t code, const char *arg, int value) case OPT_mminimal_toc: if (value == 1) { - target_flags &= ~(MASK_NO_FP_IN_TOC | MASK_NO_SUM_IN_TOC); - target_flags_explicit |= (MASK_NO_FP_IN_TOC | MASK_NO_SUM_IN_TOC); + TARGET_NO_FP_IN_TOC = 0; + TARGET_NO_SUM_IN_TOC = 0; } break; @@ -1753,18 +1761,18 @@ rs6000_handle_option (size_t code, const char *arg, int value) case OPT_mrelocatable: if (value == 1) { - target_flags |= MASK_MINIMAL_TOC | MASK_NO_FP_IN_TOC; - target_flags_explicit |= MASK_MINIMAL_TOC | MASK_NO_FP_IN_TOC; + target_flags |= MASK_MINIMAL_TOC; + target_flags_explicit |= MASK_MINIMAL_TOC; + TARGET_NO_FP_IN_TOC = 1; } break; case OPT_mrelocatable_lib: if (value == 1) { - target_flags |= MASK_RELOCATABLE | MASK_MINIMAL_TOC - | MASK_NO_FP_IN_TOC; - target_flags_explicit |= MASK_RELOCATABLE | MASK_MINIMAL_TOC - | MASK_NO_FP_IN_TOC; + target_flags |= MASK_RELOCATABLE | MASK_MINIMAL_TOC; + target_flags_explicit |= MASK_RELOCATABLE | MASK_MINIMAL_TOC; + TARGET_NO_FP_IN_TOC = 1; } else { @@ -1775,23 +1783,31 @@ rs6000_handle_option (size_t code, const char *arg, int value) #endif case OPT_mabi_: - rs6000_explicit_options.abi = true; if (!strcmp (arg, "altivec")) { + rs6000_explicit_options.abi = true; rs6000_altivec_abi = 1; rs6000_spe_abi = 0; } else if (! strcmp (arg, "no-altivec")) - rs6000_altivec_abi = 0; + { + /* ??? Don't set rs6000_explicit_options.abi here, to allow + the default for rs6000_spe_abi to be chosen later. */ + rs6000_altivec_abi = 0; + } else if (! strcmp (arg, "spe")) { + rs6000_explicit_options.abi = true; rs6000_spe_abi = 1; rs6000_altivec_abi = 0; if (!TARGET_SPE_ABI) error ("not configured for ABI: '%s'", arg); } else if (! strcmp (arg, "no-spe")) - rs6000_spe_abi = 0; + { + rs6000_explicit_options.abi = true; + rs6000_spe_abi = 0; + } /* These are here for testing during development only, do not document in the manual please. */ @@ -1808,11 +1824,13 @@ rs6000_handle_option (size_t code, const char *arg, int value) else if (! strcmp (arg, "ibmlongdouble")) { + rs6000_explicit_options.ieee = true; rs6000_ieeequad = 0; warning (0, "Using IBM extended precision long double"); } else if (! strcmp (arg, "ieeelongdouble")) { + rs6000_explicit_options.ieee = true; rs6000_ieeequad = 1; warning (0, "Using IEEE extended precision long double"); } @@ -1991,11 +2009,12 @@ int num_insns_constant_wide (HOST_WIDE_INT value) { /* signed constant loadable with {cal|addi} */ - if (CONST_OK_FOR_LETTER_P (value, 'I')) + if ((unsigned HOST_WIDE_INT) (value + 0x8000) < 0x10000) return 1; /* constant loadable with {cau|addis} */ - else if (CONST_OK_FOR_LETTER_P (value, 'L')) + else if ((value & 0xffff) == 0 + && (value >> 31 == -1 || value >> 31 == 0)) return 1; #if HOST_BITS_PER_WIDE_INT == 64 @@ -2090,7 +2109,7 @@ num_insns_constant (rtx op, enum machine_mode mode) } -/* Return true if OP can be synthesized with a particular vspltisb, vspltish +/* Return true if OP can be synthesized with a particular vspltisb, vspltish or vspltisw instruction. OP is a CONST_VECTOR. Which instruction is used depends on STEP and COPIES, one of which will be 1. If COPIES > 1, all items are set to the same value and contain COPIES replicas of the @@ -2157,7 +2176,7 @@ vspltis_constant (rtx op, unsigned step, unsigned copies) } -/* Return true if OP is of the given MODE and can be synthesized +/* Return true if OP is of the given MODE and can be synthesized with a vspltisb, vspltish or vspltisw. */ bool @@ -2692,8 +2711,8 @@ legitimate_constant_pool_address_p (rtx x) && constant_pool_expr_p (XEXP (x, 1))); } -bool -rs6000_legitimate_small_data_p (enum machine_mode mode, rtx x) +static bool +legitimate_small_data_p (enum machine_mode mode, rtx x) { return (DEFAULT_ABI == ABI_V4 && !flag_pic && !TARGET_TOC @@ -3478,7 +3497,7 @@ rs6000_legitimate_address (enum machine_mode mode, rtx x, int reg_ok_strict) && TARGET_UPDATE && legitimate_indirect_address_p (XEXP (x, 0), reg_ok_strict)) return 1; - if (rs6000_legitimate_small_data_p (mode, x)) + if (legitimate_small_data_p (mode, x)) return 1; if (legitimate_constant_pool_address_p (x)) return 1; @@ -3543,6 +3562,33 @@ rs6000_mode_dependent_address (rtx addr) return false; } +/* More elaborate version of recog's offsettable_memref_p predicate + that works around the ??? note of rs6000_mode_dependent_address. + In particular it accepts + + (mem:DI (plus:SI (reg/f:SI 31 31) (const_int 32760 [0x7ff8]))) + + in 32-bit mode, that the recog predicate rejects. */ + +bool +rs6000_offsettable_memref_p (rtx op) +{ + if (!MEM_P (op)) + return false; + + /* First mimic offsettable_memref_p. */ + if (offsettable_address_p (1, GET_MODE (op), XEXP (op, 0))) + return true; + + /* offsettable_address_p invokes rs6000_mode_dependent_address, but + the latter predicate knows nothing about the mode of the memory + reference and, therefore, assumes that it is the largest supported + mode (TFmode). As a consequence, legitimate offsettable memory + references are rejected. rs6000_legitimate_offset_address_p contains + the correct logic for the PLUS case of rs6000_mode_dependent_address. */ + return rs6000_legitimate_offset_address_p (GET_MODE (op), XEXP (op, 0), 1); +} + /* 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 @@ -12488,7 +12534,7 @@ rs6000_split_multireg_move (rtx dst, rtx src) : gen_adddi3 (breg, breg, delta_rtx)); src = replace_equiv_address (src, breg); } - else if (! offsettable_memref_p (src)) + else if (! rs6000_offsettable_memref_p (src)) { rtx basereg; basereg = gen_rtx_REG (Pmode, reg); @@ -12541,7 +12587,7 @@ rs6000_split_multireg_move (rtx dst, rtx src) dst = replace_equiv_address (dst, breg); } else - gcc_assert (offsettable_memref_p (dst)); + gcc_assert (rs6000_offsettable_memref_p (dst)); } for (i = 0; i < nregs; i++) @@ -17308,6 +17354,8 @@ const struct attribute_spec rs6000_attribute_table[] = { "altivec", 1, 1, false, true, false, rs6000_handle_altivec_attribute }, { "longcall", 0, 0, false, true, true, rs6000_handle_longcall_attribute }, { "shortcall", 0, 0, false, true, true, rs6000_handle_longcall_attribute }, + { "ms_struct", 0, 0, false, false, false, rs6000_handle_struct_attribute }, + { "gcc_struct", 0, 0, false, false, false, rs6000_handle_struct_attribute }, #ifdef SUBTARGET_ATTRIBUTE_TABLE SUBTARGET_ATTRIBUTE_TABLE, #endif @@ -17506,6 +17554,54 @@ rs6000_longcall_ref (rtx call_ref) return force_reg (Pmode, call_ref); } +#ifndef TARGET_USE_MS_BITFIELD_LAYOUT +#define TARGET_USE_MS_BITFIELD_LAYOUT 0 +#endif + +/* Handle a "ms_struct" or "gcc_struct" attribute; arguments as in + struct attribute_spec.handler. */ +static tree +rs6000_handle_struct_attribute (tree *node, tree name, + tree args ATTRIBUTE_UNUSED, + int flags ATTRIBUTE_UNUSED, bool *no_add_attrs) +{ + tree *type = NULL; + if (DECL_P (*node)) + { + if (TREE_CODE (*node) == TYPE_DECL) + type = &TREE_TYPE (*node); + } + else + type = node; + + if (!(type && (TREE_CODE (*type) == RECORD_TYPE + || TREE_CODE (*type) == UNION_TYPE))) + { + warning (OPT_Wattributes, "%qs attribute ignored", IDENTIFIER_POINTER (name)); + *no_add_attrs = true; + } + + else if ((is_attribute_p ("ms_struct", name) + && lookup_attribute ("gcc_struct", TYPE_ATTRIBUTES (*type))) + || ((is_attribute_p ("gcc_struct", name) + && lookup_attribute ("ms_struct", TYPE_ATTRIBUTES (*type))))) + { + warning (OPT_Wattributes, "%qs incompatible attribute ignored", + IDENTIFIER_POINTER (name)); + *no_add_attrs = true; + } + + return NULL_TREE; +} + +static bool +rs6000_ms_bitfield_layout_p (tree record_type) +{ + return (TARGET_USE_MS_BITFIELD_LAYOUT && + !lookup_attribute ("gcc_struct", TYPE_ATTRIBUTES (record_type))) + || lookup_attribute ("ms_struct", TYPE_ATTRIBUTES (record_type)); +} + #ifdef USING_ELFOS_H /* A get_unnamed_section callback, used for switching to toc_section. */ @@ -18048,6 +18144,7 @@ rs6000_darwin_file_start (void) size_t i; rs6000_file_start (); + darwin_file_start (); /* Determine the argument to -mcpu=. Default to G3 if not specified. */ for (i = 0; i < ARRAY_SIZE (rs6000_select); i++) @@ -18486,19 +18583,21 @@ rs6000_rtx_costs (rtx x, int code, int outer_code, int *total) if (((outer_code == SET || outer_code == PLUS || outer_code == MINUS) - && (CONST_OK_FOR_LETTER_P (INTVAL (x), 'I') - || CONST_OK_FOR_LETTER_P (INTVAL (x), 'L'))) + && (satisfies_constraint_I (x) + || satisfies_constraint_L (x))) || (outer_code == AND - && (CONST_OK_FOR_LETTER_P (INTVAL (x), 'K') - || (CONST_OK_FOR_LETTER_P (INTVAL (x), - mode == SImode ? 'L' : 'J')) + && (satisfies_constraint_K (x) + || (mode == SImode + ? satisfies_constraint_L (x) + : satisfies_constraint_J (x)) || mask_operand (x, mode) || (mode == DImode && mask64_operand (x, DImode)))) || ((outer_code == IOR || outer_code == XOR) - && (CONST_OK_FOR_LETTER_P (INTVAL (x), 'K') - || (CONST_OK_FOR_LETTER_P (INTVAL (x), - mode == SImode ? 'L' : 'J')))) + && (satisfies_constraint_K (x) + || (mode == SImode + ? satisfies_constraint_L (x) + : satisfies_constraint_J (x)))) || outer_code == ASHIFT || outer_code == ASHIFTRT || outer_code == LSHIFTRT @@ -18506,22 +18605,23 @@ rs6000_rtx_costs (rtx x, int code, int outer_code, int *total) || outer_code == ROTATERT || outer_code == ZERO_EXTRACT || (outer_code == MULT - && CONST_OK_FOR_LETTER_P (INTVAL (x), 'I')) + && satisfies_constraint_I (x)) || ((outer_code == DIV || outer_code == UDIV || outer_code == MOD || outer_code == UMOD) && exact_log2 (INTVAL (x)) >= 0) || (outer_code == COMPARE - && (CONST_OK_FOR_LETTER_P (INTVAL (x), 'I') - || CONST_OK_FOR_LETTER_P (INTVAL (x), 'K'))) + && (satisfies_constraint_I (x) + || satisfies_constraint_K (x))) || (outer_code == EQ - && (CONST_OK_FOR_LETTER_P (INTVAL (x), 'I') - || CONST_OK_FOR_LETTER_P (INTVAL (x), 'K') - || (CONST_OK_FOR_LETTER_P (INTVAL (x), - mode == SImode ? 'L' : 'J')))) + && (satisfies_constraint_I (x) + || satisfies_constraint_K (x) + || (mode == SImode + ? satisfies_constraint_L (x) + : satisfies_constraint_J (x)))) || (outer_code == GTU - && CONST_OK_FOR_LETTER_P (INTVAL (x), 'I')) + && satisfies_constraint_I (x)) || (outer_code == LTU - && CONST_OK_FOR_LETTER_P (INTVAL (x), 'P'))) + && satisfies_constraint_P (x))) { *total = 0; return true; @@ -18544,8 +18644,8 @@ rs6000_rtx_costs (rtx x, int code, int outer_code, int *total) case CONST_DOUBLE: if (mode == DImode && ((outer_code == AND - && (CONST_OK_FOR_LETTER_P (INTVAL (x), 'K') - || CONST_OK_FOR_LETTER_P (INTVAL (x), 'L') + && (satisfies_constraint_K (x) + || satisfies_constraint_L (x) || mask_operand (x, DImode) || mask64_operand (x, DImode))) || ((outer_code == IOR || outer_code == XOR) @@ -18647,7 +18747,7 @@ rs6000_rtx_costs (rtx x, int code, int outer_code, int *total) case MULT: if (GET_CODE (XEXP (x, 1)) == CONST_INT - && CONST_OK_FOR_LETTER_P (INTVAL (XEXP (x, 1)), 'I')) + && satisfies_constraint_I (XEXP (x, 1))) { if (INTVAL (XEXP (x, 1)) >= -256 && INTVAL (XEXP (x, 1)) <= 255) diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index bfa7074247e..75ff4a66cd6 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -1057,107 +1057,6 @@ enum reg_class #define INDEX_REG_CLASS GENERAL_REGS #define BASE_REG_CLASS BASE_REGS -/* Get reg_class from a letter such as appears in the machine description. */ - -#define REG_CLASS_FROM_LETTER(C) \ - ((C) == 'f' ? ((TARGET_HARD_FLOAT && TARGET_FPRS) ? FLOAT_REGS : NO_REGS) \ - : (C) == 'b' ? BASE_REGS \ - : (C) == 'h' ? SPECIAL_REGS \ - : (C) == 'q' ? MQ_REGS \ - : (C) == 'c' ? CTR_REGS \ - : (C) == 'l' ? LINK_REGS \ - : (C) == 'v' ? ALTIVEC_REGS \ - : (C) == 'x' ? CR0_REGS \ - : (C) == 'y' ? CR_REGS \ - : (C) == 'z' ? XER_REGS \ - : NO_REGS) - -/* The letters I, J, K, L, M, N, and P in a register constraint string - can be used to stand for particular ranges of immediate operands. - This macro defines what the ranges are. - C is the letter, and VALUE is a constant value. - Return 1 if VALUE is in the range specified by C. - - `I' is a signed 16-bit constant - `J' is a constant with only the high-order 16 bits nonzero - `K' is a constant with only the low-order 16 bits nonzero - `L' is a signed 16-bit constant shifted left 16 bits - `M' is a constant that is greater than 31 - `N' is a positive constant that is an exact power of two - `O' is the constant zero - `P' is a constant whose negation is a signed 16-bit constant */ - -#define CONST_OK_FOR_LETTER_P(VALUE, C) \ - ( (C) == 'I' ? (unsigned HOST_WIDE_INT) ((VALUE) + 0x8000) < 0x10000 \ - : (C) == 'J' ? ((VALUE) & (~ (unsigned HOST_WIDE_INT) 0xffff0000)) == 0 \ - : (C) == 'K' ? ((VALUE) & (~ (HOST_WIDE_INT) 0xffff)) == 0 \ - : (C) == 'L' ? (((VALUE) & 0xffff) == 0 \ - && ((VALUE) >> 31 == -1 || (VALUE) >> 31 == 0)) \ - : (C) == 'M' ? (VALUE) > 31 \ - : (C) == 'N' ? (VALUE) > 0 && exact_log2 (VALUE) >= 0 \ - : (C) == 'O' ? (VALUE) == 0 \ - : (C) == 'P' ? (unsigned HOST_WIDE_INT) ((- (VALUE)) + 0x8000) < 0x10000 \ - : 0) - -/* Similar, but for floating constants, and defining letters G and H. - Here VALUE is the CONST_DOUBLE rtx itself. - - We flag for special constants when we can copy the constant into - a general register in two insns for DF/DI and one insn for SF. - - 'H' is used for DI/DF constants that take 3 insns. */ - -#define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) \ - ( (C) == 'G' ? (num_insns_constant (VALUE, GET_MODE (VALUE)) \ - == ((GET_MODE (VALUE) == SFmode) ? 1 : 2)) \ - : (C) == 'H' ? (num_insns_constant (VALUE, GET_MODE (VALUE)) == 3) \ - : 0) - -/* Optional extra constraints for this machine. - - 'Q' means that is a memory operand that is just an offset from a reg. - 'R' is for AIX TOC entries. - 'S' is a constant that can be placed into a 64-bit mask operand. - 'T' is a constant that can be placed into a 32-bit mask operand. - 'U' is for V.4 small data references. - 'W' is a vector constant that can be easily generated (no mem refs). - 'Y' is an indexed or word-aligned displacement memory operand. - 'Z' is an indexed or indirect memory operand. - 'a' is an indexed or indirect address operand. - 't' is for AND masks that can be performed by two rldic{l,r} insns - (but excluding those that could match other constraints of anddi3.) */ - -#define EXTRA_CONSTRAINT(OP, C) \ - ((C) == 'Q' ? GET_CODE (OP) == MEM && GET_CODE (XEXP (OP, 0)) == REG \ - : (C) == 'R' ? legitimate_constant_pool_address_p (OP) \ - : (C) == 'S' ? mask64_operand (OP, DImode) \ - : (C) == 'T' ? mask_operand (OP, GET_MODE (OP)) \ - : (C) == 'U' ? (DEFAULT_ABI == ABI_V4 \ - && small_data_operand (OP, GET_MODE (OP))) \ - : (C) == 't' ? (mask64_2_operand (OP, DImode) \ - && (fixed_regs[CR0_REGNO] \ - || !logical_operand (OP, DImode)) \ - && !mask_operand (OP, DImode) \ - && !mask64_operand (OP, DImode)) \ - : (C) == 'W' ? (easy_vector_constant (OP, GET_MODE (OP))) \ - : (C) == 'Y' ? (word_offset_memref_operand (OP, GET_MODE (OP))) \ - : (C) == 'Z' ? (indexed_or_indirect_operand (OP, GET_MODE (OP))) \ - : (C) == 'a' ? (indexed_or_indirect_address (OP, GET_MODE (OP))) \ - : 0) - -/* Define which constraints are memory constraints. Tell reload - that any memory address can be reloaded by copying the - memory address into a base register if required. */ - -#define EXTRA_MEMORY_CONSTRAINT(C, STR) \ - ((C) == 'Q' || (C) == 'Y' || (C) == 'Z') - -/* Define which constraints should be treated like address constraints - by the reload pass. */ - -#define EXTRA_ADDRESS_CONSTRAINT(C, STR) \ - ((C) == 'a') - /* 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 on some machines @@ -1213,22 +1112,19 @@ enum reg_class ? 1 \ : ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)) - -/* Return a class of registers that cannot change FROM mode to TO mode. */ - -#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) \ - (!TARGET_IEEEQUAD \ - && GET_MODE_SIZE (FROM) >= 8 && GET_MODE_SIZE (TO) >= 8 \ - ? 0 \ - : GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO) \ - ? reg_classes_intersect_p (FLOAT_REGS, CLASS) \ - : (TARGET_E500_DOUBLE && (((TO) == DFmode) + ((FROM) == DFmode)) == 1) \ - ? reg_classes_intersect_p (GENERAL_REGS, CLASS) \ - : (TARGET_E500_DOUBLE && (((TO) == DImode) + ((FROM) == DImode)) == 1) \ - ? reg_classes_intersect_p (GENERAL_REGS, CLASS) \ - : (TARGET_SPE && (SPE_VECTOR_MODE (FROM) + SPE_VECTOR_MODE (TO)) == 1) \ - ? reg_classes_intersect_p (GENERAL_REGS, CLASS) \ - : 0) +/* Return nonzero if for CLASS a mode change from FROM to TO is invalid. */ + +#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) \ + (GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO) \ + ? ((GET_MODE_SIZE (FROM) < 8 || GET_MODE_SIZE (TO) < 8 \ + || TARGET_IEEEQUAD) \ + && reg_classes_intersect_p (FLOAT_REGS, CLASS)) \ + : (((TARGET_E500_DOUBLE \ + && ((((TO) == DFmode) + ((FROM) == DFmode)) == 1 \ + || (((TO) == DImode) + ((FROM) == DImode)) == 1)) \ + || (TARGET_SPE \ + && (SPE_VECTOR_MODE (FROM) + SPE_VECTOR_MODE (TO)) == 1)) \ + && reg_classes_intersect_p (GENERAL_REGS, CLASS))) /* Stack layout; function entry, exit and calling. */ diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index fc57e5b3833..1cee3c80919 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -126,6 +126,7 @@ (include "power5.md") (include "predicates.md") +(include "constraints.md") (include "darwin.md") @@ -1405,6 +1406,7 @@ emit_jump_insn (gen_rtx_SET (VOIDmode, pc_rtx, gen_rtx_LABEL_REF (VOIDmode, loop_label))); + emit_barrier (); emit_label (end_label); emit_insn (gen_addsi3 (scratch_string, scratch_string, scratch_dlmzb)); emit_insn (gen_subsi3 (result, scratch_string, addr)); @@ -1433,7 +1435,6 @@ (plus:SDI (match_operand:SDI 1 "gpc_reg_operand" "") (match_operand:SDI 2 "reg_or_add_cint_operand" "")))] "" - " { if (mode == DImode && ! TARGET_POWERPC64) { @@ -1450,7 +1451,7 @@ HOST_WIDE_INT low = ((val & 0xffff) ^ 0x8000) - 0x8000; HOST_WIDE_INT rest = trunc_int_for_mode (val - low, mode); - if (mode == DImode && !CONST_OK_FOR_LETTER_P (rest, 'L')) + if (mode == DImode && !satisfies_constraint_L (GEN_INT (rest))) FAIL; /* The ordering here is important for the prolog expander. @@ -1460,7 +1461,7 @@ emit_insn (gen_add3 (operands[0], tmp, GEN_INT (low))); DONE; } -}") +}) ;; Discourage ai/addic because of carry but provide it in an alternative ;; allowing register zero as source. @@ -1558,14 +1559,13 @@ "" [(set (match_dup 0) (plus:GPR (match_dup 1) (match_dup 3))) (set (match_dup 0) (plus:GPR (match_dup 0) (match_dup 4)))] -" { HOST_WIDE_INT val = INTVAL (operands[2]); HOST_WIDE_INT low = ((val & 0xffff) ^ 0x8000) - 0x8000; HOST_WIDE_INT rest = trunc_int_for_mode (val - low, mode); operands[4] = GEN_INT (low); - if (mode == SImode || CONST_OK_FOR_LETTER_P (rest, 'L')) + if (mode == SImode || satisfies_constraint_L (GEN_INT (rest))) operands[3] = GEN_INT (rest); else if (! no_new_pseudos) { @@ -1576,7 +1576,7 @@ } else FAIL; -}") +}) (define_insn "one_cmpl2" [(set (match_operand:GPR 0 "gpc_reg_operand" "=r") @@ -8154,14 +8154,11 @@ else return \"mr %0,%1\;mr %L0,%L1\"; case 1: - if (GET_CODE (operands[1]) == MEM - && (rs6000_legitimate_offset_address_p (DFmode, XEXP (operands[1], 0), - reload_completed || reload_in_progress) - || rs6000_legitimate_small_data_p (DFmode, XEXP (operands[1], 0)) - || GET_CODE (XEXP (operands[1], 0)) == REG - || GET_CODE (XEXP (operands[1], 0)) == LO_SUM - || GET_CODE (XEXP (operands[1], 0)) == PRE_INC - || GET_CODE (XEXP (operands[1], 0)) == PRE_DEC)) + if (rs6000_offsettable_memref_p (operands[1]) + || (GET_CODE (operands[1]) == MEM + && (GET_CODE (XEXP (operands[1], 0)) == LO_SUM + || GET_CODE (XEXP (operands[1], 0)) == PRE_INC + || GET_CODE (XEXP (operands[1], 0)) == PRE_DEC))) { /* If the low-address word is used in the address, we must load it last. Otherwise, load it first. Note that we cannot have @@ -8197,14 +8194,11 @@ } } case 2: - if (GET_CODE (operands[0]) == MEM - && (rs6000_legitimate_offset_address_p (DFmode, XEXP (operands[0], 0), - reload_completed || reload_in_progress) - || rs6000_legitimate_small_data_p (DFmode, XEXP (operands[0], 0)) - || GET_CODE (XEXP (operands[0], 0)) == REG - || GET_CODE (XEXP (operands[0], 0)) == LO_SUM - || GET_CODE (XEXP (operands[0], 0)) == PRE_INC - || GET_CODE (XEXP (operands[0], 0)) == PRE_DEC)) + if (rs6000_offsettable_memref_p (operands[0]) + || (GET_CODE (operands[0]) == MEM + && (GET_CODE (XEXP (operands[0], 0)) == LO_SUM + || GET_CODE (XEXP (operands[0], 0)) == PRE_INC + || GET_CODE (XEXP (operands[0], 0)) == PRE_DEC))) return \"{st%U0|stw%U0} %1,%0\;{st|stw} %L1,%L0\"; else { @@ -8988,15 +8982,6 @@ gen_rtx_REG (SImode, regno + i)); }") -(define_insn "*store_multiple_power" - [(match_parallel 0 "store_multiple_operation" - [(set (match_operand:SI 1 "indirect_operand" "=Q") - (match_operand:SI 2 "gpc_reg_operand" "r")) - (clobber (match_scratch:SI 3 "=q"))])] - "TARGET_STRING && TARGET_POWER" - "{stsi|stswi} %2,%P1,%O0" - [(set_attr "type" "store")]) - (define_insn "*stmsi8" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b")) @@ -9104,6 +9089,114 @@ "TARGET_STRING && !TARGET_POWER && XVECLEN (operands[0], 0) == 4" "{stsi|stswi} %2,%1,%O0" [(set_attr "type" "store_ux")]) + +(define_insn "*stmsi8_power" + [(match_parallel 0 "store_multiple_operation" + [(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b")) + (match_operand:SI 2 "gpc_reg_operand" "r")) + (clobber (match_scratch:SI 3 "q")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 4))) + (match_operand:SI 4 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 8))) + (match_operand:SI 5 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 12))) + (match_operand:SI 6 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 16))) + (match_operand:SI 7 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 20))) + (match_operand:SI 8 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 24))) + (match_operand:SI 9 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 28))) + (match_operand:SI 10 "gpc_reg_operand" "r"))])] + "TARGET_STRING && TARGET_POWER && XVECLEN (operands[0], 0) == 9" + "{stsi|stswi} %2,%1,%O0" + [(set_attr "type" "store_ux")]) + +(define_insn "*stmsi7_power" + [(match_parallel 0 "store_multiple_operation" + [(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b")) + (match_operand:SI 2 "gpc_reg_operand" "r")) + (clobber (match_scratch:SI 3 "q")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 4))) + (match_operand:SI 4 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 8))) + (match_operand:SI 5 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 12))) + (match_operand:SI 6 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 16))) + (match_operand:SI 7 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 20))) + (match_operand:SI 8 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 24))) + (match_operand:SI 9 "gpc_reg_operand" "r"))])] + "TARGET_STRING && TARGET_POWER && XVECLEN (operands[0], 0) == 8" + "{stsi|stswi} %2,%1,%O0" + [(set_attr "type" "store_ux")]) + +(define_insn "*stmsi6_power" + [(match_parallel 0 "store_multiple_operation" + [(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b")) + (match_operand:SI 2 "gpc_reg_operand" "r")) + (clobber (match_scratch:SI 3 "q")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 4))) + (match_operand:SI 4 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 8))) + (match_operand:SI 5 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 12))) + (match_operand:SI 6 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 16))) + (match_operand:SI 7 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 20))) + (match_operand:SI 8 "gpc_reg_operand" "r"))])] + "TARGET_STRING && TARGET_POWER && XVECLEN (operands[0], 0) == 7" + "{stsi|stswi} %2,%1,%O0" + [(set_attr "type" "store_ux")]) + +(define_insn "*stmsi5_power" + [(match_parallel 0 "store_multiple_operation" + [(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b")) + (match_operand:SI 2 "gpc_reg_operand" "r")) + (clobber (match_scratch:SI 3 "q")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 4))) + (match_operand:SI 4 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 8))) + (match_operand:SI 5 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 12))) + (match_operand:SI 6 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 16))) + (match_operand:SI 7 "gpc_reg_operand" "r"))])] + "TARGET_STRING && TARGET_POWER && XVECLEN (operands[0], 0) == 6" + "{stsi|stswi} %2,%1,%O0" + [(set_attr "type" "store_ux")]) + +(define_insn "*stmsi4_power" + [(match_parallel 0 "store_multiple_operation" + [(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b")) + (match_operand:SI 2 "gpc_reg_operand" "r")) + (clobber (match_scratch:SI 3 "q")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 4))) + (match_operand:SI 4 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 8))) + (match_operand:SI 5 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 12))) + (match_operand:SI 6 "gpc_reg_operand" "r"))])] + "TARGET_STRING && TARGET_POWER && XVECLEN (operands[0], 0) == 5" + "{stsi|stswi} %2,%1,%O0" + [(set_attr "type" "store_ux")]) + +(define_insn "*stmsi3_power" + [(match_parallel 0 "store_multiple_operation" + [(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b")) + (match_operand:SI 2 "gpc_reg_operand" "r")) + (clobber (match_scratch:SI 3 "q")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 4))) + (match_operand:SI 4 "gpc_reg_operand" "r")) + (set (mem:SI (plus:SI (match_dup 1) (const_int 8))) + (match_operand:SI 5 "gpc_reg_operand" "r"))])] + "TARGET_STRING && TARGET_POWER && XVECLEN (operands[0], 0) == 4" + "{stsi|stswi} %2,%1,%O0" + [(set_attr "type" "store_ux")]) (define_expand "setmemsi" [(parallel [(set (match_operand:BLK 0 "" "") @@ -9671,18 +9764,20 @@ "operands[0] = widen_memory_access (operands[0], V2DFmode, 0); operands[1] = gen_rtx_REG (V2DFmode, REGNO (operands[1]));") -;; after inserting conditional returns we can sometimes have +;; After inserting conditional returns we can sometimes have ;; unnecessary register moves. Unfortunately we cannot have a ;; modeless peephole here, because some single SImode sets have early ;; clobber outputs. Although those sets expand to multi-ppc-insn ;; sequences, using get_attr_length here will smash the operands ;; array. Neither is there an early_cobbler_p predicate. +;; Disallow subregs for E500 so we don't munge frob_di_df_2. (define_peephole2 [(set (match_operand:DF 0 "gpc_reg_operand" "") (match_operand:DF 1 "any_operand" "")) (set (match_operand:DF 2 "gpc_reg_operand" "") (match_dup 0))] - "peep2_reg_dead_p (2, operands[0])" + "!(TARGET_E500_DOUBLE && GET_CODE (operands[2]) == SUBREG) + && peep2_reg_dead_p (2, operands[0])" [(set (match_dup 2) (match_dup 1))]) (define_peephole2 diff --git a/gcc/config/rs6000/rs6000.opt b/gcc/config/rs6000/rs6000.opt index 1ecd87b5c3c..081d981da92 100644 --- a/gcc/config/rs6000/rs6000.opt +++ b/gcc/config/rs6000/rs6000.opt @@ -140,19 +140,19 @@ Target Report Var(swdiv) Generate software floating point divide for better throughput mno-fp-in-toc -Target Report RejectNegative Mask(NO_FP_IN_TOC) +Target Report RejectNegative Var(TARGET_NO_FP_IN_TOC) Do not place floating point constants in TOC mfp-in-toc -Target Report RejectNegative InverseMask(NO_FP_IN_TOC) +Target Report RejectNegative Var(TARGET_NO_FP_IN_TOC,0) VarExists Place floating point constants in TOC mno-sum-in-toc -Target RejectNegative Mask(NO_SUM_IN_TOC) +Target RejectNegative Var(TARGET_NO_SUM_IN_TOC) Do not place symbol+offset constants in TOC msum-in-toc -Target RejectNegative InverseMask(NO_SUM_IN_TOC) +Target RejectNegative Var(TARGET_NO_SUM_IN_TOC,0) VarExists Place symbol+offset constants in TOC ; Output only one TOC entry per module. Normally linking fails if diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h index d3382bdbde5..55cf9cec675 100644 --- a/gcc/config/rs6000/sysv4.h +++ b/gcc/config/rs6000/sysv4.h @@ -221,7 +221,10 @@ do { \ \ /* Treat -fPIC the same as -mrelocatable. */ \ if (flag_pic > 1 && DEFAULT_ABI != ABI_AIX) \ - target_flags |= MASK_RELOCATABLE | MASK_MINIMAL_TOC | MASK_NO_FP_IN_TOC; \ + { \ + target_flags |= MASK_RELOCATABLE | MASK_MINIMAL_TOC; \ + TARGET_NO_FP_IN_TOC = 1; \ + } \ \ else if (TARGET_RELOCATABLE) \ flag_pic = 2; \ diff --git a/gcc/config/rs6000/t-aix43 b/gcc/config/rs6000/t-aix43 index 95b31cda1e5..6a73cdd0312 100644 --- a/gcc/config/rs6000/t-aix43 +++ b/gcc/config/rs6000/t-aix43 @@ -74,10 +74,3 @@ TARGET_LIBGCC2_CFLAGS = -mlong-double-128 # Either 32-bit and 64-bit objects in archives. AR_FLAGS_FOR_TARGET = -X32_64 -# Compile Ada files with minimal-toc. The primary focus is gnatlib, so -# that the library does not use nearly the entire TOC of applications -# until gnatlib is built as a shared library on AIX. Compiling the -# compiler with -mminimal-toc does not cause any harm. -T_ADAFLAGS = -mminimal-toc -BOOT_LDFLAGS = -Wl,-bbigtoc -LDFLAGS = `case $(CC) in *gcc*) echo -Wl,-bbigtoc ;; esac;` diff --git a/gcc/config/rs6000/t-aix52 b/gcc/config/rs6000/t-aix52 index b249c42fd95..37a5d83b828 100644 --- a/gcc/config/rs6000/t-aix52 +++ b/gcc/config/rs6000/t-aix52 @@ -55,10 +55,3 @@ TARGET_LIBGCC2_CFLAGS = -mlong-double-128 # Either 32-bit and 64-bit objects in archives. AR_FLAGS_FOR_TARGET = -X32_64 -# Compile Ada files with minimal-toc. The primary focus is gnatlib, so -# that the library does not use nearly the entire TOC of applications -# until gnatlib is built as a shared library on AIX. Compiling the -# compiler with -mminimal-toc does not cause any harm. -T_ADAFLAGS = -mminimal-toc -BOOT_LDFLAGS = -Wl,-bbigtoc -LDFLAGS = `case $(CC) in *gcc*) echo -Wl,-bbigtoc ;; esac;` diff --git a/gcc/config/s390/s390-protos.h b/gcc/config/s390/s390-protos.h index 460fac6d086..4e432640a57 100644 --- a/gcc/config/s390/s390-protos.h +++ b/gcc/config/s390/s390-protos.h @@ -30,7 +30,9 @@ extern void s390_emit_epilogue (bool); extern void s390_function_profiler (FILE *, int); extern void s390_conditional_register_usage (void); extern void s390_set_has_landing_pad_p (bool); +extern bool s390_hard_regno_mode_ok (unsigned int, enum machine_mode); extern bool s390_hard_regno_rename_ok (unsigned int, unsigned int); +extern bool s390_class_max_nregs (enum reg_class, enum machine_mode); #ifdef RTX_CODE extern int s390_extra_constraint_str (rtx, int, const char *); diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index cc75cb61255..b495d6829fb 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -331,6 +331,19 @@ struct machine_function GTY(()) #define CONST_OK_FOR_On(x) \ CONST_OK_FOR_CONSTRAINT_P((x), 'O', "On") +#define REGNO_PAIR_OK(REGNO, MODE) \ + (HARD_REGNO_NREGS ((REGNO), (MODE)) == 1 || !((REGNO) & 1)) + +/* Return true if the back end supports mode MODE. */ +static bool +s390_scalar_mode_supported_p (enum machine_mode mode) +{ + if (DECIMAL_FLOAT_MODE_P (mode)) + return true; + else + return default_scalar_mode_supported_p (mode); +} + /* Set the has_landing_pad_p flag in struct machine_function to VALUE. */ void @@ -1617,7 +1630,9 @@ s390_decompose_address (rtx addr, struct s390_address *out) return false; } - if (GET_CODE (base) != REG || GET_MODE (base) != Pmode) + if (!REG_P (base) + || (GET_MODE (base) != SImode + && GET_MODE (base) != Pmode)) return false; if (REGNO (base) == STACK_POINTER_REGNUM @@ -1663,7 +1678,9 @@ s390_decompose_address (rtx addr, struct s390_address *out) return false; } - if (GET_CODE (indx) != REG || GET_MODE (indx) != Pmode) + if (!REG_P (indx) + || (GET_MODE (indx) != SImode + && GET_MODE (indx) != Pmode)) return false; if (REGNO (indx) == STACK_POINTER_REGNUM @@ -2678,8 +2695,8 @@ s390_expand_plus_operand (rtx target, rtx src, /* If the address is already strictly valid, there's nothing to do. */ if (!s390_decompose_address (src, &ad) - || (ad.base && !REG_OK_FOR_BASE_STRICT_P (ad.base)) - || (ad.indx && !REG_OK_FOR_INDEX_STRICT_P (ad.indx))) + || (ad.base && !REGNO_OK_FOR_BASE_P (REGNO (ad.base))) + || (ad.indx && !REGNO_OK_FOR_INDEX_P (REGNO (ad.indx)))) { /* Otherwise, one of the operands cannot be an address register; we reload its value into the scratch register. */ @@ -2727,19 +2744,24 @@ legitimate_address_p (enum machine_mode mode ATTRIBUTE_UNUSED, if (strict) { - if (ad.base && !REG_OK_FOR_BASE_STRICT_P (ad.base)) + if (ad.base && !REGNO_OK_FOR_BASE_P (REGNO (ad.base))) return false; - if (ad.indx && !REG_OK_FOR_INDEX_STRICT_P (ad.indx)) + + if (ad.indx && !REGNO_OK_FOR_INDEX_P (REGNO (ad.indx))) return false; } else { - if (ad.base && !REG_OK_FOR_BASE_NONSTRICT_P (ad.base)) - return false; - if (ad.indx && !REG_OK_FOR_INDEX_NONSTRICT_P (ad.indx)) + if (ad.base + && !(REGNO (ad.base) >= FIRST_PSEUDO_REGISTER + || REGNO_REG_CLASS (REGNO (ad.base)) == ADDR_REGS)) return false; + + if (ad.indx + && !(REGNO (ad.indx) >= FIRST_PSEUDO_REGISTER + || REGNO_REG_CLASS (REGNO (ad.indx)) == ADDR_REGS)) + return false; } - return true; } @@ -2770,9 +2792,9 @@ preferred_la_operand_p (rtx op1, rtx op2) if (!s390_decompose_address (op1, &addr)) return false; - if (addr.base && !REG_OK_FOR_BASE_STRICT_P (addr.base)) + if (addr.base && !REGNO_OK_FOR_BASE_P (REGNO (addr.base))) return false; - if (addr.indx && !REG_OK_FOR_INDEX_STRICT_P (addr.indx)) + if (addr.indx && !REGNO_OK_FOR_INDEX_P (REGNO (addr.indx))) return false; if (!TARGET_64BIT && !addr.pointer) @@ -4517,8 +4539,8 @@ print_operand_address (FILE *file, rtx addr) struct s390_address ad; if (!s390_decompose_address (addr, &ad) - || (ad.base && !REG_OK_FOR_BASE_STRICT_P (ad.base)) - || (ad.indx && !REG_OK_FOR_INDEX_STRICT_P (ad.indx))) + || (ad.base && !REGNO_OK_FOR_BASE_P (REGNO (ad.base))) + || (ad.indx && !REGNO_OK_FOR_INDEX_P (REGNO (ad.indx)))) output_operand_lossage ("cannot decompose address"); if (ad.disp) @@ -4602,7 +4624,7 @@ print_operand (FILE *file, rtx x, int code) gcc_assert (GET_CODE (x) == MEM); ret = s390_decompose_address (XEXP (x, 0), &ad); gcc_assert (ret); - gcc_assert (!ad.base || REG_OK_FOR_BASE_STRICT_P (ad.base)); + gcc_assert (!ad.base || REGNO_OK_FOR_BASE_P (REGNO (ad.base))); gcc_assert (!ad.indx); if (ad.disp) @@ -4620,7 +4642,7 @@ print_operand (FILE *file, rtx x, int code) gcc_assert (GET_CODE (x) == MEM); ret = s390_decompose_address (XEXP (x, 0), &ad); gcc_assert (ret); - gcc_assert (!ad.base || REG_OK_FOR_BASE_STRICT_P (ad.base)); + gcc_assert (!ad.base || REGNO_OK_FOR_BASE_P (REGNO (ad.base))); gcc_assert (!ad.indx); if (ad.base) @@ -4638,7 +4660,7 @@ print_operand (FILE *file, rtx x, int code) gcc_assert (GET_CODE (x) == MEM); ret = s390_decompose_address (XEXP (x, 0), &ad); gcc_assert (ret); - gcc_assert (!ad.base || REG_OK_FOR_BASE_STRICT_P (ad.base)); + gcc_assert (!ad.base || REGNO_OK_FOR_BASE_P (REGNO (ad.base))); gcc_assert (!ad.indx); if (ad.disp) @@ -5264,12 +5286,12 @@ replace_ltrel_base (rtx *x) /* We keep a list of constants which we have to add to internal constant tables in the middle of large functions. */ -#define NR_C_MODES 8 +#define NR_C_MODES 11 enum machine_mode constant_modes[NR_C_MODES] = { - TFmode, TImode, - DFmode, DImode, - SFmode, SImode, + TFmode, TImode, TDmode, + DFmode, DImode, DDmode, + SFmode, SImode, SDmode, HImode, QImode }; @@ -6212,6 +6234,7 @@ s390_output_pool_entry (rtx exp, enum machine_mode mode, unsigned int align) switch (GET_MODE_CLASS (mode)) { case MODE_FLOAT: + case MODE_DECIMAL_FLOAT: gcc_assert (GET_CODE (exp) == CONST_DOUBLE); REAL_VALUE_FROM_CONST_DOUBLE (r, exp); @@ -6761,6 +6784,54 @@ s390_update_frame_layout (void) regs_ever_live[REGNO (cfun->machine->base_reg)] = 1; } +/* Return true if it is legal to put a value with MODE into REGNO. */ + +bool +s390_hard_regno_mode_ok (unsigned int regno, enum machine_mode mode) +{ + switch (REGNO_REG_CLASS (regno)) + { + case FP_REGS: + if (REGNO_PAIR_OK (regno, mode)) + { + if (mode == SImode || mode == DImode) + return true; + + if (FLOAT_MODE_P (mode) && GET_MODE_CLASS (mode) != MODE_VECTOR_FLOAT) + return true; + } + break; + case ADDR_REGS: + if (FRAME_REGNO_P (regno) && mode == Pmode) + return true; + + /* fallthrough */ + case GENERAL_REGS: + if (REGNO_PAIR_OK (regno, mode)) + { + if (TARGET_64BIT + || (mode != TFmode && mode != TCmode && mode != TDmode)) + return true; + } + break; + case CC_REGS: + if (GET_MODE_CLASS (mode) == MODE_CC) + return true; + break; + case ACCESS_REGS: + if (REGNO_PAIR_OK (regno, mode)) + { + if (mode == SImode || mode == Pmode) + return true; + } + break; + default: + return false; + } + + return false; +} + /* Return nonzero if register OLD_REG can be renamed to register NEW_REG. */ bool @@ -6776,6 +6847,27 @@ s390_hard_regno_rename_ok (unsigned int old_reg, unsigned int new_reg) return true; } +/* Maximum number of registers to represent a value of mode MODE + in a register of class CLASS. */ + +bool +s390_class_max_nregs (enum reg_class class, enum machine_mode mode) +{ + switch (class) + { + case FP_REGS: + if (GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT) + return 2 * ((GET_MODE_SIZE (mode) / 2 + 8 - 1) / 8); + else + return (GET_MODE_SIZE (mode) + 8 - 1) / 8; + case ACCESS_REGS: + return (GET_MODE_SIZE (mode) + 4 - 1) / 4; + default: + break; + } + return (GET_MODE_SIZE (mode) + UNITS_PER_WORD - 1) / UNITS_PER_WORD; +} + /* Return true if register FROM can be eliminated via register TO. */ bool @@ -7537,7 +7629,7 @@ s390_function_arg_float (enum machine_mode mode, tree type) /* No type info available for some library calls ... */ if (!type) - return mode == SFmode || mode == DFmode; + return mode == SFmode || mode == DFmode || mode == SDmode || mode == DDmode; /* The ABI says that record types with a single member are treated just like that member would be. */ @@ -7579,7 +7671,7 @@ s390_function_arg_integer (enum machine_mode mode, tree type) /* No type info available for some library calls ... */ if (!type) return GET_MODE_CLASS (mode) == MODE_INT - || (TARGET_SOFT_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT); + || (TARGET_SOFT_FLOAT && SCALAR_FLOAT_MODE_P (mode)); /* We accept small integral (and similar) types. */ if (INTEGRAL_TYPE_P (type) @@ -7741,11 +7833,10 @@ s390_function_value (tree type, enum machine_mode mode) mode = promote_mode (type, TYPE_MODE (type), &unsignedp, 1); } - gcc_assert (GET_MODE_CLASS (mode) == MODE_INT - || GET_MODE_CLASS (mode) == MODE_FLOAT); + gcc_assert (GET_MODE_CLASS (mode) == MODE_INT || SCALAR_FLOAT_MODE_P (mode)); gcc_assert (GET_MODE_SIZE (mode) <= 8); - if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT) + if (TARGET_HARD_FLOAT && SCALAR_FLOAT_MODE_P (mode)) return gen_rtx_REG (mode, 16); else return gen_rtx_REG (mode, 2); @@ -9239,6 +9330,9 @@ s390_reorg (void) #define TARGET_MANGLE_FUNDAMENTAL_TYPE s390_mangle_fundamental_type #endif +#undef TARGET_SCALAR_MODE_SUPPORTED_P +#define TARGET_SCALAR_MODE_SUPPORTED_P s390_scalar_mode_supported_p + struct gcc_target targetm = TARGET_INITIALIZER; #include "gt-s390.h" diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h index 1a61158ba04..2f9b7d0f527 100644 --- a/gcc/config/s390/s390.h +++ b/gcc/config/s390/s390.h @@ -355,36 +355,15 @@ if (INTEGRAL_MODE_P (MODE) && \ Condition code modes fit only into the CC register. */ +/* Because all registers in a class have the same size HARD_REGNO_NREGS + is equivalent to CLASS_MAX_NREGS. */ #define HARD_REGNO_NREGS(REGNO, MODE) \ - (FP_REGNO_P(REGNO)? \ - (GET_MODE_CLASS(MODE) == MODE_COMPLEX_FLOAT ? \ - 2 * ((GET_MODE_SIZE(MODE) / 2 + 8 - 1) / 8) : \ - ((GET_MODE_SIZE(MODE) + 8 - 1) / 8)) : \ - GENERAL_REGNO_P(REGNO)? \ - ((GET_MODE_SIZE(MODE)+UNITS_PER_WORD-1) / UNITS_PER_WORD) : \ - ACCESS_REGNO_P(REGNO)? \ - ((GET_MODE_SIZE(MODE) + 4 - 1) / 4) : \ - 1) - -#define HARD_REGNO_MODE_OK(REGNO, MODE) \ - (FP_REGNO_P(REGNO)? \ - (((MODE) == SImode || (MODE) == DImode \ - || GET_MODE_CLASS(MODE) == MODE_FLOAT \ - || GET_MODE_CLASS(MODE) == MODE_COMPLEX_FLOAT) \ - && (HARD_REGNO_NREGS(REGNO, MODE) == 1 || !((REGNO) & 1))) : \ - GENERAL_REGNO_P(REGNO)? \ - ((HARD_REGNO_NREGS(REGNO, MODE) == 1 || !((REGNO) & 1)) \ - && (((MODE) != TFmode && (MODE) != TCmode) || TARGET_64BIT)) : \ - CC_REGNO_P(REGNO)? \ - GET_MODE_CLASS (MODE) == MODE_CC : \ - FRAME_REGNO_P(REGNO)? \ - (enum machine_mode) (MODE) == Pmode : \ - ACCESS_REGNO_P(REGNO)? \ - (((MODE) == SImode || ((enum machine_mode) (MODE) == Pmode)) \ - && (HARD_REGNO_NREGS(REGNO, MODE) == 1 || !((REGNO) & 1))) : \ - 0) - -#define HARD_REGNO_RENAME_OK(FROM, TO) \ + s390_class_max_nregs (REGNO_REG_CLASS (REGNO), (MODE)) + +#define HARD_REGNO_MODE_OK(REGNO, MODE) \ + s390_hard_regno_mode_ok ((REGNO), (MODE)) + +#define HARD_REGNO_RENAME_OK(FROM, TO) \ s390_hard_regno_rename_ok (FROM, TO) #define MODES_TIEABLE_P(MODE1, MODE2) \ @@ -394,13 +373,7 @@ if (INTEGRAL_MODE_P (MODE) && \ /* Maximum number of registers to represent a value of mode MODE in a register of class CLASS. */ #define CLASS_MAX_NREGS(CLASS, MODE) \ - ((CLASS) == FP_REGS ? \ - (GET_MODE_CLASS(MODE) == MODE_COMPLEX_FLOAT ? \ - 2 * (GET_MODE_SIZE (MODE) / 2 + 8 - 1) / 8 : \ - (GET_MODE_SIZE (MODE) + 8 - 1) / 8) : \ - (CLASS) == ACCESS_REGS ? \ - (GET_MODE_SIZE (MODE) + 4 - 1) / 4 : \ - (GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) + s390_class_max_nregs ((CLASS), (MODE)) /* If a 4-byte value is loaded into a FPR, it is placed into the *upper* half of the register, not the lower. Therefore, we @@ -476,8 +449,8 @@ extern const enum reg_class regclass_map[FIRST_PSEUDO_REGISTER]; or a pseudo register currently allocated to one such. */ #define REGNO_OK_FOR_INDEX_P(REGNO) \ (((REGNO) < FIRST_PSEUDO_REGISTER \ - && REGNO_REG_CLASS ((REGNO)) == ADDR_REGS) \ - || (reg_renumber[REGNO] > 0 && reg_renumber[REGNO] < 16)) + && REGNO_REG_CLASS ((REGNO)) == ADDR_REGS) \ + || ADDR_REGNO_P (reg_renumber[REGNO])) #define REGNO_OK_FOR_BASE_P(REGNO) REGNO_OK_FOR_INDEX_P (REGNO) @@ -729,38 +702,6 @@ CUMULATIVE_ARGS; /* Maximum number of registers that can appear in a valid memory address. */ #define MAX_REGS_PER_ADDRESS 2 -/* 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 all. The symbol REG_OK_STRICT causes the latter - definition to be used. - - Most source files want to accept pseudo regs in the hope that they will - get allocated to the class that the insn wants them to be in. - Some source files that are used after register allocation - need to be strict. */ - -#define REG_OK_FOR_INDEX_NONSTRICT_P(X) \ -((GET_MODE (X) == Pmode) && \ - ((REGNO (X) >= FIRST_PSEUDO_REGISTER) \ - || REGNO_REG_CLASS (REGNO (X)) == ADDR_REGS)) - -#define REG_OK_FOR_BASE_NONSTRICT_P(X) REG_OK_FOR_INDEX_NONSTRICT_P (X) - -#define REG_OK_FOR_INDEX_STRICT_P(X) \ -((GET_MODE (X) == Pmode) && (REGNO_OK_FOR_INDEX_P (REGNO (X)))) - -#define REG_OK_FOR_BASE_STRICT_P(X) \ -((GET_MODE (X) == Pmode) && (REGNO_OK_FOR_BASE_P (REGNO (X)))) - -#ifndef REG_OK_STRICT -#define REG_OK_FOR_INDEX_P(X) REG_OK_FOR_INDEX_NONSTRICT_P(X) -#define REG_OK_FOR_BASE_P(X) REG_OK_FOR_BASE_NONSTRICT_P(X) -#else -#define REG_OK_FOR_INDEX_P(X) REG_OK_FOR_INDEX_STRICT_P(X) -#define REG_OK_FOR_BASE_P(X) REG_OK_FOR_BASE_STRICT_P(X) -#endif - /* S/390 has no mode dependent addresses. */ #define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL) diff --git a/gcc/config/sh/crt1.asm b/gcc/config/sh/crt1.asm index bd309bb82e3..c110fa07427 100644 --- a/gcc/config/sh/crt1.asm +++ b/gcc/config/sh/crt1.asm @@ -688,6 +688,11 @@ __superh_trap_handler: .section .bss old_vbr: .long 0 +#ifdef PROFILE +profiling_enabled: + .long 0 +#endif + .section .text .global start @@ -764,6 +769,30 @@ set_sr: jsr @r0 nop +#ifdef PROFILE + ! arrange for exit to call _mcleanup (via stop_profiling) + mova stop_profiling,r0 + mov.l atexit_k,r1 + jsr @r1 + mov r0, r4 + + ! Call profiler startup code + mov.l monstartup_k, r0 + mov.l start_k, r4 + mov.l etext_k, r5 + jsr @r0 + nop + + ! enable profiling trap + ! until now any trap 33s will have been ignored + ! This means that all library functions called before this point + ! (directly or indirectly) may have the profiling trap at the start. + ! Therefore, only mcount itself may not have the extra header. + mov.l profiling_enabled_k2, r0 + mov #1, r1 + mov.l r1, @r0 +#endif /* PROFILE */ + ! call init mov.l init_k,r0 jsr @r0 @@ -780,6 +809,32 @@ set_sr: jsr @r0 nop + .balign 4 +#ifdef PROFILE +stop_profiling: + # stop mcount counting + mov.l profiling_enabled_k2, r0 + mov #0, r1 + mov.l r1, @r0 + + # call mcleanup + mov.l mcleanup_k, r0 + jmp @r0 + nop + + .balign 4 +mcleanup_k: + .long __mcleanup +monstartup_k: + .long ___monstartup +profiling_enabled_k2: + .long profiling_enabled +start_k: + .long _start +etext_k: + .long __etext +#endif /* PROFILE */ + .align 2 #if defined (__SH_FPU_ANY__) set_fpscr_k: @@ -818,10 +873,18 @@ sr_initial_rtos: rtos_start_fn: .long ___rtos_profiler_start_timer +#ifdef PROFILE +sr_initial_bare: + ! Privileged mode RB 1 BL 0. Keep BL 0 to allow default trap handlers to work. + ! For bare machine, we need to enable interrupts to get profiling working + .long 0x60000001 +#else + sr_initial_bare: ! Privileged mode RB 1 BL 0. Keep BL 0 to allow default trap handlers to work. ! Keep interrupts disabled - the application will enable as required. .long 0x600000f1 +#endif ! supplied for backward compatibility only, in case of linking ! code whose main() was compiled with an older version of GCC. @@ -849,6 +912,92 @@ vbr_start: .balign 256 vbr_100: + #ifdef PROFILE + ! Note on register usage. + ! we use r0..r3 as scratch in this code. If we are here due to a trapa for profiling + ! then this is OK as we are just before executing any function code. + ! The other r4..r7 we save explicityl on the stack + ! Remaining registers are saved by normal ABI conventions and we assert we do not + ! use floating point registers. + mov.l expevt_k1, r1 + mov.l @r1, r1 + mov.l event_mask, r0 + and r0,r1 + mov.l trapcode_k, r2 + cmp/eq r1,r2 + bt 1f + bra handler_100 ! if not a trapa, go to default handler + nop +1: + mov.l trapa_k, r0 + mov.l @r0, r0 + shlr2 r0 ! trapa code is shifted by 2. + cmp/eq #33, r0 + bt 2f + bra handler_100 + nop +2: + + ! If here then it looks like we have trap #33 + ! Now we need to call mcount with the following convention + ! Save and restore r4..r7 + mov.l r4,@-r15 + mov.l r5,@-r15 + mov.l r6,@-r15 + mov.l r7,@-r15 + sts.l pr,@-r15 + + ! r4 is frompc. + ! r5 is selfpc + ! r0 is the branch back address. + ! The code sequence emitted by gcc for the profiling trap is + ! .align 2 + ! trapa #33 + ! .align 2 + ! .long lab Where lab is planted by the compiler. This is the address + ! of a datum that needs to be incremented. + sts pr, r4 ! frompc + stc spc, r5 ! selfpc + mov #2, r2 + not r2, r2 ! pattern to align to 4 + and r2, r5 ! r5 now has aligned address +! add #4, r5 ! r5 now has address of address + mov r5, r2 ! Remember it. +! mov.l @r5, r5 ! r5 has value of lable (lab in above example) + add #8, r2 + ldc r2, spc ! our return address avoiding address word + + ! only call mcount if profiling is enabled + mov.l profiling_enabled_k, r0 + mov.l @r0, r0 + cmp/eq #0, r0 + bt 3f + ! call mcount + mov.l mcount_k, r2 + jsr @r2 + nop +3: + lds.l @r15+,pr + mov.l @r15+,r7 + mov.l @r15+,r6 + mov.l @r15+,r5 + mov.l @r15+,r4 + rte + nop + .balign 4 +event_mask: + .long 0xfff +trapcode_k: + .long 0x160 +expevt_k1: + .long 0xff000024 ! Address of expevt +trapa_k: + .long 0xff000020 +mcount_k: + .long __call_mcount +profiling_enabled_k: + .long profiling_enabled +#endif ! Non profiling case. handler_100: mov.l 2f, r0 ! load the old vbr setting (if any) @@ -899,13 +1048,12 @@ vbr_300: bra handler nop 1: ! there was a previous handler - chain them - add #0x7f, r0 ! 0x7f - add #0x7f, r0 ! 0xfe - add #0x7f, r0 ! 0x17d - add #0x7f, r0 ! 0x1fc - add #0x7f, r0 ! 0x27b - add #0x7f, r0 ! 0x2fa - add #0x6, r0 ! add 0x300 without corrupting another register + rotcr r0 + rotcr r0 + add #0x7f, r0 ! 0x1fc + add #0x41, r0 ! 0x300 + rotcl r0 + rotcl r0 ! Add 0x300 without corrupting another register jmp @r0 nop .balign 4 @@ -920,15 +1068,13 @@ vbr_400: ! Should be at vbr+0x400 ! no previous vbr - jump to own generic handler bt handler ! there was a previous handler - chain them - add #0x7f, r0 ! 0x7f - add #0x7f, r0 ! 0xfe - add #0x7f, r0 ! 0x17d - add #0x7f, r0 ! 0x1fc - add #0x7f, r0 ! 0x27b - add #0x7f, r0 ! 0x2fa - add #0x7f, r0 ! 0x379 - add #0x7f, r0 ! 0x3f8 - add #0x8, r0 ! add 0x400 without corrupting another register + rotcr r0 + rotcr r0 + add #0x7f, r0 ! 0x1fc + add #0x7f, r0 ! 0x3f8 + add #0x02, r0 ! 0x400 + rotcl r0 + rotcl r0 ! Add 0x400 without corrupting another register jmp @r0 nop .balign 4 @@ -965,17 +1111,13 @@ vbr_500: ! no previous vbr - jump to own generic handler bt handler ! there was a previous handler - chain them - add #0x7f, r0 ! 0x7f - add #0x7f, r0 ! 0xfe - add #0x7f, r0 ! 0x17d - add #0x7f, r0 ! 0x1fc - add #0x7f, r0 ! 0x27b - add #0x7f, r0 ! 0x2fa - add #0x7f, r0 ! 0x379 - add #0x7f, r0 ! 0x3f8 - add #0x7f, r0 ! 0x477 - add #0x7f, r0 ! 0x4f6 - add #0xa, r0 ! add 0x500 without corrupting another register + rotcr r0 + rotcr r0 + add #0x7f, r0 ! 0x1fc + add #0x7f, r0 ! 0x3f8 + add #0x42, r0 ! 0x500 + rotcl r0 + rotcl r0 ! Add 0x500 without corrupting another register jmp @r0 nop .balign 4 @@ -984,30 +1126,58 @@ vbr_500: .balign 256 vbr_600: - mov.l 2f, r0 ! load the old vbr setting (if any) +#ifdef PROFILE + ! Should be at vbr+0x600 + ! Now we are in the land of interrupts so need to save more state. + ! Save register state + mov.l interrupt_stack_k, r15 ! r15 has been saved to sgr. + mov.l r0,@-r15 + mov.l r1,@-r15 + mov.l r2,@-r15 + mov.l r3,@-r15 + mov.l r4,@-r15 + mov.l r5,@-r15 + mov.l r6,@-r15 + mov.l r7,@-r15 + sts.l pr,@-r15 + ! Pass interrupted pc to timer_handler as first parameter (r4). + stc spc, r4 + mov.l timer_handler_k, r0 + jsr @r0 + nop + lds.l @r15+,pr + mov.l @r15+,r7 + mov.l @r15+,r6 + mov.l @r15+,r5 + mov.l @r15+,r4 + mov.l @r15+,r3 + mov.l @r15+,r2 + mov.l @r15+,r1 + mov.l @r15+,r0 + stc sgr, r15 ! Restore r15, destroyed by this sequence. + rte + nop +#else + mov.l 2f, r0 ! Load the old vbr setting (if any). mov.l @r0, r0 cmp/eq #0, r0 ! no previous vbr - jump to own handler bt chandler ! there was a previous handler - chain them - add #0x7f, r0 ! 0x7f - add #0x7f, r0 ! 0xfe - add #0x7f, r0 ! 0x17d - add #0x7f, r0 ! 0x1fc - add #0x7f, r0 ! 0x27b - add #0x7f, r0 ! 0x2fa - add #0x7f, r0 ! 0x379 - add #0x7f, r0 ! 0x3f8 - add #0x7f, r0 ! 0x477 - add #0x7f, r0 ! 0x4f6 - add #0x7f, r0 ! 0x575 - add #0x7f, r0 ! 0x5f4 - add #0xc, r0 ! add 0x600 without corrupting another register + rotcr r0 + rotcr r0 + add #0x7f, r0 ! 0x1fc + add #0x7f, r0 ! 0x3f8 + add #0x7f, r0 ! 0x5f4 + add #0x03, r0 ! 0x600 + rotcl r0 + rotcl r0 ! Add 0x600 without corrupting another register jmp @r0 nop .balign 4 2: .long old_vbr +#endif /* PROFILE code */ chandler: mov.l expevt_k, r4 mov.l @r4, r4 ! r4 is value of expevt hence making this the return code @@ -1020,6 +1190,12 @@ limbo: bra limbo nop .balign 4 +#ifdef PROFILE +interrupt_stack_k: + .long __timer_stack ! The high end of the stack +timer_handler_k: + .long __profil_counter +#endif expevt_k: .long 0xff000024 ! Address of expevt chandler_k: diff --git a/gcc/config/sh/divcost-analysis b/gcc/config/sh/divcost-analysis new file mode 100644 index 00000000000..541e31324b3 --- /dev/null +++ b/gcc/config/sh/divcost-analysis @@ -0,0 +1,76 @@ +Analysis of cycle costs for SH4: + +-> udiv_le128: 5 +-> udiv_ge64k: 6 +-> udiv udiv_25: 10 +-> pos_divisor: 3 +-> pos_result linear: 5 +-> pos_result - -: 5 +-> div_le128: 7 +-> div_ge64k: 9 +sdivsi3 -> udiv_25 13 +udiv25 -> div_ge64k_end: 15 +div_ge64k_end -> rts: 13 +div_le128 -> div_le128_2: 2, r1 latency 3 +udiv_le128 -> div_le128_2: 2, r1 latency 3 +(u)div_le128 -> div_by_1: 9 +(u)div_le128 -> rts: 17 +div_by_1(_neg) -> rts: 4 +div_ge64k -> div_r8: 2 +div_ge64k -> div_ge64k_2: 3 +udiv_ge64k -> udiv_r8: 3 +udiv_ge64k -> div_ge64k_2: 3 + LS +(u)div_ge64k -> div_ge64k_end: 13 +div_r8 -> div_r8_2: 2 +udiv_r8 -> div_r8_2: 2 + LS +(u)div_r8 -> rts: 21 + +-> - + neg_result: 5 +-> + - neg_result: 5 +-> div_le128_neg: 7 +-> div_ge64k_neg: 9 +-> div_r8_neg: 11 +-> <64k div_ge64k_neg_end: 28 +-> >=64k div_ge64k_neg_end: 22 +div_ge64k_neg_end ft -> rts: 14 +div_r8_neg_end -> rts: 4 +div_r8_neg -> div_r8_neg_end: 18 +div_le128_neg -> div_by_1_neg: 4 +div_le128_neg -> rts 18 + + absolute divisor range: + 1 [2..128] [129..64K) [64K..|divident|/256] >=64K,>|divident/256| +udiv 18 22 38 32 30 +sdiv pos: 20 24 41 35 32 +sdiv neg: 15 25 42 36 33 + + +fp-based: + +unsigned: 42 + 3 + 3 (lingering ftrc latency + sts fpul,rx) at caller's site +signed: 33 + 3 + 3 (lingering ftrc latency + sts fpul,rx) at caller's site + +call-div1: divisor range: + [1..64K) >= 64K +unsigned: 63 58 +signed: 76 76 + +SFUNC_STATIC call overhead: +mov.l 0f,r1 +bsrf r1 + +SFUNC_GOT call overhead - current: +mov.l 0f,r1 +mova 0f,r0 +mov.l 1f,r2 +add r1,r0 +mov.l @(r0,r2),r0 +jmp @r0 +; 3 cycles worse than SFUNC_STATIC + +SFUNC_GOT call overhead - improved assembler: +mov.l 0f,r1 +mova 0f,r0 +mov.l @(r0,r1),r0 +jmp @r0 +; 2 cycles worse than SFUNC_STATIC diff --git a/gcc/config/sh/divtab-sh4.c b/gcc/config/sh/divtab-sh4.c new file mode 100644 index 00000000000..9877eda1fcc --- /dev/null +++ b/gcc/config/sh/divtab-sh4.c @@ -0,0 +1,90 @@ +/* Copyright (C) 2004 Free Software Foundation, Inc. + +This file 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. + +In addition to the permissions in the GNU General Public License, the +Free Software Foundation gives you unlimited permission to link the +compiled version of this file into combinations with other programs, +and to distribute those combinations without any restriction coming +from the use of this file. (The General Public License restrictions +do apply in other respects; for example, they cover modification of +the file, and distribution when not linked into a combine +executable.) + +This file 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 COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +/* Calculate division table for SH2..4 integer division + Contributed by Joern Rernnecke + joern.rennecke@superh.com */ + +#include +#include + +int +main () +{ + int i, j; + double q, r, err, max_err = 0, max_s_err = 0; + + puts("/* This table has been generated by divtab-sh4.c. */"); + puts ("\t.balign 4"); + puts ("LOCAL(div_table_clz):"); + /* output some dummy number for 1/0. */ + printf ("\t.byte\t%d\n", 0); + for (i = 1; i <= 128; i++) + { + int n = 0; + if (i == 128) + puts ("\ +/* Lookup table translating positive divisor to index into table of\n\ + normalized inverse. N.B. the '0' entry is also the last entry of the\n\ + previous table, and causes an unaligned access for division by zero. */\n\ +LOCAL(div_table_ix):"); + for (j = i; j <= 128; j += j) + n++; + printf ("\t.byte\t%d\n", n - 7); + } + for (i = 1; i <= 128; i++) + { + j = i < 0 ? -i : i; + while (j < 128) + j += j; + printf ("\t.byte\t%d\n", j * 2 - 96*4); + } + puts("\ +/* 1/64 .. 1/127, normalized. There is an implicit leading 1 in bit 32. */\n\ + .balign 4\n\ +LOCAL(zero_l):"); + for (i = 64; i < 128; i++) + { + if (i == 96) + puts ("LOCAL(div_table):"); + q = 4.*(1<<30)*128/i; + r = ceil (q); + /* The value for 64 is actually differently scaled that it would + appear from this calculation. The implicit part is %01, not 10. + Still, since the value in the table is 0 either way, this + doesn't matter here. Still, the 1/64 entry is effectively a 1/128 + entry. */ + printf ("\t.long\t0x%X\n", (unsigned) r); + err = r - q; + if (err > max_err) + max_err = err; + err = err * i / 128; + if (err > max_s_err) + max_s_err = err; + } + printf ("\t/* maximum error: %f scaled: %f*/\n", max_err, max_s_err); + exit (0); +} diff --git a/gcc/config/sh/embed-elf.h b/gcc/config/sh/embed-elf.h index 2542c4c16bc..f8c0713ee65 100644 --- a/gcc/config/sh/embed-elf.h +++ b/gcc/config/sh/embed-elf.h @@ -24,3 +24,8 @@ Boston, MA 02110-1301, USA. */ #define USER_LABEL_PREFIX "_" #undef TARGET_POSIX_IO + +#define LIBGCC_SPEC "%{!shared: \ + %{m4-100*:-lic_invalidate_array_4-100} \ + %{m4-200*:-lic_invalidate_array_4-200} \ + %{m4a*:-lic_invalidate_array_4a}} -lgcc" diff --git a/gcc/config/sh/lib1funcs.asm b/gcc/config/sh/lib1funcs.asm index 53334500865..07292812abc 100644 --- a/gcc/config/sh/lib1funcs.asm +++ b/gcc/config/sh/lib1funcs.asm @@ -1,5 +1,5 @@ /* Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005 + 2004, 2005, 2006 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it @@ -2141,7 +2141,8 @@ GLOBAL(ic_invalidate): #endif /* L_ic_invalidate */ #ifdef L_ic_invalidate_array -#if defined(__SH4A__) +#if defined(__SH4A__) || (defined (__FORCE_SH4A__) && (defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__) || (defined(__SH4_NOFPU__) && !defined(__SH5__)))) + .global GLOBAL(ic_invalidate_array) /* This is needed when an SH4 dso with trampolines is used on SH4A. */ .global GLOBAL(ic_invalidate_array) FUNC(GLOBAL(ic_invalidate_array)) @@ -3019,8 +3020,8 @@ GLOBAL(GCC_pop_shmedia_regs_nofpu): #endif /* __SH5__ == 32 */ #endif /* L_push_pop_shmedia_regs */ -#if __SH5__ #ifdef L_div_table +#if __SH5__ #if defined(__pic__) && defined(__SHMEDIA__) .global GLOBAL(sdivsi3) FUNC(GLOBAL(sdivsi3)) @@ -3247,5 +3248,632 @@ GLOBAL(div_table): .word 17738 .word 17136 .word 16639 + +#elif defined (__SH3__) || defined (__SH3E__) || defined (__SH4__) || defined (__SH4_SINGLE__) || defined (__SH4_SINGLE_ONLY__) || defined (__SH4_NOFPU__) +/* This code used shld, thus is not suitable for SH1 / SH2. */ + +/* Signed / unsigned division without use of FPU, optimized for SH4. + Uses a lookup table for divisors in the range -128 .. +128, and + div1 with case distinction for larger divisors in three more ranges. + The code is lumped together with the table to allow the use of mova. */ +#ifdef __LITTLE_ENDIAN__ +#define L_LSB 0 +#define L_LSWMSB 1 +#define L_MSWLSB 2 +#else +#define L_LSB 3 +#define L_LSWMSB 2 +#define L_MSWLSB 1 +#endif + + .balign 4 + .global GLOBAL(udivsi3_i4i) + FUNC(GLOBAL(udivsi3_i4i)) +GLOBAL(udivsi3_i4i): + mov.w LOCAL(c128_w), r1 + div0u + mov r4,r0 + shlr8 r0 + cmp/hi r1,r5 + extu.w r5,r1 + bf LOCAL(udiv_le128) + cmp/eq r5,r1 + bf LOCAL(udiv_ge64k) + shlr r0 + mov r5,r1 + shll16 r5 + mov.l r4,@-r15 + div1 r5,r0 + mov.l r1,@-r15 + div1 r5,r0 + div1 r5,r0 + bra LOCAL(udiv_25) + div1 r5,r0 + +LOCAL(div_le128): + mova LOCAL(div_table_ix),r0 + bra LOCAL(div_le128_2) + mov.b @(r0,r5),r1 +LOCAL(udiv_le128): + mov.l r4,@-r15 + mova LOCAL(div_table_ix),r0 + mov.b @(r0,r5),r1 + mov.l r5,@-r15 +LOCAL(div_le128_2): + mova LOCAL(div_table_inv),r0 + mov.l @(r0,r1),r1 + mov r5,r0 + tst #0xfe,r0 + mova LOCAL(div_table_clz),r0 + dmulu.l r1,r4 + mov.b @(r0,r5),r1 + bt/s LOCAL(div_by_1) + mov r4,r0 + mov.l @r15+,r5 + sts mach,r0 + /* clrt */ + addc r4,r0 + mov.l @r15+,r4 + rotcr r0 + rts + shld r1,r0 + +LOCAL(div_by_1_neg): + neg r4,r0 +LOCAL(div_by_1): + mov.l @r15+,r5 + rts + mov.l @r15+,r4 + +LOCAL(div_ge64k): + bt/s LOCAL(div_r8) + div0u + shll8 r5 + bra LOCAL(div_ge64k_2) + div1 r5,r0 +LOCAL(udiv_ge64k): + cmp/hi r0,r5 + mov r5,r1 + bt LOCAL(udiv_r8) + shll8 r5 + mov.l r4,@-r15 + div1 r5,r0 + mov.l r1,@-r15 +LOCAL(div_ge64k_2): + div1 r5,r0 + mov.l LOCAL(zero_l),r1 + .rept 4 + div1 r5,r0 + .endr + mov.l r1,@-r15 + div1 r5,r0 + mov.w LOCAL(m256_w),r1 + div1 r5,r0 + mov.b r0,@(L_LSWMSB,r15) + xor r4,r0 + and r1,r0 + bra LOCAL(div_ge64k_end) + xor r4,r0 + +LOCAL(div_r8): + shll16 r4 + bra LOCAL(div_r8_2) + shll8 r4 +LOCAL(udiv_r8): + mov.l r4,@-r15 + shll16 r4 + clrt + shll8 r4 + mov.l r5,@-r15 +LOCAL(div_r8_2): + rotcl r4 + mov r0,r1 + div1 r5,r1 + mov r4,r0 + rotcl r0 + mov r5,r4 + div1 r5,r1 + .rept 5 + rotcl r0; div1 r5,r1 + .endr + rotcl r0 + mov.l @r15+,r5 + div1 r4,r1 + mov.l @r15+,r4 + rts + rotcl r0 + + ENDFUNC(GLOBAL(udivsi3_i4i)) + + .global GLOBAL(sdivsi3_i4i) + FUNC(GLOBAL(sdivsi3_i4i)) + /* This is link-compatible with a GLOBAL(sdivsi3) call, + but we effectively clobber only r1. */ +GLOBAL(sdivsi3_i4i): + mov.l r4,@-r15 + cmp/pz r5 + mov.w LOCAL(c128_w), r1 + bt/s LOCAL(pos_divisor) + cmp/pz r4 + mov.l r5,@-r15 + neg r5,r5 + bt/s LOCAL(neg_result) + cmp/hi r1,r5 + neg r4,r4 +LOCAL(pos_result): + extu.w r5,r0 + bf LOCAL(div_le128) + cmp/eq r5,r0 + mov r4,r0 + shlr8 r0 + bf/s LOCAL(div_ge64k) + cmp/hi r0,r5 + div0u + shll16 r5 + div1 r5,r0 + div1 r5,r0 + div1 r5,r0 +LOCAL(udiv_25): + mov.l LOCAL(zero_l),r1 + div1 r5,r0 + div1 r5,r0 + mov.l r1,@-r15 + .rept 3 + div1 r5,r0 + .endr + mov.b r0,@(L_MSWLSB,r15) + xtrct r4,r0 + swap.w r0,r0 + .rept 8 + div1 r5,r0 + .endr + mov.b r0,@(L_LSWMSB,r15) +LOCAL(div_ge64k_end): + .rept 8 + div1 r5,r0 + .endr + mov.l @r15+,r4 ! zero-extension and swap using LS unit. + extu.b r0,r0 + mov.l @r15+,r5 + or r4,r0 + mov.l @r15+,r4 + rts + rotcl r0 + +LOCAL(div_le128_neg): + tst #0xfe,r0 + mova LOCAL(div_table_ix),r0 + mov.b @(r0,r5),r1 + mova LOCAL(div_table_inv),r0 + bt/s LOCAL(div_by_1_neg) + mov.l @(r0,r1),r1 + mova LOCAL(div_table_clz),r0 + dmulu.l r1,r4 + mov.b @(r0,r5),r1 + mov.l @r15+,r5 + sts mach,r0 + /* clrt */ + addc r4,r0 + mov.l @r15+,r4 + rotcr r0 + shld r1,r0 + rts + neg r0,r0 + +LOCAL(pos_divisor): + mov.l r5,@-r15 + bt/s LOCAL(pos_result) + cmp/hi r1,r5 + neg r4,r4 +LOCAL(neg_result): + extu.w r5,r0 + bf LOCAL(div_le128_neg) + cmp/eq r5,r0 + mov r4,r0 + shlr8 r0 + bf/s LOCAL(div_ge64k_neg) + cmp/hi r0,r5 + div0u + mov.l LOCAL(zero_l),r1 + shll16 r5 + div1 r5,r0 + mov.l r1,@-r15 + .rept 7 + div1 r5,r0 + .endr + mov.b r0,@(L_MSWLSB,r15) + xtrct r4,r0 + swap.w r0,r0 + .rept 8 + div1 r5,r0 + .endr + mov.b r0,@(L_LSWMSB,r15) +LOCAL(div_ge64k_neg_end): + .rept 8 + div1 r5,r0 + .endr + mov.l @r15+,r4 ! zero-extension and swap using LS unit. + extu.b r0,r1 + mov.l @r15+,r5 + or r4,r1 +LOCAL(div_r8_neg_end): + mov.l @r15+,r4 + rotcl r1 + rts + neg r1,r0 + +LOCAL(div_ge64k_neg): + bt/s LOCAL(div_r8_neg) + div0u + shll8 r5 + mov.l LOCAL(zero_l),r1 + .rept 6 + div1 r5,r0 + .endr + mov.l r1,@-r15 + div1 r5,r0 + mov.w LOCAL(m256_w),r1 + div1 r5,r0 + mov.b r0,@(L_LSWMSB,r15) + xor r4,r0 + and r1,r0 + bra LOCAL(div_ge64k_neg_end) + xor r4,r0 + +LOCAL(c128_w): + .word 128 + +LOCAL(div_r8_neg): + clrt + shll16 r4 + mov r4,r1 + shll8 r1 + mov r5,r4 + .rept 7 + rotcl r1; div1 r5,r0 + .endr + mov.l @r15+,r5 + rotcl r1 + bra LOCAL(div_r8_neg_end) + div1 r4,r0 + +LOCAL(m256_w): + .word 0xff00 +/* This table has been generated by divtab-sh4.c. */ + .balign 4 +LOCAL(div_table_clz): + .byte 0 + .byte 1 + .byte 0 + .byte -1 + .byte -1 + .byte -2 + .byte -2 + .byte -2 + .byte -2 + .byte -3 + .byte -3 + .byte -3 + .byte -3 + .byte -3 + .byte -3 + .byte -3 + .byte -3 + .byte -4 + .byte -4 + .byte -4 + .byte -4 + .byte -4 + .byte -4 + .byte -4 + .byte -4 + .byte -4 + .byte -4 + .byte -4 + .byte -4 + .byte -4 + .byte -4 + .byte -4 + .byte -4 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -5 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 + .byte -6 +/* Lookup table translating positive divisor to index into table of + normalized inverse. N.B. the '0' entry is also the last entry of the + previous table, and causes an unaligned access for division by zero. */ +LOCAL(div_table_ix): + .byte -6 + .byte -128 + .byte -128 + .byte 0 + .byte -128 + .byte -64 + .byte 0 + .byte 64 + .byte -128 + .byte -96 + .byte -64 + .byte -32 + .byte 0 + .byte 32 + .byte 64 + .byte 96 + .byte -128 + .byte -112 + .byte -96 + .byte -80 + .byte -64 + .byte -48 + .byte -32 + .byte -16 + .byte 0 + .byte 16 + .byte 32 + .byte 48 + .byte 64 + .byte 80 + .byte 96 + .byte 112 + .byte -128 + .byte -120 + .byte -112 + .byte -104 + .byte -96 + .byte -88 + .byte -80 + .byte -72 + .byte -64 + .byte -56 + .byte -48 + .byte -40 + .byte -32 + .byte -24 + .byte -16 + .byte -8 + .byte 0 + .byte 8 + .byte 16 + .byte 24 + .byte 32 + .byte 40 + .byte 48 + .byte 56 + .byte 64 + .byte 72 + .byte 80 + .byte 88 + .byte 96 + .byte 104 + .byte 112 + .byte 120 + .byte -128 + .byte -124 + .byte -120 + .byte -116 + .byte -112 + .byte -108 + .byte -104 + .byte -100 + .byte -96 + .byte -92 + .byte -88 + .byte -84 + .byte -80 + .byte -76 + .byte -72 + .byte -68 + .byte -64 + .byte -60 + .byte -56 + .byte -52 + .byte -48 + .byte -44 + .byte -40 + .byte -36 + .byte -32 + .byte -28 + .byte -24 + .byte -20 + .byte -16 + .byte -12 + .byte -8 + .byte -4 + .byte 0 + .byte 4 + .byte 8 + .byte 12 + .byte 16 + .byte 20 + .byte 24 + .byte 28 + .byte 32 + .byte 36 + .byte 40 + .byte 44 + .byte 48 + .byte 52 + .byte 56 + .byte 60 + .byte 64 + .byte 68 + .byte 72 + .byte 76 + .byte 80 + .byte 84 + .byte 88 + .byte 92 + .byte 96 + .byte 100 + .byte 104 + .byte 108 + .byte 112 + .byte 116 + .byte 120 + .byte 124 + .byte -128 +/* 1/64 .. 1/127, normalized. There is an implicit leading 1 in bit 32. */ + .balign 4 +LOCAL(zero_l): + .long 0x0 + .long 0xF81F81F9 + .long 0xF07C1F08 + .long 0xE9131AC0 + .long 0xE1E1E1E2 + .long 0xDAE6076C + .long 0xD41D41D5 + .long 0xCD856891 + .long 0xC71C71C8 + .long 0xC0E07039 + .long 0xBACF914D + .long 0xB4E81B4F + .long 0xAF286BCB + .long 0xA98EF607 + .long 0xA41A41A5 + .long 0x9EC8E952 + .long 0x9999999A + .long 0x948B0FCE + .long 0x8F9C18FA + .long 0x8ACB90F7 + .long 0x86186187 + .long 0x81818182 + .long 0x7D05F418 + .long 0x78A4C818 + .long 0x745D1746 + .long 0x702E05C1 + .long 0x6C16C16D + .long 0x68168169 + .long 0x642C8591 + .long 0x60581606 + .long 0x5C9882BA + .long 0x58ED2309 +LOCAL(div_table_inv): + .long 0x55555556 + .long 0x51D07EAF + .long 0x4E5E0A73 + .long 0x4AFD6A06 + .long 0x47AE147B + .long 0x446F8657 + .long 0x41414142 + .long 0x3E22CBCF + .long 0x3B13B13C + .long 0x38138139 + .long 0x3521CFB3 + .long 0x323E34A3 + .long 0x2F684BDB + .long 0x2C9FB4D9 + .long 0x29E4129F + .long 0x27350B89 + .long 0x24924925 + .long 0x21FB7813 + .long 0x1F7047DD + .long 0x1CF06ADB + .long 0x1A7B9612 + .long 0x18118119 + .long 0x15B1E5F8 + .long 0x135C8114 + .long 0x11111112 + .long 0xECF56BF + .long 0xC9714FC + .long 0xA6810A7 + .long 0x8421085 + .long 0x624DD30 + .long 0x4104105 + .long 0x2040811 + /* maximum error: 0.987342 scaled: 0.921875*/ + + ENDFUNC(GLOBAL(sdivsi3_i4i)) +#endif /* SH3 / SH4 */ + #endif /* L_div_table */ -#endif /* __SH5__ */ diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 53b624403ab..9f8415c9535 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -208,7 +208,7 @@ static int sh_issue_rate (void); static int sh_dfa_new_cycle (FILE *, int, rtx, int, int, int *sort_p); static short find_set_regmode_weight (rtx, enum machine_mode); static short find_insn_regmode_weight (rtx, enum machine_mode); -static void find_regmode_weight (int, enum machine_mode); +static void find_regmode_weight (basic_block, enum machine_mode); static void sh_md_init_global (FILE *, int, int); static void sh_md_finish_global (FILE *, int); static int rank_for_reorder (const void *, const void *); @@ -524,18 +524,26 @@ sh_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, return true; case OPT_m4: + case OPT_m4_100: + case OPT_m4_200: target_flags = (target_flags & ~MASK_ARCH) | SELECT_SH4; return true; case OPT_m4_nofpu: + case OPT_m4_400: + case OPT_m4_500: target_flags = (target_flags & ~MASK_ARCH) | SELECT_SH4_NOFPU; return true; case OPT_m4_single: + case OPT_m4_100_single: + case OPT_m4_200_single: target_flags = (target_flags & ~MASK_ARCH) | SELECT_SH4_SINGLE; return true; case OPT_m4_single_only: + case OPT_m4_100_single_only: + case OPT_m4_200_single_only: target_flags = (target_flags & ~MASK_ARCH) | SELECT_SH4_SINGLE_ONLY; return true; @@ -3048,6 +3056,8 @@ static int pool_size; static rtx pool_window_label; static int pool_window_last; +static int max_labelno_before_reorg; + /* ??? If we need a constant in HImode which is the truncated value of a constant we need in SImode, we could combine the two entries thus saving two bytes. Is this common enough to be worth the effort of implementing @@ -3332,6 +3342,8 @@ hi_const (rtx src) && INTVAL (src) <= 32767); } +#define MOVA_LABELREF(mova) XVECEXP (SET_SRC (PATTERN (mova)), 0, 0) + /* Nonzero if the insn is a move instruction which needs to be fixed. */ /* ??? For a DImode/DFmode moves, we don't need to fix it if each half of the @@ -3391,16 +3403,17 @@ mova_p (rtx insn) && GET_CODE (SET_SRC (PATTERN (insn))) == UNSPEC && XINT (SET_SRC (PATTERN (insn)), 1) == UNSPEC_MOVA /* Don't match mova_const. */ - && GET_CODE (XVECEXP (SET_SRC (PATTERN (insn)), 0, 0)) == LABEL_REF); + && GET_CODE (MOVA_LABELREF (insn)) == LABEL_REF); } /* Fix up a mova from a switch that went out of range. */ static void fixup_mova (rtx mova) { + PUT_MODE (XEXP (MOVA_LABELREF (mova), 0), QImode); if (! flag_pic) { - SET_SRC (PATTERN (mova)) = XVECEXP (SET_SRC (PATTERN (mova)), 0, 0); + SET_SRC (PATTERN (mova)) = MOVA_LABELREF (mova); INSN_CODE (mova) = -1; } else @@ -3434,6 +3447,53 @@ fixup_mova (rtx mova) } } +/* NEW_MOVA is a mova we've just encountered while scanning forward. Update + *num_mova, and check if the new mova is not nested within the first one. + return 0 if *first_mova was replaced, 1 if new_mova was replaced, + 2 if new_mova has been assigned to *first_mova, -1 otherwise.. */ +static int +untangle_mova (int *num_mova, rtx *first_mova, rtx new_mova) +{ + int n_addr = 0; /* Initialization to shut up spurious warning. */ + int f_target, n_target = 0; /* Likewise. */ + + if (optimize) + { + n_addr = INSN_ADDRESSES (INSN_UID (new_mova)); + n_target = INSN_ADDRESSES (INSN_UID (XEXP (MOVA_LABELREF (new_mova), 0))); + if (n_addr > n_target || n_addr + 1022 < n_target) + { + /* Change the mova into a load. + broken_move will then return true for it. */ + fixup_mova (new_mova); + return 1; + } + } + if (!(*num_mova)++) + { + *first_mova = new_mova; + return 2; + } + if (!optimize + || ((f_target + = INSN_ADDRESSES (INSN_UID (XEXP (MOVA_LABELREF (*first_mova), 0)))) + >= n_target)) + return -1; + + (*num_mova)--; + if (f_target - INSN_ADDRESSES (INSN_UID (*first_mova)) + > n_target - n_addr) + { + fixup_mova (*first_mova); + return 0; + } + else + { + fixup_mova (new_mova); + return 1; + } +} + /* Find the last barrier from insn FROM which is close enough to hold the constant pool. If we can't find one, then create one near the end of the range. */ @@ -3477,7 +3537,12 @@ find_barrier (int num_mova, rtx mova, rtx from) int inc = get_attr_length (from); int new_align = 1; - if (GET_CODE (from) == CODE_LABEL) + /* If this is a label that existed at the time of the compute_alignments + call, determine the alignment. N.B. When find_barrier recurses for + an out-of-reach mova, we might see labels at the start of previously + inserted constant tables. */ + if (GET_CODE (from) == CODE_LABEL + && CODE_LABEL_NUMBER (from) <= max_labelno_before_reorg) { if (optimize) new_align = 1 << label_to_alignment (from); @@ -3487,6 +3552,22 @@ find_barrier (int num_mova, rtx mova, rtx from) new_align = 1; inc = 0; } + /* In case we are scanning a constant table because of recursion, check + for explicit alignments. If the table is long, we might be forced + to emit the new table in front of it; the length of the alignment + might be the last straw. */ + else if (GET_CODE (from) == INSN + && GET_CODE (PATTERN (from)) == UNSPEC_VOLATILE + && XINT (PATTERN (from), 1) == UNSPECV_ALIGN) + new_align = INTVAL (XVECEXP (PATTERN (from), 0, 0)); + /* When we find the end of a constant table, paste the new constant + at the end. That is better than putting it in front because + this way, we don't need extra alignment for adding a 4-byte-aligned + mov(a) label to a 2/4 or 8/4 byte aligned table. */ + else if (GET_CODE (from) == INSN + && GET_CODE (PATTERN (from)) == UNSPEC_VOLATILE + && XINT (PATTERN (from), 1) == UNSPECV_CONST_END) + return from; if (GET_CODE (from) == BARRIER) { @@ -3551,11 +3632,16 @@ find_barrier (int num_mova, rtx mova, rtx from) if (mova_p (from)) { - if (! num_mova++) + switch (untangle_mova (&num_mova, &mova, from)) { - leading_mova = 0; - mova = from; - barrier_before_mova = good_barrier ? good_barrier : found_barrier; + case 0: return find_barrier (0, 0, mova); + case 2: + { + leading_mova = 0; + barrier_before_mova + = good_barrier ? good_barrier : found_barrier; + } + default: break; } if (found_si > count_si) count_si = found_si; @@ -3564,7 +3650,10 @@ find_barrier (int num_mova, rtx mova, rtx from) && (GET_CODE (PATTERN (from)) == ADDR_VEC || GET_CODE (PATTERN (from)) == ADDR_DIFF_VEC)) { - if (num_mova) + if ((num_mova > 1 && GET_MODE (prev_nonnote_insn (from)) == VOIDmode) + || (num_mova + && (prev_nonnote_insn (from) + == XEXP (MOVA_LABELREF (mova), 0)))) num_mova--; if (barrier_align (next_real_insn (from)) == align_jumps_log) { @@ -4284,6 +4373,7 @@ sh_reorg (void) rtx r0_inc_rtx = gen_rtx_POST_INC (Pmode, r0_rtx); first = get_insns (); + max_labelno_before_reorg = max_label_num (); /* We must split call insns before introducing `mova's. If we're optimizing, they'll have already been split. Otherwise, make @@ -4545,21 +4635,23 @@ sh_reorg (void) below the switch table. Check if that has happened. We only have the addresses available when optimizing; but then, this check shouldn't be needed when not optimizing. */ - rtx label_ref = XVECEXP (SET_SRC (PATTERN (insn)), 0, 0); - if (optimize - && (INSN_ADDRESSES (INSN_UID (insn)) - > INSN_ADDRESSES (INSN_UID (XEXP (label_ref, 0))))) + if (!untangle_mova (&num_mova, &mova, insn)) { - /* Change the mova into a load. - broken_move will then return true for it. */ - fixup_mova (insn); + insn = mova; + num_mova = 0; } - else if (! num_mova++) - mova = insn; } else if (GET_CODE (insn) == JUMP_INSN && GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC - && num_mova) + && num_mova + /* ??? loop invariant motion can also move a mova out of a + loop. Since loop does this code motion anyway, maybe we + should wrap UNSPEC_MOVA into a CONST, so that reload can + move it back. */ + && ((num_mova > 1 + && GET_MODE (prev_nonnote_insn (insn)) == VOIDmode) + || (prev_nonnote_insn (insn) + == XEXP (MOVA_LABELREF (mova), 0)))) { rtx scan; int total; @@ -4717,7 +4809,9 @@ sh_reorg (void) } } free_alloc_pool (label_ref_list_pool); - + for (insn = first; insn; insn = NEXT_INSN (insn)) + PUT_MODE (insn, VOIDmode); + mdep_reorg_phase = SH_SHORTEN_BRANCHES1; INSN_ADDRESSES_FREE (); split_branches (first); @@ -8662,11 +8756,11 @@ find_insn_regmode_weight (rtx insn, enum machine_mode mode) /* Calculate regmode weights for all insns of a basic block. */ static void -find_regmode_weight (int b, enum machine_mode mode) +find_regmode_weight (basic_block b, enum machine_mode mode) { rtx insn, next_tail, head, tail; - get_block_head_tail (b, &head, &tail); + get_ebb_head_tail (b, b, &head, &tail); next_tail = NEXT_INSN (tail); for (insn = head; insn != next_tail; insn = NEXT_INSN (insn)) @@ -8747,8 +8841,8 @@ sh_md_init_global (FILE *dump ATTRIBUTE_UNUSED, FOR_EACH_BB_REVERSE (b) { - find_regmode_weight (b->index, SImode); - find_regmode_weight (b->index, SFmode); + find_regmode_weight (b, SImode); + find_regmode_weight (b, SFmode); } CURR_REGMODE_PRESSURE (SImode) = 0; @@ -10815,11 +10909,4 @@ sh_secondary_reload (bool in_p, rtx x, enum reg_class class, enum sh_divide_strategy_e sh_div_strategy = SH_DIV_STRATEGY_DEFAULT; -/* This defines the storage for the variable part of a -mboard= option. - It is only required when using the sh-superh-elf target */ -#ifdef _SUPERH_H -const char * boardtype = "7750p2"; -const char * osruntime = "bare"; -#endif - #include "gt-sh.h" diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h index 099c938e269..6e833ccedb7 100644 --- a/gcc/config/sh/sh.h +++ b/gcc/config/sh/sh.h @@ -234,6 +234,9 @@ do { \ #define TARGET_DIVIDE_INV20L (sh_div_strategy == SH_DIV_INV20L) #define TARGET_DIVIDE_INV_CALL (sh_div_strategy == SH_DIV_INV_CALL) #define TARGET_DIVIDE_INV_CALL2 (sh_div_strategy == SH_DIV_INV_CALL2) +#define TARGET_DIVIDE_CALL_DIV1 (sh_div_strategy == SH_DIV_CALL_DIV1) +#define TARGET_DIVIDE_CALL_FP (sh_div_strategy == SH_DIV_CALL_FP) +#define TARGET_DIVIDE_CALL_TABLE (sh_div_strategy == SH_DIV_CALL_TABLE) #define SELECT_SH1 (MASK_SH1) #define SELECT_SH2 (MASK_SH2 | SELECT_SH1) @@ -467,7 +470,7 @@ do { \ sh_div_str = SH_DIV_STR_FOR_SIZE ; \ } \ /* We can't meaningfully test TARGET_SHMEDIA here, because -m options \ - haven't been parsed yet, hence we';d read only the default. \ + haven't been parsed yet, hence we'd read only the default. \ sh_target_reg_class will return NO_REGS if this is not SHMEDIA, so \ it's OK to always set flag_branch_target_load_optimize. */ \ if (LEVEL > 1) \ @@ -492,16 +495,24 @@ do { \ extern int assembler_dialect; enum sh_divide_strategy_e { + /* SH5 strategies. */ SH_DIV_CALL, SH_DIV_CALL2, - SH_DIV_FP, + SH_DIV_FP, /* We could do this also for SH4. */ SH_DIV_INV, SH_DIV_INV_MINLAT, SH_DIV_INV20U, SH_DIV_INV20L, SH_DIV_INV_CALL, SH_DIV_INV_CALL2, - SH_DIV_INV_FP + SH_DIV_INV_FP, + /* SH1 .. SH4 strategies. Because of the small number of registers + available, the compiler uses knowledge of the actual et of registers + being clobbed by the different functions called. */ + SH_DIV_CALL_DIV1, /* No FPU, medium size, highest latency. */ + SH_DIV_CALL_FP, /* FPU needed, small size, high latency. */ + SH_DIV_CALL_TABLE, /* No FPU, large size, medium latency. */ + SH_DIV_INTRINSIC }; extern enum sh_divide_strategy_e sh_div_strategy; @@ -611,17 +622,48 @@ do { \ targetm.asm_out.aligned_op.di = NULL; \ targetm.asm_out.unaligned_op.di = NULL; \ } \ + if (TARGET_SH1) \ + { \ + if (! strcmp (sh_div_str, "call-div1")) \ + sh_div_strategy = SH_DIV_CALL_DIV1; \ + else if (! strcmp (sh_div_str, "call-fp") \ + && (TARGET_FPU_DOUBLE \ + || (TARGET_HARD_SH4 && TARGET_SH2E) \ + || (TARGET_SHCOMPACT && TARGET_FPU_ANY))) \ + sh_div_strategy = SH_DIV_CALL_FP; \ + else if (! strcmp (sh_div_str, "call-table") && TARGET_SH3) \ + sh_div_strategy = SH_DIV_CALL_TABLE; \ + else \ + /* Pick one that makes most sense for the target in general. \ + It is not much good to use different functions depending \ + on -Os, since then we'll end up with two different functions \ + when some of the code is compiled for size, and some for \ + speed. */ \ + \ + /* SH4 tends to emphasize speed. */ \ + if (TARGET_HARD_SH4) \ + sh_div_strategy = SH_DIV_CALL_TABLE; \ + /* These have their own way of doing things. */ \ + else if (TARGET_SH2A) \ + sh_div_strategy = SH_DIV_INTRINSIC; \ + /* ??? Should we use the integer SHmedia function instead? */ \ + else if (TARGET_SHCOMPACT && TARGET_FPU_ANY) \ + sh_div_strategy = SH_DIV_CALL_FP; \ + /* SH1 .. SH3 cores often go into small-footprint systems, so \ + default to the smallest implementation available. */ \ + else \ + sh_div_strategy = SH_DIV_CALL_DIV1; \ + } \ + if (!TARGET_SH1) \ + TARGET_PRETEND_CMOVE = 0; \ if (sh_divsi3_libfunc[0]) \ ; /* User supplied - leave it alone. */ \ - else if (TARGET_HARD_SH4 && TARGET_SH2E) \ + else if (TARGET_DIVIDE_CALL_FP) \ sh_divsi3_libfunc = "__sdivsi3_i4"; \ + else if (TARGET_DIVIDE_CALL_TABLE) \ + sh_divsi3_libfunc = "__sdivsi3_i4i"; \ else if (TARGET_SH5) \ - { \ - if (TARGET_FPU_ANY && TARGET_SH1) \ - sh_divsi3_libfunc = "__sdivsi3_i4"; \ - else \ - sh_divsi3_libfunc = "__sdivsi3_1"; \ - } \ + sh_divsi3_libfunc = "__sdivsi3_1"; \ else \ sh_divsi3_libfunc = "__sdivsi3"; \ if (TARGET_FMOVD) \ diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md index e2e477f2a57..ff36d9a932a 100644 --- a/gcc/config/sh/sh.md +++ b/gcc/config/sh/sh.md @@ -1180,19 +1180,72 @@ DONE; }") +(define_insn "*movsicc_t_false" + [(set (match_operand:SI 0 "arith_reg_dest" "=r,r") + (if_then_else (eq (reg:SI T_REG) (const_int 0)) + (match_operand:SI 1 "general_movsrc_operand" "r,I08") + (match_operand:SI 2 "arith_reg_operand" "0,0")))] + "TARGET_PRETEND_CMOVE + && (arith_reg_operand (operands[1], SImode) + || (immediate_operand (operands[1], SImode) + && CONST_OK_FOR_I08 (INTVAL (operands[1]))))" + "bt 0f\;mov %1,%0\\n0:" + [(set_attr "type" "mt_group,arith") ;; poor approximation + (set_attr "length" "4")]) + +(define_insn "*movsicc_t_true" + [(set (match_operand:SI 0 "arith_reg_dest" "=r,r") + (if_then_else (ne (reg:SI T_REG) (const_int 0)) + (match_operand:SI 1 "general_movsrc_operand" "r,I08") + (match_operand:SI 2 "arith_reg_operand" "0,0")))] + "TARGET_PRETEND_CMOVE + && (arith_reg_operand (operands[1], SImode) + || (immediate_operand (operands[1], SImode) + && CONST_OK_FOR_I08 (INTVAL (operands[1]))))" + "bf 0f\;mov %1,%0\\n0:" + [(set_attr "type" "mt_group,arith") ;; poor approximation + (set_attr "length" "4")]) + (define_expand "movsicc" - [(set (match_operand:SI 0 "register_operand" "") + [(set (match_operand:SI 0 "arith_reg_dest" "") (if_then_else:SI (match_operand 1 "comparison_operator" "") - (match_operand:SI 2 "register_operand" "") - (match_operand:SI 3 "register_operand" "")))] - "TARGET_SHMEDIA" + (match_operand:SI 2 "arith_reg_or_0_operand" "") + (match_operand:SI 3 "arith_reg_operand" "")))] + "TARGET_SHMEDIA || TARGET_PRETEND_CMOVE" " { if ((GET_CODE (operands[1]) == EQ || GET_CODE (operands[1]) == NE) && GET_MODE (sh_compare_op0) == SImode + && (TARGET_SHMEDIA + || (REG_P (sh_compare_op0) && REGNO (sh_compare_op0) == T_REG)) && sh_compare_op1 == const0_rtx) operands[1] = gen_rtx_fmt_ee (GET_CODE (operands[1]), VOIDmode, sh_compare_op0, sh_compare_op1); + else if (TARGET_PRETEND_CMOVE) + { + enum rtx_code code = GET_CODE (operands[1]); + enum rtx_code new_code = code; + rtx tmp; + + if (! currently_expanding_to_rtl) + FAIL; + switch (code) + { + case LT: case LE: case LEU: case LTU: + if (GET_MODE_CLASS (GET_MODE (sh_compare_op0)) != MODE_INT) + break; + case NE: + new_code = reverse_condition (code); + break; + case EQ: case GT: case GE: case GEU: case GTU: + break; + default: + FAIL; + } + tmp = prepare_scc_operands (new_code); + operands[1] = gen_rtx_fmt_ee (new_code == code ? NE : EQ, VOIDmode, + tmp, const0_rtx); + } else { rtx tmp; @@ -1739,6 +1792,21 @@ [(set_attr "type" "sfunc") (set_attr "needs_delay_slot" "yes")]) +(define_insn "udivsi3_i4_int" + [(set (match_operand:SI 0 "register_operand" "=z") + (udiv:SI (reg:SI R4_REG) (reg:SI R5_REG))) + (clobber (reg:SI T_REG)) + (clobber (reg:SI R1_REG)) + (clobber (reg:SI PR_REG)) + (clobber (reg:SI MACH_REG)) + (clobber (reg:SI MACL_REG)) + (use (match_operand:SI 1 "arith_reg_operand" "r"))] + "TARGET_SH1" + "jsr @%1%#" + [(set_attr "type" "sfunc") + (set_attr "needs_delay_slot" "yes")]) + + (define_expand "udivsi3" [(set (match_dup 3) (symbol_ref:SI "__udivsi3")) (set (reg:SI R4_REG) (match_operand:SI 1 "general_operand" "")) @@ -1757,7 +1825,12 @@ operands[3] = gen_reg_rtx (Pmode); /* Emit the move of the address to a pseudo outside of the libcall. */ - if (TARGET_HARD_SH4 && TARGET_SH2E) + if (TARGET_DIVIDE_CALL_TABLE) + { + function_symbol (operands[3], \"__udivsi3_i4i\", SFUNC_GOT); + last = gen_udivsi3_i4_int (operands[0], operands[3]); + } + else if (TARGET_DIVIDE_CALL_FP) { function_symbol (operands[3], \"__udivsi3_i4\", SFUNC_STATIC); if (TARGET_FPU_SINGLE) @@ -1975,6 +2048,20 @@ [(set_attr "type" "sfunc") (set_attr "needs_delay_slot" "yes")]) +(define_insn "divsi3_i4_int" + [(set (match_operand:SI 0 "register_operand" "=z") + (div:SI (reg:SI R4_REG) (reg:SI R5_REG))) + (clobber (reg:SI T_REG)) + (clobber (reg:SI PR_REG)) + (clobber (reg:SI R1_REG)) + (clobber (reg:SI MACH_REG)) + (clobber (reg:SI MACL_REG)) + (use (match_operand:SI 1 "arith_reg_operand" "r"))] + "TARGET_SH1" + "jsr @%1%#" + [(set_attr "type" "sfunc") + (set_attr "needs_delay_slot" "yes")]) + (define_expand "divsi3" [(set (match_dup 3) (symbol_ref:SI "__sdivsi3")) (set (reg:SI R4_REG) (match_operand:SI 1 "general_operand" "")) @@ -1995,7 +2082,12 @@ operands[3] = gen_reg_rtx (Pmode); /* Emit the move of the address to a pseudo outside of the libcall. */ - if (TARGET_HARD_SH4 && TARGET_SH2E) + if (TARGET_DIVIDE_CALL_TABLE) + { + function_symbol (operands[3], sh_divsi3_libfunc, SFUNC_GOT); + last = gen_divsi3_i4_int (operands[0], operands[3]); + } + else if (TARGET_DIVIDE_CALL_FP) { function_symbol (operands[3], sh_divsi3_libfunc, SFUNC_STATIC); if (TARGET_FPU_SINGLE) diff --git a/gcc/config/sh/sh.opt b/gcc/config/sh/sh.opt index db332f35181..7f9a87e95d9 100644 --- a/gcc/config/sh/sh.opt +++ b/gcc/config/sh/sh.opt @@ -1,6 +1,6 @@ ; Options for the SH port of the compiler. -; Copyright (C) 2005 Free Software Foundation, Inc. +; Copyright (C) 2005, 2006 Free Software Foundation, Inc. ; ; This file is part of GCC. ; @@ -80,18 +80,52 @@ m4 Target RejectNegative Mask(SH4) Condition(SUPPORT_SH4) Generate SH4 code +m4-100 +Target RejectNegative Condition(SUPPORT_SH4) +Generate SH4-100 code + +m4-200 +Target RejectNegative Condition(SUPPORT_SH4) +Generate SH4-200 code + m4-nofpu Target RejectNegative Condition(SUPPORT_SH4_NOFPU) Generate SH4 FPU-less code +m4-400 +Target RejectNegative Condition(SUPPORT_SH4_NOFPU) +Generate code for SH4 400 series (MMU/FPU-less) +;; passes -isa=sh4-nommu-nofpu to the assembler. + +m4-500 +Target RejectNegative Condition(SUPPORT_SH4_NOFPU) +Generate code for SH4 500 series (FPU-less). +;; passes -isa=sh4-nofpu to the assembler. + m4-single Target RejectNegative Condition(SUPPORT_SH4_SINGLE) Generate default single-precision SH4 code +m4-100-single +Target RejectNegative Condition(SUPPORT_SH4_SINGLE) +Generate default single-precision SH4-100 code + +m4-200-single +Target RejectNegative Condition(SUPPORT_SH4_SINGLE) +Generate default single-precision SH4-200 code + m4-single-only Target RejectNegative Condition(SUPPORT_SH4_SINGLE_ONLY) Generate only single-precision SH4 code +m4-100-single-only +Target RejectNegative Condition(SUPPORT_SH4_SINGLE_ONLY) +Generate only single-precision SH4-100 code + +m4-200-single-only +Target RejectNegative Condition(SUPPORT_SH4_SINGLE_ONLY) +Generate only single-precision SH4-200 code + m4a Target RejectNegative Mask(SH4A) Condition(SUPPORT_SH4A) Generate SH4a code @@ -158,7 +192,7 @@ Align doubles at 64-bit boundaries mdiv= Target RejectNegative Joined Var(sh_div_str) Init("") -Division strategy, one of: call, call2, fp, inv, inv:minlat, inv20u, inv20l, inv:call, inv:call2, inv:fp +Division strategy, one of: call, call2, fp, inv, inv:minlat, inv20u, inv20l, inv:call, inv:call2, inv:fp call-div1 call-fp call-table mdivsi3_libfunc= Target RejectNegative Joined Var(sh_divsi3_libfunc) Init("") @@ -232,3 +266,9 @@ Cost to assume for a multiply insn musermode Target Report RejectNegative Mask(USERMODE) Generate library function call to invalidate instruction cache entries after fixing trampoline + +;; We might want to enable this by default for TARGET_HARD_SH4, because +;; zero-offset branches have zero latency. Needs some benchmarking. +mpretend-cmove +Target Var(TARGET_PRETEND_CMOVE) +Pretend a branch-around-a-move is a conditional move. diff --git a/gcc/config/sh/superh.h b/gcc/config/sh/superh.h index f4807d809ff..7ac96ef7734 100644 --- a/gcc/config/sh/superh.h +++ b/gcc/config/sh/superh.h @@ -1,5 +1,5 @@ /* Definitions of target machine for gcc for Super-H using sh-superh-elf. - Copyright (C) 2001 Free Software Foundation, Inc. + Copyright (C) 2001, 2006 Free Software Foundation, Inc. This file is part of GNU CC. @@ -20,9 +20,9 @@ Boston, MA 02110-1301, USA. */ /* This header file is used when the vendor name is set to 'superh'. - It configures the compiler for SH4 only and switches the default - endianess to little (although big endian is still available). - It also configures the spec file to the default board configuration + config.gcc already configured the compiler for SH4 only and switched + the default endianess to little (although big endian is still available). + This file configures the spec file to the default board configuration but in such a way that it can be overridden by a boardspecs file (using the -specs= option). This file is expected to disable the defaults and provide options --defsym _start and --defsym _stack @@ -39,57 +39,6 @@ Boston, MA 02110-1301, USA. */ #undef TARGET_VERSION #define TARGET_VERSION fprintf (stderr, " (SuperH SH special %s)", __DATE__); - -/* We override TARGET_PROCESSOR_SWITCHES in order to remove all the unrequired cpu options - and add options for all the SuperH CPU variants: - -m4-100 is an alias for -m4. - -m4-200 is an alias for -m4. - -m4-400 is an alias for -m4-nofpu and passes -isa=sh4-nommu-nofpu to the assembler. - -m4-500 is an alias for -m4-nofpu and passes -isa=sh4-nofpu to the assembler. */ -#undef TARGET_PROCESSOR_SWITCHES -#define TARGET_PROCESSOR_SWITCHES \ - {"4-500", TARGET_NONE, "SH4 500 series (FPU-less)" }, \ - {"4-500", SELECT_SH4_NOFPU, "" }, \ - {"4-400", TARGET_NONE, "SH4 400 series (MMU/FPU-less)" }, \ - {"4-400", SELECT_SH4_NOFPU, "" }, \ - {"4-200-single-only", TARGET_NONE, "SH4 200 series with double = float (SH3e ABI)" }, \ - {"4-200-single-only", SELECT_SH4_SINGLE_ONLY, "" }, \ - {"4-200-single", TARGET_NONE, "SH4 200 series with single precision pervading" }, \ - {"4-200-single", SELECT_SH4_SINGLE, "" }, \ - {"4-200-nofpu", TARGET_NONE, "SH4 200 series using soft floating point" }, \ - {"4-200-nofpu", SELECT_SH4_NOFPU, "" }, \ - {"4-200", TARGET_NONE, "SH4 200 series" }, \ - {"4-200", SELECT_SH4_NOFPU, "" }, \ - {"4-100-single-only", TARGET_NONE, "SH4 100 series with double = float (SH3e ABI)" }, \ - {"4-100-single-only", SELECT_SH4_SINGLE_ONLY, "" }, \ - {"4-100-single", TARGET_NONE, "SH4 100 series with single precision pervading" }, \ - {"4-100-single", SELECT_SH4_SINGLE, "" }, \ - {"4-100-nofpu", TARGET_NONE, "SH4 100 series using soft floating point" }, \ - {"4-100-nofpu", SELECT_SH4_NOFPU, "" }, \ - {"4-100", TARGET_NONE, "SH4 100 series" }, \ - {"4-100", SELECT_SH4_NOFPU, "" }, \ - {"4-single-only", TARGET_NONE, "Generic SH4 with double = float (SH3e ABI)" }, \ - {"4-single-only", SELECT_SH4_SINGLE_ONLY, "" }, \ - {"4-single", TARGET_NONE, "Generic SH4 with single precision pervading" }, \ - {"4-single", SELECT_SH4_SINGLE, "" }, \ - {"4-nofpu", TARGET_NONE, "Generic SH4 using soft floating point" }, \ - {"4-nofpu", SELECT_SH4_NOFPU, "" }, \ - {"4", TARGET_NONE, "Generic SH4 (default)" }, \ - {"4", SELECT_SH4, "" } - - -/* Provide the -mboard= option used by the boardspecs file */ -#undef SUBTARGET_OPTIONS -#define SUBTARGET_OPTIONS \ - { "board=", &boardtype, "Board name [and momory region].", 0 }, \ - { "runtime=", &osruntime, "Runtime name.", 0 }, \ - -/* These are required by the mboard= option and runtime= option - and are defined in sh.c but are not used anywhere */ -extern const char * boardtype; -extern const char * osruntime; - - /* Override the linker spec strings to use the new emulation The specstrings are concatenated as follows LINK_EMUL_PREFIX.(''|'32'|'64'|LINK_DEFAULT_CPU_EMUL).SUBTARGET_LINK_EMUL_SUFFIX @@ -103,7 +52,7 @@ extern const char * osruntime; /* Add the SUBTARGET_LINK_SPEC to add the board and runtime support and change the endianness */ #undef SUBTARGET_LINK_SPEC -#if TARGET_ENDIAN_DEFAULT == LITTLE_ENDIAN_BIT +#if TARGET_ENDIAN_DEFAULT == MASK_LITTLE_ENDIAN #define SUBTARGET_LINK_SPEC "%(board_link) %(ldruntime) %{ml|!mb:-EL}%{mb:-EB}" #else #define SUBTARGET_LINK_SPEC "%(board_link) %(ldruntime) %{ml:-EL}%{mb|!ml:-EB}" @@ -149,3 +98,11 @@ extern const char * osruntime; /* Override the LIB_SPEC to add the runtime support */ #undef LIB_SPEC #define LIB_SPEC "%{!shared:%{!symbolic:%(libruntime) -lc}} %{pg:-lprofile -lc}" + +/* Override STARTFILE_SPEC to add profiling and MMU support. */ +#undef STARTFILE_SPEC +#define STARTFILE_SPEC \ + "%{!shared: %{!m4-400*: %{pg:gcrt1-mmu.o%s}%{!pg:crt1-mmu.o%s}}} \ + %{!shared: %{m4-400*: %{pg:gcrt1.o%s}%{!pg:crt1.o%s}}} \ + crti.o%s \ + %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" diff --git a/gcc/config/sh/superh.opt b/gcc/config/sh/superh.opt new file mode 100644 index 00000000000..b85abddaf8e --- /dev/null +++ b/gcc/config/sh/superh.opt @@ -0,0 +1,10 @@ +;; The -mboard and -mruntime options need only be accepted here, they are +;; actually processed by supplementary specs files. + +mboard= +Target RejectNegative Joined +Board name [and memory region]. + +mruntime= +Target RejectNegative Joined +Runtime name. diff --git a/gcc/config/sh/t-elf b/gcc/config/sh/t-elf index feccbb3490b..9d9454a7221 100644 --- a/gcc/config/sh/t-elf +++ b/gcc/config/sh/t-elf @@ -1,5 +1,5 @@ EXTRA_MULTILIB_PARTS= crt1.o crti.o crtn.o \ - crtbegin.o crtend.o crtbeginS.o crtendS.o + crtbegin.o crtend.o crtbeginS.o crtendS.o $(IC_EXTRA_PARTS) # Compile crtbeginS.o and crtendS.o with pic. CRTSTUFF_T_CFLAGS_S = -fPIC diff --git a/gcc/config/sh/t-linux b/gcc/config/sh/t-linux index 698882fe92e..8679bb52946 100644 --- a/gcc/config/sh/t-linux +++ b/gcc/config/sh/t-linux @@ -1,7 +1,7 @@ TARGET_LIBGCC2_CFLAGS = -fpic -DNO_FPSCR_VALUES LIB1ASMFUNCS_CACHE = _ic_invalidate _ic_invalidate_array -LIB2FUNCS_EXTRA= +LIB2FUNCS_EXTRA= $(srcdir)/config/sh/linux-atomic.asm MULTILIB_DIRNAMES= MULTILIB_MATCHES = diff --git a/gcc/config/sh/t-sh b/gcc/config/sh/t-sh index db86ad18c1d..1efe67009e2 100644 --- a/gcc/config/sh/t-sh +++ b/gcc/config/sh/t-sh @@ -5,6 +5,7 @@ sh-c.o: $(srcdir)/config/sh/sh-c.c \ LIB1ASMSRC = sh/lib1funcs.asm LIB1ASMFUNCS = _ashiftrt _ashiftrt_n _ashiftlt _lshiftrt _movmem \ _movmem_i4 _mulsi3 _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \ + _div_table \ $(LIB1ASMFUNCS_CACHE) # We want fine grained libraries, so use the new code to build the @@ -37,9 +38,11 @@ MULTILIB_DIRNAMES= # is why sh2a and sh2a-single need their own multilibs. MULTILIB_MATCHES = $(shell \ multilibs="$(MULTILIB_OPTIONS)" ; \ - for abi in m1,m2,m3,m4-nofpu,m4al,m4a-nofpu m1,m2,m2a-nofpu \ - m2e,m3e,m4-single-only,m4a-single-only m2e,m2a-single-only \ - m4-single,m4a-single m4,m4a \ + for abi in m1,m2,m3,m4-nofpu,m4-400,m4-500,m4al,m4a-nofpu m1,m2,m2a-nofpu \ + m2e,m3e,m4-single-only,m4-100-single-only,m4-200-single-only,m4a-single-only \ + m2e,m2a-single-only \ + m4-single,m4-100-single,m4-200-single,m4a-single \ + m4,m4-100,m4-200,m4a \ m5-32media,m5-compact,m5-32media \ m5-32media-nofpu,m5-compact-nofpu,m5-32media-nofpu; do \ subst= ; \ @@ -71,6 +74,25 @@ gt-sh.h : s-gtype ; @true # These are not suitable for COFF. # EXTRA_MULTILIB_PARTS= crt1.o crti.o crtn.o crtbegin.o crtend.o +IC_EXTRA_PARTS= libic_invalidate_array_4-100.a libic_invalidate_array_4-200.a \ +libic_invalidate_array_4a.a +EXTRA_MULTILIB_PARTS= $(IC_EXTRA_PARTS) + +$(T)ic_invalidate_array_4-100.o: $(srcdir)/config/sh/lib1funcs.asm $(GCC_PASSES) + $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -o $(T)ic_invalidate_array_4-100.o -DL_ic_invalidate_array -DWAYS=1 -DWAY_SIZE=0x2000 -x assembler-with-cpp $(srcdir)/config/sh/lib1funcs.asm +$(T)libic_invalidate_array_4-100.a: $(T)ic_invalidate_array_4-100.o $(GCC_PASSES) + $(AR_CREATE_FOR_TARGET) $(T)libic_invalidate_array_4-100.a $(T)ic_invalidate_array_4-100.o + +$(T)ic_invalidate_array_4-200.o: $(srcdir)/config/sh/lib1funcs.asm $(GCC_PASSES) + $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -o $(T)ic_invalidate_array_4-200.o -DL_ic_invalidate_array -DWAYS=2 -DWAY_SIZE=0x2000 -x assembler-with-cpp $(srcdir)/config/sh/lib1funcs.asm +$(T)libic_invalidate_array_4-200.a: $(T)ic_invalidate_array_4-200.o $(GCC_PASSES) + $(AR_CREATE_FOR_TARGET) $(T)libic_invalidate_array_4-200.a $(T)ic_invalidate_array_4-200.o + +$(T)ic_invalidate_array_4a.o: $(srcdir)/config/sh/lib1funcs.asm $(GCC_PASSES) + $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -o $(T)ic_invalidate_array_4a.o -DL_ic_invalidate_array -D__FORCE_SH4A__ -x assembler-with-cpp $(srcdir)/config/sh/lib1funcs.asm +$(T)libic_invalidate_array_4a.a: $(T)ic_invalidate_array_4a.o $(GCC_PASSES) + $(AR_CREATE_FOR_TARGET) $(T)libic_invalidate_array_4a.a $(T)ic_invalidate_array_4a.o + # Local Variables: # mode: Makefile # End: diff --git a/gcc/config/sh/t-superh b/gcc/config/sh/t-superh dissimilarity index 100% index 35803caeb05..875f7529f24 100644 --- a/gcc/config/sh/t-superh +++ b/gcc/config/sh/t-superh @@ -1,6 +1,15 @@ -MULTILIB_OPTIONS= mb m4-nofpu/m4-single/m4-single-only -MULTILIB_DIRNAMES= -MULTILIB_MATCHES = m4=m4-100 m4-nofpu=m4-100-nofpu m4-single=m4-100-single m4-single-only=m4-100-single-only \ - m4=m4-200 m4-nofpu=m4-200-nofpu m4-single=m4-200-single m4-single-only=m4-200-single-only \ - m4-nofpu=m4-400 \ - m4-nofpu=m4-500 +EXTRA_MULTILIB_PARTS= crt1.o crti.o crtn.o \ + crtbegin.o crtend.o crtbeginS.o crtendS.o \ + crt1-mmu.o gcrt1-mmu.o gcrt1.o $(IC_EXTRA_PARTS) + +# Compile crt1-mmu.o as crt1.o with -DMMU_SUPPORT +$(T)crt1-mmu.o: $(srcdir)/config/sh/crt1.asm $(GCC_PASSES) + $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -o $(T)crt1-mmu.o -DMMU_SUPPORT -x assembler-with-cpp $(srcdir)/config/sh/crt1.asm + +# Compile gcrt1-mmu.o as crt1-mmu.o with -DPROFILE +$(T)gcrt1-mmu.o: $(srcdir)/config/sh/crt1.asm $(GCC_PASSES) + $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -o $(T)gcrt1-mmu.o -DPROFILE -DMMU_SUPPORT -x assembler-with-cpp $(srcdir)/config/sh/crt1.asm + +# For sh4-400: Compile gcrt1.o as crt1.o with -DPROFILE +$(T)gcrt1.o: $(srcdir)/config/sh/crt1.asm $(GCC_PASSES) + $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -o $(T)gcrt1.o -DPROFILE -x assembler-with-cpp $(srcdir)/config/sh/crt1.asm diff --git a/gcc/config/sol26.h b/gcc/config/sol2-10.h similarity index 69% copy from gcc/config/sol26.h copy to gcc/config/sol2-10.h index d5b7dda2a5f..1da6bee10de 100644 --- a/gcc/config/sol26.h +++ b/gcc/config/sol2-10.h @@ -1,6 +1,6 @@ /* Operating system specific defines to be used when targeting GCC for any - Solaris 2 system up to Solaris 2.6. - Copyright 2004 Free Software Foundation, Inc. + Solaris 2 system starting from Solaris 10. + Copyright 2006 Free Software Foundation, Inc. This file is part of GCC. @@ -19,9 +19,6 @@ 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. */ -#undef CPP_SUBTARGET_SPEC -#define CPP_SUBTARGET_SPEC "\ -%{pthreads|pthread:-D_REENTRANT -D_PTHREADS95} \ -%{!pthreads:%{!pthread:%{threads:-D_REENTRANT -D_SOLARIS_THREADS}}} \ -%{compat-bsd:-iwithprefixbefore ucbinclude -I/usr/ucbinclude} \ -" +/* Solaris 10 has the float and long double forms of math functions. */ +#undef TARGET_C99_FUNCTIONS +#define TARGET_C99_FUNCTIONS 1 diff --git a/gcc/config/sol26.h b/gcc/config/sol2-6.h similarity index 100% rename from gcc/config/sol26.h rename to gcc/config/sol2-6.h diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index 709a92b518e..e880226412e 100644 --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -5425,7 +5425,7 @@ sparc_return_in_memory (tree type, tree fntype ATTRIBUTE_UNUSED) Return where to find the structure return value address. */ static rtx -sparc_struct_value_rtx (tree fndecl ATTRIBUTE_UNUSED, int incoming) +sparc_struct_value_rtx (tree fndecl, int incoming) { if (TARGET_ARCH64) return 0; @@ -5440,6 +5440,46 @@ sparc_struct_value_rtx (tree fndecl ATTRIBUTE_UNUSED, int incoming) mem = gen_rtx_MEM (Pmode, plus_constant (stack_pointer_rtx, STRUCT_VALUE_OFFSET)); + /* Only follow the SPARC ABI for fixed-size structure returns. + Variable size structure returns are handled per the normal + procedures in GCC. This is enabled by -mstd-struct-return */ + if (incoming == 2 + && sparc_std_struct_return + && TYPE_SIZE_UNIT (TREE_TYPE (fndecl)) + && TREE_CODE (TYPE_SIZE_UNIT (TREE_TYPE (fndecl))) == INTEGER_CST) + { + /* We must check and adjust the return address, as it is + optional as to whether the return object is really + provided. */ + rtx ret_rtx = gen_rtx_REG (Pmode, 31); + rtx scratch = gen_reg_rtx (SImode); + rtx endlab = gen_label_rtx (); + + /* Calculate the return object size */ + tree size = TYPE_SIZE_UNIT (TREE_TYPE (fndecl)); + rtx size_rtx = GEN_INT (TREE_INT_CST_LOW (size) & 0xfff); + /* Construct a temporary return value */ + rtx temp_val = assign_stack_local (Pmode, TREE_INT_CST_LOW (size), 0); + + /* Implement SPARC 32-bit psABI callee returns struck checking + requirements: + + Fetch the instruction where we will return to and see if + it's an unimp instruction (the most significant 10 bits + will be zero). */ + emit_move_insn (scratch, gen_rtx_MEM (SImode, + plus_constant (ret_rtx, 8))); + /* Assume the size is valid and pre-adjust */ + emit_insn (gen_add3_insn (ret_rtx, ret_rtx, GEN_INT (4))); + emit_cmp_and_jump_insns (scratch, size_rtx, EQ, const0_rtx, SImode, 0, endlab); + emit_insn (gen_sub3_insn (ret_rtx, ret_rtx, GEN_INT (4))); + /* Assign stack temp: + Write the address of the memory pointed to by temp_val into + the memory pointed to by mem */ + emit_move_insn (mem, XEXP (temp_val, 0)); + emit_label (endlab); + } + set_mem_alias_set (mem, struct_value_alias_set); return mem; } @@ -6639,9 +6679,14 @@ print_operand (FILE *file, rtx x, int code) so we have to account for it. This insn is used in the 32-bit ABI when calling a function that returns a non zero-sized structure. The 64-bit ABI doesn't have it. Be careful to have this test be the same - as that used on the call. */ + as that used on the call. The exception here is that when + sparc_std_struct_return is enabled, the psABI is followed exactly + and the adjustment is made by the code in sparc_struct_value_rtx. + The call emitted is the same when sparc_std_struct_return is + present. */ if (! TARGET_ARCH64 && current_function_returns_struct + && ! sparc_std_struct_return && (TREE_CODE (DECL_SIZE (DECL_RESULT (current_function_decl))) == INTEGER_CST) && ! integer_zerop (DECL_SIZE (DECL_RESULT (current_function_decl)))) diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md index b6ebb8287a1..ed68f1e8a1e 100644 --- a/gcc/config/sparc/sparc.md +++ b/gcc/config/sparc/sparc.md @@ -7094,8 +7094,13 @@ DONE; }) -;; This is a bit of a hack. We're incrementing a fixed register (%i7), -;; and parts of the compiler don't want to believe that the add is needed. +;; Adjust the return address conditionally. If the value of op1 is equal +;; to all zero then adjust the return address i.e. op0 = op0 + 4. +;; This is technically *half* the check required by the 32-bit SPARC +;; psABI. This check only ensures that an "unimp" insn was written by +;; the caller, but doesn't check to see if the expected size matches +;; (this is encoded in the 12 lower bits). This check is obsolete and +;; only used by the above code "untyped_return". (define_insn "update_return" [(unspec:SI [(match_operand:SI 0 "register_operand" "r") diff --git a/gcc/config/sparc/sparc.opt b/gcc/config/sparc/sparc.opt index da50e1a15ec..8cdf11cf735 100644 --- a/gcc/config/sparc/sparc.opt +++ b/gcc/config/sparc/sparc.opt @@ -99,6 +99,9 @@ mcmodel= Target RejectNegative Joined Var(sparc_cmodel_string) Use given SPARC-V9 code model +mstd-struct-return +Target Report RejectNegative Var(sparc_std_struct_return) +Enable strict 32-bit psABI struct return checking. Mask(LITTLE_ENDIAN) ;; Generate code for little-endian diff --git a/gcc/config/t-darwin b/gcc/config/t-darwin index 5995f30131f..b6ee9c025d4 100644 --- a/gcc/config/t-darwin +++ b/gcc/config/t-darwin @@ -14,9 +14,11 @@ gt-darwin.h : s-gtype ; @true # How to build crt3.o EXTRA_MULTILIB_PARTS=crt3.o +# Pass -fno-tree-dominator-opts to work around bug 26840. $(T)crt3$(objext): $(srcdir)/config/darwin-crt3.c $(GCC_PASSES) \ $(TCONFIG_H) stmp-int-hdrs tsystem.h $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) \ + -fno-tree-dominator-opts \ -c $(srcdir)/config/darwin-crt3.c -o $(T)crt3$(objext) # Use unwind-dw2-fde-darwin diff --git a/gcc/config/vax/vax.c b/gcc/config/vax/vax.c index cff421f7496..f005a2a4c0d 100644 --- a/gcc/config/vax/vax.c +++ b/gcc/config/vax/vax.c @@ -288,11 +288,11 @@ print_operand_address (FILE * file, rtx addr) { if (offset) { - if (GET_CODE (offset) == CONST_INT) + if (CONST_INT_P (offset)) offset = plus_constant (XEXP (addr, 0), INTVAL (offset)); else { - gcc_assert (GET_CODE (XEXP (addr, 0)) == CONST_INT); + gcc_assert (CONST_INT_P (XEXP (addr, 0))); offset = plus_constant (offset, INTVAL (XEXP (addr, 0))); } } @@ -317,11 +317,11 @@ print_operand_address (FILE * file, rtx addr) { if (offset) { - if (GET_CODE (offset) == CONST_INT) + if (CONST_INT_P (offset)) offset = plus_constant (XEXP (addr, 1), INTVAL (offset)); else { - gcc_assert (GET_CODE (XEXP (addr, 1)) == CONST_INT); + gcc_assert (CONST_INT_P (XEXP (addr, 1))); offset = plus_constant (offset, INTVAL (XEXP (addr, 1))); } } @@ -669,7 +669,7 @@ vax_rtx_costs (rtx x, int code, int outer_code, int *total) case ROTATE: case ROTATERT: *total = 6; /* 5 on VAX 2, 4 on VAX 9000 */ - if (GET_CODE (XEXP (x, 1)) == CONST_INT) + if (CONST_INT_P (XEXP (x, 1))) fmt = "e"; /* all constant rotate counts are short */ break; @@ -677,7 +677,7 @@ vax_rtx_costs (rtx x, int code, int outer_code, int *total) case MINUS: *total = (mode == DFmode) ? 13 : 8; /* 6/8 on VAX 9000, 16/15 on VAX 2 */ /* Small integer operands can use subl2 and addl2. */ - if ((GET_CODE (XEXP (x, 1)) == CONST_INT) + if ((CONST_INT_P (XEXP (x, 1))) && (unsigned HOST_WIDE_INT)(INTVAL (XEXP (x, 1)) + 63) < 127) fmt = "e"; break; @@ -690,7 +690,7 @@ vax_rtx_costs (rtx x, int code, int outer_code, int *total) case AND: /* AND is special because the first operand is complemented. */ *total = 3; - if (GET_CODE (XEXP (x, 0)) == CONST_INT) + if (CONST_INT_P (XEXP (x, 0))) { if ((unsigned HOST_WIDE_INT)~INTVAL (XEXP (x, 0)) > 63) *total = 4; @@ -917,7 +917,7 @@ vax_output_int_move (rtx insn ATTRIBUTE_UNUSED, rtx *operands, } if (operands[1] == const0_rtx) return "clrl %0"; - if (GET_CODE (operands[1]) == CONST_INT + if (CONST_INT_P (operands[1]) && (unsigned) INTVAL (operands[1]) >= 64) { int i = INTVAL (operands[1]); @@ -937,7 +937,7 @@ vax_output_int_move (rtx insn ATTRIBUTE_UNUSED, rtx *operands, return "movl %1,%0"; case HImode: - if (GET_CODE (operands[1]) == CONST_INT) + if (CONST_INT_P (operands[1])) { int i = INTVAL (operands[1]); if (i == 0) @@ -952,7 +952,7 @@ vax_output_int_move (rtx insn ATTRIBUTE_UNUSED, rtx *operands, return "movw %1,%0"; case QImode: - if (GET_CODE (operands[1]) == CONST_INT) + if (CONST_INT_P (operands[1])) { int i = INTVAL (operands[1]); if (i == 0) @@ -994,10 +994,10 @@ vax_output_int_add (rtx insn ATTRIBUTE_UNUSED, rtx *operands, return "incl %0"; if (operands[2] == constm1_rtx) return "decl %0"; - if (GET_CODE (operands[2]) == CONST_INT + if (CONST_INT_P (operands[2]) && (unsigned) (- INTVAL (operands[2])) < 64) return "subl2 $%n2,%0"; - if (GET_CODE (operands[2]) == CONST_INT + if (CONST_INT_P (operands[2]) && (unsigned) INTVAL (operands[2]) >= 64 && REG_P (operands[1]) && ((INTVAL (operands[2]) < 32767 && INTVAL (operands[2]) > -32768) @@ -1009,18 +1009,18 @@ vax_output_int_add (rtx insn ATTRIBUTE_UNUSED, rtx *operands, if (rtx_equal_p (operands[0], operands[2])) return "addl2 %1,%0"; - if (GET_CODE (operands[2]) == CONST_INT + if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) < 32767 && INTVAL (operands[2]) > -32768 && REG_P (operands[1]) && push_operand (operands[0], SImode)) return "pushab %c2(%1)"; - if (GET_CODE (operands[2]) == CONST_INT + if (CONST_INT_P (operands[2]) && (unsigned) (- INTVAL (operands[2])) < 64) return "subl3 $%n2,%1,%0"; - if (GET_CODE (operands[2]) == CONST_INT + if (CONST_INT_P (operands[2]) && (unsigned) INTVAL (operands[2]) >= 64 && REG_P (operands[1]) && ((INTVAL (operands[2]) < 32767 && INTVAL (operands[2]) > -32768) @@ -1040,14 +1040,14 @@ vax_output_int_add (rtx insn ATTRIBUTE_UNUSED, rtx *operands, return "incw %0"; if (operands[2] == constm1_rtx) return "decw %0"; - if (GET_CODE (operands[2]) == CONST_INT + if (CONST_INT_P (operands[2]) && (unsigned) (- INTVAL (operands[2])) < 64) return "subw2 $%n2,%0"; return "addw2 %2,%0"; } if (rtx_equal_p (operands[0], operands[2])) return "addw2 %1,%0"; - if (GET_CODE (operands[2]) == CONST_INT + if (CONST_INT_P (operands[2]) && (unsigned) (- INTVAL (operands[2])) < 64) return "subw3 $%n2,%1,%0"; return "addw3 %1,%2,%0"; @@ -1059,14 +1059,14 @@ vax_output_int_add (rtx insn ATTRIBUTE_UNUSED, rtx *operands, return "incb %0"; if (operands[2] == constm1_rtx) return "decb %0"; - if (GET_CODE (operands[2]) == CONST_INT + if (CONST_INT_P (operands[2]) && (unsigned) (- INTVAL (operands[2])) < 64) return "subb2 $%n2,%0"; return "addb2 %2,%0"; } if (rtx_equal_p (operands[0], operands[2])) return "addb2 %1,%0"; - if (GET_CODE (operands[2]) == CONST_INT + if (CONST_INT_P (operands[2]) && (unsigned) (- INTVAL (operands[2])) < 64) return "subb3 $%n2,%1,%0"; return "addb3 %1,%2,%0"; @@ -1103,7 +1103,7 @@ int legitimate_constant_address_p (rtx x) { return (GET_CODE (x) == LABEL_REF || GET_CODE (x) == SYMBOL_REF - || GET_CODE (x) == CONST_INT || GET_CODE (x) == CONST + || CONST_INT_P (x) || GET_CODE (x) == CONST || GET_CODE (x) == HIGH); } @@ -1217,12 +1217,12 @@ index_term_p (rtx prod, enum machine_mode mode, int strict) xfoo0 = XEXP (prod, 0); xfoo1 = XEXP (prod, 1); - if (GET_CODE (xfoo0) == CONST_INT + if (CONST_INT_P (xfoo0) && INTVAL (xfoo0) == (int)GET_MODE_SIZE (mode) && INDEX_REGISTER_P (xfoo1, strict)) return 1; - if (GET_CODE (xfoo1) == CONST_INT + if (CONST_INT_P (xfoo1) && INTVAL (xfoo1) == (int)GET_MODE_SIZE (mode) && INDEX_REGISTER_P (xfoo0, strict)) return 1; diff --git a/gcc/config/vax/vax.h b/gcc/config/vax/vax.h index 68f88c11d36..90dd8e046bf 100644 --- a/gcc/config/vax/vax.h +++ b/gcc/config/vax/vax.h @@ -872,24 +872,24 @@ VAX operand formatting codes: fputs (REGISTER_PREFIX, FILE); \ else if (CODE == 'C') \ fputs (rev_cond_name (X), FILE); \ - else if (CODE == 'D' && GET_CODE (X) == CONST_INT && INTVAL (X) < 0) \ + else if (CODE == 'D' && CONST_INT_P (X) && INTVAL (X) < 0) \ fprintf (FILE, "$" NEG_HWI_PRINT_HEX16, INTVAL (X)); \ - else if (CODE == 'P' && GET_CODE (X) == CONST_INT) \ + else if (CODE == 'P' && CONST_INT_P (X)) \ fprintf (FILE, "$" HOST_WIDE_INT_PRINT_DEC, INTVAL (X) + 1); \ - else if (CODE == 'N' && GET_CODE (X) == CONST_INT) \ + else if (CODE == 'N' && CONST_INT_P (X)) \ fprintf (FILE, "$" HOST_WIDE_INT_PRINT_DEC, ~ INTVAL (X)); \ /* rotl instruction cannot deal with negative arguments. */ \ - else if (CODE == 'R' && GET_CODE (X) == CONST_INT) \ + else if (CODE == 'R' && CONST_INT_P (X)) \ fprintf (FILE, "$" HOST_WIDE_INT_PRINT_DEC, 32 - INTVAL (X)); \ - else if (CODE == 'H' && GET_CODE (X) == CONST_INT) \ + else if (CODE == 'H' && CONST_INT_P (X)) \ fprintf (FILE, "$%d", (int) (0xffff & ~ INTVAL (X))); \ - else if (CODE == 'h' && GET_CODE (X) == CONST_INT) \ + else if (CODE == 'h' && CONST_INT_P (X)) \ fprintf (FILE, "$%d", (short) - INTVAL (x)); \ - else if (CODE == 'B' && GET_CODE (X) == CONST_INT) \ + else if (CODE == 'B' && CONST_INT_P (X)) \ fprintf (FILE, "$%d", (int) (0xff & ~ INTVAL (X))); \ - else if (CODE == 'b' && GET_CODE (X) == CONST_INT) \ + else if (CODE == 'b' && CONST_INT_P (X)) \ fprintf (FILE, "$%d", (int) (0xff & - INTVAL (X))); \ - else if (CODE == 'M' && GET_CODE (X) == CONST_INT) \ + else if (CODE == 'M' && CONST_INT_P (X)) \ fprintf (FILE, "$%d", ~((1 << INTVAL (x)) - 1)); \ else if (REG_P (X)) \ fprintf (FILE, "%s", reg_names[REGNO (X)]); \ diff --git a/gcc/config/vax/vax.md b/gcc/config/vax/vax.md index 04a813f00a8..dd448007452 100644 --- a/gcc/config/vax/vax.md +++ b/gcc/config/vax/vax.md @@ -152,7 +152,7 @@ "" "* { - if (GET_CODE (operands[1]) == CONST_INT) + if (CONST_INT_P (operands[1])) { int i = INTVAL (operands[1]); if (i == 0) @@ -173,7 +173,7 @@ "" "* { - if (GET_CODE (operands[1]) == CONST_INT) + if (CONST_INT_P (operands[1])) { int i = INTVAL (operands[1]); if (i == 0) @@ -528,14 +528,14 @@ rtx op1 = operands[1]; /* If there is a constant argument, complement that one. */ - if (GET_CODE (operands[2]) == CONST_INT && GET_CODE (op1) != CONST_INT) + if (CONST_INT_P (operands[2]) && !CONST_INT_P (op1)) { operands[1] = operands[2]; operands[2] = op1; op1 = operands[1]; } - if (GET_CODE (op1) == CONST_INT) + if (CONST_INT_P (op1)) operands[1] = GEN_INT (~INTVAL (op1)); else operands[1] = expand_unop (mode, one_cmpl_optab, op1, 0, 1); @@ -621,7 +621,7 @@ "" " { - if (GET_CODE (operands[2]) != CONST_INT) + if (!CONST_INT_P (operands[2])) operands[2] = gen_rtx_NEG (QImode, negate_rtx (QImode, operands[2])); }") @@ -649,7 +649,7 @@ if (operands[2] == const1_rtx && rtx_equal_p (operands[0], operands[1])) return \"addl2 %0,%0\"; if (REG_P (operands[1]) - && GET_CODE (operands[2]) == CONST_INT) + && CONST_INT_P (operands[2])) { int i = INTVAL (operands[2]); if (i == 1) @@ -715,7 +715,7 @@ "" " { - if (GET_CODE (operands[2]) != CONST_INT) + if (!CONST_INT_P (operands[2])) operands[2] = gen_rtx_NEG (QImode, negate_rtx (QImode, operands[2])); }") @@ -871,7 +871,8 @@ "" "* { - if (GET_CODE (operands[3]) != CONST_INT || GET_CODE (operands[2]) != CONST_INT + if (!CONST_INT_P (operands[3]) + || !CONST_INT_P (operands[2]) || !REG_P (operands[0]) || (INTVAL (operands[2]) != 8 && INTVAL (operands[2]) != 16)) return \"extv %3,%2,%1,%0\"; @@ -888,7 +889,8 @@ "" "* { - if (GET_CODE (operands[3]) != CONST_INT || GET_CODE (operands[2]) != CONST_INT + if (!CONST_INT_P (operands[3]) + || !CONST_INT_P (operands[2]) || !REG_P (operands[0])) return \"extzv %3,%2,%1,%0\"; if (INTVAL (operands[2]) == 8) @@ -934,8 +936,9 @@ "" "* { - if (!REG_P (operands[0]) || GET_CODE (operands[2]) != CONST_INT - || GET_CODE (operands[3]) != CONST_INT + if (!REG_P (operands[0]) + || !CONST_INT_P (operands[2]) + || !CONST_INT_P (operands[3]) || (INTVAL (operands[2]) != 8 && INTVAL (operands[2]) != 16) || INTVAL (operands[2]) + INTVAL (operands[3]) > 32 || side_effects_p (operands[1]) @@ -963,8 +966,9 @@ "" "* { - if (!REG_P (operands[0]) || GET_CODE (operands[2]) != CONST_INT - || GET_CODE (operands[3]) != CONST_INT + if (!REG_P (operands[0]) + || !CONST_INT_P (operands[2]) + || !CONST_INT_P (operands[3]) || INTVAL (operands[2]) + INTVAL (operands[3]) > 32 || side_effects_p (operands[1]) || (MEM_P (operands[1]) @@ -1151,7 +1155,7 @@ (set (match_dup 0) (plus:SI (match_dup 0) (const_int 1)))] - "!TARGET_UNIX_ASM && GET_CODE (operands[1]) == CONST_INT" + "!TARGET_UNIX_ASM && CONST_INT_P (operands[1])" "jaoblss %P1,%0,%l2") (define_insn "" @@ -1178,7 +1182,7 @@ (set (match_dup 0) (plus:SI (match_dup 0) (const_int 1)))] - "!TARGET_UNIX_ASM && GET_CODE (operands[1]) == CONST_INT" + "!TARGET_UNIX_ASM && CONST_INT_P (operands[1])" "jaobleq %P1,%0,%l2") ;; Something like a sob insn, but compares against -1. diff --git a/gcc/config/xtensa/ieee754-df.S b/gcc/config/xtensa/ieee754-df.S index 5981979fc65..711b10c9df3 100644 --- a/gcc/config/xtensa/ieee754-df.S +++ b/gcc/config/xtensa/ieee754-df.S @@ -51,10 +51,10 @@ .global __negdf2 .type __negdf2, @function __negdf2: - abi_entry sp, 32 + leaf_entry sp, 16 movi a4, 0x80000000 xor xh, xh, a4 - abi_return + leaf_return #endif /* L_negdf2 */ @@ -74,13 +74,13 @@ __adddf3_aux: slli a7, xh, 12 or a7, a7, xl beqz a7, .Ladd_ynan_or_inf -1: abi_return +1: leaf_return .Ladd_ynan_or_inf: /* Return y. */ mov xh, yh mov xl, yl - abi_return + leaf_return .Ladd_opposite_signs: /* Operand signs differ. Do a subtraction. */ @@ -92,7 +92,7 @@ __adddf3_aux: .global __adddf3 .type __adddf3, @function __adddf3: - abi_entry sp, 32 + leaf_entry sp, 16 movi a6, 0x7ff00000 /* Check if the two operands have the same sign. */ @@ -166,7 +166,7 @@ __adddf3: add xh, xh, yh bgeu xl, yl, 1f addi xh, xh, 1 -1: abi_return +1: leaf_return .Ladd_bigshifty: /* Exponent difference > 64 -- just return the bigger value. */ @@ -229,7 +229,7 @@ __adddf3: /* Check if the leftover fraction is exactly 1/2. */ slli a9, a9, 1 beqz a9, .Ladd_exactlyhalf -1: abi_return +1: leaf_return .Ladd_bigshiftx: /* Mostly the same thing as "bigshifty".... */ @@ -247,7 +247,7 @@ __adddf3: .Ladd_returny: mov xh, yh mov xl, yl - abi_return + leaf_return .Ladd_carry: /* The addition has overflowed into the exponent field, so the @@ -288,7 +288,7 @@ __adddf3: addi xl, xl, 1 beqz xl, .Ladd_roundcarry beqz a9, .Ladd_exactlyhalf -1: abi_return +1: leaf_return .Ladd_infinity: /* Clear the mantissa. */ @@ -299,20 +299,20 @@ __adddf3: /* The sign bit may have been lost in a carry-out. Put it back. */ slli a8, a8, 1 or xh, xh, a8 - abi_return + leaf_return .Ladd_exactlyhalf: /* Round down to the nearest even value. */ srli xl, xl, 1 slli xl, xl, 1 - abi_return + leaf_return .Ladd_roundcarry: /* xl is always zero when the rounding increment overflows, so there's no need to round it to an even value. */ addi xh, xh, 1 /* Overflow to the exponent is OK. */ - abi_return + leaf_return /* Subtraction */ @@ -328,14 +328,14 @@ __subdf3_aux: /* Both x and y are either NaN or Inf, so the result is NaN. */ movi a4, 0x80000 /* make it a quiet NaN */ or xh, xh, a4 -1: abi_return +1: leaf_return .Lsub_ynan_or_inf: /* Negate y and return it. */ slli a7, a6, 11 xor xh, yh, a7 mov xl, yl - abi_return + leaf_return .Lsub_opposite_signs: /* Operand signs differ. Do an addition. */ @@ -347,7 +347,7 @@ __subdf3_aux: .global __subdf3 .type __subdf3, @function __subdf3: - abi_entry sp, 32 + leaf_entry sp, 16 movi a6, 0x7ff00000 /* Check if the two operands have the same sign. */ @@ -415,7 +415,7 @@ __subdf3: /* The operands are equal. Return 0.0. */ movi xh, 0 movi xl, 0 -1: abi_return +1: leaf_return .Lsub_yexpzero: /* y is a subnormal value. Replace its sign/exponent with zero, @@ -493,7 +493,7 @@ __subdf3: /* Check if the leftover fraction is exactly 1/2. */ slli a9, a9, 1 beqz a9, .Lsub_exactlyhalf -1: abi_return +1: leaf_return .Lsub_xexpzero: /* Same as "yexpzero". */ @@ -523,7 +523,7 @@ __subdf3: slli a7, a6, 11 xor xh, yh, a7 mov xl, yl - abi_return + leaf_return .Lsub_borrow: /* The subtraction has underflowed into the exponent field, so the @@ -560,14 +560,14 @@ __subdf3: /* Round down to the nearest even value. */ srli xl, xl, 1 slli xl, xl, 1 - abi_return + leaf_return .Lsub_roundcarry: /* xl is always zero when the rounding increment overflows, so there's no need to round it to an even value. */ addi xh, xh, 1 /* Overflow to the exponent is OK. */ - abi_return + leaf_return .Lsub_xhzero: /* When normalizing the result, all the mantissa bits in the high @@ -728,7 +728,7 @@ __muldf3_aux: .global __muldf3 .type __muldf3, @function __muldf3: - abi_entry sp, 48 + leaf_entry sp, 32 #if __XTENSA_CALL0_ABI__ addi sp, sp, -32 s32i a12, sp, 16 @@ -1093,7 +1093,7 @@ __muldf3: l32i a15, sp, 28 addi sp, sp, 32 #endif - abi_return + leaf_return .Lmul_exactlyhalf: /* Round down to the nearest even value. */ @@ -1246,7 +1246,7 @@ __divdf3_aux: movi a4, 0x80000 /* make it a quiet NaN */ or xh, xh, a4 1: movi xl, 0 - abi_return + leaf_return .Ldiv_xexpzero: /* Clear the sign bit of x. */ @@ -1287,7 +1287,7 @@ __divdf3_aux: srli xh, a7, 31 slli xh, xh, 31 movi xl, 0 - abi_return + leaf_return .Ldiv_xnan_or_inf: /* Set the sign bit of the result. */ @@ -1298,7 +1298,7 @@ __divdf3_aux: bnall yh, a6, 1f movi a4, 0x80000 /* make it a quiet NaN */ or xh, xh, a4 -1: abi_return +1: leaf_return .Ldiv_ynan_or_inf: /* If y is Infinity, return zero. */ @@ -1308,7 +1308,7 @@ __divdf3_aux: /* y is NaN; return it. */ mov xh, yh mov xl, yl - abi_return + leaf_return .Ldiv_highequal1: bltu xl, yl, 2f @@ -1318,7 +1318,7 @@ __divdf3_aux: .global __divdf3 .type __divdf3, @function __divdf3: - abi_entry sp, 32 + leaf_entry sp, 16 movi a6, 0x7ff00000 /* Get the sign of the result. */ @@ -1431,7 +1431,7 @@ __divdf3: srli a7, a7, 31 slli a7, a7, 31 or xh, xh, a7 - abi_return + leaf_return .Ldiv_highequal2: bgeu xl, yl, 2b @@ -1510,7 +1510,7 @@ __divdf3: srli xh, a7, 31 slli xh, xh, 31 movi xl, 0 - abi_return + leaf_return #endif /* L_divdf3 */ @@ -1524,7 +1524,7 @@ __divdf3: .set __nedf2, __eqdf2 .type __eqdf2, @function __eqdf2: - abi_entry sp, 32 + leaf_entry sp, 16 bne xl, yl, 2f bne xh, yh, 4f @@ -1534,11 +1534,11 @@ __eqdf2: /* Equal. */ movi a2, 0 - abi_return + leaf_return /* Not equal. */ 2: movi a2, 1 - abi_return + leaf_return /* Check if the mantissas are nonzero. */ 3: slli a7, xh, 12 @@ -1555,7 +1555,7 @@ __eqdf2: 5: movi a2, 0 movi a3, 1 movnez a2, a3, a7 - abi_return + leaf_return /* Greater Than */ @@ -1564,7 +1564,7 @@ __eqdf2: .global __gtdf2 .type __gtdf2, @function __gtdf2: - abi_entry sp, 32 + leaf_entry sp, 16 movi a6, 0x7ff00000 ball xh, a6, 2f 1: bnall yh, a6, .Lle_cmp @@ -1574,14 +1574,14 @@ __gtdf2: or a7, a7, yl beqz a7, .Lle_cmp movi a2, 0 - abi_return + leaf_return /* Check if x is a NaN. */ 2: slli a7, xh, 12 or a7, a7, xl beqz a7, 1b movi a2, 0 - abi_return + leaf_return /* Less Than or Equal */ @@ -1590,7 +1590,7 @@ __gtdf2: .global __ledf2 .type __ledf2, @function __ledf2: - abi_entry sp, 32 + leaf_entry sp, 16 movi a6, 0x7ff00000 ball xh, a6, 2f 1: bnall yh, a6, .Lle_cmp @@ -1600,14 +1600,14 @@ __ledf2: or a7, a7, yl beqz a7, .Lle_cmp movi a2, 1 - abi_return + leaf_return /* Check if x is a NaN. */ 2: slli a7, xh, 12 or a7, a7, xl beqz a7, 1b movi a2, 1 - abi_return + leaf_return .Lle_cmp: /* Check if x and y have different signs. */ @@ -1622,7 +1622,7 @@ __ledf2: bne xh, yh, 5f bltu yl, xl, 5f 4: movi a2, 0 - abi_return + leaf_return .Lle_xneg: /* Check if y <= x. */ @@ -1630,7 +1630,7 @@ __ledf2: bne yh, xh, 5f bgeu xl, yl, 4b 5: movi a2, 1 - abi_return + leaf_return .Lle_diff_signs: bltz xh, 4b @@ -1643,7 +1643,7 @@ __ledf2: movi a2, 1 movi a3, 0 moveqz a2, a3, a7 - abi_return + leaf_return /* Greater Than or Equal */ @@ -1652,7 +1652,7 @@ __ledf2: .global __gedf2 .type __gedf2, @function __gedf2: - abi_entry sp, 32 + leaf_entry sp, 16 movi a6, 0x7ff00000 ball xh, a6, 2f 1: bnall yh, a6, .Llt_cmp @@ -1662,14 +1662,14 @@ __gedf2: or a7, a7, yl beqz a7, .Llt_cmp movi a2, -1 - abi_return + leaf_return /* Check if x is a NaN. */ 2: slli a7, xh, 12 or a7, a7, xl beqz a7, 1b movi a2, -1 - abi_return + leaf_return /* Less Than */ @@ -1678,7 +1678,7 @@ __gedf2: .global __ltdf2 .type __ltdf2, @function __ltdf2: - abi_entry sp, 32 + leaf_entry sp, 16 movi a6, 0x7ff00000 ball xh, a6, 2f 1: bnall yh, a6, .Llt_cmp @@ -1688,14 +1688,14 @@ __ltdf2: or a7, a7, yl beqz a7, .Llt_cmp movi a2, 0 - abi_return + leaf_return /* Check if x is a NaN. */ 2: slli a7, xh, 12 or a7, a7, xl beqz a7, 1b movi a2, 0 - abi_return + leaf_return .Llt_cmp: /* Check if x and y have different signs. */ @@ -1710,7 +1710,7 @@ __ltdf2: bne xh, yh, 5f bgeu xl, yl, 5f 4: movi a2, -1 - abi_return + leaf_return .Llt_xneg: /* Check if y < x. */ @@ -1718,7 +1718,7 @@ __ltdf2: bne yh, xh, 5f bltu yl, xl, 4b 5: movi a2, 0 - abi_return + leaf_return .Llt_diff_signs: bgez xh, 5b @@ -1731,7 +1731,7 @@ __ltdf2: movi a2, 0 movi a3, -1 movnez a2, a3, a7 - abi_return + leaf_return /* Unordered */ @@ -1740,24 +1740,24 @@ __ltdf2: .global __unorddf2 .type __unorddf2, @function __unorddf2: - abi_entry sp, 32 + leaf_entry sp, 16 movi a6, 0x7ff00000 ball xh, a6, 3f 1: ball yh, a6, 4f 2: movi a2, 0 - abi_return + leaf_return 3: slli a7, xh, 12 or a7, a7, xl beqz a7, 1b movi a2, 1 - abi_return + leaf_return 4: slli a7, yh, 12 or a7, a7, yl beqz a7, 2b movi a2, 1 - abi_return + leaf_return #endif /* L_cmpdf2 */ @@ -1767,7 +1767,7 @@ __unorddf2: .global __fixdfsi .type __fixdfsi, @function __fixdfsi: - abi_entry sp, 32 + leaf_entry sp, 16 /* Check for NaN and Infinity. */ movi a6, 0x7ff00000 @@ -1792,7 +1792,7 @@ __fixdfsi: /* Negate the result if sign != 0. */ neg a2, a5 movgez a2, a5, a7 - abi_return + leaf_return .Lfixdfsi_nan_or_inf: /* Handle Infinity and NaN. */ @@ -1808,11 +1808,11 @@ __fixdfsi: addi a5, a4, -1 /* 0x7fffffff */ movgez a4, a5, xh mov a2, a4 - abi_return + leaf_return .Lfixdfsi_zero: movi a2, 0 - abi_return + leaf_return #endif /* L_fixdfsi */ @@ -1822,7 +1822,7 @@ __fixdfsi: .global __fixdfdi .type __fixdfdi, @function __fixdfdi: - abi_entry sp, 32 + leaf_entry sp, 16 /* Check for NaN and Infinity. */ movi a6, 0x7ff00000 @@ -1854,7 +1854,7 @@ __fixdfdi: neg xh, xh beqz xl, 1f addi xh, xh, -1 -1: abi_return +1: leaf_return .Lfixdfdi_smallshift: src xl, xh, xl @@ -1875,16 +1875,16 @@ __fixdfdi: bgez xh, 1f mov xh, a7 movi xl, 0 - abi_return + leaf_return 1: addi xh, a7, -1 /* 0x7fffffff */ movi xl, -1 - abi_return + leaf_return .Lfixdfdi_zero: movi xh, 0 movi xl, 0 - abi_return + leaf_return #endif /* L_fixdfdi */ @@ -1894,7 +1894,7 @@ __fixdfdi: .global __fixunsdfsi .type __fixunsdfsi, @function __fixunsdfsi: - abi_entry sp, 32 + leaf_entry sp, 16 /* Check for NaN and Infinity. */ movi a6, 0x7ff00000 @@ -1921,7 +1921,7 @@ __fixunsdfsi: /* Negate the result if sign != 0. */ neg a2, a5 movgez a2, a5, a7 - abi_return + leaf_return .Lfixunsdfsi_nan_or_inf: /* Handle Infinity and NaN. */ @@ -1931,28 +1931,28 @@ __fixunsdfsi: /* Translate NaN to 0xffffffff. */ movi a2, -1 - abi_return + leaf_return .Lfixunsdfsi_maxint: slli a4, a6, 11 /* 0x80000000 */ movi a5, -1 /* 0xffffffff */ movgez a4, a5, xh mov a2, a4 - abi_return + leaf_return .Lfixunsdfsi_zero: movi a2, 0 - abi_return + leaf_return .Lfixunsdfsi_bigexp: /* Handle unsigned maximum exponent case. */ bltz xh, 1f mov a2, a5 /* no shift needed */ - abi_return + leaf_return /* Return 0x80000000 if negative. */ 1: slli a2, a6, 11 - abi_return + leaf_return #endif /* L_fixunsdfsi */ @@ -1962,7 +1962,7 @@ __fixunsdfsi: .global __fixunsdfdi .type __fixunsdfdi, @function __fixunsdfdi: - abi_entry sp, 32 + leaf_entry sp, 16 /* Check for NaN and Infinity. */ movi a6, 0x7ff00000 @@ -1996,7 +1996,7 @@ __fixunsdfdi: neg xh, xh beqz xl, 1f addi xh, xh, -1 -1: abi_return +1: leaf_return .Lfixunsdfdi_smallshift: src xl, xh, xl @@ -2012,23 +2012,23 @@ __fixunsdfdi: /* Translate NaN to 0xffffffff.... */ 1: movi xh, -1 movi xl, -1 - abi_return + leaf_return .Lfixunsdfdi_maxint: bgez xh, 1b 2: slli xh, a6, 11 /* 0x80000000 */ movi xl, 0 - abi_return + leaf_return .Lfixunsdfdi_zero: movi xh, 0 movi xl, 0 - abi_return + leaf_return .Lfixunsdfdi_bigexp: /* Handle unsigned maximum exponent case. */ bltz a7, 2b - abi_return /* no shift needed */ + leaf_return /* no shift needed */ #endif /* L_fixunsdfdi */ @@ -2038,7 +2038,7 @@ __fixunsdfdi: .global __floatunsidf .type __floatunsidf, @function __floatunsidf: - abi_entry sp, 32 + leaf_entry sp, 16 beqz a2, .Lfloatsidf_return_zero /* Set the sign to zero and jump to the floatsidf code. */ @@ -2049,7 +2049,7 @@ __floatunsidf: .global __floatsidf .type __floatsidf, @function __floatsidf: - abi_entry sp, 32 + leaf_entry sp, 16 /* Check for zero. */ beqz a2, .Lfloatsidf_return_zero @@ -2084,11 +2084,11 @@ __floatsidf: /* Add the sign and return. */ slli a7, a7, 31 or xh, xh, a7 - abi_return + leaf_return .Lfloatsidf_return_zero: movi a3, 0 - abi_return + leaf_return #endif /* L_floatsidf */ @@ -2098,7 +2098,7 @@ __floatsidf: .global __floatundidf .type __floatundidf, @function __floatundidf: - abi_entry sp, 32 + leaf_entry sp, 16 /* Check for zero. */ or a4, xh, xl @@ -2112,7 +2112,7 @@ __floatundidf: .global __floatdidf .type __floatdidf, @function __floatdidf: - abi_entry sp, 32 + leaf_entry sp, 16 /* Check for zero. */ or a4, xh, xl @@ -2161,7 +2161,7 @@ __floatdidf: /* Check if the leftover fraction is exactly 1/2. */ slli a6, a6, 1 beqz a6, .Lfloatdidf_exactlyhalf -2: abi_return +2: leaf_return .Lfloatdidf_bigshift: /* xh is zero. Normalize with first 1 bit of xl in the msb of xh. */ @@ -2176,14 +2176,14 @@ __floatdidf: /* Round down to the nearest even value. */ srli xl, xl, 1 slli xl, xl, 1 - abi_return + leaf_return .Lfloatdidf_roundcarry: /* xl is always zero when the rounding increment overflows, so there's no need to round it to an even value. */ addi xh, xh, 1 /* Overflow to the exponent is OK. */ - abi_return + leaf_return #endif /* L_floatdidf */ @@ -2193,7 +2193,7 @@ __floatdidf: .global __truncdfsf2 .type __truncdfsf2, @function __truncdfsf2: - abi_entry sp, 32 + leaf_entry sp, 16 /* Adjust the exponent bias. */ movi a4, (0x3ff - 0x7f) << 20 @@ -2228,13 +2228,13 @@ __truncdfsf2: /* Check if the leftover fraction is exactly 1/2. */ slli a4, a4, 1 beqz a4, .Ltrunc_exactlyhalf -1: abi_return +1: leaf_return .Ltrunc_exactlyhalf: /* Round down to the nearest even value. */ srli a2, a2, 1 slli a2, a2, 1 - abi_return + leaf_return .Ltrunc_overflow: /* Check if exponent == 0x7ff. */ @@ -2254,7 +2254,7 @@ __truncdfsf2: extui a6, xh, 31, 1 ssai 1 src a2, a6, a4 - abi_return + leaf_return .Ltrunc_underflow: /* Find shift count for a subnormal. Flush to zero if >= 32. */ @@ -2287,7 +2287,7 @@ __truncdfsf2: /* Return +/- zero. */ 1: extui a2, xh, 31, 1 slli a2, a2, 31 - abi_return + leaf_return #endif /* L_truncdfsf2 */ @@ -2297,7 +2297,7 @@ __truncdfsf2: .global __extendsfdf2 .type __extendsfdf2, @function __extendsfdf2: - abi_entry sp, 32 + leaf_entry sp, 16 /* Save the sign bit and then shift it off. */ extui a5, a2, 31, 1 @@ -2320,7 +2320,7 @@ __extendsfdf2: /* Add the sign bit. */ or xh, a4, a5 - abi_return + leaf_return .Lextend_nan_or_inf: movi a4, 0x7ff00000 @@ -2335,7 +2335,7 @@ __extendsfdf2: /* Add the sign and return. */ 1: or xh, a4, a5 movi xl, 0 - abi_return + leaf_return .Lextend_expzero: beqz a4, 1b @@ -2358,7 +2358,7 @@ __extendsfdf2: /* Add the sign and return. */ or xh, a4, a5 - abi_return + leaf_return #endif /* L_extendsfdf2 */ diff --git a/gcc/config/xtensa/ieee754-sf.S b/gcc/config/xtensa/ieee754-sf.S index f669cc8ec2f..a75e742898b 100644 --- a/gcc/config/xtensa/ieee754-sf.S +++ b/gcc/config/xtensa/ieee754-sf.S @@ -51,10 +51,10 @@ .global __negsf2 .type __negsf2, @function __negsf2: - abi_entry sp, 32 + leaf_entry sp, 16 movi a4, 0x80000000 xor a2, a2, a4 - abi_return + leaf_return #endif /* L_negsf2 */ @@ -73,12 +73,12 @@ __addsf3_aux: /* If x is a NaN, return it. Otherwise, return y. */ slli a7, a2, 9 beqz a7, .Ladd_ynan_or_inf -1: abi_return +1: leaf_return .Ladd_ynan_or_inf: /* Return y. */ mov a2, a3 - abi_return + leaf_return .Ladd_opposite_signs: /* Operand signs differ. Do a subtraction. */ @@ -90,7 +90,7 @@ __addsf3_aux: .global __addsf3 .type __addsf3, @function __addsf3: - abi_entry sp, 32 + leaf_entry sp, 16 movi a6, 0x7f800000 /* Check if the two operands have the same sign. */ @@ -158,7 +158,7 @@ __addsf3: a carry into the exponent field will not work because it assumes there is an implicit "1.0" that needs to be added. */ add a2, a2, a3 -1: abi_return +1: leaf_return .Ladd_xexpzero: /* Same as "yexpzero" except skip handling the case when both @@ -200,11 +200,11 @@ __addsf3: /* Check if the leftover fraction is exactly 1/2. */ slli a9, a9, 1 beqz a9, .Ladd_exactlyhalf -1: abi_return +1: leaf_return .Ladd_returny: mov a2, a3 - abi_return + leaf_return .Ladd_carry: /* The addition has overflowed into the exponent field, so the @@ -242,7 +242,7 @@ __addsf3: bbci.l a10, 0, 1f addi a2, a2, 1 beqz a9, .Ladd_exactlyhalf -1: abi_return +1: leaf_return .Ladd_infinity: /* Clear the mantissa. */ @@ -252,13 +252,13 @@ __addsf3: /* The sign bit may have been lost in a carry-out. Put it back. */ slli a8, a8, 1 or a2, a2, a8 - abi_return + leaf_return .Ladd_exactlyhalf: /* Round down to the nearest even value. */ srli a2, a2, 1 slli a2, a2, 1 - abi_return + leaf_return /* Subtraction */ @@ -274,13 +274,13 @@ __subsf3_aux: /* Both x and y are either NaN or Inf, so the result is NaN. */ movi a4, 0x400000 /* make it a quiet NaN */ or a2, a2, a4 -1: abi_return +1: leaf_return .Lsub_ynan_or_inf: /* Negate y and return it. */ slli a7, a6, 8 xor a2, a3, a7 - abi_return + leaf_return .Lsub_opposite_signs: /* Operand signs differ. Do an addition. */ @@ -292,7 +292,7 @@ __subsf3_aux: .global __subsf3 .type __subsf3, @function __subsf3: - abi_entry sp, 32 + leaf_entry sp, 16 movi a6, 0x7f800000 /* Check if the two operands have the same sign. */ @@ -366,7 +366,7 @@ __subsf3: /* Negate and return y. */ slli a7, a6, 8 xor a2, a3, a7 -1: abi_return +1: leaf_return .Lsub_xsmaller: /* Same thing as the "ysmaller" code, but with x and y swapped and @@ -408,7 +408,7 @@ __subsf3: /* Check if the leftover fraction is exactly 1/2. */ slli a9, a9, 1 beqz a9, .Lsub_exactlyhalf -1: abi_return +1: leaf_return .Lsub_xexpzero: /* Same as "yexpzero". */ @@ -421,7 +421,7 @@ __subsf3: .Lsub_return_zero: movi a2, 0 - abi_return + leaf_return .Lsub_borrow: /* The subtraction has underflowed into the exponent field, so the @@ -457,7 +457,7 @@ __subsf3: /* Round down to the nearest even value. */ srli a2, a2, 1 slli a2, a2, 1 - abi_return + leaf_return .Lsub_xzero: /* If there was a borrow from the exponent, and the mantissa and @@ -570,7 +570,7 @@ __mulsf3_aux: .global __mulsf3 .type __mulsf3, @function __mulsf3: - abi_entry sp, 48 + leaf_entry sp, 32 #if __XTENSA_CALL0_ABI__ addi sp, sp, -32 s32i a12, sp, 16 @@ -780,7 +780,7 @@ __mulsf3: l32i a15, sp, 28 addi sp, sp, 32 #endif - abi_return + leaf_return .Lmul_exactlyhalf: /* Round down to the nearest even value. */ @@ -895,7 +895,7 @@ __divsf3_aux: bnez a4, 1f movi a4, 0x400000 /* make it a quiet NaN */ or a2, a2, a4 -1: abi_return +1: leaf_return .Ldiv_xexpzero: /* Clear the sign bit of x. */ @@ -918,7 +918,7 @@ __divsf3_aux: /* Return zero with the appropriate sign bit. */ srli a2, a7, 31 slli a2, a2, 31 - abi_return + leaf_return .Ldiv_xnan_or_inf: /* Set the sign bit of the result. */ @@ -929,7 +929,7 @@ __divsf3_aux: bnall a3, a6, 1f movi a4, 0x400000 /* make it a quiet NaN */ or a2, a2, a4 -1: abi_return +1: leaf_return .Ldiv_ynan_or_inf: /* If y is Infinity, return zero. */ @@ -937,13 +937,13 @@ __divsf3_aux: beqz a8, .Ldiv_return_zero /* y is NaN; return it. */ mov a2, a3 - abi_return + leaf_return .align 4 .global __divsf3 .type __divsf3, @function __divsf3: - abi_entry sp, 32 + leaf_entry sp, 16 movi a6, 0x7f800000 /* Get the sign of the result. */ @@ -1036,7 +1036,7 @@ __divsf3: srli a7, a7, 31 slli a7, a7, 31 or a2, a2, a7 - abi_return + leaf_return .Ldiv_overflow: bltz a8, .Ldiv_underflow @@ -1085,7 +1085,7 @@ __divsf3: /* Return zero with the appropriate sign bit. */ srli a2, a7, 31 slli a2, a2, 31 - abi_return + leaf_return #endif /* L_divsf3 */ @@ -1099,7 +1099,7 @@ __divsf3: .set __nesf2, __eqsf2 .type __eqsf2, @function __eqsf2: - abi_entry sp, 32 + leaf_entry sp, 16 bne a2, a3, 4f /* The values are equal but NaN != NaN. Check the exponent. */ @@ -1108,11 +1108,11 @@ __eqsf2: /* Equal. */ movi a2, 0 - abi_return + leaf_return /* Not equal. */ 2: movi a2, 1 - abi_return + leaf_return /* Check if the mantissas are nonzero. */ 3: slli a7, a2, 9 @@ -1127,7 +1127,7 @@ __eqsf2: 5: movi a2, 0 movi a3, 1 movnez a2, a3, a7 - abi_return + leaf_return /* Greater Than */ @@ -1136,7 +1136,7 @@ __eqsf2: .global __gtsf2 .type __gtsf2, @function __gtsf2: - abi_entry sp, 32 + leaf_entry sp, 16 movi a6, 0x7f800000 ball a2, a6, 2f 1: bnall a3, a6, .Lle_cmp @@ -1145,13 +1145,13 @@ __gtsf2: slli a7, a3, 9 beqz a7, .Lle_cmp movi a2, 0 - abi_return + leaf_return /* Check if x is a NaN. */ 2: slli a7, a2, 9 beqz a7, 1b movi a2, 0 - abi_return + leaf_return /* Less Than or Equal */ @@ -1160,7 +1160,7 @@ __gtsf2: .global __lesf2 .type __lesf2, @function __lesf2: - abi_entry sp, 32 + leaf_entry sp, 16 movi a6, 0x7f800000 ball a2, a6, 2f 1: bnall a3, a6, .Lle_cmp @@ -1169,13 +1169,13 @@ __lesf2: slli a7, a3, 9 beqz a7, .Lle_cmp movi a2, 1 - abi_return + leaf_return /* Check if x is a NaN. */ 2: slli a7, a2, 9 beqz a7, 1b movi a2, 1 - abi_return + leaf_return .Lle_cmp: /* Check if x and y have different signs. */ @@ -1188,13 +1188,13 @@ __lesf2: /* Check if x <= y. */ bltu a3, a2, 5f 4: movi a2, 0 - abi_return + leaf_return .Lle_xneg: /* Check if y <= x. */ bgeu a2, a3, 4b 5: movi a2, 1 - abi_return + leaf_return .Lle_diff_signs: bltz a2, 4b @@ -1205,7 +1205,7 @@ __lesf2: movi a2, 1 movi a3, 0 moveqz a2, a3, a7 - abi_return + leaf_return /* Greater Than or Equal */ @@ -1214,7 +1214,7 @@ __lesf2: .global __gesf2 .type __gesf2, @function __gesf2: - abi_entry sp, 32 + leaf_entry sp, 16 movi a6, 0x7f800000 ball a2, a6, 2f 1: bnall a3, a6, .Llt_cmp @@ -1223,13 +1223,13 @@ __gesf2: slli a7, a3, 9 beqz a7, .Llt_cmp movi a2, -1 - abi_return + leaf_return /* Check if x is a NaN. */ 2: slli a7, a2, 9 beqz a7, 1b movi a2, -1 - abi_return + leaf_return /* Less Than */ @@ -1238,7 +1238,7 @@ __gesf2: .global __ltsf2 .type __ltsf2, @function __ltsf2: - abi_entry sp, 32 + leaf_entry sp, 16 movi a6, 0x7f800000 ball a2, a6, 2f 1: bnall a3, a6, .Llt_cmp @@ -1247,13 +1247,13 @@ __ltsf2: slli a7, a3, 9 beqz a7, .Llt_cmp movi a2, 0 - abi_return + leaf_return /* Check if x is a NaN. */ 2: slli a7, a2, 9 beqz a7, 1b movi a2, 0 - abi_return + leaf_return .Llt_cmp: /* Check if x and y have different signs. */ @@ -1266,13 +1266,13 @@ __ltsf2: /* Check if x < y. */ bgeu a2, a3, 5f 4: movi a2, -1 - abi_return + leaf_return .Llt_xneg: /* Check if y < x. */ bltu a3, a2, 4b 5: movi a2, 0 - abi_return + leaf_return .Llt_diff_signs: bgez a2, 5b @@ -1283,7 +1283,7 @@ __ltsf2: movi a2, 0 movi a3, -1 movnez a2, a3, a7 - abi_return + leaf_return /* Unordered */ @@ -1292,22 +1292,22 @@ __ltsf2: .global __unordsf2 .type __unordsf2, @function __unordsf2: - abi_entry sp, 32 + leaf_entry sp, 16 movi a6, 0x7f800000 ball a2, a6, 3f 1: ball a3, a6, 4f 2: movi a2, 0 - abi_return + leaf_return 3: slli a7, a2, 9 beqz a7, 1b movi a2, 1 - abi_return + leaf_return 4: slli a7, a3, 9 beqz a7, 2b movi a2, 1 - abi_return + leaf_return #endif /* L_cmpsf2 */ @@ -1317,7 +1317,7 @@ __unordsf2: .global __fixsfsi .type __fixsfsi, @function __fixsfsi: - abi_entry sp, 32 + leaf_entry sp, 16 /* Check for NaN and Infinity. */ movi a6, 0x7f800000 @@ -1340,7 +1340,7 @@ __fixsfsi: /* Negate the result if sign != 0. */ neg a2, a5 movgez a2, a5, a7 - abi_return + leaf_return .Lfixsfsi_nan_or_inf: /* Handle Infinity and NaN. */ @@ -1355,11 +1355,11 @@ __fixsfsi: addi a5, a4, -1 /* 0x7fffffff */ movgez a4, a5, a2 mov a2, a4 - abi_return + leaf_return .Lfixsfsi_zero: movi a2, 0 - abi_return + leaf_return #endif /* L_fixsfsi */ @@ -1369,7 +1369,7 @@ __fixsfsi: .global __fixsfdi .type __fixsfdi, @function __fixsfdi: - abi_entry sp, 32 + leaf_entry sp, 16 /* Check for NaN and Infinity. */ movi a6, 0x7f800000 @@ -1398,7 +1398,7 @@ __fixsfdi: neg xh, xh beqz xl, 1f addi xh, xh, -1 -1: abi_return +1: leaf_return .Lfixsfdi_smallshift: movi xl, 0 @@ -1419,16 +1419,16 @@ __fixsfdi: bgez a2, 1f mov xh, a7 movi xl, 0 - abi_return + leaf_return 1: addi xh, a7, -1 /* 0x7fffffff */ movi xl, -1 - abi_return + leaf_return .Lfixsfdi_zero: movi xh, 0 movi xl, 0 - abi_return + leaf_return #endif /* L_fixsfdi */ @@ -1438,7 +1438,7 @@ __fixsfdi: .global __fixunssfsi .type __fixunssfsi, @function __fixunssfsi: - abi_entry sp, 32 + leaf_entry sp, 16 /* Check for NaN and Infinity. */ movi a6, 0x7f800000 @@ -1463,7 +1463,7 @@ __fixunssfsi: /* Negate the result if sign != 0. */ neg a2, a5 movgez a2, a5, a7 - abi_return + leaf_return .Lfixunssfsi_nan_or_inf: /* Handle Infinity and NaN. */ @@ -1472,28 +1472,28 @@ __fixunssfsi: /* Translate NaN to 0xffffffff. */ movi a2, -1 - abi_return + leaf_return .Lfixunssfsi_maxint: slli a4, a6, 8 /* 0x80000000 */ movi a5, -1 /* 0xffffffff */ movgez a4, a5, a2 mov a2, a4 - abi_return + leaf_return .Lfixunssfsi_zero: movi a2, 0 - abi_return + leaf_return .Lfixunssfsi_bigexp: /* Handle unsigned maximum exponent case. */ bltz a2, 1f mov a2, a5 /* no shift needed */ - abi_return + leaf_return /* Return 0x80000000 if negative. */ 1: slli a2, a6, 8 - abi_return + leaf_return #endif /* L_fixunssfsi */ @@ -1503,7 +1503,7 @@ __fixunssfsi: .global __fixunssfdi .type __fixunssfdi, @function __fixunssfdi: - abi_entry sp, 32 + leaf_entry sp, 16 /* Check for NaN and Infinity. */ movi a6, 0x7f800000 @@ -1534,7 +1534,7 @@ __fixunssfdi: neg xh, xh beqz xl, 1f addi xh, xh, -1 -1: abi_return +1: leaf_return .Lfixunssfdi_smallshift: movi xl, 0 @@ -1550,24 +1550,24 @@ __fixunssfdi: /* Translate NaN to 0xffffffff.... */ 1: movi xh, -1 movi xl, -1 - abi_return + leaf_return .Lfixunssfdi_maxint: bgez a2, 1b 2: slli xh, a6, 8 /* 0x80000000 */ movi xl, 0 - abi_return + leaf_return .Lfixunssfdi_zero: movi xh, 0 movi xl, 0 - abi_return + leaf_return .Lfixunssfdi_bigexp: /* Handle unsigned maximum exponent case. */ bltz a7, 2b movi xl, 0 - abi_return /* no shift needed */ + leaf_return /* no shift needed */ #endif /* L_fixunssfdi */ @@ -1577,7 +1577,7 @@ __fixunssfdi: .global __floatunsisf .type __floatunsisf, @function __floatunsisf: - abi_entry sp, 32 + leaf_entry sp, 16 beqz a2, .Lfloatsisf_return /* Set the sign to zero and jump to the floatsisf code. */ @@ -1588,7 +1588,7 @@ __floatunsisf: .global __floatsisf .type __floatsisf, @function __floatsisf: - abi_entry sp, 32 + leaf_entry sp, 16 /* Check for zero. */ beqz a2, .Lfloatsisf_return @@ -1633,13 +1633,13 @@ __floatsisf: beqz a6, .Lfloatsisf_exactlyhalf .Lfloatsisf_return: - abi_return + leaf_return .Lfloatsisf_exactlyhalf: /* Round down to the nearest even value. */ srli a2, a2, 1 slli a2, a2, 1 - abi_return + leaf_return #endif /* L_floatsisf */ @@ -1649,7 +1649,7 @@ __floatsisf: .global __floatundisf .type __floatundisf, @function __floatundisf: - abi_entry sp, 32 + leaf_entry sp, 16 /* Check for zero. */ or a4, xh, xl @@ -1663,7 +1663,7 @@ __floatundisf: .global __floatdisf .type __floatdisf, @function __floatdisf: - abi_entry sp, 32 + leaf_entry sp, 16 /* Check for zero. */ or a4, xh, xl @@ -1714,7 +1714,7 @@ __floatdisf: /* Check if the leftover fraction is exactly 1/2. */ slli a6, a6, 1 beqz a6, .Lfloatdisf_exactlyhalf -2: abi_return +2: leaf_return .Lfloatdisf_bigshift: /* xh is zero. Normalize with first 1 bit of xl in the msb of xh. */ @@ -1729,6 +1729,6 @@ __floatdisf: /* Round down to the nearest even value. */ srli a2, a2, 1 slli a2, a2, 1 - abi_return + leaf_return #endif /* L_floatdisf */ diff --git a/gcc/config/xtensa/lib1funcs.asm b/gcc/config/xtensa/lib1funcs.asm index ebfd54ddfcd..7d316ede805 100644 --- a/gcc/config/xtensa/lib1funcs.asm +++ b/gcc/config/xtensa/lib1funcs.asm @@ -30,10 +30,11 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include "xtensa-config.h" -# Note: These functions use a minimum stack frame size of 32. This is -# necessary for Xtensa configurations that only support a fixed register -# window size of 8, where even leaf functions (such as these) need to -# allocate space for a 4-word "extra save area". +# Force each stack frame to contain an "Extra Save Area" (ESA) of at least +# 16 bytes. This is necessary for non-standard Xtensa configurations that +# only support a fixed register window size of 8, where even leaf functions +# (such as these) need the ESA for interrupt handlers. +#define MIN_ESA 16 # Define macros for the ABS and ADDX* instructions to handle cases # where they are not included in the Xtensa processor configuration. @@ -75,20 +76,20 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #endif .endm -# Define macros for function entry and return, supporting either the +# Define macros for leaf function entry and return, supporting either the # standard register windowed ABI or the non-windowed call0 ABI. These # macros do not allocate any extra stack space, so they only work for # leaf functions that do not need to spill anything to the stack. - .macro abi_entry reg, size + .macro leaf_entry reg, size #if XCHAL_HAVE_WINDOWED && !__XTENSA_CALL0_ABI__ - entry \reg, \size + entry \reg, \size + MIN_ESA #else /* do nothing */ #endif .endm - .macro abi_return + .macro leaf_return #if XCHAL_HAVE_WINDOWED && !__XTENSA_CALL0_ABI__ retw #else @@ -102,14 +103,14 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA .global __mulsi3 .type __mulsi3,@function __mulsi3: - abi_entry sp, 32 + leaf_entry sp, 16 #if XCHAL_HAVE_MUL16 or a4, a2, a3 srai a4, a4, 16 bnez a4, .LMUL16 mul16u a2, a2, a3 - abi_return + leaf_return .LMUL16: srai a4, a2, 16 srai a5, a3, 16 @@ -165,7 +166,7 @@ __mulsi3: bgeui a3, 16, .Lmult_main_loop neg a3, a2 movltz a2, a3, a5 - abi_return + leaf_return .align 4 .Lmult_main_loop: @@ -195,7 +196,7 @@ __mulsi3: #endif /* !XCHAL_HAVE_MUL16 && !XCHAL_HAVE_MAC16 */ - abi_return + leaf_return .size __mulsi3,.-__mulsi3 #endif /* L_mulsi3 */ @@ -264,7 +265,7 @@ __nsau_data: .global __udivsi3 .type __udivsi3,@function __udivsi3: - abi_entry sp, 32 + leaf_entry sp, 16 bltui a3, 2, .Lle_one # check if the divisor <= 1 mov a6, a2 # keep dividend in a6 @@ -297,24 +298,24 @@ __udivsi3: bltu a6, a3, .Lreturn addi a2, a2, 1 # increment quotient if dividend >= divisor .Lreturn: - abi_return + leaf_return .Lle_one: beqz a3, .Lerror # if divisor == 1, return the dividend - abi_return + leaf_return .Lspecial: # return dividend >= divisor bltu a6, a3, .Lreturn0 movi a2, 1 - abi_return + leaf_return .Lerror: # just return 0; could throw an exception .Lreturn0: movi a2, 0 - abi_return + leaf_return .size __udivsi3,.-__udivsi3 #endif /* L_udivsi3 */ @@ -325,7 +326,7 @@ __udivsi3: .global __divsi3 .type __divsi3,@function __divsi3: - abi_entry sp, 32 + leaf_entry sp, 16 xor a7, a2, a3 # sign = dividend ^ divisor do_abs a6, a2, a4 # udividend = abs(dividend) do_abs a3, a3, a4 # udivisor = abs(divisor) @@ -361,27 +362,27 @@ __divsi3: .Lreturn: neg a5, a2 movltz a2, a5, a7 # return (sign < 0) ? -quotient : quotient - abi_return + leaf_return .Lle_one: beqz a3, .Lerror neg a2, a6 # if udivisor == 1, then return... movgez a2, a6, a7 # (sign < 0) ? -udividend : udividend - abi_return + leaf_return .Lspecial: bltu a6, a3, .Lreturn0 # if dividend < divisor, return 0 movi a2, 1 movi a4, -1 movltz a2, a4, a7 # else return (sign < 0) ? -1 : 1 - abi_return + leaf_return .Lerror: # just return 0; could throw an exception .Lreturn0: movi a2, 0 - abi_return + leaf_return .size __divsi3,.-__divsi3 #endif /* L_divsi3 */ @@ -392,7 +393,7 @@ __divsi3: .global __umodsi3 .type __umodsi3,@function __umodsi3: - abi_entry sp, 32 + leaf_entry sp, 16 bltui a3, 2, .Lle_one # check if the divisor is <= 1 do_nsau a5, a2, a6, a7 # dividend_shift = nsau(dividend) @@ -422,13 +423,13 @@ __umodsi3: bltu a2, a3, .Lreturn sub a2, a2, a3 # subtract once more if dividend >= divisor .Lreturn: - abi_return + leaf_return .Lle_one: # the divisor is either 0 or 1, so just return 0. # someday we may want to throw an exception if the divisor is 0. movi a2, 0 - abi_return + leaf_return .size __umodsi3,.-__umodsi3 #endif /* L_umodsi3 */ @@ -439,7 +440,7 @@ __umodsi3: .global __modsi3 .type __modsi3,@function __modsi3: - abi_entry sp, 32 + leaf_entry sp, 16 mov a7, a2 # save original (signed) dividend do_abs a2, a2, a4 # udividend = abs(dividend) do_abs a3, a3, a4 # udivisor = abs(divisor) @@ -474,13 +475,13 @@ __modsi3: bgez a7, .Lpositive neg a2, a2 # if (dividend < 0), return -udividend .Lpositive: - abi_return + leaf_return .Lle_one: # udivisor is either 0 or 1, so just return 0. # someday we may want to throw an exception if udivisor is 0. movi a2, 0 - abi_return + leaf_return .size __modsi3,.-__modsi3 #endif /* L_modsi3 */ diff --git a/gcc/convert.c b/gcc/convert.c index ba5f6fd7e73..97977040755 100644 --- a/gcc/convert.c +++ b/gcc/convert.c @@ -33,22 +33,31 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include "toplev.h" #include "langhooks.h" #include "real.h" -/* Convert EXPR to some pointer or reference type TYPE. +/* Convert EXPR to some pointer or reference type TYPE. EXPR must be pointer, reference, integer, enumeral, or literal zero; in other cases error is called. */ tree convert_to_pointer (tree type, tree expr) { + if (TREE_TYPE (expr) == type) + return expr; + if (integer_zerop (expr)) - return build_int_cst (type, 0); + { + tree t = build_int_cst (type, 0); + if (TREE_OVERFLOW (expr) || TREE_CONSTANT_OVERFLOW (expr)) + t = force_fit_type (t, 0, TREE_OVERFLOW (expr), + TREE_CONSTANT_OVERFLOW (expr)); + return t; + } switch (TREE_CODE (TREE_TYPE (expr))) { case POINTER_TYPE: case REFERENCE_TYPE: - return build1 (NOP_EXPR, type, expr); + return fold_build1 (NOP_EXPR, type, expr); case INTEGER_TYPE: case ENUMERAL_TYPE: diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index b3f411146eb..67de4f7f61e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,7 +1,57 @@ +2006-03-29 Roger Sayle + + PR c++/22494 + * init.c (build_vec_delete_1): Convert BASE pointer's type to + the base pointer type to avoid a type mismatch in the EQ_EXPR. + +2006-03-24 Carlos O'Donell + + * search.c (maybe_suppress_debug_info): If + flag_emit_class_debug_always then don't suppress. + +2006-03-22 Jason Merrill + + * name-lookup.c (push_namespace_with_attribs): Only apply hidden + visibility to anonymous namespaces if HAVE_GAS_HIDDEN. + +2006-03-21 Jakub Jelinek + + PR c++/26691 + * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle default arguments. + +2006-03-21 Jason Merrill + + PR c++/21581 + * parser.c (cp_parser_declaration): Support attributes on + anonymous namespaces. + * name-lookup.c (push_namespace_with_attribs): Anonymous + namespaces default to hidden visibility. + +2006-03-20 Jason Merrill + + PR c++/21764, c++/19238 + * decl.c (cp_finish_decl): Call determine_visibility later. + (start_preparsed_function): Likewise. + * cp-tree.h (CP_TYPE_CONTEXT, TYPE_NAMESPACE_SCOPE_P): New macros. + (TYPE_CLASS_SCOPE_P, TYPE_FUNCTION_SCOPE_P): New macros. + * name-lookup.h (struct cp_binding_level): Add has_visibility + bitfield. + * name-lookup.c: Include c-pragma.h. + (push_namespace_with_attribs): Split out from push_namespace. + Push visibility if appropriate. Set TREE_PUBLIC on namespaces. + (leave_scope): Pop visibility if appropriate. + * decl2.c (determine_visibility_from_class): Split out from... + (determine_visibility): ...here. Handle function scope and + nested classes. + (import_export_decl): Move visibility handling to + determine_visibility_from_class. + * parser.c (cp_parser_declaration, cp_parser_namespace_name): Allow + attributes on namespace declarations. + 2006-03-15 Volker Reichelt PR c++/6634 - decl.c (grokdeclarator): Do not accept long long double. + * decl.c (grokdeclarator): Do not accept long long double. Reorganize checks for invalid (combinations of) type modifiers. Quote modifiers in messages. diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c index bd8f1a0569f..be85ebb56f1 100644 --- a/gcc/cp/cp-gimplify.c +++ b/gcc/cp/cp-gimplify.c @@ -712,9 +712,16 @@ cp_genericize (tree fndecl) static tree cxx_omp_clause_apply_fn (tree fn, tree arg1, tree arg2) { + tree defparm, parm; + int i; + if (fn == NULL) return NULL; + defparm = TREE_CHAIN (TYPE_ARG_TYPES (TREE_TYPE (fn))); + if (arg2) + defparm = TREE_CHAIN (defparm); + if (TREE_CODE (TREE_TYPE (arg1)) == ARRAY_TYPE) { tree inner_type = TREE_TYPE (arg1); @@ -757,11 +764,16 @@ cxx_omp_clause_apply_fn (tree fn, tree arg1, tree arg2) t = build1 (LABEL_EXPR, void_type_node, lab); append_to_statement_list (t, &ret); - t = NULL; + t = tree_cons (NULL, p1, NULL); if (arg2) t = tree_cons (NULL, p2, t); - t = tree_cons (NULL, p1, t); - t = build_call (fn, t); + /* Handle default arguments. */ + i = 1 + (arg2 != NULL); + for (parm = defparm; parm != void_list_node; parm = TREE_CHAIN (parm)) + t = tree_cons (NULL, convert_default_arg (TREE_VALUE (parm), + TREE_PURPOSE (parm), + fn, i++), t); + t = build_call (fn, nreverse (t)); append_to_statement_list (t, &ret); t = fold_convert (TREE_TYPE (p1), TYPE_SIZE_UNIT (inner_type)); @@ -785,11 +797,16 @@ cxx_omp_clause_apply_fn (tree fn, tree arg1, tree arg2) } else { - tree t = NULL; + tree t = tree_cons (NULL, build_fold_addr_expr (arg1), NULL); if (arg2) t = tree_cons (NULL, build_fold_addr_expr (arg2), t); - t = tree_cons (NULL, build_fold_addr_expr (arg1), t); - return build_call (fn, t); + /* Handle default arguments. */ + i = 1 + (arg2 != NULL); + for (parm = defparm; parm != void_list_node; parm = TREE_CHAIN (parm)) + t = tree_cons (NULL, convert_default_arg (TREE_VALUE (parm), + TREE_PURPOSE (parm), + fn, i++), t); + return build_call (fn, nreverse (t)); } } diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 69d64667502..4b155735427 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -1964,6 +1964,8 @@ struct lang_decl GTY(()) /* NULL_TREE in DECL_CONTEXT represents the global namespace. */ #define CP_DECL_CONTEXT(NODE) \ (DECL_CONTEXT (NODE) ? DECL_CONTEXT (NODE) : global_namespace) +#define CP_TYPE_CONTEXT(NODE) \ + (TYPE_CONTEXT (NODE) ? TYPE_CONTEXT (NODE) : global_namespace) #define FROB_CONTEXT(NODE) ((NODE) == global_namespace ? NULL_TREE : (NODE)) /* 1 iff NODE has namespace scope, including the global namespace. */ @@ -1971,15 +1973,25 @@ struct lang_decl GTY(()) (!DECL_TEMPLATE_PARM_P (NODE) \ && TREE_CODE (CP_DECL_CONTEXT (NODE)) == NAMESPACE_DECL) +#define TYPE_NAMESPACE_SCOPE_P(NODE) \ + (TREE_CODE (CP_TYPE_CONTEXT (NODE)) == NAMESPACE_DECL) + /* 1 iff NODE is a class member. */ #define DECL_CLASS_SCOPE_P(NODE) \ (DECL_CONTEXT (NODE) && TYPE_P (DECL_CONTEXT (NODE))) +#define TYPE_CLASS_SCOPE_P(NODE) \ + (TYPE_CONTEXT (NODE) && TYPE_P (TYPE_CONTEXT (NODE))) + /* 1 iff NODE is function-local. */ #define DECL_FUNCTION_SCOPE_P(NODE) \ (DECL_CONTEXT (NODE) \ && TREE_CODE (DECL_CONTEXT (NODE)) == FUNCTION_DECL) +#define TYPE_FUNCTION_SCOPE_P(NODE) \ + (TYPE_CONTEXT (NODE) \ + && TREE_CODE (TYPE_CONTEXT (NODE)) == FUNCTION_DECL) + /* 1 iff VAR_DECL node NODE is a type-info decl. This flag is set for both the primary typeinfo object and the associated NTBS name. */ #define DECL_TINFO_P(NODE) TREE_LANG_FLAG_4 (VAR_DECL_CHECK (NODE)) diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index bb6a59c4c55..45feb9f0c58 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -5178,9 +5178,6 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p, the class specifier. */ if (!DECL_EXTERNAL (decl)) var_definition_p = true; - /* The variable is being defined, so determine its - visibility. */ - determine_visibility (decl); } /* If the variable has an array type, lay out the type, even if there is no initializer. It is valid to index through the @@ -5244,6 +5241,10 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p, initialize_local_var (decl, init); } + /* The variable is being defined, so determine its visibility. + This needs to happen after the linkage is set. */ + determine_visibility (decl); + /* If a variable is defined, and then a subsequent definition with external linkage is encountered, we will get here twice for the same variable. We want to avoid @@ -10422,12 +10423,6 @@ start_preparsed_function (tree decl1, tree attrs, int flags) maybe_apply_pragma_weak (decl1); } - /* Determine the ELF visibility attribute for the function. We must - not do this before calling "pushdecl", as we must allow - "duplicate_decls" to merge any attributes appropriately. */ - if (!DECL_CLONED_FUNCTION_P (decl1)) - determine_visibility (decl1); - /* Reset these in case the call to pushdecl changed them. */ current_function_decl = decl1; cfun->decl = decl1; @@ -10546,6 +10541,13 @@ start_preparsed_function (tree decl1, tree attrs, int flags) DECL_INTERFACE_KNOWN (decl1) = 1; } + /* Determine the ELF visibility attribute for the function. We must not + do this before calling "pushdecl", as we must allow "duplicate_decls" + to merge any attributes appropriately. We also need to wait until + linkage is set. */ + if (!DECL_CLONED_FUNCTION_P (decl1)) + determine_visibility (decl1); + begin_scope (sk_function_parms, decl1); ++function_depth; diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index b332e6e9113..88d7e8e95f3 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -82,6 +82,7 @@ static tree prune_vars_needing_no_initialization (tree *); static void write_out_vars (tree); static void import_export_class (tree); static tree get_guard_bits (tree); +static void determine_visibility_from_class (tree, tree); /* A list of static class variables. This is needed, because a static class variable can be declared inside the class without @@ -1566,13 +1567,27 @@ maybe_emit_vtables (tree ctype) } /* Like c_determine_visibility, but with additional C++-specific - behavior. */ + behavior. + + Function-scope entities can rely on the function's visibility because + it is set in start_preparsed_function. + + Class-scope entities cannot rely on the class's visibility until the end + of the enclosing class definition. + + Note that because namespaces have multiple independent definitions, + namespace visibility is handled elsewhere using the #pragma visibility + machinery rather than by decorating the namespace declaration. */ void determine_visibility (tree decl) { tree class_type; + /* Only relevant for names with external linkage. */ + if (!TREE_PUBLIC (decl)) + return; + /* Cloned constructors and destructors get the same visibility as the underlying function. That should be set up in maybe_clone_body. */ @@ -1596,6 +1611,14 @@ determine_visibility (tree decl) so they are automatically handled above. */ gcc_assert (TREE_CODE (decl) != VAR_DECL || !DECL_VTABLE_OR_VTT_P (decl)); + + if (DECL_FUNCTION_SCOPE_P (decl)) + { + tree fn = DECL_CONTEXT (decl); + DECL_VISIBILITY (decl) = DECL_VISIBILITY (fn); + DECL_VISIBILITY_SPECIFIED (decl) = DECL_VISIBILITY_SPECIFIED (fn); + } + /* Entities not associated with any class just get the visibility specified by their attributes. */ return; @@ -1605,33 +1628,62 @@ determine_visibility (tree decl) the visibility of their containing class. */ if (class_type) { - if (TARGET_DLLIMPORT_DECL_ATTRIBUTES - && lookup_attribute ("dllexport", TYPE_ATTRIBUTES (class_type))) - { - DECL_VISIBILITY (decl) = VISIBILITY_DEFAULT; - DECL_VISIBILITY_SPECIFIED (decl) = 1; - } - else if (TREE_CODE (decl) == FUNCTION_DECL - && DECL_DECLARED_INLINE_P (decl) - && visibility_options.inlines_hidden) - { - /* Don't change it if it has been set explicitly by user. */ - if (!DECL_VISIBILITY_SPECIFIED (decl)) - { - DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN; - DECL_VISIBILITY_SPECIFIED (decl) = 1; - } - } - else if (CLASSTYPE_VISIBILITY_SPECIFIED (class_type)) + determine_visibility_from_class (decl, class_type); + + /* Give the target a chance to override the visibility associated + with DECL. */ + if (TREE_CODE (decl) == VAR_DECL + && (DECL_TINFO_P (decl) + || (DECL_VTABLE_OR_VTT_P (decl) + /* Construction virtual tables are not exported because + they cannot be referred to from other object files; + their name is not standardized by the ABI. */ + && !DECL_CONSTRUCTION_VTABLE_P (decl))) + && TREE_PUBLIC (decl) + && !DECL_REALLY_EXTERN (decl) + && DECL_VISIBILITY_SPECIFIED (decl) + && (!class_type || !CLASSTYPE_VISIBILITY_SPECIFIED (class_type))) + targetm.cxx.determine_class_data_visibility (decl); + } +} + +static void +determine_visibility_from_class (tree decl, tree class_type) +{ + if (TARGET_DLLIMPORT_DECL_ATTRIBUTES + && lookup_attribute ("dllexport", TYPE_ATTRIBUTES (class_type))) + { + DECL_VISIBILITY (decl) = VISIBILITY_DEFAULT; + DECL_VISIBILITY_SPECIFIED (decl) = 1; + } + else if (TREE_CODE (decl) == FUNCTION_DECL + && DECL_DECLARED_INLINE_P (decl) + && visibility_options.inlines_hidden) + { + /* Don't change it if it has been set explicitly by user. */ + if (!DECL_VISIBILITY_SPECIFIED (decl)) { - DECL_VISIBILITY (decl) = CLASSTYPE_VISIBILITY (class_type); + DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN; DECL_VISIBILITY_SPECIFIED (decl) = 1; } - else if (!DECL_VISIBILITY_SPECIFIED (decl)) - { - DECL_VISIBILITY (decl) = CLASSTYPE_VISIBILITY (class_type); - DECL_VISIBILITY_SPECIFIED (decl) = 0; - } + } + else if (CLASSTYPE_VISIBILITY_SPECIFIED (class_type)) + { + DECL_VISIBILITY (decl) = CLASSTYPE_VISIBILITY (class_type); + DECL_VISIBILITY_SPECIFIED (decl) = 1; + } + else if (TYPE_CLASS_SCOPE_P (class_type)) + determine_visibility_from_class (decl, TYPE_CONTEXT (class_type)); + else if (TYPE_FUNCTION_SCOPE_P (class_type)) + { + tree fn = TYPE_CONTEXT (class_type); + DECL_VISIBILITY (decl) = DECL_VISIBILITY (fn); + DECL_VISIBILITY_SPECIFIED (decl) = DECL_VISIBILITY_SPECIFIED (fn); + } + else if (!DECL_VISIBILITY_SPECIFIED (decl)) + { + DECL_VISIBILITY (decl) = CLASSTYPE_VISIBILITY (class_type); + DECL_VISIBILITY_SPECIFIED (decl) = 0; } } @@ -1905,21 +1957,6 @@ import_export_decl (tree decl) comdat_linkage (decl); } - /* Give the target a chance to override the visibility associated - with DECL. */ - if (TREE_CODE (decl) == VAR_DECL - && (DECL_TINFO_P (decl) - || (DECL_VTABLE_OR_VTT_P (decl) - /* Construction virtual tables are not exported because - they cannot be referred to from other object files; - their name is not standardized by the ABI. */ - && !DECL_CONSTRUCTION_VTABLE_P (decl))) - && TREE_PUBLIC (decl) - && !DECL_REALLY_EXTERN (decl) - && DECL_VISIBILITY_SPECIFIED (decl) - && (!class_type || !CLASSTYPE_VISIBILITY_SPECIFIED (class_type))) - targetm.cxx.determine_class_data_visibility (decl); - DECL_INTERFACE_KNOWN (decl) = 1; } diff --git a/gcc/cp/init.c b/gcc/cp/init.c index 6a7e625a00f..194b29baea8 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -2212,7 +2212,8 @@ build_vec_delete_1 (tree base, tree maxindex, tree type, TREE_SIDE_EFFECTS (controller) = 1; body = build1 (EXIT_EXPR, void_type_node, - build2 (EQ_EXPR, boolean_type_node, base, tbase)); + build2 (EQ_EXPR, boolean_type_node, tbase, + fold_convert (ptype, base))); body = build_compound_expr (body, build_modify_expr (tbase, NOP_EXPR, build2 (MINUS_EXPR, ptype, tbase, size_exp))); diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index ebf8a3365ed..5aa16f1f373 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -31,6 +31,7 @@ Boston, MA 02110-1301, USA. */ #include "toplev.h" #include "diagnostic.h" #include "debug.h" +#include "c-pragma.h" /* The bindings for a particular name in a particular scope. */ @@ -1330,11 +1331,16 @@ leave_scope (void) is_class_level = 0; } +#ifdef HANDLE_PRAGMA_VISIBILITY + if (scope->has_visibility) + pop_visibility (); +#endif + /* Move one nesting level up. */ current_binding_level = scope->level_chain; /* Namespace-scopes are left most probably temporarily, not - completely; they can be reopen later, e.g. in namespace-extension + completely; they can be reopened later, e.g. in namespace-extension or any name binding activity that requires us to resume a namespace. For classes, we cache some binding levels. For other scopes, we just make the structure available for reuse. */ @@ -2958,6 +2964,15 @@ current_decl_namespace (void) void push_namespace (tree name) { + push_namespace_with_attribs (name, NULL_TREE); +} + +/* Same, but specify attributes to apply to the namespace. The attributes + only apply to the current namespace-body, not to any later extensions. */ + +void +push_namespace_with_attribs (tree name, tree attributes) +{ tree d = NULL_TREE; int need_new = 1; int implicit_use = 0; @@ -3004,6 +3019,7 @@ push_namespace (tree name) /* Make a new namespace, binding the name to it. */ d = build_lang_decl (NAMESPACE_DECL, name, void_type_node); DECL_CONTEXT (d) = FROB_CONTEXT (current_namespace); + TREE_PUBLIC (d) = 1; pushdecl (d); if (anon) { @@ -3021,6 +3037,47 @@ push_namespace (tree name) /* Enter the name space. */ current_namespace = d; +#ifdef HANDLE_PRAGMA_VISIBILITY + /* Clear has_visibility in case a previous namespace-definition had a + visibility attribute and this one doesn't. */ + current_binding_level->has_visibility = 0; + for (d = attributes; d; d = TREE_CHAIN (d)) + { + tree name = TREE_PURPOSE (d); + tree args = TREE_VALUE (d); + tree x; + + if (! is_attribute_p ("visibility", name)) + { + warning (OPT_Wattributes, "%qs attribute directive ignored", + IDENTIFIER_POINTER (name)); + continue; + } + + x = args ? TREE_VALUE (args) : NULL_TREE; + if (x == NULL_TREE || TREE_CODE (x) != STRING_CST || TREE_CHAIN (args)) + { + warning (OPT_Wattributes, "%qs attribute requires a single NTBS argument", + IDENTIFIER_POINTER (name)); + continue; + } + + current_binding_level->has_visibility = 1; + push_visibility (TREE_STRING_POINTER (x)); + goto found; + } +#ifdef HAVE_GAS_HIDDEN + if (anon) + { + /* Anonymous namespaces default to hidden visibility. This might + change once we implement export. */ + current_binding_level->has_visibility = 1; + push_visibility ("hidden"); + } +#endif + found: +#endif + timevar_pop (TV_NAME_LOOKUP); } diff --git a/gcc/cp/name-lookup.h b/gcc/cp/name-lookup.h index 20c82255a4d..ede7747d00d 100644 --- a/gcc/cp/name-lookup.h +++ b/gcc/cp/name-lookup.h @@ -259,7 +259,11 @@ struct cp_binding_level GTY(()) unsigned more_cleanups_ok : 1; unsigned have_cleanups : 1; - /* 22 bits left to fill a 32-bit word. */ + /* Nonzero if this level has associated visibility which we should pop + when leaving the scope. */ + unsigned has_visibility : 1; + + /* 23 bits left to fill a 32-bit word. */ }; /* The binding level currently in effect. */ @@ -307,6 +311,7 @@ extern void pop_inner_scope (tree, tree); extern void push_binding_level (struct cp_binding_level *); extern void push_namespace (tree); +extern void push_namespace_with_attribs (tree, tree); extern void pop_namespace (void); extern void push_nested_namespace (tree); extern void pop_nested_namespace (tree); diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 609109cd18d..ba421ab7b48 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -7101,9 +7101,10 @@ cp_parser_declaration (cp_parser* parser) && (/* A named namespace definition. */ (token2.type == CPP_NAME && (cp_lexer_peek_nth_token (parser->lexer, 3)->type - == CPP_OPEN_BRACE)) + != CPP_EQ)) /* An unnamed namespace definition. */ - || token2.type == CPP_OPEN_BRACE)) + || token2.type == CPP_OPEN_BRACE + || token2.keyword == RID_ATTRIBUTE)) cp_parser_namespace_definition (parser); /* Objective-C++ declaration/definition. */ else if (c_dialect_objc () && OBJC_IS_AT_KEYWORD (token1.keyword)) @@ -10507,7 +10508,7 @@ cp_parser_namespace_name (cp_parser* parser) static void cp_parser_namespace_definition (cp_parser* parser) { - tree identifier; + tree identifier, attribs; /* Look for the `namespace' keyword. */ cp_parser_require_keyword (parser, RID_NAMESPACE, "`namespace'"); @@ -10521,10 +10522,13 @@ cp_parser_namespace_definition (cp_parser* parser) else identifier = NULL_TREE; + /* Parse any specified attributes. */ + attribs = cp_parser_attributes_opt (parser); + /* Look for the `{' to start the namespace. */ cp_parser_require (parser, CPP_OPEN_BRACE, "`{'"); /* Start the namespace. */ - push_namespace (identifier); + push_namespace_with_attribs (identifier, attribs); /* Parse the body of the namespace. */ cp_parser_namespace_body (parser); /* Finish the namespace. */ diff --git a/gcc/cp/search.c b/gcc/cp/search.c index ec572d0b6df..66bbb133da0 100644 --- a/gcc/cp/search.c +++ b/gcc/cp/search.c @@ -2042,6 +2042,10 @@ maybe_suppress_debug_info (tree t) /* We might have set this earlier in cp_finish_decl. */ TYPE_DECL_SUPPRESS_DEBUG (TYPE_MAIN_DECL (t)) = 0; + /* Always emit the information for each class every time. */ + if (flag_emit_class_debug_always) + return; + /* If we already know how we're handling this class, handle debug info the same way. */ if (CLASSTYPE_INTERFACE_KNOWN (t)) diff --git a/gcc/cse.c b/gcc/cse.c index 53b26d039b9..3f8dd10f3d6 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -6696,7 +6696,6 @@ cse_end_of_basic_block (rtx insn, struct cse_basic_block_data *data, { for (q = PREV_INSN (JUMP_LABEL (p)); q; q = PREV_INSN (q)) if ((!NOTE_P (q) - || NOTE_LINE_NUMBER (q) == NOTE_INSN_LOOP_END || (PREV_INSN (q) && CALL_P (PREV_INSN (q)) && find_reg_note (PREV_INSN (q), REG_SETJMP, NULL))) && (!LABEL_P (q) || LABEL_NUSES (q) != 0)) diff --git a/gcc/defaults.h b/gcc/defaults.h index 624f039dfea..3d470e94730 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -631,40 +631,6 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #define TARGET_FLOAT_FORMAT IEEE_FLOAT_FORMAT #endif -/* Some macros can be defined by the backend in either a mode-dependent - or mode-independent form. The compiler proper should only use the - mode-dependent form, providing VOIDmode when the mode is unknown. - We can't poison the macros because the backend may reference them. */ - -#ifndef REGNO_MODE_OK_FOR_BASE_P -#define REGNO_MODE_OK_FOR_BASE_P(REGNO, MODE) REGNO_OK_FOR_BASE_P (REGNO) -#endif - -#ifndef REG_MODE_OK_FOR_BASE_P -#define REG_MODE_OK_FOR_BASE_P(REG, MODE) REG_OK_FOR_BASE_P (REG) -#endif - -/* Determine the register class for registers suitable to be the base - address register in a MEM. Allow the choice to be dependent upon - the mode of the memory access. */ -#ifndef MODE_BASE_REG_CLASS -#define MODE_BASE_REG_CLASS(MODE) BASE_REG_CLASS -#endif - -/* Some machines require a different base register class if the index - is a register. By default, assume that a base register is acceptable. */ -#ifndef MODE_BASE_REG_REG_CLASS -#define MODE_BASE_REG_REG_CLASS(MODE) MODE_BASE_REG_CLASS(MODE) -#endif - -#ifndef REGNO_MODE_OK_FOR_REG_BASE_P -#define REGNO_MODE_OK_FOR_REG_BASE_P(REGNO, MODE) REGNO_MODE_OK_FOR_BASE_P (REGNO, MODE) -#endif - -#ifndef REG_MODE_OK_FOR_REG_BASE_P -#define REG_MODE_OK_FOR_REG_BASE_P(REGNO, MODE) REG_MODE_OK_FOR_BASE_P (REGNO, MODE) -#endif - #ifndef LARGEST_EXPONENT_IS_NORMAL #define LARGEST_EXPONENT_IS_NORMAL(SIZE) 0 #endif diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c index b671b1a38ca..3691477e07b 100644 --- a/gcc/diagnostic.c +++ b/gcc/diagnostic.c @@ -188,7 +188,7 @@ diagnostic_count_diagnostic (diagnostic_context *context, expanded_location s = expand_location (diagnostic->location); fnotice (stderr, "%s:%d: confused by earlier errors, bailing out\n", s.file, s.line); - exit (FATAL_EXIT_CODE); + exit (ICE_EXIT_CODE); } #endif if (context->internal_error) @@ -263,7 +263,7 @@ diagnostic_action_after_output (diagnostic_context *context, fnotice (stderr, "Please submit a full bug report,\n" "with preprocessed source if appropriate.\n" "See %s for instructions.\n", bug_report_url); - exit (FATAL_EXIT_CODE); + exit (ICE_EXIT_CODE); case DK_FATAL: if (context->abort_on_error) diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index cf1545826b9..a72fb7fb8a1 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -2329,8 +2329,9 @@ inline assembly. @item visibility ("@var{visibility_type}") @cindex @code{visibility} attribute -The @code{visibility} attribute on ELF targets causes the declaration -to be emitted with default, hidden, protected or internal visibility. +This attribute affects the linkage of the declaration to which it is attached. +There are four supported @var{visibility_type} values: default, +hidden, protected or internal visibility. @smallexample void __attribute__ ((visibility ("protected"))) @@ -2338,40 +2339,75 @@ f () @{ /* @r{Do something.} */; @} int i __attribute__ ((visibility ("hidden"))); @end smallexample -See the ELF gABI for complete details, but the short story is: +The possible values of @var{visibility_type} correspond to the +visibility settings in the ELF gABI. @table @dfn @c keep this list of visibilities in alphabetical order. @item default -Default visibility is the normal case for ELF@. This value is -available for the visibility attribute to override other options -that may change the assumed visibility of symbols. +Default visibility is the normal case for the object file format. +This value is available for the visibility attribute to override other +options that may change the assumed visibility of entities. + +On ELF, default visibility means that the declaration is visible to other +modules and, in shared libraries, means that the declared entity may be +overridden. + +On Darwin, default visibility means that the declaration is visible to +other modules. + +Default visibility corresponds to ``external linkage'' in the language. @item hidden -Hidden visibility indicates that the symbol will not be placed into -the dynamic symbol table, so no other @dfn{module} (executable or -shared library) can reference it directly. +Hidden visibility indicates that the entity declared will have a new +form of linkage, which we'll call ``hidden linkage''. Two +declarations of an object with hidden linkage refer to the same object +if they are in the same shared object. @item internal Internal visibility is like hidden visibility, but with additional -processor specific semantics. Unless otherwise specified by the psABI, -GCC defines internal visibility to mean that the function is @emph{never} -called from another module. Note that hidden symbols, while they cannot -be referenced directly by other modules, can be referenced indirectly via -function pointers. By indicating that a symbol cannot be called from -outside the module, GCC may for instance omit the load of a PIC register -since it is known that the calling function loaded the correct value. +processor specific semantics. Unless otherwise specified by the +psABI, GCC defines internal visibility to mean that a function is +@emph{never} called from another module. Compare this with hidden +functions which, while they cannot be referenced directly by other +modules, can be referenced indirectly via function pointers. By +indicating that a function cannot be called from outside the module, +GCC may for instance omit the load of a PIC register since it is known +that the calling function loaded the correct value. @item protected -Protected visibility indicates that the symbol will be placed in the -dynamic symbol table, but that references within the defining module -will bind to the local symbol. That is, the symbol cannot be overridden -by another module. +Protected visibility is like default visibility except that it +indicates that references within the defining module will bind to the +definition in that module. That is, the declared entity cannot be +overridden by another module. @end table -Not all ELF targets support this attribute. +All visibilities are supported on many, but not all, ELF targets +(supported when the assembler supports the @samp{.visibility} +pseudo-op). Default visibility is supported everywhere. Hidden +visibility is supported on Darwin targets. + +The visibility attribute should be applied only to declarations which +would otherwise have external linkage. The attribute should be applied +consistently, so that the same entity should not be declared with +different settings of the attribute. + +In C++, the visibility attribute applies to types as well as functions +and objects, because in C++ types have linkage. There are some bugs +in the C++ support for this flag, for example a template which has a +hidden type as a parameter is not properly hidden. +@c bugzilla 26612 + +In C++, you can mark member functions and static member variables of a +class with the visibility attribute. This is useful if if you know a +particular method or static member variable should only be used from +one shared object; then you can mark it hidden while the rest of the +class has default visibility. Care must be taken to avoid breaking +the One Definition Rule; for example, it is not useful to mark a +method which is defined inside a class definition as hidden without +marking the whole class as hidden. @item warn_unused_result @cindex @code{warn_unused_result} attribute @@ -5734,8 +5770,9 @@ is at the least significant bit of the significand. The number is truncated to fit the significand field provided. The significand is forced to be a quiet NaN@. -This function, if given a string literal, is evaluated early enough -that it is considered a compile-time constant. +This function, if given a string literal all of which would have been +consumed by strtol, is evaluated early enough that it is considered a +compile-time constant. @end deftypefn @deftypefn {Built-in Function} _Decimal32 __builtin_nand32 (const char *str) diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 3eb837effdc..ec9f7ad32f1 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -235,10 +235,10 @@ described below. @heading Tools/packages necessary for building GCC @table @asis @item ISO C90 compiler -Necessary to bootstrap the GCC package, although versions of GCC prior +Necessary to bootstrap GCC, although versions of GCC prior to 3.4 also allow bootstrapping with a traditional (K&R) C compiler. -To make all languages in a cross-compiler or other configuration where +To build all languages in a cross-compiler or other configuration where 3-stage bootstrap is not performed, you need to start with an existing GCC binary (version 2.95 or later) because source code for language frontends other than C might use GCC extensions. @@ -254,8 +254,8 @@ specific information. Necessary when running @command{configure} because some @command{/bin/sh} shells have bugs and may crash when configuring the -target libraries. In other cases, @command{/bin/sh} or even some -@command{ksh} have disastrous corner-case performance problems. This +target libraries. In other cases, @command{/bin/sh} or @command{ksh} +have disastrous corner-case performance problems. This can cause target @command{configure} runs to literally take days to complete in some cases. @@ -305,6 +305,10 @@ release (4.1.3) when configured with @option{--enable-mpfr}. The @option{--with-mpfr} or @option{--with-mpfr-dir} configure option should be used if your MPFR Library is not installed in your library search path. +@item jar + +Necessary to build libgcj, the GCJ runtime. + @end table @@ -343,11 +347,11 @@ Necessary when modifying @command{gperf} input files, e.g.@: @file{gcc/cp/cfns.gperf} to regenerate its associated header file, e.g.@: @file{gcc/cp/cfns.h}. -@item expect version ??? -@itemx tcl version ??? -@itemx dejagnu version 1.4.4 (or later) +@item DejaGnu 1.4.4 +@itemx Expect +@itemx Tcl -Necessary to run the GCC testsuite. +Necessary to run the GCC testsuite; see the section on testing for details. @item autogen version 5.5.4 (or later) and @itemx guile version 1.4.1 (or later) @@ -355,19 +359,19 @@ Necessary to run the GCC testsuite. Necessary to regenerate @file{fixinc/fixincl.x} from @file{fixinc/inclhack.def} and @file{fixinc/*.tpl}. -Necessary to run the @file{fixinc} @command{make check}. +Necessary to run @samp{make check} for @file{fixinc}. Necessary to regenerate the top level @file{Makefile.in} file from @file{Makefile.tpl} and @file{Makefile.def}. @item GNU Bison version 1.28 (or later) Berkeley @command{yacc} (@command{byacc}) is also reported to work other -than for java. +than for GCJ. Necessary when modifying @file{*.y} files. Necessary to build GCC during development because the generated output -files are not included in the CVS repository. They are included in +files are not included in the SVN repository. They are included in releases. @item Flex version 2.5.4 (or later) @@ -375,7 +379,7 @@ releases. Necessary when modifying @file{*.l} files. Necessary to build GCC during development because the generated output -files are not included in the CVS repository. They are included in +files are not included in the SVN repository. They are included in releases. @item Texinfo version 4.4 (or later) @@ -384,7 +388,7 @@ Necessary for running @command{makeinfo} when modifying @file{*.texi} files to test your changes. Necessary to build GCC documentation during development because the -generated output files are not included in the CVS repository. They are +generated output files are not included in the SVN repository. They are included in releases. @item @TeX{} (any working version) @@ -392,25 +396,25 @@ included in releases. Necessary for running @command{texi2dvi}, used when running @command{make dvi} to create DVI files. -@item cvs version 1.10 (or later) -@itemx ssh (any version) +@item SVN (any version) +@itemx SSH (any version) -Necessary to access the CVS repository. Public releases and weekly +Necessary to access the SVN repository. Public releases and weekly snapshots of the development sources are also available via FTP@. -@item perl version 5.6.1 (or later) +@item Perl version 5.6.1 (or later) Necessary when regenerating @file{Makefile} dependencies in libiberty. Necessary when regenerating @file{libiberty/functions.texi}. Necessary when generating manpages from Texinfo manuals. Necessary when targetting Darwin, building libstdc++, and not using @option{--disable-symvers}. -Used by various scripts to generate some files included in CVS (mainly +Used by various scripts to generate some files included in SVN (mainly Unicode-related and rarely changing) from source tables. @item GNU diffutils version 2.7 (or later) -Necessary when creating changes to GCC source code to submit for review. +Useful when submitting patches for the GCC source code. @item patch version 2.5.4 (or later) @@ -440,7 +444,7 @@ own sources. @cindex Downloading GCC @cindex Downloading the Source -GCC is distributed via @uref{http://gcc.gnu.org/cvs.html,,CVS} and FTP +GCC is distributed via @uref{http://gcc.gnu.org/svn.html,,SVN} and FTP tarballs compressed with @command{gzip} or @command{bzip2}. It is possible to download a full distribution or specific components. @@ -499,7 +503,7 @@ for both native and cross targets. We use @var{srcdir} to refer to the toplevel source directory for GCC; we use @var{objdir} to refer to the toplevel build/object directory. -If you obtained the sources via CVS, @var{srcdir} must refer to the top +If you obtained the sources via SVN, @var{srcdir} must refer to the top @file{gcc} directory, the one where the @file{MAINTAINERS} can be found, and not its @file{gcc} subdirectory, otherwise the build will fail. @@ -995,6 +999,10 @@ options and for @option{-mhard-float} or @option{-msoft-float}. As with @option{--with-cpu}, which switches will be accepted and acceptable values of the arguments depend on the target. +@item --with-mode=@var{mode} +Specify if the compiler should default to @option{-marm} or @option{-mthumb}. +This option is only supported on ARM targets. + @item --with-divide=@var{type} Specify how the compiler should generate code for checking for division by zero. This option is only supported on the MIPS target. @@ -1045,18 +1053,18 @@ this. Note that you need a recent version of the @code{gettext} tools to do so. @item --enable-generated-files-in-srcdir -Neither the .c and .h files that are generated from bison and flex nor the +Neither the .c and .h files that are generated from Bison and flex nor the info manuals and man pages that are built from the .texi files are present -in the CVS development tree. When building GCC from that development tree, -or from a snapshot which are created from CVS, then those generated files -are placed in your build directory, which allows for the source to be in a -readonly directory. +in the SVN development tree. When building GCC from that development tree, +or from one of our snapshots, those generated files are placed in your +build directory, which allows for the source to be in a readonly +directory. If you configure with @option{--enable-generated-files-in-srcdir} then those generated files will go into the source directory. This is mainly intended for generating release or prerelease tarballs of the GCC sources, since it -is not a requirement that the users of source releases to have flex, bison, or -makeinfo. +is not a requirement that the users of source releases to have flex, Bison, +or makeinfo. @item --enable-version-specific-runtime-libs Specify @@ -1179,7 +1187,7 @@ consistency checks of the requested complexity. This does not change the generated code, but adds error checking within the compiler. This will slow down the compiler and may only work properly if you are building the compiler with GCC@. This is @samp{yes} by default when building -from CVS or snapshots, but @samp{release} for releases. More control +from SVN or snapshots, but @samp{release} for releases. More control over the checks may be had by specifying @var{list}. The categories of checks available are @samp{yes} (most common checks @samp{assert,misc,tree,gc,rtlflag,runtime}), @samp{no} (no checks at @@ -1557,13 +1565,12 @@ that type mismatches occur, this could be the cause. The solution is not to use such a directory for building GCC@. -When building from CVS or snapshots, or if you modify parser sources, -you need the Bison parser generator installed. Any version 1.25 or -later should work; older versions may also work. If you do not modify +When building from SVN or snapshots, or if you modify parser sources, +you need the Bison parser generator installed. If you do not modify parser sources, releases contain the Bison-generated files and you do not need Bison installed to build them. -When building from CVS or snapshots, or if you modify Texinfo +When building from SVN or snapshots, or if you modify Texinfo documentation, you need version 4.4 or later of Texinfo installed if you want Info documentation to be regenerated. Releases contain Info documentation pre-built for the unmodified documentation in the release. @@ -1577,8 +1584,7 @@ following steps: @itemize @bullet @item -Build tools necessary to build the compiler such as texinfo, bison, -gperf. +Build tools necessary to build the compiler. @item Perform a 3-stage bootstrap of the compiler. This includes building @@ -1673,8 +1679,7 @@ following steps: @itemize @bullet @item -Build host tools necessary to build the compiler such as texinfo, bison, -gperf. +Build host tools necessary to build the compiler. @item Build target tools for use by the compiler such as binutils (bfd, @@ -1818,8 +1823,8 @@ These are part of the full distribution, but if you downloaded the separately. Second, you must have the testing tools installed. This includes -@uref{http://www.gnu.org/software/dejagnu/,,DejaGnu} 1.4.4 and later, -Tcl, and Expect; the DejaGnu site has links to these. +@uref{http://www.gnu.org/software/dejagnu/,,DejaGnu}, Tcl, and Expect; +the DejaGnu site has links to these. If the directories where @command{runtest} and @command{expect} were installed are not in the @env{PATH}, you may need to set the following @@ -4073,7 +4078,7 @@ operating system may still cause problems. Support for older systems as targets for cross-compilation is less problematic than support for them as hosts for GCC; if an enthusiast wishes to make such a target work again (including resurrecting any of -the targets that never worked with GCC 2, starting from the last CVS +the targets that never worked with GCC 2, starting from the last version before they were removed), patches @uref{../contribute.html,,following the usual requirements} would be likely to be accepted, since they should not affect the support for more diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 533841931b7..ede037bd1b4 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -287,7 +287,8 @@ Objective-C and Objective-C++ Dialects}. -ftree-vectorizer-verbose=@var{n} @gol -fdump-tree-storeccp@r{[}-@var{n}@r{]} @gol -feliminate-dwarf2-dups -feliminate-unused-debug-types @gol --feliminate-unused-debug-symbols -fmem-report -fprofile-arcs @gol +-feliminate-unused-debug-symbols -femit-class-debug-always @gol +-fmem-report -fprofile-arcs @gol -frandom-seed=@var{string} -fsched-verbose=@var{n} @gol -ftest-coverage -ftime-report -fvar-tracking @gol -g -g@var{level} -gcoff -gdwarf-2 @gol @@ -596,9 +597,9 @@ Objective-C and Objective-C++ Dialects}. @gccoptlist{-EL -EB -march=@var{arch} -mtune=@var{arch} @gol -mips1 -mips2 -mips3 -mips4 -mips32 -mips32r2 -mips64 @gol -mips16 -mno-mips16 -mabi=@var{abi} -mabicalls -mno-abicalls @gol --mxgot -mno-xgot -mgp32 -mgp64 -mfp32 -mfp64 @gol --mhard-float -msoft-float -msingle-float -mdouble-float @gol --mdsp -mpaired-single -mips3d @gol +-mshared -mno-shared -mxgot -mno-xgot -mgp32 -mgp64 @gol +-mfp32 -mfp64 -mhard-float -msoft-float @gol +-msingle-float -mdouble-float -mdsp -mpaired-single -mips3d @gol -mlong64 -mlong32 -msym32 -mno-sym32 @gol -G@var{num} -membedded-data -mno-embedded-data @gol -muninit-const-in-rodata -mno-uninit-const-in-rodata @gol @@ -773,8 +774,8 @@ See S/390 and zSeries Options. -fverbose-asm -fpack-struct[=@var{n}] -fstack-check @gol -fstack-limit-register=@var{reg} -fstack-limit-symbol=@var{sym} @gol -fargument-alias -fargument-noalias @gol --fargument-noalias-global -fleading-underscore @gol --ftls-model=@var{model} @gol +-fargument-noalias-global -fargument-noalias-anything +-fleading-underscore -ftls-model=@var{model} @gol -ftrapv -fwrapv -fbounds-check @gol -fvisibility -fopenmp} @end table @@ -957,7 +958,8 @@ Normally the @command{gcc} program will exit with the code of 1 if any phase of the compiler returns a non-success return code. If you specify @option{-pass-exit-codes}, the @command{gcc} program will instead return with numerically highest error produced by any phase that returned an error -indication. +indication. The C, C++, and Fortran frontends return 4, if an internal +compiler error is encountered. @end table If you only want some of the stages of compilation, you can use @@ -1596,17 +1598,27 @@ if the runtime routine is not available. @item -fvisibility-inlines-hidden @opindex fvisibility-inlines-hidden -Causes all inlined methods to be marked with +This switch declares that the user does not attempt to compare +pointers to inline methods where the addresses of the two functions +were taken in different shared objects. + +The effect of this is that GCC may, effectively, mark inline methods with @code{__attribute__ ((visibility ("hidden")))} so that they do not appear in the export table of a DSO and do not require a PLT indirection when used within the DSO@. Enabling this option can have a dramatic effect on load and link times of a DSO as it massively reduces the size of the -dynamic export table when the library makes heavy use of templates. While -it can cause bloating through duplication of code within each DSO where -it is used, often the wastage is less than the considerable space occupied -by a long symbol name in the export table which is typical when using -templates and namespaces. For even more savings, combine with the -@option{-fvisibility=hidden} switch. +dynamic export table when the library makes heavy use of templates. + +The behaviour of this switch is not quite the same as marking the +methods as hidden directly. Normally if there is a class with default +visibility which has a hidden method, the effect of this is that the +method must be defined in only one shared object. This switch does +not have this restriction. + +You may mark a method as having a visibility explicitly to negate the +effect of the switch for that method. For example, if you do want to +compare pointers to a particular inline method, you might mark it as +having default visibility. @item -fno-weak @opindex fno-weak @@ -3521,6 +3533,14 @@ On System V Release 4 systems this option requires the GNU assembler. Produce debugging information in stabs format (if that is supported), for only symbols that are actually used. +@item -femit-class-debug-always +Instead of emitting debugging information for a C++ class in only one +object file, emit it in all object files using the class. This option +should be used only with debuggers that are unable to handle the way GCC +normally emits debugging information for classes because using this +option will increase the size of debugging information by as much as a +factor of two. + @item -gstabs+ @opindex gstabs+ Produce debugging information in stabs format (if that is supported), @@ -10464,8 +10484,30 @@ For information about the O64 ABI, see @itemx -mno-abicalls @opindex mabicalls @opindex mno-abicalls -Generate (do not generate) SVR4-style position-independent code. -@option{-mabicalls} is the default for SVR4-based systems. +Generate (do not generate) code that is suitable for SVR4-style +dynamic objects. @option{-mabicalls} is the default for SVR4-based +systems. + +@item -mshared +@itemx -mno-shared +Generate (do not generate) code that is fully position-independent, +and that can therefore be linked into shared libraries. This option +only affects @option{-mabicalls}. + +All @option{-mabicalls} code has traditionally been position-independent, +regardless of options like @option{-fPIC} and @option{-fpic}. However, +as an extension, the GNU toolchain allows executables to use absolute +accesses for locally-binding symbols. It can also use shorter GP +initialization sequences and generate direct calls to locally-defined +functions. This mode is selected by @option{-mno-shared}. + +@option{-mno-shared} depends on binutils 2.16 or higher and generates +objects that can only be linked by the GNU linker. However, the option +does not affect the ABI of the final executable; it only affects the ABI +of relocatable objects. Using @option{-mno-shared} will generally make +executables both smaller and quicker. + +@option{-mshared} is the default. @item -mxgot @itemx -mno-xgot @@ -13332,9 +13374,11 @@ of 128KB@. Note that this may only work with the GNU linker. @item -fargument-alias @itemx -fargument-noalias @itemx -fargument-noalias-global +@itemx -fargument-noalias-anything @opindex fargument-alias @opindex fargument-noalias @opindex fargument-noalias-global +@opindex fargument-noalias-anything Specify the possible relationships among parameters and between parameters and global data. @@ -13344,6 +13388,8 @@ alias each other and may alias global storage.@* each other, but may alias global storage.@* @option{-fargument-noalias-global} specifies that arguments do not alias each other and do not alias global storage. +@option{-fargument-noalias-anything} specifies that arguments do not +alias any other storage. Each language will automatically use whatever option is required by the language standard. You should not need to use these options yourself. @@ -13412,6 +13458,12 @@ abundantly clear also aids readability and self-documentation of the code. Note that due to ISO C++ specification requirements, operator new and operator delete must always be of default visibility. +Be aware that headers from outside your project, in particular system +headers and headers from any other library you use, may not be +expecting to be compiled with visibility other than the default. You +may need to explicitly say @samp{#pragma GCC visibility push(default)} +before including any such headers. + An overview of these techniques, their benefits and how to use them is at @w{@uref{http://gcc.gnu.org/wiki/Visibility}}. diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi index 0fc22653ea6..a6c4c2e7903 100644 --- a/gcc/doc/md.texi +++ b/gcc/doc/md.texi @@ -1681,7 +1681,7 @@ A memory reference suitable for iWMMXt load/store instructions. A memory reference suitable for the ARMv4 ldrsb instruction. @end table -@item AVR family---@file{config/avr/avr.h} +@item AVR family---@file{config/avr/constraints.md} @table @code @item l Registers from r0 to r15 @@ -1882,7 +1882,7 @@ A 15-bit signed integer constant. A positive 16-bit constant. @end table -@item Intel 386---@file{config/i386/predicates.md} +@item Intel 386---@file{config/i386/constraints.md} @table @code @item R Legacy register---the eight integer registers available on all diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index e36bf1b048d..8521939a5dd 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -1233,6 +1233,14 @@ structure. The hook should return true if the structure should inherit the alignment requirements of an unnamed bitfield's type. @end deftypefn +@deftypefn {Target Hook} bool TARGET_NARROW_VOLATILE_BITFIELDS (void) +This target hook should return @code{true} if accesses to volatile bitfields +should use the narrowest mode possible. It should return @code{false} if +these accesses should use the bitfield container type. + +The default is @code{!TARGET_STRICT_ALIGN}. +@end deftypefn + @defmac MEMBER_TYPE_FORCES_BLK (@var{field}, @var{mode}) Return 1 if a structure or array containing @var{field} should be accessed using @code{BLKMODE}. @@ -2306,6 +2314,16 @@ register address. You should define this macro if base plus index addresses have different requirements than other base register uses. @end defmac +@defmac MODE_CODE_BASE_REG_CLASS (@var{mode}, @var{outer_code}, @var{index_code}) +A C expression whose value is the register class to which a valid +base register must belong. @var{outer_code} and @var{index_code} define the +context in which the base register occurs. @var{outer_code} is the code of +the immediately enclosing expression (@code{MEM} for the top level of an +address, @code{ADDRESS} for something that occurs in an +@code{address_operand}). @var{index_code} is the code of the corresponding +index expression if @var{outer_code} is @code{PLUS}; @code{SCRATCH} otherwise. +@end defmac + @defmac INDEX_REG_CLASS A macro whose definition is the name of the class to which a valid index register must belong. An index register is one used in an @@ -2326,7 +2344,9 @@ that expression may examine the mode of the memory reference in @var{mode}. You should define this macro if the mode of the memory reference affects whether a register may be used as a base register. If you define this macro, the compiler will use it instead of -@code{REGNO_OK_FOR_BASE_P}. +@code{REGNO_OK_FOR_BASE_P}. The mode may be @code{VOIDmode} for addresses +that appear outside a @code{MEM}, i.e. as an @code{address_operand}. + @end defmac @defmac REGNO_MODE_OK_FOR_REG_BASE_P (@var{num}, @var{mode}) @@ -2336,6 +2356,20 @@ memory in mode @var{mode}. It may be either a suitable hard register or a pseudo register that has been allocated such a hard register. You should define this macro if base plus index addresses have different requirements than other base register uses. + +Use of this macro is deprecated; please use the more general +@code{REGNO_MODE_CODE_OK_FOR_BASE_P}. +@end defmac + +@defmac REGNO_MODE_CODE_OK_FOR_BASE_P (@var{num}, @var{mode}, @var{outer_code}, @var{index_code}) +A C expression that is just like @code{REGNO_MODE_OK_FOR_BASE_P}, except that +that expression may examine the context in which the register appears in the +memory reference. @var{outer_code} is the code of the immediately enclosing +expression (@code{MEM} if at the top level of the address, @code{ADDRESS} for +something that occurs in an @code{address_operand}). @var{index_code} is the +code of the corresponding index expression if @var{outer_code} is @code{PLUS}; +@code{SCRATCH} otherwise. The mode may be @code{VOIDmode} for addresses +that appear outside a @code{MEM}, i.e. as an @code{address_operand}. @end defmac @defmac REGNO_OK_FOR_INDEX_P (@var{num}) @@ -2382,12 +2416,22 @@ register, so @code{PREFERRED_RELOAD_CLASS} returns @code{NO_REGS} when into any kind of register, code generation will be better if @code{LEGITIMATE_CONSTANT_P} makes the constant illegitimate instead of using @code{PREFERRED_RELOAD_CLASS}. + +If an insn has pseudos in it after register allocation, reload will go +through the alternatives and call repeatedly @code{PREFERRED_RELOAD_CLASS} +to find the best one. Returning @code{NO_REGS}, in this case, makes +reload add a @code{!} in front of the constraint: the x86 back-end uses +this feature to discourage usage of 387 registers when math is done in +the SSE registers (and vice versa). @end defmac @defmac PREFERRED_OUTPUT_RELOAD_CLASS (@var{x}, @var{class}) Like @code{PREFERRED_RELOAD_CLASS}, but for output reloads instead of input reloads. If you don't define this macro, the default is to use @var{class}, unchanged. + +You can also use @code{PREFERRED_OUTPUT_RELOAD_CLASS} to discourage +reload from using some alternatives, like @code{PREFERRED_RELOAD_CLASS}. @end defmac @defmac LIMIT_RELOAD_CLASS (@var{mode}, @var{class}) @@ -4155,12 +4199,15 @@ On some architectures the place where the structure value address is found by the called function is not the same place that the caller put it. This can be due to register windows, or it could be because the function prologue moves it to a different place. -@var{incoming} is @code{true} when the location is needed in -the context of the called function, and @code{false} in the context of +@var{incoming} is @code{1} or @code{2} when the location is needed in +the context of the called function, and @code{0} in the context of the caller. -If @var{incoming} is @code{true} and the address is to be found on the -stack, return a @code{mem} which refers to the frame pointer. +If @var{incoming} is non-zero and the address is to be found on the +stack, return a @code{mem} which refers to the frame pointer. If +@var{incoming} is @code{2}, the result is being used to fetch the +structure value address at the beginning of a function. If you need +to emit adjusting code, you should do it at this point. @end deftypefn @defmac PCC_STATIC_STRUCT_RETURN @@ -5068,48 +5115,6 @@ into the @code{symbol_ref}, and then check for it here. When you see a Format}. @end defmac -@defmac REG_OK_FOR_BASE_P (@var{x}) -A C expression that is nonzero if @var{x} (assumed to be a @code{reg} -RTX) is valid for use as a base register. For hard registers, it -should always accept those which the hardware permits and reject the -others. Whether the macro accepts or rejects pseudo registers must be -controlled by @code{REG_OK_STRICT} as described above. This usually -requires two variant definitions, of which @code{REG_OK_STRICT} -controls the one actually used. -@end defmac - -@defmac REG_MODE_OK_FOR_BASE_P (@var{x}, @var{mode}) -A C expression that is just like @code{REG_OK_FOR_BASE_P}, except that -that expression may examine the mode of the memory reference in -@var{mode}. You should define this macro if the mode of the memory -reference affects whether a register may be used as a base register. If -you define this macro, the compiler will use it instead of -@code{REG_OK_FOR_BASE_P}. -@end defmac - -@defmac REG_MODE_OK_FOR_REG_BASE_P (@var{x}, @var{mode}) -A C expression which is nonzero if @var{x} (assumed to be a @code{reg} RTX) -is suitable for use as a base register in base plus index operand addresses, -accessing memory in mode @var{mode}. It may be either a suitable hard -register or a pseudo register that has been allocated such a hard register. -You should define this macro if base plus index addresses have different -requirements than other base register uses. -@end defmac - -@defmac REG_OK_FOR_INDEX_P (@var{x}) -A C expression that is nonzero if @var{x} (assumed to be a @code{reg} -RTX) is valid for use as an index register. - -The difference between an index register and a base register is that -the index register may be scaled. If an address involves the sum of -two registers, neither one of them scaled, then either one may be -labeled the ``base'' and the other the ``index''; but whichever -labeling is used must fit the machine's constraints of which registers -may serve in each capacity. The compiler will try both labelings, -looking for one that is valid, and will reload one or both registers -only if neither labeling works. -@end defmac - @defmac FIND_BASE_TERM (@var{x}) A C expression to determine the base term of address @var{x}. This macro is used in only one place: `find_base_term' in alias.c. @@ -8436,18 +8441,18 @@ tables, and hence is desirable if it works. @defmac ASM_OUTPUT_DWARF_DELTA (@var{stream}, @var{size}, @var{label1}, @var{label2}) A C statement to issue assembly directives that create a difference -between the two given labels, using an integer of the given size. +@var{lab1} minus @var{lab2}, using an integer of the given @var{size}. @end defmac -@defmac ASM_OUTPUT_DWARF_OFFSET (@var{stream}, @var{size}, @var{label}) +@defmac ASM_OUTPUT_DWARF_OFFSET (@var{stream}, @var{size}, @var{label}, @var{section}) A C statement to issue assembly directives that create a -section-relative reference to the given label, using an integer of the -given size. +section-relative reference to the given @var{label}, using an integer of the +given @var{size}. The label is known to be defined in the given @var{section}. @end defmac @defmac ASM_OUTPUT_DWARF_PCREL (@var{stream}, @var{size}, @var{label}) A C statement to issue assembly directives that create a self-relative -reference to the given label, using an integer of the given size. +reference to the given @var{label}, using an integer of the given @var{size}. @end defmac @deftypefn {Target Hook} void TARGET_ASM_OUTPUT_DWARF_DTPREL (FILE *@var{FILE}, int @var{size}, rtx @var{x}) diff --git a/gcc/doc/tree-ssa.texi b/gcc/doc/tree-ssa.texi index e2a657a3a13..359f07864f8 100644 --- a/gcc/doc/tree-ssa.texi +++ b/gcc/doc/tree-ssa.texi @@ -1384,6 +1384,26 @@ There are several @code{TODO} flags that control the behavior of renaming are processed@. @end itemize +@subsection Preserving the virtual SSA form +@cindex preserving virtual SSA form + +The virtual SSA form is harder to preserve than the non-virtual SSA form +mainly because the set of virtual operands for a statement may change at +what some would consider unexpected times. In general, any time you +have modified a statement that has virtual operands, you should verify +whether the list of virtual operands has changed, and if so, mark the +newly exposed symbols by callnig @code{mark_new_vars_to_rename}. + +There is one additional caveat to preserving virtual SSA form. When the +entire set of virtual operands may be eliminated due to better +disambiguation, a bare SMT will be added to the list of virtual +operands, to signify the non-visible aliases that the are still being +referenced. If the set of bare SMT's may change, +@code{TODO_update_smt_usage} should be added to the todo flags. + +With the current pruning code, this can only occur when constants are +propagated into array references that were previously non-constant, or +address expressions are propagated into their uses. @subsection Examining @code{SSA_NAME} nodes @cindex examining SSA_NAMEs diff --git a/gcc/dojump.c b/gcc/dojump.c index aa9c710f4b6..3be77a7dbe6 100644 --- a/gcc/dojump.c +++ b/gcc/dojump.c @@ -277,7 +277,7 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label) && (cmp_optab->handlers[(int) TYPE_MODE (type)].insn_code != CODE_FOR_nothing)) { - do_jump (convert (type, exp), if_false_label, if_true_label); + do_jump (fold_convert (type, exp), if_false_label, if_true_label); break; } goto normal; @@ -336,7 +336,7 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label) && (cmp_optab->handlers[(int) TYPE_MODE (type)].insn_code != CODE_FOR_nothing)) { - do_jump (convert (type, exp), if_false_label, if_true_label); + do_jump (fold_convert (type, exp), if_false_label, if_true_label); break; } goto normal; diff --git a/gcc/dwarf2.h b/gcc/dwarf2.h index b5c342ebc7f..31188372787 100644 --- a/gcc/dwarf2.h +++ b/gcc/dwarf2.h @@ -757,6 +757,7 @@ enum dwarf_call_frame_info }; #define DW_CIE_ID 0xffffffff +#define DW64_CIE_ID 0xffffffffffffffffULL #define DW_CIE_VERSION 1 #define DW_CFA_extended 0 diff --git a/gcc/dwarf2asm.c b/gcc/dwarf2asm.c index f4cd52be2d9..255daf02e21 100644 --- a/gcc/dwarf2asm.c +++ b/gcc/dwarf2asm.c @@ -119,14 +119,16 @@ dw2_asm_output_delta (int size, const char *lab1, const char *lab2, va_end (ap); } -/* Output a section-relative reference to a label. In general this - can only be done for debugging symbols. E.g. on most targets with - the GNU linker, this is accomplished with a direct reference and - the knowledge that the debugging section will be placed at VMA 0. - Some targets have special relocations for this that we must use. */ +/* Output a section-relative reference to a LABEL, which was placed in + BASE. In general this can only be done for debugging symbols. + E.g. on most targets with the GNU linker, this is accomplished with + a direct reference and the knowledge that the debugging section + will be placed at VMA 0. Some targets have special relocations for + this that we must use. */ void dw2_asm_output_offset (int size, const char *label, + section *base ATTRIBUTE_UNUSED, const char *comment, ...) { va_list ap; @@ -134,7 +136,7 @@ dw2_asm_output_offset (int size, const char *label, va_start (ap, comment); #ifdef ASM_OUTPUT_DWARF_OFFSET - ASM_OUTPUT_DWARF_OFFSET (asm_out_file, size, label); + ASM_OUTPUT_DWARF_OFFSET (asm_out_file, size, label, base); #else dw2_assemble_integer (size, gen_rtx_SYMBOL_REF (Pmode, label)); #endif diff --git a/gcc/dwarf2asm.h b/gcc/dwarf2asm.h index c57e3e94b6c..cd8293f736f 100644 --- a/gcc/dwarf2asm.h +++ b/gcc/dwarf2asm.h @@ -1,5 +1,5 @@ /* Dwarf2 assembler output helper routines. - Copyright (C) 2001, 2003 Free Software Foundation, Inc. + Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. This file is part of GCC. @@ -29,8 +29,9 @@ extern void dw2_asm_output_delta (int, const char *, const char *, const char *, ...) ATTRIBUTE_NULL_PRINTF_4; -extern void dw2_asm_output_offset (int, const char *, const char *, ...) - ATTRIBUTE_NULL_PRINTF_3; +extern void dw2_asm_output_offset (int, const char *, section *, + const char *, ...) + ATTRIBUTE_NULL_PRINTF_4; extern void dw2_asm_output_addr (int, const char *, const char *, ...) ATTRIBUTE_NULL_PRINTF_3; diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index b10d24d104c..3d5688cd7cf 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -158,6 +158,7 @@ static GTY(()) section *debug_loc_section; static GTY(()) section *debug_pubnames_section; static GTY(()) section *debug_str_section; static GTY(()) section *debug_ranges_section; +static GTY(()) section *debug_frame_section; /* How to start an assembler comment. */ #ifndef ASM_COMMENT_START @@ -287,6 +288,14 @@ dw_fde_node; #endif #endif +/* CIE identifier. */ +#if HOST_BITS_PER_WIDE_INT >= 64 +#define DWARF_CIE_ID \ + (unsigned HOST_WIDE_INT) (DWARF_OFFSET_SIZE == 4 ? DW_CIE_ID : DW64_CIE_ID) +#else +#define DWARF_CIE_ID DW_CIE_ID +#endif + /* A pointer to the base of a table that contains frame description information for each routine. */ static GTY((length ("fde_table_allocated"))) dw_fde_ref fde_table; @@ -1071,7 +1080,7 @@ stack_adjust_offset (rtx pattern) much extra space it needs to pop off the stack. */ static void -dwarf2out_stack_adjust (rtx insn, bool after_p) +dwarf2out_stack_adjust (rtx insn, bool after_p ATTRIBUTE_UNUSED) { HOST_WIDE_INT offset; const char *label; @@ -1084,31 +1093,7 @@ dwarf2out_stack_adjust (rtx insn, bool after_p) if (prologue_epilogue_contains (insn) || sibcall_epilogue_contains (insn)) return; - /* If only calls can throw, and we have a frame pointer, - save up adjustments until we see the CALL_INSN. */ - if (!flag_asynchronous_unwind_tables && cfa.reg != STACK_POINTER_REGNUM) - { - if (CALL_P (insn) && !after_p) - { - /* Extract the size of the args from the CALL rtx itself. */ - insn = PATTERN (insn); - if (GET_CODE (insn) == PARALLEL) - insn = XVECEXP (insn, 0, 0); - if (GET_CODE (insn) == SET) - insn = SET_SRC (insn); - gcc_assert (GET_CODE (insn) == CALL); - dwarf2out_args_size ("", INTVAL (XEXP (insn, 1))); - } - return; - } - - if (CALL_P (insn) && !after_p) - { - if (!flag_asynchronous_unwind_tables) - dwarf2out_args_size ("", args_size); - return; - } - else if (BARRIER_P (insn)) + if (BARRIER_P (insn)) { /* When we see a BARRIER, we know to reset args_size to 0. Usually the compiler will have already emitted a stack adjustment, but @@ -1130,9 +1115,20 @@ dwarf2out_stack_adjust (rtx insn, bool after_p) if (GET_CODE (XVECEXP (PATTERN (insn), 0, i)) == SET) offset += stack_adjust_offset (XVECEXP (PATTERN (insn), 0, i)); } + else if (GET_CODE (insn) == CALL_INSN) + offset = 0; else return; + /* We handle this separately because we want stack adjustments in a + CALL_INSN to be handled. */; + if (GET_CODE (insn) == CALL_INSN) + { + /* If only calls can throw, adjust args_size only at call sites. */ + if (!flag_asynchronous_unwind_tables) + dwarf2out_args_size ("", args_size); + } + if (offset == 0) return; @@ -1147,6 +1143,16 @@ dwarf2out_stack_adjust (rtx insn, bool after_p) if (args_size < 0) args_size = 0; + /* If only calls can throw and we have a frame pointer, we'll save + up adjustments until we see the CALL_INSN. We used to return + early and derive args_size from NARGS in the CALL_INSN itself, + but that doesn't compute the right value if we have nested call + expansions, e.g., stack adjustments for a call have already been + emitted, and then we issue another call to compute an argument + for the enclosing call (i.e., bar (foo ())). */ + if (!flag_asynchronous_unwind_tables && cfa.reg != STACK_POINTER_REGNUM) + return; + label = dwarf2out_cfi_label (); def_cfa_1 (label, &cfa); if (flag_asynchronous_unwind_tables) @@ -2188,7 +2194,7 @@ output_call_frame_info (int for_eh) if (for_eh) switch_to_eh_frame_section (); else - switch_to_section (get_section (DEBUG_FRAME_SECTION, SECTION_DEBUG, NULL)); + switch_to_section (debug_frame_section); ASM_GENERATE_INTERNAL_LABEL (section_start_label, FRAME_BEGIN_LABEL, for_eh); ASM_OUTPUT_LABEL (asm_out_file, section_start_label); @@ -2196,6 +2202,9 @@ output_call_frame_info (int for_eh) /* Output the CIE. */ ASM_GENERATE_INTERNAL_LABEL (l1, CIE_AFTER_SIZE_LABEL, for_eh); ASM_GENERATE_INTERNAL_LABEL (l2, CIE_END_LABEL, for_eh); + if (DWARF_INITIAL_LENGTH_SIZE - DWARF_OFFSET_SIZE == 4 && !for_eh) + dw2_asm_output_data (4, 0xffffffff, + "Initial length escape value indicating 64-bit DWARF extension"); dw2_asm_output_delta (for_eh ? 4 : DWARF_OFFSET_SIZE, l2, l1, "Length of Common Information Entry"); ASM_OUTPUT_LABEL (asm_out_file, l1); @@ -2203,7 +2212,7 @@ output_call_frame_info (int for_eh) /* Now that the CIE pointer is PC-relative for EH, use 0 to identify the CIE. */ dw2_asm_output_data ((for_eh ? 4 : DWARF_OFFSET_SIZE), - (for_eh ? 0 : DW_CIE_ID), + (for_eh ? 0 : DWARF_CIE_ID), "CIE Identifier Tag"); dw2_asm_output_data (1, DW_CIE_VERSION, "CIE Version"); @@ -2328,6 +2337,9 @@ output_call_frame_info (int for_eh) targetm.asm_out.internal_label (asm_out_file, FDE_LABEL, for_eh + i * 2); ASM_GENERATE_INTERNAL_LABEL (l1, FDE_AFTER_SIZE_LABEL, for_eh + i * 2); ASM_GENERATE_INTERNAL_LABEL (l2, FDE_END_LABEL, for_eh + i * 2); + if (DWARF_INITIAL_LENGTH_SIZE - DWARF_OFFSET_SIZE == 4 && !for_eh) + dw2_asm_output_data (4, 0xffffffff, + "Initial length escape value indicating 64-bit DWARF extension"); dw2_asm_output_delta (for_eh ? 4 : DWARF_OFFSET_SIZE, l2, l1, "FDE Length"); ASM_OUTPUT_LABEL (asm_out_file, l1); @@ -2336,7 +2348,7 @@ output_call_frame_info (int for_eh) dw2_asm_output_delta (4, l1, section_start_label, "FDE CIE offset"); else dw2_asm_output_offset (DWARF_OFFSET_SIZE, section_start_label, - "FDE CIE offset"); + debug_frame_section, "FDE CIE offset"); if (for_eh) { @@ -2631,8 +2643,9 @@ enum dw_val_class dw_val_class_die_ref, dw_val_class_fde_ref, dw_val_class_lbl_id, - dw_val_class_lbl_offset, - dw_val_class_str + dw_val_class_lineptr, + dw_val_class_str, + dw_val_class_macptr }; /* Describe a double word constant value. */ @@ -3960,7 +3973,8 @@ static inline dw_loc_list_ref AT_loc_list (dw_attr_ref); static void add_AT_addr (dw_die_ref, enum dwarf_attribute, rtx); static inline rtx AT_addr (dw_attr_ref); static void add_AT_lbl_id (dw_die_ref, enum dwarf_attribute, const char *); -static void add_AT_lbl_offset (dw_die_ref, enum dwarf_attribute, const char *); +static void add_AT_lineptr (dw_die_ref, enum dwarf_attribute, const char *); +static void add_AT_macptr (dw_die_ref, enum dwarf_attribute, const char *); static void add_AT_offset (dw_die_ref, enum dwarf_attribute, unsigned HOST_WIDE_INT); static void add_AT_range_list (dw_die_ref, enum dwarf_attribute, @@ -5135,16 +5149,34 @@ add_AT_lbl_id (dw_die_ref die, enum dwarf_attribute attr_kind, const char *lbl_i add_dwarf_attr (die, attr); } -/* Add a section offset attribute value to a DIE. */ +/* Add a section offset attribute value to a DIE, an offset into the + debug_line section. */ + +static inline void +add_AT_lineptr (dw_die_ref die, enum dwarf_attribute attr_kind, + const char *label) +{ + dw_attr_ref attr = ggc_alloc (sizeof (dw_attr_node)); + + attr->dw_attr_next = NULL; + attr->dw_attr = attr_kind; + attr->dw_attr_val.val_class = dw_val_class_lineptr; + attr->dw_attr_val.v.val_lbl_id = xstrdup (label); + add_dwarf_attr (die, attr); +} + +/* Add a section offset attribute value to a DIE, an offset into the + debug_macinfo section. */ static inline void -add_AT_lbl_offset (dw_die_ref die, enum dwarf_attribute attr_kind, const char *label) +add_AT_macptr (dw_die_ref die, enum dwarf_attribute attr_kind, + const char *label) { dw_attr_ref attr = ggc_alloc (sizeof (dw_attr_node)); attr->dw_attr_next = NULL; attr->dw_attr = attr_kind; - attr->dw_attr_val.val_class = dw_val_class_lbl_offset; + attr->dw_attr_val.val_class = dw_val_class_macptr; attr->dw_attr_val.v.val_lbl_id = xstrdup (label); add_dwarf_attr (die, attr); } @@ -5183,7 +5215,8 @@ static inline const char * AT_lbl (dw_attr_ref a) { gcc_assert (a && (AT_class (a) == dw_val_class_lbl_id - || AT_class (a) == dw_val_class_lbl_offset)); + || AT_class (a) == dw_val_class_lineptr + || AT_class (a) == dw_val_class_macptr)); return a->dw_attr_val.v.val_lbl_id; } @@ -5283,8 +5316,9 @@ is_c_family (void) { unsigned int lang = get_AT_unsigned (comp_unit_die, DW_AT_language); - return (lang == DW_LANG_C || lang == DW_LANG_C89 - || lang == DW_LANG_C_plus_plus); + return (lang == DW_LANG_C || lang == DW_LANG_C89 || lang == DW_LANG_ObjC + || lang == DW_LANG_C99 + || lang == DW_LANG_C_plus_plus || lang == DW_LANG_ObjC_plus_plus); } /* Return TRUE if the language is C++. */ @@ -5292,8 +5326,9 @@ is_c_family (void) static inline bool is_cxx (void) { - return (get_AT_unsigned (comp_unit_die, DW_AT_language) - == DW_LANG_C_plus_plus); + unsigned int lang = get_AT_unsigned (comp_unit_die, DW_AT_language); + + return lang == DW_LANG_C_plus_plus || lang == DW_LANG_ObjC_plus_plus; } /* Return TRUE if the language is Fortran. */ @@ -5699,7 +5734,8 @@ print_die (dw_die_ref die, FILE *outfile) fprintf (outfile, "die -> "); break; case dw_val_class_lbl_id: - case dw_val_class_lbl_offset: + case dw_val_class_lineptr: + case dw_val_class_macptr: fprintf (outfile, "label: %s", AT_lbl (a)); break; case dw_val_class_str: @@ -5913,7 +5949,8 @@ attr_checksum (dw_attr_ref at, struct md5_ctx *ctx, int *mark) case dw_val_class_fde_ref: case dw_val_class_lbl_id: - case dw_val_class_lbl_offset: + case dw_val_class_lineptr: + case dw_val_class_macptr: break; default: @@ -6014,7 +6051,8 @@ same_dw_val_p (dw_val_node *v1, dw_val_node *v2, int *mark) case dw_val_class_fde_ref: case dw_val_class_lbl_id: - case dw_val_class_lbl_offset: + case dw_val_class_lineptr: + case dw_val_class_macptr: return 1; default: @@ -6588,7 +6626,8 @@ size_of_die (dw_die_ref die) case dw_val_class_lbl_id: size += DWARF2_ADDR_SIZE; break; - case dw_val_class_lbl_offset: + case dw_val_class_lineptr: + case dw_val_class_macptr: size += DWARF_OFFSET_SIZE; break; case dw_val_class_str: @@ -6726,6 +6765,7 @@ value_format (dw_attr_ref a) return DW_FORM_addr; case dw_val_class_range_list: case dw_val_class_offset: + case dw_val_class_loc_list: switch (DWARF_OFFSET_SIZE) { case 4: @@ -6735,10 +6775,6 @@ value_format (dw_attr_ref a) default: gcc_unreachable (); } - case dw_val_class_loc_list: - /* FIXME: Could be DW_FORM_data8, with a > 32 bit size - .debug_loc section */ - return DW_FORM_data4; case dw_val_class_loc: switch (constant_size (size_of_locs (AT_loc (a)))) { @@ -6780,7 +6816,8 @@ value_format (dw_attr_ref a) return DW_FORM_data; case dw_val_class_lbl_id: return DW_FORM_addr; - case dw_val_class_lbl_offset: + case dw_val_class_lineptr: + case dw_val_class_macptr: return DW_FORM_data; case dw_val_class_str: return AT_string_form (a); @@ -6999,7 +7036,7 @@ output_die (dw_die_ref die) sprintf (p, "+" HOST_WIDE_INT_PRINT_HEX, a->dw_attr_val.v.val_offset); dw2_asm_output_offset (DWARF_OFFSET_SIZE, ranges_section_label, - "%s", name); + debug_ranges_section, "%s", name); *p = '\0'; } break; @@ -7081,7 +7118,8 @@ output_die (dw_die_ref die) char *sym = AT_loc_list (a)->ll_symbol; gcc_assert (sym); - dw2_asm_output_offset (DWARF_OFFSET_SIZE, sym, "%s", name); + dw2_asm_output_offset (DWARF_OFFSET_SIZE, sym, debug_loc_section, + "%s", name); } break; @@ -7091,7 +7129,8 @@ output_die (dw_die_ref die) char *sym = AT_ref (a)->die_symbol; gcc_assert (sym); - dw2_asm_output_offset (DWARF2_ADDR_SIZE, sym, "%s", name); + dw2_asm_output_offset (DWARF2_ADDR_SIZE, sym, debug_info_section, + "%s", name); } else { @@ -7107,7 +7146,8 @@ output_die (dw_die_ref die) ASM_GENERATE_INTERNAL_LABEL (l1, FDE_LABEL, a->dw_attr_val.v.val_fde_index * 2); - dw2_asm_output_offset (DWARF_OFFSET_SIZE, l1, "%s", name); + dw2_asm_output_offset (DWARF_OFFSET_SIZE, l1, debug_frame_section, + "%s", name); } break; @@ -7115,14 +7155,21 @@ output_die (dw_die_ref die) dw2_asm_output_addr (DWARF2_ADDR_SIZE, AT_lbl (a), "%s", name); break; - case dw_val_class_lbl_offset: - dw2_asm_output_offset (DWARF_OFFSET_SIZE, AT_lbl (a), "%s", name); + case dw_val_class_lineptr: + dw2_asm_output_offset (DWARF_OFFSET_SIZE, AT_lbl (a), + debug_line_section, "%s", name); + break; + + case dw_val_class_macptr: + dw2_asm_output_offset (DWARF_OFFSET_SIZE, AT_lbl (a), + debug_macinfo_section, "%s", name); break; case dw_val_class_str: if (AT_string_form (a) == DW_FORM_strp) dw2_asm_output_offset (DWARF_OFFSET_SIZE, a->dw_attr_val.v.val_str->label, + debug_str_section, "%s: \"%s\"", name, AT_string (a)); else dw2_asm_output_nstring (AT_string (a), -1, "%s", name); @@ -7156,6 +7203,7 @@ output_compilation_unit_header (void) "Length of Compilation Unit Info"); dw2_asm_output_data (2, DWARF_VERSION, "DWARF version number"); dw2_asm_output_offset (DWARF_OFFSET_SIZE, abbrev_section_label, + debug_abbrev_section, "Offset Into Abbrev. Section"); dw2_asm_output_data (1, DWARF2_ADDR_SIZE, "Pointer Size (in bytes)"); } @@ -7263,6 +7311,7 @@ output_pubnames (void) "Length of Public Names Info"); dw2_asm_output_data (2, DWARF_VERSION, "DWARF Version"); dw2_asm_output_offset (DWARF_OFFSET_SIZE, debug_info_section_label, + debug_info_section, "Offset of Compilation Unit Info"); dw2_asm_output_data (DWARF_OFFSET_SIZE, next_die_offset, "Compilation Unit Length"); @@ -7321,6 +7370,7 @@ output_aranges (void) "Length of Address Ranges Info"); dw2_asm_output_data (2, DWARF_VERSION, "DWARF Version"); dw2_asm_output_offset (DWARF_OFFSET_SIZE, debug_info_section_label, + debug_info_section, "Offset of Compilation Unit Info"); dw2_asm_output_data (1, DWARF2_ADDR_SIZE, "Size of Address"); dw2_asm_output_data (1, 0, "Size of Segment Descriptor"); @@ -9866,6 +9916,23 @@ add_const_value_attribute (dw_die_ref die, rtx rtl) } +/* Determine whether the evaluation of EXPR references any variables + or functions which aren't otherwise used (and therefore may not be + output). */ +static tree +reference_to_unused (tree * tp, int * walk_subtrees, + void * data ATTRIBUTE_UNUSED) +{ + if (! EXPR_P (*tp) && ! CONSTANT_CLASS_P (*tp)) + *walk_subtrees = 0; + + if (DECL_P (*tp) && ! TREE_PUBLIC (*tp) && ! TREE_USED (*tp) + && ! TREE_ASM_WRITTEN (*tp)) + return *tp; + else + return NULL_TREE; +} + /* Generate an RTL constant from a decl initializer INIT with decl type TYPE, for use in a later add_const_value_attribute call. */ @@ -9892,15 +9959,16 @@ rtl_for_decl_init (tree init, tree type) rtl = gen_rtx_CONST_STRING (VOIDmode, ggc_strdup (TREE_STRING_POINTER (init))); } + /* Although DWARF could easily handle other kinds of aggregates, we + have no way to represent such values as RTL constants, so skip + those. */ + else if (AGGREGATE_TYPE_P (type)) + ; /* If the initializer is something that we know will expand into an - immediate RTL constant, expand it now. Expanding anything else - tends to produce unresolved symbols; see debug/5770 and c++/6381. */ - /* Aggregate, vector, and complex types may contain constructors that may - result in code being generated when expand_expr is called, so we can't - handle them here. Integer and float are useful and safe types to handle - here. */ - else if ((INTEGRAL_TYPE_P (type) || SCALAR_FLOAT_TYPE_P (type)) - && initializer_constant_valid_p (init, type) == null_pointer_node) + immediate RTL constant, expand it now. We must be careful not to + reference variables which won't be output. */ + else if (initializer_constant_valid_p (init, type) + && ! walk_tree (&init, reference_to_unused, NULL, NULL)) { rtl = expand_expr (init, NULL_RTX, VOIDmode, EXPAND_INITIALIZER); @@ -10264,6 +10332,9 @@ add_location_or_const_value_attribute (dw_die_ref die, tree decl, add_AT_location_description (die, attr, descr); return; } + /* None of that worked, so it must not really have a location; + try adding a constant value attribute from the DECL_INITIAL. */ + tree_add_const_value_attribute (die, decl); } /* If we don't have a copy of this variable in memory for some reason (such @@ -12143,6 +12214,10 @@ gen_compile_unit_die (const char *filename) language = DW_LANG_Pascal83; else if (strcmp (language_string, "GNU Java") == 0) language = DW_LANG_Java; + else if (strcmp (language_string, "GNU Objective-C") == 0) + language = DW_LANG_ObjC; + else if (strcmp (language_string, "GNU Objective-C++") == 0) + language = DW_LANG_ObjC_plus_plus; else language = DW_LANG_C89; @@ -13253,8 +13328,7 @@ dwarf2out_decl (tree decl) { /* OK, we need to generate one for `bool' so GDB knows what type comparisons have. */ - if ((get_AT_unsigned (comp_unit_die, DW_AT_language) - == DW_LANG_C_plus_plus) + if (is_cxx () && TREE_CODE (TREE_TYPE (decl)) == BOOLEAN_TYPE && ! DECL_IGNORED_P (decl)) modified_type_die (TREE_TYPE (decl), 0, 0, NULL); @@ -13708,6 +13782,8 @@ dwarf2out_init (const char *filename ATTRIBUTE_UNUSED) DEBUG_STR_SECTION_FLAGS, NULL); debug_ranges_section = get_section (DEBUG_RANGES_SECTION, SECTION_DEBUG, NULL); + debug_frame_section = get_section (DEBUG_FRAME_SECTION, + SECTION_DEBUG, NULL); ASM_GENERATE_INTERNAL_LABEL (text_end_label, TEXT_END_LABEL, 0); ASM_GENERATE_INTERNAL_LABEL (abbrev_section_label, @@ -14118,11 +14194,11 @@ dwarf2out_finish (const char *filename) } if (debug_info_level >= DINFO_LEVEL_NORMAL) - add_AT_lbl_offset (comp_unit_die, DW_AT_stmt_list, - debug_line_section_label); + add_AT_lineptr (comp_unit_die, DW_AT_stmt_list, + debug_line_section_label); if (debug_info_level >= DINFO_LEVEL_VERBOSE) - add_AT_lbl_offset (comp_unit_die, DW_AT_macro_info, macinfo_section_label); + add_AT_macptr (comp_unit_die, DW_AT_macro_info, macinfo_section_label); /* Output all of the compilation units. We put the main one last so that the offsets are available to output_pubnames. */ diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 06721c6c467..9607bf69653 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -1,6 +1,7 @@ /* Emit RTL for the GCC expander. Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. This file is part of GCC. @@ -1596,8 +1597,9 @@ set_mem_attributes_minus_bitpos (rtx ref, tree t, int objectp, index, low_bound); off_tree = size_binop (PLUS_EXPR, - size_binop (MULT_EXPR, convert (sizetype, - index), + size_binop (MULT_EXPR, + fold_convert (sizetype, + index), unit_size), off_tree); t2 = TREE_OPERAND (t2, 0); @@ -3677,80 +3679,6 @@ find_line_note (rtx insn) return insn; } -/* Remove unnecessary notes from the instruction stream. */ - -unsigned int -remove_unnecessary_notes (void) -{ - rtx eh_stack = NULL_RTX; - rtx insn; - rtx next; - rtx tmp; - - /* We must not remove the first instruction in the function because - the compiler depends on the first instruction being a note. */ - for (insn = NEXT_INSN (get_insns ()); insn; insn = next) - { - /* Remember what's next. */ - next = NEXT_INSN (insn); - - /* We're only interested in notes. */ - if (!NOTE_P (insn)) - continue; - - switch (NOTE_LINE_NUMBER (insn)) - { - case NOTE_INSN_DELETED: - remove_insn (insn); - break; - - case NOTE_INSN_EH_REGION_BEG: - eh_stack = alloc_INSN_LIST (insn, eh_stack); - break; - - case NOTE_INSN_EH_REGION_END: - /* Too many end notes. */ - gcc_assert (eh_stack); - /* Mismatched nesting. */ - gcc_assert (NOTE_EH_HANDLER (XEXP (eh_stack, 0)) - == NOTE_EH_HANDLER (insn)); - tmp = eh_stack; - eh_stack = XEXP (eh_stack, 1); - free_INSN_LIST_node (tmp); - break; - - case NOTE_INSN_BLOCK_BEG: - case NOTE_INSN_BLOCK_END: - /* BLOCK_END and BLOCK_BEG notes only exist in the `final' pass. */ - gcc_unreachable (); - - default: - break; - } - } - - /* Too many EH_REGION_BEG notes. */ - gcc_assert (!eh_stack); - return 0; -} - -struct tree_opt_pass pass_remove_unnecessary_notes = -{ - "eunotes", /* name */ - NULL, /* gate */ - remove_unnecessary_notes, /* execute */ - NULL, /* sub */ - NULL, /* next */ - 0, /* static_pass_number */ - 0, /* tv_id */ - 0, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - TODO_dump_func, /* todo_flags_finish */ - 0 /* letter */ -}; - /* Emit insn(s) of given code and pattern at a specified place within the doubly-linked list. diff --git a/gcc/except.c b/gcc/except.c index 7c0088e123a..01f11087c3b 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -857,84 +857,145 @@ current_function_has_exception_handlers (void) return false; } -static struct eh_region * -duplicate_eh_region_1 (struct eh_region *o) -{ - struct eh_region *n = ggc_alloc_cleared (sizeof (struct eh_region)); - - *n = *o; +/* A subroutine of duplicate_eh_regions. Search the region tree under O + for the miniumum and maximum region numbers. Update *MIN and *MAX. */ - n->region_number = o->region_number + cfun->eh->last_region_number; - VEC_replace (eh_region, cfun->eh->region_array, n->region_number, n); - gcc_assert (!o->aka); +static void +duplicate_eh_regions_0 (eh_region o, int *min, int *max) +{ + if (o->region_number < *min) + *min = o->region_number; + if (o->region_number > *max) + *max = o->region_number; - return n; + if (o->inner) + { + o = o->inner; + duplicate_eh_regions_0 (o, min, max); + while (o->next_peer) + { + o = o->next_peer; + duplicate_eh_regions_0 (o, min, max); + } + } } -static void -duplicate_eh_region_2 (struct eh_region *o, struct eh_region **n_array, - struct eh_region *prev_try) +/* A subroutine of duplicate_eh_regions. Copy the region tree under OLD. + Root it at OUTER, and apply EH_OFFSET to the region number. Don't worry + about the other internal pointers just yet, just the tree-like pointers. */ + +static eh_region +duplicate_eh_regions_1 (eh_region old, eh_region outer, int eh_offset) { - struct eh_region *n = n_array[o->region_number]; + eh_region ret, n; - switch (n->type) - { - case ERT_TRY: - if (o->u.try.catch) - n->u.try.catch = n_array[o->u.try.catch->region_number]; - if (o->u.try.last_catch) - n->u.try.last_catch = n_array[o->u.try.last_catch->region_number]; - break; + ret = n = ggc_alloc (sizeof (struct eh_region)); - case ERT_CATCH: - if (o->u.catch.next_catch) - n->u.catch.next_catch = n_array[o->u.catch.next_catch->region_number]; - if (o->u.catch.prev_catch) - n->u.catch.prev_catch = n_array[o->u.catch.prev_catch->region_number]; - break; + *n = *old; + n->outer = outer; + gcc_assert (!old->aka); - case ERT_CLEANUP: - if (o->u.cleanup.prev_try) - n->u.cleanup.prev_try = n_array[o->u.cleanup.prev_try->region_number]; - else - n->u.cleanup.prev_try = prev_try; - break; + n->region_number += eh_offset; + VEC_replace (eh_region, cfun->eh->region_array, n->region_number, n); - default: - break; + if (old->inner) + { + old = old->inner; + n = n->inner = duplicate_eh_regions_1 (old, ret, eh_offset); + while (old->next_peer) + { + old = old->next_peer; + n = n->next_peer = duplicate_eh_regions_1 (old, ret, eh_offset); + } } - if (o->outer) - n->outer = n_array[o->outer->region_number]; - if (o->inner) - n->inner = n_array[o->inner->region_number]; - if (o->next_peer) - n->next_peer = n_array[o->next_peer->region_number]; + return ret; } -/* Duplicate the EH regions of IFUN into current function, root the tree in - OUTER_REGION and remap labels using MAP callback. */ +/* Duplicate the EH regions of IFUN, rootted at COPY_REGION, into current + function and root the tree below OUTER_REGION. Remap labels using MAP + callback. The special case of COPY_REGION of 0 means all regions. */ + int duplicate_eh_regions (struct function *ifun, duplicate_eh_regions_map map, - void *data, int outer_region) + void *data, int copy_region, int outer_region) { - int ifun_last_region_number = ifun->eh->last_region_number; - struct eh_region **n_array, *root, *cur, *prev_try; - int i; + eh_region cur, prev_try, outer, *splice; + int i, min_region, max_region, eh_offset, cfun_last_region_number; + int num_regions; - if (ifun_last_region_number == 0 || !ifun->eh->region_tree) + if (!ifun->eh->region_tree) return 0; - n_array = xcalloc (ifun_last_region_number + 1, sizeof (*n_array)); + /* Find the range of region numbers to be copied. The interface we + provide here mandates a single offset to find new number from old, + which means we must look at the numbers present, instead of the + count or something else. */ + if (copy_region > 0) + { + min_region = INT_MAX; + max_region = 0; + + cur = VEC_index (eh_region, ifun->eh->region_array, copy_region); + duplicate_eh_regions_0 (cur, &min_region, &max_region); + } + else + min_region = 1, max_region = ifun->eh->last_region_number; + num_regions = max_region - min_region + 1; + cfun_last_region_number = cfun->eh->last_region_number; + eh_offset = cfun_last_region_number + 1 - min_region; + + /* If we've not yet created a region array, do so now. */ VEC_safe_grow (eh_region, gc, cfun->eh->region_array, - cfun->eh->last_region_number + 1 + ifun_last_region_number); + cfun_last_region_number + 1 + num_regions); + cfun->eh->last_region_number = max_region + eh_offset; - /* We might've created new cfun->eh->region_array so zero out nonexisting region 0. */ + /* We may have just allocated the array for the first time. + Make sure that element zero is null. */ VEC_replace (eh_region, cfun->eh->region_array, 0, 0); - for (i = cfun->eh->last_region_number + 1; - i < cfun->eh->last_region_number + 1 + ifun_last_region_number; i++) - VEC_replace (eh_region, cfun->eh->region_array, i, 0); + /* Zero all entries in the range allocated. */ + memset (VEC_address (eh_region, cfun->eh->region_array) + + cfun_last_region_number + 1, 0, num_regions); + + /* Locate the spot at which to insert the new tree. */ + if (outer_region > 0) + { + outer = VEC_index (eh_region, cfun->eh->region_array, outer_region); + splice = &outer->inner; + } + else + { + outer = NULL; + splice = &cfun->eh->region_tree; + } + while (*splice) + splice = &(*splice)->next_peer; + + /* Copy all the regions in the subtree. */ + if (copy_region > 0) + { + cur = VEC_index (eh_region, ifun->eh->region_array, copy_region); + *splice = duplicate_eh_regions_1 (cur, outer, eh_offset); + } + else + { + eh_region n; + + cur = ifun->eh->region_tree; + *splice = n = duplicate_eh_regions_1 (cur, outer, eh_offset); + while (cur->next_peer) + { + cur = cur->next_peer; + n = n->next_peer = duplicate_eh_regions_1 (cur, outer, eh_offset); + } + } + + /* Remap all the labels in the new regions. */ + for (i = cfun_last_region_number + 1; + VEC_iterate (eh_region, cfun->eh->region_array, i, cur); ++i) + if (cur && cur->tree_label) + cur->tree_label = map (cur->tree_label, data); /* Search for the containing ERT_TRY region to fix up the prev_try short-cuts for ERT_CLEANUP regions. */ @@ -945,67 +1006,77 @@ duplicate_eh_regions (struct function *ifun, duplicate_eh_regions_map map, prev_try = prev_try->outer) ; - for (i = 1; i <= ifun_last_region_number; ++i) - { - cur = VEC_index (eh_region, ifun->eh->region_array, i); - if (!cur || cur->region_number != i) - continue; - n_array[i] = duplicate_eh_region_1 (cur); - if (cur->tree_label) - { - tree newlabel = map (cur->tree_label, data); - n_array[i]->tree_label = newlabel; - } - else - n_array[i]->tree_label = NULL; - } - for (i = 1; i <= ifun_last_region_number; ++i) + /* Remap all of the internal catch and cleanup linkages. Since we + duplicate entire subtrees, all of the referenced regions will have + been copied too. And since we renumbered them as a block, a simple + bit of arithmetic finds us the index for the replacement region. */ + for (i = cfun_last_region_number + 1; + VEC_iterate (eh_region, cfun->eh->region_array, i, cur); ++i) { - cur = VEC_index (eh_region, ifun->eh->region_array, i); - if (!cur || cur->region_number != i) + if (cur == NULL) continue; - duplicate_eh_region_2 (cur, n_array, prev_try); - } - root = n_array[ifun->eh->region_tree->region_number]; - gcc_assert (root->outer == NULL); - if (outer_region > 0) - { - struct eh_region *cur - = VEC_index (eh_region, cfun->eh->region_array, outer_region); - struct eh_region *p = cur->inner; +#define REMAP(REG) \ + (REG) = VEC_index (eh_region, cfun->eh->region_array, \ + (REG)->region_number + eh_offset) - if (p) + switch (cur->type) { - while (p->next_peer) - p = p->next_peer; - p->next_peer = root; - } - else - cur->inner = root; - for (i = 1; i <= ifun_last_region_number; ++i) - if (n_array[i] && n_array[i]->outer == NULL) - n_array[i]->outer = cur; - } - else - { - struct eh_region *p = cfun->eh->region_tree; - if (p) - { - while (p->next_peer) - p = p->next_peer; - p->next_peer = root; + case ERT_TRY: + if (cur->u.try.catch) + REMAP (cur->u.try.catch); + if (cur->u.try.last_catch) + REMAP (cur->u.try.last_catch); + break; + + case ERT_CATCH: + if (cur->u.catch.next_catch) + REMAP (cur->u.catch.next_catch); + if (cur->u.catch.prev_catch) + REMAP (cur->u.catch.prev_catch); + break; + + case ERT_CLEANUP: + if (cur->u.cleanup.prev_try) + REMAP (cur->u.cleanup.prev_try); + else + cur->u.cleanup.prev_try = prev_try; + break; + + default: + break; } - else - cfun->eh->region_tree = root; + +#undef REMAP } - free (n_array); + return eh_offset; +} - i = cfun->eh->last_region_number; - cfun->eh->last_region_number = i + ifun_last_region_number; +/* Return true if REGION_A is outer to REGION_B in IFUN. */ - return i; +bool +eh_region_outer_p (struct function *ifun, int region_a, int region_b) +{ + struct eh_region *rp_a, *rp_b; + + gcc_assert (ifun->eh->last_region_number > 0); + gcc_assert (ifun->eh->region_tree); + + rp_a = VEC_index (eh_region, ifun->eh->region_array, region_a); + rp_b = VEC_index (eh_region, ifun->eh->region_array, region_b); + gcc_assert (rp_a != NULL); + gcc_assert (rp_b != NULL); + + do + { + if (rp_a == rp_b) + return true; + rp_b = rp_b->outer; + } + while (rp_b); + + return false; } static int diff --git a/gcc/except.h b/gcc/except.h index 46914d4205c..5b28296c8b4 100644 --- a/gcc/except.h +++ b/gcc/except.h @@ -82,7 +82,8 @@ extern rtx expand_builtin_extend_pointer (tree); extern rtx get_exception_pointer (struct function *); extern rtx get_exception_filter (struct function *); typedef tree (*duplicate_eh_regions_map) (tree, void *); -extern int duplicate_eh_regions (struct function *, duplicate_eh_regions_map, void *, int); +extern int duplicate_eh_regions (struct function *, duplicate_eh_regions_map, + void *, int, int); extern void sjlj_emit_function_exit_after (rtx); extern void default_init_unwind_resume_libfunc (void); @@ -106,6 +107,7 @@ extern void collect_eh_region_array (void); extern void expand_resx_expr (tree); extern void verify_eh_tree (struct function *); extern void dump_eh_tree (FILE *, struct function *); +extern bool eh_region_outer_p (struct function *, int, int); /* tree-eh.c */ extern void add_stmt_to_eh_region_fn (struct function *, tree, int); diff --git a/gcc/expr.c b/gcc/expr.c index e3cb784f187..904d4fcb30f 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -1409,6 +1409,8 @@ init_block_move_fn (const char *asmspec) TREE_PUBLIC (fn) = 1; DECL_ARTIFICIAL (fn) = 1; TREE_NOTHROW (fn) = 1; + DECL_VISIBILITY (fn) = VISIBILITY_DEFAULT; + DECL_VISIBILITY_SPECIFIED (fn) = 1; block_move_fn = fn; } @@ -1855,7 +1857,7 @@ void emit_group_store (rtx orig_dst, rtx src, tree type ATTRIBUTE_UNUSED, int ssize) { rtx *tmps, dst; - int start, i; + int start, finish, i; enum machine_mode m = GET_MODE (orig_dst); gcc_assert (GET_CODE (src) == PARALLEL); @@ -1881,15 +1883,21 @@ emit_group_store (rtx orig_dst, rtx src, tree type ATTRIBUTE_UNUSED, int ssize) start = 0; else start = 1; + finish = XVECLEN (src, 0); - tmps = alloca (sizeof (rtx) * XVECLEN (src, 0)); + tmps = alloca (sizeof (rtx) * finish); /* Copy the (probable) hard regs into pseudos. */ - for (i = start; i < XVECLEN (src, 0); i++) + for (i = start; i < finish; i++) { rtx reg = XEXP (XVECEXP (src, 0, i), 0); - tmps[i] = gen_reg_rtx (GET_MODE (reg)); - emit_move_insn (tmps[i], reg); + if (!REG_P (reg) || REGNO (reg) < FIRST_PSEUDO_REGISTER) + { + tmps[i] = gen_reg_rtx (GET_MODE (reg)); + emit_move_insn (tmps[i], reg); + } + else + tmps[i] = reg; } /* If we won't be storing directly into memory, protect the real destination @@ -1916,13 +1924,62 @@ emit_group_store (rtx orig_dst, rtx src, tree type ATTRIBUTE_UNUSED, int ssize) } else if (!MEM_P (dst) && GET_CODE (dst) != CONCAT) { - dst = gen_reg_rtx (GET_MODE (orig_dst)); + enum machine_mode outer = GET_MODE (dst); + enum machine_mode inner; + HOST_WIDE_INT bytepos; + bool done = false; + rtx temp; + + if (!REG_P (dst) || REGNO (dst) < FIRST_PSEUDO_REGISTER) + dst = gen_reg_rtx (outer); + /* Make life a bit easier for combine. */ - emit_move_insn (dst, CONST0_RTX (GET_MODE (orig_dst))); + /* If the first element of the vector is the low part + of the destination mode, use a paradoxical subreg to + initialize the destination. */ + if (start < finish) + { + inner = GET_MODE (tmps[start]); + bytepos = subreg_lowpart_offset (outer, inner); + if (INTVAL (XEXP (XVECEXP (src, 0, start), 1)) == bytepos) + { + temp = simplify_gen_subreg (outer, tmps[start], + inner, bytepos); + if (temp) + { + emit_move_insn (dst, temp); + done = true; + start++; + } + } + } + + /* If the first element wasn't the low part, try the last. */ + if (!done + && start < finish - 1) + { + inner = GET_MODE (tmps[finish - 1]); + bytepos = subreg_lowpart_offset (outer, inner); + if (INTVAL (XEXP (XVECEXP (src, 0, finish - 1), 1)) == bytepos) + { + temp = simplify_gen_subreg (outer, tmps[finish - 1], + inner, bytepos); + if (temp) + { + emit_move_insn (dst, temp); + done = true; + finish--; + } + } + } + + /* Otherwise, simply initialize the result to zero. */ + if (!done) + emit_move_insn (dst, CONST0_RTX (outer)); } /* Process the pieces. */ - for (i = start; i < XVECLEN (src, 0); i++) + for (i = start; i < finish; i++) { HOST_WIDE_INT bytepos = INTVAL (XEXP (XVECEXP (src, 0, i), 1)); enum machine_mode mode = GET_MODE (tmps[i]); @@ -2556,6 +2613,8 @@ init_block_clear_fn (const char *asmspec) TREE_PUBLIC (fn) = 1; DECL_ARTIFICIAL (fn) = 1; TREE_NOTHROW (fn) = 1; + DECL_VISIBILITY (fn) = VISIBILITY_DEFAULT; + DECL_VISIBILITY_SPECIFIED (fn) = 1; block_clear_fn = fn; } @@ -4229,14 +4288,14 @@ store_expr (tree exp, rtx target, int call_param_p) { if (TYPE_UNSIGNED (TREE_TYPE (exp)) != SUBREG_PROMOTED_UNSIGNED_P (target)) - exp = convert + exp = fold_convert (lang_hooks.types.signed_or_unsigned_type (SUBREG_PROMOTED_UNSIGNED_P (target), TREE_TYPE (exp)), exp); - exp = convert (lang_hooks.types.type_for_mode - (GET_MODE (SUBREG_REG (target)), - SUBREG_PROMOTED_UNSIGNED_P (target)), - exp); + exp = fold_convert (lang_hooks.types.type_for_mode + (GET_MODE (SUBREG_REG (target)), + SUBREG_PROMOTED_UNSIGNED_P (target)), + exp); inner_target = SUBREG_REG (target); } @@ -4904,13 +4963,13 @@ store_constructor (tree exp, rtx target, int cleared, HOST_WIDE_INT size) { type = lang_hooks.types.type_for_size (BITS_PER_WORD, TYPE_UNSIGNED (type)); - value = convert (type, value); + value = fold_convert (type, value); } if (BYTES_BIG_ENDIAN) value = fold_build2 (LSHIFT_EXPR, type, value, - build_int_cst (NULL_TREE, + build_int_cst (type, BITS_PER_WORD - bitsize)); bitsize = BITS_PER_WORD; mode = word_mode; @@ -5108,13 +5167,17 @@ store_constructor (tree exp, rtx target, int cleared, HOST_WIDE_INT size) emit_label (loop_start); /* Assign value to element index. */ - position - = convert (ssizetype, - fold_build2 (MINUS_EXPR, TREE_TYPE (index), - index, TYPE_MIN_VALUE (domain))); - position = size_binop (MULT_EXPR, position, - convert (ssizetype, - TYPE_SIZE_UNIT (elttype))); + position = + fold_convert (ssizetype, + fold_build2 (MINUS_EXPR, + TREE_TYPE (index), + index, + TYPE_MIN_VALUE (domain))); + + position = + size_binop (MULT_EXPR, position, + fold_convert (ssizetype, + TYPE_SIZE_UNIT (elttype))); pos_rtx = expand_normal (position); xtarget = offset_address (target, pos_rtx, @@ -5158,9 +5221,10 @@ store_constructor (tree exp, rtx target, int cleared, HOST_WIDE_INT size) index, TYPE_MIN_VALUE (domain))); - position = size_binop (MULT_EXPR, index, - convert (ssizetype, - TYPE_SIZE_UNIT (elttype))); + position = + size_binop (MULT_EXPR, index, + fold_convert (ssizetype, + TYPE_SIZE_UNIT (elttype))); xtarget = offset_address (target, expand_normal (position), highest_pow2_factor (position)); @@ -5613,7 +5677,7 @@ get_inner_reference (tree exp, HOST_WIDE_INT *pbitsize, offset = size_binop (PLUS_EXPR, offset, size_binop (MULT_EXPR, - convert (sizetype, index), + fold_convert (sizetype, index), unit_size)); } break; @@ -5652,7 +5716,8 @@ get_inner_reference (tree exp, HOST_WIDE_INT *pbitsize, /* If OFFSET is constant, see if we can return the whole thing as a constant bit position. Otherwise, split it up. */ if (host_integerp (offset, 0) - && 0 != (tem = size_binop (MULT_EXPR, convert (bitsizetype, offset), + && 0 != (tem = size_binop (MULT_EXPR, + fold_convert (bitsizetype, offset), bitsize_unit_node)) && 0 != (tem = size_binop (PLUS_EXPR, tem, bit_offset)) && host_integerp (tem, 0)) @@ -8441,14 +8506,11 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, && integer_onep (DECL_SIZE (TREE_OPERAND (TREE_OPERAND (rhs, 1), 1)))) { rtx label = gen_label_rtx (); - + int value = TREE_CODE (rhs) == BIT_IOR_EXPR; do_jump (TREE_OPERAND (rhs, 1), - TREE_CODE (rhs) == BIT_IOR_EXPR ? label : 0, - TREE_CODE (rhs) == BIT_AND_EXPR ? label : 0); - expand_assignment (lhs, convert (TREE_TYPE (rhs), - (TREE_CODE (rhs) == BIT_IOR_EXPR - ? integer_one_node - : integer_zero_node))); + value ? label : 0, + value ? 0 : label); + expand_assignment (lhs, build_int_cst (TREE_TYPE (rhs), value)); do_pending_stack_adjust (); emit_label (label); return const0_rtx; @@ -8768,7 +8830,7 @@ string_constant (tree arg, tree *ptr_offset) if (TREE_CODE (array) == STRING_CST) { - *ptr_offset = convert (sizetype, offset); + *ptr_offset = fold_convert (sizetype, offset); return array; } else if (TREE_CODE (array) == VAR_DECL) @@ -8795,7 +8857,7 @@ string_constant (tree arg, tree *ptr_offset) /* If variable is bigger than the string literal, OFFSET must be constant and inside of the bounds of the string literal. */ - offset = convert (sizetype, offset); + offset = fold_convert (sizetype, offset); if (compare_tree_int (DECL_SIZE_UNIT (array), length) > 0 && (! host_integerp (offset, 1) || compare_tree_int (offset, length) >= 0)) @@ -9107,9 +9169,8 @@ try_casesi (tree index_type, tree index_expr, tree minval, tree range, { if (TYPE_MODE (index_type) != index_mode) { - index_expr = convert (lang_hooks.types.type_for_size - (index_bits, 0), index_expr); - index_type = TREE_TYPE (index_expr); + index_type = lang_hooks.types.type_for_size (index_bits, 0); + index_expr = fold_convert (index_type, index_expr); } index = expand_normal (index_expr); @@ -9235,8 +9296,8 @@ try_tablejump (tree index_type, tree index_expr, tree minval, tree range, return 0; index_expr = fold_build2 (MINUS_EXPR, index_type, - convert (index_type, index_expr), - convert (index_type, minval)); + fold_convert (index_type, index_expr), + fold_convert (index_type, minval)); index = expand_normal (index_expr); do_pending_stack_adjust (); diff --git a/gcc/expr.h b/gcc/expr.h index c3e0b92e082..9ba5d4e7da9 100644 --- a/gcc/expr.h +++ b/gcc/expr.h @@ -29,8 +29,8 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include "rtl.h" /* For optimize_size */ #include "flags.h" -/* For host_integerp, tree_low_cst, convert, size_binop, ssize_int, TREE_CODE, - TYPE_SIZE, int_size_in_bytes, */ +/* For host_integerp, tree_low_cst, fold_convert, size_binop, ssize_int, + TREE_CODE, TYPE_SIZE, int_size_in_bytes, */ #include "tree.h" /* For GET_MODE_BITSIZE, word_mode */ #include "machmode.h" @@ -123,36 +123,36 @@ struct locate_and_pad_arg_data /* Add the value of the tree INC to the `struct args_size' TO. */ -#define ADD_PARM_SIZE(TO, INC) \ -do { \ - tree inc = (INC); \ - if (host_integerp (inc, 0)) \ - (TO).constant += tree_low_cst (inc, 0); \ - else if ((TO).var == 0) \ - (TO).var = convert (ssizetype, inc); \ - else \ - (TO).var = size_binop (PLUS_EXPR, (TO).var, \ - convert (ssizetype, inc)); \ +#define ADD_PARM_SIZE(TO, INC) \ +do { \ + tree inc = (INC); \ + if (host_integerp (inc, 0)) \ + (TO).constant += tree_low_cst (inc, 0); \ + else if ((TO).var == 0) \ + (TO).var = fold_convert (ssizetype, inc); \ + else \ + (TO).var = size_binop (PLUS_EXPR, (TO).var, \ + fold_convert (ssizetype, inc)); \ } while (0) -#define SUB_PARM_SIZE(TO, DEC) \ -do { \ - tree dec = (DEC); \ - if (host_integerp (dec, 0)) \ - (TO).constant -= tree_low_cst (dec, 0); \ - else if ((TO).var == 0) \ - (TO).var = size_binop (MINUS_EXPR, ssize_int (0), \ - convert (ssizetype, dec)); \ - else \ - (TO).var = size_binop (MINUS_EXPR, (TO).var, \ - convert (ssizetype, dec)); \ +#define SUB_PARM_SIZE(TO, DEC) \ +do { \ + tree dec = (DEC); \ + if (host_integerp (dec, 0)) \ + (TO).constant -= tree_low_cst (dec, 0); \ + else if ((TO).var == 0) \ + (TO).var = size_binop (MINUS_EXPR, ssize_int (0), \ + fold_convert (ssizetype, dec)); \ + else \ + (TO).var = size_binop (MINUS_EXPR, (TO).var, \ + fold_convert (ssizetype, dec)); \ } while (0) /* Convert the implicit sum in a `struct args_size' into a tree of type ssizetype. */ #define ARGS_SIZE_TREE(SIZE) \ ((SIZE).var == 0 ? ssize_int ((SIZE).constant) \ - : size_binop (PLUS_EXPR, convert (ssizetype, (SIZE).var), \ + : size_binop (PLUS_EXPR, fold_convert (ssizetype, (SIZE).var), \ ssize_int ((SIZE).constant))) /* Convert the implicit sum in a `struct args_size' into an rtx. */ diff --git a/gcc/final.c b/gcc/final.c index f233f12219a..0cb985fd4d6 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -1417,7 +1417,6 @@ final_start_function (rtx first ATTRIBUTE_UNUSED, FILE *file, function. */ if (write_symbols) { - remove_unnecessary_notes (); reemit_insn_block_notes (); number_blocks (current_function_decl); /* We never actually put out begin/end notes for the top-level @@ -1698,8 +1697,6 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED, switch (NOTE_LINE_NUMBER (insn)) { case NOTE_INSN_DELETED: - case NOTE_INSN_LOOP_BEG: - case NOTE_INSN_LOOP_END: case NOTE_INSN_FUNCTION_END: case NOTE_INSN_REPEATED_LINE_NUMBER: case NOTE_INSN_EXPECTED_VALUE: diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 4e05368fe2b..d8f7efc62e5 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -7074,6 +7074,22 @@ fold_unary (enum tree_code code, tree type, tree op0) TREE_OPERAND (arg0, 1)); } + /* Convert (T1)(~(T2)X) into ~(T1)X if T1 and T2 are integral types + of the same precision, and X is a integer type not narrower than + types T1 or T2, i.e. the cast (T2)X isn't an extension. */ + if (INTEGRAL_TYPE_P (type) + && TREE_CODE (op0) == BIT_NOT_EXPR + && INTEGRAL_TYPE_P (TREE_TYPE (op0)) + && (TREE_CODE (TREE_OPERAND (op0, 0)) == NOP_EXPR + || TREE_CODE (TREE_OPERAND (op0, 0)) == CONVERT_EXPR) + && TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (op0))) + { + tem = TREE_OPERAND (TREE_OPERAND (op0, 0), 0); + if (INTEGRAL_TYPE_P (TREE_TYPE (tem)) + && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (tem))) + return fold_build1 (BIT_NOT_EXPR, type, fold_convert (type, tem)); + } + tem = fold_convert_const (code, type, arg0); return tem ? tem : NULL_TREE; @@ -7289,33 +7305,6 @@ fold_comparison (enum tree_code code, tree type, tree op0, tree op1) if (tree_swap_operands_p (arg0, arg1, true)) return fold_build2 (swap_tree_comparison (code), type, op1, op0); - /* If this is a comparison of two exprs that look like an - ARRAY_REF of the same object, then we can fold this to a - comparison of the two offsets. */ - { - tree base0, offset0, base1, offset1; - - if (extract_array_ref (arg0, &base0, &offset0) - && extract_array_ref (arg1, &base1, &offset1) - && operand_equal_p (base0, base1, 0)) - { - /* Handle no offsets on both sides specially. */ - if (offset0 == NULL_TREE && offset1 == NULL_TREE) - return fold_build2 (code, type, integer_zero_node, - integer_zero_node); - - if (!offset0 || !offset1 - || TREE_TYPE (offset0) == TREE_TYPE (offset1)) - { - if (offset0 == NULL_TREE) - offset0 = build_int_cst (TREE_TYPE (offset1), 0); - if (offset1 == NULL_TREE) - offset1 = build_int_cst (TREE_TYPE (offset0), 0); - return fold_build2 (code, type, offset0, offset1); - } - } - } - /* Transform comparisons of the form X +- C1 CMP C2 to X CMP C2 +- C1. */ if ((TREE_CODE (arg0) == PLUS_EXPR || TREE_CODE (arg0) == MINUS_EXPR) && (TREE_CODE (TREE_OPERAND (arg0, 1)) == INTEGER_CST @@ -8186,7 +8175,8 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1) if (INTEGRAL_TYPE_P (type) && TREE_CODE (arg0) == NEGATE_EXPR && integer_onep (arg1)) - return fold_build1 (BIT_NOT_EXPR, type, TREE_OPERAND (arg0, 0)); + return fold_build1 (BIT_NOT_EXPR, type, + fold_convert (type, TREE_OPERAND (arg0, 0))); /* Convert -1 - A to ~A. */ if (INTEGRAL_TYPE_P (type) @@ -8786,6 +8776,45 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1) return fold_build2 (EQ_EXPR, type, arg0, build_int_cst (TREE_TYPE (arg0), 0)); + /* Fold (X & Y) ^ Y as ~X & Y. */ + if (TREE_CODE (arg0) == BIT_AND_EXPR + && operand_equal_p (TREE_OPERAND (arg0, 1), arg1, 0)) + { + tem = fold_convert (type, TREE_OPERAND (arg0, 0)); + return fold_build2 (BIT_AND_EXPR, type, + fold_build1 (BIT_NOT_EXPR, type, tem), + fold_convert (type, arg1)); + } + /* Fold (X & Y) ^ X as ~Y & X. */ + if (TREE_CODE (arg0) == BIT_AND_EXPR + && operand_equal_p (TREE_OPERAND (arg0, 0), arg1, 0) + && reorder_operands_p (TREE_OPERAND (arg0, 1), arg1)) + { + tem = fold_convert (type, TREE_OPERAND (arg0, 1)); + return fold_build2 (BIT_AND_EXPR, type, + fold_build1 (BIT_NOT_EXPR, type, tem), + fold_convert (type, arg1)); + } + /* Fold X ^ (X & Y) as X & ~Y. */ + if (TREE_CODE (arg1) == BIT_AND_EXPR + && operand_equal_p (arg0, TREE_OPERAND (arg1, 0), 0)) + { + tem = fold_convert (type, TREE_OPERAND (arg1, 1)); + return fold_build2 (BIT_AND_EXPR, type, + fold_convert (type, arg0), + fold_build1 (BIT_NOT_EXPR, type, tem)); + } + /* Fold X ^ (Y & X) as ~Y & X. */ + if (TREE_CODE (arg1) == BIT_AND_EXPR + && operand_equal_p (arg0, TREE_OPERAND (arg1, 1), 0) + && reorder_operands_p (arg0, TREE_OPERAND (arg1, 0))) + { + tem = fold_convert (type, TREE_OPERAND (arg1, 0)); + return fold_build2 (BIT_AND_EXPR, type, + fold_build1 (BIT_NOT_EXPR, type, tem), + fold_convert (type, arg0)); + } + /* See if this can be simplified into a rotate first. If that is unsuccessful continue in the association code. */ goto bit_rotate; @@ -8860,6 +8889,45 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1) build_int_cst (TREE_TYPE (tem), 0)); } + /* Fold (X ^ Y) & Y as ~X & Y. */ + if (TREE_CODE (arg0) == BIT_XOR_EXPR + && operand_equal_p (TREE_OPERAND (arg0, 1), arg1, 0)) + { + tem = fold_convert (type, TREE_OPERAND (arg0, 0)); + return fold_build2 (BIT_AND_EXPR, type, + fold_build1 (BIT_NOT_EXPR, type, tem), + fold_convert (type, arg1)); + } + /* Fold (X ^ Y) & X as ~Y & X. */ + if (TREE_CODE (arg0) == BIT_XOR_EXPR + && operand_equal_p (TREE_OPERAND (arg0, 0), arg1, 0) + && reorder_operands_p (TREE_OPERAND (arg0, 1), arg1)) + { + tem = fold_convert (type, TREE_OPERAND (arg0, 1)); + return fold_build2 (BIT_AND_EXPR, type, + fold_build1 (BIT_NOT_EXPR, type, tem), + fold_convert (type, arg1)); + } + /* Fold X & (X ^ Y) as X & ~Y. */ + if (TREE_CODE (arg1) == BIT_XOR_EXPR + && operand_equal_p (arg0, TREE_OPERAND (arg1, 0), 0)) + { + tem = fold_convert (type, TREE_OPERAND (arg1, 1)); + return fold_build2 (BIT_AND_EXPR, type, + fold_convert (type, arg0), + fold_build1 (BIT_NOT_EXPR, type, tem)); + } + /* Fold X & (Y ^ X) as ~Y & X. */ + if (TREE_CODE (arg1) == BIT_XOR_EXPR + && operand_equal_p (arg0, TREE_OPERAND (arg1, 1), 0) + && reorder_operands_p (arg0, TREE_OPERAND (arg1, 0))) + { + tem = fold_convert (type, TREE_OPERAND (arg1, 0)); + return fold_build2 (BIT_AND_EXPR, type, + fold_build1 (BIT_NOT_EXPR, type, tem), + fold_convert (type, arg0)); + } + t1 = distribute_bit_expr (code, type, arg0, arg1); if (t1 != NULL_TREE) return t1; @@ -8902,8 +8970,10 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1) return NULL_TREE; /* Optimize A / A to 1.0 if we don't care about - NaNs or Infinities. */ - if (! HONOR_NANS (TYPE_MODE (TREE_TYPE (arg0))) + NaNs or Infinities. Skip the transformation + for non-real operands. */ + if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (arg0)) + && ! HONOR_NANS (TYPE_MODE (TREE_TYPE (arg0))) && ! HONOR_INFINITIES (TYPE_MODE (TREE_TYPE (arg0))) && operand_equal_p (arg0, arg1, 0)) { @@ -8912,6 +8982,20 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1) return omit_two_operands (type, r, arg0, arg1); } + /* The complex version of the above A / A optimization. */ + if (COMPLEX_FLOAT_TYPE_P (TREE_TYPE (arg0)) + && operand_equal_p (arg0, arg1, 0)) + { + tree elem_type = TREE_TYPE (TREE_TYPE (arg0)); + if (! HONOR_NANS (TYPE_MODE (elem_type)) + && ! HONOR_INFINITIES (TYPE_MODE (elem_type))) + { + tree r = build_real (elem_type, dconst1); + /* omit_two_operands will call fold_convert for us. */ + return omit_two_operands (type, r, arg0, arg1); + } + } + /* (-A) / (-B) -> A / B */ if (TREE_CODE (arg0) == NEGATE_EXPR && negate_expr_p (arg1)) return fold_build2 (RDIV_EXPR, type, @@ -9951,6 +10035,34 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1) tem, build_int_cst (TREE_TYPE (tem), 0)); } + /* If this is a comparison of two exprs that look like an + ARRAY_REF of the same object, then we can fold this to a + comparison of the two offsets. This is only safe for + EQ_EXPR and NE_EXPR because of overflow issues. */ + { + tree base0, offset0, base1, offset1; + + if (extract_array_ref (arg0, &base0, &offset0) + && extract_array_ref (arg1, &base1, &offset1) + && operand_equal_p (base0, base1, 0)) + { + /* Handle no offsets on both sides specially. */ + if (offset0 == NULL_TREE && offset1 == NULL_TREE) + return fold_build2 (code, type, integer_zero_node, + integer_zero_node); + + if (!offset0 || !offset1 + || TREE_TYPE (offset0) == TREE_TYPE (offset1)) + { + if (offset0 == NULL_TREE) + offset0 = build_int_cst (TREE_TYPE (offset1), 0); + if (offset1 == NULL_TREE) + offset1 = build_int_cst (TREE_TYPE (offset0), 0); + return fold_build2 (code, type, offset0, offset1); + } + } + } + if (integer_zerop (arg1) && tree_expr_nonzero_p (arg0)) { diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index b09d32e3801..0fbcc75be69 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,205 @@ +2006-04-04 H.J. Lu + + PR fortran/25619 + * trans-array.c (gfc_conv_expr_descriptor): Only dereference + character pointer when copying temporary. + + PR fortran/23634 + * trans-array.c (gfc_conv_expr_descriptor): Properly copy + temporary character with non constant size. + +2006-04-03 Paul Thomas + + PR fortran/26891 + * trans.h : Prototype for gfc_conv_missing_dummy. + * trans-expr (gfc_conv_missing_dummy): New function + (gfc_conv_function_call): Call it and tidy up some of the code. + * trans-intrinsic (gfc_conv_intrinsic_function_args): The same. + + PR fortran/26976 + * array.c (gfc_array_dimen_size): If available, return shape[dimen]. + * resolve.c (resolve_function): If available, use the argument shape for the + function expression. + * iresolve.c (gfc_resolve_transfer): Set shape[0] = size. + +2006-04-02 Erik Edelmann + + * trans-array.c (gfc_trans_dealloc_allocated): Take a + tree representation of the array to be deallocated as argument + instead of its gfc_symbol. + (gfc_trans_deferred_array): Update call to + gfc_trans_dealloc_allocated. + * trans-array.h (gfc_trans_dealloc_allocated): Update + prototype. + * trans-expr.c (gfc_conv_function_call): Update call to + gfc_trans_dealloc_allocated, get indirect reference to dummy + arguments. + +2006-04-01 Roger Sayle + + PR fortran/25270 + * trans-array.c (gfc_trans_allocate_array_storage): In array index + calculations use gfc_index_zero_node and gfc_index_one_node instead + of integer_zero_node and integer_one_node respectively. + (gfc_conv_array_transpose): Likewise. + (gfc_conv_ss_startstride): Likewise. + (gfc_trans_dummy_array_bias): Likewise. + +2006-04-01 Roger Sayle + + * dependency.c (gfc_is_inside_range): Delete. + (gfc_check_element_vs_section): Significant rewrite. + +2006-04-01 Roger Sayle + + * dependency.c (gfc_dep_compare_expr): Strip parentheses and unary + plus operators when comparing expressions. Handle comparisons of + the form "X+C vs. X", "X vs. X+C", "X-C vs. X" and "X vs. X-C" where + C is an integer constant. Handle comparisons of the form "P+Q vs. + R+S" and "P-Q vs. R-S". Handle comparisons of integral extensions + specially (increasing functions) so extend(A) > extend(B), when A>B. + (gfc_check_element_vs_element): Move test later, so that we ignore + the fact that "A < B" or "A > B" when A or B contains a forall index. + +2006-03-31 Asher Langton + + PR fortran/25358 + *expr.c (gfc_check_assign): Allow cray pointee to be assumes-size. + +2006-03-30 Paul Thomas + Bud Davis + + PR 21130 + * module.c (load_needed): Traverse entire tree before returning. + +2006-03-30 Roger Sayle + + PR middle-end/22375 + * trans.c (gfc_trans_runtime_check): Promote the arguments of + __builtin_expect to the correct types, and the result back to + boolean_type_node. + +2006-03-29 Carlos O'Donell + + * Make-lang.in: Rename docdir to gcc_docdir. + +2006-03-28 Steven G. Kargl + + * intrinsic.texi: s/floor/float in previous commit. + +2006-03-28 Paul Thomas + + PR fortran/26779 + *resolve.c (resolve_fl_procedure): Do not check the access of + derived types for internal procedures. + +2006-03-27 Jakub Jelinek + + * io.c (check_io_constraints): Don't look at + dt->advance->value.charater.string, unless it is a CHARACTER + constant. + + * f95-lang.c (gfc_get_alias_set): New function. + (LANG_HOOKS_GET_ALIAS_SET): Define. + +2006-03-25 Steven G. Kargl + + PR fortran/26816 + * intrinsic.c (add_functions): Allow FLOAT to accept all integer kinds. + * intrinsic.texi: Document FLOAT. + +2006-03-25 Thomas Koenig + + PR fortran/26769 + * iresolve.c (gfc_resolve_reshape): Remove doubling of + kind for complex. For real(kind=10), call reshape_r10. + (gfc_resolve_transpose): For real(kind=10), call + transpose_r10. + +2006-03-25 Roger Sayle + + * dependency.c (gfc_check_dependency): Improve handling of pointers; + Two variables of different types can't have a dependency, and two + variables with the same symbol are equal, even if pointers. + +2006-03-24 Roger Sayle + + * gfortran.h (gfc_symbol): Add a new "forall_index" bit field. + * match.c (match_forall_iterator): Set forall_index field on + the iteration variable's symbol. + * dependency.c (contains_forall_index_p): New function to + traverse a gfc_expr to check whether it contains a variable + with forall_index set in it's symbol. + (gfc_check_element_vs_element): Return GFC_DEP_EQUAL for scalar + constant expressions that don't variables used as FORALL indices. + +2006-03-22 Volker Reichelt + + PR driver/22600 + * error.c (gfc_fatal_error): Return ICE_EXIT_CODE instead of 4. + +2006-03-22 Thomas Koenig + + PR fortran/19303 + * gfortran.h (gfc_option_t): Add record_marker. + * lang.opt: Add -frecord-marker=4 and -frecord-marker=8. + * trans-decl.c: Add gfor_fndecl_set_record_marker. + (gfc_build_builtin_function_decls): Set + gfor_fndecl_set_record_marker. + (gfc_generate_function_code): If we are in the main program + and -frecord-marker was provided, call set_record_marker. + * options.c (gfc_handle_option): Add handling for + -frecord-marker=4 and -frecord-marker=8. + * invoke.texi: Document -frecord-marker. + +2006-03-22 Paul Thomas + + PR fortran/17298 + * trans-intrinsic.c (gfc_conv_intrinsic_array_transfer): New + function to implement array valued TRANSFER intrinsic. + (gfc_conv_intrinsic_function): Call the new function if TRANSFER + and non-null se->ss. + (gfc_walk_intrinsic_function): Treat TRANSFER as one of the + special cases by calling gfc_walk_intrinsic_libfunc directly. + +2006-03-21 Toon Moene + + * options.c (gfc_init_options): Initialize + flag_argument_noalias to 3. + +2006-03-20 Thomas Koenig + + PR fortran/20935 + * iresolve.c (gfc_resolve_maxloc): If mask is scalar, + prefix the function name with an "s". If the mask is scalar + or if its kind is smaller than gfc_default_logical_kind, + coerce it to default kind. + (gfc_resolve_maxval): Likewise. + (gfc_resolve_minloc): Likewise. + (gfc_resolve_minval): Likewise. + (gfc_resolve_product): Likewise. + (gfc_resolve_sum): Likewise. + +2006-03-19 Paul Thomas + + PR fortran/26741 + *expr.c (external_spec_function): Permit elemental functions. + + PR fortran/26716 + *interface.c (compare_actual_formal): Detect call for procedure + usage and require rank checking, in this case, for assumed shape + and deferred shape arrays. + (gfc_procedure_use): Revert to pre-PR25070 call to + compare_actual_formal that does not require rank checking.. + +2006-03-16 Roger Sayle + + * gfortran.h (gfc_equiv_info): Add length field. + * trans-common.c (copy_equiv_list_to_ns): Set the length field. + * dependency.c (gfc_are_equivalenced_arrays): Use both the offset + and length fields to determine whether the two equivalenced symbols + overlap in memory. + 2006-03-14 Jerry DeLisle PR fortran/19101 diff --git a/gcc/fortran/Make-lang.in b/gcc/fortran/Make-lang.in index a85926a065a..e9480bb840e 100644 --- a/gcc/fortran/Make-lang.in +++ b/gcc/fortran/Make-lang.in @@ -165,7 +165,7 @@ doc/gfortran.dvi: $(GFORTRAN_TEXI) $(htmldir)/gfortran/index.html: $(GFORTRAN_TEXI) $(mkinstalldirs) $(@D) rm -f $(@D)/* - $(TEXI2HTML) -I $(docdir)/include -I $(srcdir)/fortran -o $(@D) $< + $(TEXI2HTML) -I $(gcc_docdir)/include -I $(srcdir)/fortran -o $(@D) $< .INTERMEDIATE: gfortran.pod diff --git a/gcc/fortran/array.c b/gcc/fortran/array.c index 9491406d97e..2cb34994562 100644 --- a/gcc/fortran/array.c +++ b/gcc/fortran/array.c @@ -1872,6 +1872,12 @@ gfc_array_dimen_size (gfc_expr * array, int dimen, mpz_t * result) } } + if (array->shape && array->shape[dimen]) + { + mpz_init_set (*result, array->shape[dimen]); + return SUCCESS; + } + if (spec_dimen_size (array->symtree->n.sym->as, dimen, result) == FAILURE) return FAILURE; diff --git a/gcc/fortran/dependency.c b/gcc/fortran/dependency.c index d60b7ebbceb..f664ec0d0f8 100644 --- a/gcc/fortran/dependency.c +++ b/gcc/fortran/dependency.c @@ -72,8 +72,112 @@ gfc_expr_is_one (gfc_expr * expr, int def) int gfc_dep_compare_expr (gfc_expr * e1, gfc_expr * e2) { + gfc_actual_arglist *args1; + gfc_actual_arglist *args2; int i; + if (e1->expr_type == EXPR_OP + && (e1->value.op.operator == INTRINSIC_UPLUS + || e1->value.op.operator == INTRINSIC_PARENTHESES)) + return gfc_dep_compare_expr (e1->value.op.op1, e2); + if (e2->expr_type == EXPR_OP + && (e2->value.op.operator == INTRINSIC_UPLUS + || e2->value.op.operator == INTRINSIC_PARENTHESES)) + return gfc_dep_compare_expr (e1, e2->value.op.op1); + + if (e1->expr_type == EXPR_OP + && e1->value.op.operator == INTRINSIC_PLUS) + { + /* Compare X+C vs. X. */ + if (e1->value.op.op2->expr_type == EXPR_CONSTANT + && e1->value.op.op2->ts.type == BT_INTEGER + && gfc_dep_compare_expr (e1->value.op.op1, e2) == 0) + return mpz_sgn (e1->value.op.op2->value.integer); + + /* Compare P+Q vs. R+S. */ + if (e2->expr_type == EXPR_OP + && e2->value.op.operator == INTRINSIC_PLUS) + { + int l, r; + + l = gfc_dep_compare_expr (e1->value.op.op1, e2->value.op.op1); + r = gfc_dep_compare_expr (e1->value.op.op2, e2->value.op.op2); + if (l == 0 && r == 0) + return 0; + if (l == 0 && r != -2) + return r; + if (l != -2 && r == 0) + return l; + if (l == 1 && r == 1) + return 1; + if (l == -1 && r == -1) + return -1; + + l = gfc_dep_compare_expr (e1->value.op.op1, e2->value.op.op2); + r = gfc_dep_compare_expr (e1->value.op.op2, e2->value.op.op1); + if (l == 0 && r == 0) + return 0; + if (l == 0 && r != -2) + return r; + if (l != -2 && r == 0) + return l; + if (l == 1 && r == 1) + return 1; + if (l == -1 && r == -1) + return -1; + } + } + + /* Compare X vs. X+C. */ + if (e2->expr_type == EXPR_OP + && e2->value.op.operator == INTRINSIC_PLUS) + { + if (e2->value.op.op2->expr_type == EXPR_CONSTANT + && e2->value.op.op2->ts.type == BT_INTEGER + && gfc_dep_compare_expr (e1, e2->value.op.op1) == 0) + return -mpz_sgn (e2->value.op.op2->value.integer); + } + + /* Compare X-C vs. X. */ + if (e1->expr_type == EXPR_OP + && e1->value.op.operator == INTRINSIC_MINUS) + { + if (e1->value.op.op2->expr_type == EXPR_CONSTANT + && e1->value.op.op2->ts.type == BT_INTEGER + && gfc_dep_compare_expr (e1->value.op.op1, e2) == 0) + return -mpz_sgn (e1->value.op.op2->value.integer); + + /* Compare P-Q vs. R-S. */ + if (e2->expr_type == EXPR_OP + && e2->value.op.operator == INTRINSIC_MINUS) + { + int l, r; + + l = gfc_dep_compare_expr (e1->value.op.op1, e2->value.op.op1); + r = gfc_dep_compare_expr (e1->value.op.op2, e2->value.op.op2); + if (l == 0 && r == 0) + return 0; + if (l != -2 && r == 0) + return l; + if (l == 0 && r != -2) + return -r; + if (l == 1 && r == -1) + return 1; + if (l == -1 && r == 1) + return -1; + } + } + + /* Compare X vs. X-C. */ + if (e2->expr_type == EXPR_OP + && e2->value.op.operator == INTRINSIC_MINUS) + { + if (e2->value.op.op2->expr_type == EXPR_CONSTANT + && e2->value.op.op2->ts.type == BT_INTEGER + && gfc_dep_compare_expr (e1, e2->value.op.op1) == 0) + return mpz_sgn (e2->value.op.op2->value.integer); + } + if (e1->expr_type != e2->expr_type) return -2; @@ -119,12 +223,29 @@ gfc_dep_compare_expr (gfc_expr * e1, gfc_expr * e2) || e1->value.function.isym != e2->value.function.isym) return -2; + args1 = e1->value.function.actual; + args2 = e2->value.function.actual; + /* We should list the "constant" intrinsic functions. Those without side-effects that provide equal results given equal argument lists. */ switch (e1->value.function.isym->generic_id) { case GFC_ISYM_CONVERSION: + /* Handle integer extensions specially, as __convert_i4_i8 + is not only "constant" but also "unary" and "increasing". */ + if (args1 && !args1->next + && args2 && !args2->next + && e1->ts.type == BT_INTEGER + && args1->expr->ts.type == BT_INTEGER + && e1->ts.kind > args1->expr->ts.kind + && e2->ts.type == e1->ts.type + && e2->ts.kind == e1->ts.kind + && args2->expr->ts.type == args1->expr->ts.type + && args2->expr->ts.kind == args2->expr->ts.kind) + return gfc_dep_compare_expr (args1->expr, args2->expr); + break; + case GFC_ISYM_REAL: case GFC_ISYM_LOGICAL: case GFC_ISYM_DBLE: @@ -135,18 +256,14 @@ gfc_dep_compare_expr (gfc_expr * e1, gfc_expr * e2) } /* Compare the argument lists for equality. */ - { - gfc_actual_arglist *args1 = e1->value.function.actual; - gfc_actual_arglist *args2 = e2->value.function.actual; - while (args1 && args2) - { - if (gfc_dep_compare_expr (args1->expr, args2->expr) != 0) - return -2; - args1 = args1->next; - args2 = args2->next; - } - return (args1 || args2) ? -2 : 0; - } + while (args1 && args2) + { + if (gfc_dep_compare_expr (args1->expr, args2->expr) != 0) + return -2; + args1 = args1->next; + args2 = args2->next; + } + return (args1 || args2) ? -2 : 0; default: return -2; @@ -414,10 +531,13 @@ gfc_check_fncall_dependency (gfc_expr * other, sym_intent intent, directly or indirectly; ie. equivalence (a,b) for a and b or equivalence (a,c),(b,c). This function uses the equiv_ lists, generated in trans-common(add_equivalences), that are - guaranteed to pick up indirect equivalences. A rudimentary - use is made of the offset to ensure that cases where the - source elements are moved down to the destination are not - identified as dependencies. */ + guaranteed to pick up indirect equivalences. We explicitly + check for overlap using the offset and length of the equivalence. + This function is symmetric. + TODO: This function only checks whether the full top-level + symbols overlap. An improved implementation could inspect + e1->ref and e2->ref to determine whether the actually accessed + portions of these variables/arrays potentially overlap. */ int gfc_are_equivalenced_arrays (gfc_expr *e1, gfc_expr *e2) @@ -444,14 +564,33 @@ gfc_are_equivalenced_arrays (gfc_expr *e1, gfc_expr *e2) for (s = l->equiv; s; s = s->next) { if (s->sym == e1->symtree->n.sym) - fl1 = s; + { + fl1 = s; + if (fl2) + break; + } if (s->sym == e2->symtree->n.sym) - fl2 = s; - if (fl1 && fl2 && (fl1->offset > fl2->offset)) + { + fl2 = s; + if (fl1) + break; + } + } + + if (s) + { + /* Can these lengths be zero? */ + if (fl1->length <= 0 || fl2->length <= 0) + return 1; + /* These can't overlap if [f11,fl1+length] is before + [fl2,fl2+length], or [fl2,fl2+length] is before + [fl1,fl1+length], otherwise they do overlap. */ + if (fl1->offset + fl1->length > fl2->offset + && fl2->offset + fl2->length > fl1->offset) return 1; } } -return 0; + return 0; } @@ -472,15 +611,6 @@ gfc_check_dependency (gfc_expr * expr1, gfc_expr * expr2, bool identical) gcc_assert (expr1->expr_type == EXPR_VARIABLE); - /* TODO: -fassume-no-pointer-aliasing */ - if (expr1->symtree->n.sym->attr.pointer) - return 1; - for (ref = expr1->ref; ref; ref = ref->next) - { - if (ref->type == REF_COMPONENT && ref->u.c.component->pointer) - return 1; - } - switch (expr2->expr_type) { case EXPR_OP: @@ -492,21 +622,44 @@ gfc_check_dependency (gfc_expr * expr1, gfc_expr * expr2, bool identical) return 0; case EXPR_VARIABLE: - if (expr2->symtree->n.sym->attr.pointer) - return 1; - - for (ref = expr2->ref; ref; ref = ref->next) + /* The interesting cases are when the symbols don't match. */ + if (expr1->symtree->n.sym != expr2->symtree->n.sym) { - if (ref->type == REF_COMPONENT && ref->u.c.component->pointer) + gfc_typespec *ts1 = &expr1->symtree->n.sym->ts; + gfc_typespec *ts2 = &expr2->symtree->n.sym->ts; + + /* Return 1 if expr1 and expr2 are equivalenced arrays. */ + if (gfc_are_equivalenced_arrays (expr1, expr2)) return 1; - } - /* Return 1 if expr1 and expr2 are equivalenced arrays. */ - if (gfc_are_equivalenced_arrays (expr1, expr2)) - return 1; + /* Symbols can only alias if they have the same type. */ + if (ts1->type != BT_UNKNOWN + && ts2->type != BT_UNKNOWN + && ts1->type != BT_DERIVED + && ts2->type != BT_DERIVED) + { + if (ts1->type != ts2->type + || ts1->kind != ts2->kind) + return 0; + } - if (expr1->symtree->n.sym != expr2->symtree->n.sym) - return 0; + /* If either variable is a pointer, assume the worst. */ + /* TODO: -fassume-no-pointer-aliasing */ + if (expr1->symtree->n.sym->attr.pointer) + return 1; + for (ref = expr1->ref; ref; ref = ref->next) + if (ref->type == REF_COMPONENT && ref->u.c.component->pointer) + return 1; + + if (expr2->symtree->n.sym->attr.pointer) + return 1; + for (ref = expr2->ref; ref; ref = ref->next) + if (ref->type == REF_COMPONENT && ref->u.c.component->pointer) + return 1; + + /* Otherwise distinct symbols have no dependencies. */ + return 0; + } if (identical) return 1; @@ -705,72 +858,205 @@ gfc_check_section_vs_section (gfc_ref * lref, gfc_ref * rref, int n) } -/* Checks if the expr chk is inside the range left-right. - Returns GFC_DEP_NODEP if chk is outside the range, - GFC_DEP_OVERLAP otherwise. - Assumes left<=right. */ +/* Determines overlapping for a single element and a section. */ static gfc_dependency -gfc_is_inside_range (gfc_expr * chk, gfc_expr * left, gfc_expr * right) +gfc_check_element_vs_section( gfc_ref * lref, gfc_ref * rref, int n) { - int l; - int r; + gfc_array_ref *ref; + gfc_expr *elem; + gfc_expr *start; + gfc_expr *end; + gfc_expr *stride; int s; - s = gfc_dep_compare_expr (left, right); - if (s == -2) + elem = lref->u.ar.start[n]; + if (!elem) return GFC_DEP_OVERLAP; - l = gfc_dep_compare_expr (chk, left); - r = gfc_dep_compare_expr (chk, right); + ref = &rref->u.ar; + start = ref->start[n] ; + end = ref->end[n] ; + stride = ref->stride[n]; + + if (!start && IS_ARRAY_EXPLICIT (ref->as)) + start = ref->as->lower[n]; + if (!end && IS_ARRAY_EXPLICIT (ref->as)) + end = ref->as->upper[n]; + + /* Determine whether the stride is positive or negative. */ + if (!stride) + s = 1; + else if (stride->expr_type == EXPR_CONSTANT + && stride->ts.type == BT_INTEGER) + s = mpz_sgn (stride->value.integer); + else + s = -2; - /* Check for indeterminate relationships. */ - if (l == -2 || r == -2 || s == -2) + /* Stride should never be zero. */ + if (s == 0) return GFC_DEP_OVERLAP; + /* Positive strides. */ if (s == 1) { - /* When left>right we want to check for right <= chk <= left. */ - if (l <= 0 || r >= 0) - return GFC_DEP_OVERLAP; + /* Check for elem < lower. */ + if (start && gfc_dep_compare_expr (elem, start) == -1) + return GFC_DEP_NODEP; + /* Check for elem > upper. */ + if (end && gfc_dep_compare_expr (elem, end) == 1) + return GFC_DEP_NODEP; + + if (start && end) + { + s = gfc_dep_compare_expr (start, end); + /* Check for an empty range. */ + if (s == 1) + return GFC_DEP_NODEP; + if (s == 0 && gfc_dep_compare_expr (elem, start) == 0) + return GFC_DEP_EQUAL; + } } + /* Negative strides. */ + else if (s == -1) + { + /* Check for elem > upper. */ + if (end && gfc_dep_compare_expr (elem, start) == 1) + return GFC_DEP_NODEP; + /* Check for elem < lower. */ + if (start && gfc_dep_compare_expr (elem, end) == -1) + return GFC_DEP_NODEP; + + if (start && end) + { + s = gfc_dep_compare_expr (start, end); + /* Check for an empty range. */ + if (s == -1) + return GFC_DEP_NODEP; + if (s == 0 && gfc_dep_compare_expr (elem, start) == 0) + return GFC_DEP_EQUAL; + } + } + /* Unknown strides. */ else { - /* Otherwise check for left <= chk <= right. */ - if (l >= 0 || r <= 0) + if (!start || !end) return GFC_DEP_OVERLAP; + s = gfc_dep_compare_expr (start, end); + if (s == -2) + return GFC_DEP_OVERLAP; + /* Assume positive stride. */ + if (s == -1) + { + /* Check for elem < lower. */ + if (gfc_dep_compare_expr (elem, start) == -1) + return GFC_DEP_NODEP; + /* Check for elem > upper. */ + if (gfc_dep_compare_expr (elem, end) == 1) + return GFC_DEP_NODEP; + } + /* Assume negative stride. */ + else if (s == 1) + { + /* Check for elem > upper. */ + if (gfc_dep_compare_expr (elem, start) == 1) + return GFC_DEP_NODEP; + /* Check for elem < lower. */ + if (gfc_dep_compare_expr (elem, end) == -1) + return GFC_DEP_NODEP; + } + /* Equal bounds. */ + else if (s == 0) + { + s = gfc_dep_compare_expr (elem, start); + if (s == 0) + return GFC_DEP_EQUAL; + if (s == 1 || s == -1) + return GFC_DEP_NODEP; + } } - - return GFC_DEP_NODEP; + + return GFC_DEP_OVERLAP; } -/* Determines overlapping for a single element and a section. */ +/* Traverse expr, checking all EXPR_VARIABLE symbols for their + forall_index attribute. Return true if any variable may be + being used as a FORALL index. Its safe to pessimistically + return true, and assume a dependency. */ -static gfc_dependency -gfc_check_element_vs_section( gfc_ref * lref, gfc_ref * rref, int n) +static bool +contains_forall_index_p (gfc_expr * expr) { - gfc_array_ref l_ar; - gfc_array_ref r_ar; - gfc_expr *l_start; - gfc_expr *r_start; - gfc_expr *r_end; + gfc_actual_arglist *arg; + gfc_constructor *c; + gfc_ref *ref; + int i; - l_ar = lref->u.ar; - r_ar = rref->u.ar; - l_start = l_ar.start[n] ; - r_start = r_ar.start[n] ; - r_end = r_ar.end[n] ; - if (NULL == r_start && IS_ARRAY_EXPLICIT (r_ar.as)) - r_start = r_ar.as->lower[n]; - if (NULL == r_end && IS_ARRAY_EXPLICIT (r_ar.as)) - r_end = r_ar.as->upper[n]; - if (NULL == r_start || NULL == r_end || l_start == NULL) - return GFC_DEP_OVERLAP; + if (!expr) + return false; - return gfc_is_inside_range (l_start, r_end, r_start); -} + switch (expr->expr_type) + { + case EXPR_VARIABLE: + if (expr->symtree->n.sym->forall_index) + return true; + break; + + case EXPR_OP: + if (contains_forall_index_p (expr->value.op.op1) + || contains_forall_index_p (expr->value.op.op2)) + return true; + break; + + case EXPR_FUNCTION: + for (arg = expr->value.function.actual; arg; arg = arg->next) + if (contains_forall_index_p (arg->expr)) + return true; + break; + + case EXPR_CONSTANT: + case EXPR_NULL: + case EXPR_SUBSTRING: + break; + + case EXPR_STRUCTURE: + case EXPR_ARRAY: + for (c = expr->value.constructor; c; c = c->next) + if (contains_forall_index_p (c->expr)) + return true; + break; + + default: + gcc_unreachable (); + } + + for (ref = expr->ref; ref; ref = ref->next) + switch (ref->type) + { + case REF_ARRAY: + for (i = 0; i < ref->u.ar.dimen; i++) + if (contains_forall_index_p (ref->u.ar.start[i]) + || contains_forall_index_p (ref->u.ar.end[i]) + || contains_forall_index_p (ref->u.ar.stride[i])) + return true; + break; + + case REF_COMPONENT: + break; + + case REF_SUBSTRING: + if (contains_forall_index_p (ref->u.ss.start) + || contains_forall_index_p (ref->u.ss.end)) + return true; + break; + + default: + gcc_unreachable (); + } + return false; +} /* Determines overlapping for two single element array references. */ @@ -790,9 +1076,23 @@ gfc_check_element_vs_element (gfc_ref * lref, gfc_ref * rref, int n) i = gfc_dep_compare_expr (r_start, l_start); if (i == 0) return GFC_DEP_EQUAL; - if (i == -2) + + /* Treat two scalar variables as potentially equal. This allows + us to prove that a(i,:) and a(j,:) have no dependency. See + Gerald Roth, "Evaluation of Array Syntax Dependence Analysis", + Proceedings of the International Conference on Parallel and + Distributed Processing Techniques and Applications (PDPTA2001), + Las Vegas, Nevada, June 2001. */ + /* However, we need to be careful when either scalar expression + contains a FORALL index, as these can potentially change value + during the scalarization/traversal of this array reference. */ + if (contains_forall_index_p (r_start) + || contains_forall_index_p (l_start)) return GFC_DEP_OVERLAP; - return GFC_DEP_NODEP; + + if (i != -2) + return GFC_DEP_NODEP; + return GFC_DEP_EQUAL; } diff --git a/gcc/fortran/error.c b/gcc/fortran/error.c index 4c82c4a5498..435fc16a36f 100644 --- a/gcc/fortran/error.c +++ b/gcc/fortran/error.c @@ -677,7 +677,7 @@ gfc_internal_error (const char *format, ...) error_print ("", format, argp); va_end (argp); - exit (4); + exit (ICE_EXIT_CODE); } diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index 6db1c6bad7c..dfbbed24563 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -1636,7 +1636,7 @@ external_spec_function (gfc_expr * e) return FAILURE; } - if (!f->attr.pure) + if (!f->attr.pure && !f->attr.elemental) { gfc_error ("Specification function '%s' at %L must be PURE", f->name, &e->where); @@ -1894,7 +1894,7 @@ gfc_check_assign (gfc_expr * lvalue, gfc_expr * rvalue, int conform) if (sym->attr.cray_pointee && lvalue->ref != NULL - && lvalue->ref->u.ar.type != AR_ELEMENT + && lvalue->ref->u.ar.type == AR_FULL && lvalue->ref->u.ar.as->cp_was_assumed) { gfc_error ("Vector assignment to assumed-size Cray Pointee at %L" diff --git a/gcc/fortran/f95-lang.c b/gcc/fortran/f95-lang.c index 6722117dd1b..72579246515 100644 --- a/gcc/fortran/f95-lang.c +++ b/gcc/fortran/f95-lang.c @@ -99,6 +99,7 @@ void insert_block (tree); static void gfc_clear_binding_stack (void); static void gfc_be_parse_file (int); static void gfc_expand_function (tree); +static HOST_WIDE_INT gfc_get_alias_set (tree); #undef LANG_HOOKS_NAME #undef LANG_HOOKS_INIT @@ -116,6 +117,7 @@ static void gfc_expand_function (tree); #undef LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE #undef LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION #undef LANG_HOOKS_CLEAR_BINDING_STACK +#undef LANG_HOOKS_GET_ALIAS_SET #undef LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE #undef LANG_HOOKS_OMP_PREDETERMINED_SHARING #undef LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR @@ -139,6 +141,7 @@ static void gfc_expand_function (tree); #define LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE gfc_signed_or_unsigned_type #define LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION gfc_expand_function #define LANG_HOOKS_CLEAR_BINDING_STACK gfc_clear_binding_stack +#define LANG_HOOKS_GET_ALIAS_SET gfc_get_alias_set #define LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE gfc_omp_privatize_by_reference #define LANG_HOOKS_OMP_PREDETERMINED_SHARING gfc_omp_predetermined_sharing #define LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR gfc_omp_disregard_value_expr @@ -694,6 +697,24 @@ gfc_mark_addressable (tree exp) } } +/* Return the typed-based alias set for T, which may be an expression + or a type. Return -1 if we don't do anything special. */ + +static HOST_WIDE_INT +gfc_get_alias_set (tree t) +{ + tree u; + + /* Permit type-punning when accessing an EQUIVALENCEd variable or + mixed type entry master's return value. */ + for (u = t; handled_component_p (u); u = TREE_OPERAND (u, 0)) + if (TREE_CODE (u) == COMPONENT_REF + && TREE_CODE (TREE_TYPE (TREE_OPERAND (u, 0))) == UNION_TYPE) + return 0; + + return -1; +} + /* press the big red button - garbage (ggc) collection is on */ int ggc_p = 1; diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index f611e9e66f7..89098bdea71 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -851,6 +851,8 @@ typedef struct gfc_symbol /* Nonzero if all equivalences associated with this symbol have been processed. */ unsigned equiv_built:1; + /* Set if this variable is used as an index name in a FORALL. */ + unsigned forall_index:1; int refs; struct gfc_namespace *ns; /* namespace containing this symbol */ @@ -1351,6 +1353,7 @@ typedef struct gfc_equiv_info { gfc_symbol *sym; HOST_WIDE_INT offset; + HOST_WIDE_INT length; struct gfc_equiv_info *next; } gfc_equiv_info; @@ -1639,6 +1642,7 @@ typedef struct int warn_nonstd_intrinsics; int fshort_enums; int convert; + int record_marker; } gfc_option_t; diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index f4e522aadd9..060da056ade 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -1178,6 +1178,7 @@ compare_actual_formal (gfc_actual_arglist ** ap, gfc_actual_arglist **new, *a, *actual, temp; gfc_formal_arglist *f; int i, n, na; + bool rank_check; actual = *ap; @@ -1260,11 +1261,14 @@ compare_actual_formal (gfc_actual_arglist ** ap, return 0; } + rank_check = where != NULL + && !is_elemental + && f->sym->as + && (f->sym->as->type == AS_ASSUMED_SHAPE + || f->sym->as->type == AS_DEFERRED); + if (!compare_parameter - (f->sym, a->expr, - ranks_must_agree && f->sym->as - && f->sym->as->type == AS_ASSUMED_SHAPE, - is_elemental)) + (f->sym, a->expr, ranks_must_agree || rank_check, is_elemental)) { if (where) gfc_error ("Type/rank mismatch in argument '%s' at %L", @@ -1595,9 +1599,6 @@ check_intents (gfc_formal_arglist * f, gfc_actual_arglist * a) void gfc_procedure_use (gfc_symbol * sym, gfc_actual_arglist ** ap, locus * where) { - int ranks_must_agree; - ranks_must_agree = !sym->attr.elemental && (sym->attr.contained - || sym->attr.if_source == IFSRC_IFBODY); /* Warn about calls with an implicit interface. */ if (gfc_option.warn_implicit_interface @@ -1606,7 +1607,7 @@ gfc_procedure_use (gfc_symbol * sym, gfc_actual_arglist ** ap, locus * where) sym->name, where); if (sym->attr.if_source == IFSRC_UNKNOWN - || !compare_actual_formal (ap, sym->formal, ranks_must_agree, + || !compare_actual_formal (ap, sym->formal, 0, sym->attr.elemental, where)) return; diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c index 9aa744bb039..54990c9d061 100644 --- a/gcc/fortran/intrinsic.c +++ b/gcc/fortran/intrinsic.c @@ -1899,7 +1899,7 @@ add_functions (void) a, BT_UNKNOWN, dr, REQUIRED); add_sym_1 ("float", 1, 0, BT_REAL, dr, GFC_STD_F77, - NULL, gfc_simplify_float, NULL, + gfc_check_i, gfc_simplify_float, NULL, a, BT_INTEGER, di, REQUIRED); add_sym_1 ("sngl", 1, 0, BT_REAL, dr, GFC_STD_F77, diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi index 0f62aea4548..cd004d40e41 100644 --- a/gcc/fortran/intrinsic.texi +++ b/gcc/fortran/intrinsic.texi @@ -88,6 +88,7 @@ and editing. All contributions and corrections are strongly encouraged. * @code{EXP}: EXP, Exponential function * @code{EXPONENT}: EXPONENT, Exponent function * @code{FDATE}: FDATE, Subroutine (or function) to get the current time as a string +* @code{FLOAT}: FLOAT, Convert integer to default real * @code{FLOOR}: FLOOR, Integer floor function * @code{FNUM}: FNUM, File number function * @code{FREE}: FREE, Memory de-allocation subroutine @@ -2841,6 +2842,41 @@ end program test_fdate @end smallexample @end table +@node FLOAT +@section @code{FLOAT} --- Convert integer to default real +@findex @code{FLOAT} intrinsic +@cindex float + +@table @asis +@item @emph{Description}: +@code{FLOAT(I)} converts the integer @var{I} to a default real value. + +@item @emph{Option}: +gnu + +@item @emph{Class}: +function + +@item @emph{Syntax}: +@code{X = FLOAT(I)} + +@item @emph{Arguments}: +@multitable @columnfractions .15 .80 +@item @var{I} @tab The type shall be @code{INTEGER(*)}. +@end multitable + +@item @emph{Return value}: +The return value is of type default @code{REAL} + +@item @emph{Example}: +@smallexample +program test_float + integer :: i = 1 + if (float(i) /= 1.) call abort +end program test_float +@end smallexample +@end table + @node FLOOR @section @code{FLOOR} --- Integer floor function diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi index 627d7782fcb..e95b32b70ac 100644 --- a/gcc/fortran/invoke.texi +++ b/gcc/fortran/invoke.texi @@ -145,7 +145,7 @@ by type. Explanations are in the following sections. @item Runtime Options @xref{Runtime Options,,Options for influencing runtime behavior}. @gccoptlist{ --fconvert=@var{conversion}} +-fconvert=@var{conversion} -frecord-marker=@var{length}} @item Code Generation Options @xref{Code Gen Options,,Options for Code Generation Conventions}. @@ -613,6 +613,17 @@ representation for unformatted files. @emph{This option has an effect only when used in the main program. The @code{CONVERT} specifier and the GFORTRAN_CONVERT_UNIT environment variable override the default specified by -fconvert.} + +@cindex -frecord-marker=@var{length} +@item -frecord-marker=@var{length} +Specify the length of record markers for unformatted files. +Valid values for @var{length} are 4 and 8. Default is whatever +@code{off_t} is specified to be on that particular system. +Note that specifying @var{length} as 4 limits the record +length of unformatted files to 2 GB. This option does not +extend the maximum possible record length on systems where +@code{off_t} is a four_byte quantity. + @end table @node Code Gen Options diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c index b45e983a045..30344d90e74 100644 --- a/gcc/fortran/io.c +++ b/gcc/fortran/io.c @@ -2317,30 +2317,34 @@ if (condition) \ if (dt->advance) { - const char * advance; int not_yes, not_no; expr = dt->advance; - advance = expr->value.character.string; io_constraint (dt->format_label == &format_asterisk, "List directed format(*) is not allowed with a " "ADVANCE=specifier at %L.", &expr->where); - not_no = strncasecmp (advance, "no", 2) != 0; - not_yes = strncasecmp (advance, "yes", 2) != 0; + if (expr->expr_type == EXPR_CONSTANT && expr->ts.type == BT_CHARACTER) + { + const char * advance = expr->value.character.string; + not_no = strncasecmp (advance, "no", 2) != 0; + not_yes = strncasecmp (advance, "yes", 2) != 0; + } + else + { + not_no = 0; + not_yes = 0; + } - io_constraint (expr->expr_type == EXPR_CONSTANT - && not_no && not_yes, + io_constraint (not_no && not_yes, "ADVANCE=specifier at %L must have value = " "YES or NO.", &expr->where); - io_constraint (dt->size && expr->expr_type == EXPR_CONSTANT - && not_no && k == M_READ, + io_constraint (dt->size && not_no && k == M_READ, "SIZE tag at %L requires an ADVANCE = 'NO'", &dt->size->where); - io_constraint (dt->eor && expr->expr_type == EXPR_CONSTANT - && not_no && k == M_READ, + io_constraint (dt->eor && not_no && k == M_READ, "EOR tag at %L requires an ADVANCE = 'NO'", &dt->eor_where); } diff --git a/gcc/fortran/iresolve.c b/gcc/fortran/iresolve.c index fd9f5b5c407..f37944f2fc8 100644 --- a/gcc/fortran/iresolve.c +++ b/gcc/fortran/iresolve.c @@ -1093,7 +1093,27 @@ gfc_resolve_maxloc (gfc_expr * f, gfc_expr * array, gfc_expr * dim, gfc_resolve_dim_arg (dim); } - name = mask ? "mmaxloc" : "maxloc"; + if (mask) + { + if (mask->rank == 0) + name = "smaxloc"; + else + name = "mmaxloc"; + + /* The mask can be kind 4 or 8 for the array case. For the + scalar case, coerce it to default kind unconditionally. */ + if ((mask->ts.kind < gfc_default_logical_kind) + || (mask->rank == 0 && mask->ts.kind != gfc_default_logical_kind)) + { + gfc_typespec ts; + ts.type = BT_LOGICAL; + ts.kind = gfc_default_logical_kind; + gfc_convert_type_warn (mask, &ts, 2, 0); + } + } + else + name = "maxloc"; + f->value.function.name = gfc_get_string (PREFIX("%s%d_%d_%c%d"), name, dim != NULL, f->ts.kind, gfc_type_letter (array->ts.type), array->ts.kind); @@ -1104,6 +1124,8 @@ void gfc_resolve_maxval (gfc_expr * f, gfc_expr * array, gfc_expr * dim, gfc_expr * mask) { + const char *name; + f->ts = array->ts; if (dim != NULL) @@ -1112,8 +1134,29 @@ gfc_resolve_maxval (gfc_expr * f, gfc_expr * array, gfc_expr * dim, gfc_resolve_dim_arg (dim); } + if (mask) + { + if (mask->rank == 0) + name = "smaxval"; + else + name = "mmaxval"; + + /* The mask can be kind 4 or 8 for the array case. For the + scalar case, coerce it to default kind unconditionally. */ + if ((mask->ts.kind < gfc_default_logical_kind) + || (mask->rank == 0 && mask->ts.kind != gfc_default_logical_kind)) + { + gfc_typespec ts; + ts.type = BT_LOGICAL; + ts.kind = gfc_default_logical_kind; + gfc_convert_type_warn (mask, &ts, 2, 0); + } + } + else + name = "maxval"; + f->value.function.name = - gfc_get_string (PREFIX("%s_%c%d"), mask ? "mmaxval" : "maxval", + gfc_get_string (PREFIX("%s_%c%d"), name, gfc_type_letter (array->ts.type), array->ts.kind); } @@ -1157,7 +1200,27 @@ gfc_resolve_minloc (gfc_expr * f, gfc_expr * array, gfc_expr * dim, gfc_resolve_dim_arg (dim); } - name = mask ? "mminloc" : "minloc"; + if (mask) + { + if (mask->rank == 0) + name = "sminloc"; + else + name = "mminloc"; + + /* The mask can be kind 4 or 8 for the array case. For the + scalar case, coerce it to default kind unconditionally. */ + if ((mask->ts.kind < gfc_default_logical_kind) + || (mask->rank == 0 && mask->ts.kind != gfc_default_logical_kind)) + { + gfc_typespec ts; + ts.type = BT_LOGICAL; + ts.kind = gfc_default_logical_kind; + gfc_convert_type_warn (mask, &ts, 2, 0); + } + } + else + name = "minloc"; + f->value.function.name = gfc_get_string (PREFIX("%s%d_%d_%c%d"), name, dim != NULL, f->ts.kind, gfc_type_letter (array->ts.type), array->ts.kind); @@ -1168,6 +1231,8 @@ void gfc_resolve_minval (gfc_expr * f, gfc_expr * array, gfc_expr * dim, gfc_expr * mask) { + const char *name; + f->ts = array->ts; if (dim != NULL) @@ -1176,8 +1241,29 @@ gfc_resolve_minval (gfc_expr * f, gfc_expr * array, gfc_expr * dim, gfc_resolve_dim_arg (dim); } + if (mask) + { + if (mask->rank == 0) + name = "sminval"; + else + name = "mminval"; + + /* The mask can be kind 4 or 8 for the array case. For the + scalar case, coerce it to default kind unconditionally. */ + if ((mask->ts.kind < gfc_default_logical_kind) + || (mask->rank == 0 && mask->ts.kind != gfc_default_logical_kind)) + { + gfc_typespec ts; + ts.type = BT_LOGICAL; + ts.kind = gfc_default_logical_kind; + gfc_convert_type_warn (mask, &ts, 2, 0); + } + } + else + name = "minval"; + f->value.function.name = - gfc_get_string (PREFIX("%s_%c%d"), mask ? "mminval" : "minval", + gfc_get_string (PREFIX("%s_%c%d"), name, gfc_type_letter (array->ts.type), array->ts.kind); } @@ -1311,6 +1397,8 @@ void gfc_resolve_product (gfc_expr * f, gfc_expr * array, gfc_expr * dim, gfc_expr * mask) { + const char *name; + f->ts = array->ts; if (dim != NULL) @@ -1319,8 +1407,29 @@ gfc_resolve_product (gfc_expr * f, gfc_expr * array, gfc_expr * dim, gfc_resolve_dim_arg (dim); } + if (mask) + { + if (mask->rank == 0) + name = "sproduct"; + else + name = "mproduct"; + + /* The mask can be kind 4 or 8 for the array case. For the + scalar case, coerce it to default kind unconditionally. */ + if ((mask->ts.kind < gfc_default_logical_kind) + || (mask->rank == 0 && mask->ts.kind != gfc_default_logical_kind)) + { + gfc_typespec ts; + ts.type = BT_LOGICAL; + ts.kind = gfc_default_logical_kind; + gfc_convert_type_warn (mask, &ts, 2, 0); + } + } + else + name = "product"; + f->value.function.name = - gfc_get_string (PREFIX("%s_%c%d"), mask ? "mproduct" : "product", + gfc_get_string (PREFIX("%s_%c%d"), name, gfc_type_letter (array->ts.type), array->ts.kind); } @@ -1390,9 +1499,6 @@ gfc_resolve_reshape (gfc_expr * f, gfc_expr * source, gfc_expr * shape, switch (source->ts.type) { case BT_COMPLEX: - kind = source->ts.kind * 2; - break; - case BT_REAL: case BT_INTEGER: case BT_LOGICAL: @@ -1414,6 +1520,10 @@ gfc_resolve_reshape (gfc_expr * f, gfc_expr * source, gfc_expr * shape, f->value.function.name = gfc_get_string (PREFIX("reshape_%c%d"), gfc_type_letter (BT_COMPLEX), source->ts.kind); + else if (source->ts.type == BT_REAL && kind == 10) + f->value.function.name = + gfc_get_string (PREFIX("reshape_%c%d"), + gfc_type_letter (BT_REAL), source->ts.kind); else f->value.function.name = gfc_get_string (PREFIX("reshape_%d"), source->ts.kind); @@ -1724,8 +1834,31 @@ void gfc_resolve_sum (gfc_expr * f, gfc_expr * array, gfc_expr * dim, gfc_expr * mask) { + const char *name; + f->ts = array->ts; + if (mask) + { + if (mask->rank == 0) + name = "ssum"; + else + name = "msum"; + + /* The mask can be kind 4 or 8 for the array case. For the + scalar case, coerce it to default kind unconditionally. */ + if ((mask->ts.kind < gfc_default_logical_kind) + || (mask->rank == 0 && mask->ts.kind != gfc_default_logical_kind)) + { + gfc_typespec ts; + ts.type = BT_LOGICAL; + ts.kind = gfc_default_logical_kind; + gfc_convert_type_warn (mask, &ts, 2, 0); + } + } + else + name = "sum"; + if (dim != NULL) { f->rank = array->rank - 1; @@ -1733,7 +1866,7 @@ gfc_resolve_sum (gfc_expr * f, gfc_expr * array, gfc_expr * dim, } f->value.function.name = - gfc_get_string (PREFIX("%s_%c%d"), mask ? "msum" : "sum", + gfc_get_string (PREFIX("%s_%c%d"), name, gfc_type_letter (array->ts.type), array->ts.kind); } @@ -1813,6 +1946,11 @@ gfc_resolve_transfer (gfc_expr * f, gfc_expr * source ATTRIBUTE_UNUSED, { f->rank = 1; f->value.function.name = transfer1; + if (size && gfc_is_constant_expr (size)) + { + f->shape = gfc_get_shape (1); + mpz_init_set (f->shape[0], size->value.integer); + } } } @@ -1846,8 +1984,19 @@ gfc_resolve_transpose (gfc_expr * f, gfc_expr * matrix) gfc_get_string (PREFIX("transpose_c%d"), kind); break; - case BT_INTEGER: case BT_REAL: + /* There is no kind=10 integer type. We need to + call the real version. */ + if (kind == 10) + { + f->value.function.name = + gfc_get_string (PREFIX("transpose_r%d"), kind); + break; + } + + /* Fall through */ + + case BT_INTEGER: case BT_LOGICAL: /* Use the integer routines for real and logical cases. This assumes they all have the same alignment requirements. */ diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt index 7f38e109a0a..853653abfeb 100644 --- a/gcc/fortran/lang.opt +++ b/gcc/fortran/lang.opt @@ -233,4 +233,12 @@ fconvert=swap Fortran RejectNegative Swap endianness for unformatted files +frecord-marker=4 +Fortran RejectNegative +Use a 4-byte record marker for unformatted files + +frecord-marker=8 +Fortran RejectNegative +Use an 8-byte record marker for unformatted files + ; This comment is to ensure we retain the blank line above. diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index 4c2fe1b71ce..865781f9f86 100644 --- a/gcc/fortran/match.c +++ b/gcc/fortran/match.c @@ -3370,6 +3370,9 @@ match_forall_iterator (gfc_forall_iterator ** result) goto cleanup; } + /* Mark the iteration variable's symbol as used as a FORALL index. */ + iter->var->symtree->n.sym->forall_index = true; + *result = iter; return MATCH_YES; diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c index 0acc4748003..9949ccd4f2d 100644 --- a/gcc/fortran/module.c +++ b/gcc/fortran/module.c @@ -3061,16 +3061,17 @@ load_needed (pointer_info * p) gfc_namespace *ns; pointer_info *q; gfc_symbol *sym; + int rv; + rv = 0; if (p == NULL) - return 0; - if (load_needed (p->left)) - return 1; - if (load_needed (p->right)) - return 1; + return rv; + + rv |= load_needed (p->left); + rv |= load_needed (p->right); if (p->type != P_SYMBOL || p->u.rsym.state != NEEDED) - return 0; + return rv; p->u.rsym.state = USED; diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c index ddab37ed3ad..18d56c560b0 100644 --- a/gcc/fortran/options.c +++ b/gcc/fortran/options.c @@ -85,7 +85,10 @@ gfc_init_options (unsigned int argc ATTRIBUTE_UNUSED, gfc_option.fpe = 0; - flag_argument_noalias = 2; + /* Argument pointers cannot point to anything + but their argument. */ + flag_argument_noalias = 3; + flag_errno_math = 0; gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F95_DEL @@ -612,6 +615,14 @@ gfc_handle_option (size_t scode, const char *arg, int value) case OPT_fconvert_swap: gfc_option.convert = CONVERT_SWAP; break; + + case OPT_frecord_marker_4: + gfc_option.record_marker = 4; + break; + + case OPT_frecord_marker_8: + gfc_option.record_marker = 8; + break; } return result; diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 548b67ef7c5..4831d799d70 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -1205,6 +1205,7 @@ resolve_function (gfc_expr * expr) const char *name; try t; int temp; + int i; sym = NULL; if (expr->symtree) @@ -1304,6 +1305,12 @@ resolve_function (gfc_expr * expr) if (arg->expr != NULL && arg->expr->rank > 0) { expr->rank = arg->expr->rank; + if (!expr->shape && arg->expr->shape) + { + expr->shape = gfc_get_shape (expr->rank); + for (i = 0; i < expr->rank; i++) + mpz_init_set (expr->shape[i], arg->expr->shape[i]); + } break; } } @@ -4834,9 +4841,13 @@ resolve_fl_procedure (gfc_symbol *sym, int mp_flag) } } - /* Ensure that derived type formal arguments of a public procedure - are not of a private type. */ - if (gfc_check_access(sym->attr.access, sym->ns->default_access)) + /* Ensure that derived type for are not of a private type. Internal + module procedures are excluded by 2.2.3.3 - ie. they are not + externally accessible and can access all the objects accesible in + the host. */ + if (!(sym->ns->parent + && sym->ns->parent->proc_name->attr.flavor == FL_MODULE) + && gfc_check_access(sym->attr.access, sym->ns->default_access)) { for (arg = sym->formal; arg; arg = arg->next) { diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index cba76bf2b29..b354f91e4aa 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -514,7 +514,7 @@ gfc_trans_allocate_array_storage (stmtblock_t * pre, stmtblock_t * post, { /* Make a temporary variable to hold the data. */ tmp = fold_build2 (MINUS_EXPR, TREE_TYPE (nelem), nelem, - integer_one_node); + gfc_index_one_node); tmp = build_range_type (gfc_array_index_type, gfc_index_zero_node, tmp); tmp = build_array_type (gfc_get_element_type (TREE_TYPE (desc)), @@ -726,9 +726,9 @@ gfc_conv_array_transpose (gfc_se * se, gfc_expr * expr) gcc_assert (src_info->dimen == 2); for (n = 0; n < 2; n++) { - dest_info->delta[n] = integer_zero_node; - dest_info->start[n] = integer_zero_node; - dest_info->stride[n] = integer_one_node; + dest_info->delta[n] = gfc_index_zero_node; + dest_info->start[n] = gfc_index_zero_node; + dest_info->stride[n] = gfc_index_one_node; dest_info->dim[n] = n; dest_index = gfc_rank_cst[n]; @@ -2445,7 +2445,7 @@ gfc_conv_ss_startstride (gfc_loopinfo * loop) gfc_start_block (&block); - fault = integer_zero_node; + fault = boolean_false_node; for (n = 0; n < loop->dimen; n++) size[n] = NULL_TREE; @@ -3542,7 +3542,7 @@ gfc_trans_dummy_array_bias (gfc_symbol * sym, tree tmpdesc, tree body) partial = gfc_create_var (boolean_type_node, "partial"); TREE_USED (partial) = 1; tmp = gfc_conv_descriptor_stride (dumdesc, gfc_rank_cst[0]); - tmp = fold_build2 (EQ_EXPR, boolean_type_node, tmp, integer_one_node); + tmp = fold_build2 (EQ_EXPR, boolean_type_node, tmp, gfc_index_one_node); gfc_add_modify_expr (&block, partial, tmp); } else @@ -3558,7 +3558,7 @@ gfc_trans_dummy_array_bias (gfc_symbol * sym, tree tmpdesc, tree body) stride = gfc_conv_descriptor_stride (dumdesc, gfc_rank_cst[0]); stride = gfc_evaluate_now (stride, &block); - tmp = build2 (EQ_EXPR, boolean_type_node, stride, integer_zero_node); + tmp = build2 (EQ_EXPR, boolean_type_node, stride, gfc_index_zero_node); tmp = build3 (COND_EXPR, gfc_array_index_type, tmp, gfc_index_one_node, stride); stride = GFC_TYPE_ARRAY_STRIDE (type, 0); @@ -3970,23 +3970,32 @@ gfc_conv_expr_descriptor (gfc_se * se, gfc_expr * expr, gfc_ss * ss) loop.temp_ss->next = gfc_ss_terminator; if (expr->ts.type == BT_CHARACTER) { - gcc_assert (expr->ts.cl && expr->ts.cl->length - && expr->ts.cl->length->expr_type == EXPR_CONSTANT); - loop.temp_ss->string_length = gfc_conv_mpz_to_tree - (expr->ts.cl->length->value.integer, - expr->ts.cl->length->ts.kind); - expr->ts.cl->backend_decl = loop.temp_ss->string_length; - } - loop.temp_ss->data.temp.type = gfc_typenode_for_spec (&expr->ts); - - /* ... which can hold our string, if present. */ - if (expr->ts.type == BT_CHARACTER) - { - loop.temp_ss->string_length = TYPE_SIZE_UNIT (loop.temp_ss->data.temp.type); + if (expr->ts.cl + && expr->ts.cl->length + && expr->ts.cl->length->expr_type == EXPR_CONSTANT) + { + expr->ts.cl->backend_decl + = gfc_conv_mpz_to_tree (expr->ts.cl->length->value.integer, + expr->ts.cl->length->ts.kind); + loop.temp_ss->data.temp.type + = gfc_typenode_for_spec (&expr->ts); + loop.temp_ss->string_length + = TYPE_SIZE_UNIT (loop.temp_ss->data.temp.type); + } + else + { + loop.temp_ss->data.temp.type + = gfc_typenode_for_spec (&expr->ts); + loop.temp_ss->string_length = expr->ts.cl->backend_decl; + } se->string_length = loop.temp_ss->string_length; } else - loop.temp_ss->string_length = NULL; + { + loop.temp_ss->data.temp.type + = gfc_typenode_for_spec (&expr->ts); + loop.temp_ss->string_length = NULL; + } loop.temp_ss->data.temp.dimen = loop.dimen; gfc_add_ss_to_loop (&loop, loop.temp_ss); } @@ -4019,7 +4028,8 @@ gfc_conv_expr_descriptor (gfc_se * se, gfc_expr * expr, gfc_ss * ss) if (expr->ts.type == BT_CHARACTER) { gfc_conv_expr (&rse, expr); - rse.expr = build_fold_indirect_ref (rse.expr); + if (POINTER_TYPE_P (TREE_TYPE (rse.expr))) + rse.expr = build_fold_indirect_ref (rse.expr); } else gfc_conv_expr_val (&rse, expr); @@ -4305,20 +4315,16 @@ gfc_conv_array_parameter (gfc_se * se, gfc_expr * expr, gfc_ss * ss, int g77) } -/* Generate code to deallocate the symbol 'sym', if it is allocated. */ +/* Generate code to deallocate an array, if it is allocated. */ tree -gfc_trans_dealloc_allocated (gfc_symbol * sym) +gfc_trans_dealloc_allocated (tree descriptor) { tree tmp; - tree descriptor; tree deallocate; stmtblock_t block; - gcc_assert (sym->attr.allocatable); - gfc_start_block (&block); - descriptor = sym->backend_decl; deallocate = gfc_array_deallocate (descriptor, null_pointer_node); tmp = gfc_conv_descriptor_data_get (descriptor); @@ -4393,7 +4399,7 @@ gfc_trans_deferred_array (gfc_symbol * sym, tree body) /* Allocatable arrays need to be freed when they go out of scope. */ if (sym->attr.allocatable) { - tmp = gfc_trans_dealloc_allocated (sym); + tmp = gfc_trans_dealloc_allocated (sym->backend_decl); gfc_add_expr_to_block (&fnblock, tmp); } diff --git a/gcc/fortran/trans-array.h b/gcc/fortran/trans-array.h index bc7cab54db3..6f57429ae3c 100644 --- a/gcc/fortran/trans-array.h +++ b/gcc/fortran/trans-array.h @@ -41,8 +41,8 @@ tree gfc_trans_auto_array_allocation (tree, gfc_symbol *, tree); tree gfc_trans_dummy_array_bias (gfc_symbol *, tree, tree); /* Generate entry and exit code for g77 calling convention arrays. */ tree gfc_trans_g77_array (gfc_symbol *, tree); -/* Generate code to deallocate the symbol 'sym', if it is allocated. */ -tree gfc_trans_dealloc_allocated (gfc_symbol * sym); +/* Generate code to deallocate an array, if it is allocated. */ +tree gfc_trans_dealloc_allocated (tree); /* Add initialization for deferred arrays. */ tree gfc_trans_deferred_array (gfc_symbol *, tree); /* Generate an initializer for a static pointer or allocatable array. */ diff --git a/gcc/fortran/trans-common.c b/gcc/fortran/trans-common.c index 3b34b334c2c..3b16e5e0065 100644 --- a/gcc/fortran/trans-common.c +++ b/gcc/fortran/trans-common.c @@ -169,6 +169,7 @@ copy_equiv_list_to_ns (segment_info *c) l->equiv = s; s->sym = f->sym; s->offset = f->offset; + s->length = f->length; } } diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index e8d2cd10389..2a9c0dbc32f 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -93,6 +93,7 @@ tree gfor_fndecl_runtime_error; tree gfor_fndecl_set_fpe; tree gfor_fndecl_set_std; tree gfor_fndecl_set_convert; +tree gfor_fndecl_set_record_marker; tree gfor_fndecl_ctime; tree gfor_fndecl_fdate; tree gfor_fndecl_ttynam; @@ -2297,6 +2298,10 @@ gfc_build_builtin_function_decls (void) gfc_build_library_function_decl (get_identifier (PREFIX("set_convert")), void_type_node, 1, gfc_c_int_type_node); + gfor_fndecl_set_record_marker = + gfc_build_library_function_decl (get_identifier (PREFIX("set_record_marker")), + void_type_node, 1, gfc_c_int_type_node); + gfor_fndecl_in_pack = gfc_build_library_function_decl ( get_identifier (PREFIX("internal_pack")), pvoid_type_node, 1, pvoid_type_node); @@ -2943,6 +2948,21 @@ gfc_generate_function_code (gfc_namespace * ns) gfc_add_expr_to_block (&body, tmp); } + /* If this is the main program and an -frecord-marker option was provided, + add a call to set_record_marker. */ + + if (sym->attr.is_main_program && gfc_option.record_marker != 0) + { + tree arglist, gfc_c_int_type_node; + + gfc_c_int_type_node = gfc_get_int_type (gfc_c_int_kind); + arglist = gfc_chainon_list (NULL_TREE, + build_int_cst (gfc_c_int_type_node, + gfc_option.record_marker)); + tmp = build_function_call_expr (gfor_fndecl_set_record_marker, arglist); + gfc_add_expr_to_block (&body, tmp); + + } if (TREE_TYPE (DECL_RESULT (fndecl)) != void_type_node && sym->attr.subroutine) diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 324f7977854..9ca502df352 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -142,6 +142,31 @@ gfc_conv_expr_present (gfc_symbol * sym) } +/* Converts a missing, dummy argument into a null or zero. */ + +void +gfc_conv_missing_dummy (gfc_se * se, gfc_expr * arg, gfc_typespec ts) +{ + tree present; + tree tmp; + + present = gfc_conv_expr_present (arg->symtree->n.sym); + tmp = build3 (COND_EXPR, TREE_TYPE (se->expr), present, se->expr, + convert (TREE_TYPE (se->expr), integer_zero_node)); + tmp = gfc_evaluate_now (tmp, &se->pre); + se->expr = tmp; + if (ts.type == BT_CHARACTER) + { + tmp = convert (gfc_charlen_type_node, integer_zero_node); + tmp = build3 (COND_EXPR, gfc_charlen_type_node, present, + se->string_length, tmp); + tmp = gfc_evaluate_now (tmp, &se->pre); + se->string_length = tmp; + } + return; +} + + /* Get the character length of an expression, looking through gfc_refs if necessary. */ @@ -1805,6 +1830,8 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym, bool callee_alloc; gfc_typespec ts; gfc_charlen cl; + gfc_expr *e; + gfc_symbol *fsym; arglist = NULL_TREE; retargs = NULL_TREE; @@ -1844,7 +1871,9 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym, /* Evaluate the arguments. */ for (; arg != NULL; arg = arg->next, formal = formal ? formal->next : NULL) { - if (arg->expr == NULL) + e = arg->expr; + fsym = formal ? formal->sym : NULL; + if (e == NULL) { if (se->ignore_optional) @@ -1872,19 +1901,19 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym, { /* An elemental function inside a scalarized loop. */ gfc_init_se (&parmse, se); - gfc_conv_expr_reference (&parmse, arg->expr); + gfc_conv_expr_reference (&parmse, e); } else { /* A scalar or transformational function. */ gfc_init_se (&parmse, NULL); - argss = gfc_walk_expr (arg->expr); + argss = gfc_walk_expr (e); if (argss == gfc_ss_terminator) { - gfc_conv_expr_reference (&parmse, arg->expr); - if (formal && formal->sym->attr.pointer - && arg->expr->expr_type != EXPR_NULL) + gfc_conv_expr_reference (&parmse, e); + if (fsym && fsym->attr.pointer + && e->expr_type != EXPR_NULL) { /* Scalar pointer dummy args require an extra level of indirection. The null pointer already contains @@ -1901,34 +1930,44 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym, convention, and pass the address of the array descriptor instead. Otherwise we use g77's calling convention. */ int f; - f = (formal != NULL) - && !(formal->sym->attr.pointer || formal->sym->attr.allocatable) - && formal->sym->as->type != AS_ASSUMED_SHAPE; + f = (fsym != NULL) + && !(fsym->attr.pointer || fsym->attr.allocatable) + && fsym->as->type != AS_ASSUMED_SHAPE; f = f || !sym->attr.always_explicit; - if (arg->expr->expr_type == EXPR_VARIABLE - && is_aliased_array (arg->expr)) + if (e->expr_type == EXPR_VARIABLE + && is_aliased_array (e)) /* The actual argument is a component reference to an array of derived types. In this case, the argument is converted to a temporary, which is passed and then written back after the procedure call. */ - gfc_conv_aliased_arg (&parmse, arg->expr, f); + gfc_conv_aliased_arg (&parmse, e, f); else - gfc_conv_array_parameter (&parmse, arg->expr, argss, f); + gfc_conv_array_parameter (&parmse, e, argss, f); /* If an ALLOCATABLE dummy argument has INTENT(OUT) and is allocated on entry, it must be deallocated. */ - if (formal && formal->sym->attr.allocatable - && formal->sym->attr.intent == INTENT_OUT) + if (fsym && fsym->attr.allocatable + && fsym->attr.intent == INTENT_OUT) { - tmp = gfc_trans_dealloc_allocated (arg->expr->symtree->n.sym); + tmp = e->symtree->n.sym->backend_decl; + if (e->symtree->n.sym->attr.dummy) + tmp = build_fold_indirect_ref (tmp); + tmp = gfc_trans_dealloc_allocated (tmp); gfc_add_expr_to_block (&se->pre, tmp); } } } - if (formal && need_interface_mapping) - gfc_add_interface_mapping (&mapping, formal->sym, &parmse); + /* If an optional argument is itself an optional dummy argument, + check its presence and substitute a null if absent. */ + if (e && e->expr_type == EXPR_VARIABLE + && e->symtree->n.sym->attr.optional + && fsym && fsym->attr.optional) + gfc_conv_missing_dummy (&parmse, e, fsym->ts); + + if (fsym && need_interface_mapping) + gfc_add_interface_mapping (&mapping, fsym, &parmse); gfc_add_block_to_block (&se->pre, &parmse.pre); gfc_add_block_to_block (&se->post, &parmse.post); diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index 28ca3725f07..4e3839b6175 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -165,28 +165,42 @@ static tree gfc_conv_intrinsic_function_args (gfc_se * se, gfc_expr * expr) { gfc_actual_arglist *actual; - tree args; + gfc_expr *e; + gfc_intrinsic_arg *formal; gfc_se argse; + tree args; args = NULL_TREE; - for (actual = expr->value.function.actual; actual; actual = actual->next) + formal = expr->value.function.isym->formal; + + for (actual = expr->value.function.actual; actual; actual = actual->next, + formal = formal ? formal->next : NULL) { + e = actual->expr; /* Skip omitted optional arguments. */ - if (!actual->expr) + if (!e) continue; /* Evaluate the parameter. This will substitute scalarized references automatically. */ gfc_init_se (&argse, se); - if (actual->expr->ts.type == BT_CHARACTER) + if (e->ts.type == BT_CHARACTER) { - gfc_conv_expr (&argse, actual->expr); + gfc_conv_expr (&argse, e); gfc_conv_string_parameter (&argse); args = gfc_chainon_list (args, argse.string_length); } else - gfc_conv_expr_val (&argse, actual->expr); + gfc_conv_expr_val (&argse, e); + + /* If an optional argument is itself an optional dummy argument, + check its presence and substitute a null if absent. */ + if (e->expr_type ==EXPR_VARIABLE + && e->symtree->n.sym->attr.optional + && formal + && formal->optional) + gfc_conv_missing_dummy (&argse, e, formal->ts); gfc_add_block_to_block (&se->pre, &argse.pre); gfc_add_block_to_block (&se->post, &argse.post); @@ -2461,6 +2475,221 @@ gfc_conv_intrinsic_adjust (gfc_se * se, gfc_expr * expr, tree fndecl) } +/* Array transfer statement. + DEST(1:N) = TRANSFER (SOURCE, MOLD[, SIZE]) + where: + typeof = typeof + and: + N = min (sizeof (SOURCE(:)), sizeof (DEST(:)), + sizeof (DEST(0) * SIZE). */ + +static void +gfc_conv_intrinsic_array_transfer (gfc_se * se, gfc_expr * expr) +{ + tree tmp; + tree extent; + tree source; + tree source_bytes; + tree dest_word_len; + tree size_words; + tree size_bytes; + tree upper; + tree lower; + tree stride; + tree stmt; + gfc_actual_arglist *arg; + gfc_se argse; + gfc_ss *ss; + gfc_ss_info *info; + stmtblock_t block; + int n; + + gcc_assert (se->loop); + info = &se->ss->data.info; + + /* Convert SOURCE. The output from this stage is:- + source_bytes = length of the source in bytes + source = pointer to the source data. */ + arg = expr->value.function.actual; + gfc_init_se (&argse, NULL); + ss = gfc_walk_expr (arg->expr); + + source_bytes = gfc_create_var (gfc_array_index_type, NULL); + + /* Obtain the pointer to source and the length of source in bytes. */ + if (ss == gfc_ss_terminator) + { + gfc_conv_expr_reference (&argse, arg->expr); + source = argse.expr; + + /* Obtain the source word length. */ + tmp = size_in_bytes(TREE_TYPE(TREE_TYPE (source))); + tmp = fold_convert (gfc_array_index_type, tmp); + } + else + { + gfc_init_se (&argse, NULL); + argse.want_pointer = 0; + gfc_conv_expr_descriptor (&argse, arg->expr, ss); + source = gfc_conv_descriptor_data_get (argse.expr); + + /* Repack the source if not a full variable array. */ + if (!(arg->expr->expr_type == EXPR_VARIABLE + && arg->expr->ref->u.ar.type == AR_FULL)) + { + tmp = build_fold_addr_expr (argse.expr); + tmp = gfc_chainon_list (NULL_TREE, tmp); + source = build_function_call_expr (gfor_fndecl_in_pack, tmp); + source = gfc_evaluate_now (source, &argse.pre); + + /* Free the temporary. */ + gfc_start_block (&block); + tmp = convert (pvoid_type_node, source); + tmp = gfc_chainon_list (NULL_TREE, tmp); + tmp = build_function_call_expr (gfor_fndecl_internal_free, tmp); + gfc_add_expr_to_block (&block, tmp); + stmt = gfc_finish_block (&block); + + /* Clean up if it was repacked. */ + gfc_init_block (&block); + tmp = gfc_conv_array_data (argse.expr); + tmp = build2 (NE_EXPR, boolean_type_node, source, tmp); + tmp = build3_v (COND_EXPR, tmp, stmt, build_empty_stmt ()); + gfc_add_expr_to_block (&block, tmp); + gfc_add_block_to_block (&block, &se->post); + gfc_init_block (&se->post); + gfc_add_block_to_block (&se->post, &block); + } + + /* Obtain the source word length. */ + tmp = gfc_get_element_type (TREE_TYPE(argse.expr)); + tmp = fold_convert (gfc_array_index_type, size_in_bytes (tmp)); + + /* Obtain the size of the array in bytes. */ + extent = gfc_create_var (gfc_array_index_type, NULL); + for (n = 0; n < arg->expr->rank; n++) + { + tree idx; + idx = gfc_rank_cst[n]; + gfc_add_modify_expr (&argse.pre, source_bytes, tmp); + stride = gfc_conv_descriptor_stride (argse.expr, idx); + lower = gfc_conv_descriptor_lbound (argse.expr, idx); + upper = gfc_conv_descriptor_ubound (argse.expr, idx); + tmp = build2 (MINUS_EXPR, gfc_array_index_type, + upper, lower); + gfc_add_modify_expr (&argse.pre, extent, tmp); + tmp = build2 (PLUS_EXPR, gfc_array_index_type, + extent, gfc_index_one_node); + tmp = build2 (MULT_EXPR, gfc_array_index_type, + tmp, source_bytes); + } + } + + gfc_add_modify_expr (&argse.pre, source_bytes, tmp); + gfc_add_block_to_block (&se->pre, &argse.pre); + gfc_add_block_to_block (&se->post, &argse.post); + + /* Now convert MOLD. The sole output is: + dest_word_len = destination word length in bytes. */ + arg = arg->next; + + gfc_init_se (&argse, NULL); + ss = gfc_walk_expr (arg->expr); + + if (ss == gfc_ss_terminator) + { + gfc_conv_expr_reference (&argse, arg->expr); + tmp = TREE_TYPE(TREE_TYPE (argse.expr)); + tmp = fold_convert (gfc_array_index_type, size_in_bytes(tmp)); + } + else + { + gfc_init_se (&argse, NULL); + argse.want_pointer = 0; + gfc_conv_expr_descriptor (&argse, arg->expr, ss); + tmp = gfc_get_element_type (TREE_TYPE(argse.expr)); + tmp = fold_convert (gfc_array_index_type, size_in_bytes (tmp)); + } + + dest_word_len = gfc_create_var (gfc_array_index_type, NULL); + gfc_add_modify_expr (&se->pre, dest_word_len, tmp); + + /* Finally convert SIZE, if it is present. */ + arg = arg->next; + size_words = gfc_create_var (gfc_array_index_type, NULL); + + if (arg->expr) + { + gfc_init_se (&argse, NULL); + gfc_conv_expr_reference (&argse, arg->expr); + tmp = convert (gfc_array_index_type, + build_fold_indirect_ref (argse.expr)); + gfc_add_block_to_block (&se->pre, &argse.pre); + gfc_add_block_to_block (&se->post, &argse.post); + } + else + tmp = NULL_TREE; + + size_bytes = gfc_create_var (gfc_array_index_type, NULL); + if (tmp != NULL_TREE) + { + tmp = build2 (MULT_EXPR, gfc_array_index_type, + tmp, dest_word_len); + tmp = build2 (MIN_EXPR, gfc_array_index_type, tmp, source_bytes); + } + else + tmp = source_bytes; + + gfc_add_modify_expr (&se->pre, size_bytes, tmp); + gfc_add_modify_expr (&se->pre, size_words, + build2 (CEIL_DIV_EXPR, gfc_array_index_type, + size_bytes, dest_word_len)); + + /* Evaluate the bounds of the result. If the loop range exists, we have + to check if it is too large. If so, we modify loop->to be consistent + with min(size, size(source)). Otherwise, size is made consistent with + the loop range, so that the right number of bytes is transferred.*/ + n = se->loop->order[0]; + if (se->loop->to[n] != NULL_TREE) + { + tmp = fold_build2 (MINUS_EXPR, gfc_array_index_type, + se->loop->to[n], se->loop->from[n]); + tmp = build2 (PLUS_EXPR, gfc_array_index_type, + tmp, gfc_index_one_node); + tmp = build2 (MIN_EXPR, gfc_array_index_type, + tmp, size_words); + gfc_add_modify_expr (&se->pre, size_words, tmp); + gfc_add_modify_expr (&se->pre, size_bytes, + build2 (MULT_EXPR, gfc_array_index_type, + size_words, dest_word_len)); + upper = build2 (PLUS_EXPR, gfc_array_index_type, + size_words, se->loop->from[n]); + upper = build2 (MINUS_EXPR, gfc_array_index_type, + upper, gfc_index_one_node); + } + else + { + upper = build2 (MINUS_EXPR, gfc_array_index_type, + size_words, gfc_index_one_node); + se->loop->from[n] = gfc_index_zero_node; + } + + se->loop->to[n] = upper; + + /* Build a destination descriptor, using the pointer, source, as the + data field. This is already allocated so set callee_alloc. */ + tmp = gfc_typenode_for_spec (&expr->ts); + gfc_trans_create_temp_array (&se->pre, &se->post, se->loop, + info, tmp, false, false, true); + + tmp = fold_convert (pvoid_type_node, source); + gfc_conv_descriptor_data_set (&se->pre, info->descriptor, tmp); + se->expr = info->descriptor; + if (expr->ts.type == BT_CHARACTER) + se->string_length = dest_word_len; +} + + /* Scalar transfer statement. TRANSFER (source, mold) = *(typeof *)&source. */ @@ -2473,8 +2702,6 @@ gfc_conv_intrinsic_transfer (gfc_se * se, gfc_expr * expr) tree ptr; gfc_ss *ss; - gcc_assert (!se->ss); - /* Get a pointer to the source. */ arg = expr->value.function.actual; ss = gfc_walk_expr (arg->expr); @@ -3374,7 +3601,20 @@ gfc_conv_intrinsic_function (gfc_se * se, gfc_expr * expr) break; case GFC_ISYM_TRANSFER: - gfc_conv_intrinsic_transfer (se, expr); + if (se->ss) + { + if (se->ss->useflags) + { + /* Access the previously obtained result. */ + gfc_conv_tmp_array_ref (se); + gfc_advance_se_ss_chain (se); + break; + } + else + gfc_conv_intrinsic_array_transfer (se, expr); + } + else + gfc_conv_intrinsic_transfer (se, expr); break; case GFC_ISYM_TTYNAM: @@ -3557,6 +3797,9 @@ gfc_walk_intrinsic_function (gfc_ss * ss, gfc_expr * expr, case GFC_ISYM_UBOUND: return gfc_walk_intrinsic_bound (ss, expr); + case GFC_ISYM_TRANSFER: + return gfc_walk_intrinsic_libfunc (ss, expr); + default: /* This probably meant someone forgot to add an intrinsic to the above list(s) when they implemented it, or something's gone horribly wrong. diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c index 433adbd3b48..c19b72bd55c 100644 --- a/gcc/fortran/trans.c +++ b/gcc/fortran/trans.c @@ -340,9 +340,11 @@ gfc_trans_runtime_check (tree cond, tree msg, stmtblock_t * pblock) else { /* Tell the compiler that this isn't likely. */ + cond = fold_convert (long_integer_type_node, cond); tmp = gfc_chainon_list (NULL_TREE, cond); - tmp = gfc_chainon_list (tmp, integer_zero_node); + tmp = gfc_chainon_list (tmp, build_int_cst (long_integer_type_node, 0)); cond = build_function_call_expr (built_in_decls[BUILT_IN_EXPECT], tmp); + cond = fold_convert (boolean_type_node, cond); tmp = build3_v (COND_EXPR, cond, body, build_empty_stmt ()); gfc_add_expr_to_block (pblock, tmp); diff --git a/gcc/fortran/trans.h b/gcc/fortran/trans.h index 4955fe48c49..0b1514e94d6 100644 --- a/gcc/fortran/trans.h +++ b/gcc/fortran/trans.h @@ -317,6 +317,8 @@ void gfc_conv_structure (gfc_se *, gfc_expr *, int); /* Return an expression which determines if a dummy parameter is present. */ tree gfc_conv_expr_present (gfc_symbol *); +/* Convert a missing, dummy argument into a null or zero. */ +void gfc_conv_missing_dummy (gfc_se *, gfc_expr *, gfc_typespec); /* Generate code to allocate a string temporary. */ tree gfc_conv_string_tmp (gfc_se *, tree, tree); diff --git a/gcc/function.c b/gcc/function.c index ec0e997877a..b33b07826c5 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -331,7 +331,7 @@ free_after_compilation (struct function *f) f->x_return_label = NULL; f->x_naked_return_label = NULL; f->x_stack_slot_list = NULL; - f->x_tail_recursion_reentry = NULL; + f->x_stack_check_probe_note = NULL; f->x_arg_pointer_save_area = NULL; f->x_parm_birth_insn = NULL; f->original_arg_vector = NULL; @@ -4169,7 +4169,7 @@ expand_function_start (tree subr) else #endif { - rtx sv = targetm.calls.struct_value_rtx (TREE_TYPE (subr), 1); + rtx sv = targetm.calls.struct_value_rtx (TREE_TYPE (subr), 2); /* Expect to be passed the address of a place to store the value. If it is passed as an argument, assign_parms will take care of it. */ @@ -4273,8 +4273,8 @@ expand_function_start (tree subr) as opposed to parm setup. */ emit_note (NOTE_INSN_FUNCTION_BEG); - if (!NOTE_P (get_last_insn ())) - emit_note (NOTE_INSN_DELETED); + gcc_assert (NOTE_P (get_last_insn ())); + parm_birth_insn = get_last_insn (); if (current_function_profile) @@ -4284,10 +4284,10 @@ expand_function_start (tree subr) #endif } - /* After the display initializations is where the tail-recursion label - should go, if we end up needing one. Ensure we have a NOTE here - since some things (like trampolines) get placed before this. */ - tail_recursion_reentry = emit_note (NOTE_INSN_DELETED); + /* After the display initializations is where the stack checking + probe should go. */ + if(flag_stack_check) + stack_check_probe_note = emit_note (NOTE_INSN_DELETED); /* Make sure there is a line number after the function entry setup code. */ force_next_line_note (); @@ -4413,7 +4413,7 @@ expand_function_end (void) GEN_INT (STACK_CHECK_MAX_FRAME_SIZE)); seq = get_insns (); end_sequence (); - emit_insn_before (seq, tail_recursion_reentry); + emit_insn_before (seq, stack_check_probe_note); break; } } diff --git a/gcc/function.h b/gcc/function.h index 8a4a9202536..e97eb0199c7 100644 --- a/gcc/function.h +++ b/gcc/function.h @@ -241,7 +241,7 @@ struct function GTY(()) rtx x_stack_slot_list; /* Place after which to insert the tail_recursion_label if we need one. */ - rtx x_tail_recursion_reentry; + 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 @@ -505,7 +505,7 @@ extern int trampolines_created; #define stack_slot_list (cfun->x_stack_slot_list) #define parm_birth_insn (cfun->x_parm_birth_insn) #define frame_offset (cfun->x_frame_offset) -#define tail_recursion_reentry (cfun->x_tail_recursion_reentry) +#define stack_check_probe_note (cfun->x_stack_check_probe_note) #define arg_pointer_save_area (cfun->x_arg_pointer_save_area) #define used_temp_slots (cfun->x_used_temp_slots) #define avail_temp_slots (cfun->x_avail_temp_slots) diff --git a/gcc/gcc.c b/gcc/gcc.c index b7e9a1df339..c606773f42e 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -330,6 +330,7 @@ static int default_arg (const char *, int); static void set_multilib_dir (void); static void print_multilib_info (void); static void perror_with_name (const char *); +static void fatal_ice (const char *, ...) ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN; static void notice (const char *, ...) ATTRIBUTE_PRINTF_1; static void display_help (void); static void add_preprocessor_option (const char *, int); @@ -2997,12 +2998,12 @@ execute (void) } else #endif - fatal ("\ + fatal_ice ("\ Internal error: %s (program %s)\n\ Please submit a full bug report.\n\ See %s for instructions.", - strsignal (WTERMSIG (status)), commands[i].prog, - bug_report_url); + strsignal (WTERMSIG (status)), commands[i].prog, + bug_report_url); } else if (WIFEXITED (status) && WEXITSTATUS (status) >= MIN_FATAL_STATUS) @@ -6818,12 +6819,27 @@ perror_with_name (const char *name) void fancy_abort (const char *file, int line, const char *func) { - fatal ("internal gcc abort in %s, at %s:%d", func, file, line); + fatal_ice ("internal gcc abort in %s, at %s:%d", func, file, line); } /* Output an error message and exit. */ void +fatal_ice (const char *cmsgid, ...) +{ + va_list ap; + + va_start (ap, cmsgid); + + fprintf (stderr, "%s: ", programname); + vfprintf (stderr, _(cmsgid), ap); + va_end (ap); + fprintf (stderr, "\n"); + delete_temp_files (); + exit (pass_exit_codes ? ICE_EXIT_CODE : 1); +} + +void fatal (const char *cmsgid, ...) { va_list ap; diff --git a/gcc/genautomata.c b/gcc/genautomata.c index eb06e6ccff8..fd8edebcea8 100644 --- a/gcc/genautomata.c +++ b/gcc/genautomata.c @@ -677,6 +677,7 @@ struct state /* The following field value is the first arc output from given state. */ arc_t first_out_arc; + unsigned int num_out_arcs; /* The following field is used to form NDFA. */ char it_was_placed_in_stack_for_NDFA_forming; /* The following field is used to form DFA. */ @@ -700,6 +701,7 @@ struct state automaton. The field value is state corresponding to equivalence class to which given state belongs. */ state_t equiv_class_state; + unsigned int *presence_signature; /* The following field value is the order number of given state. The states in final DFA is enumerated with the aid of the following field. */ @@ -3862,6 +3864,7 @@ remove_arc (state_t from_state, arc_t arc) from_state->first_out_arc = arc->next_out_arc; else prev_arc->next_out_arc = arc->next_out_arc; + from_state->num_out_arcs--; free_arc (arc); } @@ -3908,6 +3911,7 @@ add_arc (state_t from_state, state_t to_state, ainsn_t ainsn) ainsn->arc_exists_p = 1; new_arc->next_out_arc = from_state->first_out_arc; from_state->first_out_arc = new_arc; + from_state->num_out_arcs++; new_arc->next_arc_marked_by_insn = NULL; return new_arc; } @@ -5614,24 +5618,20 @@ add_achieved_state (state_t state) out arcs of STATE by equiv_class_num_1 (if ODD_ITERATION_FLAG has nonzero value) or by equiv_class_num_2 of the destination state. The function returns number of out arcs of STATE. */ -static int +static void set_out_arc_insns_equiv_num (state_t state, int odd_iteration_flag) { - int state_out_arcs_num; arc_t arc; - state_out_arcs_num = 0; for (arc = first_out_arc (state); arc != NULL; arc = next_out_arc (arc)) { gcc_assert (!arc->insn->insn_reserv_decl->equiv_class_num); - state_out_arcs_num++; arc->insn->insn_reserv_decl->equiv_class_num = (odd_iteration_flag ? arc->to_state->equiv_class_num_1 : arc->to_state->equiv_class_num_2); gcc_assert (arc->insn->insn_reserv_decl->equiv_class_num); } - return state_out_arcs_num; } /* The function clears equivalence numbers and alt_states in all insns @@ -5666,6 +5666,26 @@ first_cycle_unit_presence (state_t state, int unit_num) return false; } +/* This fills in the presence_signature[] member of STATE. */ +static void +cache_presence (state_t state) +{ + int i, num = 0; + unsigned int sz; + sz = (description->query_units_num + sizeof (int) * CHAR_BIT - 1) + / (sizeof (int) * CHAR_BIT); + + state->presence_signature = create_node (sz * sizeof (int)); + for (i = 0; i < description->units_num; i++) + if (units_array [i]->query_p) + { + int presence1_p = first_cycle_unit_presence (state, i); + state->presence_signature[num / (sizeof (int) * CHAR_BIT)] + |= (!!presence1_p) << (num % (sizeof (int) * CHAR_BIT)); + num++; + } +} + /* The function returns nonzero value if STATE is not equivalent to ANOTHER_STATE from the same current partition on equivalence classes. Another state has ANOTHER_STATE_OUT_ARCS_NUM number of @@ -5673,52 +5693,89 @@ first_cycle_unit_presence (state_t state, int unit_num) by ODD_ITERATION_FLAG. */ static int state_is_differed (state_t state, state_t another_state, - int another_state_out_arcs_num, int odd_iteration_flag) + int odd_iteration_flag) { arc_t arc; - int state_out_arcs_num; - int i, presence1_p, presence2_p; + unsigned int sz, si; + + gcc_assert (state->num_out_arcs == another_state->num_out_arcs); + + sz = (description->query_units_num + sizeof (int) * CHAR_BIT - 1) + / (sizeof (int) * CHAR_BIT); + + for (si = 0; si < sz; si++) + gcc_assert (state->presence_signature[si] + == another_state->presence_signature[si]); - state_out_arcs_num = 0; for (arc = first_out_arc (state); arc != NULL; arc = next_out_arc (arc)) { - state_out_arcs_num++; if ((odd_iteration_flag ? arc->to_state->equiv_class_num_1 : arc->to_state->equiv_class_num_2) != arc->insn->insn_reserv_decl->equiv_class_num) return 1; } - if (state_out_arcs_num != another_state_out_arcs_num) + + return 0; +} + +/* Compares two states pointed to by STATE_PTR_1 and STATE_PTR_2 + and return -1, 0 or 1. This function can be used as predicate for + qsort(). It requires the member presence_signature[] of both + states be filled. */ +static int +compare_states_for_equiv (const void *state_ptr_1, + const void *state_ptr_2) +{ + state_t s1 = *(state_t *)state_ptr_1; + state_t s2 = *(state_t *)state_ptr_2; + unsigned int sz, si; + if (s1->num_out_arcs < s2->num_out_arcs) + return -1; + else if (s1->num_out_arcs > s2->num_out_arcs) return 1; - /* Now we are looking at the states with the point of view of query - units. */ - for (i = 0; i < description->units_num; i++) - if (units_array [i]->query_p) - { - presence1_p = first_cycle_unit_presence (state, i); - presence2_p = first_cycle_unit_presence (another_state, i); - if ((presence1_p && !presence2_p) || (!presence1_p && presence2_p)) - return 1; - } + + sz = (description->query_units_num + sizeof (int) * CHAR_BIT - 1) + / (sizeof (int) * CHAR_BIT); + + for (si = 0; si < sz; si++) + if (s1->presence_signature[si] < s2->presence_signature[si]) + return -1; + else if (s1->presence_signature[si] > s2->presence_signature[si]) + return 1; return 0; } /* The function makes initial partition of STATES on equivalent - classes. */ -static state_t -init_equiv_class (VEC(state_t,heap) *states) + classes and saves it into *CLASSES. This function requires the input + to be sorted via compare_states_for_equiv(). */ +static int +init_equiv_class (VEC(state_t,heap) *states, VEC (state_t,heap) **classes) { size_t i; state_t prev = 0; + int class_num = 1; + *classes = VEC_alloc (state_t,heap, 150); for (i = 0; i < VEC_length (state_t, states); i++) { - VEC_index (state_t, states, i)->equiv_class_num_1 = 1; - VEC_index (state_t, states, i)->next_equiv_class_state = prev; - prev = VEC_index (state_t, states, i); + state_t state = VEC_index (state_t, states, i); + if (prev) + { + if (compare_states_for_equiv (&prev, &state) != 0) + { + VEC_safe_push (state_t,heap, *classes, prev); + class_num++; + prev = NULL; + } + } + state->equiv_class_num_1 = class_num; + state->next_equiv_class_state = prev; + prev = state; } - return prev; + if (prev) + VEC_safe_push (state_t,heap, *classes, prev); + return class_num; } /* The function copies pointers to equivalent states from vla FROM @@ -5729,6 +5786,7 @@ copy_equiv_class (VEC(state_t,heap) **to, VEC(state_t,heap) *from) VEC_free (state_t,heap, *to); *to = VEC_copy (state_t,heap, from); } + /* The function processes equivalence class given by its first state, FIRST_STATE, on odd iteration if ODD_ITERATION_FLAG. If there are not equivalent states, the function partitions the class @@ -5746,7 +5804,6 @@ partition_equiv_class (state_t first_state, int odd_iteration_flag, state_t curr_state; state_t prev_state; state_t next_state; - int out_arcs_num; partition_p = 0; @@ -5756,15 +5813,14 @@ partition_equiv_class (state_t first_state, int odd_iteration_flag, if (first_state->next_equiv_class_state != NULL) { /* There are more one states in the class equivalence. */ - out_arcs_num = set_out_arc_insns_equiv_num (first_state, - odd_iteration_flag); + set_out_arc_insns_equiv_num (first_state, odd_iteration_flag); for (prev_state = first_state, curr_state = first_state->next_equiv_class_state; curr_state != NULL; curr_state = next_state) { next_state = curr_state->next_equiv_class_state; - if (state_is_differed (curr_state, first_state, out_arcs_num, + if (state_is_differed (curr_state, first_state, odd_iteration_flag)) { /* Remove curr state from the class equivalence. */ @@ -5797,7 +5853,6 @@ static void evaluate_equiv_classes (automaton_t automaton, VEC(state_t,heap) **equiv_classes) { - state_t new_equiv_class; int new_equiv_class_num; int odd_iteration_flag; int finish_flag; @@ -5806,12 +5861,14 @@ evaluate_equiv_classes (automaton_t automaton, all_achieved_states = VEC_alloc (state_t,heap, 1500); pass_states (automaton, add_achieved_state); - new_equiv_class = init_equiv_class (all_achieved_states); - odd_iteration_flag = 0; - new_equiv_class_num = 1; + pass_states (automaton, cache_presence); + qsort (VEC_address (state_t, all_achieved_states), + VEC_length (state_t, all_achieved_states), + sizeof (state_t), compare_states_for_equiv); - next_iteration_classes = VEC_alloc (state_t,heap, 150); - VEC_quick_push (state_t, next_iteration_classes, new_equiv_class); + odd_iteration_flag = 0; + new_equiv_class_num = init_equiv_class (all_achieved_states, + &next_iteration_classes); do { diff --git a/gcc/genconditions.c b/gcc/genconditions.c index b67936502b6..1a653d08f5b 100644 --- a/gcc/genconditions.c +++ b/gcc/genconditions.c @@ -87,7 +87,8 @@ write_header (void) #include \"hard-reg-set.h\"\n\ #include \"resource.h\"\n\ #include \"toplev.h\"\n\ -#include \"reload.h\"\n"); +#include \"reload.h\"\n\ +#include \"tm-constrs.h\"\n"); if (saw_eh_return) puts ("#define HAVE_eh_return 1"); diff --git a/gcc/genemit.c b/gcc/genemit.c index 7c743005477..79db84e7b30 100644 --- a/gcc/genemit.c +++ b/gcc/genemit.c @@ -844,6 +844,7 @@ from the machine description file `md'. */\n\n"); printf ("#include \"resource.h\"\n"); printf ("#include \"reload.h\"\n"); printf ("#include \"toplev.h\"\n"); + printf ("#include \"tm-constrs.h\"\n"); printf ("#include \"ggc.h\"\n\n"); printf ("#include \"basic-block.h\"\n\n"); printf ("#define FAIL return (end_sequence (), _val)\n"); diff --git a/gcc/genoutput.c b/gcc/genoutput.c index 4eac5818729..ddece1c2309 100644 --- a/gcc/genoutput.c +++ b/gcc/genoutput.c @@ -244,6 +244,7 @@ output_prologue (void) printf ("#include \"toplev.h\"\n"); printf ("#include \"output.h\"\n"); printf ("#include \"target.h\"\n"); + printf ("#include \"tm-constrs.h\"\n"); } static void diff --git a/gcc/genpeep.c b/gcc/genpeep.c index ad4b5a11351..80ce3f120cd 100644 --- a/gcc/genpeep.c +++ b/gcc/genpeep.c @@ -376,8 +376,10 @@ from the machine description file `md'. */\n\n"); printf ("#include \"output.h\"\n"); printf ("#include \"real.h\"\n"); printf ("#include \"recog.h\"\n"); - printf ("#include \"except.h\"\n\n"); - printf ("#include \"function.h\"\n\n"); + printf ("#include \"except.h\"\n"); + printf ("#include \"function.h\"\n"); + printf ("#include \"toplev.h\"\n"); + printf ("#include \"tm-constrs.h\"\n\n"); printf ("#ifdef HAVE_peephole\n"); printf ("extern rtx peep_operand[];\n\n"); diff --git a/gcc/genpreds.c b/gcc/genpreds.c index aa941ce107e..7c732bb016e 100644 --- a/gcc/genpreds.c +++ b/gcc/genpreds.c @@ -947,13 +947,18 @@ write_regclass_for_constraint (void) /* Write out the functions which compute whether a given value matches a given non-register constraint. */ static void -write_satisfies_constraint_fns (void) +write_tm_constrs_h (void) { struct constraint_data *c; - /* A fair number of places include tm_p.h without including rtl.h. */ - puts ("#ifdef GCC_RTL_H\n"); - + printf ("\ +/* Generated automatically by the program '%s'\n\ + from the machine description file '%s'. */\n\n", progname, in_fname); + + puts ("\ +#ifndef GCC_TM_CONSTRS_H\n\ +#define GCC_TM_CONSTRS_H\n"); + FOR_ALL_CONSTRAINTS (c) if (!c->is_register) { @@ -995,8 +1000,7 @@ write_satisfies_constraint_fns (void) write_predicate_expr (c->exp); fputs (";\n}\n", stdout); } - - puts ("\n#endif /* rtl.h visible */\n"); + puts ("#endif /* tm-constrs.h */"); } /* Write out the wrapper function, constraint_satisfied_p, that maps @@ -1088,7 +1092,7 @@ write_insn_extra_address_constraint (void) puts ("bool\n" "insn_extra_address_constraint (enum constraint_num c)\n" "{\n" - " switch (str[0])\n" + " switch (c)\n" " {"); FOR_ALL_CONSTRAINTS (c) @@ -1167,15 +1171,11 @@ write_tm_preds_h (void) puts ("#define EXTRA_MEMORY_CONSTRAINT(c_,s_) false\n"); if (have_address_constraints) puts ("extern bool " - "insn_extra_address_constraint (enum constraint_num)" + "insn_extra_address_constraint (enum constraint_num);\n" "#define EXTRA_ADDRESS_CONSTRAINT(c_,s_) " "insn_extra_address_constraint (lookup_constraint (s_))\n"); else puts ("#define EXTRA_ADDRESS_CONSTRAINT(c_,s_) false\n"); - - if (have_const_int_constraints || have_const_dbl_constraints - || have_extra_constraints) - write_satisfies_constraint_fns (); } puts ("#endif /* tm-preds.h */"); @@ -1216,7 +1216,8 @@ write_insn_preds_c (void) #include \"resource.h\"\n\ #include \"toplev.h\"\n\ #include \"reload.h\"\n\ -#include \"regs.h\"\n"); +#include \"regs.h\"\n\ +#include \"tm-constrs.h\"\n"); FOR_ALL_PREDICATES (p) write_one_predicate_function (p); @@ -1242,6 +1243,8 @@ write_insn_preds_c (void) /* Argument parsing. */ static bool gen_header; +static bool gen_constrs; + static bool parse_option (const char *opt) { @@ -1250,6 +1253,11 @@ parse_option (const char *opt) gen_header = true; return 1; } + else if (!strcmp (opt, "-c")) + { + gen_constrs = true; + return 1; + } else return 0; } @@ -1291,6 +1299,8 @@ main (int argc, char **argv) if (gen_header) write_tm_preds_h (); + else if (gen_constrs) + write_tm_constrs_h (); else write_insn_preds_c (); diff --git a/gcc/genrecog.c b/gcc/genrecog.c index a72243c403f..a65137ab377 100644 --- a/gcc/genrecog.c +++ b/gcc/genrecog.c @@ -2496,6 +2496,7 @@ write_header (void) #include \"resource.h\"\n\ #include \"toplev.h\"\n\ #include \"reload.h\"\n\ +#include \"tm-constrs.h\"\n\ \n"); puts ("\n\ diff --git a/gcc/gimplify.c b/gcc/gimplify.c index c63e2ed25ba..53c89c6c584 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -1008,7 +1008,18 @@ gimplify_bind_expr (tree *expr_p, tree temp, tree *pre_p) for (t = BIND_EXPR_VARS (bind_expr); t ; t = TREE_CHAIN (t)) { if (TREE_CODE (t) == VAR_DECL) - DECL_SEEN_IN_BIND_EXPR_P (t) = 1; + { + struct gimplify_omp_ctx *ctx = gimplify_omp_ctxp; + + /* Mark variable as local. */ + if (ctx && !is_global_var (t) + && (! DECL_SEEN_IN_BIND_EXPR_P (t) + || splay_tree_lookup (ctx->variables, + (splay_tree_key) t) == NULL)) + omp_add_variable (gimplify_omp_ctxp, t, GOVD_LOCAL | GOVD_SEEN); + + DECL_SEEN_IN_BIND_EXPR_P (t) = 1; + } /* Preliminarily mark non-addressed complex variables as eligible for promotion to gimple registers. We'll transform their uses @@ -1020,16 +1031,6 @@ gimplify_bind_expr (tree *expr_p, tree temp, tree *pre_p) DECL_COMPLEX_GIMPLE_REG_P (t) = 1; } - /* Mark variables seen in this bind expr as locals. */ - if (gimplify_omp_ctxp) - { - struct gimplify_omp_ctx *ctx = gimplify_omp_ctxp; - - for (t = BIND_EXPR_VARS (bind_expr); t ; t = TREE_CHAIN (t)) - if (TREE_CODE (t) == VAR_DECL && !is_global_var (t)) - omp_add_variable (ctx, t, GOVD_LOCAL | GOVD_SEEN); - } - gimple_push_bind_expr (bind_expr); gimplify_ctxp->save_stack = false; @@ -2339,7 +2340,7 @@ gimple_boolify (tree expr) default: /* Other expressions that get here must have boolean values, but might need to be converted to the appropriate mode. */ - return convert (boolean_type_node, expr); + return fold_convert (boolean_type_node, expr); } } @@ -3041,7 +3042,7 @@ gimplify_init_constructor (tree *expr_p, tree *pre_p, i = VEC_index (constructor_elt, elts, 1)->value; if (r == NULL || i == NULL) { - tree zero = convert (TREE_TYPE (type), integer_zero_node); + tree zero = fold_convert (TREE_TYPE (type), integer_zero_node); if (r == NULL) r = zero; if (i == NULL) @@ -3544,8 +3545,8 @@ gimplify_boolean_expr (tree *expr_p) tree type = TREE_TYPE (*expr_p); *expr_p = build3 (COND_EXPR, type, *expr_p, - convert (type, boolean_true_node), - convert (type, boolean_false_node)); + fold_convert (type, boolean_true_node), + fold_convert (type, boolean_false_node)); return GS_OK; } @@ -4535,8 +4536,12 @@ gimplify_scan_omp_clauses (tree *list_p, tree *pre_p, bool in_parallel) omp_notice_variable (outer_ctx, decl, true); break; - case OMP_CLAUSE_SCHEDULE: case OMP_CLAUSE_IF: + OMP_CLAUSE_OPERAND (c, 0) + = gimple_boolify (OMP_CLAUSE_OPERAND (c, 0)); + /* Fall through. */ + + case OMP_CLAUSE_SCHEDULE: case OMP_CLAUSE_NUM_THREADS: gs = gimplify_expr (&OMP_CLAUSE_OPERAND (c, 0), pre_p, NULL, is_gimple_val, fb_rvalue); @@ -5698,7 +5703,7 @@ gimplify_expr (tree *expr_p, tree *pre_p, tree *post_p, /* Historically, the compiler has treated a bare reference to a volatile lvalue as forcing a load. */ tree type = TYPE_MAIN_VARIANT (TREE_TYPE (*expr_p)); - /* Normally, we do want to create a temporary for a + /* Normally, we do not want to create a temporary for a TREE_ADDRESSABLE type because such a type should not be copied by bitwise-assignment. However, we make an exception here, as all we are doing here is ensuring that diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index 84311b1ba34..4825189b034 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -1,6 +1,6 @@ /* Instruction scheduling pass. - Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, + 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by, and currently maintained by, Jim Wilson (wilson@cygnus.com) @@ -2153,11 +2153,11 @@ choose_ready (struct ready_list *ready) && spec_info->flags & (PREFER_NON_DATA_SPEC | PREFER_NON_CONTROL_SPEC)) { - rtx x; - int s; - for (i = 0, n = ready->n_ready; i < n; i++) { + rtx x; + ds_t s; + x = ready_element (ready, i); s = TODO_SPEC (x); @@ -2185,6 +2185,8 @@ choose_ready (struct ready_list *ready) || (targetm.sched.first_cycle_multipass_dfa_lookahead_guard_spec && !targetm.sched.first_cycle_multipass_dfa_lookahead_guard_spec (insn))) + /* Discard speculative instruction that stands first in the ready + list. */ { change_queue_index (insn, 1); return 0; @@ -3053,16 +3055,6 @@ try_ready (rtx next) || !RECOVERY_BLOCK (next) || RECOVERY_BLOCK (next) == EXIT_BLOCK_PTR); - if (*ts == 0 && ORIG_PAT (next) && !RECOVERY_BLOCK (next)) - /* We should change pattern of every previously speculative - instruction - and we determine if NEXT was speculative by using - ORIG_PAT field. Except one case - simple checks have ORIG_PAT - pat too, hence we also check for the RECOVERY_BLOCK. */ - { - change_pattern (next, ORIG_PAT (next)); - ORIG_PAT (next) = 0; - } - if (*ts & HARD_DEP) { /* We can't assert (QUEUE_INDEX (next) == QUEUE_NOWHERE) here because @@ -3073,6 +3065,15 @@ try_ready (rtx next) change_queue_index (next, QUEUE_NOWHERE); return -1; } + else if (!(*ts & BEGIN_SPEC) && ORIG_PAT (next) && !RECOVERY_BLOCK (next)) + /* We should change pattern of every previously speculative + instruction - and we determine if NEXT was speculative by using + ORIG_PAT field. Except one case - simple checks have ORIG_PAT + pat too, hence we also check for the RECOVERY_BLOCK. */ + { + change_pattern (next, ORIG_PAT (next)); + ORIG_PAT (next) = 0; + } if (sched_verbose >= 2) { @@ -3310,8 +3311,30 @@ process_insn_depend_be_in_spec (rtx link, rtx twin, ds_t fs) ds = DEP_STATUS (link); - if (fs && (ds & DEP_TYPES) == DEP_TRUE) - ds = (ds & ~BEGIN_SPEC) | fs; + if (/* If we want to create speculative dep. */ + fs + /* And we can do that because this is a true dep. */ + && (ds & DEP_TYPES) == DEP_TRUE) + { + gcc_assert (!(ds & BE_IN_SPEC)); + + if (/* If this dep can be overcomed with 'begin speculation'. */ + ds & BEGIN_SPEC) + /* Then we have a choice: keep the dep 'begin speculative' + or transform it into 'be in speculative'. */ + { + if (/* In try_ready we assert that if insn once became ready + it can be removed from the ready (or queue) list only + due to backend decision. Hence we can't let the + probability of the speculative dep to decrease. */ + dep_weak (ds) <= dep_weak (fs)) + /* Transform it to be in speculative. */ + ds = (ds & ~BEGIN_SPEC) | fs; + } + else + /* Mark the dep as 'be in speculative'. */ + ds |= fs; + } add_back_forw_dep (consumer, twin, REG_NOTE_KIND (link), ds); } @@ -4625,9 +4648,12 @@ check_sched_flags (void) gcc_assert (f & USE_GLAT); } -/* Checks global_live_at_{start, end} regsets. */ +/* Check global_live_at_{start, end} regsets. + If FATAL_P is TRUE, then abort execution at the first failure. + Overwise, print diagnostics to STDERR (this mode is for calling + from debugger). */ void -check_reg_live (void) +check_reg_live (bool fatal_p) { basic_block bb; @@ -4638,11 +4664,30 @@ check_reg_live (void) i = bb->index; if (glat_start[i]) - gcc_assert (bitmap_equal_p (bb->il.rtl->global_live_at_start, - glat_start[i])); + { + bool b = bitmap_equal_p (bb->il.rtl->global_live_at_start, + glat_start[i]); + + if (!b) + { + gcc_assert (!fatal_p); + + fprintf (stderr, ";; check_reg_live_at_start (%d) failed.\n", i); + } + } + if (glat_end[i]) - gcc_assert (bitmap_equal_p (bb->il.rtl->global_live_at_end, - glat_end[i])); + { + bool b = bitmap_equal_p (bb->il.rtl->global_live_at_end, + glat_end[i]); + + if (!b) + { + gcc_assert (!fatal_p); + + fprintf (stderr, ";; check_reg_live_at_end (%d) failed.\n", i); + } + } } } #endif /* ENABLE_CHECKING */ diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index fbb40565805..eb228925293 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -1133,7 +1133,7 @@ cgraph_decide_inlining_incrementally (struct cgraph_node *node, bool early) && !e->callee->local.disregard_inline_limits && !cgraph_recursive_inlining_p (node, e->callee, &e->inline_failed) && (!early - || (cgraph_estimate_size_after_inlining (1, e->caller, node) + || (cgraph_estimate_size_after_inlining (1, e->caller, e->callee) <= e->caller->global.insns)) && cgraph_check_inline_limits (node, e->callee, &e->inline_failed) && (DECL_SAVED_TREE (e->callee->decl) || e->callee->inline_decl)) diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 5f840751fb4..e3cde16e80f 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,37 @@ +2006-04-03 Andrew Haley + + PR java/26858 + * expr.c (build_field_ref): Don't check the field offset if + flag_syntax_only. + +2006-03-30 Andrew Haley + + PR java/26858 + * lang.c (java_attribute_table): New. + (LANG_HOOKS_ATTRIBUTE_TABLE): Define. + * expr.c (build_field_ref): Add a null pointer check for all + fields of offset > 4k. Don't do so for accesses via the this + pointer, which we know can never be null. + * class.c (build_java_method_type): Mark arg 1 of all nonstatic + methods nonnull. + +2006-03-30 Carlos O'Donell + + * Make-lang.in: Rename docdir to gcc_docdir. + +2006-03-30 Tom Tromey + + PR java/26042: + * parse.y (java_reorder_fields): Reset superclass field's size as + well. + +2006-03-28 Tom Tromey + + PR java/26390: + * parse.y (find_most_specific_methods_list): Added 'class' + argument. + (lookup_method_invoke): Updated. + 2006-03-15 Tom Tromey * jcf-write.c (generate_bytecode_insns): Use qualifying type for diff --git a/gcc/java/Make-lang.in b/gcc/java/Make-lang.in index 96ca2d20a43..c3393d2854a 100644 --- a/gcc/java/Make-lang.in +++ b/gcc/java/Make-lang.in @@ -380,15 +380,15 @@ java/gjavah-jni.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(JAVA_TREE_H) \ -DJNI_DEFAULT=1 \ $(srcdir)/java/gjavah.c $(OUTPUT_OPTION) -TEXI_JAVA_FILES = java/gcj.texi $(docdir)/include/fdl.texi \ - $(docdir)/include/gpl.texi $(docdir)/include/gcc-common.texi \ +TEXI_JAVA_FILES = java/gcj.texi $(gcc_docdir)/include/fdl.texi \ + $(gcc_docdir)/include/gpl.texi $(gcc_docdir)/include/gcc-common.texi \ gcc-vers.texi # Documentation doc/gcj.info: $(TEXI_JAVA_FILES) if test "x$(BUILD_INFO)" = xinfo; then \ rm -f doc/gcj.info*; \ - $(MAKEINFO) $(MAKEINFOFLAGS) -I $(docdir)/include -o $@ $<; \ + $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir)/include -o $@ $<; \ else true; fi doc/gcj.dvi: $(TEXI_JAVA_FILES) @@ -397,7 +397,7 @@ doc/gcj.dvi: $(TEXI_JAVA_FILES) $(htmldir)/java/index.html: $(TEXI_JAVA_FILES) $(mkinstalldirs) $(@D) rm -f $(@D)/* - $(TEXI2HTML) -I $(docdir)/include -I $(srcdir)/java -o $(@D) $< + $(TEXI2HTML) -I $(gcc_docdir)/include -I $(srcdir)/java -o $(@D) $< .INTERMEDIATE: gcj.pod gcjh.pod jv-scan.pod jcf-dump.pod gij.pod \ jv-convert.pod grmic.pod grmiregistry.pod gcj-dbtool.pod gjnih.pod diff --git a/gcc/java/class.c b/gcc/java/class.c index bce16779b75..a6074518f59 100644 --- a/gcc/java/class.c +++ b/gcc/java/class.c @@ -681,7 +681,17 @@ build_java_method_type (tree fntype, tree this_class, int access_flags) { if (access_flags & ACC_STATIC) return fntype; - return build_method_type (this_class, fntype); + fntype = build_method_type (this_class, fntype); + + /* We know that arg 1 of every nonstatic method is non-null; tell + the back-end so. */ + TYPE_ATTRIBUTES (fntype) = (tree_cons + (get_identifier ("nonnull"), + tree_cons (NULL_TREE, + build_int_cst (NULL_TREE, 1), + NULL_TREE), + TYPE_ATTRIBUTES (fntype))); + return fntype; } tree diff --git a/gcc/java/expr.c b/gcc/java/expr.c index 785ccc485bf..4a6afaa5827 100644 --- a/gcc/java/expr.c +++ b/gcc/java/expr.c @@ -130,6 +130,10 @@ static GTY(()) tree quick_stack; /* A free-list of unused permanent TREE_LIST nodes. */ static GTY((deletable)) tree tree_list_free_list; +/* The physical memory page size used in this computer. See + build_field_ref(). */ +static GTY(()) tree page_size; + /* The stack pointer of the Java virtual machine. This does include the size of the quick_stack. */ @@ -1678,11 +1682,29 @@ build_field_ref (tree self_value, tree self_class, tree name) } else { - int check = (flag_check_references - && ! (DECL_P (self_value) - && DECL_NAME (self_value) == this_identifier_node)); - tree base_type = promote_type (base_class); + + /* CHECK is true if self_value is not the this pointer. */ + int check = (! (DECL_P (self_value) + && DECL_NAME (self_value) == this_identifier_node)); + + /* Determine whether a field offset from NULL will lie within + Page 0: this is necessary on those GNU/Linux/BSD systems that + trap SEGV to generate NullPointerExceptions. + + We assume that Page 0 will be mapped with NOPERM, and that + memory may be allocated from any other page, so only field + offsets < pagesize are guaratneed to trap. We also assume + the smallest page size we'll encounter is 4k bytes. */ + if (! flag_syntax_only && check && ! flag_check_references + && ! flag_indirect_dispatch) + { + tree field_offset = byte_position (field_decl); + if (! page_size) + page_size = size_int (4096); + check = ! INT_CST_LT_UNSIGNED (field_offset, page_size); + } + if (base_type != TREE_TYPE (self_value)) self_value = fold_build1 (NOP_EXPR, base_type, self_value); if (! flag_syntax_only && flag_indirect_dispatch) @@ -1708,6 +1730,7 @@ build_field_ref (tree self_value, tree self_class, tree name) field_offset); field_offset = fold (convert (sizetype, field_offset)); + self_value = java_check_reference (self_value, check); address = fold_build2 (PLUS_EXPR, build_pointer_type (TREE_TYPE (field_decl)), diff --git a/gcc/java/lang.c b/gcc/java/lang.c index e1f822ea3a3..58f23e9e0e5 100644 --- a/gcc/java/lang.c +++ b/gcc/java/lang.c @@ -108,6 +108,14 @@ const char *const tree_code_name[] = { }; #undef DEFTREECODE +/* Table of machine-independent attributes. */ +const struct attribute_spec java_attribute_table[] = +{ + { "nonnull", 0, -1, false, true, true, + NULL }, + { NULL, 0, 0, false, false, false, NULL } +}; + /* Used to avoid printing error messages with bogus function prototypes. Starts out false. */ static bool inhibit_error_function_printing; @@ -213,6 +221,9 @@ struct language_function GTY(()) #undef LANG_HOOKS_SET_DECL_ASSEMBLER_NAME #define LANG_HOOKS_SET_DECL_ASSEMBLER_NAME java_mangle_decl +#undef LANG_HOOKS_ATTRIBUTE_TABLE +#define LANG_HOOKS_ATTRIBUTE_TABLE java_attribute_table + /* Each front end provides its own. */ const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; diff --git a/gcc/java/parse.y b/gcc/java/parse.y index 48a56d8f1d8..118c66f8221 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -134,7 +134,7 @@ static tree resolve_no_layout (tree, tree); static int invocation_mode (tree, int); static tree find_applicable_accessible_methods_list (int, tree, tree, tree); static void search_applicable_methods_list (int, tree, tree, tree, tree *, tree *); -static tree find_most_specific_methods_list (tree); +static tree find_most_specific_methods_list (tree, tree); static int argument_types_convertible (tree, tree); static tree patch_invoke (tree, tree, tree); static int maybe_use_access_method (int, tree *, tree *); @@ -7770,6 +7770,10 @@ java_reorder_fields (void) if (!DECL_NAME (TYPE_FIELDS (current_class))) { tree fields = TYPE_FIELDS (current_class); + /* This works around a problem where on some platforms, + the field might be given its size incorrectly. */ + DECL_SIZE (fields) = NULL_TREE; + DECL_SIZE_UNIT (fields) = NULL_TREE; TREE_CHAIN (fields) = nreverse (TREE_CHAIN (fields)); TYPE_SIZE (current_class) = NULL_TREE; } @@ -11249,7 +11253,7 @@ lookup_method_invoke (int lc, tree cl, tree class, tree name, tree arg_list) /* Find all candidates and then refine the list, searching for the most specific method. */ list = find_applicable_accessible_methods_list (lc, class, name, atl); - list = find_most_specific_methods_list (list); + list = find_most_specific_methods_list (list, class); if (list && !TREE_CHAIN (list)) return TREE_VALUE (list); @@ -11441,7 +11445,7 @@ search_applicable_methods_list (int lc, tree method, tree name, tree arglist, /* 15.11.2.2 Choose the Most Specific Method */ static tree -find_most_specific_methods_list (tree list) +find_most_specific_methods_list (tree list, tree class) { int max = 0; int abstract, candidates; @@ -11464,8 +11468,23 @@ find_most_specific_methods_list (tree list) /* Compare arguments and location where methods where declared */ if (argument_types_convertible (method_v, current_v)) { + /* We have a rather odd special case here. The front + end doesn't properly implement inheritance, so we + work around it here. The idea is, if we are + comparing a method declared in a class to one + declared in an interface, and the invocation's + qualifying class is a class (and not an interface), + then we consider the method's class to be the + qualifying class of the invocation. This lets us + fake the result of ordinary inheritance. */ + tree context_v = DECL_CONTEXT (current_v); + if (TYPE_INTERFACE_P (DECL_CONTEXT (method_v)) + && ! TYPE_INTERFACE_P (context_v) + && ! TYPE_INTERFACE_P (class)) + context_v = class; + if (valid_method_invocation_conversion_p - (DECL_CONTEXT (method_v), DECL_CONTEXT (current_v))) + (DECL_CONTEXT (method_v), context_v)) { int v = (DECL_SPECIFIC_COUNT (current_v) += 1); max = (v > max ? v : max); diff --git a/gcc/jump.c b/gcc/jump.c index 79a21b4d1ae..b60c2840720 100644 --- a/gcc/jump.c +++ b/gcc/jump.c @@ -260,11 +260,11 @@ mark_all_labels (rtx f) } } -/* Move all block-beg, block-end, loop-beg, loop-cont, loop-vtop, loop-end, - notes between START and END out before START. START and END may be such - notes. Returns the values of the new starting and ending insns, which - may be different if the original ones were such notes. - Return true if there were only such notes and no real instructions. */ +/* Move all block-beg, block-end and loop-beg notes between START and END out + before START. START and END may be such notes. Returns the values of the + new starting and ending insns, which may be different if the original ones + were such notes. Return true if there were only such notes and no real + instructions. */ bool squeeze_notes (rtx* startp, rtx* endp) @@ -282,9 +282,7 @@ squeeze_notes (rtx* startp, rtx* endp) next = NEXT_INSN (insn); if (NOTE_P (insn) && (NOTE_LINE_NUMBER (insn) == NOTE_INSN_BLOCK_END - || NOTE_LINE_NUMBER (insn) == NOTE_INSN_BLOCK_BEG - || NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_BEG - || NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_END)) + || NOTE_LINE_NUMBER (insn) == NOTE_INSN_BLOCK_BEG)) { /* BLOCK_BEG or BLOCK_END notes only exist in the `final' pass. */ gcc_assert (NOTE_LINE_NUMBER (insn) != NOTE_INSN_BLOCK_BEG diff --git a/gcc/lambda-code.c b/gcc/lambda-code.c index a47f5801bae..8c8b1e5f342 100644 --- a/gcc/lambda-code.c +++ b/gcc/lambda-code.c @@ -2578,7 +2578,7 @@ perfect_nestify (struct loops *loops, bool lambda_transform_legal_p (lambda_trans_matrix trans, int nb_loops, - varray_type dependence_relations) + VEC (ddr_p, heap) *dependence_relations) { unsigned int i, j; lambda_vector distres; @@ -2589,8 +2589,7 @@ lambda_transform_legal_p (lambda_trans_matrix trans, /* When there is an unknown relation in the dependence_relations, we know that it is no worth looking at this loop nest: give up. */ - ddr = (struct data_dependence_relation *) - VARRAY_GENERIC_PTR (dependence_relations, 0); + ddr = VEC_index (ddr_p, dependence_relations, 0); if (ddr == NULL) return true; if (DDR_ARE_DEPENDENT (ddr) == chrec_dont_know) @@ -2599,11 +2598,8 @@ lambda_transform_legal_p (lambda_trans_matrix trans, distres = lambda_vector_new (nb_loops); /* For each distance vector in the dependence graph. */ - for (i = 0; i < VARRAY_ACTIVE_SIZE (dependence_relations); i++) + for (i = 0; VEC_iterate (ddr_p, dependence_relations, i, ddr); i++) { - ddr = (struct data_dependence_relation *) - VARRAY_GENERIC_PTR (dependence_relations, i); - /* Don't care about relations for which we know that there is no dependence, nor about read-read (aka. output-dependences): these data accesses can happen in any order. */ diff --git a/gcc/lambda-mat.c b/gcc/lambda-mat.c index 0485a0f0c5c..39b75e66f73 100644 --- a/gcc/lambda-mat.c +++ b/gcc/lambda-mat.c @@ -23,7 +23,6 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include "coretypes.h" #include "tm.h" #include "ggc.h" -#include "varray.h" #include "tree.h" #include "lambda.h" diff --git a/gcc/lambda-trans.c b/gcc/lambda-trans.c index 301db32a98b..aff2f1df040 100644 --- a/gcc/lambda-trans.c +++ b/gcc/lambda-trans.c @@ -26,7 +26,6 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include "ggc.h" #include "tree.h" #include "target.h" -#include "varray.h" #include "lambda.h" /* Allocate a new transformation matrix. */ diff --git a/gcc/lambda.h b/gcc/lambda.h index 7a43be29b59..fc5679a5763 100644 --- a/gcc/lambda.h +++ b/gcc/lambda.h @@ -143,7 +143,6 @@ lambda_loopnest lambda_loopnest_transform (lambda_loopnest, lambda_trans_matrix) struct loop; struct loops; bool perfect_nest_p (struct loop *); -bool lambda_transform_legal_p (lambda_trans_matrix, int, varray_type); void print_lambda_loopnest (FILE *, lambda_loopnest, char); #define lambda_loop_new() (lambda_loop) ggc_alloc_cleared (sizeof (struct lambda_loop_s)) diff --git a/gcc/lists.c b/gcc/lists.c index 907ccf5ef2b..23529a362e2 100644 --- a/gcc/lists.c +++ b/gcc/lists.c @@ -1,6 +1,6 @@ /* List management for the GCC expander. Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2003, 2004 Free Software Foundation, Inc. + 1999, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This file is part of GCC. @@ -159,7 +159,7 @@ alloc_EXPR_LIST (int kind, rtx val, rtx next) node available, we'll use it, otherwise a call to gen_rtx_DEPS_LIST is made. */ rtx -alloc_DEPS_LIST (rtx val, rtx next, HOST_WIDE_INT ds) +alloc_DEPS_LIST (rtx val, rtx next, int ds) { rtx r; @@ -169,7 +169,7 @@ alloc_DEPS_LIST (rtx val, rtx next, HOST_WIDE_INT ds) unused_deps_list = XEXP (r, 1); XEXP (r, 0) = val; XEXP (r, 1) = next; - XWINT (r, 2) = ds; + XINT (r, 2) = ds; PUT_REG_NOTE_KIND (r, VOIDmode); gcc_assert (GET_CODE (r) == DEPS_LIST); @@ -257,7 +257,7 @@ copy_DEPS_LIST_list (rtx list) while (list) { - *resp = alloc_DEPS_LIST (XEXP (list, 0), 0, XWINT (list, 2)); + *resp = alloc_DEPS_LIST (XEXP (list, 0), 0, XINT (list, 2)); PUT_REG_NOTE_KIND (*resp, REG_NOTE_KIND (list)); resp = &XEXP (*resp, 1); list = XEXP (list, 1); diff --git a/gcc/loop-unroll.c b/gcc/loop-unroll.c index 6ef59476657..5c28eaf2f19 100644 --- a/gcc/loop-unroll.c +++ b/gcc/loop-unroll.c @@ -1670,7 +1670,17 @@ analyze_iv_to_split_insn (rtx insn) return NULL; ok = iv_analyze_result (insn, dest, &iv); - gcc_assert (ok); + + /* This used to be an assert under the assumption that if biv_p returns + true that iv_analyze_result must also return true. However, that + assumption is not strictly correct as evidenced by pr25569. + + Returning NULL when iv_analyze_result returns false is safe and + avoids the problems in pr25569 until the iv_analyze_* routines + can be fixed, which is apparently hard and time consuming + according to their author. */ + if (! ok) + return NULL; if (iv.step == const0_rtx || iv.mode != iv.extend_mode) diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 65f7151b0ce..41b4093e692 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -3464,6 +3464,9 @@ lower_omp_sections (tree *stmt_p, omp_context *ctx) new_body = alloc_stmt_list (); append_to_statement_list (ilist, &new_body); append_to_statement_list (stmt, &new_body); + /* ??? The OMP_RETURN doesn't logically belong here, but in + expand_omp_sections we expect this marker to be where the + individual sections join after completing the loop. */ append_to_statement_list (region_exit, &new_body); append_to_statement_list (olist, &new_body); append_to_statement_list (dlist, &new_body); @@ -3610,9 +3613,9 @@ lower_omp_single (tree *stmt_p, omp_context *ctx) lower_omp_single_simple (single_stmt, &BIND_EXPR_BODY (bind)); append_to_statement_list (dlist, &BIND_EXPR_BODY (bind)); + maybe_catch_exception (&BIND_EXPR_BODY (bind)); t = make_node (OMP_RETURN_EXPR); append_to_statement_list (t, &BIND_EXPR_BODY (bind)); - maybe_catch_exception (&BIND_EXPR_BODY (bind)); pop_gimplify_context (bind); BIND_EXPR_VARS (bind) = chainon (BIND_EXPR_VARS (bind), ctx->block_vars); @@ -3647,9 +3650,9 @@ lower_omp_master (tree *stmt_p, omp_context *ctx) x = build1 (LABEL_EXPR, void_type_node, lab); gimplify_and_add (x, &BIND_EXPR_BODY (bind)); + maybe_catch_exception (&BIND_EXPR_BODY (bind)); x = make_node (OMP_RETURN_EXPR); append_to_statement_list (x, &BIND_EXPR_BODY (bind)); - maybe_catch_exception (&BIND_EXPR_BODY (bind)); pop_gimplify_context (bind); BIND_EXPR_VARS (bind) = chainon (BIND_EXPR_VARS (bind), ctx->block_vars); @@ -3683,9 +3686,9 @@ lower_omp_ordered (tree *stmt_p, omp_context *ctx) x = built_in_decls[BUILT_IN_GOMP_ORDERED_END]; x = build_function_call_expr (x, NULL); gimplify_and_add (x, &BIND_EXPR_BODY (bind)); + maybe_catch_exception (&BIND_EXPR_BODY (bind)); x = make_node (OMP_RETURN_EXPR); append_to_statement_list (x, &BIND_EXPR_BODY (bind)); - maybe_catch_exception (&BIND_EXPR_BODY (bind)); pop_gimplify_context (bind); BIND_EXPR_VARS (bind) = chainon (BIND_EXPR_VARS (bind), ctx->block_vars); diff --git a/gcc/passes.c b/gcc/passes.c index cb844eeb69d..199473e3012 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -477,6 +477,7 @@ init_optimization_passes (void) NEXT_PASS (pass_init_datastructures); NEXT_PASS (pass_referenced_vars); NEXT_PASS (pass_create_structure_vars); + NEXT_PASS (pass_reset_cc_flags); NEXT_PASS (pass_build_ssa); NEXT_PASS (pass_early_warn_uninitialized); @@ -515,11 +516,12 @@ init_optimization_passes (void) NEXT_PASS (pass_dce); NEXT_PASS (pass_dominator); - /* The only copy propagation opportunities left after DOM - should be due to degenerate PHI nodes. So rather than - run the full copy propagator, just discover and copy - propagate away the degenerate PHI nodes. */ - NEXT_PASS (pass_phi_only_copy_prop); + /* The only const/copy propagation opportunities left after + DOM should be due to degenerate PHI nodes. So rather than + run the full propagators, run a specialized pass which + only examines PHIs to discover const/copy propagation + opportunities. */ + NEXT_PASS (pass_phi_only_cprop); NEXT_PASS (pass_phiopt); NEXT_PASS (pass_may_alias); @@ -536,11 +538,12 @@ init_optimization_passes (void) NEXT_PASS (pass_rename_ssa_copies); NEXT_PASS (pass_dominator); - /* The only copy propagation opportunities left after DOM - should be due to degenerate PHI nodes. So rather than - run the full copy propagator, just discover and copy - propagate away the degenerate PHI nodes. */ - NEXT_PASS (pass_phi_only_copy_prop); + /* The only const/copy propagation opportunities left after + DOM should be due to degenerate PHI nodes. So rather than + run the full propagators, run a specialized pass which + only examines PHIs to discover const/copy propagation + opportunities. */ + NEXT_PASS (pass_phi_only_cprop); NEXT_PASS (pass_reassoc); NEXT_PASS (pass_dce); @@ -566,11 +569,12 @@ init_optimization_passes (void) NEXT_PASS (pass_vrp); NEXT_PASS (pass_dominator); - /* The only copy propagation opportunities left after DOM - should be due to degenerate PHI nodes. So rather than - run the full copy propagator, just discover and copy - propagate away the degenerate PHI nodes. */ - NEXT_PASS (pass_phi_only_copy_prop); + /* The only const/copy propagation opportunities left after + DOM should be due to degenerate PHI nodes. So rather than + run the full propagators, run a specialized pass which + only examines PHIs to discover const/copy propagation + opportunities. */ + NEXT_PASS (pass_phi_only_cprop); NEXT_PASS (pass_cd_dce); @@ -632,7 +636,6 @@ init_optimization_passes (void) *p = NULL; p = &pass_rest_of_compilation.sub; - NEXT_PASS (pass_remove_unnecessary_notes); NEXT_PASS (pass_init_function); NEXT_PASS (pass_jump); NEXT_PASS (pass_insn_locators_initialize); @@ -730,6 +733,13 @@ execute_todo (unsigned int flags) if (flags & TODO_update_smt_usage) recalculate_used_alone (); + if (cfun && cfun->cfg) + { + basic_block bb; + FOR_ALL_BB (bb) + gcc_assert (!bb->aux); + } + /* Always cleanup the CFG before trying to update SSA . */ if (flags & TODO_cleanup_cfg) { diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog index a3988c77606..6ee7c2411d3 100644 --- a/gcc/po/ChangeLog +++ b/gcc/po/ChangeLog @@ -1,3 +1,7 @@ +2006-03-31 Joseph S. Myers + + * sv.po: Update. + 2006-03-13 Joseph S. Myers * be.po, ca.po, da.po, de.po, el.po, es.po, fr.po, ja.po, nl.po, diff --git a/gcc/po/sv.po b/gcc/po/sv.po index e6f881def59..63b286db491 100644 --- a/gcc/po/sv.po +++ b/gcc/po/sv.po @@ -1,16 +1,16 @@ # Swedish messages for GCC. -# Copyright © 2000, 2005 Free Software Foundation, Inc. +# Copyright © 2000, 2005, 2006 Free Software Foundation, Inc. # Dennis Björklund , 2000, 2001, 2002. -# Göran Uddeborg , 2005. +# Göran Uddeborg , 2005, 2006. # # Remember: GCC team does not want RCS keywords in the header! # msgid "" msgstr "" -"Project-Id-Version: gcc 4.1-b20051125\n" +"Project-Id-Version: gcc 4.1.0\n" "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" "POT-Creation-Date: 2006-02-28 00:11-0800\n" -"PO-Revision-Date: 2005-11-29 21:25+0100\n" +"PO-Revision-Date: 2006-03-11 11:59+0100\n" "Last-Translator: Göran Uddeborg \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" @@ -471,9 +471,8 @@ msgid "redefined extern inline functions are not considered for inlining" msgstr "omdefinierade externa inline-funktioner beaktas inte för inline:ing" #: cgraph.c:305 cgraphunit.c:599 -#, fuzzy msgid "function not considered for inlining" -msgstr "funktionen inte \"%s\" kan inte deklareras som \"mutable\"" +msgstr "funktionen inte beaktad för inline:ing" #: cgraph.c:307 cgraphunit.c:597 ipa-inline.c:289 #, fuzzy @@ -538,7 +537,7 @@ msgstr "kan inte hitta \"%s\"" #: collect2.c:1556 collect2.c:2045 collect2.c:2200 gcc.c:2809 #, c-format msgid "pex_init failed" -msgstr "" +msgstr "pex_init misslyckades" #: collect2.c:1591 #, c-format @@ -555,14 +554,14 @@ msgstr "" "write_c_file - utdatanamn är %s, prefix är %s\n" #: collect2.c:2019 -#, fuzzy, c-format +#, c-format msgid "cannot find 'nm'" msgstr "kan inte hitta \"nm\"" #: collect2.c:2066 -#, fuzzy, c-format +#, c-format msgid "can't open nm output" -msgstr "Kan inte öppna utdatafil \"%s\"" +msgstr "kan inte öppna nm-utdata" #: collect2.c:2110 #, c-format @@ -577,7 +576,7 @@ msgstr "fini-funktion funnen i objekt %s" #: collect2.c:2221 #, fuzzy, c-format msgid "can't open ldd output" -msgstr "Kan inte öppna utdatafil \"%s\"" +msgstr "kan inte öppna ldd-utdata" #: collect2.c:2224 #, c-format @@ -609,9 +608,9 @@ msgid "%s: cannot open as COFF file" msgstr "%s: kan inte öppna som COFF-fil" #: collect2.c:2585 -#, fuzzy, c-format +#, c-format msgid "library lib%s not found" -msgstr "Hittade inte bibliotek lib%s" +msgstr "biblioteket lib%s finns inte" #: cppspec.c:106 #, c-format @@ -813,7 +812,7 @@ msgstr "" #: gcc.c:2848 msgid "failed to get exit status" -msgstr "" +msgstr "misslyckades att få slutstatus" #: gcc.c:2854 #, fuzzy @@ -963,6 +962,8 @@ msgid "" " --sysroot= Use as the root directory for headers\n" " for headers and libraries\n" msgstr "" +" --sysroot= Använd som rotkatalogen för huvuden och\n" +" bibliotek\n" #: gcc.c:3076 msgid " -B Add to the compiler's search paths\n" @@ -1239,7 +1240,7 @@ msgstr "Inga indatafiler" #: gcc.c:6466 #, c-format msgid "cannot specify -o with -c or -S with multiple files" -msgstr "" +msgstr "det går inte att ange -o med -c eller -S med flera filer" #: gcc.c:6500 #, fuzzy, c-format @@ -1284,7 +1285,7 @@ msgstr "f #: gcc.c:7748 #, c-format msgid "unknown operator '%s' in %%:version-compare" -msgstr "" +msgstr "okänd operator \"%s\" i %%:version-compare" #: gcov.c:388 #, c-format @@ -1625,7 +1626,7 @@ msgstr "rekursiv inline:ing" #: ipa-inline.c:779 msgid "call is unlikely" -msgstr "" +msgstr "anrop är osannolikt" #: ipa-inline.c:850 msgid "--param inline-unit-growth limit reached" @@ -1647,15 +1648,15 @@ msgstr "I funktion `%s':" #: loop-iv.c:2709 tree-ssa-loop-niter.c:1026 msgid "assuming that the loop is not infinite" -msgstr "" +msgstr "antar att slingan inte är oändlig" #: loop-iv.c:2710 tree-ssa-loop-niter.c:1027 msgid "cannot optimize possibly infinite loops" -msgstr "" +msgstr "kan inte optimera potentiellt oändliga slingor" #: loop-iv.c:2718 tree-ssa-loop-niter.c:1031 msgid "assuming that the loop counter does not overflow" -msgstr "" +msgstr "antar att slingräknaren inte spiller över" #: loop-iv.c:2719 tree-ssa-loop-niter.c:1032 msgid "cannot optimize loop, the loop counter may overflow" @@ -29137,25 +29138,9 @@ msgstr "attributet `%s' ignorerat" #~ msgid "syntax error: cannot back up" #~ msgstr "syntaxfel: kan inte backa tillbaka" -#, fuzzy -#~ msgid "syntax error, unexpected %s" -#~ msgstr "syntaxfel vid token \"%s\"" - -#, fuzzy -#~ msgid "syntax error, unexpected %s, expecting %s" -#~ msgstr "syntaxfel vid token \"%s\"" - #~ msgid "syntax error" #~ msgstr "syntaxfel" -#, fuzzy -#~ msgid "Variable '%s' at %L cannot appear in an initialization expression" -#~ msgstr "spill i konstant uttryck" - -#, fuzzy -#~ msgid "Missing term" -#~ msgstr "saknas '(' efter predikat" - #~ msgid "parse error" #~ msgstr "parsningsfel" @@ -29168,308 +29153,6 @@ msgstr "attributet `%s' ignorerat" #~ msgid "parse error: cannot back up" #~ msgstr "parsningsfel: kan inte backa tillbaka" -#, fuzzy -#~ msgid "Missing name" -#~ msgstr "heltalsspill i uttryck" - -#, fuzzy -#~ msgid "Class or interface declaration expected" -#~ msgstr "Cirkulärt arv i interfacedeklaration för \"%s\"" - -#, fuzzy -#~ msgid "Missing class name" -#~ msgstr "motstridande deklarationer av \"%s\"" - -#, fuzzy -#~ msgid "Missing super class name" -#~ msgstr "motstridande deklarationer av \"%s\"" - -#, fuzzy -#~ msgid "Missing interface name" -#~ msgstr "\"%s\" definierades tidigare här" - -#, fuzzy -#~ msgid "Missing variable initializer" -#~ msgstr "initierare saknas" - -#, fuzzy -#~ msgid "Invalid declaration" -#~ msgstr "ogiltig #indent" - -#, fuzzy -#~ msgid "Invalid method declaration, method name required" -#~ msgstr "omdeklaration av \"%s\"" - -#, fuzzy -#~ msgid "Invalid method declaration, return type required" -#~ msgstr "ogiltig mottagartyp \"%s\"" - -#, fuzzy -#~ msgid "Missing formal parameter term" -#~ msgstr "ogiltigt parametervärde \"%s\"" - -#, fuzzy -#~ msgid "Missing identifier" -#~ msgstr "initierare saknas" - -#, fuzzy -#~ msgid "Invalid interface type" -#~ msgstr "ogiltig mottagartyp \"%s\"" - -#, fuzzy -#~ msgid "Invalid expression statement" -#~ msgstr "ogiltigt uttryck som operand" - -#, fuzzy -#~ msgid "Missing or invalid constant expression" -#~ msgstr "spill i konstant uttryck" - -#, fuzzy -#~ msgid "Invalid control expression" -#~ msgstr "ogiltigt sanningsvärdeuttryck" - -#, fuzzy -#~ msgid "Invalid update expression" -#~ msgstr "ogiltigt sanningsvärdeuttryck" - -#, fuzzy -#~ msgid "Invalid init statement" -#~ msgstr "ogiltigt lvärde i asm-sats" - -#, fuzzy -#~ msgid "'class' expected" -#~ msgstr "tomt intervall angivet" - -#, fuzzy -#~ msgid "']' expected, invalid type expression" -#~ msgstr "ogiltigt sanningsvärdeuttryck" - -#, fuzzy -#~ msgid "Invalid type expression" -#~ msgstr "ogiltigt sanningsvärdeuttryck" - -#, fuzzy -#~ msgid "Invalid reference type" -#~ msgstr "ogiltig mottagartyp \"%s\"" - -#, fuzzy -#~ msgid "Only constructors can invoke constructors" -#~ msgstr "konstruerare kan inte vara en statisk medlemsfunktion\"" - -#, fuzzy -#~ msgid "Generate multiply instructions" -#~ msgstr "Generera sammansmälta multiplikations-/additionsinstruktioner" - -#, fuzzy -#~ msgid "duplicate %" -#~ msgstr "flera \"%s\"" - -#, fuzzy -#~ msgid "Modifier %qs declared twice" -#~ msgstr "fält \"%s\" deklarerad som en funktion" - -#, fuzzy -#~ msgid "" -#~ "%s.\n" -#~ "%s" -#~ msgstr "%s: %s" - -#, fuzzy -#~ msgid "Missing return statement" -#~ msgstr "heltalsspill i uttryck" - -#, fuzzy -#~ msgid "Unreachable statement" -#~ msgstr "Aktivera separat datasegment" - -#, fuzzy -#~ msgid "%s name %qs clashes with imported type %qs" -#~ msgstr "parameter \"%s\" deklarerad som void" - -#, fuzzy -#~ msgid "Qualifier must be a reference" -#~ msgstr "Använd stor minnesmodell" - -#, fuzzy -#~ msgid "Duplicate variable declaration: %<%s %s%> was %<%s %s%> (%s:%d)" -#~ msgstr "Cirkulärt arv i interfacedeklaration för \"%s\"" - -#, fuzzy -#~ msgid "%s: recursive invocation of constructor %qs" -#~ msgstr "omdefiniering av \"struct %s\"" - -#, fuzzy -#~ msgid "Can't subclass final classes: %s" -#~ msgstr "Kan inte hitta klass \"%s\"" - -#, fuzzy -#~ msgid "Type %qs not found in declaration of field %qs" -#~ msgstr "två eller fler datatyper i deklaration av \"%s\"" - -#, fuzzy -#~ msgid "Type %qs not found in the declaration of the local variable %qs" -#~ msgstr "Cirkulärt arv i interfacedeklaration för \"%s\"" - -#, fuzzy -#~ msgid "Duplicate %s declaration %qs" -#~ msgstr "dubbel deklaration av etikett \"%s\"" - -#, fuzzy -#~ msgid "Package %qs not found in import" -#~ msgstr "metod \"%s\" kan inte hittas i klassen" - -#, fuzzy -#~ msgid "Type %qs also potentially defined in package %qs" -#~ msgstr "kunde inte hitta klassen \"%s\"" - -#, fuzzy -#~ msgid "Undefined variable %qs" -#~ msgstr "oanvänd variabel \"%s\"" - -#, fuzzy -#~ msgid "No variable %qs defined in class %qs" -#~ msgstr "kunde inte hitta klassen \"%s\"" - -#, fuzzy -#~ msgid "Undefined variable or class name: %qs" -#~ msgstr "motstridande deklarationer av \"%s\"" - -#, fuzzy -#~ msgid "Can't use type %qs as a qualifier" -#~ msgstr "fält \"%s\" har en inkomplett typ" - -#, fuzzy -#~ msgid "No variable %qs defined in type %qs" -#~ msgstr "kan inte deklarera \"::main\" som en mall" - -#, fuzzy -#~ msgid "The class %qs has been deprecated" -#~ msgstr "tredje argumentet till \"%s\" är inte länge rekommenderat" - -#, fuzzy -#~ msgid "Class %qs not found in type declaration" -#~ msgstr "oanvändbart nyckelord eller typnamn i tom deklaration" - -#, fuzzy -#~ msgid "Constant expression required" -#~ msgstr "spill i konstant uttryck" - -#, fuzzy -#~ msgid "Incompatible type for case. Can't convert %qs to %" -#~ msgstr "inkompatibla typer i %s" - -#, fuzzy -#~ msgid "Duplicate case label: %" -#~ msgstr "upprepat case-värde" - -#, fuzzy -#~ msgid "missing static field %qs" -#~ msgstr "Nummer saknas efter %s" - -#, fuzzy -#~ msgid "Invalid left hand side of assignment" -#~ msgstr "ogiltigt lvalue i tilldelning" - -#, fuzzy -#~ msgid "Incompatible type for %s. Can't convert %qs to %qs" -#~ msgstr "inkompatibla typer i %s" - -#, fuzzy -#~ msgid "Incompatible type for %s. Explicit cast needed to convert %qs to %qs" -#~ msgstr "inkompatibla typer i %s" - -#, fuzzy -#~ msgid "unregistered operator %s" -#~ msgstr "ej igenkänd flagga `-%s'" - -#, fuzzy -#~ msgid "Invalid argument %qs for %" -#~ msgstr "ogiltigt typargument till \"%s\"" - -#, fuzzy -#~ msgid "Incompatible type for %qs. Can't convert %qs to %qs" -#~ msgstr "inkompatibla typer i %s" - -#, fuzzy -#~ msgid "Invalid argument type %qs to %qs" -#~ msgstr "ogiltigt parametervärde \"%s\"" - -#, fuzzy -#~ msgid "Invalid cast from %qs to %qs" -#~ msgstr "ogiltig mottagartyp \"%s\"" - -#, fuzzy -#~ msgid "Incompatible type for %<[]%>. Can't convert %qs to %" -#~ msgstr "inkompatibla typer i %s" - -#, fuzzy -#~ msgid "Invalid array initializer for non-array type %qs" -#~ msgstr "vektor initierad från icke-konstant vektoruttryck" - -#, fuzzy -#~ msgid "Incompatible type for array. %s convert %qs to %qs" -#~ msgstr "inkompatibla typer i %s" - -#, fuzzy -#~ msgid "% inside instance initializer" -#~ msgstr "tomt indexintervall i initierare" - -#, fuzzy -#~ msgid "% inside static initializer" -#~ msgstr "tomt indexintervall i initierare" - -#, fuzzy -#~ msgid "% with value from constructor %qs" -#~ msgstr "returnerar ett värde från en destruktor" - -#, fuzzy -#~ msgid "Declaration of %qs shadows a previous label declaration" -#~ msgstr "deklaration av \"%s\" döljer en parameter" - -#, fuzzy -#~ msgid "This is the location of the previous declaration of label %qs" -#~ msgstr "ingen tidigare deklaration av \"%s\"" - -#, fuzzy -#~ msgid "No label definition found for %qs" -#~ msgstr "omdefiniering av \"%s\"" - -#, fuzzy -#~ msgid "% must be in loop" -#~ msgstr "continue-sats som inte är i en loop" - -#, fuzzy -#~ msgid "continue label %qs does not name a loop" -#~ msgstr "ISO C förbjuder typkonvertering till unionstyper" - -#, fuzzy -#~ msgid "% must be in loop or switch" -#~ msgstr "break-sats som inte är i en loop eller switch" - -#, fuzzy -#~ msgid "duplicate case label: %<" -#~ msgstr "upprepning av medlem \"%s\"" - -#, fuzzy -#~ msgid "original label is here" -#~ msgstr "Justera alla etiketter" - -#, fuzzy -#~ msgid "Exception %qs can't be thrown in initializer" -#~ msgstr "tomt indexintervall i initierare" - -#, fuzzy -#~ msgid "Incompatible type for %. Can't convert %qs to %qs" -#~ msgstr "inkompatibla typer i %s" - -#, fuzzy -#~ msgid "Discouraged redundant use of %qs modifier in declaration of %s" -#~ msgstr "flera lagringsklasser i deklaration av \"%s\"" - -#, fuzzy -#~ msgid "Discouraged redundant use of %qs modifier in declaration of %s %qs" -#~ msgstr "flera lagringsklasser i deklaration av \"%s\"" - #~ msgid "parser stack overflow" #~ msgstr "parsestack överfull" @@ -29515,10 +29198,6 @@ msgstr "attributet `%s' ignorerat" #~ msgid ";; Processing block from %d to %d, %d sets.\n" #~ msgstr ";; Bearbetar block från %d till %d, %d mängder.\n" -#, fuzzy -#~ msgid " -m%-23s [undocumented]\n" -#~ msgstr " -m%-23.23s [odokumenterad]\n" - #~ msgid "" #~ "\n" #~ "There are undocumented target specific options as well.\n" @@ -29598,29 +29277,9 @@ msgstr "attributet `%s' ignorerat" #~ msgid "Select CPU to generate code for" #~ msgstr "Välj CPU att generera kod för" -#, fuzzy -#~ msgid "invalid operand for 'v' modifier" -#~ msgstr "ogiltig operand för %V" - -#, fuzzy -#~ msgid "invalid operand for 'P' modifier" -#~ msgstr "ogiltig operand för %V" - #~ msgid "unrecognized supposed constant in cris_global_pic_symbol" #~ msgstr "oväntad antagen konstant i cris_global_pic_symbol" -#, fuzzy -#~ msgid "Do not generate H8S code" -#~ msgstr "Generera inte H8/S-kod" - -#, fuzzy -#~ msgid "Do not generate H8SX code" -#~ msgstr "Generera inte H8/S-kod" - -#, fuzzy -#~ msgid "Do not generate H8S/2600 code" -#~ msgstr "Generera inte kod för H8/S2600" - #~ msgid "Do not use registers for argument passing" #~ msgstr "Använd inte register för argumentskickning" @@ -29654,33 +29313,9 @@ msgstr "attributet `%s' ignorerat" #~ msgid "Do not inline all known string operations" #~ msgstr "Inline:a inte alla kända strängoperationer" -#, fuzzy -#~ msgid "Do not support MMX built-in functions" -#~ msgstr "Stöd inte inbyggda funktioner med MMX" - -#, fuzzy -#~ msgid "Do not support 3DNow! built-in functions" -#~ msgstr "Stöd inte inbyggda funktioner med MMX" - -#, fuzzy -#~ msgid "Do not support MMX and SSE built-in functions and code generation" -#~ msgstr "Stöd inte inbyggda funktioner med MMX och SSE" - -#, fuzzy -#~ msgid "Do not support MMX, SSE and SSE2 built-in functions and code generation" -#~ msgstr "Stöd inte inbyggda funktioner med MMX och SSE" - -#, fuzzy -#~ msgid "Do not support MMX, SSE, SSE2 and SSE3 built-in functions and code generation" -#~ msgstr "Stöd inte inbyggda funktioner med MMX och SSE" - #~ msgid "Use gcc default bitfield layout" #~ msgstr "Använd gcc:s standardbitfältslayout" -#, fuzzy -#~ msgid "Do not use red-zone in the x86-64 code" -#~ msgstr "Generera inte H8/S-kod" - #~ msgid "Do not use direct references against %gs when accessing tls data" #~ msgstr "Använd inte direkta referenser mot %gs vid åtkomst av tls-data" @@ -29714,10 +29349,6 @@ msgstr "attributet `%s' ignorerat" #~ msgid "Don't put uninitialized constants in ROM" #~ msgstr "Placera inte oinitierade konstanter i ROM" -#, fuzzy -#~ msgid "Do no generate code for a 68851" -#~ msgstr "Generera kod för c1" - #~ msgid "Disable separate data segment" #~ msgstr "Avaktivera separat datasegment" @@ -29778,10 +29409,6 @@ msgstr "attributet `%s' ignorerat" #~ msgid "Don't generate fused multiply/add instructions" #~ msgstr "Generera inte sammansmälta multipikations-/additionsinstruktioner" -#, fuzzy -#~ msgid "Don't perform VR4130-specific alignment optimizations" -#~ msgstr "Utför inte optimering för svansrekursion" - #~ msgid "Don't work around early 4300 hardware bug" #~ msgstr "Gå inte runt hårdvarufel i tidiga 4300" @@ -29851,10 +29478,6 @@ msgstr "attributet `%s' ignorerat" #~ msgid "Do not use register sb" #~ msgstr "Använd inte register sb" -#, fuzzy -#~ msgid "Do not use bit-field instructions" -#~ msgstr "Använd inte bitfältsinstruktioner" - #~ msgid "Generate code for high memory" #~ msgstr "Generera kod för högt minne" @@ -29893,28 +29516,12 @@ msgstr "attributet `%s' ignorerat" #~ msgid "Do not put jumps in call delay slots" #~ msgstr "Placera inte hopp i fördröjda anropsfack" -#, fuzzy -#~ msgid "Do not disable indexed addressing" -#~ msgstr "okänt registernamn: %s" - -#, fuzzy -#~ msgid "Do not use portable calling conventions" -#~ msgstr "Använd inte divisionsinstruktionen" - #~ msgid "Do not assume code will be assembled by GAS" #~ msgstr "Anta inte att kod kommer assembleras av GAS" -#, fuzzy -#~ msgid "Do not use software floating point" -#~ msgstr "Använd mjukvaruflytttal" - #~ msgid "Do not emit long load/store sequences" #~ msgstr "Mata inte ut långa load-/store-sekvenser" -#, fuzzy -#~ msgid "Do not generate code for huge switch statements" -#~ msgstr "Generera kod för Intel as" - #~ msgid "Generate long calls only when needed" #~ msgstr "Generera långa anrop bara vid behov" @@ -29946,22 +29553,6 @@ msgstr "attributet `%s' ignorerat" #~ msgid "Do not use POWER2 instruction set" #~ msgstr "Använd inte instruktionsuppsättning för POWER2" -#, fuzzy -#~ msgid "Do not use PowerPC General Purpose group optional instructions" -#~ msgstr "Använd inte bitfältsinstruktioner" - -#, fuzzy -#~ msgid "Do not use PowerPC Graphics group optional instructions" -#~ msgstr "Använd inte bitfältsinstruktioner" - -#, fuzzy -#~ msgid "Do not use PowerPC-64 instruction set" -#~ msgstr "Använd inte bitfältsinstruktioner" - -#, fuzzy -#~ msgid "Do not use AltiVec instructions" -#~ msgstr "Använd inte bitfältsinstruktioner" - #~ msgid "Place variable addresses in the regular TOC" #~ msgstr "Placera variabeladresser i den vanliga TOC" @@ -29971,10 +29562,6 @@ msgstr "attributet `%s' ignorerat" #~ msgid "Do not generate string instructions for block moves" #~ msgstr "Generera inte stränginstruktioner för blockförflyttningar" -#, fuzzy -#~ msgid "Do not generate single field mfcr instruction" -#~ msgstr "Använd inte bitfältsinstruktioner" - #~ msgid "Specify yes/no if isel instructions should be generated" #~ msgstr "Ange med yes/no om isel-instruktioner skall genereras" @@ -29996,18 +29583,6 @@ msgstr "attributet `%s' ignorerat" #~ msgid "Don't produce code relocatable at runtime" #~ msgstr "Producera inte kod som kan omlokaliserar vid körtillfället" -#, fuzzy -#~ msgid "Don't use EABI" -#~ msgstr "Använd inte EABI." - -#, fuzzy -#~ msgid "Don't use alternate register names" -#~ msgstr "Använd inte alternativa registernamn." - -#, fuzzy -#~ msgid "Don't use bras" -#~ msgstr "Använd inte EABI." - #~ msgid "Don't print additional debug prints" #~ msgstr "Skriv inte ytterligare felsökningsutskrifter" @@ -30017,14 +29592,6 @@ msgstr "attributet `%s' ignorerat" #~ msgid "Disable tpf OS tracing code" #~ msgstr "Avaktivera spårningskod för OS:et tpf" -#, fuzzy -#~ msgid "Disable fused multiply/add instructions" -#~ msgstr "Använd inte bitfältsinstruktioner" - -#, fuzzy -#~ msgid "Don't maintain backchain pointer" -#~ msgstr "Generera inte kod för stackkontroll" - #~ msgid "Don't use packed stack layout" #~ msgstr "Använd inte packad stackutläggning" @@ -30058,14 +29625,6 @@ msgstr "attributet `%s' ignorerat" #~ msgid "Do not optimize tail call instructions in assembler or linker" #~ msgstr "Optimera inte svansanropsinstruktioner i assembler och länkare" -#, fuzzy -#~ msgid "Compile for v850e1 processor" -#~ msgstr "Kompilera för processorn v850" - -#, fuzzy -#~ msgid "Compile for v850e processor" -#~ msgstr "Kompilera för processorn v850" - #~ msgid "Use PC-relative L32R instruction to load constants" #~ msgstr "Använd PC-relativ L32R-instruktion för att läsa konstanter" @@ -30099,211 +29658,14 @@ msgstr "attributet `%s' ignorerat" #~ msgid "-iwithprefixbefore \tAdd to the end of the main include path" #~ msgstr "-iwithprefixbefore \tLägg till till slutet huvudsökvägen för inkluderingar" -#, fuzzy -#~ msgid "-pg or -p and -fomit-frame-pointer are incompatible" -#~ msgstr "-pg och -fomit-frame-pointer är inkompatibla" - -#, fuzzy -#~ msgid "attempt to take address of bit-field structure member %qs" -#~ msgstr "kan inte ta adressen till bitfält \"%s\"" - -#, fuzzy -#~ msgid "%Jlabel %qD used but not defined" -#~ msgstr "etikett \"%s\" använd men inte definierad" - -#, fuzzy -#~ msgid "%Jlabel %qD defined but not used" -#~ msgstr "etikett \"%s\" definierad men inte använd" - -#, fuzzy -#~ msgid "%J%qD redeclared as different kind of symbol" -#~ msgstr "\"%s\" omdeklarerad som en annan sorts symbol" - -#, fuzzy -#~ msgid "%Jdeclaration of %qD shadows a parameter" -#~ msgstr "deklaration av \"%s\" döljer en parameter" - -#, fuzzy -#~ msgid "%Jdeclaration of %qD shadows a global declaration" -#~ msgstr "deklaration av \"%s\" döljer en parameter" - -# local, det kan troligen vara både lokal variabel och lokal funktion?? -#, fuzzy -#~ msgid "%Jdeclaration of %qD shadows a previous local" -#~ msgstr "deklaration av \"%s\" döljer en tidigare lokal" - -#, fuzzy -#~ msgid "label %qs referenced outside of any function" -#~ msgstr "etikett %s är refererad till utanför en funktion" - -#, fuzzy -#~ msgid "%Jinitializer fails to determine size of %qD" -#~ msgstr "initierare misslyckas med att bestämma storlek på \"%s\"" - -#, fuzzy -#~ msgid "%Jarray size missing in %qD" -#~ msgstr "fältstorlek saknas i \"%s\"" - -#, fuzzy -#~ msgid "%Jstorage size of %qD isn%'t known" -#~ msgstr "lagringsstorlek på \"%s\" är okänd" - -#, fuzzy -#~ msgid "%Jstorage size of %qD isn%'t constant" -#~ msgstr "lagringsstorlek på \"%s\" är inte konstant" - #~ msgid "-Wmissing-format-attribute ignored without -Wformat" #~ msgstr "-Wmissing-format-attribute ignorerad utan -Wformat" -#, fuzzy -#~ msgid "%qT has no member named %qs" -#~ msgstr "%s har ingen medlem med namn \"%s\"" - -#, fuzzy -#~ msgid "warning: -pipe ignored because -time specified" -#~ msgstr "Varning: -pipe ignorerad eftersom -time angiven" - -#, fuzzy -#~ msgid "invalid option %qs" -#~ msgstr "Ogiltig flagga %s" - -#, fuzzy -#~ msgid "value-based profiling not yet implemented in trees." -#~ msgstr "Profilering är inte implementerat ännu." - -#, fuzzy -#~ msgid "-fspeculative-prefetching not supported for this target" -#~ msgstr "-fdata-sections stöds inte för AIX" - -#, fuzzy -#~ msgid "-fspeculative-prefetching not supported for this target (try -march switches)" -#~ msgstr "-fdata-sections stöds inte för AIX" - -#, fuzzy -#~ msgid "control may reach end of non-void function %qD being inlined" -#~ msgstr "Programflödet når slutet på en icke-void-funktion" - -#, fuzzy -#~ msgid "unsupported defining stmt" -#~ msgstr "ej stödd version" - #~ msgid "bad value (%s) for -mcpu switch" #~ msgstr "ogiltigt värde (%s) till flagga -mcpu" -#, fuzzy -#~ msgid "unexpected function type needing stack adjustment for __builtin_eh_return" -#~ msgstr "funktion använder __builtin_eh_return" - -#, fuzzy -#~ msgid "bad value (%s) for -tune= switch" -#~ msgstr "ogiltigt värde (%s) till flagga -mcpu" - -#, fuzzy -#~ msgid "The compiler does not support -march=%s." -#~ msgstr "ISO C stöder inte formatstorlek i strftime" - -#, fuzzy -#~ msgid "bad value (%s) for -flush-trap=n (0=" -#~ msgstr "Ogiltig flagga \"-mstack-increment=%s\"" - -#, fuzzy -#~ msgid "unrecognized option %<-mfix-vr4130%s%>" -#~ msgstr "ej igenkänd flagga `-%s'" - -#, fuzzy -#~ msgid "bad value (%s) for %s" -#~ msgstr "ogiltigt värde (%s) till flagga %s" - -#, fuzzy -#~ msgid "invalid value for -mwarn-framesize" -#~ msgstr "Felaktigt värde för -mcall-%s" - -#, fuzzy -#~ msgid "invalid value for -mstack-size" -#~ msgstr "Felaktigt värde för -msdata-%s" - -#, fuzzy -#~ msgid "invalid value for -mstack-guard" -#~ msgstr "Felaktigt värde för -msdata-%s" - -#, fuzzy -#~ msgid "%Hvariable %qD definition is marked dllimport." -#~ msgstr "statisk variabel \"%s\" är markerad som dllimport" - -#, fuzzy -#~ msgid "%s=%s is not numeric" -#~ msgstr "%s=%s är för stor." - -#, fuzzy -#~ msgid "%s=%s is too large" -#~ msgstr "%s=%s är för stor." - -#, fuzzy -#~ msgid "%J%s %+#D" -#~ msgstr "%s: %s" - -#, fuzzy -#~ msgid "%qD invalid in %qT" -#~ msgstr "Ogiltig flagga \"%s\"" - -#, fuzzy -#~ msgid "using-declaration cannot name destructor" -#~ msgstr "multiple deklaration av metod \"%s\"" - -#, fuzzy -#~ msgid "namespace %qT undeclared" -#~ msgstr "parameter \"%s\" deklarerad som void" - -#, fuzzy -#~ msgid " first declared as %q#D here" -#~ msgstr "\"%s\" är tidigare deklarerad här" - -#, fuzzy -#~ msgid " also declared as %q#D here" -#~ msgstr "\"%s\" är tidigare deklarerad här" - #~ msgid "creating array with size zero" #~ msgstr "skapar ett fält med storlek noll" #~ msgid "incomplete type unification" #~ msgstr "inkomplett typunifiering" - -#, fuzzy -#~ msgid "ignoring extra initializers for %qT" -#~ msgstr "kan inte initiera friend-funktion \"%s\"" - -#, fuzzy -#~ msgid "variable-sized object of type %qT may not be initialized" -#~ msgstr "objekt med variabel storlek kan inte initieras" - -#, fuzzy -#~ msgid "%Jlabel '%D' used but not defined" -#~ msgstr "etikett \"%s\" använd men inte definierad" - -#, fuzzy -#~ msgid "%Jlabel '%D' defined but not used" -#~ msgstr "etikett \"%s\" definierad men inte använd" - -#, fuzzy -#~ msgid "can't mangle %s" -#~ msgstr "kan inte stänga %s" - -#, fuzzy -#~ msgid "object does not conform to the %qs protocol" -#~ msgstr "klass \"%s\" implementerar inte protokollet \"%s\"" - -#, fuzzy -#~ msgid "class %qs does not implement the %qs protocol" -#~ msgstr "klass \"%s\" implementerar inte protokollet \"%s\"" - -#, fuzzy -#~ msgid "%Jprevious declaration of '%D'" -#~ msgstr "tidigare deklaration av \"%s\"" - -#, fuzzy -#~ msgid "static access to object of type %" -#~ msgstr "statisk access till objekt av typ \"id\"" diff --git a/gcc/recog.c b/gcc/recog.c index 82cacfed50d..342699f71e9 100644 --- a/gcc/recog.c +++ b/gcc/recog.c @@ -31,6 +31,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include "hard-reg-set.h" #include "recog.h" #include "regs.h" +#include "addresses.h" #include "expr.h" #include "function.h" #include "flags.h" @@ -2157,7 +2158,7 @@ preprocess_constraints (void) case 'p': op_alt[j].is_address = 1; op_alt[j].cl = reg_class_subunion[(int) op_alt[j].cl] - [(int) MODE_BASE_REG_CLASS (VOIDmode)]; + [(int) base_reg_class (VOIDmode, ADDRESS, SCRATCH)]; break; case 'g': @@ -2178,7 +2179,8 @@ preprocess_constraints (void) op_alt[j].cl = (reg_class_subunion [(int) op_alt[j].cl] - [(int) MODE_BASE_REG_CLASS (VOIDmode)]); + [(int) base_reg_class (VOIDmode, ADDRESS, + SCRATCH)]); break; } diff --git a/gcc/regclass.c b/gcc/regclass.c index 0b9fd321f21..1f1e6c24166 100644 --- a/gcc/regclass.c +++ b/gcc/regclass.c @@ -36,6 +36,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include "flags.h" #include "basic-block.h" #include "regs.h" +#include "addresses.h" #include "function.h" #include "insn-config.h" #include "recog.h" @@ -810,7 +811,8 @@ struct costs /* Structure used to record preferences of given pseudo. */ struct reg_pref { - /* (enum reg_class) prefclass is the preferred class. */ + /* (enum reg_class) prefclass is the preferred class. May be + NO_REGS if no class is better than memory. */ char prefclass; /* altclass is a register class that we should use for allocating @@ -852,12 +854,36 @@ static void record_reg_classes (int, int, rtx *, enum machine_mode *, struct reg_pref *); static int copy_cost (rtx, enum machine_mode, enum reg_class, int, secondary_reload_info *); -static void record_address_regs (rtx, enum reg_class, int); +static void record_address_regs (enum machine_mode, rtx, int, enum rtx_code, + enum rtx_code, int); #ifdef FORBIDDEN_INC_DEC_CLASSES static int auto_inc_dec_reg_p (rtx, enum machine_mode); #endif static void reg_scan_mark_refs (rtx, rtx, int); +/* Wrapper around REGNO_OK_FOR_INDEX_P, to allow pseudo registers. */ + +static inline bool +ok_for_index_p_nonstrict (rtx reg) +{ + unsigned regno = REGNO (reg); + return regno >= FIRST_PSEUDO_REGISTER || REGNO_OK_FOR_INDEX_P (regno); +} + +/* A version of regno_ok_for_base_p for use during regclass, when all pseudos + should count as OK. Arguments as for regno_ok_for_base_p. */ + +static inline bool +ok_for_base_p_nonstrict (rtx reg, enum machine_mode mode, + enum rtx_code outer_code, enum rtx_code index_code) +{ + unsigned regno = REGNO (reg); + if (regno >= FIRST_PSEUDO_REGISTER) + return true; + + return ok_for_base_p_1 (regno, mode, outer_code, index_code); +} + /* Return the reg_class in which pseudo reg number REGNO is best allocated. This function is sometimes called before the info has been computed. When that happens, just return GENERAL_REGS, which is innocuous. */ @@ -958,12 +984,13 @@ record_operand_costs (rtx insn, struct costs *op_costs, recog_data.operand[i] = SUBREG_REG (recog_data.operand[i]); if (MEM_P (recog_data.operand[i])) - record_address_regs (XEXP (recog_data.operand[i], 0), - MODE_BASE_REG_CLASS (modes[i]), frequency * 2); + record_address_regs (GET_MODE (recog_data.operand[i]), + XEXP (recog_data.operand[i], 0), + 0, MEM, SCRATCH, frequency * 2); else if (constraints[i][0] == 'p' || EXTRA_ADDRESS_CONSTRAINT (constraints[i][0], constraints[i])) - record_address_regs (recog_data.operand[i], - MODE_BASE_REG_CLASS (modes[i]), frequency * 2); + record_address_regs (VOIDmode, recog_data.operand[i], 0, ADDRESS, + SCRATCH, frequency * 2); } /* Check for commutative in a separate loop so everything will @@ -1037,8 +1064,8 @@ scan_one_insn (rtx insn, int pass) -= (MEMORY_MOVE_COST (GET_MODE (SET_DEST (set)), GENERAL_REGS, 1) * frequency); - record_address_regs (XEXP (SET_SRC (set), 0), - MODE_BASE_REG_CLASS (VOIDmode), frequency * 2); + record_address_regs (GET_MODE (SET_SRC (set)), XEXP (SET_SRC (set), 0), + 0, MEM, SCRATCH, frequency * 2); return insn; } @@ -1148,7 +1175,12 @@ init_reg_autoinc (void) m = (enum machine_mode) ((int) m + 1)) if (HARD_REGNO_MODE_OK (j, m)) { - enum reg_class base_class = MODE_BASE_REG_CLASS (VOIDmode); + /* ??? There are two assumptions here; that the base class does not + depend on the exact outer code (POST_INC vs. PRE_INC etc.), and + that it does not depend on the machine mode of the memory + reference. */ + enum reg_class base_class + = base_reg_class (VOIDmode, POST_INC, SCRATCH); PUT_MODE (r, m); @@ -1283,6 +1315,10 @@ regclass (rtx f, int nregs) best = reg_class_subunion[(int) best][class]; } + /* If no register class is better than memory, use memory. */ + if (p->mem_cost < best_cost) + best = NO_REGS; + /* Record the alternate register class; i.e., a class for which every register in it is better than using memory. If adding a class would make a smaller class (i.e., no union of just those @@ -1493,7 +1529,7 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops, to what we would add if this register were not in the appropriate class. */ - if (reg_pref) + if (reg_pref && reg_pref[REGNO (op)].prefclass != NO_REGS) alt_cost += (may_move_in_cost[mode] [(unsigned char) reg_pref[REGNO (op)].prefclass] @@ -1544,7 +1580,7 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops, address, i.e. BASE_REG_CLASS. */ classes[i] = reg_class_subunion[(int) classes[i]] - [(int) MODE_BASE_REG_CLASS (VOIDmode)]; + [(int) base_reg_class (VOIDmode, ADDRESS, SCRATCH)]; break; case 'm': case 'o': case 'V': @@ -1658,7 +1694,7 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops, address, i.e. BASE_REG_CLASS. */ classes[i] = reg_class_subunion[(int) classes[i]] - [(int) MODE_BASE_REG_CLASS (VOIDmode)]; + [(int) base_reg_class (VOIDmode, ADDRESS, SCRATCH)]; } #endif break; @@ -1719,7 +1755,7 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops, to what we would add if this register were not in the appropriate class. */ - if (reg_pref) + if (reg_pref && reg_pref[REGNO (op)].prefclass != NO_REGS) alt_cost += (may_move_in_cost[mode] [(unsigned char) reg_pref[REGNO (op)].prefclass] @@ -1805,7 +1841,8 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops, int class; unsigned int nr; - if (regno >= FIRST_PSEUDO_REGISTER && reg_pref != 0) + if (regno >= FIRST_PSEUDO_REGISTER && reg_pref != 0 + && reg_pref[regno].prefclass != NO_REGS) { enum reg_class pref = reg_pref[regno].prefclass; @@ -1890,16 +1927,28 @@ copy_cost (rtx x, enum machine_mode mode, enum reg_class class, int to_p, /* Record the pseudo registers we must reload into hard registers in a subexpression of a memory address, X. - CLASS is the class that the register needs to be in and is either - BASE_REG_CLASS or INDEX_REG_CLASS. + If CONTEXT is 0, we are looking at the base part of an address, otherwise we + are looking at the index part. + + MODE is the mode of the memory reference; OUTER_CODE and INDEX_CODE + give the context that the rtx appears in. These three arguments are + passed down to base_reg_class. SCALE is twice the amount to multiply the cost by (it is twice so we can represent half-cost adjustments). */ static void -record_address_regs (rtx x, enum reg_class class, int scale) +record_address_regs (enum machine_mode mode, rtx x, int context, + enum rtx_code outer_code, enum rtx_code index_code, + int scale) { enum rtx_code code = GET_CODE (x); + enum reg_class class; + + if (context == 1) + class = INDEX_REG_CLASS; + else + class = base_reg_class (mode, outer_code, index_code); switch (code) { @@ -1940,31 +1989,31 @@ record_address_regs (rtx x, enum reg_class class, int scale) be in the first operand. */ if (MAX_REGS_PER_ADDRESS == 1) - record_address_regs (arg0, class, scale); + record_address_regs (mode, arg0, 0, PLUS, code1, scale); /* If index and base registers are the same on this machine, just record registers in any non-constant operands. We assume here, as well as in the tests below, that all addresses are in canonical form. */ - else if (INDEX_REG_CLASS == MODE_BASE_REG_CLASS (VOIDmode)) + else if (INDEX_REG_CLASS == base_reg_class (VOIDmode, PLUS, SCRATCH)) { - record_address_regs (arg0, class, scale); + record_address_regs (mode, arg0, context, PLUS, code1, scale); if (! CONSTANT_P (arg1)) - record_address_regs (arg1, class, scale); + record_address_regs (mode, arg1, context, PLUS, code0, scale); } /* If the second operand is a constant integer, it doesn't change what class the first operand must be. */ else if (code1 == CONST_INT || code1 == CONST_DOUBLE) - record_address_regs (arg0, class, scale); + record_address_regs (mode, arg0, context, PLUS, code1, scale); /* If the second operand is a symbolic constant, the first operand must be an index register. */ else if (code1 == SYMBOL_REF || code1 == CONST || code1 == LABEL_REF) - record_address_regs (arg0, INDEX_REG_CLASS, scale); + record_address_regs (mode, arg0, 1, PLUS, code1, scale); /* If both operands are registers but one is already a hard register of index or reg-base class, give the other the class that the @@ -1972,22 +2021,20 @@ record_address_regs (rtx x, enum reg_class class, int scale) else if (code0 == REG && code1 == REG && REGNO (arg0) < FIRST_PSEUDO_REGISTER - && (REG_MODE_OK_FOR_REG_BASE_P (arg0, VOIDmode) - || REG_OK_FOR_INDEX_P (arg0))) - record_address_regs (arg1, - REG_MODE_OK_FOR_REG_BASE_P (arg0, VOIDmode) - ? INDEX_REG_CLASS - : MODE_BASE_REG_REG_CLASS (VOIDmode), - scale); + && (ok_for_base_p_nonstrict (arg0, mode, PLUS, REG) + || ok_for_index_p_nonstrict (arg0))) + record_address_regs (mode, arg1, + ok_for_base_p_nonstrict (arg0, mode, PLUS, REG) + ? 1 : 0, + PLUS, REG, scale); else if (code0 == REG && code1 == REG && REGNO (arg1) < FIRST_PSEUDO_REGISTER - && (REG_MODE_OK_FOR_REG_BASE_P (arg1, VOIDmode) - || REG_OK_FOR_INDEX_P (arg1))) - record_address_regs (arg0, - REG_MODE_OK_FOR_REG_BASE_P (arg1, VOIDmode) - ? INDEX_REG_CLASS - : MODE_BASE_REG_REG_CLASS (VOIDmode), - scale); + && (ok_for_base_p_nonstrict (arg1, mode, PLUS, REG) + || ok_for_index_p_nonstrict (arg1))) + record_address_regs (mode, arg0, + ok_for_base_p_nonstrict (arg1, mode, PLUS, REG) + ? 1 : 0, + PLUS, REG, scale); /* If one operand is known to be a pointer, it must be the base with the other operand the index. Likewise if the other operand @@ -1996,16 +2043,14 @@ record_address_regs (rtx x, enum reg_class class, int scale) else if ((code0 == REG && REG_POINTER (arg0)) || code1 == MULT) { - record_address_regs (arg0, MODE_BASE_REG_REG_CLASS (VOIDmode), - scale); - record_address_regs (arg1, INDEX_REG_CLASS, scale); + record_address_regs (mode, arg0, 0, PLUS, code1, scale); + record_address_regs (mode, arg1, 1, PLUS, code0, scale); } else if ((code1 == REG && REG_POINTER (arg1)) || code0 == MULT) { - record_address_regs (arg0, INDEX_REG_CLASS, scale); - record_address_regs (arg1, MODE_BASE_REG_REG_CLASS (VOIDmode), - scale); + record_address_regs (mode, arg0, 1, PLUS, code1, scale); + record_address_regs (mode, arg1, 0, PLUS, code0, scale); } /* Otherwise, count equal chances that each might be a base @@ -2013,12 +2058,10 @@ record_address_regs (rtx x, enum reg_class class, int scale) else { - record_address_regs (arg0, MODE_BASE_REG_REG_CLASS (VOIDmode), - scale / 2); - record_address_regs (arg0, INDEX_REG_CLASS, scale / 2); - record_address_regs (arg1, MODE_BASE_REG_REG_CLASS (VOIDmode), - scale / 2); - record_address_regs (arg1, INDEX_REG_CLASS, scale / 2); + record_address_regs (mode, arg0, 0, PLUS, code1, scale / 2); + record_address_regs (mode, arg0, 1, PLUS, code1, scale / 2); + record_address_regs (mode, arg1, 0, PLUS, code0, scale / 2); + record_address_regs (mode, arg1, 1, PLUS, code0, scale / 2); } } break; @@ -2028,11 +2071,11 @@ record_address_regs (rtx x, enum reg_class class, int scale) if it ends up in the wrong place. */ case POST_MODIFY: case PRE_MODIFY: - record_address_regs (XEXP (x, 0), MODE_BASE_REG_CLASS (VOIDmode), - 2 * scale); + record_address_regs (mode, XEXP (x, 0), 0, code, + GET_CODE (XEXP (XEXP (x, 1), 1)), 2 * scale); if (REG_P (XEXP (XEXP (x, 1), 1))) - record_address_regs (XEXP (XEXP (x, 1), 1), - INDEX_REG_CLASS, 2 * scale); + record_address_regs (mode, XEXP (XEXP (x, 1), 1), 1, code, REG, + 2 * scale); break; case POST_INC: @@ -2050,7 +2093,7 @@ record_address_regs (rtx x, enum reg_class class, int scale) in_inc_dec[REGNO (XEXP (x, 0))] = 1; #endif - record_address_regs (XEXP (x, 0), class, 2 * scale); + record_address_regs (mode, XEXP (x, 0), 0, code, SCRATCH, 2 * scale); break; case REG: @@ -2071,7 +2114,8 @@ record_address_regs (rtx x, enum reg_class class, int scale) int i; for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--) if (fmt[i] == 'e') - record_address_regs (XEXP (x, i), class, scale); + record_address_regs (mode, XEXP (x, i), context, code, SCRATCH, + scale); } } } diff --git a/gcc/regrename.c b/gcc/regrename.c index 49e18c4a7c2..c55f9c4baeb 100644 --- a/gcc/regrename.c +++ b/gcc/regrename.c @@ -27,6 +27,7 @@ #include "tm_p.h" #include "insn-config.h" #include "regs.h" +#include "addresses.h" #include "hard-reg-set.h" #include "basic-block.h" #include "reload.h" @@ -528,7 +529,7 @@ scan_rtx_address (rtx insn, rtx *loc, enum reg_class cl, rtx op1 = orig_op1; rtx *locI = NULL; rtx *locB = NULL; - rtx *locB_reg = NULL; + enum rtx_code index_code = SCRATCH; if (GET_CODE (op0) == SUBREG) { @@ -547,59 +548,70 @@ scan_rtx_address (rtx insn, rtx *loc, enum reg_class cl, { locI = &XEXP (x, 0); locB = &XEXP (x, 1); + index_code = GET_CODE (*locI); } else if (code1 == MULT || code1 == SIGN_EXTEND || code1 == TRUNCATE || code1 == ZERO_EXTEND || code0 == MEM) { locI = &XEXP (x, 1); locB = &XEXP (x, 0); + index_code = GET_CODE (*locI); } else if (code0 == CONST_INT || code0 == CONST || code0 == SYMBOL_REF || code0 == LABEL_REF) - locB = &XEXP (x, 1); + { + locB = &XEXP (x, 1); + index_code = GET_CODE (XEXP (x, 0)); + } else if (code1 == CONST_INT || code1 == CONST || code1 == SYMBOL_REF || code1 == LABEL_REF) - locB = &XEXP (x, 0); + { + locB = &XEXP (x, 0); + index_code = GET_CODE (XEXP (x, 1)); + } else if (code0 == REG && code1 == REG) { int index_op; + unsigned regno0 = REGNO (op0), regno1 = REGNO (op1); - if (REG_OK_FOR_INDEX_P (op0) - && REG_MODE_OK_FOR_REG_BASE_P (op1, mode)) + if (REGNO_OK_FOR_INDEX_P (regno0) + && regno_ok_for_base_p (regno1, mode, PLUS, REG)) index_op = 0; - else if (REG_OK_FOR_INDEX_P (op1) - && REG_MODE_OK_FOR_REG_BASE_P (op0, mode)) + else if (REGNO_OK_FOR_INDEX_P (regno1) + && regno_ok_for_base_p (regno0, mode, PLUS, REG)) index_op = 1; - else if (REG_MODE_OK_FOR_REG_BASE_P (op1, mode)) + else if (regno_ok_for_base_p (regno1, mode, PLUS, REG)) index_op = 0; - else if (REG_MODE_OK_FOR_REG_BASE_P (op0, mode)) + else if (regno_ok_for_base_p (regno0, mode, PLUS, REG)) index_op = 1; - else if (REG_OK_FOR_INDEX_P (op1)) + else if (REGNO_OK_FOR_INDEX_P (regno1)) index_op = 1; else index_op = 0; locI = &XEXP (x, index_op); - locB_reg = &XEXP (x, !index_op); + locB = &XEXP (x, !index_op); + index_code = GET_CODE (*locI); } else if (code0 == REG) { locI = &XEXP (x, 0); locB = &XEXP (x, 1); + index_code = GET_CODE (*locI); } else if (code1 == REG) { locI = &XEXP (x, 1); locB = &XEXP (x, 0); + index_code = GET_CODE (*locI); } if (locI) scan_rtx_address (insn, locI, INDEX_REG_CLASS, action, mode); if (locB) - scan_rtx_address (insn, locB, MODE_BASE_REG_CLASS (mode), action, mode); - if (locB_reg) - scan_rtx_address (insn, locB_reg, MODE_BASE_REG_REG_CLASS (mode), + scan_rtx_address (insn, locB, base_reg_class (mode, PLUS, index_code), action, mode); + return; } @@ -618,7 +630,7 @@ scan_rtx_address (rtx insn, rtx *loc, enum reg_class cl, case MEM: scan_rtx_address (insn, &XEXP (x, 0), - MODE_BASE_REG_CLASS (GET_MODE (x)), action, + base_reg_class (GET_MODE (x), MEM, SCRATCH), action, GET_MODE (x)); return; @@ -669,7 +681,7 @@ scan_rtx (rtx insn, rtx *loc, enum reg_class cl, case MEM: scan_rtx_address (insn, &XEXP (x, 0), - MODE_BASE_REG_CLASS (GET_MODE (x)), action, + base_reg_class (GET_MODE (x), MEM, SCRATCH), action, GET_MODE (x)); return; @@ -1441,7 +1453,7 @@ replace_oldest_value_addr (rtx *loc, enum reg_class cl, rtx op1 = orig_op1; rtx *locI = NULL; rtx *locB = NULL; - rtx *locB_reg = NULL; + enum rtx_code index_code = SCRATCH; if (GET_CODE (op0) == SUBREG) { @@ -1460,50 +1472,62 @@ replace_oldest_value_addr (rtx *loc, enum reg_class cl, { locI = &XEXP (x, 0); locB = &XEXP (x, 1); + index_code = GET_CODE (*locI); } else if (code1 == MULT || code1 == SIGN_EXTEND || code1 == TRUNCATE || code1 == ZERO_EXTEND || code0 == MEM) { locI = &XEXP (x, 1); locB = &XEXP (x, 0); + index_code = GET_CODE (*locI); } else if (code0 == CONST_INT || code0 == CONST || code0 == SYMBOL_REF || code0 == LABEL_REF) - locB = &XEXP (x, 1); + { + locB = &XEXP (x, 1); + index_code = GET_CODE (XEXP (x, 0)); + } else if (code1 == CONST_INT || code1 == CONST || code1 == SYMBOL_REF || code1 == LABEL_REF) - locB = &XEXP (x, 0); + { + locB = &XEXP (x, 0); + index_code = GET_CODE (XEXP (x, 1)); + } else if (code0 == REG && code1 == REG) { int index_op; + unsigned regno0 = REGNO (op0), regno1 = REGNO (op1); - if (REG_OK_FOR_INDEX_P (op0) - && REG_MODE_OK_FOR_REG_BASE_P (op1, mode)) + if (REGNO_OK_FOR_INDEX_P (regno0) + && regno_ok_for_base_p (regno1, mode, PLUS, REG)) index_op = 0; - else if (REG_OK_FOR_INDEX_P (op1) - && REG_MODE_OK_FOR_REG_BASE_P (op0, mode)) + else if (REGNO_OK_FOR_INDEX_P (regno1) + && regno_ok_for_base_p (regno0, mode, PLUS, REG)) index_op = 1; - else if (REG_MODE_OK_FOR_REG_BASE_P (op1, mode)) + else if (regno_ok_for_base_p (regno1, mode, PLUS, REG)) index_op = 0; - else if (REG_MODE_OK_FOR_REG_BASE_P (op0, mode)) + else if (regno_ok_for_base_p (regno0, mode, PLUS, REG)) index_op = 1; - else if (REG_OK_FOR_INDEX_P (op1)) + else if (REGNO_OK_FOR_INDEX_P (regno1)) index_op = 1; else index_op = 0; locI = &XEXP (x, index_op); - locB_reg = &XEXP (x, !index_op); + locB = &XEXP (x, !index_op); + index_code = GET_CODE (*locI); } else if (code0 == REG) { locI = &XEXP (x, 0); locB = &XEXP (x, 1); + index_code = GET_CODE (*locI); } else if (code1 == REG) { locI = &XEXP (x, 1); locB = &XEXP (x, 0); + index_code = GET_CODE (*locI); } if (locI) @@ -1511,11 +1535,8 @@ replace_oldest_value_addr (rtx *loc, enum reg_class cl, insn, vd); if (locB) changed |= replace_oldest_value_addr (locB, - MODE_BASE_REG_CLASS (mode), - mode, insn, vd); - if (locB_reg) - changed |= replace_oldest_value_addr (locB_reg, - MODE_BASE_REG_REG_CLASS (mode), + base_reg_class (mode, PLUS, + index_code), mode, insn, vd); return changed; } @@ -1559,7 +1580,8 @@ static bool replace_oldest_value_mem (rtx x, rtx insn, struct value_data *vd) { return replace_oldest_value_addr (&XEXP (x, 0), - MODE_BASE_REG_CLASS (GET_MODE (x)), + base_reg_class (GET_MODE (x), MEM, + SCRATCH), GET_MODE (x), insn, vd); } diff --git a/gcc/reload.c b/gcc/reload.c index 31d79ae8578..8a76c0ec856 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -100,6 +100,7 @@ a register with any other reload. */ #include "recog.h" #include "reload.h" #include "regs.h" +#include "addresses.h" #include "hard-reg-set.h" #include "flags.h" #include "real.h" @@ -269,7 +270,8 @@ static int find_reloads_address (enum machine_mode, rtx *, rtx, rtx *, static rtx subst_reg_equivs (rtx, rtx); static rtx subst_indexed_address (rtx); static void update_auto_inc_notes (rtx, int, int); -static int find_reloads_address_1 (enum machine_mode, rtx, int, rtx *, +static int find_reloads_address_1 (enum machine_mode, rtx, int, + enum rtx_code, enum rtx_code, rtx *, int, enum reload_type,int, rtx); static void find_reloads_address_part (rtx, rtx *, enum reg_class, enum machine_mode, int, @@ -1182,15 +1184,24 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc, /* Narrow down the class of register wanted if that is desirable on this machine for efficiency. */ - if (in != 0) - class = PREFERRED_RELOAD_CLASS (in, class); + { + enum reg_class preferred_class = class; + + if (in != 0) + preferred_class = PREFERRED_RELOAD_CLASS (in, class); /* Output reloads may need analogous treatment, different in detail. */ #ifdef PREFERRED_OUTPUT_RELOAD_CLASS - if (out != 0) - class = PREFERRED_OUTPUT_RELOAD_CLASS (out, class); + if (out != 0) + preferred_class = PREFERRED_OUTPUT_RELOAD_CLASS (out, preferred_class); #endif + /* Discard what the target said if we cannot do it. */ + if (preferred_class != NO_REGS + || (optional && type == RELOAD_FOR_OUTPUT)) + class = preferred_class; + } + /* Make sure we use a class that can handle the actual pseudo inside any subreg. For example, on the 386, QImode regs can appear within SImode subregs. Although GENERAL_REGS @@ -1883,7 +1894,11 @@ find_dummy_reload (rtx real_in, rtx real_out, rtx *inloc, rtx *outloc, /* Narrow down the reg class, the same way push_reload will; otherwise we might find a dummy now, but push_reload won't. */ - class = PREFERRED_RELOAD_CLASS (in, class); + { + enum reg_class preferred_class = PREFERRED_RELOAD_CLASS (in, class); + if (preferred_class != NO_REGS) + class = preferred_class; + } /* See if OUT will do. */ if (REG_P (out) @@ -3119,7 +3134,8 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known, case 'p': /* All necessary reloads for an address_operand were handled in find_reloads_address. */ - this_alternative[i] = (int) MODE_BASE_REG_CLASS (VOIDmode); + this_alternative[i] + = (int) base_reg_class (VOIDmode, ADDRESS, SCRATCH); win = 1; badop = 0; break; @@ -3323,7 +3339,8 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known, /* If we didn't already win, we can reload the address into a base register. */ - this_alternative[i] = (int) MODE_BASE_REG_CLASS (VOIDmode); + this_alternative[i] + = (int) base_reg_class (VOIDmode, ADDRESS, SCRATCH); badop = 0; break; } @@ -3397,22 +3414,10 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known, losers++; } - /* If we can't reload this value at all, reject this - alternative. Note that we could also lose due to - LIMIT_RELOAD_RELOAD_CLASS, but we don't check that - here. */ - - if (! CONSTANT_P (operand) - && (enum reg_class) this_alternative[i] != NO_REGS - && (PREFERRED_RELOAD_CLASS (operand, - (enum reg_class) this_alternative[i]) - == NO_REGS)) - bad = 1; - /* Alternative loses if it requires a type of reload not permitted for this insn. We can always reload SCRATCH and objects with a REG_UNUSED note. */ - else if (GET_CODE (operand) != SCRATCH + if (GET_CODE (operand) != SCRATCH && modified[i] != RELOAD_READ && no_output_reloads && ! find_reg_note (insn, REG_UNUSED, operand)) bad = 1; @@ -3420,6 +3425,28 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known, && ! const_to_mem) bad = 1; + /* If we can't reload this value at all, reject this + alternative. Note that we could also lose due to + LIMIT_RELOAD_CLASS, but we don't check that + here. */ + + if (! CONSTANT_P (operand) + && (enum reg_class) this_alternative[i] != NO_REGS) + { + if (PREFERRED_RELOAD_CLASS + (operand, (enum reg_class) this_alternative[i]) + == NO_REGS) + reject = 600; + +#ifdef PREFERRED_OUTPUT_RELOAD_CLASS + if (operand_type[i] == RELOAD_FOR_OUTPUT + && PREFERRED_OUTPUT_RELOAD_CLASS + (operand, (enum reg_class) this_alternative[i]) + == NO_REGS) + reject = 600; +#endif + } + /* We prefer to reload pseudos over reloading other things, since such reloads may be able to be eliminated later. If we are reloading a SCRATCH, we won't be generating any @@ -3826,7 +3853,7 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known, operand_reloadnum[i] = push_reload (XEXP (recog_data.operand[i], 0), NULL_RTX, &XEXP (recog_data.operand[i], 0), (rtx*) 0, - MODE_BASE_REG_CLASS (VOIDmode), + base_reg_class (VOIDmode, MEM, SCRATCH), GET_MODE (XEXP (recog_data.operand[i], 0)), VOIDmode, 0, 0, i, RELOAD_FOR_INPUT); rld[operand_reloadnum[i]].inc @@ -4745,12 +4772,12 @@ find_reloads_address (enum machine_mode mode, rtx *memrefloc, rtx ad, subject of a CLOBBER in this insn. */ else if (regno < FIRST_PSEUDO_REGISTER - && REGNO_MODE_OK_FOR_BASE_P (regno, mode) + && regno_ok_for_base_p (regno, mode, MEM, SCRATCH) && ! regno_clobbered_p (regno, this_insn, mode, 0)) return 0; /* If we do not have one of the cases above, we must do the reload. */ - push_reload (ad, NULL_RTX, loc, (rtx*) 0, MODE_BASE_REG_CLASS (mode), + push_reload (ad, NULL_RTX, loc, (rtx*) 0, base_reg_class (mode, MEM, SCRATCH), GET_MODE (ad), VOIDmode, 0, 0, opnum, type); return 1; } @@ -4851,7 +4878,7 @@ find_reloads_address (enum machine_mode mode, rtx *memrefloc, rtx ad, /* Must use TEM here, not AD, since it is the one that will have any subexpressions reloaded, if needed. */ push_reload (tem, NULL_RTX, loc, (rtx*) 0, - MODE_BASE_REG_CLASS (mode), GET_MODE (tem), + base_reg_class (mode, MEM, SCRATCH), GET_MODE (tem), VOIDmode, 0, 0, opnum, type); return ! removed_and; @@ -4868,8 +4895,10 @@ find_reloads_address (enum machine_mode mode, rtx *memrefloc, rtx ad, else if (GET_CODE (ad) == PLUS && REG_P (XEXP (ad, 0)) && REGNO (XEXP (ad, 0)) < FIRST_PSEUDO_REGISTER - && REG_MODE_OK_FOR_BASE_P (XEXP (ad, 0), mode) - && GET_CODE (XEXP (ad, 1)) == CONST_INT) + && GET_CODE (XEXP (ad, 1)) == CONST_INT + && regno_ok_for_base_p (REGNO (XEXP (ad, 0)), mode, PLUS, + CONST_INT)) + { /* Unshare the MEM rtx so we can safely alter it. */ if (memrefloc) @@ -4897,7 +4926,8 @@ find_reloads_address (enum machine_mode mode, rtx *memrefloc, rtx ad, /* If the sum of two regs is not necessarily valid, reload the sum into a base reg. That will at least work. */ - find_reloads_address_part (ad, loc, MODE_BASE_REG_CLASS (mode), + find_reloads_address_part (ad, loc, + base_reg_class (mode, MEM, SCRATCH), Pmode, opnum, type, ind_levels); } return ! removed_and; @@ -4931,19 +4961,26 @@ find_reloads_address (enum machine_mode mode, rtx *memrefloc, rtx ad, for (op_index = 0; op_index < 2; ++op_index) { - rtx operand; + rtx operand, addend; + enum rtx_code inner_code; + + if (GET_CODE (ad) != PLUS) + continue; + inner_code = GET_CODE (XEXP (ad, 0)); if (!(GET_CODE (ad) == PLUS && GET_CODE (XEXP (ad, 1)) == CONST_INT - && (GET_CODE (XEXP (ad, 0)) == PLUS - || GET_CODE (XEXP (ad, 0)) == LO_SUM))) + && (inner_code == PLUS || inner_code == LO_SUM))) continue; operand = XEXP (XEXP (ad, 0), op_index); if (!REG_P (operand) || REGNO (operand) >= FIRST_PSEUDO_REGISTER) continue; - if ((REG_MODE_OK_FOR_BASE_P (operand, mode) + addend = XEXP (XEXP (ad, 0), 1 - op_index); + + if ((regno_ok_for_base_p (REGNO (operand), mode, inner_code, + GET_CODE (addend)) || operand == frame_pointer_rtx #if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM || operand == hard_frame_pointer_rtx @@ -4956,11 +4993,10 @@ find_reloads_address (enum machine_mode mode, rtx *memrefloc, rtx ad, &XEXP (XEXP (ad, 0), 1 - op_index))) { rtx offset_reg; - rtx addend; + enum reg_class cls; offset_reg = plus_constant (operand, INTVAL (XEXP (ad, 1))); - addend = XEXP (XEXP (ad, 0), 1 - op_index); - + /* Form the adjusted address. */ if (GET_CODE (XEXP (ad, 0)) == PLUS) ad = gen_rtx_PLUS (GET_MODE (ad), @@ -4972,12 +5008,13 @@ find_reloads_address (enum machine_mode mode, rtx *memrefloc, rtx ad, op_index == 0 ? addend : offset_reg); *loc = ad; + cls = base_reg_class (mode, MEM, GET_CODE (addend)); find_reloads_address_part (XEXP (ad, op_index), - &XEXP (ad, op_index), - MODE_BASE_REG_CLASS (mode), + &XEXP (ad, op_index), cls, GET_MODE (ad), opnum, type, ind_levels); - find_reloads_address_1 (mode, - XEXP (ad, 1 - op_index), 1, + find_reloads_address_1 (mode, + XEXP (ad, 1 - op_index), 1, GET_CODE (ad), + GET_CODE (XEXP (ad, op_index)), &XEXP (ad, 1 - op_index), opnum, type, 0, insn); @@ -5023,13 +5060,13 @@ find_reloads_address (enum machine_mode mode, rtx *memrefloc, rtx ad, loc = &XEXP (*loc, 0); } - find_reloads_address_part (ad, loc, MODE_BASE_REG_CLASS (mode), + find_reloads_address_part (ad, loc, base_reg_class (mode, MEM, SCRATCH), Pmode, opnum, type, ind_levels); return ! removed_and; } - return find_reloads_address_1 (mode, ad, 0, loc, opnum, type, ind_levels, - insn); + return find_reloads_address_1 (mode, ad, 0, MEM, SCRATCH, loc, opnum, type, + ind_levels, insn); } /* Find all pseudo regs appearing in AD @@ -5240,9 +5277,12 @@ update_auto_inc_notes (rtx insn ATTRIBUTE_UNUSED, int regno ATTRIBUTE_UNUSED, is strictly valid.) CONTEXT = 1 means we are considering regs as index regs, - = 0 means we are considering them as base regs, = 2 means we - are considering them as base regs for REG + REG. - + = 0 means we are considering them as base regs. + OUTER_CODE is the code of the enclosing RTX, typically a MEM, a PLUS, + or an autoinc code. + If CONTEXT == 0 and OUTER_CODE is a PLUS or LO_SUM, then INDEX_CODE + is the code of the index part of the address. Otherwise, pass SCRATCH + for this argument. OPNUM and TYPE specify the purpose of any reloads made. IND_LEVELS says how many levels of indirect addressing are @@ -5263,25 +5303,22 @@ update_auto_inc_notes (rtx insn ATTRIBUTE_UNUSED, int regno ATTRIBUTE_UNUSED, static int find_reloads_address_1 (enum machine_mode mode, rtx x, int context, + enum rtx_code outer_code, enum rtx_code index_code, rtx *loc, int opnum, enum reload_type type, int ind_levels, rtx insn) { -#define REG_OK_FOR_CONTEXT(CONTEXT, REGNO, MODE) \ - ((CONTEXT) == 2 \ - ? REGNO_MODE_OK_FOR_REG_BASE_P (REGNO, MODE) \ - : (CONTEXT) == 1 \ - ? REGNO_OK_FOR_INDEX_P (REGNO) \ - : REGNO_MODE_OK_FOR_BASE_P (REGNO, MODE)) +#define REG_OK_FOR_CONTEXT(CONTEXT, REGNO, MODE, OUTER, INDEX) \ + ((CONTEXT) == 0 \ + ? regno_ok_for_base_p (REGNO, MODE, OUTER, INDEX) \ + : REGNO_OK_FOR_INDEX_P (REGNO)) enum reg_class context_reg_class; RTX_CODE code = GET_CODE (x); - if (context == 2) - context_reg_class = MODE_BASE_REG_REG_CLASS (mode); - else if (context == 1) + if (context == 1) context_reg_class = INDEX_REG_CLASS; else - context_reg_class = MODE_BASE_REG_CLASS (mode); + context_reg_class = base_reg_class (mode, outer_code, index_code); switch (code) { @@ -5338,74 +5375,90 @@ find_reloads_address_1 (enum machine_mode mode, rtx x, int context, if (code0 == MULT || code0 == SIGN_EXTEND || code0 == TRUNCATE || code0 == ZERO_EXTEND || code1 == MEM) { - find_reloads_address_1 (mode, orig_op0, 1, &XEXP (x, 0), opnum, - type, ind_levels, insn); - find_reloads_address_1 (mode, orig_op1, 0, &XEXP (x, 1), opnum, - type, ind_levels, insn); + find_reloads_address_1 (mode, orig_op0, 1, PLUS, SCRATCH, + &XEXP (x, 0), opnum, type, ind_levels, + insn); + find_reloads_address_1 (mode, orig_op1, 0, PLUS, code0, + &XEXP (x, 1), opnum, type, ind_levels, + insn); } else if (code1 == MULT || code1 == SIGN_EXTEND || code1 == TRUNCATE || code1 == ZERO_EXTEND || code0 == MEM) { - find_reloads_address_1 (mode, orig_op0, 0, &XEXP (x, 0), opnum, - type, ind_levels, insn); - find_reloads_address_1 (mode, orig_op1, 1, &XEXP (x, 1), opnum, - type, ind_levels, insn); + find_reloads_address_1 (mode, orig_op0, 0, PLUS, code1, + &XEXP (x, 0), opnum, type, ind_levels, + insn); + find_reloads_address_1 (mode, orig_op1, 1, PLUS, SCRATCH, + &XEXP (x, 1), opnum, type, ind_levels, + insn); } else if (code0 == CONST_INT || code0 == CONST || code0 == SYMBOL_REF || code0 == LABEL_REF) - find_reloads_address_1 (mode, orig_op1, 0, &XEXP (x, 1), opnum, - type, ind_levels, insn); + find_reloads_address_1 (mode, orig_op1, 0, PLUS, code0, + &XEXP (x, 1), opnum, type, ind_levels, + insn); else if (code1 == CONST_INT || code1 == CONST || code1 == SYMBOL_REF || code1 == LABEL_REF) - find_reloads_address_1 (mode, orig_op0, 0, &XEXP (x, 0), opnum, - type, ind_levels, insn); + find_reloads_address_1 (mode, orig_op0, 0, PLUS, code1, + &XEXP (x, 0), opnum, type, ind_levels, + insn); else if (code0 == REG && code1 == REG) { - if (REG_OK_FOR_INDEX_P (op0) - && REG_MODE_OK_FOR_REG_BASE_P (op1, mode)) + if (REGNO_OK_FOR_INDEX_P (REGNO (op0)) + && regno_ok_for_base_p (REGNO (op1), mode, PLUS, REG)) return 0; - else if (REG_OK_FOR_INDEX_P (op1) - && REG_MODE_OK_FOR_REG_BASE_P (op0, mode)) + else if (REGNO_OK_FOR_INDEX_P (REGNO (op1)) + && regno_ok_for_base_p (REGNO (op0), mode, PLUS, REG)) return 0; - else if (REG_MODE_OK_FOR_REG_BASE_P (op1, mode)) - find_reloads_address_1 (mode, orig_op0, 1, &XEXP (x, 0), opnum, - type, ind_levels, insn); - else if (REG_MODE_OK_FOR_REG_BASE_P (op0, mode)) - find_reloads_address_1 (mode, orig_op1, 1, &XEXP (x, 1), opnum, - type, ind_levels, insn); - else if (REG_OK_FOR_INDEX_P (op1)) - find_reloads_address_1 (mode, orig_op0, 2, &XEXP (x, 0), opnum, - type, ind_levels, insn); - else if (REG_OK_FOR_INDEX_P (op0)) - find_reloads_address_1 (mode, orig_op1, 2, &XEXP (x, 1), opnum, - type, ind_levels, insn); + else if (regno_ok_for_base_p (REGNO (op1), mode, PLUS, REG)) + find_reloads_address_1 (mode, orig_op0, 1, PLUS, SCRATCH, + &XEXP (x, 0), opnum, type, ind_levels, + insn); + else if (regno_ok_for_base_p (REGNO (op0), mode, PLUS, REG)) + find_reloads_address_1 (mode, orig_op1, 1, PLUS, SCRATCH, + &XEXP (x, 1), opnum, type, ind_levels, + insn); + else if (REGNO_OK_FOR_INDEX_P (REGNO (op1))) + find_reloads_address_1 (mode, orig_op0, 0, PLUS, REG, + &XEXP (x, 0), opnum, type, ind_levels, + insn); + else if (REGNO_OK_FOR_INDEX_P (REGNO (op0))) + find_reloads_address_1 (mode, orig_op1, 0, PLUS, REG, + &XEXP (x, 1), opnum, type, ind_levels, + insn); else { - find_reloads_address_1 (mode, orig_op0, 1, &XEXP (x, 0), opnum, - type, ind_levels, insn); - find_reloads_address_1 (mode, orig_op1, 0, &XEXP (x, 1), opnum, - type, ind_levels, insn); + find_reloads_address_1 (mode, orig_op0, 1, PLUS, SCRATCH, + &XEXP (x, 0), opnum, type, ind_levels, + insn); + find_reloads_address_1 (mode, orig_op1, 0, PLUS, REG, + &XEXP (x, 1), opnum, type, ind_levels, + insn); } } else if (code0 == REG) { - find_reloads_address_1 (mode, orig_op0, 1, &XEXP (x, 0), opnum, - type, ind_levels, insn); - find_reloads_address_1 (mode, orig_op1, 0, &XEXP (x, 1), opnum, - type, ind_levels, insn); + find_reloads_address_1 (mode, orig_op0, 1, PLUS, SCRATCH, + &XEXP (x, 0), opnum, type, ind_levels, + insn); + find_reloads_address_1 (mode, orig_op1, 0, PLUS, REG, + &XEXP (x, 1), opnum, type, ind_levels, + insn); } else if (code1 == REG) { - find_reloads_address_1 (mode, orig_op1, 1, &XEXP (x, 1), opnum, - type, ind_levels, insn); - find_reloads_address_1 (mode, orig_op0, 0, &XEXP (x, 0), opnum, - type, ind_levels, insn); + find_reloads_address_1 (mode, orig_op1, 1, PLUS, SCRATCH, + &XEXP (x, 1), opnum, type, ind_levels, + insn); + find_reloads_address_1 (mode, orig_op0, 0, PLUS, REG, + &XEXP (x, 0), opnum, type, ind_levels, + insn); } } @@ -5416,6 +5469,7 @@ find_reloads_address_1 (enum machine_mode mode, rtx x, int context, { rtx op0 = XEXP (x, 0); rtx op1 = XEXP (x, 1); + enum rtx_code index_code; int regno; int reloadnum; @@ -5434,12 +5488,14 @@ find_reloads_address_1 (enum machine_mode mode, rtx x, int context, register with its equivalent constant where applicable. */ if (REG_P (XEXP (op1, 1))) if (!REGNO_OK_FOR_INDEX_P (REGNO (XEXP (op1, 1)))) - find_reloads_address_1 (mode, XEXP (op1, 1), 1, &XEXP (op1, 1), - opnum, type, ind_levels, insn); + find_reloads_address_1 (mode, XEXP (op1, 1), 1, code, SCRATCH, + &XEXP (op1, 1), opnum, type, ind_levels, + insn); gcc_assert (REG_P (XEXP (op1, 0))); regno = REGNO (XEXP (op1, 0)); + index_code = GET_CODE (XEXP (op1, 1)); /* A register that is incremented cannot be constant! */ gcc_assert (regno < FIRST_PSEUDO_REGISTER @@ -5466,12 +5522,13 @@ find_reloads_address_1 (enum machine_mode mode, rtx x, int context, ind_levels, insn); /* Then reload the memory location into a base - register. */ + register. */ reloadnum = push_reload (tem, tem, &XEXP (x, 0), - &XEXP (op1, 0), - MODE_BASE_REG_CLASS (mode), - GET_MODE (x), GET_MODE (x), 0, - 0, opnum, RELOAD_OTHER); + &XEXP (op1, 0), + base_reg_class (mode, code, + index_code), + GET_MODE (x), GET_MODE (x), 0, + 0, opnum, RELOAD_OTHER); update_auto_inc_notes (this_insn, regno, reloadnum); return 0; @@ -5482,13 +5539,13 @@ find_reloads_address_1 (enum machine_mode mode, rtx x, int context, regno = reg_renumber[regno]; /* We require a base register here... */ - if (!REGNO_MODE_OK_FOR_BASE_P (regno, GET_MODE (x))) + if (!regno_ok_for_base_p (regno, GET_MODE (x), code, index_code)) { reloadnum = push_reload (XEXP (op1, 0), XEXP (x, 0), - &XEXP (op1, 0), &XEXP (x, 0), - MODE_BASE_REG_CLASS (mode), - GET_MODE (x), GET_MODE (x), 0, 0, - opnum, RELOAD_OTHER); + &XEXP (op1, 0), &XEXP (x, 0), + base_reg_class (mode, code, index_code), + GET_MODE (x), GET_MODE (x), 0, 0, + opnum, RELOAD_OTHER); update_auto_inc_notes (this_insn, regno, reloadnum); return 0; @@ -5546,7 +5603,8 @@ find_reloads_address_1 (enum machine_mode mode, rtx x, int context, if (reg_renumber[regno] >= 0) regno = reg_renumber[regno]; if (regno >= FIRST_PSEUDO_REGISTER - || !REG_OK_FOR_CONTEXT (context, regno, mode)) + || !REG_OK_FOR_CONTEXT (context, regno, mode, outer_code, + index_code)) { int reloadnum; @@ -5654,7 +5712,7 @@ find_reloads_address_1 (enum machine_mode mode, rtx x, int context, (or perhaps even a different part of an outer expression), should define LEGITIMIZE_RELOAD_ADDRESS. */ find_reloads_address_1 (GET_MODE (XEXP (x, 0)), XEXP (x, 0), - context, &XEXP (x, 0), opnum, + context, code, SCRATCH, &XEXP (x, 0), opnum, type, ind_levels, insn); push_reload (x, NULL_RTX, loc, (rtx*) 0, context_reg_class, @@ -5722,7 +5780,8 @@ find_reloads_address_1 (enum machine_mode mode, rtx x, int context, regno = reg_renumber[regno]; if (regno >= FIRST_PSEUDO_REGISTER - || !REG_OK_FOR_CONTEXT (context, regno, mode)) + || !REG_OK_FOR_CONTEXT (context, regno, mode, outer_code, + index_code)) { push_reload (x, NULL_RTX, loc, (rtx*) 0, context_reg_class, @@ -5754,7 +5813,8 @@ find_reloads_address_1 (enum machine_mode mode, rtx x, int context, { int regno ATTRIBUTE_UNUSED = subreg_regno (x); - if (! REG_OK_FOR_CONTEXT (context, regno, mode)) + if (!REG_OK_FOR_CONTEXT (context, regno, mode, outer_code, + index_code)) { push_reload (x, NULL_RTX, loc, (rtx*) 0, context_reg_class, @@ -5792,8 +5852,10 @@ find_reloads_address_1 (enum machine_mode mode, rtx x, int context, for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--) { if (fmt[i] == 'e') - find_reloads_address_1 (mode, XEXP (x, i), context, &XEXP (x, i), - opnum, type, ind_levels, insn); + /* Pass SCRATCH for INDEX_CODE, since CODE can never be a PLUS once + we get here. */ + find_reloads_address_1 (mode, XEXP (x, i), context, code, SCRATCH, + &XEXP (x, i), opnum, type, ind_levels, insn); } } diff --git a/gcc/reload1.c b/gcc/reload1.c index d7f59d89b29..b9d7f8ed4ae 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -36,6 +36,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include "expr.h" #include "optabs.h" #include "regs.h" +#include "addresses.h" #include "basic-block.h" #include "reload.h" #include "recog.h" @@ -1375,7 +1376,7 @@ maybe_fix_stack_asms (void) case 'p': cls = (int) reg_class_subunion[cls] - [(int) MODE_BASE_REG_CLASS (VOIDmode)]; + [(int) base_reg_class (VOIDmode, ADDRESS, SCRATCH)]; break; case 'g': @@ -1386,7 +1387,7 @@ maybe_fix_stack_asms (void) default: if (EXTRA_ADDRESS_CONSTRAINT (c, p)) cls = (int) reg_class_subunion[cls] - [(int) MODE_BASE_REG_CLASS (VOIDmode)]; + [(int) base_reg_class (VOIDmode, ADDRESS, SCRATCH)]; else cls = (int) reg_class_subunion[cls] [(int) REG_CLASS_FROM_CONSTRAINT (c, p)]; @@ -5504,10 +5505,7 @@ choose_reload_regs (struct insn_chain *chain) mode = GET_MODE (rld[r].in_reg); } #ifdef AUTO_INC_DEC - else if ((GET_CODE (rld[r].in_reg) == PRE_INC - || GET_CODE (rld[r].in_reg) == PRE_DEC - || GET_CODE (rld[r].in_reg) == POST_INC - || GET_CODE (rld[r].in_reg) == POST_DEC) + else if (GET_RTX_CLASS (GET_CODE (rld[r].in_reg)) == RTX_AUTOINC && REG_P (XEXP (rld[r].in_reg, 0))) { regno = REGNO (XEXP (rld[r].in_reg, 0)); @@ -8114,7 +8112,8 @@ inc_for_reload (rtx reloadreg, rtx in, rtx value, int inc_amount) /* REG or MEM to be copied and incremented. */ rtx incloc = XEXP (value, 0); /* Nonzero if increment after copying. */ - int post = (GET_CODE (value) == POST_DEC || GET_CODE (value) == POST_INC); + int post = (GET_CODE (value) == POST_DEC || GET_CODE (value) == POST_INC + || GET_CODE (value) == POST_MODIFY); rtx last; rtx inc; rtx add_insn; @@ -8129,10 +8128,18 @@ inc_for_reload (rtx reloadreg, rtx in, rtx value, int inc_amount) if (REG_P (incloc)) reg_last_reload_reg[REGNO (incloc)] = 0; - if (GET_CODE (value) == PRE_DEC || GET_CODE (value) == POST_DEC) - inc_amount = -inc_amount; + if (GET_CODE (value) == PRE_MODIFY || GET_CODE (value) == POST_MODIFY) + { + gcc_assert (GET_CODE (XEXP (value, 1)) == PLUS); + inc = XEXP (XEXP (value, 1), 1); + } + else + { + if (GET_CODE (value) == PRE_DEC || GET_CODE (value) == POST_DEC) + inc_amount = -inc_amount; - inc = GEN_INT (inc_amount); + inc = GEN_INT (inc_amount); + } /* If this is post-increment, first copy the location to the reload reg. */ if (post && real_in != reloadreg) @@ -8192,7 +8199,10 @@ inc_for_reload (rtx reloadreg, rtx in, rtx value, int inc_amount) emit_insn (gen_add2_insn (reloadreg, inc)); store = emit_insn (gen_move_insn (incloc, reloadreg)); - emit_insn (gen_add2_insn (reloadreg, GEN_INT (-inc_amount))); + if (GET_CODE (inc) == CONST_INT) + emit_insn (gen_add2_insn (reloadreg, GEN_INT (-INTVAL(inc)))); + else + emit_insn (gen_sub2_insn (reloadreg, inc)); } return store; diff --git a/gcc/rtl-factoring.c b/gcc/rtl-factoring.c index 021a802a4d7..8113306e0e8 100644 --- a/gcc/rtl-factoring.c +++ b/gcc/rtl-factoring.c @@ -36,6 +36,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include "tree-flow.h" #include "timevar.h" #include "output.h" +#include "addresses.h" /* Sequence abstraction: @@ -689,8 +690,9 @@ recompute_gain_for_pattern_seq (pattern_seq pseq) #ifdef REGNO_OK_FOR_INDIRECT_JUMP_P || (!REGNO_OK_FOR_INDIRECT_JUMP_P (i, Pmode)) #else - || (!REGNO_MODE_OK_FOR_BASE_P (i, Pmode)) - || (!reg_class_subset_p (REGNO_REG_CLASS (i), BASE_REG_CLASS)) + || (!ok_for_base_p_1 (i, Pmode, MEM, SCRATCH)) + || (!reg_class_subset_p (REGNO_REG_CLASS (i), + base_reg_class (VOIDmode, MEM, SCRATCH))) #endif || (hascall && call_used_regs[i]) || (!call_used_regs[i] && !regs_ever_live[i])) diff --git a/gcc/rtl.def b/gcc/rtl.def index 078f4af67ac..4c5a632063b 100644 --- a/gcc/rtl.def +++ b/gcc/rtl.def @@ -2,7 +2,7 @@ Register Transfer Expressions (rtx's) that make up the Register Transfer Language (rtl) used in the Back End of the GNU compiler. Copyright (C) 1987, 1988, 1992, 1994, 1995, 1997, 1998, 1999, 2000, 2004, - 2005 + 2005, 2006 Free Software Foundation, Inc. This file is part of GCC. @@ -95,9 +95,8 @@ DEF_RTL_EXPR(INSN_LIST, "insn_list", "ue", RTX_EXTRA) /* a linked list of dependencies. The insns are represented in print by their uids. - Operand 2 is a degree of speculativeness of the dependence. - Operand 3 is a degree of weakness of the dependence. */ -DEF_RTL_EXPR(DEPS_LIST, "deps_list", "uew", RTX_EXTRA) + Operand 2 is the status of a dependence (see sched-int.h for more). */ +DEF_RTL_EXPR(DEPS_LIST, "deps_list", "uei", RTX_EXTRA) /* SEQUENCE appears in the result of a `gen_...' function for a DEFINE_EXPAND that wants to make several insns. diff --git a/gcc/rtl.h b/gcc/rtl.h index 22ecd16f77c..a442fb25d20 100644 --- a/gcc/rtl.h +++ b/gcc/rtl.h @@ -1,6 +1,6 @@ /* Register Transfer Language (RTL) definitions for GCC - Copyright (C) 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, + 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This file is part of GCC. @@ -361,6 +361,9 @@ struct rtvec_def GTY(()) { /* Predicate yielding nonzero iff X is an rtx for a memory location. */ #define MEM_P(X) (GET_CODE (X) == MEM) +/* Prediacte yielding nonzero iff X is an rtx for a constant integer. */ +#define CONST_INT_P(X) (GET_CODE (X) == CONST_INT) + /* Predicate yielding nonzero iff X is a label insn. */ #define LABEL_P(X) (GET_CODE (X) == CODE_LABEL) @@ -1754,7 +1757,7 @@ void free_INSN_LIST_node (rtx); rtx alloc_INSN_LIST (rtx, rtx); rtx alloc_EXPR_LIST (int, rtx, rtx); void free_DEPS_LIST_list (rtx *); -rtx alloc_DEPS_LIST (rtx, rtx, HOST_WIDE_INT); +rtx alloc_DEPS_LIST (rtx, rtx, int); void remove_free_DEPS_LIST_elem (rtx, rtx *); void remove_free_INSN_LIST_elem (rtx, rtx *); rtx remove_list_elem (rtx, rtx *); @@ -2062,7 +2065,6 @@ extern void remove_insn (rtx); extern void emit_insn_after_with_line_notes (rtx, rtx, rtx); extern rtx emit (rtx); extern void renumber_insns (void); -extern unsigned int remove_unnecessary_notes (void); extern rtx delete_insn (rtx); extern rtx entry_of_function (void); extern void delete_insn_chain (rtx, rtx); diff --git a/gcc/sched-ebb.c b/gcc/sched-ebb.c index 4126a5d7561..d7a3db9b61d 100644 --- a/gcc/sched-ebb.c +++ b/gcc/sched-ebb.c @@ -667,7 +667,7 @@ schedule_ebbs (void) /* !!! We can't check reg_live_info here because of the fact, that destination registers of COND_EXEC's may be dead before scheduling (while they should be alive). Don't know why. */ - /*check_reg_live ();*/ + /*check_reg_live (true);*/ #endif } sbitmap_free (large_region_blocks); diff --git a/gcc/sched-int.h b/gcc/sched-int.h index cdaca1b83f0..cc9812ad20f 100644 --- a/gcc/sched-int.h +++ b/gcc/sched-int.h @@ -1,7 +1,7 @@ /* Instruction scheduling pass. This file contains definitions used internally in the scheduler. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2003, 2004 Free Software Foundation, Inc. + 1999, 2000, 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This file is part of GCC. @@ -36,8 +36,8 @@ extern state_t curr_state; /* Forward declaration. */ struct ready_list; -/* Type to represent status of a dependence. A convinient short alias. */ -typedef HOST_WIDE_INT ds_t; +/* Type to represent status of a dependence. */ +typedef int ds_t; /* Type to represent weakness of speculative dependence. */ typedef int dw_t; @@ -377,10 +377,10 @@ extern regset *glat_start, *glat_end; for using to describe instruction's status. It is set whenever instuction has at least one dependence, that cannot be overcome. See also: check_dep_status () in sched-deps.c . */ -#define DEP_STATUS(LINK) XWINT (LINK, 2) +#define DEP_STATUS(LINK) XINT (LINK, 2) /* We exclude sign bit. */ -#define BITS_PER_DEP_STATUS (HOST_BITS_PER_WIDE_INT - 1) +#define BITS_PER_DEP_STATUS (HOST_BITS_PER_INT - 1) /* First '4' stands for 3 dep type bits and HARD_DEP bit. Second '4' stands for BEGIN_{DATA, CONTROL}, BE_IN_{DATA, CONTROL} @@ -639,7 +639,7 @@ extern void add_block (basic_block, basic_block); extern void attach_life_info (void); #ifdef ENABLE_CHECKING -extern void check_reg_live (void); +extern void check_reg_live (bool); #endif #endif /* GCC_SCHED_INT_H */ diff --git a/gcc/sched-rgn.c b/gcc/sched-rgn.c index 77eec4b0df0..a4f037e5351 100644 --- a/gcc/sched-rgn.c +++ b/gcc/sched-rgn.c @@ -3020,7 +3020,7 @@ schedule_insns (void) : (PROP_DEATH_NOTES | PROP_REG_INFO))); #ifdef ENABLE_CHECKING - check_reg_live (); + check_reg_live (true); #endif } @@ -3266,7 +3266,8 @@ region_head_or_leaf_p (basic_block bb, int leaf_p) i = CONTAINING_RGN (bb->index); FOR_EACH_EDGE (e, ei, bb->succs) - if (CONTAINING_RGN (e->dest->index) == i + if (e->dest != EXIT_BLOCK_PTR + && CONTAINING_RGN (e->dest->index) == i /* except self-loop. */ && e->dest != bb) return 0; diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c index e00e9ccca10..0ce033df208 100644 --- a/gcc/simplify-rtx.c +++ b/gcc/simplify-rtx.c @@ -656,7 +656,8 @@ simplify_unary_operation_1 (enum rtx_code code, enum machine_mode mode, rtx op) if ((TRULY_NOOP_TRUNCATION (GET_MODE_BITSIZE (mode), GET_MODE_BITSIZE (GET_MODE (op))) ? (num_sign_bit_copies (op, GET_MODE (op)) - >= (unsigned int) (GET_MODE_BITSIZE (mode) + 1)) + > (unsigned int) (GET_MODE_BITSIZE (GET_MODE (op)) + - GET_MODE_BITSIZE (mode))) : truncated_to_mode (mode, op)) && ! (GET_CODE (op) == LSHIFTRT && GET_CODE (XEXP (op, 0)) == MULT)) @@ -3517,8 +3518,7 @@ simplify_relational_operation (enum rtx_code code, enum machine_mode mode, return simplify_relational_operation (code, mode, VOIDmode, XEXP (op0, 0), XEXP (op0, 1)); - if (mode == VOIDmode - || GET_MODE_CLASS (cmp_mode) == MODE_CC + if (GET_MODE_CLASS (cmp_mode) == MODE_CC || CC0_P (op0)) return NULL_RTX; diff --git a/gcc/stmt.c b/gcc/stmt.c index a3e3db3b3b6..be3e876f589 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -2364,19 +2364,9 @@ expand_case (tree exp) } - /* Make sure start points to something that won't need any - transformation before the end of this function. */ - start = get_last_insn (); - if (! NOTE_P (start)) - { - emit_note (NOTE_INSN_DELETED); - start = get_last_insn (); - } - + before_case = start = get_last_insn (); default_label = label_rtx (default_label_decl); - before_case = get_last_insn (); - /* Get upper and lower bounds of case values. */ uniq = 0; diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index caf176f49c5..723e0689201 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -190,15 +190,16 @@ mode_for_size (unsigned int size, enum mode_class class, int limit) enum machine_mode mode_for_size_tree (tree size, enum mode_class class, int limit) { - if (TREE_CODE (size) != INTEGER_CST - || TREE_OVERFLOW (size) - /* What we really want to say here is that the size can fit in a - host integer, but we know there's no way we'd find a mode for - this many bits, so there's no point in doing the precise test. */ - || compare_tree_int (size, 1000) > 0) + unsigned HOST_WIDE_INT uhwi; + unsigned int ui; + + if (!host_integerp (size, 1)) return BLKmode; - else - return mode_for_size (tree_low_cst (size, 1), class, limit); + uhwi = tree_low_cst (size, 1); + ui = uhwi; + if (uhwi != ui) + return BLKmode; + return mode_for_size (ui, class, limit); } /* Similar, but never return BLKmode; return the narrowest mode that @@ -1938,20 +1939,19 @@ void initialize_sizetypes (bool signed_p) { tree t = make_node (INTEGER_TYPE); + int precision = GET_MODE_BITSIZE (SImode); TYPE_MODE (t) = SImode; TYPE_ALIGN (t) = GET_MODE_ALIGNMENT (SImode); TYPE_USER_ALIGN (t) = 0; TYPE_IS_SIZETYPE (t) = 1; TYPE_UNSIGNED (t) = !signed_p; - TYPE_SIZE (t) = build_int_cst (t, GET_MODE_BITSIZE (SImode)); + TYPE_SIZE (t) = build_int_cst (t, precision); TYPE_SIZE_UNIT (t) = build_int_cst (t, GET_MODE_SIZE (SImode)); - TYPE_PRECISION (t) = GET_MODE_BITSIZE (SImode); - TYPE_MIN_VALUE (t) = build_int_cst (t, 0); + TYPE_PRECISION (t) = precision; - /* 1000 avoids problems with possible overflow and is certainly - larger than any size value we'd want to be storing. */ - TYPE_MAX_VALUE (t) = build_int_cst (t, 1000); + /* Set TYPE_MIN_VALUE and TYPE_MAX_VALUE. */ + set_min_and_max_values_for_integral_type (t, precision, !signed_p); sizetype = t; bitsizetype = build_distinct_type_copy (t); @@ -2148,13 +2148,17 @@ fixup_unsigned_type (tree type) If LARGEST_MODE is not VOIDmode, it means that we should not use a mode larger than LARGEST_MODE (usually SImode). - If no mode meets all these conditions, we return VOIDmode. Otherwise, if - VOLATILEP is true or SLOW_BYTE_ACCESS is false, we return the smallest - mode meeting these conditions. + If no mode meets all these conditions, we return VOIDmode. + + If VOLATILEP is false and SLOW_BYTE_ACCESS is false, we return the + smallest mode meeting these conditions. - Otherwise (VOLATILEP is false and SLOW_BYTE_ACCESS is true), we return - the largest mode (but a mode no wider than UNITS_PER_WORD) that meets - all the conditions. */ + If VOLATILEP is false and SLOW_BYTE_ACCESS is true, we return the + largest mode (but a mode no wider than UNITS_PER_WORD) that meets + all the conditions. + + If VOLATILEP is true the narrow_volatile_bitfields target hook is used to + decide which of the above modes should be used. */ enum machine_mode get_best_mode (int bitsize, int bitpos, unsigned int align, @@ -2184,7 +2188,8 @@ get_best_mode (int bitsize, int bitpos, unsigned int align, || (largest_mode != VOIDmode && unit > GET_MODE_BITSIZE (largest_mode))) return VOIDmode; - if (SLOW_BYTE_ACCESS && ! volatilep) + if ((SLOW_BYTE_ACCESS && ! volatilep) + || (volatilep && !targetm.narrow_volatile_bitfield())) { enum machine_mode wide_mode = VOIDmode, tmode; diff --git a/gcc/system.h b/gcc/system.h index c89394b47cd..4d191e7009d 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -227,6 +227,8 @@ extern int errno; # endif #endif +#define ICE_EXIT_CODE 4 + #ifdef HAVE_UNISTD_H # include #endif diff --git a/gcc/target-def.h b/gcc/target-def.h index de13a292d28..7ac82e401f7 100644 --- a/gcc/target-def.h +++ b/gcc/target-def.h @@ -412,6 +412,7 @@ Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #define TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P hook_bool_tree_false #define TARGET_MS_BITFIELD_LAYOUT_P hook_bool_tree_false #define TARGET_ALIGN_ANON_BITFIELD hook_bool_void_false +#define TARGET_NARROW_VOLATILE_BITFIELD hook_bool_void_false #define TARGET_RTX_COSTS hook_bool_rtx_int_int_intp_false #define TARGET_MANGLE_FUNDAMENTAL_TYPE hook_constcharptr_tree_null #define TARGET_ALLOCATE_INITIAL_VALUE NULL @@ -607,6 +608,7 @@ Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. TARGET_MS_BITFIELD_LAYOUT_P, \ TARGET_DECIMAL_FLOAT_SUPPORTED_P, \ TARGET_ALIGN_ANON_BITFIELD, \ + TARGET_NARROW_VOLATILE_BITFIELD, \ TARGET_INIT_BUILTINS, \ TARGET_EXPAND_BUILTIN, \ TARGET_EXPAND_LIBRARY_BUILTIN, \ diff --git a/gcc/target.h b/gcc/target.h index 8f893f09e7e..74b8be4bb9f 100644 --- a/gcc/target.h +++ b/gcc/target.h @@ -1,5 +1,6 @@ /* Data structure definitions for a generic GCC target. - Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 + 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 @@ -329,7 +330,7 @@ struct gcc_target 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, HOST_WIDE_INT, rtx *); + 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 @@ -418,6 +419,10 @@ struct gcc_target /* 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); diff --git a/gcc/targhooks.c b/gcc/targhooks.c index 7f16bc0f181..182902c6a77 100644 --- a/gcc/targhooks.c +++ b/gcc/targhooks.c @@ -397,6 +397,8 @@ default_external_stack_protect_fail (void) TREE_NOTHROW (t) = 1; DECL_ARTIFICIAL (t) = 1; DECL_IGNORED_P (t) = 1; + DECL_VISIBILITY (t) = VISIBILITY_DEFAULT; + DECL_VISIBILITY_SPECIFIED (t) = 1; stack_chk_fail_decl = t; } @@ -554,4 +556,18 @@ default_secondary_reload (bool in_p ATTRIBUTE_UNUSED, rtx x ATTRIBUTE_UNUSED, return class; } + +/* If STRICT_ALIGNMENT is true we use the container type for accessing + volatile bitfields. This is generally the preferred behavior for memory + mapped peripherals on RISC architectures. + If STRICT_ALIGNMENT is false we use the narrowest type possible. This + is typically used to avoid spurious page faults and extra memory accesses + due to unaligned accesses on CISC architectures. */ + +bool +default_narrow_bitfield (void) +{ + return !STRICT_ALIGNMENT; +} + #include "gt-targhooks.h" diff --git a/gcc/targhooks.h b/gcc/targhooks.h index 05d1addc327..7c99b081a50 100644 --- a/gcc/targhooks.h +++ b/gcc/targhooks.h @@ -54,6 +54,8 @@ extern bool default_decimal_float_supported_p (void); extern const char * default_invalid_within_doloop (rtx); +extern bool default_narrow_bitfield (void); + /* These are here, and not in hooks.[ch], because not all users of hooks.h include tm.h, and thus we don't have CUMULATIVE_ARGS. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 90dc7004ae1..d21f41cc011 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,405 @@ +2006-04-05 Richard Guenther + + PR tree-optimization/26919 + * gcc.dg/ipa/ipa-1.c: Use -fno-early-inlining. + * gcc.dg/ipa/ipa-2.c: Likewise. + * gcc.dg/ipa/ipa-3.c: Likewise. + * gcc.dg/ipa/ipa-5.c: Likewise. + +2006-04-05 Richard Guenther + + PR tree-optimization/26763 + * gcc.dg/torture/pr26763-1.c: New testcase. + * gcc.dg/torture/pr26763-2.c: Likewise. + +2006-04-04 Paul Thomas + + PR fortran/23634 + PR fortran/25619 + * gfortran.dg/actual_array_constructor_1.f90: New testcase. + +2006-04-04 Eric Christopher + + * gcc.target/i386/387-1.c: Allow regexp to match darwin + stubs. + * gcc.target/i386/387-5.c: Ditto. + +2006-04-04 Carlos O'Donell + + * gcc.target/sparc/struct-ret-check.c: New test. + +2006-04-03 Jerry DeLisle + + * gfortran.dg/fmt_zero_digits.f90: New test for no error when + zero decimal digits specified in format. + +2006-04-03 Paul Thomas + + PR fortran/26891 + * gfortran.dg/missing_optional_dummy_1.f90: New test. + + PR fortran/26976 + * gfortran.dg/compliant_elemental_intrinsics_1.f90: New test. + * gfortran.dg/initialization_1.f90: Make assignment compliant. + * gfortran.dg/transfer_array_intrinsic_1.f90: Simplify. + * gfortran.dg/transfer_array_intrinsic_2.f90: Make assignments compliant and detect + bigendian-ness. + +2006-04-02 Erik Edelmann + + * gfortran.dg/allocatable_dummy_1.f90: Also check that allocatable + dummy arguments work when the actual argument is itself a dummy + argument of the caller. + +2006-04-01 Eric Botcazou + + PR libfortran/24685 + * gfortran.dg/large_real_kind_form_io_2.f90: XFAIL on SPARC/Solaris. + +2006-04-01 Roger Sayle + + * gfortran.dg/dependencency_17.f90: New test case. + +2006-04-01 Roger Sayle + + * gfortran.dg/dependency_14.f90: New test case. + * gfortran.dg/dependency_15.f90: Likewise. + * gfortran.dg/dependency_16.f90: Likewise. + +2006-03-31 Asher Langton + + PR fortran/25358 + gfortran.dg/cray_pointers_6.f90: New test. + +2006-03-30 Jerry DeLisle + + PR libgfortran/26890 + * gfortran.dg/read_size_noadvance.f90: New test. + +2006-03-30 Thomas Koenig + + PR fortran/25031 + * gfortran.dg/multiple_allocation_1.f90: Check that the + size has changed after a re-allocation with stat. + +2006-03-30 Richard Guenther + + * gcc.target/i386/sselibm-1.c: Adjust for libgcc-math partial + removal. + * gcc.target/i386/sselibm-2.c: Likewise. + * gcc.target/i386/sselibm-3.c: Likewise. + * gcc.target/i386/sselibm-4.c: Likewise. + * gcc.target/i386/sselibm-5.c: Likewise. + +2006-03-28 Roger Sayle + + * gcc.dg/fold-andxor-1.c: New test case. + * gcc.dg/fold-xorand-1.c: Likewise. + +2006-03-28 Roger Sayle + + * gcc.dg/fold-convnotconv-1.c: New test case. + +2006-03-28 Paul Thomas + + PR fortran/26779 + * gfortran.dg/private_type_5.f90: New test. + +2006-03-27 David Edelsohn + + * objc.dg/objc-nofilename-1.m: Limit to Darwin. + +2006-03-27 Jakub Jelinek + + * gfortran.dg/advance_2.f90: New test. + * gfortran.dg/advance_3.f90: New test. + + * gfortran.fortran-torture/execute/equiv_5.f: New test. + +2006-03-26 Jerry DeLisle + + PR libgfortran/26661 + PR libgfortran/26880 + * gfortran.dg/read_x_past.f: New test. + +2006-03-26 Geoffrey Keating + + * gcc.dg/darwin-20040809-2.c: Don't expect default debugging + to be STABS. + +2006-03-26 David Edelsohn + + * objc.dg/dwarf-1.m: Skip on AIX. + * objc.dg/dwarf-2.m: Skip on AIX. + +2006-03-25 Steven G. Kargl + + PR fortran/26816 + * gfortran.dg/float_1.f90: New test. + +2006-03-25 Steven G. Kargl + + * gfortran.dg/transfer_array_intrinsic_1.f90: Restrict to i?86 and + X86_64 targets. + * gfortran.dg/transfer_array_intrinsic_2.f90: Ditto. + +2006-03-25 Thomas Koenig + + PR libfortran/26735 + * gfortran.dg/convert_implied_open.f90: New test case. + +2006-03-25 Thomas Koenig + + PR fortran/26769 + * gfortran.dg/transpose_reshape_r10.f90: New test case. + +2006-03-25 Uros Bizjak + + PR middle-end/26717 + * gcc.dg/pr26717.c: New test. + +2006-03-25 Roger Sayle + + * gfortran.dg/dependency_12.f90: New test case. + +2006-03-24 Roger Sayle + + * gfortran.dg/dependency_9.f90: New (resurected) test case. + +2006-03-24 Jeff Law + + * gcc.c-torture/pr26840.c: New test. + +2006-03-24 Geoffrey Keating + + * objc.dg/dwarf-2.m: New. + * obj-c++.dg/dwarf-2.mm: New. + + * g++.old-deja/g++.other/init19.C: New. + +2006-03-24 David Edelsohn + + * g++.dg/eh/spbp.C: Skip on AIX. + +2006-03-24 Jakub Jelinek + + PR middle-end/26611 + * g++.dg/gomp/pr26611-1.C: New test. + * g++.dg/gomp/pr26611-2.C: New test. + +2006-03-24 Jeff Law + + * gcc.c-torture/compile/pr26833.c: New test. + * gfortran.fortran-torture/compile/pr26806.f90: New test. + +2006-03-22 Kaveh R. Ghazi + + * gfortran.dg/endfile_2.f90: Delete temp file. + +2006-03-22 Thomas Koenig + + PR fortran/19303 + * gfortran.dg/record_marker_1.f90: New test case. + * gfortran.dg/record_marker_2.f: New test case. + * gfortran.dg/record_marker_3.f90: New test case. + +2006-03-22 Paul Thomas + + PR fortran/17298 + * gfortran.dg/transfer_array_intrinsic_1.f90: New test. + * gfortran.dg/transfer_array_intrinsic_2.f90: New test. + +2006-03-21 Janis Johnson + + * lib/gcc-dg.exp (cleanup-modules): New proc. + * gfortran.dg/allocatable_function_1.f90, + gfortran.dg/allocate_char_star_scalar_1.f90, + gfortran.dg/assumed_charlen_function_1.f90, + gfortran.dg/assumed_dummy_1.f90, + gfortran.dg/assumed_shape_ranks_1.f90, + gfortran.dg/assumed_shape_ranks_2.f90, + gfortran.dg/assumed_size_dt_dummy.f90, + gfortran.dg/auto_char_dummy_array_1.f90, + gfortran.dg/auto_char_len_3.f90, + gfortran.dg/automatic_module_variable.f90, + gfortran.dg/bad_automatic_objects_1.f90, + gfortran.dg/char_array_constructor.f90, + gfortran.dg/char_array_structure_constructor.f90, + gfortran.dg/char_result_11.f90, gfortran.dg/char_result_9.f90, + gfortran.dg/contained_1.f90, gfortran.dg/convert_1.f90, + gfortran.dg/cray_pointers_5.f90, gfortran.dg/data_constraints_1.f90, + gfortran.dg/default_initialization.f90, gfortran.dg/der_charlen_1.f90, + gfortran.dg/der_io_2.f90, gfortran.dg/der_io_3.f90, + gfortran.dg/derived_pointer_recursion.f90, + gfortran.dg/derived_recursion.f90, gfortran.dg/der_pointer_1.f90, + gfortran.dg/der_pointer_3.f90, gfortran.dg/der_pointer_4.f90, + gfortran.dg/dummy_functions_1.f90, + gfortran.dg/elemental_initializer_1.f90, + gfortran.dg/elemental_non_intrinsic_dummy_1.f90, + gfortran.dg/elemental_pointer_1.f90, + gfortran.dg/elemental_subroutine_1.f90, + gfortran.dg/elemental_subroutine_2.f90, gfortran.dg/entry_1.f90, + gfortran.dg/entry_3.f90, gfortran.dg/enum_10.f90, + gfortran.dg/equiv_constraint_3.f90, gfortran.dg/func_derived_1.f90, + gfortran.dg/func_derived_2.f90, gfortran.dg/func_derived_3.f90, + gfortran.dg/generic_1.f90, gfortran.dg/generic_2.f90, + gfortran.dg/generic_3.f90, gfortran.dg/generic_4.f90, + gfortran.dg/global_references_1.f90, + gfortran.dg/host_used_types_1.f90, gfortran.dg/implicit_1.f90, + gfortran.dg/implicit_2.f90, gfortran.dg/implicit_actual.f90, + gfortran.dg/initialization_1.f90, gfortran.dg/int_1.f90, + gfortran.dg/intent_used_1.f90, gfortran.dg/interface_1.f90, + gfortran.dg/interface_2.f90, gfortran.dg/internal_references_2.f90, + gfortran.dg/io_constraints_1.f90, gfortran.dg/io_constraints_2.f90, + gfortran.dg/large_integer_kind_1.f90, + gfortran.dg/large_real_kind_1.f90, + gfortran.dg/module_blank_common.f90, gfortran.dg/module_commons_1.f90, + gfortran.dg/module_double_reuse.f90, + gfortran.dg/module_equivalence_1.f90, + gfortran.dg/module_interface_1.f90, + gfortran.dg/module_parameter_array_refs_1.f90, + gfortran.dg/named_interface.f90, gfortran.dg/namelist_14.f90, + gfortran.dg/namelist_15.f90, gfortran.dg/namelist_1.f90, + gfortran.dg/namelist_4.f90, gfortran.dg/namelist_use.f90, + gfortran.dg/namelist_use_only.f90, gfortran.dg/nested_modules_1.f90, + gfortran.dg/nested_modules_2.f90, gfortran.dg/nested_modules_3.f90, + gfortran.dg/nested_modules_4.f90, gfortran.dg/nested_modules_5.f90, + gfortran.dg/parens_5.f90, gfortran.dg/parent_result_ref_4.f90, + gfortran.dg/pr15164.f90, gfortran.dg/pr16861.f90, + gfortran.dg/pr17615.f90, gfortran.dg/pr19926.f90, + gfortran.dg/pr21177.f90, gfortran.dg/pr26246_1.f90, + gfortran.dg/private_type_1.f90, gfortran.dg/private_type_2.f90, + gfortran.dg/private_type_3.f90, gfortran.dg/private_type_4.f90, + gfortran.dg/procedure_lvalue.f90, gfortran.dg/pure_byref_3.f90, + gfortran.dg/same_name_1.f90, + gfortran.dg/sibling_dummy_procedure_1.f90, + gfortran.dg/sibling_dummy_procedure_2.f90, + gfortran.dg/sibling_dummy_procedure_3.f90, + gfortran.dg/substr_1.f90, gfortran.dg/substring_equivalence.f90, + gfortran.dg/use_allocated_1.f90, gfortran.dg/used_dummy_types_1.f90, + gfortran.dg/used_dummy_types_2.f90, + gfortran.dg/used_dummy_types_3.f90, + gfortran.dg/used_dummy_types_4.f90, + gfortran.dg/used_dummy_types_5.f90, + gfortran.dg/used_interface_ref.f90, gfortran.dg/used_types_1.f90, + gfortran.dg/userdef_operator_1.f90: Use it. + +2006-03-21 Kaveh R. Ghazi + + * gfortran.dg/advance.f90, gfortran.dg/backspace_2.f, + gfortran.dg/comma.f, gfortran.dg/direct_io_2.f90, + gfortran.dg/tl_editing.f90, gfortran.dg/unf_io_convert_1.f90, + gfortran.dg/write_back.f, + gfortran.fortran-torture/execute/inquire_1.f90, + gfortran.fortran-torture/execute/inquire_3.f90: Delete temp file. + +2006-03-21 Jeff Law + + * gcc.dg/tree-ssa/vrp28.c: New test. + +2006-03-21 Eric Botcazou + + * gcc.dg/builtins-config.h (Solaris case): Define HAVE_C99_RUNTIME + if _STDC_C99 is defined. + * gcc.dg/builtins-18.c: Pass -std=c99 on Solaris. + * gcc.dg/builtins-20.c: Likewise. + * gcc.dg/builtins-53.c: Likewise. + * gcc.dg/single-precision-constant.c: Likewise. Also pass + -mmacosx-version-min=10.3 on PowerPC/Darwin. + +2006-03-21 Andrew Pinski + + PR tree-opt/26781 + * gcc.c-torture/compile/pr26781-1.c: New test. + * gcc.c-torture/compile/pr26781-2.c: New test. + +2006-03-21 Jakub Jelinek + + PR c++/26690 + * g++.dg/gomp/pr26690-1.C: New test. + * g++.dg/gomp/pr26690-2.C: New test. + +2006-03-20 Jeff Law + + * gcc.dg/tree-ssa/pr21829.c: New test. + + * gcc.dg/tree-ssa/20030807-2.c: Make sure to run VRP. + +2006-03-20 Richard Sandiford + + * lib/target-supports.exp (check_no_compiler_messages): New procedure. + (check_visibility_available): Use it. + (check_effective_target_default_packed): Likewise. + (check_effective_target_pcc_bitfield_type_matters): Likewise. + (check_effective_target_fopenmp): Likewise. + (check_effective_target_freorder): Likewise. + (check_effective_target_fpic): Likewise. + (check_named_sections_available): Likewise. + (check_effective_target_ilp32): Likewise. + (check_effective_target_lp64): Likewise. + +2006-03-20 Thomas Koenig + + PR fortran/20935 + * gfortran.dg/scalar_mask_2.f90: New test case. + +2006-03-20 Andrew Pinski + + PR tree-opt/26629 + * gcc.dg/tree-ssa/loadpre12.c: New test. + * gcc.dg/tree-ssa/loadpre13.c: New test. + * gcc.dg/tree-ssa/loadpre14.c: New test. + * gcc.dg/tree-ssa/loadpre15.c: New test. + * gcc.dg/tree-ssa/loadpre16.c: New test. + * gcc.dg/tree-ssa/loadpre17.c: New test. + * gcc.dg/tree-ssa/loadpre18.c: New test. + * gcc.dg/tree-ssa/loadpre19.c: New test. + * gcc.dg/tree-ssa/loadpre20.c: New test. + * gcc.dg/tree-ssa/loadpre21.c: New test. + * gcc.dg/tree-ssa/loadpre22.c: New test. + +2006-03-19 Paul Thomas + + PR fortran/26741 + * gfortran.dg/elemental_initializer_1.f90: New test. + + PR fortran/26716 + * gfortran.dg/assumed_shape_ranks_2: New test. + +2006-03-18 Joseph S. Myers + + * gcc.dg/980523-1.c, gcc.dg/980526-1.c, gcc.dg/switch-1.c: Use + target fpic. + +2006-03-18 Kaveh R. Ghazi + + * gfortran.dg/direct_io_1.f90, gfortran.dg/iostat_2.f90, + gfortran.dg/open_new.f90, gfortran.dg/open_readonly_1.f90, + gfortran.dg/pr16935.f90, gfortran.dg/pr20954.f, + gfortran.dg/read_many_1.f, gfortran.dg/unf_io_convert_2.f90, + gfortran.fortran-torture/execute/direct_io.f90, + gfortran.fortran-torture/execute/inquire_2.f90, + gfortran.fortran-torture/execute/inquire_4.f90, + gfortran.fortran-torture/execute/list_read_1.f90, + gfortran.fortran-torture/execute/open_replace.f90, + gfortran.fortran-torture/execute/slash_edit.f90, + gfortran.fortran-torture/execute/unopened_unit_1.f90: Delete + temporary files from testcases. + +2006-03-17 Jerry DeLisle + + PR libgfortran/26509 + gfortran.dg/write_direct_eor.f90: New test. + +2006-03-17 David Edelsohn + + * gcc.target/powerpc/pr26350.c: New. + * gcc.target/powerpc/indexed-addr.c: New. + +2006-03-16 Roger Sayle + + * gfortran.dg/dependency_13.f90: New test case. + 2006-03-16 Roger Sayle PR middle-end/21781 @@ -81,20 +483,24 @@ PR middle-end/26565 * gcc.dg/torture/pr26565.c: New testcase. +2006-03-09 Eric Christopher + + * gcc.c-torture/compile/20060309-1.c: New. + 2006-03-09 Jerry DeLisle PR libgfortran/26499 * gfortran.dg/write_back.f: New test. * gfortran.dg/write_rewind_1.f: New test. * gfortran.dg/write_rewind_2.f: New test. - + 2006-03-05 Jerry DeLisle PR libgfortran/26554 * gfortran.dg/read_logical.f90: New test. 2006-03-04 Laurent GUERBY - + * ada/acats/norun.lst: cdd2a03 now passes. 2006-03-04 Andrew Pinski @@ -168,7 +574,7 @@ 2006-03-01 Paul Thomas - * gfortran.dg/logical_dot_product.f90: New test. + * gfortran.dg/logical_dot_product.f90: New test. PR fortran/26393 * gfortran.dg/used_interface_ref.f90: New test. @@ -256,7 +662,7 @@ 2006-02-26 Dorit Nuzman PR tree-optimizations/26359 - * gcc.dg/vect/vect.exp: Compile tests prefixed with "dump-tree-dceloop" + * gcc.dg/vect/vect.exp: Compile tests prefixed with "dump-tree-dceloop" with -fdump-tree-dceloop-details. * gcc.dg/vect/dump-tree-dceloop-pr26359.c: New test. @@ -546,7 +952,7 @@ 2006-02-13 Josh Conner PR target/25376 - * gcc.dg/pr25376.c: New test. + * gcc.dg/pr25376.c: New test. * gcc.c-torture/compile/pr23237.c: Only compile test -- don't assemble. @@ -710,7 +1116,7 @@ * gcc.dg/tree-ssa/pr21086.c: Likewise * gcc.dg/tree-ssa/pr21959.c: Likewise * gcc.dg/tree-ssa/vrp21.c: Likewise - * gcc.dg/tree-ssa/vrp04.c: Likewise + * gcc.dg/tree-ssa/vrp04.c: Likewise * gcc.dg/tree-ssa/pr25485.c: Likewise * gcc.dg/tree-ssa/pr22026.c: Likewise * gcc.dg/tree-ssa/vrp22.c: Likewise @@ -816,7 +1222,7 @@ * g++.old-deja/g++.brendan/ptolemy1.C (InterpTableEntry::name): Change type to const char*. * g++.old-deja/g++.brendan/ptolemy2.C (InterpTableEntry::name): - Likewise. + Likewise. * g++.old-deja/g++.jason/default2.C (bar::memberfunction): Change second parameter type to const char*. * g++.old-deja/g++.jason/opeq.C (X::X): Likewise. @@ -849,7 +1255,7 @@ * g++.old-deja/g++.mike/p811.C (X::stringify): Match for deprecated conversion warning. * g++.old-deja/g++.other/init15.C (A::name): Change type to const - char*. + char*. * g++.old-deja/g++.other/inline12.C: Adjust for const correctness. * g++.old-deja/g++.other/sibcall1.C (foo): Likewise. * g++.old-deja/g++.pt/explicit8.C: Likewise. diff --git a/gcc/testsuite/g++.dg/eh/spbp.C b/gcc/testsuite/g++.dg/eh/spbp.C index d9d0130c847..b1255b94317 100644 --- a/gcc/testsuite/g++.dg/eh/spbp.C +++ b/gcc/testsuite/g++.dg/eh/spbp.C @@ -1,5 +1,6 @@ /* { dg-do run } */ /* { dg-options "-gdwarf-2" } */ +/* { dg-skip-if "No Dwarf" { *-*-aix* } { "*" } { "" } } */ /* This was a bug on x86-darwin, where the register numbering for SP and BP was swapped (it's easy to do because on that port it's diff --git a/gcc/testsuite/g++.dg/ext/visibility/anon1.C b/gcc/testsuite/g++.dg/ext/visibility/anon1.C new file mode 100644 index 00000000000..9a3d8a7f8ab --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/visibility/anon1.C @@ -0,0 +1,10 @@ +// PR c++/21581 +// Test for anonymous namespace default hidden visibility + +// { dg-require-visibility "" } +// { dg-final { scan-hidden "_ZN.*1fEv" } } + +namespace +{ + int f() { } +} diff --git a/gcc/testsuite/g++.dg/ext/visibility/local1.C b/gcc/testsuite/g++.dg/ext/visibility/local1.C new file mode 100644 index 00000000000..7a04db60115 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/visibility/local1.C @@ -0,0 +1,25 @@ +// PR c++/19238 +// Test that hidden visibility on an inline function is inherited by static +// local variables and local classes. + +// { dg-require-visibility "" } +// { dg-final { scan-hidden "_Z1fv" } } +// { dg-final { scan-hidden "_ZZ1fvE1i" } } +// { dg-final { scan-hidden "_ZZ1fvEN1A1fEv" } } + +__attribute ((visibility ("hidden"))) inline int +f() +{ + static int i = 2; + struct A + { + void f () { } + } a; + a.f(); + return i; +} + +int main() +{ + f(); +} diff --git a/gcc/testsuite/g++.dg/ext/visibility/namespace1.C b/gcc/testsuite/g++.dg/ext/visibility/namespace1.C new file mode 100644 index 00000000000..b7773dc9d61 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/visibility/namespace1.C @@ -0,0 +1,30 @@ +// PR c++/21764 +// Test for namespace visibility attribute semantics. + +// { dg-require-visibility "" } +// { dg-final { scan-hidden "_ZN3foo1fEv" } } +// { dg-final { scan-hidden "_ZN3foo1gEv" } } +// { dg-final { scan-hidden "_ZN3foo1A1mEv" } } +// { dg-final { scan-hidden "_ZN3foo1tIiEEvv" } } +// { dg-final { scan-not-hidden "_ZN3foo1hEv" } } + +namespace foo __attribute ((visibility ("hidden"))) +{ + int f() { } + void g(); + template void t() { } + class A + { + void m (); + }; +} + +namespace foo +{ + void h() {} +} + +void foo::g() { t (); } + +void foo::A::m() { } + diff --git a/gcc/testsuite/g++.dg/gomp/pr26611-1.C b/gcc/testsuite/g++.dg/gomp/pr26611-1.C new file mode 100644 index 00000000000..8ec543bd614 --- /dev/null +++ b/gcc/testsuite/g++.dg/gomp/pr26611-1.C @@ -0,0 +1,15 @@ +// PR middle-end/26611 +// { dg-do compile } + +void +foo () +{ +#pragma omp parallel + try + { + int q = 1; + } + catch (...) + { + } +} diff --git a/gcc/testsuite/g++.dg/gomp/pr26611-2.C b/gcc/testsuite/g++.dg/gomp/pr26611-2.C new file mode 100644 index 00000000000..f951798915f --- /dev/null +++ b/gcc/testsuite/g++.dg/gomp/pr26611-2.C @@ -0,0 +1,15 @@ +// PR middle-end/26611 +// { dg-do compile } + +void +foo () +{ +#pragma omp parallel + try + { + } + catch (...) + { + int q = 1; + } +} diff --git a/gcc/testsuite/g++.dg/gomp/pr26690-1.C b/gcc/testsuite/g++.dg/gomp/pr26690-1.C new file mode 100644 index 00000000000..9efd8d45ee9 --- /dev/null +++ b/gcc/testsuite/g++.dg/gomp/pr26690-1.C @@ -0,0 +1,15 @@ +// PR c++/26690 +// { dg-do compile } + +struct A +{ // { dg-error "A::A\\(const A&\\)" } + A (int); // { dg-error "candidates" } +}; + +void +foo () +{ + A a(0); +#pragma omp parallel private (a) // { dg-error "no matching function" } + ; +} diff --git a/gcc/testsuite/g++.dg/gomp/pr26690-2.C b/gcc/testsuite/g++.dg/gomp/pr26690-2.C new file mode 100644 index 00000000000..4ebf677cd08 --- /dev/null +++ b/gcc/testsuite/g++.dg/gomp/pr26690-2.C @@ -0,0 +1,16 @@ +// PR c++/26690 +// { dg-do compile } + +struct A +{ + A (int x = 6); // { dg-error "A::A\\(int\\)" } + A (long long x = 12LL); // { dg-error "candidates" } +}; + +void +foo () +{ + A a(6); +#pragma omp parallel private (a) // { dg-error "call of overloaded" } + ; +} diff --git a/gcc/testsuite/g++.old-deja/g++.other/init19.C b/gcc/testsuite/g++.old-deja/g++.other/init19.C new file mode 100644 index 00000000000..297ae781ec2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/init19.C @@ -0,0 +1,85 @@ +// { dg-do run } +#include + +#define assert(x) do { if (! (x)) abort(); } while (0) + +int count = 0; + +class A +{ +public: + explicit A(int i); + ~A(); + + int i; + + A(const A&); + A& operator=(const A&); +}; + +A::A(int i_) + : i(i_) +{ +} + +A::~A() +{ + assert(++count == i); + i = -1; +} + +extern "C" { + +void one() +{ + static bool second_time; + if (second_time) + assert(++count == 9); + else + { + assert(++count == 1); + second_time = true; + } + static A a(10); + assert(a.i == 10); +} + +void two() +{ + assert(++count == 7); + static A a(8); + assert(a.i == 8); +} + +void three() +{ + assert(++count == 2); + static A a(6); + assert(a.i == 6); +} + +void five() +{ + assert(++count == 4); + static A a(5); + assert(a.i == 5); +} + +void four() +{ + assert(++count == 3); + atexit(five); +} + +} + +A zero(11); + +int main() +{ + one(); + atexit(one); + atexit(two); + three(); + atexit(four); +} diff --git a/gcc/testsuite/gcc.c-torture/compile/pr26781-1.c b/gcc/testsuite/gcc.c-torture/compile/pr26781-1.c new file mode 100644 index 00000000000..028919e5282 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr26781-1.c @@ -0,0 +1,11 @@ +void zconfdump(void) +{ + char *p, *p2; + for (p2 = p; p2; ) + { + char __a0, __a1, __a2; + __a0 = ((__const char *) ("\"\\"))[0]; + if (__a0) + return; + } +} diff --git a/gcc/testsuite/gcc.c-torture/compile/pr26781-2.c b/gcc/testsuite/gcc.c-torture/compile/pr26781-2.c new file mode 100644 index 00000000000..47168fdc63b --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr26781-2.c @@ -0,0 +1,11 @@ +void zconfdump(__SIZE_TYPE__ i) +{ + for (;;) + { + char __a0; + __a0 = ("\"\\")[i]; + if (__a0) + return; + } +} + diff --git a/gcc/testsuite/gcc.c-torture/compile/pr26833.c b/gcc/testsuite/gcc.c-torture/compile/pr26833.c new file mode 100644 index 00000000000..76c201c6ea0 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr26833.c @@ -0,0 +1,19 @@ +void yasm_lc3b__parse_insn( int num_info, int *num_operands + , int *operands, int op) +{ + int found = 0; + int i; + for (; num_info>0 && !found; num_info--) + { + int mismatch = 0; + for(i = 0;op && (i<*num_operands)&& !mismatch; i++) + { + if (!(int)(operands[i] & 0x1)) + mismatch = 1; + if (mismatch) + break; + } + if (!mismatch) + found = 1; + } +} diff --git a/gcc/testsuite/gcc.c-torture/compile/pr26840.c b/gcc/testsuite/gcc.c-torture/compile/pr26840.c new file mode 100644 index 00000000000..8d864a295d8 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr26840.c @@ -0,0 +1,42 @@ +extern int f1 (void **); +extern void f2 (void *); + +struct s +{ + unsigned char field1; + int field2; +}; + +static inline struct s * +get_globals (void) +{ + struct s * r; + void * rr; + + if (f1 (&rr)) + return 0; + r = rr; + if (! r) + { + extern struct s t; + r = &t; + } + r->field1 = 1; + return r; +} + +void +atexit_common (const void *dso) +{ + struct s *g = get_globals (); + + if (! g) + return; + if (g->field1) + { + g->field2 = 0; + f2 (g); + } + else + f2 (g); +} diff --git a/gcc/testsuite/gcc.c-torture/execute/pr25737.c b/gcc/testsuite/gcc.c-torture/execute/pr25737.c new file mode 100644 index 00000000000..9da63adceab --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr25737.c @@ -0,0 +1,23 @@ +extern void abort (void); + +struct delay_block { + struct delay_block *succ; +}; + +static struct delay_block Timer_Queue; + +struct delay_block* time_enqueue (struct delay_block *d) +{ + struct delay_block *q = Timer_Queue.succ; + d->succ = (void *)0; + return Timer_Queue.succ; +} + +int main(void) +{ + Timer_Queue.succ = &Timer_Queue; + if (time_enqueue (&Timer_Queue) != (void*)0) + abort (); + return 0; +} + diff --git a/gcc/testsuite/gcc.dg/980523-1.c b/gcc/testsuite/gcc.dg/980523-1.c index 6ca79efff16..970b57c597c 100644 --- a/gcc/testsuite/gcc.dg/980523-1.c +++ b/gcc/testsuite/gcc.dg/980523-1.c @@ -1,4 +1,4 @@ -/* { dg-do run { target rs6000-*-linux* powerpc*-*-linux*} } */ +/* { dg-do run { target fpic } } */ /* { dg-options "-O2 -fpic" } */ extern void exit (int); diff --git a/gcc/testsuite/gcc.dg/980526-1.c b/gcc/testsuite/gcc.dg/980526-1.c index b92f8883dfb..6ab9db67933 100644 --- a/gcc/testsuite/gcc.dg/980526-1.c +++ b/gcc/testsuite/gcc.dg/980526-1.c @@ -1,4 +1,4 @@ -/* { dg-do compile { target rs6000-*-linux* powerpc*-*-linux* } } */ +/* { dg-do compile { target fpic } } */ /* { dg-options "-O2 -fpic" } */ int diff --git a/gcc/testsuite/gcc.dg/builtins-18.c b/gcc/testsuite/gcc.dg/builtins-18.c index d04fe712f9a..f4f64c1acb3 100644 --- a/gcc/testsuite/gcc.dg/builtins-18.c +++ b/gcc/testsuite/gcc.dg/builtins-18.c @@ -8,6 +8,7 @@ /* { dg-do link } */ /* { dg-options "-O2 -ffast-math" } */ /* { dg-options "-O2 -ffast-math -mmacosx-version-min=10.3" { target powerpc-*-darwin* } } */ +/* { dg-options "-O2 -ffast-math -std=c99" { target *-*-solaris2* } } */ #include "builtins-config.h" @@ -33,9 +34,9 @@ main (void) if (__builtin_cabsf (fc) != 5.0F) link_error (); if (cabsf (3.0F + 4.0iF) != 5.0F) - link_failure (); + link_error (); if (__builtin_cabsf (3.0F + 4.0iF) != 5.0F) - link_failure (); + link_error (); #endif /* Test doubles. */ @@ -44,9 +45,9 @@ main (void) if (__builtin_cabs (dc) != 5.0) link_error (); if (cabs (3.0 + 4.0i) != 5.0) - link_failure (); + link_error (); if (__builtin_cabs (3.0 + 4.0i) != 5.0) - link_failure (); + link_error (); #ifdef HAVE_C99_RUNTIME /* Test long doubles. */ @@ -55,9 +56,9 @@ main (void) if (__builtin_cabsl (ldc) != 5.0L) link_error (); if (cabsl (3.0L + 4.0iL) != 5.0L) - link_failure (); + link_error (); if (__builtin_cabsl (3.0L + 4.0iL) != 5.0L) - link_failure (); + link_error (); #endif return 0; diff --git a/gcc/testsuite/gcc.dg/builtins-20.c b/gcc/testsuite/gcc.dg/builtins-20.c index a8ada8a8606..40a29c4f559 100644 --- a/gcc/testsuite/gcc.dg/builtins-20.c +++ b/gcc/testsuite/gcc.dg/builtins-20.c @@ -8,6 +8,7 @@ /* { dg-do link } */ /* { dg-options "-O2 -ffast-math" } */ /* { dg-options "-O2 -ffast-math -mmacosx-version-min=10.3" { target powerpc-*-darwin* } } */ +/* { dg-options "-O2 -ffast-math -std=c99" { target *-*-solaris2* } } */ #include "builtins-config.h" diff --git a/gcc/testsuite/gcc.dg/builtins-53.c b/gcc/testsuite/gcc.dg/builtins-53.c index 2b4b2f978b4..048cda92afb 100644 --- a/gcc/testsuite/gcc.dg/builtins-53.c +++ b/gcc/testsuite/gcc.dg/builtins-53.c @@ -11,6 +11,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -ffast-math" } */ /* { dg-options "-O2 -ffast-math -mmacosx-version-min=10.3" { target powerpc-*-darwin* } } */ +/* { dg-options "-O2 -ffast-math -std=c99" { target *-*-solaris2* } } */ #include "builtins-config.h" diff --git a/gcc/testsuite/gcc.dg/builtins-config.h b/gcc/testsuite/gcc.dg/builtins-config.h index 6554f46057f..6921b80b3a7 100644 --- a/gcc/testsuite/gcc.dg/builtins-config.h +++ b/gcc/testsuite/gcc.dg/builtins-config.h @@ -11,8 +11,9 @@ #if defined(__hppa) && defined(__hpux) /* PA HP-UX doesn't have the entire C99 runtime. */ -#elif defined(__sun) -/* Solaris doesn't have the entire C99 runtime. */ +#elif defined(__sun) && ! defined (_STDC_C99) +/* Solaris up to 9 doesn't have the entire C99 runtime. + Solaris 10 defines _STDC_C99 if __STDC_VERSION__ is >= 199901L. */ #elif defined(__sgi) /* Irix6 doesn't have the entire C99 runtime. */ #elif defined(__FreeBSD__) && (__FreeBSD__ < 5) diff --git a/gcc/testsuite/gcc.dg/darwin-20040809-2.c b/gcc/testsuite/gcc.dg/darwin-20040809-2.c index 5ed27a4363a..a38f75f26b7 100644 --- a/gcc/testsuite/gcc.dg/darwin-20040809-2.c +++ b/gcc/testsuite/gcc.dg/darwin-20040809-2.c @@ -2,7 +2,7 @@ /* Contributed by Devang Patel */ /* { dg-do compile { target *-*-darwin* } } */ -/* { dg-options "-g -fno-eliminate-unused-debug-symbols" } */ +/* { dg-options "-gstabs+ -fno-eliminate-unused-debug-symbols" } */ int main () diff --git a/gcc/testsuite/gcc.dg/fold-andxor-1.c b/gcc/testsuite/gcc.dg/fold-andxor-1.c new file mode 100644 index 00000000000..cc46577148a --- /dev/null +++ b/gcc/testsuite/gcc.dg/fold-andxor-1.c @@ -0,0 +1,29 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-original" } */ + +int test1(int a, int b) +{ + return (a ^ b) & a; +} + +int test2(int c, int d) +{ + return (c ^ d) & d; +} + +int test3(int e, int f) +{ + return e & (e ^ f); +} + +int test4(int g, int h) +{ + return g & (h ^ g); +} + +/* { dg-final { scan-tree-dump-times "~b \& a" 1 "original" } } */ +/* { dg-final { scan-tree-dump-times "~c \& d" 1 "original" } } */ +/* { dg-final { scan-tree-dump-times "~f \& e" 1 "original" } } */ +/* { dg-final { scan-tree-dump-times "~h \& g" 1 "original" } } */ +/* { dg-final { cleanup-tree-dump "original" } } */ + diff --git a/gcc/testsuite/gcc.dg/fold-convnotconv-1.c b/gcc/testsuite/gcc.dg/fold-convnotconv-1.c new file mode 100644 index 00000000000..fc07903c515 --- /dev/null +++ b/gcc/testsuite/gcc.dg/fold-convnotconv-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-original" } */ + +int test1(int a) +{ + return ~(unsigned int)a; +} + +unsigned int test2(unsigned int b) +{ + return ~(int)b; +} + +/* { dg-final { scan-tree-dump-times "~a" 1 "original" } } */ +/* { dg-final { scan-tree-dump-times "~b" 1 "original" } } */ +/* { dg-final { cleanup-tree-dump "original" } } */ + diff --git a/gcc/testsuite/gcc.dg/fold-xorand-1.c b/gcc/testsuite/gcc.dg/fold-xorand-1.c new file mode 100644 index 00000000000..8d4265417c9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/fold-xorand-1.c @@ -0,0 +1,29 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-original" } */ + +int test1(int a, int b) +{ + return (a & b) ^ a; +} + +int test2(int c, int d) +{ + return (c & d) ^ d; +} + +int test3(int e, int f) +{ + return e ^ (e & f); +} + +int test4(int g, int h) +{ + return g ^ (h & g); +} + +/* { dg-final { scan-tree-dump-times "~b \& a" 1 "original" } } */ +/* { dg-final { scan-tree-dump-times "~c \& d" 1 "original" } } */ +/* { dg-final { scan-tree-dump-times "~f \& e" 1 "original" } } */ +/* { dg-final { scan-tree-dump-times "~h \& g" 1 "original" } } */ +/* { dg-final { cleanup-tree-dump "original" } } */ + diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-1.c b/gcc/testsuite/gcc.dg/ipa/ipa-1.c index cdac76e701a..ddf4a66ce1a 100644 --- a/gcc/testsuite/gcc.dg/ipa/ipa-1.c +++ b/gcc/testsuite/gcc.dg/ipa/ipa-1.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -fipa-cp -fdump-ipa-cp" } */ +/* { dg-options "-O3 -fipa-cp -fdump-ipa-cp -fno-early-inlining" } */ /* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */ #include diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-2.c b/gcc/testsuite/gcc.dg/ipa/ipa-2.c index 6255e5c1f45..63ae8026fce 100644 --- a/gcc/testsuite/gcc.dg/ipa/ipa-2.c +++ b/gcc/testsuite/gcc.dg/ipa/ipa-2.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -fipa-cp -fdump-ipa-cp" } */ +/* { dg-options "-O3 -fipa-cp -fdump-ipa-cp -fno-early-inlining" } */ /* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */ #include diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-3.c b/gcc/testsuite/gcc.dg/ipa/ipa-3.c index 5abe16ea7cd..32b42c8ae87 100644 --- a/gcc/testsuite/gcc.dg/ipa/ipa-3.c +++ b/gcc/testsuite/gcc.dg/ipa/ipa-3.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -fipa-cp -fdump-ipa-cp" } */ +/* { dg-options "-O3 -fipa-cp -fdump-ipa-cp -fno-early-inlining" } */ /* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */ diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-5.c b/gcc/testsuite/gcc.dg/ipa/ipa-5.c index c99079de694..1485d372543 100644 --- a/gcc/testsuite/gcc.dg/ipa/ipa-5.c +++ b/gcc/testsuite/gcc.dg/ipa/ipa-5.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -fipa-cp -fdump-ipa-cp" } */ +/* { dg-options "-O3 -fipa-cp -fdump-ipa-cp -fno-early-inlining" } */ /* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */ /* Float & short constants. */ diff --git a/gcc/testsuite/gcc.dg/pr26717.c b/gcc/testsuite/gcc.dg/pr26717.c new file mode 100644 index 00000000000..d16b576ed24 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr26717.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-options "-O -ffast-math" } */ +_Complex float f (_Complex float a) +{ + _Complex float b = a / a; + return b; +} diff --git a/gcc/testsuite/gcc.dg/single-precision-constant.c b/gcc/testsuite/gcc.dg/single-precision-constant.c index e95eb39618e..3cf9f8ffe87 100644 --- a/gcc/testsuite/gcc.dg/single-precision-constant.c +++ b/gcc/testsuite/gcc.dg/single-precision-constant.c @@ -1,8 +1,12 @@ /* Test that double precision constants are correctly handled when code is compiled with -fsingle-precision-constant */ /* Origin: Carlos O'Donell */ + /* { dg-do run } */ /* { dg-options "-fsingle-precision-constant" } */ +/* { dg-options "-fsingle-precision-constant -mmacosx-version-min=10.3" { target powerpc-*-darwin* } } */ +/* { dg-options "-fsingle-precision-constant -std=c99" { target *-*-solaris2* } } */ + #include #include diff --git a/gcc/testsuite/gcc.dg/switch-1.c b/gcc/testsuite/gcc.dg/switch-1.c index e4f5ad62859..1879790dd12 100644 --- a/gcc/testsuite/gcc.dg/switch-1.c +++ b/gcc/testsuite/gcc.dg/switch-1.c @@ -1,4 +1,4 @@ -/* { dg-do compile { target rs6000-*-linux* powerpc*-*-linux*} } */ +/* { dg-do compile { target fpic } } */ /* { dg-options "-fpic -O2" } */ void f (char *s) diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20030807-2.c b/gcc/testsuite/gcc.dg/tree-ssa/20030807-2.c index 29e793e3622..06a8a83ba9e 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/20030807-2.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/20030807-2.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O1 -fdump-tree-dom3" } */ +/* { dg-options "-O1 -ftree-vrp -fdump-tree-dom3" } */ extern void abort (void); diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loadpre12.c b/gcc/testsuite/gcc.dg/tree-ssa/loadpre12.c new file mode 100644 index 00000000000..4a79c802b13 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/loadpre12.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre-stats" } */ +typedef int type[2]; +type *t; +int g(int); +int f(int tt) +{ + type *t1 = t; + if ((*t1)[0]) + (*t1)[0] = 2; + return g((*t1)[0]); +} + +/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" { xfail *-*-* } } } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loadpre13.c b/gcc/testsuite/gcc.dg/tree-ssa/loadpre13.c new file mode 100644 index 00000000000..420ad7162bc --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/loadpre13.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre-stats" } */ +int t[2]; +int g(int); +int f(int tt) +{ + if (t[0]) + t[0] = 2; + return g(t[0]); +} + +/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loadpre14.c b/gcc/testsuite/gcc.dg/tree-ssa/loadpre14.c new file mode 100644 index 00000000000..f4c06f264d3 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/loadpre14.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre-stats" } */ +typedef int type[2]; +int main(type *a, int argc) +{ + type c = {0, 1}; + int d, e; + + /* Should be able to eliminate the second load of *a along the main path. */ + d = (*a)[0]; + if (argc) + { + a = &c; + } + e = (*a)[0]; + return d + e; +} +/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loadpre15.c b/gcc/testsuite/gcc.dg/tree-ssa/loadpre15.c new file mode 100644 index 00000000000..3e3ff7c4535 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/loadpre15.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre-stats" } */ +typedef int type[2]; +int main(type *a, int argc, int t) +{ + type c = {0, 1}; + int d, e; + + /* Should be able to eliminate the second load of *a along the main path. */ + d = (*a)[t]; + if (argc) + { + a = &c; + } + e = (*a)[t]; + return d + e; +} +/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loadpre16.c b/gcc/testsuite/gcc.dg/tree-ssa/loadpre16.c new file mode 100644 index 00000000000..3702440f3d7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/loadpre16.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre-stats" } */ +typedef int type[2]; +int main(type *a, int argc) +{ + int d, e; + + /* Should be able to eliminate the second load of *a along the main path. */ + d = (*a)[0]; + if (argc) + a++; + e = (*a)[0]; + return d + e; +} +/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loadpre17.c b/gcc/testsuite/gcc.dg/tree-ssa/loadpre17.c new file mode 100644 index 00000000000..93c530d5e57 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/loadpre17.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre-stats" } */ +typedef int type[2]; +int main(type *a, int argc) +{ + int d, e; + + /* Should be able to eliminate the second load of *a along the main path. */ + d = (*a)[argc]; + if (argc) + a++; + e = (*a)[argc]; + return d + e; +} +/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loadpre18.c b/gcc/testsuite/gcc.dg/tree-ssa/loadpre18.c new file mode 100644 index 00000000000..21a1d067008 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/loadpre18.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre-stats" } */ +typedef int type[2]; +int main(type *a, int argc) +{ + int d, e; + + /* Should be able to eliminate the second load of *a along the main path. */ + d = (*a)[argc]; + if (argc) + argc++; + e = (*a)[argc]; + return d + e; +} +/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" { xfail *-*-* } } } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loadpre19.c b/gcc/testsuite/gcc.dg/tree-ssa/loadpre19.c new file mode 100644 index 00000000000..62ded9a6d80 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/loadpre19.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre-stats" } */ +typedef int type[2]; +int main(type *a, int argc) +{ + int d, e; + + /* Should be able to eliminate the second load of *a along the main path. */ + d = (*a)[argc]; + if (!d) + argc++; + e = (*a)[argc]; + return e; +} +/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loadpre20.c b/gcc/testsuite/gcc.dg/tree-ssa/loadpre20.c new file mode 100644 index 00000000000..330b67a579f --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/loadpre20.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre-stats" } */ +typedef int type[2]; +int main(type *a, int argc) +{ + int d, e; + + /* Should be able to eliminate the second load of *a along the main path. */ + d = (*a)[argc]; + if (!d) + a++; + e = (*a)[argc]; + return e; +} +/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loadpre21.c b/gcc/testsuite/gcc.dg/tree-ssa/loadpre21.c new file mode 100644 index 00000000000..77caef6ded6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/loadpre21.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre-stats" } */ +typedef int type[2]; +int main(type *a, int argc) +{ + int b; + int i; + int d, e; + + /* Should be able to hoist this out of the loop. */ + for (i = 0; i < argc; i++) + { + e = (*a)[0]; + } + return d + e; +} + +/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loadpre22.c b/gcc/testsuite/gcc.dg/tree-ssa/loadpre22.c new file mode 100644 index 00000000000..3c03c9b12f6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/loadpre22.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre-stats" } */ +typedef int type[2]; +int main(type *a, int argc) +{ + int b; + int i; + int d, e; + + /* Should be able to hoist this out of the loop. */ + for (i = 0; i < argc; i++) + { + e = (*a)[argc]; + } + return d + e; +} + +/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr21829.c b/gcc/testsuite/gcc.dg/tree-ssa/pr21829.c new file mode 100644 index 00000000000..4c723f3ff86 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr21829.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-phicprop-details" } */ + +int test(int v) +{ + int x = 0; + int u; + for (u=0;u<2;u++) + { + if (u>v) + { + if (u%2==1) + x++; + } + } + return x; +} + +/* { dg-final { scan-tree-dump-times "Original statement:.*% 2\[ \t\n]*Updated statement.*=1" 0 "phicprop3" } } */ +/* { dg-final { cleanup-tree-dump "phicprop3" } } */ + diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp28.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp28.c new file mode 100644 index 00000000000..6b2a1fd6b75 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp28.c @@ -0,0 +1,32 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-vrp1" } */ + +int f(_Bool a) +{ + int t = a; + if (t != 2) + return 0; + return 1; +} + +int f1(unsigned char a) +{ + int t = a; + if (t != 256) + return 0; + return 1; +} + +int f3 (unsigned char c) +{ + int i = c; + if (i < 0 || i > 255) + return -1; + else + return 0; +} + +/* { dg-final { scan-tree-dump-times "if " 0 "vrp1" } } * / +/* { dg-final { cleanup-tree-dump "vrp1" } } */ + + diff --git a/gcc/testsuite/gcc.dg/visibility-11.c b/gcc/testsuite/gcc.dg/visibility-11.c new file mode 100644 index 00000000000..e5995827b79 --- /dev/null +++ b/gcc/testsuite/gcc.dg/visibility-11.c @@ -0,0 +1,24 @@ +/* PR middle-end/20297 */ +/* The memcpy FUNCTION_DECL built in the middle-end for block moves got + hidden visibility from the first push, so the call didn't use the PLT. */ + +/* { dg-do compile { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-visibility "" } */ +/* { dg-options "-Os -fpic" } */ +/* { dg-final { scan-assembler "memcpy@PLT" } } */ + +#pragma GCC visibility push(hidden) +#pragma GCC visibility push(default) +extern void* memcpy (void *, const void *, __SIZE_TYPE__); +#pragma GCC visibility pop + +struct a { int a[10]; }; + +extern void *bar (struct a *, struct a *, int); + +void * +foo (struct a *a, struct a *b, int c) +{ + struct a cc = *b; + return bar (a, &cc, 4 * c); +} diff --git a/gcc/testsuite/gcc.target/i386/387-1.c b/gcc/testsuite/gcc.target/i386/387-1.c index 9b31dcaed55..22830754018 100644 --- a/gcc/testsuite/gcc.target/i386/387-1.c +++ b/gcc/testsuite/gcc.target/i386/387-1.c @@ -2,14 +2,14 @@ /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ /* { dg-require-effective-target ilp32 } */ /* { dg-options "-O -ffast-math -mfpmath=387 -mno-fancy-math-387 -march=i386" } */ -/* { dg-final { scan-assembler "call\t_?sin" } } */ -/* { dg-final { scan-assembler "call\t_?cos" } } */ -/* { dg-final { scan-assembler "call\t_?sqrt" } } */ -/* { dg-final { scan-assembler "call\t_?atan2" } } */ -/* { dg-final { scan-assembler "call\t_?log" } } */ -/* { dg-final { scan-assembler "call\t_?exp" } } */ -/* { dg-final { scan-assembler "call\t_?tan" } } */ -/* { dg-final { scan-assembler "call\t_?fmod" } } */ +/* { dg-final { scan-assembler "call\t(.*)sin" } } */ +/* { dg-final { scan-assembler "call\t(.*)cos" } } */ +/* { dg-final { scan-assembler "call\t(.*)sqrt" } } */ +/* { dg-final { scan-assembler "call\t(.*)atan2" } } */ +/* { dg-final { scan-assembler "call\t(.*)log" } } */ +/* { dg-final { scan-assembler "call\t(.*)exp" } } */ +/* { dg-final { scan-assembler "call\t(.*)tan" } } */ +/* { dg-final { scan-assembler "call\t(.*)fmod" } } */ double f1(double x) { return __builtin_sin(x); } double f2(double x) { return __builtin_cos(x); } diff --git a/gcc/testsuite/gcc.target/i386/387-5.c b/gcc/testsuite/gcc.target/i386/387-5.c index fd3106e0270..dc4d470900e 100644 --- a/gcc/testsuite/gcc.target/i386/387-5.c +++ b/gcc/testsuite/gcc.target/i386/387-5.c @@ -2,9 +2,9 @@ /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ /* { dg-require-effective-target ilp32 } */ /* { dg-options "-O -ffast-math -mfpmath=387 -mno-fancy-math-387 -march=i386" } */ -/* { dg-final { scan-assembler "call\t_?atan" } } */ -/* { dg-final { scan-assembler "call\t_?log1p" } } */ -/* { dg-final { scan-assembler "call\t_?drem" } } */ +/* { dg-final { scan-assembler "call\t(.*)atan" } } */ +/* { dg-final { scan-assembler "call\t(.*)log1p" } } */ +/* { dg-final { scan-assembler "call\t(.*)drem" } } */ double f1(double x) { return __builtin_atan(x); } double f2(double x) { return __builtin_log1p(x); } diff --git a/gcc/testsuite/gcc.target/i386/sselibm-1.c b/gcc/testsuite/gcc.target/i386/sselibm-1.c index 1e9f0c62272..82f553ba946 100644 --- a/gcc/testsuite/gcc.target/i386/sselibm-1.c +++ b/gcc/testsuite/gcc.target/i386/sselibm-1.c @@ -2,11 +2,11 @@ /* { dg-options "-msse2 -mfpmath=sse" } */ /* { dg-require-effective-target ilp32 } */ -double sin(double); +float sinf(float); -double foo(double x) +float foo(float x) { - return sin(x); + return sinf(x); } -/* { dg-final { scan-assembler-not "__libm_sse2_sin" } } */ +/* { dg-final { scan-assembler-not "__libm_sse2_sinf" } } */ diff --git a/gcc/testsuite/gcc.target/i386/sselibm-2.c b/gcc/testsuite/gcc.target/i386/sselibm-2.c index 84502628c6b..9c479b65c7f 100644 --- a/gcc/testsuite/gcc.target/i386/sselibm-2.c +++ b/gcc/testsuite/gcc.target/i386/sselibm-2.c @@ -2,11 +2,11 @@ /* { dg-options "-msse2 -mfpmath=sse -msselibm" } */ /* { dg-require-effective-target ilp32 } */ -double sin(double); +float sinf(float); -double foo(double x) +float foo(float x) { - return sin(x); + return sinf(x); } -/* { dg-final { scan-assembler "__libm_sse2_sin" } } */ +/* { dg-final { scan-assembler "__libm_sse2_sinf" } } */ diff --git a/gcc/testsuite/gcc.target/i386/sselibm-3.c b/gcc/testsuite/gcc.target/i386/sselibm-3.c index 76c1134c58e..eaa8d8fcf45 100644 --- a/gcc/testsuite/gcc.target/i386/sselibm-3.c +++ b/gcc/testsuite/gcc.target/i386/sselibm-3.c @@ -2,18 +2,18 @@ /* { dg-options "-O1 -msse2 -mfpmath=sse -msselibm" } */ /* { dg-require-effective-target ilp32 } */ -double sin(double); -double (*mysin)(double) = sin; +float sinf(float); +float (*mysin)(float) = sinf; -double f1(double x) +float f1(float x) { - return sin(x); + return sinf(x); } -double f2(double x) +float f2(float x) { - /* Verify we do not expand the following call to __libm_sse2_sin. */ + /* Verify we do not expand the following call to __libm_sse2_sinf. */ return (*mysin)(x); } -/* { dg-final { scan-assembler-times "__libm_sse2_sin" 1 } } */ +/* { dg-final { scan-assembler-times "__libm_sse2_sinf" 1 } } */ diff --git a/gcc/testsuite/gcc.target/i386/sselibm-4.c b/gcc/testsuite/gcc.target/i386/sselibm-4.c index ad20bce0b34..152672a6103 100644 --- a/gcc/testsuite/gcc.target/i386/sselibm-4.c +++ b/gcc/testsuite/gcc.target/i386/sselibm-4.c @@ -2,17 +2,6 @@ /* { dg-options "-O1 -msse2 -mfpmath=sse -msselibm" } */ /* { dg-require-effective-target ilp32 } */ -extern double acos(double); -extern double asin(double); -extern double atan(double); -extern double atan2(double, double); -extern double cos(double); -extern double exp(double); -extern double log10(double); -extern double log(double); -extern double sin(double); -extern double tan(double); - extern float acosf(float); extern float asinf(float); extern float atanf(float); @@ -30,10 +19,4 @@ float foof(float x) + log10f(x) + logf(x) + sinf(x) + tanf(x); } -double foo(double x) -{ - return acos(x) + asin(x) + atan(x) + atan2(x, x) + cos(x) + exp(x) - + log10(x) + log(x) + sin(x) + tan(x); -} - -/* { dg-final { scan-assembler-times "__libm_sse2" 20 } } */ +/* { dg-final { scan-assembler-times "__libm_sse2" 10 } } */ diff --git a/gcc/testsuite/gcc.target/i386/sselibm-5.c b/gcc/testsuite/gcc.target/i386/sselibm-5.c index c7493198689..b7e4690f774 100644 --- a/gcc/testsuite/gcc.target/i386/sselibm-5.c +++ b/gcc/testsuite/gcc.target/i386/sselibm-5.c @@ -2,17 +2,6 @@ /* { dg-options "-O1 -msse2 -mfpmath=sse -msselibm" } */ /* { dg-require-effective-target ilp32 } */ -extern double acos(double); -extern double asin(double); -extern double atan(double); -extern double atan2(double, double); -extern double cos(double); -extern double exp(double); -extern double log10(double); -extern double log(double); -extern double sin(double); -extern double tan(double); - extern float acosf(float); extern float asinf(float); extern float atanf(float); @@ -38,18 +27,4 @@ float foof(float x) + __builtin_sse2_tanf(x); } -double foo(double x) -{ - return __builtin_sse2_acos(x) - + __builtin_sse2_asin(x) - + __builtin_sse2_atan(x) - + __builtin_sse2_atan2(x, x) - + __builtin_sse2_cos(x) - + __builtin_sse2_exp(x) - + __builtin_sse2_log10(x) - + __builtin_sse2_log(x) - + __builtin_sse2_sin(x) - + __builtin_sse2_tan(x); -} - -/* { dg-final { scan-assembler-times "__libm_sse2" 20 } } */ +/* { dg-final { scan-assembler-times "__libm_sse2" 10 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/indexed-addr.c b/gcc/testsuite/gcc.target/powerpc/indexed-addr.c new file mode 100644 index 00000000000..6933b23e01a --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/indexed-addr.c @@ -0,0 +1,14 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-options "-O2" } */ + +/* { dg-final { scan-assembler "3,\.*3,\.*4" } } + +/* Ensure that indexed address are output with base address in rA position + and index in rB position. */ + +char +do_one (char *base, unsigned long offset) +{ + return base[offset]; +} + diff --git a/gcc/testsuite/gcc.target/powerpc/pr26350.c b/gcc/testsuite/gcc.target/powerpc/pr26350.c new file mode 100644 index 00000000000..6b4b20627ef --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr26350.c @@ -0,0 +1,29 @@ +/* { dg-do compile { target { powerpc*-*-darwin* powerpc*-*-aix* rs6000-*-* powerpc*-*-linux* } } } */ +/* { dg-options "-O2 -mlong-double-128 -fpic" } */ + +typedef int int32_t __attribute__ ((__mode__ (__SI__))); +typedef unsigned char uint8_t; +typedef unsigned int uint32_t; +typedef struct REGS REGS; +typedef union { uint32_t F; } FW; +typedef union { struct { FW L; } F; } DW; +typedef struct _PSW { + DW ia; +} PSW; +struct REGS { + PSW psw; + DW cr[16]; +}; +struct ebfp { + long double v; +}; + +void s390_convert_fix32_to_bfp_ext_reg (REGS *regs) +{ + struct ebfp op1; + int32_t op2; + ((regs))->psw.ia.F.L.F += (4); + if(!((regs)->cr[(0)].F.L.F & 0x00040000)) + op1.v = (long double)op2; + put_ebfp(&op1); +} diff --git a/gcc/testsuite/gfortran.dg/advance.f90 b/gcc/testsuite/gfortran.dg/advance.f90 index 07b605f885d..9002c52b5f7 100644 --- a/gcc/testsuite/gfortran.dg/advance.f90 +++ b/gcc/testsuite/gfortran.dg/advance.f90 @@ -9,4 +9,5 @@ program pr25463 rewind (10) read (10, '(a)') str if (str.ne.'abc') call abort() + close (10, status='delete') end diff --git a/gcc/testsuite/gfortran.dg/advance_2.f90 b/gcc/testsuite/gfortran.dg/advance_2.f90 new file mode 100644 index 00000000000..1e83aaee316 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/advance_2.f90 @@ -0,0 +1,6 @@ +! { dg-do compile } +subroutine foo + character(len=5) :: a + a = "yes" + write(*, '(a)', advance=a) "hello world" +end subroutine foo diff --git a/gcc/testsuite/gfortran.dg/advance_3.f90 b/gcc/testsuite/gfortran.dg/advance_3.f90 new file mode 100644 index 00000000000..49b17556f69 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/advance_3.f90 @@ -0,0 +1,8 @@ +subroutine foo + real :: a + a = 1 + write(*, '(a)', advance=a) "hello world" ! { dg-error "must be of type CHARACTER" } +end subroutine foo +subroutine bar + write(*, '(a)', advance=5.) "hello world" ! { dg-error "must be of type CHARACTER" } +end subroutine bar diff --git a/gcc/testsuite/gfortran.dg/allocatable_dummy_1.f90 b/gcc/testsuite/gfortran.dg/allocatable_dummy_1.f90 index bfa9ced010f..9aba8b8fc6d 100644 --- a/gcc/testsuite/gfortran.dg/allocatable_dummy_1.f90 +++ b/gcc/testsuite/gfortran.dg/allocatable_dummy_1.f90 @@ -33,7 +33,7 @@ contains integer, allocatable, intent(in) :: x(:) integer, allocatable, intent(out) :: y(:) if (allocated(y)) call abort() - allocate (y(3)) + call init(y) y = x end subroutine useit diff --git a/gcc/testsuite/gfortran.dg/allocatable_function_1.f90 b/gcc/testsuite/gfortran.dg/allocatable_function_1.f90 index b66d6ae182e..b20ff3d19c0 100644 --- a/gcc/testsuite/gfortran.dg/allocatable_function_1.f90 +++ b/gcc/testsuite/gfortran.dg/allocatable_function_1.f90 @@ -109,4 +109,4 @@ contains end program alloc_fun ! { dg-final { scan-tree-dump-times "free" 9 "original" } } ! { dg-final { cleanup-tree-dump "original" } } - +! { dg-final { cleanup-modules "m" } } diff --git a/gcc/testsuite/gfortran.dg/allocate_char_star_scalar_1.f90 b/gcc/testsuite/gfortran.dg/allocate_char_star_scalar_1.f90 index 305136cd659..7e6d7d1f0d2 100644 --- a/gcc/testsuite/gfortran.dg/allocate_char_star_scalar_1.f90 +++ b/gcc/testsuite/gfortran.dg/allocate_char_star_scalar_1.f90 @@ -29,3 +29,5 @@ program hum call foo(q) end program hum + +! { dg-final { cleanup-modules "moo" } } diff --git a/gcc/testsuite/gfortran.dg/assumed_charlen_function_1.f90 b/gcc/testsuite/gfortran.dg/assumed_charlen_function_1.f90 index c90617dcec0..e10fd70b584 100644 --- a/gcc/testsuite/gfortran.dg/assumed_charlen_function_1.f90 +++ b/gcc/testsuite/gfortran.dg/assumed_charlen_function_1.f90 @@ -81,3 +81,4 @@ end function not_OK END +! { dg-final { cleanup-modules "M1 INTEGER_SETS" } } diff --git a/gcc/testsuite/gfortran.dg/assumed_dummy_1.f90 b/gcc/testsuite/gfortran.dg/assumed_dummy_1.f90 index a160a884b2a..97c163e8c6b 100644 --- a/gcc/testsuite/gfortran.dg/assumed_dummy_1.f90 +++ b/gcc/testsuite/gfortran.dg/assumed_dummy_1.f90 @@ -43,4 +43,4 @@ contains END SUBROUTINE roo end program test - +! { dg-final { cleanup-modules "global" } } diff --git a/gcc/testsuite/gfortran.dg/assumed_shape_ranks_1.f90 b/gcc/testsuite/gfortran.dg/assumed_shape_ranks_1.f90 index a7f24ea1bc5..a22a45c109d 100644 --- a/gcc/testsuite/gfortran.dg/assumed_shape_ranks_1.f90 +++ b/gcc/testsuite/gfortran.dg/assumed_shape_ranks_1.f90 @@ -23,3 +23,4 @@ CONTAINS END SUBROUTINE TST END +! { dg-final { cleanup-modules "addon" } } diff --git a/gcc/testsuite/gfortran.dg/assumed_shape_ranks_2.f90 b/gcc/testsuite/gfortran.dg/assumed_shape_ranks_2.f90 new file mode 100644 index 00000000000..da59213d91f --- /dev/null +++ b/gcc/testsuite/gfortran.dg/assumed_shape_ranks_2.f90 @@ -0,0 +1,47 @@ +! { dg-do run } +! Tests the fix for the regression PR26716. +! Test contributed by Martin Reinecke +! +module mod1 + implicit none + + interface foo + module procedure foo1, foo2 + end interface + +contains + + subroutine foo1(bar, i) + real bar + integer i + i = 1 + end subroutine + + subroutine foo2(bar, i) + real bar(3) + integer i + i = 2 + end subroutine + +end module mod1 + + use mod1 + implicit none + + real bar(3) + integer i + + i = 0 + call foo (1e0, i) + if (i .ne. 1) call abort () + + i = 0 + call foo (bar(1), i) + if (i .ne. 1) call abort () + + i = 0 + call foo (bar, i) + if (i .ne. 2) call abort () +end + +! { dg-final { cleanup-modules "mod1" } } diff --git a/gcc/testsuite/gfortran.dg/assumed_size_dt_dummy.f90 b/gcc/testsuite/gfortran.dg/assumed_size_dt_dummy.f90 index 9e9e9b80248..1f45f24ed30 100644 --- a/gcc/testsuite/gfortran.dg/assumed_size_dt_dummy.f90 +++ b/gcc/testsuite/gfortran.dg/assumed_size_dt_dummy.f90 @@ -15,3 +15,4 @@ END MODULE TEST end +! { dg-final { cleanup-modules "TEST" } } diff --git a/gcc/testsuite/gfortran.dg/auto_char_dummy_array_1.f90 b/gcc/testsuite/gfortran.dg/auto_char_dummy_array_1.f90 index 2ee98cfcc80..6ed6f45769f 100644 --- a/gcc/testsuite/gfortran.dg/auto_char_dummy_array_1.f90 +++ b/gcc/testsuite/gfortran.dg/auto_char_dummy_array_1.f90 @@ -54,3 +54,4 @@ contains end program oh_no_not_pr15908_again +! { dg-final { cleanup-modules "global" } } diff --git a/gcc/testsuite/gfortran.dg/auto_char_len_3.f90 b/gcc/testsuite/gfortran.dg/auto_char_len_3.f90 index b94151148af..da8cf5e4e78 100644 --- a/gcc/testsuite/gfortran.dg/auto_char_len_3.f90 +++ b/gcc/testsuite/gfortran.dg/auto_char_len_3.f90 @@ -23,3 +23,5 @@ program TestStringTools if (txt .ne. "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz") & call abort () end program TestStringTools + +! { dg-final { cleanup-modules "chtest" } } diff --git a/gcc/testsuite/gfortran.dg/automatic_module_variable.f90 b/gcc/testsuite/gfortran.dg/automatic_module_variable.f90 index 201dcf4e1d3..c88b355b24c 100644 --- a/gcc/testsuite/gfortran.dg/automatic_module_variable.f90 +++ b/gcc/testsuite/gfortran.dg/automatic_module_variable.f90 @@ -14,3 +14,5 @@ contains init = x end function init end module sd + +! { dg-final { cleanup-modules "sd" } } diff --git a/gcc/testsuite/gfortran.dg/backspace_2.f b/gcc/testsuite/gfortran.dg/backspace_2.f index 4291e0463e1..a8c55e7f5c1 100644 --- a/gcc/testsuite/gfortran.dg/backspace_2.f +++ b/gcc/testsuite/gfortran.dg/backspace_2.f @@ -17,5 +17,6 @@ 1011 continue backspace 11 backspace 11 + close(11, status='delete') end diff --git a/gcc/testsuite/gfortran.dg/bad_automatic_objects_1.f90 b/gcc/testsuite/gfortran.dg/bad_automatic_objects_1.f90 index 27344186194..c4c1f2cb0cc 100644 --- a/gcc/testsuite/gfortran.dg/bad_automatic_objects_1.f90 +++ b/gcc/testsuite/gfortran.dg/bad_automatic_objects_1.f90 @@ -18,3 +18,5 @@ program foobar integer, dimension (i) :: k ! { dg-error "must have constant shape" } character (len = i) :: c2 ! { dg-error "must have constant character length" } end program foobar + +! { dg-final { cleanup-modules "foo bar" } } diff --git a/gcc/testsuite/gfortran.dg/char_array_constructor.f90 b/gcc/testsuite/gfortran.dg/char_array_constructor.f90 index 0cb4d38bf03..5f562e9fa68 100644 --- a/gcc/testsuite/gfortran.dg/char_array_constructor.f90 +++ b/gcc/testsuite/gfortran.dg/char_array_constructor.f90 @@ -13,3 +13,4 @@ program y if (b(2) /= 'efghij') call abort end program y +! { dg-final { cleanup-modules "z" } } diff --git a/gcc/testsuite/gfortran.dg/char_array_structure_constructor.f90 b/gcc/testsuite/gfortran.dg/char_array_structure_constructor.f90 index 0b6c05c3321..9d058748855 100644 --- a/gcc/testsuite/gfortran.dg/char_array_structure_constructor.f90 +++ b/gcc/testsuite/gfortran.dg/char_array_structure_constructor.f90 @@ -26,3 +26,5 @@ contains ENDDO end subroutine alloc END program char_array_structure_constructor + +! { dg-final { cleanup-modules "global" } } diff --git a/gcc/testsuite/gfortran.dg/char_result_11.f90 b/gcc/testsuite/gfortran.dg/char_result_11.f90 index c37b20eb75a..75e68f1ef46 100644 --- a/gcc/testsuite/gfortran.dg/char_result_11.f90 +++ b/gcc/testsuite/gfortran.dg/char_result_11.f90 @@ -113,3 +113,5 @@ program test print *, str end program test + +! { dg-final { cleanup-modules "cutils" } } diff --git a/gcc/testsuite/gfortran.dg/char_result_9.f90 b/gcc/testsuite/gfortran.dg/char_result_9.f90 index e32df0e01b4..062901e1bed 100644 --- a/gcc/testsuite/gfortran.dg/char_result_9.f90 +++ b/gcc/testsuite/gfortran.dg/char_result_9.f90 @@ -22,3 +22,5 @@ program huj s = s_to_c(c) end program huj + +! { dg-final { cleanup-modules "foo" } } diff --git a/gcc/testsuite/gfortran.dg/comma.f b/gcc/testsuite/gfortran.dg/comma.f index d4976935381..b369bf4b4ba 100644 --- a/gcc/testsuite/gfortran.dg/comma.f +++ b/gcc/testsuite/gfortran.dg/comma.f @@ -14,5 +14,6 @@ rewind(11) read(11,*)stuff if (stuff.ne.1.0) call abort() + close(11, status='delete') end diff --git a/gcc/testsuite/gfortran.dg/contained_1.f90 b/gcc/testsuite/gfortran.dg/contained_1.f90 index 9b6e4395492..05216b2285a 100644 --- a/gcc/testsuite/gfortran.dg/contained_1.f90 +++ b/gcc/testsuite/gfortran.dg/contained_1.f90 @@ -31,3 +31,5 @@ program contained_1 call a if (i .ne. 1) call abort end program + +! { dg-final { cleanup-modules "contained_1_mod" } } diff --git a/gcc/testsuite/gfortran.dg/convert_1.f90 b/gcc/testsuite/gfortran.dg/convert_1.f90 index 0723cd012f1..87d3babb677 100644 --- a/gcc/testsuite/gfortran.dg/convert_1.f90 +++ b/gcc/testsuite/gfortran.dg/convert_1.f90 @@ -14,3 +14,5 @@ USE MODULE_A USE MODULE_B a = 0 END + +! { dg-final { cleanup-modules "MODULE_A MODULE_B" } } diff --git a/gcc/testsuite/gfortran.dg/convert_implied_open.f90 b/gcc/testsuite/gfortran.dg/convert_implied_open.f90 new file mode 100644 index 00000000000..4066f618cc2 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/convert_implied_open.f90 @@ -0,0 +1,15 @@ +! { dg-do run } +! { dg-options "-fconvert=swap" } +! PR 26735 - implied open didn't use to honor -fconvert +program main + implicit none + integer (kind=8) :: i1, i2, i3 + write (10) 1_8 + close (10) + open (10, form="unformatted", access="direct", recl=8) + read (10,rec=1) i1 + read (10,rec=2) i2 + read (10,rec=3) i3 + if (i1 /= 8 .or. i2 /= 1 .or. i3 /= 8) call abort + close (10,status="delete") +end program main diff --git a/gcc/testsuite/gfortran.dg/cray_pointers_5.f90 b/gcc/testsuite/gfortran.dg/cray_pointers_5.f90 index 76bb9791b8a..21081194bcf 100644 --- a/gcc/testsuite/gfortran.dg/cray_pointers_5.f90 +++ b/gcc/testsuite/gfortran.dg/cray_pointers_5.f90 @@ -13,3 +13,5 @@ end module cray_pointers_5 ipt = loc (arr) if (any (var .ne. (/1, 2, 3, 4, 5, 6, 7, 8, 9, 10/))) call abort end + +! { dg-final { cleanup-modules "cray_pointers_5" } } diff --git a/gcc/testsuite/gfortran.dg/data_constraints_1.f90 b/gcc/testsuite/gfortran.dg/data_constraints_1.f90 index 5f11ffdbaea..bcf23ba34ac 100644 --- a/gcc/testsuite/gfortran.dg/data_constraints_1.f90 +++ b/gcc/testsuite/gfortran.dg/data_constraints_1.f90 @@ -28,3 +28,5 @@ contains data foobar /0/ ! { dg-error "conflicts with FUNCTION" } end function foobar end + +! { dg-final { cleanup-modules "global" } } diff --git a/gcc/testsuite/gfortran.dg/default_initialization.f90 b/gcc/testsuite/gfortran.dg/default_initialization.f90 index 4064784247d..fe67e2f5f88 100644 --- a/gcc/testsuite/gfortran.dg/default_initialization.f90 +++ b/gcc/testsuite/gfortran.dg/default_initialization.f90 @@ -16,3 +16,5 @@ module bad end type default_initialization type (default_initialization) t ! { dg-error "default initialization" } end module bad + +! { dg-final { cleanup-modules "bad" } } diff --git a/gcc/testsuite/gfortran.dg/dependency_12.f90 b/gcc/testsuite/gfortran.dg/dependency_12.f90 new file mode 100644 index 00000000000..09fe19650dd --- /dev/null +++ b/gcc/testsuite/gfortran.dg/dependency_12.f90 @@ -0,0 +1,12 @@ +! { dg-do compile } +! { dg-options "-O2 -fdump-tree-original" } +subroutine foo(a,b) + integer, pointer, dimension (:,:) :: a + real, dimension(:,:) :: b + + where (a == 0) + b = 0.0 + endwhere +end subroutine +! { dg-final { scan-tree-dump-times "malloc" 0 "original" } } +! { dg-final { cleanup-tree-dump "original" } } diff --git a/gcc/testsuite/gfortran.dg/dependency_13.f90 b/gcc/testsuite/gfortran.dg/dependency_13.f90 new file mode 100644 index 00000000000..85fb9779510 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/dependency_13.f90 @@ -0,0 +1,13 @@ +! { dg-do compile } +! { dg-options "-O2 -fdump-tree-original" } + integer :: i(5) + real(4) :: x(5) + equivalence(x,i) + + i = (/ 1, 0, 3, 5, 0 /) + where (i(1:4) .ne. 0) + x(2:5) = -42. + end where + end +! { dg-final { scan-tree-dump-times "malloc" 1 "original" } } +! { dg-final { cleanup-tree-dump "original" } } diff --git a/gcc/testsuite/gfortran.dg/dependency_9.f90 b/gcc/testsuite/gfortran.dg/dependency_9.f90 new file mode 100644 index 00000000000..d1f6f5e3fed --- /dev/null +++ b/gcc/testsuite/gfortran.dg/dependency_9.f90 @@ -0,0 +1,13 @@ +! { dg-do compile } +! { dg-options "-O2 -fdump-tree-original" } +subroutine foo(a,i,j) + integer, dimension (4,4) :: a + integer :: i + integer :: j + + where (a(i,:) .ne. 0) + a(j,:) = 1 + endwhere +end subroutine +! { dg-final { scan-tree-dump-times "malloc" 0 "original" } } +! { dg-final { cleanup-tree-dump "original" } } diff --git a/gcc/testsuite/gfortran.dg/der_charlen_1.f90 b/gcc/testsuite/gfortran.dg/der_charlen_1.f90 index 9f394c73f25..4bdace228d9 100644 --- a/gcc/testsuite/gfortran.dg/der_charlen_1.f90 +++ b/gcc/testsuite/gfortran.dg/der_charlen_1.f90 @@ -22,3 +22,5 @@ CONTAINS type(T), intent(in) :: X end subroutine end module another_core + +! { dg-final { cleanup-modules "core another_core" } } diff --git a/gcc/testsuite/gfortran.dg/der_io_2.f90 b/gcc/testsuite/gfortran.dg/der_io_2.f90 index 08afc02fd40..09878b690e9 100644 --- a/gcc/testsuite/gfortran.dg/der_io_2.f90 +++ b/gcc/testsuite/gfortran.dg/der_io_2.f90 @@ -52,4 +52,4 @@ program prog write (*, *) zb end program prog - +! { dg-final { cleanup-modules "gfortran2" } } diff --git a/gcc/testsuite/gfortran.dg/der_io_3.f90 b/gcc/testsuite/gfortran.dg/der_io_3.f90 index 5fdc7245422..01066cf56e4 100644 --- a/gcc/testsuite/gfortran.dg/der_io_3.f90 +++ b/gcc/testsuite/gfortran.dg/der_io_3.f90 @@ -38,3 +38,5 @@ end module m2 use m2 call test end + +! { dg-final { cleanup-modules "m1 m2" } } diff --git a/gcc/testsuite/gfortran.dg/der_pointer_1.f90 b/gcc/testsuite/gfortran.dg/der_pointer_1.f90 index bf4ffc320f6..b9f98f518b9 100644 --- a/gcc/testsuite/gfortran.dg/der_pointer_1.f90 +++ b/gcc/testsuite/gfortran.dg/der_pointer_1.f90 @@ -16,3 +16,5 @@ module test type(x_t), pointer :: x end module test + +! { dg-final { cleanup-modules "test" } } diff --git a/gcc/testsuite/gfortran.dg/der_pointer_3.f90 b/gcc/testsuite/gfortran.dg/der_pointer_3.f90 index ed56ffc6c0c..ad9f7a7f880 100644 --- a/gcc/testsuite/gfortran.dg/der_pointer_3.f90 +++ b/gcc/testsuite/gfortran.dg/der_pointer_3.f90 @@ -16,3 +16,5 @@ end module ints program size_test use ints end program size_test + +! { dg-final { cleanup-modules "ints" } } diff --git a/gcc/testsuite/gfortran.dg/der_pointer_4.f90 b/gcc/testsuite/gfortran.dg/der_pointer_4.f90 index c08b8461a22..f6e5532c0ac 100644 --- a/gcc/testsuite/gfortran.dg/der_pointer_4.f90 +++ b/gcc/testsuite/gfortran.dg/der_pointer_4.f90 @@ -9,3 +9,5 @@ module crash end type foo type (foo), save :: bar end module crash + +! { dg-final { cleanup-modules "crash" } } diff --git a/gcc/testsuite/gfortran.dg/derived_pointer_recursion.f90 b/gcc/testsuite/gfortran.dg/derived_pointer_recursion.f90 index 5ae532530d2..4af2ceefecb 100644 --- a/gcc/testsuite/gfortran.dg/derived_pointer_recursion.f90 +++ b/gcc/testsuite/gfortran.dg/derived_pointer_recursion.f90 @@ -20,3 +20,4 @@ ! copyright 1996 Loren P. Meissner -- May be distributed if this line is included. ! Linked List operations with Pointer to Pointer +! { dg-final { cleanup-modules "llo" } } diff --git a/gcc/testsuite/gfortran.dg/derived_recursion.f90 b/gcc/testsuite/gfortran.dg/derived_recursion.f90 index d52732ff279..d0c0ea8d467 100644 --- a/gcc/testsuite/gfortran.dg/derived_recursion.f90 +++ b/gcc/testsuite/gfortran.dg/derived_recursion.f90 @@ -22,3 +22,5 @@ end module snafu ! use snafu ! foo%v = 1 ! end + +! { dg-final { cleanup-modules "snafu" } } diff --git a/gcc/testsuite/gfortran.dg/direct_io_1.f90 b/gcc/testsuite/gfortran.dg/direct_io_1.f90 index 92eff2942b4..96ae4903506 100644 --- a/gcc/testsuite/gfortran.dg/direct_io_1.f90 +++ b/gcc/testsuite/gfortran.dg/direct_io_1.f90 @@ -28,5 +28,5 @@ program direct_io_1 n = 1 write(12, rec=n) mt, nt write(12, rec=n+1) (p(m), m=1, nt) - close(12) + close(12, status='delete') end program diff --git a/gcc/testsuite/gfortran.dg/direct_io_2.f90 b/gcc/testsuite/gfortran.dg/direct_io_2.f90 index 847ce2935b8..13b27b8986e 100644 --- a/gcc/testsuite/gfortran.dg/direct_io_2.f90 +++ b/gcc/testsuite/gfortran.dg/direct_io_2.f90 @@ -40,5 +40,6 @@ READ(7, REC = IREC) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF,IVON21, IVON22, IVON31, IVON32, IVON33, IVON34, IVON55, IVON56 IF (IRECN .NE. IRECCK) CALL ABORT 4135 CONTINUE + CLOSE(7, STATUS='DELETE') STOP END diff --git a/gcc/testsuite/gfortran.dg/dummy_functions_1.f90 b/gcc/testsuite/gfortran.dg/dummy_functions_1.f90 index dfcf644c255..8076cf911a9 100644 --- a/gcc/testsuite/gfortran.dg/dummy_functions_1.f90 +++ b/gcc/testsuite/gfortran.dg/dummy_functions_1.f90 @@ -34,3 +34,5 @@ program test use innerfun call foo(3,f) end program test + +! { dg-final { cleanup-modules "innerfun outerfun" } } diff --git a/gcc/testsuite/gfortran.dg/elemental_initializer_1.f90 b/gcc/testsuite/gfortran.dg/elemental_initializer_1.f90 new file mode 100644 index 00000000000..0e717c947d2 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/elemental_initializer_1.f90 @@ -0,0 +1,35 @@ +! { dg-do compile } +! Tests the fix for elemental functions not being allowed in +! specification expressions in pure procedures. +! +! Testcase from iso_varying_string by Rich Townsend +! The allocatable component has been changed to a pointer for this testcase. +! +module iso_varying_string + + type varying_string + private + character(LEN=1), dimension(:), pointer :: chars + end type varying_string + + interface len + module procedure len_ + end interface len + +contains + + pure function char_auto (string) result (char_string) + type(varying_string), intent(in) :: string + character(LEN=len(string)) :: char_string ! Error was here + char_string = "" + end function char_auto + + elemental function len_ (string) result (length) + type(varying_string), intent(in) :: string + integer :: length + length = 1 + end function len_ + +end module iso_varying_string + +! { dg-final { cleanup-modules "iso_varying_string" } } diff --git a/gcc/testsuite/gfortran.dg/elemental_non_intrinsic_dummy_1.f90 b/gcc/testsuite/gfortran.dg/elemental_non_intrinsic_dummy_1.f90 index c14a5d87fa5..207d76a4b7b 100644 --- a/gcc/testsuite/gfortran.dg/elemental_non_intrinsic_dummy_1.f90 +++ b/gcc/testsuite/gfortran.dg/elemental_non_intrinsic_dummy_1.f90 @@ -19,3 +19,5 @@ INTEGER FUNCTION SUB(XX) INTEGER :: XX SUB=XX() END + +! { dg-final { cleanup-modules "TT" } } diff --git a/gcc/testsuite/gfortran.dg/elemental_pointer_1.f90 b/gcc/testsuite/gfortran.dg/elemental_pointer_1.f90 index b5d99611c78..ae18262439b 100644 --- a/gcc/testsuite/gfortran.dg/elemental_pointer_1.f90 +++ b/gcc/testsuite/gfortran.dg/elemental_pointer_1.f90 @@ -9,3 +9,5 @@ CONTAINS POINTER :: LL ! { dg-error " POINTER attribute conflicts with ELEMENTAL attribute" } END FUNCTION LL END MODULE Test + +! { dg-final { cleanup-modules "Test" } } diff --git a/gcc/testsuite/gfortran.dg/elemental_subroutine_1.f90 b/gcc/testsuite/gfortran.dg/elemental_subroutine_1.f90 index 450dd059e09..85ba3f9e73e 100644 --- a/gcc/testsuite/gfortran.dg/elemental_subroutine_1.f90 +++ b/gcc/testsuite/gfortran.dg/elemental_subroutine_1.f90 @@ -55,4 +55,6 @@ contains real, intent(out) :: b b = -a end subroutine foobar -end \ No newline at end of file +end + +! { dg-final { cleanup-modules "pr22146" } } diff --git a/gcc/testsuite/gfortran.dg/elemental_subroutine_2.f90 b/gcc/testsuite/gfortran.dg/elemental_subroutine_2.f90 index 5683de89d37..e9583118693 100644 --- a/gcc/testsuite/gfortran.dg/elemental_subroutine_2.f90 +++ b/gcc/testsuite/gfortran.dg/elemental_subroutine_2.f90 @@ -61,4 +61,6 @@ program test_assign end forall if (any(reshape (i, (/4/)).ne.(/1,8,27,64/))) call abort () -end program test_assign \ No newline at end of file +end program test_assign + +! { dg-final { cleanup-modules "type assign" } } diff --git a/gcc/testsuite/gfortran.dg/endfile_2.f90 b/gcc/testsuite/gfortran.dg/endfile_2.f90 index 7f366f1e033..e91e80eb2aa 100644 --- a/gcc/testsuite/gfortran.dg/endfile_2.f90 +++ b/gcc/testsuite/gfortran.dg/endfile_2.f90 @@ -9,4 +9,5 @@ call abort ! should never get here stop 0023 continue + close(8,status='delete') end diff --git a/gcc/testsuite/gfortran.dg/entry_1.f90 b/gcc/testsuite/gfortran.dg/entry_1.f90 index dae868ec851..c9048a0442a 100644 --- a/gcc/testsuite/gfortran.dg/entry_1.f90 +++ b/gcc/testsuite/gfortran.dg/entry_1.f90 @@ -43,3 +43,5 @@ program p call test1 () call test2 () end program + +! { dg-final { cleanup-modules "m" } } diff --git a/gcc/testsuite/gfortran.dg/entry_3.f90 b/gcc/testsuite/gfortran.dg/entry_3.f90 index 36595ee31e1..b4473df31ba 100644 --- a/gcc/testsuite/gfortran.dg/entry_3.f90 +++ b/gcc/testsuite/gfortran.dg/entry_3.f90 @@ -23,3 +23,5 @@ program entry_4_prog call bar(a) if (any (a .ne. (/3, 4/))) call abort end program + +! { dg-final { cleanup-modules "entry_4" } } diff --git a/gcc/testsuite/gfortran.dg/enum_10.f90 b/gcc/testsuite/gfortran.dg/enum_10.f90 index dad29a1c512..f1582191792 100644 --- a/gcc/testsuite/gfortran.dg/enum_10.f90 +++ b/gcc/testsuite/gfortran.dg/enum_10.f90 @@ -59,3 +59,5 @@ call f4 (one4, 1) call f4 (two4, 2) call f4 (max4, huge(1_4)+0) end + +! { dg-final { cleanup-modules "enum_10" } } diff --git a/gcc/testsuite/gfortran.dg/equiv_constraint_3.f90 b/gcc/testsuite/gfortran.dg/equiv_constraint_3.f90 index 89d4fcb416c..6d7c3631335 100644 --- a/gcc/testsuite/gfortran.dg/equiv_constraint_3.f90 +++ b/gcc/testsuite/gfortran.dg/equiv_constraint_3.f90 @@ -10,4 +10,4 @@ INTEGER :: L EQUIVALENCE(K,L) ! { dg-error "conflicts with USE ASSOCIATED attribute" } END - +! { dg-final { cleanup-modules "TEST" } } diff --git a/gcc/testsuite/gfortran.dg/float_1.f90 b/gcc/testsuite/gfortran.dg/float_1.f90 new file mode 100644 index 00000000000..224d31dce0d --- /dev/null +++ b/gcc/testsuite/gfortran.dg/float_1.f90 @@ -0,0 +1,12 @@ +! { dg-do run } +! PR fortran/26816 +program test_float + integer(1) :: i1 = 1 + integer(2) :: i2 = 1 + integer(4) :: i4 = 1 + integer(8) :: i8 = 1 + if (float(i1) /= 1.) call abort + if (float(i2) /= 1.) call abort + if (float(i4) /= 1.) call abort + if (float(i8) /= 1.) call abort +end program test_float diff --git a/gcc/testsuite/gfortran.dg/func_derived_1.f90 b/gcc/testsuite/gfortran.dg/func_derived_1.f90 index 5160e5ae7f2..496d2905c39 100644 --- a/gcc/testsuite/gfortran.dg/func_derived_1.f90 +++ b/gcc/testsuite/gfortran.dg/func_derived_1.f90 @@ -36,3 +36,5 @@ function f(i,x,c,arr) end function f end + +! { dg-final { cleanup-modules "m" } } diff --git a/gcc/testsuite/gfortran.dg/func_derived_2.f90 b/gcc/testsuite/gfortran.dg/func_derived_2.f90 index 2f3aefa7ee2..35860182a31 100644 --- a/gcc/testsuite/gfortran.dg/func_derived_2.f90 +++ b/gcc/testsuite/gfortran.dg/func_derived_2.f90 @@ -39,4 +39,4 @@ program func_derived_2 if (y%i.ne.112) call abort () end program func_derived_2 - +! { dg-final { cleanup-modules "mpoint" } } diff --git a/gcc/testsuite/gfortran.dg/func_derived_3.f90 b/gcc/testsuite/gfortran.dg/func_derived_3.f90 index a271fe98f6e..6facf218e09 100644 --- a/gcc/testsuite/gfortran.dg/func_derived_3.f90 +++ b/gcc/testsuite/gfortran.dg/func_derived_3.f90 @@ -123,3 +123,5 @@ end module func_derived_3a if (trim (line).ne."simple = 1") call abort () close (10) end program + +! { dg-final { cleanup-modules "func_derived_3 func_derived_3a" } } diff --git a/gcc/testsuite/gfortran.dg/generic_1.f90 b/gcc/testsuite/gfortran.dg/generic_1.f90 index 1cbf4bb8cbc..12077dab59f 100644 --- a/gcc/testsuite/gfortran.dg/generic_1.f90 +++ b/gcc/testsuite/gfortran.dg/generic_1.f90 @@ -17,3 +17,5 @@ end module subroutine BAZ(X) use FOO end subroutine + +! { dg-final { cleanup-modules "FOO" } } diff --git a/gcc/testsuite/gfortran.dg/generic_2.f90 b/gcc/testsuite/gfortran.dg/generic_2.f90 index 802e966c4ba..459dd7ec817 100644 --- a/gcc/testsuite/gfortran.dg/generic_2.f90 +++ b/gcc/testsuite/gfortran.dg/generic_2.f90 @@ -18,3 +18,5 @@ end module bidon integer,intent(in) :: nspden end subroutine nonlinear + +! { dg-final { cleanup-modules "bidon" } } diff --git a/gcc/testsuite/gfortran.dg/generic_3.f90 b/gcc/testsuite/gfortran.dg/generic_3.f90 index 3cd2e9d5d55..54926038515 100644 --- a/gcc/testsuite/gfortran.dg/generic_3.f90 +++ b/gcc/testsuite/gfortran.dg/generic_3.f90 @@ -28,3 +28,5 @@ subroutine mrqcof( x, y, sig, ndata, a, ia, ma ) call gauss( x(i), a, yan, dyda, ma ) end do end subroutine mrqcof + +! { dg-final { cleanup-modules "fit_functions" } } diff --git a/gcc/testsuite/gfortran.dg/generic_4.f90 b/gcc/testsuite/gfortran.dg/generic_4.f90 index 62bc569a21c..48c32a674b0 100644 --- a/gcc/testsuite/gfortran.dg/generic_4.f90 +++ b/gcc/testsuite/gfortran.dg/generic_4.f90 @@ -26,3 +26,5 @@ y = (/1,2,3/) call baz(y,z) if (any (y /= z)) call abort () end + +! { dg-final { cleanup-modules "FOO" } } diff --git a/gcc/testsuite/gfortran.dg/global_references_1.f90 b/gcc/testsuite/gfortran.dg/global_references_1.f90 index d8728d3b08d..0e633455518 100644 --- a/gcc/testsuite/gfortran.dg/global_references_1.f90 +++ b/gcc/testsuite/gfortran.dg/global_references_1.f90 @@ -96,3 +96,5 @@ END SUBROUTINE j entry link2 (nameg) ! { dg-error "is already being used as a SUBROUTINE" } return end + +! { dg-final { cleanup-modules "m" } } diff --git a/gcc/testsuite/gfortran.dg/host_used_types_1.f90 b/gcc/testsuite/gfortran.dg/host_used_types_1.f90 index 89da583a406..528f6de6d49 100644 --- a/gcc/testsuite/gfortran.dg/host_used_types_1.f90 +++ b/gcc/testsuite/gfortran.dg/host_used_types_1.f90 @@ -37,4 +37,6 @@ contains end if end subroutine SetTimeSteps -end module ThermoData \ No newline at end of file +end module ThermoData + +! { dg-final { cleanup-modules "ModelParams ThermoData" } } diff --git a/gcc/testsuite/gfortran.dg/implicit_1.f90 b/gcc/testsuite/gfortran.dg/implicit_1.f90 index 1ecddfa0b8d..85398ca201c 100644 --- a/gcc/testsuite/gfortran.dg/implicit_1.f90 +++ b/gcc/testsuite/gfortran.dg/implicit_1.f90 @@ -9,3 +9,4 @@ implicit none common/rommel/aaa ! { dg-error "no IMPLICIT type" "no IMPLICIT type" } end +! { dg-final { cleanup-modules "AHFinder_dat" } } diff --git a/gcc/testsuite/gfortran.dg/implicit_2.f90 b/gcc/testsuite/gfortran.dg/implicit_2.f90 index c0582d703b6..4bff1784000 100644 --- a/gcc/testsuite/gfortran.dg/implicit_2.f90 +++ b/gcc/testsuite/gfortran.dg/implicit_2.f90 @@ -46,3 +46,5 @@ subroutine bar() v%i = 42 end subroutine end module + +! { dg-final { cleanup-modules "implicit_2" } } diff --git a/gcc/testsuite/gfortran.dg/implicit_actual.f90 b/gcc/testsuite/gfortran.dg/implicit_actual.f90 index 707df9c49d2..73d31a1bb9f 100644 --- a/gcc/testsuite/gfortran.dg/implicit_actual.f90 +++ b/gcc/testsuite/gfortran.dg/implicit_actual.f90 @@ -32,3 +32,4 @@ contains end subroutine foo end program snafu +! { dg-final { cleanup-modules "global" } } diff --git a/gcc/testsuite/gfortran.dg/initialization_1.f90 b/gcc/testsuite/gfortran.dg/initialization_1.f90 index e845472043d..af7ccb0f782 100644 --- a/gcc/testsuite/gfortran.dg/initialization_1.f90 +++ b/gcc/testsuite/gfortran.dg/initialization_1.f90 @@ -21,6 +21,7 @@ contains real(8) :: x (1:2, *) real(8) :: y (0:,:) integer :: i + real :: z(2, 2) ! However, this gives a warning because it is an initialization expression. integer :: l1 = len (ch1) ! { dg-warning "assumed character length variable" } @@ -34,3 +35,5 @@ contains end subroutine foo end module const + +! { dg-final { cleanup-modules "const" } } diff --git a/gcc/testsuite/gfortran.dg/int_1.f90 b/gcc/testsuite/gfortran.dg/int_1.f90 index 4e381220a72..81937e7b1e3 100644 --- a/gcc/testsuite/gfortran.dg/int_1.f90 +++ b/gcc/testsuite/gfortran.dg/int_1.f90 @@ -170,3 +170,5 @@ program test_int if (i4 /= 17_ik4 .or. i8 /= 17_ik8) call abort end program test_int + +! { dg-final { cleanup-modules "mykinds" } } diff --git a/gcc/testsuite/gfortran.dg/intent_used_1.f90 b/gcc/testsuite/gfortran.dg/intent_used_1.f90 index ecc06e989ce..ec23bf58579 100644 --- a/gcc/testsuite/gfortran.dg/intent_used_1.f90 +++ b/gcc/testsuite/gfortran.dg/intent_used_1.f90 @@ -15,3 +15,5 @@ MODULE global END SUBROUTINE foo END INTERFACE END MODULE global + +! { dg-final { cleanup-modules "global" } } diff --git a/gcc/testsuite/gfortran.dg/interface_1.f90 b/gcc/testsuite/gfortran.dg/interface_1.f90 index e2562e10417..6a398f1d25b 100644 --- a/gcc/testsuite/gfortran.dg/interface_1.f90 +++ b/gcc/testsuite/gfortran.dg/interface_1.f90 @@ -38,3 +38,5 @@ module z end function end module z + +! { dg-final { cleanup-modules "y z" } } diff --git a/gcc/testsuite/gfortran.dg/interface_2.f90 b/gcc/testsuite/gfortran.dg/interface_2.f90 index 6b0bf2b239b..4a813d08482 100644 --- a/gcc/testsuite/gfortran.dg/interface_2.f90 +++ b/gcc/testsuite/gfortran.dg/interface_2.f90 @@ -27,3 +27,5 @@ CONTAINS END FUNCTION Compare_Float_Single END MODULE Compare_Float_Numbers + +! { dg-final { cleanup-modules "Compare_Float_Numbers" } } diff --git a/gcc/testsuite/gfortran.dg/internal_references_2.f90 b/gcc/testsuite/gfortran.dg/internal_references_2.f90 index bda8a6fcedb..6d4c21dc218 100644 --- a/gcc/testsuite/gfortran.dg/internal_references_2.f90 +++ b/gcc/testsuite/gfortran.dg/internal_references_2.f90 @@ -17,4 +17,6 @@ contains subroutine sub(a) ! Would give an error on "already defined" here real a end subroutine sub -end module aap \ No newline at end of file +end module aap + +! { dg-final { cleanup-modules "aap" } } diff --git a/gcc/testsuite/gfortran.dg/io_constraints_1.f90 b/gcc/testsuite/gfortran.dg/io_constraints_1.f90 index fa4c973dd34..5284f2ab145 100644 --- a/gcc/testsuite/gfortran.dg/io_constraints_1.f90 +++ b/gcc/testsuite/gfortran.dg/io_constraints_1.f90 @@ -76,3 +76,5 @@ end module global 100 continue 200 format (2i6) END + +! { dg-final { cleanup-modules "fails global" } } diff --git a/gcc/testsuite/gfortran.dg/io_constraints_2.f90 b/gcc/testsuite/gfortran.dg/io_constraints_2.f90 index 8100a4d3690..ec0bd7a967f 100644 --- a/gcc/testsuite/gfortran.dg/io_constraints_2.f90 +++ b/gcc/testsuite/gfortran.dg/io_constraints_2.f90 @@ -67,3 +67,5 @@ end module global 100 continue 200 format (2i6) END + +! { dg-final { cleanup-modules "global" } } diff --git a/gcc/testsuite/gfortran.dg/iostat_2.f90 b/gcc/testsuite/gfortran.dg/iostat_2.f90 index 2b4cb5d7e83..124567c1e32 100644 --- a/gcc/testsuite/gfortran.dg/iostat_2.f90 +++ b/gcc/testsuite/gfortran.dg/iostat_2.f90 @@ -4,4 +4,5 @@ close(10, status="whatever", iostat=i) if (i == 0) call abort() write(17,*) 'foo' + close(17, status="delete") end diff --git a/gcc/testsuite/gfortran.dg/large_integer_kind_1.f90 b/gcc/testsuite/gfortran.dg/large_integer_kind_1.f90 index 9511317901c..2f272db923d 100644 --- a/gcc/testsuite/gfortran.dg/large_integer_kind_1.f90 +++ b/gcc/testsuite/gfortran.dg/large_integer_kind_1.f90 @@ -36,3 +36,5 @@ program test x = -huge(0_8) call testoutput (x,-huge(0_8),50,'(I50)') end program test + +! { dg-final { cleanup-modules "testmod" } } diff --git a/gcc/testsuite/gfortran.dg/large_real_kind_1.f90 b/gcc/testsuite/gfortran.dg/large_real_kind_1.f90 index 705b51eeb09..84de67271b2 100644 --- a/gcc/testsuite/gfortran.dg/large_real_kind_1.f90 +++ b/gcc/testsuite/gfortran.dg/large_real_kind_1.f90 @@ -75,3 +75,5 @@ program test c2(1:1) = ' ' if (c1 /= c2) call abort end program test + +! { dg-final { cleanup-modules "testmod" } } diff --git a/gcc/testsuite/gfortran.dg/large_real_kind_form_io_2.f90 b/gcc/testsuite/gfortran.dg/large_real_kind_form_io_2.f90 index d48e3d57d48..222e1982e1a 100644 --- a/gcc/testsuite/gfortran.dg/large_real_kind_form_io_2.f90 +++ b/gcc/testsuite/gfortran.dg/large_real_kind_form_io_2.f90 @@ -1,4 +1,4 @@ -! { dg-do run } +! { dg-do run { xfail sparc*-sun-solaris2.* } } ! { dg-require-effective-target fortran_large_real } ! PR libfortran/24685 program large_real_kind_form_io_2 diff --git a/gcc/testsuite/gfortran.dg/module_blank_common.f90 b/gcc/testsuite/gfortran.dg/module_blank_common.f90 index 23bb48ab009..a06ff0098e0 100644 --- a/gcc/testsuite/gfortran.dg/module_blank_common.f90 +++ b/gcc/testsuite/gfortran.dg/module_blank_common.f90 @@ -16,4 +16,4 @@ program blank_common if (z.ne.cmplx (a,b)) call abort () end program blank_common - +! { dg-final { cleanup-modules "global" } } diff --git a/gcc/testsuite/gfortran.dg/module_commons_1.f90 b/gcc/testsuite/gfortran.dg/module_commons_1.f90 index 996074c0778..bd2c7f99be1 100644 --- a/gcc/testsuite/gfortran.dg/module_commons_1.f90 +++ b/gcc/testsuite/gfortran.dg/module_commons_1.f90 @@ -22,3 +22,4 @@ program collision call foo () end program collision +! { dg-final { cleanup-modules "m1 m2" } } diff --git a/gcc/testsuite/gfortran.dg/module_double_reuse.f90 b/gcc/testsuite/gfortran.dg/module_double_reuse.f90 index 8c1b6ec6367..694e821b786 100644 --- a/gcc/testsuite/gfortran.dg/module_double_reuse.f90 +++ b/gcc/testsuite/gfortran.dg/module_double_reuse.f90 @@ -17,3 +17,4 @@ program d if (v.ne.u) call abort () end program d +! { dg-final { cleanup-modules "a" } } diff --git a/gcc/testsuite/gfortran.dg/module_equivalence_1.f90 b/gcc/testsuite/gfortran.dg/module_equivalence_1.f90 index d8268ca722f..fecfb89fac3 100644 --- a/gcc/testsuite/gfortran.dg/module_equivalence_1.f90 +++ b/gcc/testsuite/gfortran.dg/module_equivalence_1.f90 @@ -23,4 +23,4 @@ program module_equiv call foo () end program module_equiv - +! { dg-final { cleanup-modules "test_equiv" } } diff --git a/gcc/testsuite/gfortran.dg/module_interface_1.f90 b/gcc/testsuite/gfortran.dg/module_interface_1.f90 index 7301f48ff32..15139c04f1a 100644 --- a/gcc/testsuite/gfortran.dg/module_interface_1.f90 +++ b/gcc/testsuite/gfortran.dg/module_interface_1.f90 @@ -33,4 +33,6 @@ if (N(1).ne.5) call abort () return end subroutine Selection_Sort - end program module_interface \ No newline at end of file + end program module_interface + +! { dg-final { cleanup-modules "Max_Loc_mod" } } diff --git a/gcc/testsuite/gfortran.dg/module_parameter_array_refs_1.f90 b/gcc/testsuite/gfortran.dg/module_parameter_array_refs_1.f90 index a78b5253958..592e2f3dd2a 100644 --- a/gcc/testsuite/gfortran.dg/module_parameter_array_refs_1.f90 +++ b/gcc/testsuite/gfortran.dg/module_parameter_array_refs_1.f90 @@ -11,3 +11,4 @@ module foo end +! { dg-final { cleanup-modules "foo" } } diff --git a/gcc/testsuite/gfortran.dg/multiple_allocation_1.f90 b/gcc/testsuite/gfortran.dg/multiple_allocation_1.f90 index 9c14248a05d..2b913734e47 100644 --- a/gcc/testsuite/gfortran.dg/multiple_allocation_1.f90 +++ b/gcc/testsuite/gfortran.dg/multiple_allocation_1.f90 @@ -8,10 +8,11 @@ program alloc_test integer, pointer :: b(:) allocate(a(4)) - ! This should set the stat code without changing the size - allocate(a(4),stat=i) + ! This should set the stat code and change the size. + allocate(a(3),stat=i) if (i == 0) call abort if (.not. allocated(a)) call abort + if (size(a) /= 3) call abort ! It's OK to allocate pointers twice (even though this causes ! a memory leak) allocate(b(4)) diff --git a/gcc/testsuite/gfortran.dg/named_interface.f90 b/gcc/testsuite/gfortran.dg/named_interface.f90 index 90fea809fb0..29cfae88275 100644 --- a/gcc/testsuite/gfortran.dg/named_interface.f90 +++ b/gcc/testsuite/gfortran.dg/named_interface.f90 @@ -7,3 +7,5 @@ module snafu end subroutine really_snafu end interface foo end module snafu + +! { dg-final { cleanup-modules "snafu" } } diff --git a/gcc/testsuite/gfortran.dg/namelist_1.f90 b/gcc/testsuite/gfortran.dg/namelist_1.f90 index ee028dd0e5e..e4154e9181b 100644 --- a/gcc/testsuite/gfortran.dg/namelist_1.f90 +++ b/gcc/testsuite/gfortran.dg/namelist_1.f90 @@ -5,3 +5,5 @@ module namelist_1 integer,private :: x namelist /n/ x ! { dg-error "cannot be member of PUBLIC namelist" "" } end module + +! { dg-final { cleanup-modules "namelist_1" } } diff --git a/gcc/testsuite/gfortran.dg/namelist_14.f90 b/gcc/testsuite/gfortran.dg/namelist_14.f90 index b8d7e9bc6e7..e95495aaf2c 100644 --- a/gcc/testsuite/gfortran.dg/namelist_14.f90 +++ b/gcc/testsuite/gfortran.dg/namelist_14.f90 @@ -92,3 +92,5 @@ contains end subroutine foo end program namelist_14 + +! { dg-final { cleanup-modules "global" } } diff --git a/gcc/testsuite/gfortran.dg/namelist_15.f90 b/gcc/testsuite/gfortran.dg/namelist_15.f90 index a6d449b4879..7bfe9310979 100644 --- a/gcc/testsuite/gfortran.dg/namelist_15.f90 +++ b/gcc/testsuite/gfortran.dg/namelist_15.f90 @@ -57,3 +57,5 @@ program namelist_15 (x(2)%m(2)%ch(2) == "kz"))) call abort () end program namelist_15 + +! { dg-final { cleanup-modules "global" } } diff --git a/gcc/testsuite/gfortran.dg/namelist_4.f90 b/gcc/testsuite/gfortran.dg/namelist_4.f90 index 0e1b0eef51f..9e62a1f370f 100644 --- a/gcc/testsuite/gfortran.dg/namelist_4.f90 +++ b/gcc/testsuite/gfortran.dg/namelist_4.f90 @@ -37,3 +37,4 @@ CONTAINS END FUNCTION END +! { dg-final { cleanup-modules "M1" } } diff --git a/gcc/testsuite/gfortran.dg/namelist_use.f90 b/gcc/testsuite/gfortran.dg/namelist_use.f90 index 6d5cf8065f7..0460630dd33 100644 --- a/gcc/testsuite/gfortran.dg/namelist_use.f90 +++ b/gcc/testsuite/gfortran.dg/namelist_use.f90 @@ -29,3 +29,5 @@ program namelist_use close (10) end program namelist_use + +! { dg-final { cleanup-modules "global" } } diff --git a/gcc/testsuite/gfortran.dg/namelist_use_only.f90 b/gcc/testsuite/gfortran.dg/namelist_use_only.f90 index 3f7b8e6ff4e..a9adf015ded 100644 --- a/gcc/testsuite/gfortran.dg/namelist_use_only.f90 +++ b/gcc/testsuite/gfortran.dg/namelist_use_only.f90 @@ -32,3 +32,5 @@ program namelist_use_only if ((i.ne.0).or.(rrrr.ne.3.5).or.foo()) call abort () close (10) end program namelist_use_only + +! { dg-final { cleanup-modules "global" } } diff --git a/gcc/testsuite/gfortran.dg/nested_modules_1.f90 b/gcc/testsuite/gfortran.dg/nested_modules_1.f90 index 77960121788..85a2483cf74 100644 --- a/gcc/testsuite/gfortran.dg/nested_modules_1.f90 +++ b/gcc/testsuite/gfortran.dg/nested_modules_1.f90 @@ -41,3 +41,5 @@ call eyeore () call tigger (w) end + +! { dg-final { cleanup-modules "mod0 mod1 mod2" } } diff --git a/gcc/testsuite/gfortran.dg/nested_modules_2.f90 b/gcc/testsuite/gfortran.dg/nested_modules_2.f90 index 91ab766c1be..3d0985a7eac 100644 --- a/gcc/testsuite/gfortran.dg/nested_modules_2.f90 +++ b/gcc/testsuite/gfortran.dg/nested_modules_2.f90 @@ -36,3 +36,4 @@ program testfoobar if (all (l.ne.(/84,42,0/))) call abort () end program testfoobar +! { dg-final { cleanup-modules "foo bar foobar" } } diff --git a/gcc/testsuite/gfortran.dg/nested_modules_3.f90 b/gcc/testsuite/gfortran.dg/nested_modules_3.f90 index 364460c6138..7550368bcd9 100644 --- a/gcc/testsuite/gfortran.dg/nested_modules_3.f90 +++ b/gcc/testsuite/gfortran.dg/nested_modules_3.f90 @@ -53,3 +53,5 @@ PROGRAM use_foobar CALL sub3 (z, j) IF (ALL (j.ne.(/3,2,1/))) CALL abort () END PROGRAM use_foobar + +! { dg-final { cleanup-modules "foo bar foobar" } } diff --git a/gcc/testsuite/gfortran.dg/nested_modules_4.f90 b/gcc/testsuite/gfortran.dg/nested_modules_4.f90 index b9e0fd39467..dde171c7ed9 100644 --- a/gcc/testsuite/gfortran.dg/nested_modules_4.f90 +++ b/gcc/testsuite/gfortran.dg/nested_modules_4.f90 @@ -23,3 +23,5 @@ end module serial character*15 :: buffer buffer = lc ("Have a Nice DAY") end + +! { dg-final { cleanup-modules "string serial" } } diff --git a/gcc/testsuite/gfortran.dg/nested_modules_5.f90 b/gcc/testsuite/gfortran.dg/nested_modules_5.f90 index 7f96bdba0d4..86b43fd7b36 100644 --- a/gcc/testsuite/gfortran.dg/nested_modules_5.f90 +++ b/gcc/testsuite/gfortran.dg/nested_modules_5.f90 @@ -24,3 +24,5 @@ end module serial character*15 :: buffer buffer = lc ("Have a Nice DAY") end + +! { dg-final { cleanup-modules "anything serial" } } diff --git a/gcc/testsuite/gfortran.dg/open_new.f90 b/gcc/testsuite/gfortran.dg/open_new.f90 index 3b8e95ae944..96edd93c347 100644 --- a/gcc/testsuite/gfortran.dg/open_new.f90 +++ b/gcc/testsuite/gfortran.dg/open_new.f90 @@ -7,5 +7,5 @@ program main close(nout) open(nout, file="foo.dat", status="new",err=100) call abort ! This should never happen -100 continue +100 call unlink ("foo.dat") end program main diff --git a/gcc/testsuite/gfortran.dg/open_readonly_1.f90 b/gcc/testsuite/gfortran.dg/open_readonly_1.f90 index 622a07d2aee..3adbbd32498 100644 --- a/gcc/testsuite/gfortran.dg/open_readonly_1.f90 +++ b/gcc/testsuite/gfortran.dg/open_readonly_1.f90 @@ -9,6 +9,6 @@ program prog open (unit=10, file='PR19451.dat', action="read") write (10,*,err=20) "Hello World" call abort() - 20 continue + 20 close (10, status='delete') end program diff --git a/gcc/testsuite/gfortran.dg/parens_5.f90 b/gcc/testsuite/gfortran.dg/parens_5.f90 index 36bba8a0849..a6e64b4112a 100644 --- a/gcc/testsuite/gfortran.dg/parens_5.f90 +++ b/gcc/testsuite/gfortran.dg/parens_5.f90 @@ -17,3 +17,5 @@ program test c = bobo(5) if (c .ne. "12345") call abort end program test + +! { dg-final { cleanup-modules "para" } } diff --git a/gcc/testsuite/gfortran.dg/parent_result_ref_4.f90 b/gcc/testsuite/gfortran.dg/parent_result_ref_4.f90 index d8c84e7cd6b..174d6456934 100644 --- a/gcc/testsuite/gfortran.dg/parent_result_ref_4.f90 +++ b/gcc/testsuite/gfortran.dg/parent_result_ref_4.f90 @@ -20,3 +20,5 @@ end module m use m if (f ().ne.2) call abort () end + +! { dg-final { cleanup-modules "m" } } diff --git a/gcc/testsuite/gfortran.dg/pr15164.f90 b/gcc/testsuite/gfortran.dg/pr15164.f90 index f4fef7069f7..f8098710bee 100644 --- a/gcc/testsuite/gfortran.dg/pr15164.f90 +++ b/gcc/testsuite/gfortran.dg/pr15164.f90 @@ -14,3 +14,4 @@ end subroutine split end module specfiles +! { dg-final { cleanup-modules "specfiles" } } diff --git a/gcc/testsuite/gfortran.dg/pr16861.f90 b/gcc/testsuite/gfortran.dg/pr16861.f90 index 4a73edaf4f0..88f89fa78b5 100644 --- a/gcc/testsuite/gfortran.dg/pr16861.f90 +++ b/gcc/testsuite/gfortran.dg/pr16861.f90 @@ -30,3 +30,5 @@ end subroutine quus program test call quus end program test + +! { dg-final { cleanup-modules "foo bar" } } diff --git a/gcc/testsuite/gfortran.dg/pr16935.f90 b/gcc/testsuite/gfortran.dg/pr16935.f90 index 63f540057fd..b7dd236fddf 100644 --- a/gcc/testsuite/gfortran.dg/pr16935.f90 +++ b/gcc/testsuite/gfortran.dg/pr16935.f90 @@ -4,4 +4,5 @@ program bug2 implicit none open( 1 , file = "str_500.txt", position = "REWIND" ) + close( 1 , status = "DELETE" ) end diff --git a/gcc/testsuite/gfortran.dg/pr17615.f90 b/gcc/testsuite/gfortran.dg/pr17615.f90 index 13b90334a7b..76676182f4c 100644 --- a/gcc/testsuite/gfortran.dg/pr17615.f90 +++ b/gcc/testsuite/gfortran.dg/pr17615.f90 @@ -17,3 +17,5 @@ PROGRAM TEST real(8) :: c(3) c = cross_product() END PROGRAM TEST + +! { dg-final { cleanup-modules "module_vec3d" } } diff --git a/gcc/testsuite/gfortran.dg/pr19926.f90 b/gcc/testsuite/gfortran.dg/pr19926.f90 index 34991ec2ec6..ae70d5b0fa8 100644 --- a/gcc/testsuite/gfortran.dg/pr19926.f90 +++ b/gcc/testsuite/gfortran.dg/pr19926.f90 @@ -23,3 +23,4 @@ subroutine string_comp(i) i = map(42) end subroutine string_comp +! { dg-final { cleanup-modules "b" } } diff --git a/gcc/testsuite/gfortran.dg/pr20954.f b/gcc/testsuite/gfortran.dg/pr20954.f index b19b782f667..be820c1e937 100644 --- a/gcc/testsuite/gfortran.dg/pr20954.f +++ b/gcc/testsuite/gfortran.dg/pr20954.f @@ -8,4 +8,5 @@ filename = 'input' open (2,file=filename) write (line, '(5a16)') (string(i),i=1,5) + close (2, status='delete') end diff --git a/gcc/testsuite/gfortran.dg/pr21177.f90 b/gcc/testsuite/gfortran.dg/pr21177.f90 index 8ce0180dfc1..48d35312318 100644 --- a/gcc/testsuite/gfortran.dg/pr21177.f90 +++ b/gcc/testsuite/gfortran.dg/pr21177.f90 @@ -51,3 +51,5 @@ program test if (tt(null(c4)) /= 3) call abort() if (tt(null(c8)) /= 4) call abort() end program test + +! { dg-final { cleanup-modules "mymod" } } diff --git a/gcc/testsuite/gfortran.dg/pr26246_1.f90 b/gcc/testsuite/gfortran.dg/pr26246_1.f90 index a1cb45535fe..e35bcaca309 100644 --- a/gcc/testsuite/gfortran.dg/pr26246_1.f90 +++ b/gcc/testsuite/gfortran.dg/pr26246_1.f90 @@ -16,3 +16,4 @@ end module pr26246_1 ! { dg-final { scan-tree-dump-times "static int" 0 "original" } } ! { dg-final { cleanup-tree-dump "original" } } +! { dg-final { cleanup-modules "pr26246_1" } } diff --git a/gcc/testsuite/gfortran.dg/private_type_1.f90 b/gcc/testsuite/gfortran.dg/private_type_1.f90 index e36e20a5e5a..34bc457a52f 100644 --- a/gcc/testsuite/gfortran.dg/private_type_1.f90 +++ b/gcc/testsuite/gfortran.dg/private_type_1.f90 @@ -17,3 +17,4 @@ contains end subroutine dummysub end module modboom +! { dg-final { cleanup-modules "modboom" } } diff --git a/gcc/testsuite/gfortran.dg/private_type_2.f90 b/gcc/testsuite/gfortran.dg/private_type_2.f90 index 9cb0b380703..690be5d3a85 100644 --- a/gcc/testsuite/gfortran.dg/private_type_2.f90 +++ b/gcc/testsuite/gfortran.dg/private_type_2.f90 @@ -21,4 +21,4 @@ MODULE TEST END MODULE END - +! { dg-final { cleanup-modules "TEST" } } diff --git a/gcc/testsuite/gfortran.dg/private_type_3.f90 b/gcc/testsuite/gfortran.dg/private_type_3.f90 index b8fad6626ed..dea35818ea3 100644 --- a/gcc/testsuite/gfortran.dg/private_type_3.f90 +++ b/gcc/testsuite/gfortran.dg/private_type_3.f90 @@ -31,3 +31,4 @@ module c end subroutine d end module c +! { dg-final { cleanup-modules "a c" } } diff --git a/gcc/testsuite/gfortran.dg/private_type_4.f90 b/gcc/testsuite/gfortran.dg/private_type_4.f90 index a5b5578c45a..aca8795fc0c 100644 --- a/gcc/testsuite/gfortran.dg/private_type_4.f90 +++ b/gcc/testsuite/gfortran.dg/private_type_4.f90 @@ -15,3 +15,5 @@ contains end function end module + +! { dg-final { cleanup-modules "m1" } } diff --git a/gcc/testsuite/gfortran.dg/private_type_5.f90 b/gcc/testsuite/gfortran.dg/private_type_5.f90 new file mode 100644 index 00000000000..e62fe6e21c4 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/private_type_5.f90 @@ -0,0 +1,24 @@ +! { dg-do compile } +! Tests the fix for PR26779, where an error would occur because +! init was detected to be public with a private type dummy argument. +! +! Contributed by Paul Thomas +! +module test + public sub + type, private :: t + integer :: i + end type t +contains + subroutine sub (arg) + integer arg + type(t) :: root + call init(root, arg) + contains + subroutine init(ir, i) + integer i + type(t) :: ir + ir%i = i + end subroutine init + end subroutine sub +end module test \ No newline at end of file diff --git a/gcc/testsuite/gfortran.dg/procedure_lvalue.f90 b/gcc/testsuite/gfortran.dg/procedure_lvalue.f90 index 575c2ca91a5..2a2c3550454 100644 --- a/gcc/testsuite/gfortran.dg/procedure_lvalue.f90 +++ b/gcc/testsuite/gfortran.dg/procedure_lvalue.f90 @@ -16,4 +16,6 @@ subroutine r use t b = 1. ! { dg-error "l-value since it is a procedure" } y = a(1.) -end subroutine r \ No newline at end of file +end subroutine r + +! { dg-final { cleanup-modules "t" } } diff --git a/gcc/testsuite/gfortran.dg/pure_byref_3.f90 b/gcc/testsuite/gfortran.dg/pure_byref_3.f90 index cb2644ff898..a9d860bf041 100644 --- a/gcc/testsuite/gfortran.dg/pure_byref_3.f90 +++ b/gcc/testsuite/gfortran.dg/pure_byref_3.f90 @@ -31,3 +31,5 @@ program pure_byref_3 a = hoj() if (.not. all(a == (/1, 2, 3/))) call abort() end program pure_byref_3 + +! { dg-final { cleanup-modules "huj_mod" } } diff --git a/gcc/testsuite/gfortran.dg/read_many_1.f b/gcc/testsuite/gfortran.dg/read_many_1.f index ef81fa81f44..4fac689ac48 100644 --- a/gcc/testsuite/gfortran.dg/read_many_1.f +++ b/gcc/testsuite/gfortran.dg/read_many_1.f @@ -20,4 +20,5 @@ if (b(2).ne.5) call abort() if (a(3000).ne.1234) call abort() if (b(2048).ne.5678) call abort() + close(2, status='delete') end diff --git a/gcc/testsuite/gfortran.dg/read_size_noadvance.f90 b/gcc/testsuite/gfortran.dg/read_size_noadvance.f90 new file mode 100644 index 00000000000..819a28dcccb --- /dev/null +++ b/gcc/testsuite/gfortran.dg/read_size_noadvance.f90 @@ -0,0 +1,23 @@ +! { dg-do run } +! PR26890 Test for use of SIZE variable in IO list. +! Test case from Paul Thomas. +! Submitted by Jerry DeLisle + + character(80) :: buffer, line + integer :: nchars + line = "The quick brown fox jumps over the lazy dog." + open (10) + write (10, '(a)') trim(line) + rewind (10) + read (10, '(a)', advance = 'no', size = nchars, eor = 998) buffer + call abort() +998 if (nchars.ne.44) call abort() + rewind (10) + buffer = "how about some random text here just to be sure on this one." + nchars = 80 + read (10, '(a)', advance = 'no', size = nchars, eor = 999) buffer(:nchars) +999 if (nchars.ne.44) call abort() + if (buffer.ne.line) call abort() + close (10, status="delete") +end + diff --git a/gcc/testsuite/gfortran.dg/read_x_past.f b/gcc/testsuite/gfortran.dg/read_x_past.f new file mode 100644 index 00000000000..4a6d05369d3 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/read_x_past.f @@ -0,0 +1,17 @@ +! { dg-do run } +! { dg-options -w } +! PR 26661 : Test reading X's past file end with no LF or CR. +! PR 26880 : Tests that rewind clears the gfc_unit read_bad flag. +! Contributed by Jerry DeLisle . + implicit none + character(3) a(4) + integer i + open (10) + 10 format(A,$) ! This is not pedantic + write(10,10)' abc def ghi jkl' + rewind(10) + read(10,20)(a(i),i=1,4) + if (a(4).ne."jkl") call abort() + 20 format(1x,a3,1x,a3,1x,a3,1x,a3,10x) + close(10, status="delete") + end diff --git a/gcc/testsuite/gfortran.dg/record_marker_1.f90 b/gcc/testsuite/gfortran.dg/record_marker_1.f90 new file mode 100644 index 00000000000..8312171d474 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/record_marker_1.f90 @@ -0,0 +1,38 @@ +! { dg-do run } +! { dg-options "-frecord-marker=4" } + +program main + implicit none + integer :: i1, i2, i3 + + open(15,form="UNFORMATTED") + write (15) 1 + close (15) + open (15,form="UNFORMATTED",access="DIRECT",recl=4) + i1 = 1 + i2 = 2 + i3 = 3 + read (15,rec=1) i1 + read (15,rec=2) i2 + read (15,rec=3) i3 + close (15, status="DELETE") + if (i1 /= 4) call abort + if (i2 /= 1) call abort + if (i3 /= 4) call abort + + open(15,form="UNFORMATTED",convert="SWAP") + write (15) 1 + close (15) + open (15,form="UNFORMATTED",access="DIRECT",convert="SWAP",recl=4) + i1 = 1 + i2 = 2 + i3 = 3 + read (15,rec=1) i1 + read (15,rec=2) i2 + read (15,rec=3) i3 + close(15,status="DELETE") + if (i1 /= 4) call abort + if (i2 /= 1) call abort + if (i3 /= 4) call abort + +end program main diff --git a/gcc/testsuite/gfortran.dg/record_marker_2.f b/gcc/testsuite/gfortran.dg/record_marker_2.f new file mode 100644 index 00000000000..725af120d33 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/record_marker_2.f @@ -0,0 +1,83 @@ +! { dg-do run } +! { dg-options "-frecord-marker=4" } +! This file is all about BACKSPACE +! Adapted from gfortran.dg/backspace.f + + integer i, n, nr + real x(10), y(10) + +! PR libfortran/20068 + open (20, status='scratch') + write (20,*) 1 + write (20,*) 2 + write (20,*) 3 + rewind (20) + read (20,*) i + if (i .ne. 1) call abort + backspace (20) + read (20,*) i + if (i .ne. 1) call abort + close (20) + +! PR libfortran/20125 + open (20, status='scratch') + write (20,*) 7 + backspace (20) + read (20,*) i + if (i .ne. 7) call abort + close (20) + + open (20, status='scratch', form='unformatted') + write (20) 8 + backspace (20) + read (20) i + if (i .ne. 8) call abort + close (20) + +! PR libfortran/20471 + do n = 1, 10 + x(n) = sqrt(real(n)) + end do + open (3, form='unformatted', status='scratch') + write (3) (x(n),n=1,10) + backspace (3) + rewind (3) + read (3) (y(n),n=1,10) + + do n = 1, 10 + if (abs(x(n)-y(n)) > 0.00001) call abort + end do + close (3) + +! PR libfortran/20156 + open (3, form='unformatted', status='scratch') + do i = 1, 5 + x(1) = i + write (3) n, (x(n),n=1,10) + end do + nr = 0 + rewind (3) + 20 continue + read (3,end=30,err=90) n, (x(n),n=1,10) + nr = nr + 1 + goto 20 + 30 continue + if (nr .ne. 5) call abort + + do i = 1, nr+1 + backspace (3) + end do + + do i = 1, nr + read(3,end=70,err=90) n, (x(n),n=1,10) + if (abs(x(1) - i) .gt. 0.001) call abort + end do + close (3) + stop + + 70 continue + call abort + 90 continue + call abort + + end diff --git a/gcc/testsuite/gfortran.dg/record_marker_3.f90 b/gcc/testsuite/gfortran.dg/record_marker_3.f90 new file mode 100644 index 00000000000..7459d7210a4 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/record_marker_3.f90 @@ -0,0 +1,38 @@ +! { dg-do run } +! { dg-options "-frecord-marker=8" } + +program main + implicit none + integer (kind=8) :: i1, i2, i3 + + open(15,form="UNFORMATTED") + write (15) 1_8 + close (15) + open (15,form="UNFORMATTED",access="DIRECT",recl=8) + i1 = 1 + i2 = 2 + i3 = 3 + read (15,rec=1) i1 + read (15,rec=2) i2 + read (15,rec=3) i3 + close (15, status="DELETE") + if (i1 /= 8) call abort + if (i2 /= 1) call abort + if (i3 /= 8) call abort + + open(15,form="UNFORMATTED",convert="SWAP") + write (15) 1_8 + close (15) + open (15,form="UNFORMATTED",access="DIRECT",convert="SWAP",recl=8) + i1 = 1 + i2 = 2 + i3 = 3 + read (15,rec=1) i1 + read (15,rec=2) i2 + read (15,rec=3) i3 + close(15,status="DELETE") + if (i1 /= 8) call abort + if (i2 /= 1) call abort + if (i3 /= 8) call abort + +end program main diff --git a/gcc/testsuite/gfortran.dg/same_name_1.f90 b/gcc/testsuite/gfortran.dg/same_name_1.f90 index cbeb875e36b..5cf13a93bed 100644 --- a/gcc/testsuite/gfortran.dg/same_name_1.f90 +++ b/gcc/testsuite/gfortran.dg/same_name_1.f90 @@ -11,3 +11,5 @@ contains subroutine u end subroutine u end module m + +! { dg-final { cleanup-modules "n m" } } diff --git a/gcc/testsuite/gfortran.dg/scalar_mask_2.f90 b/gcc/testsuite/gfortran.dg/scalar_mask_2.f90 new file mode 100644 index 00000000000..adc7bbd60d4 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/scalar_mask_2.f90 @@ -0,0 +1,32 @@ +! { dg-do run } +program main + ! Test scalar masks for different intrinsics. + real, dimension(2,2) :: a + logical(kind=2) :: lo + lo = .false. + a(1,1) = 1. + a(1,2) = -1. + a(2,1) = 13. + a(2,2) = -31. + if (any (minloc (a, lo) /= 0)) call abort + if (any (minloc (a, .true.) /= (/ 2, 2 /))) call abort + if (any (minloc(a, 1, .true.) /= (/ 1, 2/))) call abort + if (any (minloc(a, 1, lo ) /= (/ 0, 0/))) call abort + + if (any (maxloc (a, lo) /= 0)) call abort + if (any (maxloc (a, .true.) /= (/ 2,1 /))) call abort + if (any (maxloc(a, 1, .true.) /= (/ 2, 1/))) call abort + if (any (maxloc(a, 1, lo) /= (/ 0, 0/))) call abort + + if (any (maxval(a, 1, lo) /= -HUGE(a))) call abort + if (any (maxval(a, 1, .true.) /= (/13., -1./))) call abort + if (any (minval(a, 1, lo) /= HUGE(a))) call abort + if (any (minval(a, 1, .true.) /= (/1., -31./))) call abort + + if (any (product(a, 1, .true.) /= (/13., 31./))) call abort + if (any (product(a, 1, lo ) /= (/1., 1./))) call abort + + if (any (sum(a, 1, .true.) /= (/14., -32./))) call abort + if (any (sum(a, 1, lo) /= (/0., 0./))) call abort + +end program main diff --git a/gcc/testsuite/gfortran.dg/sibling_dummy_procedure_1.f90 b/gcc/testsuite/gfortran.dg/sibling_dummy_procedure_1.f90 index 2c7acbe1ba5..c632c5b1b15 100644 --- a/gcc/testsuite/gfortran.dg/sibling_dummy_procedure_1.f90 +++ b/gcc/testsuite/gfortran.dg/sibling_dummy_procedure_1.f90 @@ -30,3 +30,5 @@ contains call bar(self, z) end subroutine end + +! { dg-final { cleanup-modules "foo" } } diff --git a/gcc/testsuite/gfortran.dg/sibling_dummy_procedure_2.f90 b/gcc/testsuite/gfortran.dg/sibling_dummy_procedure_2.f90 index 042666016f7..3bd3164995b 100644 --- a/gcc/testsuite/gfortran.dg/sibling_dummy_procedure_2.f90 +++ b/gcc/testsuite/gfortran.dg/sibling_dummy_procedure_2.f90 @@ -30,3 +30,5 @@ contains call bar_(self, z) end subroutine end + +! { dg-final { cleanup-modules "foo" } } diff --git a/gcc/testsuite/gfortran.dg/sibling_dummy_procedure_3.f90 b/gcc/testsuite/gfortran.dg/sibling_dummy_procedure_3.f90 index 5f1391edb60..21bdceead95 100644 --- a/gcc/testsuite/gfortran.dg/sibling_dummy_procedure_3.f90 +++ b/gcc/testsuite/gfortran.dg/sibling_dummy_procedure_3.f90 @@ -16,3 +16,5 @@ module ice end subroutine bar end subroutine foo end module + +! { dg-final { cleanup-modules "ice" } } diff --git a/gcc/testsuite/gfortran.dg/substr_1.f90 b/gcc/testsuite/gfortran.dg/substr_1.f90 index 15ab390f906..a811d9688cc 100644 --- a/gcc/testsuite/gfortran.dg/substr_1.f90 +++ b/gcc/testsuite/gfortran.dg/substr_1.f90 @@ -11,3 +11,4 @@ character(4) :: b b = a end +! { dg-final { cleanup-modules "m" } } diff --git a/gcc/testsuite/gfortran.dg/substring_equivalence.f90 b/gcc/testsuite/gfortran.dg/substring_equivalence.f90 index 1a01024bc11..9a94bcddf72 100644 --- a/gcc/testsuite/gfortran.dg/substring_equivalence.f90 +++ b/gcc/testsuite/gfortran.dg/substring_equivalence.f90 @@ -6,3 +6,5 @@ module FLAGS character :: at, dev equivalence ( encodings(1:1),at ), ( encodings(2:2),dev) end module FLAGS + +! { dg-final { cleanup-modules "FLAGS" } } diff --git a/gcc/testsuite/gfortran.dg/tl_editing.f90 b/gcc/testsuite/gfortran.dg/tl_editing.f90 index ea86873a726..d2a7ede436f 100644 --- a/gcc/testsuite/gfortran.dg/tl_editing.f90 +++ b/gcc/testsuite/gfortran.dg/tl_editing.f90 @@ -27,6 +27,7 @@ program tl_editting rewind(10) read(10, '(a)') s if (s.ne.cline) call abort + close(10, status='delete') end program tl_editting diff --git a/gcc/testsuite/gfortran.dg/transfer_array_intrinsic_1.f90 b/gcc/testsuite/gfortran.dg/transfer_array_intrinsic_1.f90 new file mode 100644 index 00000000000..0d828efa66b --- /dev/null +++ b/gcc/testsuite/gfortran.dg/transfer_array_intrinsic_1.f90 @@ -0,0 +1,23 @@ +! { dg-do run } +! Tests the patch to implement the array version of the TRANSFER +! intrinsic (PR17298). + +! test the PR is fixed. + + call test1 () + +contains + + subroutine test1 () + complex(4) :: z = (1.0, 2.0) + real(4) :: cmp(2), a(4, 4) + integer(2) :: it(4, 2, 4), jt(32) + +! The PR testcase. + + cmp = transfer (z, cmp) * 2.0 + if (any (cmp .ne. (/2.0, 4.0/))) call abort () + + end subroutine test1 + +end diff --git a/gcc/testsuite/gfortran.dg/transfer_array_intrinsic_2.f90 b/gcc/testsuite/gfortran.dg/transfer_array_intrinsic_2.f90 new file mode 100644 index 00000000000..aaa10f8a4f5 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/transfer_array_intrinsic_2.f90 @@ -0,0 +1,119 @@ +! { dg-do run } +! Tests the patch to implement the array version of the TRANSFER +! intrinsic (PR17298). +! Contributed by Paul Thomas + +! Bigendian test posted by Perseus in comp.lang.fortran on 4 July 2005. +! Original had parameter but this fails, at present, if is_gimple_var with -Ox, x>0 + + LOGICAL :: bigend + integer :: icheck = 1 + + character(8) :: ch(2) = (/"lmnoPQRS","LMNOpqrs"/) + + bigend = IACHAR(TRANSFER(icheck,"a")) == 0 + +! tests numeric transfers other than original testscase. + + call test1 () + +! tests numeric/character transfers. + + call test2 () + +! Test dummies, automatic objects and assumed character length. + + call test3 (ch, ch, ch, 8) + +contains + + subroutine test1 () + real(4) :: a(4, 4) + integer(2) :: it(4, 2, 4), jt(32) + +! Check multi-dimensional sources and that transfer works as an actual +! argument of reshape. + + a = reshape ((/(rand (), i = 1, 16)/), (/4,4/)) + jt = transfer (a, it) + it = reshape (jt, (/4, 2, 4/)) + if (any (reshape (transfer (it, a), (/4,4/)) .ne. a)) call abort () + + end subroutine test1 + + subroutine test2 () + integer(4) :: y(4), z(2) + character(4) :: ch(4) + +! Allow for endian-ness + if (bigend) then + y = (/(i + 3 + ishft (i + 2, 8) + ishft (i + 1, 16) & + + ishft (i, 24), i = 65, 80 , 4)/) + else + y = (/(i + ishft (i + 1, 8) + ishft (i + 2, 16) & + + ishft (i + 3, 24), i = 65, 80 , 4)/) + end if + +! Check source array sections in both directions. + + ch = "wxyz" + ch(1:2) = transfer (y(2:4:2), ch) + if (any (ch(1:2) .ne. (/"EFGH","MNOP"/))) call abort () + ch = "wxyz" + ch(1:2) = transfer (y(4:2:-2), ch) + if (any (ch(1:2) .ne. (/"MNOP","EFGH"/))) call abort () + +! Check that a complete array transfers with size absent. + + ch = transfer (y, ch) + if (any (ch .ne. (/"ABCD","EFGH","IJKL","MNOP"/))) call abort () + +! Check that a character array section is OK + + z = transfer (ch(2:3), y) + if (any (z .ne. y(2:3))) call abort () + +! Check dest array sections in both directions. + + ch = "wxyz" + ch(3:4) = transfer (y, ch, 2) + if (any (ch(3:4) .ne. (/"ABCD","EFGH"/))) call abort () + ch = "wxyz" + ch(3:2:-1) = transfer (y, ch, 2) + if (any (ch(2:3) .ne. (/"EFGH","ABCD"/))) call abort () + +! Make sure that character to numeric is OK. + + ch = "wxyz" + ch(1:2) = transfer (y, ch, 2) + if (any (ch(1:2) .ne. (/"ABCD","EFGH"/))) call abort () + + z = transfer (ch, y) + if (any (y(1:2) .ne. z)) call abort () + + end subroutine test2 + + subroutine test3 (ch1, ch2, ch3, clen) + integer clen + character(8) :: ch1(:) + character(*) :: ch2(2) + character(clen) :: ch3(2) + character(8) :: cntrl(2) = (/"lmnoPQRS","LMNOpqrs"/) + integer(8) :: ic(2) + ic = transfer (cntrl, ic) + +! Check assumed shape. + + if (any (ic .ne. transfer (ch1, ic))) call abort () + +! Check assumed character length. + + if (any (ic .ne. transfer (ch2, ic))) call abort () + +! Check automatic character length. + + if (any (ic .ne. transfer (ch3, ic))) call abort () + + end subroutine test3 + +end diff --git a/gcc/testsuite/gfortran.dg/transpose_reshape_r10.f90 b/gcc/testsuite/gfortran.dg/transpose_reshape_r10.f90 new file mode 100644 index 00000000000..83da8faeb1c --- /dev/null +++ b/gcc/testsuite/gfortran.dg/transpose_reshape_r10.f90 @@ -0,0 +1,12 @@ +! { dg-do run } +! { dg-require-effective-target fortran_large_real } +program main + integer,parameter :: k = selected_real_kind (precision (0.0_8) + 1) + character(len=90) line + real(k) :: a(3,3) + real(k) :: b(9) + a = 1.0_k + a(1,3) = 0.0_k + write (line,'(9G10.6)') transpose(a) + write (line,'(9G10.6)') reshape(a,shape(b)) +end diff --git a/gcc/testsuite/gfortran.dg/unf_io_convert_1.f90 b/gcc/testsuite/gfortran.dg/unf_io_convert_1.f90 index 8c4ec9c3723..5fe47c28ef0 100644 --- a/gcc/testsuite/gfortran.dg/unf_io_convert_1.f90 +++ b/gcc/testsuite/gfortran.dg/unf_io_convert_1.f90 @@ -85,11 +85,11 @@ program main else call abort endif - ! use hexdump to look at the file "fort.9" - if (debug) then - close(9) - else - close(9,status='DELETE') - endif end if + ! use hexdump to look at the file "fort.9" + if (debug) then + close(9) + else + close(9,status='DELETE') + endif end program main diff --git a/gcc/testsuite/gfortran.dg/unf_io_convert_2.f90 b/gcc/testsuite/gfortran.dg/unf_io_convert_2.f90 index 42bad3ee30f..f29f6ee249e 100644 --- a/gcc/testsuite/gfortran.dg/unf_io_convert_2.f90 +++ b/gcc/testsuite/gfortran.dg/unf_io_convert_2.f90 @@ -35,5 +35,6 @@ program main backspace 10 read (10) j if (j /= Z'5566770011223344') call abort + close (10, status="delete") end program main diff --git a/gcc/testsuite/gfortran.dg/use_allocated_1.f90 b/gcc/testsuite/gfortran.dg/use_allocated_1.f90 index fb51502edc2..e590f6a9561 100644 --- a/gcc/testsuite/gfortran.dg/use_allocated_1.f90 +++ b/gcc/testsuite/gfortran.dg/use_allocated_1.f90 @@ -16,3 +16,5 @@ subroutine init use foo if (.not.allocated(bar)) call abort end subroutine init + +! { dg-final { cleanup-modules "foo" } } diff --git a/gcc/testsuite/gfortran.dg/used_dummy_types_1.f90 b/gcc/testsuite/gfortran.dg/used_dummy_types_1.f90 index 9d034a680da..0cf01bb50e2 100644 --- a/gcc/testsuite/gfortran.dg/used_dummy_types_1.f90 +++ b/gcc/testsuite/gfortran.dg/used_dummy_types_1.f90 @@ -33,4 +33,6 @@ end module atest call init () call test (res) if (res%a.ne.42) call abort -end \ No newline at end of file +end + +! { dg-final { cleanup-modules "mtyp atest" } } diff --git a/gcc/testsuite/gfortran.dg/used_dummy_types_2.f90 b/gcc/testsuite/gfortran.dg/used_dummy_types_2.f90 index f12d2864d0b..a47cabc430c 100644 --- a/gcc/testsuite/gfortran.dg/used_dummy_types_2.f90 +++ b/gcc/testsuite/gfortran.dg/used_dummy_types_2.f90 @@ -30,3 +30,5 @@ contains v = x%f2(:) end subroutine foo end module mod2 + +! { dg-final { cleanup-modules "mod1 mod2" } } diff --git a/gcc/testsuite/gfortran.dg/used_dummy_types_3.f90 b/gcc/testsuite/gfortran.dg/used_dummy_types_3.f90 index b252e45471f..5bc4523dd8d 100644 --- a/gcc/testsuite/gfortran.dg/used_dummy_types_3.f90 +++ b/gcc/testsuite/gfortran.dg/used_dummy_types_3.f90 @@ -34,3 +34,4 @@ CALL TEST(x) ! { dg-error "Type/rank mismatch in argument" } END +! { dg-final { cleanup-modules "T1 T2" } } diff --git a/gcc/testsuite/gfortran.dg/used_dummy_types_4.f90 b/gcc/testsuite/gfortran.dg/used_dummy_types_4.f90 index 98b5905d478..4bc7c386895 100644 --- a/gcc/testsuite/gfortran.dg/used_dummy_types_4.f90 +++ b/gcc/testsuite/gfortran.dg/used_dummy_types_4.f90 @@ -99,3 +99,4 @@ contains end subroutine foo END +! { dg-final { cleanup-modules "global" } } diff --git a/gcc/testsuite/gfortran.dg/used_dummy_types_5.f90 b/gcc/testsuite/gfortran.dg/used_dummy_types_5.f90 index b8b15e00950..2000c3271fc 100644 --- a/gcc/testsuite/gfortran.dg/used_dummy_types_5.f90 +++ b/gcc/testsuite/gfortran.dg/used_dummy_types_5.f90 @@ -83,3 +83,4 @@ contains end subroutine foo END +! { dg-final { cleanup-modules "global" } } diff --git a/gcc/testsuite/gfortran.dg/used_interface_ref.f90 b/gcc/testsuite/gfortran.dg/used_interface_ref.f90 index d4a9c96edac..3e0290c9714 100644 --- a/gcc/testsuite/gfortran.dg/used_interface_ref.f90 +++ b/gcc/testsuite/gfortran.dg/used_interface_ref.f90 @@ -43,6 +43,5 @@ REAL :: solveCConvert(1:anzKomponenten) solveCConvert = (/(real(i), i = 1, anzKomponenten)/) END FUNCTION solveCConvert - - +! { dg-final { cleanup-modules "MODULE_CONC MODULE_THERMOCALC" } } diff --git a/gcc/testsuite/gfortran.dg/used_types_1.f90 b/gcc/testsuite/gfortran.dg/used_types_1.f90 index 61356ab2c56..4fbd328910e 100644 --- a/gcc/testsuite/gfortran.dg/used_types_1.f90 +++ b/gcc/testsuite/gfortran.dg/used_types_1.f90 @@ -19,3 +19,5 @@ CONTAINS mtpcar%coo='a' !ICE was here END SUBROUTINE str_clan END MODULE + +! { dg-final { cleanup-modules "testcase tp_trace" } } diff --git a/gcc/testsuite/gfortran.dg/userdef_operator_1.f90 b/gcc/testsuite/gfortran.dg/userdef_operator_1.f90 index 5bf99d04acd..e8af3720afd 100644 --- a/gcc/testsuite/gfortran.dg/userdef_operator_1.f90 +++ b/gcc/testsuite/gfortran.dg/userdef_operator_1.f90 @@ -33,3 +33,4 @@ program opshape end program opshape +! { dg-final { cleanup-modules "geometry" } } diff --git a/gcc/testsuite/gfortran.dg/write_back.f b/gcc/testsuite/gfortran.dg/write_back.f index b9e21afccee..2776d20b87c 100644 --- a/gcc/testsuite/gfortran.dg/write_back.f +++ b/gcc/testsuite/gfortran.dg/write_back.f @@ -20,5 +20,6 @@ read(11, end=250)idata call abort() 250 continue + close(11, status="delete") end diff --git a/gcc/testsuite/gfortran.dg/write_direct_eor.f90 b/gcc/testsuite/gfortran.dg/write_direct_eor.f90 new file mode 100644 index 00000000000..9044642df82 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/write_direct_eor.f90 @@ -0,0 +1,12 @@ +! { dg-do run } +! PR26509 : Writing beyond fixed length direct access records. +! Test case derived from PR. +! Submitted by Jerry Delisle . +program testrecl + implicit none + open(unit = 10, form = 'unformatted', access = 'direct', recl = 4) + write(unit=10,rec=1, err=100) 1d0 + call abort() + 100 continue + close(unit=10, status='delete') + end diff --git a/gcc/testsuite/gfortran.fortran-torture/compile/pr26806.f90 b/gcc/testsuite/gfortran.fortran-torture/compile/pr26806.f90 new file mode 100644 index 00000000000..fad5e9d5676 --- /dev/null +++ b/gcc/testsuite/gfortran.fortran-torture/compile/pr26806.f90 @@ -0,0 +1,11 @@ +module solv_cap + integer, private, save :: Ng1=0, Ng2=0 +contains + subroutine FourirG(G) + real, intent(in out), dimension(0:,0:) :: G + complex, allocatable, dimension(:,:) :: t + allocate( t(0:2*Ng1-1,0:2*Ng2-1) ) + t(0:Ng1,0:Ng2-1) = G(:,0:Ng2-1) ! Fill one quadrant (one extra row) + t(0:Ng1,Ng2:2*Ng2-1) = G(:,Ng2:1:-1) ! This quadrant using symmetry + end subroutine FourirG +end module solv_cap diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/direct_io.f90 b/gcc/testsuite/gfortran.fortran-torture/execute/direct_io.f90 index b8078f03d5e..deba9a6bfa5 100644 --- a/gcc/testsuite/gfortran.fortran-torture/execute/direct_io.f90 +++ b/gcc/testsuite/gfortran.fortran-torture/execute/direct_io.f90 @@ -13,6 +13,7 @@ CALL ABORT ENDIF ENDDO + CLOSE(10,STATUS='DELETE') STOP 10 CONTINUE ! PRINT*,' ERR= RETURN FROM READ OR WRITE' diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/equiv_5.f b/gcc/testsuite/gfortran.fortran-torture/execute/equiv_5.f new file mode 100644 index 00000000000..b20797ee3f7 --- /dev/null +++ b/gcc/testsuite/gfortran.fortran-torture/execute/equiv_5.f @@ -0,0 +1,225 @@ +C This testcase was miscompiled on i?86/x86_64, the scheduler +C swapped write to DMACH(1) with following read from SMALL(1), +C at -O2+, as the front-end didn't signal in any way this kind +C of type punning is ok. +C The testcase is from blas, http://www.netlib.org/blas/d1mach.f + + DOUBLE PRECISION FUNCTION D1MACH(I) + INTEGER I +C +C DOUBLE-PRECISION MACHINE CONSTANTS +C D1MACH( 1) = B**(EMIN-1), THE SMALLEST POSITIVE MAGNITUDE. +C D1MACH( 2) = B**EMAX*(1 - B**(-T)), THE LARGEST MAGNITUDE. +C D1MACH( 3) = B**(-T), THE SMALLEST RELATIVE SPACING. +C D1MACH( 4) = B**(1-T), THE LARGEST RELATIVE SPACING. +C D1MACH( 5) = LOG10(B) +C + INTEGER SMALL(2) + INTEGER LARGE(2) + INTEGER RIGHT(2) + INTEGER DIVER(2) + INTEGER LOG10(2) + INTEGER SC, CRAY1(38), J + COMMON /D9MACH/ CRAY1 + SAVE SMALL, LARGE, RIGHT, DIVER, LOG10, SC + DOUBLE PRECISION DMACH(5) + EQUIVALENCE (DMACH(1),SMALL(1)) + EQUIVALENCE (DMACH(2),LARGE(1)) + EQUIVALENCE (DMACH(3),RIGHT(1)) + EQUIVALENCE (DMACH(4),DIVER(1)) + EQUIVALENCE (DMACH(5),LOG10(1)) +C THIS VERSION ADAPTS AUTOMATICALLY TO MOST CURRENT MACHINES. +C R1MACH CAN HANDLE AUTO-DOUBLE COMPILING, BUT THIS VERSION OF +C D1MACH DOES NOT, BECAUSE WE DO NOT HAVE QUAD CONSTANTS FOR +C MANY MACHINES YET. +C TO COMPILE ON OLDER MACHINES, ADD A C IN COLUMN 1 +C ON THE NEXT LINE + DATA SC/0/ +C AND REMOVE THE C FROM COLUMN 1 IN ONE OF THE SECTIONS BELOW. +C CONSTANTS FOR EVEN OLDER MACHINES CAN BE OBTAINED BY +C mail netlib@research.bell-labs.com +C send old1mach from blas +C PLEASE SEND CORRECTIONS TO dmg OR ehg@bell-labs.com. +C +C MACHINE CONSTANTS FOR THE HONEYWELL DPS 8/70 SERIES. +C DATA SMALL(1),SMALL(2) / O402400000000, O000000000000 / +C DATA LARGE(1),LARGE(2) / O376777777777, O777777777777 / +C DATA RIGHT(1),RIGHT(2) / O604400000000, O000000000000 / +C DATA DIVER(1),DIVER(2) / O606400000000, O000000000000 / +C DATA LOG10(1),LOG10(2) / O776464202324, O117571775714 /, SC/987/ +C +C MACHINE CONSTANTS FOR PDP-11 FORTRANS SUPPORTING +C 32-BIT INTEGERS. +C DATA SMALL(1),SMALL(2) / 8388608, 0 / +C DATA LARGE(1),LARGE(2) / 2147483647, -1 / +C DATA RIGHT(1),RIGHT(2) / 612368384, 0 / +C DATA DIVER(1),DIVER(2) / 620756992, 0 / +C DATA LOG10(1),LOG10(2) / 1067065498, -2063872008 /, SC/987/ +C +C MACHINE CONSTANTS FOR THE UNIVAC 1100 SERIES. +C DATA SMALL(1),SMALL(2) / O000040000000, O000000000000 / +C DATA LARGE(1),LARGE(2) / O377777777777, O777777777777 / +C DATA RIGHT(1),RIGHT(2) / O170540000000, O000000000000 / +C DATA DIVER(1),DIVER(2) / O170640000000, O000000000000 / +C DATA LOG10(1),LOG10(2) / O177746420232, O411757177572 /, SC/987/ +C +C ON FIRST CALL, IF NO DATA UNCOMMENTED, TEST MACHINE TYPES. + IF (SC .NE. 987) THEN + DMACH(1) = 1.D13 + IF ( SMALL(1) .EQ. 1117925532 + * .AND. SMALL(2) .EQ. -448790528) THEN +* *** IEEE BIG ENDIAN *** + SMALL(1) = 1048576 + SMALL(2) = 0 + LARGE(1) = 2146435071 + LARGE(2) = -1 + RIGHT(1) = 1017118720 + RIGHT(2) = 0 + DIVER(1) = 1018167296 + DIVER(2) = 0 + LOG10(1) = 1070810131 + LOG10(2) = 1352628735 + ELSE IF ( SMALL(2) .EQ. 1117925532 + * .AND. SMALL(1) .EQ. -448790528) THEN +* *** IEEE LITTLE ENDIAN *** + SMALL(2) = 1048576 + SMALL(1) = 0 + LARGE(2) = 2146435071 + LARGE(1) = -1 + RIGHT(2) = 1017118720 + RIGHT(1) = 0 + DIVER(2) = 1018167296 + DIVER(1) = 0 + LOG10(2) = 1070810131 + LOG10(1) = 1352628735 + ELSE IF ( SMALL(1) .EQ. -2065213935 + * .AND. SMALL(2) .EQ. 10752) THEN +* *** VAX WITH D_FLOATING *** + SMALL(1) = 128 + SMALL(2) = 0 + LARGE(1) = -32769 + LARGE(2) = -1 + RIGHT(1) = 9344 + RIGHT(2) = 0 + DIVER(1) = 9472 + DIVER(2) = 0 + LOG10(1) = 546979738 + LOG10(2) = -805796613 + ELSE IF ( SMALL(1) .EQ. 1267827943 + * .AND. SMALL(2) .EQ. 704643072) THEN +* *** IBM MAINFRAME *** + SMALL(1) = 1048576 + SMALL(2) = 0 + LARGE(1) = 2147483647 + LARGE(2) = -1 + RIGHT(1) = 856686592 + RIGHT(2) = 0 + DIVER(1) = 873463808 + DIVER(2) = 0 + LOG10(1) = 1091781651 + LOG10(2) = 1352628735 + ELSE IF ( SMALL(1) .EQ. 1120022684 + * .AND. SMALL(2) .EQ. -448790528) THEN +* *** CONVEX C-1 *** + SMALL(1) = 1048576 + SMALL(2) = 0 + LARGE(1) = 2147483647 + LARGE(2) = -1 + RIGHT(1) = 1019215872 + RIGHT(2) = 0 + DIVER(1) = 1020264448 + DIVER(2) = 0 + LOG10(1) = 1072907283 + LOG10(2) = 1352628735 + ELSE IF ( SMALL(1) .EQ. 815547074 + * .AND. SMALL(2) .EQ. 58688) THEN +* *** VAX G-FLOATING *** + SMALL(1) = 16 + SMALL(2) = 0 + LARGE(1) = -32769 + LARGE(2) = -1 + RIGHT(1) = 15552 + RIGHT(2) = 0 + DIVER(1) = 15568 + DIVER(2) = 0 + LOG10(1) = 1142112243 + LOG10(2) = 2046775455 + ELSE + DMACH(2) = 1.D27 + 1 + DMACH(3) = 1.D27 + LARGE(2) = LARGE(2) - RIGHT(2) + IF (LARGE(2) .EQ. 64 .AND. SMALL(2) .EQ. 0) THEN + CRAY1(1) = 67291416 + DO 10 J = 1, 20 + CRAY1(J+1) = CRAY1(J) + CRAY1(J) + 10 CONTINUE + CRAY1(22) = CRAY1(21) + 321322 + DO 20 J = 22, 37 + CRAY1(J+1) = CRAY1(J) + CRAY1(J) + 20 CONTINUE + IF (CRAY1(38) .EQ. SMALL(1)) THEN +* *** CRAY *** + CALL I1MCRY(SMALL(1), J, 8285, 8388608, 0) + SMALL(2) = 0 + CALL I1MCRY(LARGE(1), J, 24574, 16777215, 16777215) + CALL I1MCRY(LARGE(2), J, 0, 16777215, 16777214) + CALL I1MCRY(RIGHT(1), J, 16291, 8388608, 0) + RIGHT(2) = 0 + CALL I1MCRY(DIVER(1), J, 16292, 8388608, 0) + DIVER(2) = 0 + CALL I1MCRY(LOG10(1), J, 16383, 10100890, 8715215) + CALL I1MCRY(LOG10(2), J, 0, 16226447, 9001388) + ELSE + WRITE(*,9000) + STOP 779 + END IF + ELSE + WRITE(*,9000) + STOP 779 + END IF + END IF + SC = 987 + END IF +* SANITY CHECK + IF (DMACH(4) .GE. 1.0D0) STOP 778 + IF (I .LT. 1 .OR. I .GT. 5) THEN + WRITE(*,*) 'D1MACH(I): I =',I,' is out of bounds.' + STOP + END IF + D1MACH = DMACH(I) + RETURN + 9000 FORMAT(/' Adjust D1MACH by uncommenting data statements'/ + *' appropriate for your machine.') +* /* Standard C source for D1MACH -- remove the * in column 1 */ +*#include +*#include +*#include +*double d1mach_(long *i) +*{ +* switch(*i){ +* case 1: return DBL_MIN; +* case 2: return DBL_MAX; +* case 3: return DBL_EPSILON/FLT_RADIX; +* case 4: return DBL_EPSILON; +* case 5: return log10((double)FLT_RADIX); +* } +* fprintf(stderr, "invalid argument: d1mach(%ld)\n", *i); +* exit(1); return 0; /* some compilers demand return values */ +*} + END + SUBROUTINE I1MCRY(A, A1, B, C, D) +**** SPECIAL COMPUTATION FOR OLD CRAY MACHINES **** + INTEGER A, A1, B, C, D + A1 = 16777216*B + C + A = 16777216*A1 + D + END + + PROGRAM MAIN + DOUBLE PRECISION D1MACH + EXTERNAL D1MACH + PRINT *,D1MACH(1) + PRINT *,D1MACH(2) + PRINT *,D1MACH(3) + PRINT *,D1MACH(4) + PRINT *,D1MACH(5) + END diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/inquire_1.f90 b/gcc/testsuite/gfortran.fortran-torture/execute/inquire_1.f90 index 492f74476d3..8deb6b863b5 100644 --- a/gcc/testsuite/gfortran.fortran-torture/execute/inquire_1.f90 +++ b/gcc/testsuite/gfortran.fortran-torture/execute/inquire_1.f90 @@ -5,4 +5,5 @@ INQUIRE(UNIT=9,ACCESS=ACCESS,BLANK=BLANK) IF(BLANK.NE.'NULL') CALL ABORT IF(ACCESS.NE.'SEQUENTIAL') CALL ABORT + CLOSE(UNIT=9,STATUS='DELETE') END diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/inquire_2.f90 b/gcc/testsuite/gfortran.fortran-torture/execute/inquire_2.f90 index bc7ea74c39a..48105170248 100644 --- a/gcc/testsuite/gfortran.fortran-torture/execute/inquire_2.f90 +++ b/gcc/testsuite/gfortran.fortran-torture/execute/inquire_2.f90 @@ -3,4 +3,5 @@ OPEN(FILE='CSEQ', UNIT=23) INQUIRE(FILE='CSEQ',NUMBER=UNIT) IF (UNIT.NE.23) CALL ABORT + CLOSE(UNIT, STATUS='DELETE') END diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/inquire_3.f90 b/gcc/testsuite/gfortran.fortran-torture/execute/inquire_3.f90 index 8967dcfbc0f..29d25812ab2 100644 --- a/gcc/testsuite/gfortran.fortran-torture/execute/inquire_3.f90 +++ b/gcc/testsuite/gfortran.fortran-torture/execute/inquire_3.f90 @@ -9,5 +9,6 @@ INQUIRE(UNIT=9,NEXTREC=NREC) IF (NREC.NE.2) CALL ABORT ! PRINT*,NREC + CLOSE(UNIT=9,STATUS='DELETE') END diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/inquire_4.f90 b/gcc/testsuite/gfortran.fortran-torture/execute/inquire_4.f90 index 5b94ad232bc..2fa69cc3f9f 100644 --- a/gcc/testsuite/gfortran.fortran-torture/execute/inquire_4.f90 +++ b/gcc/testsuite/gfortran.fortran-torture/execute/inquire_4.f90 @@ -16,5 +16,6 @@ ! PRINT*,'NEXTREC RETURNED ',J,' EXPECTED 4' CALL ABORT ENDIF + CLOSE(UNIT=10,STATUS='DELETE') END diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/list_read_1.f90 b/gcc/testsuite/gfortran.fortran-torture/execute/list_read_1.f90 index 040ae72d8e0..0a20b4bde83 100644 --- a/gcc/testsuite/gfortran.fortran-torture/execute/list_read_1.f90 +++ b/gcc/testsuite/gfortran.fortran-torture/execute/list_read_1.f90 @@ -50,4 +50,5 @@ if (x(i,k).ne.y(i,k)) call abort end do end do + close(nin, status='delete') end program d diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/open_replace.f90 b/gcc/testsuite/gfortran.fortran-torture/execute/open_replace.f90 index 1d8ac4ba787..11d0d09461a 100644 --- a/gcc/testsuite/gfortran.fortran-torture/execute/open_replace.f90 +++ b/gcc/testsuite/gfortran.fortran-torture/execute/open_replace.f90 @@ -2,4 +2,5 @@ ! open with 'REPLACE' creates the file if it does not exist. PROGRAM iobug OPEN(UNIT=10,FILE='gfcoutput.txt',status='REPLACE') + CLOSE(10,status='DELETE') END PROGRAM iobug diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/slash_edit.f90 b/gcc/testsuite/gfortran.fortran-torture/execute/slash_edit.f90 index c73d5432a31..29f44a7dd4e 100644 --- a/gcc/testsuite/gfortran.fortran-torture/execute/slash_edit.f90 +++ b/gcc/testsuite/gfortran.fortran-torture/execute/slash_edit.f90 @@ -8,7 +8,7 @@ OPEN(7) 200 FORMAT(I4,///I4) READ(7,200)I,J - CLOSE(7) + CLOSE(7, STATUS='DELETE') IF (I.NE.1) CALL ABORT IF (J.NE.4) CALL ABORT END diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/unopened_unit_1.f90 b/gcc/testsuite/gfortran.fortran-torture/execute/unopened_unit_1.f90 index d87406ab4db..66895b02af1 100644 --- a/gcc/testsuite/gfortran.fortran-torture/execute/unopened_unit_1.f90 +++ b/gcc/testsuite/gfortran.fortran-torture/execute/unopened_unit_1.f90 @@ -9,5 +9,6 @@ program unopened_unit_1 Read(99,*)J If (J.ne.I) Call abort End Do + Close(99, Status='Delete') End program diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp index 2b668eb8e3a..e0640d8a0fc 100644 --- a/gcc/testsuite/lib/gcc-dg.exp +++ b/gcc/testsuite/lib/gcc-dg.exp @@ -404,6 +404,13 @@ proc cleanup-saved-temps { } { } } +# Remove files for specified Fortran modules. +proc cleanup-modules { modlist } { + foreach modname $modlist { + remove-build-file [string tolower $modname].mod + } +} + # We need to make sure that additional_* are cleared out after every # test. It is not enough to clear them out *before* the next test run # because gcc-target-compile gets run directly from some .exp files diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 05aae8fe0a2..40f06982897 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -61,6 +61,26 @@ proc current_target_name { } { return $answer } +# Implement an effective-target check for property PROP by invoking +# the compiler and seeing if it prints any messages. Assume that the +# property holds if the compiler doesn't print anything. The other +# arguments are as for get_compiler_messages, starting with TYPE. +proc check_no_compiler_messages {prop args} { + global et_cache + + set target [current_target_name] + if {![info exists et_cache($prop,target)] + || $et_cache($prop,target) != $target} { + verbose "check_effective_target $prop: compiling source for $target" 2 + set et_cache($prop,target) $target + set et_cache($prop,value) \ + [string match "" [eval get_compiler_messages $prop $args]] + } + set value $et_cache($prop,value) + verbose "check_effective_target $prop: returning $value for $target" 2 + return $value +} + ############################### # proc check_weak_available { } ############################### @@ -127,7 +147,6 @@ proc check_weak_available { } { # The argument is the kind of visibility, default/protected/hidden/internal. proc check_visibility_available { what_kind } { - global visibility_available_saved global tool global target_triplet @@ -138,27 +157,10 @@ proc check_visibility_available { what_kind } { if [string match "" $what_kind] { set what_kind "hidden" } - if { [info exists visibility_available_saved] } { - verbose "Saved result is <$visibility_available_saved>" 1 - if { [ lsearch -exact $visibility_available_saved $what_kind ] != -1 } { - return 1 - } elseif { [ lsearch -exact $visibility_available_saved "!$what_kind" ] != -1 } { - return 0 - } - } - - set lines [get_compiler_messages visibility object " + return [check_no_compiler_messages visibility_available_$what_kind object " void f() __attribute__((visibility(\"$what_kind\"))); void f() {} "] - if [string match "" $lines] then { - set answer 1 - lappend visibility_available_saved $what_kind - } else { - set answer 0 - lappend visibility_available_saved "!$what_kind" - } - return $answer } ############################### @@ -311,6 +313,31 @@ proc check_profiling_available { test_what } { return $profiling_available_saved } +# Return 1 if target has packed layout of structure members by +# default, 0 otherwise. Note that this is slightly different than +# whether the target has "natural alignment": both attributes may be +# false. + +proc check_effective_target_default_packed { } { + return [check_no_compiler_messages default_packed assembly { + struct x { char a; long b; } c; + int s[sizeof (c) == sizeof (char) + sizeof (long) ? 1 : -1]; + }] +} + +# Return 1 if target has PCC_BITFIELD_TYPE_MATTERS defined. See +# documentation, where the test also comes from. + +proc check_effective_target_pcc_bitfield_type_matters { } { + # PCC_BITFIELD_TYPE_MATTERS isn't just about unnamed or empty + # bitfields, but let's stick to the example code from the docs. + return [check_no_compiler_messages pcc_bitfield_type_matters assembly { + struct foo1 { char x; char :0; char y; }; + struct foo2 { char x; int :0; char y; }; + int s[sizeof (struct foo1) != sizeof (struct foo2) ? 1 : -1]; + }] +} + # Return 1 if thread local storage (TLS) is supported, 0 otherwise. # # This won't change for different subtargets so cache the result. @@ -389,88 +416,41 @@ proc check_effective_target_tls_runtime {} { return $et_tls_runtime_saved } +# Return 1 if compilation with -fopenmp is error-free for trivial +# code, 0 otherwise. + +proc check_effective_target_fopenmp {} { + return [check_no_compiler_messages fopenmp object { + void foo (void) { } + } "-fopenmp"] +} + # Return 1 if compilation with -freorder-blocks-and-partition is error-free # for trivial code, 0 otherwise. proc check_effective_target_freorder {} { - global et_freorder_saved - global et_freorder_target_name - - if { ![info exists et_freorder_target_name] } { - set et_freorder_target_name "" - } - - # If the target has changed since we set the cached value, clear it. - set current_target [current_target_name] - if { $current_target != $et_freorder_target_name } { - verbose "check_effective_target_freorder: `$et_freorder_target_name'" 2 - set et_freorder_target_name $current_target - if [info exists et_freorder_saved] { - verbose "check_effective_target_freorder: removing cached result" 2 - unset et_freorder_saved - } - } - - if [info exists et_freorder_saved] { - verbose "check_effective_target_freorder: using cached result" 2 - } else { - verbose "check_effective_target_freorder: compiling source" 2 - - set et_freorder_saved [string match "" [get_compiler_messages freorder object { - void foo (void) { } - } "-freorder-blocks-and-partition"]] - } - verbose "check_effective_target_freorder: returning $et_freorder_saved" 2 - return $et_freorder_saved + return [check_no_compiler_messages freorder object { + void foo (void) { } + } "-freorder-blocks-and-partition"] } # Return 1 if -fpic and -fPIC are supported, as in no warnings or errors # emitted, 0 otherwise. Whether a shared library can actually be built is # out of scope for this test. -# -# When the target name changes, replace the cached result. proc check_effective_target_fpic { } { - global et_fpic_saved - global et_fpic_target_name - - if { ![info exists et_fpic_target_name] } { - set et_fpic_target_name "" - } - - # If the target has changed since we set the cached value, clear it. - set current_target [current_target_name] - if { $current_target != $et_fpic_target_name } { - verbose "check_effective_target_fpic: `$et_fpic_target_name'" 2 - set et_fpic_target_name $current_target - if [info exists et_fpic_saved] { - verbose "check_effective_target_fpic: removing cached result" 2 - unset et_fpic_saved - } - } - - if [info exists et_fpic_saved] { - verbose "check_effective_target_fpic: using cached result" 2 - } else { - verbose "check_effective_target_fpic: compiling source" 2 - - # Note that M68K has a multilib that supports -fpic but not - # -fPIC, so we need to check both. We test with a program that - # requires GOT references. - set et_fpic_saved [string match "" [get_compiler_messages fpic object { + # Note that M68K has a multilib that supports -fpic but not + # -fPIC, so we need to check both. We test with a program that + # requires GOT references. + foreach arg {fpic fPIC} { + if [check_no_compiler_messages $arg object { extern int foo (void); extern int bar; int baz (void) { return foo () + bar; } - } "-fpic"]] - - if { $et_fpic_saved != 0 } { - set et_fpic_saved [string match "" [get_compiler_messages fpic object { - extern int foo (void); extern int bar; - int baz (void) { return foo () + bar; } - } "-fPIC"]] + } "-$arg"] { + return 1 } } - verbose "check_effective_target_fpic: returning $et_fpic_saved" 2 - return $et_fpic_saved + return 0 } # Return true if iconv is supported on the target. In particular IBM1047. @@ -518,16 +498,11 @@ proc check_iconv_available { test_what } { } # Return true if named sections are supported on this target. -# This proc does not cache results, because the answer may vary -# when cycling over subtarget options (e.g. irix o32/n32/n64) in -# the same test run. + proc check_named_sections_available { } { - verbose "check_named_sections_available: compiling source" 2 - set answer [string match "" [get_compiler_messages named assembly { + return [check_no_compiler_messages named_sections assembly { int __attribute__ ((section("whatever"))) foo; - }]] - verbose "check_named_sections_available: returning $answer" 2 - return $answer + }] } # Return 1 if the target supports Fortran real kinds larger than real(8), @@ -942,74 +917,24 @@ proc check_mkfifo_available {} { # Return 1 if we're generating 32-bit code using default options, 0 # otherwise. -# -# When the target name changes, replace the cached result. proc check_effective_target_ilp32 { } { - global et_ilp32_saved - global et_ilp32_target_name - - if { ![info exists et_ilp32_target_name] } { - set et_ilp32_target_name "" - } - - # If the target has changed since we set the cached value, clear it. - set current_target [current_target_name] - if { $current_target != $et_ilp32_target_name } { - verbose "check_effective_target_ilp32: `$et_ilp32_target_name' `$current_target'" 2 - set et_ilp32_target_name $current_target - if { [info exists et_ilp32_saved] } { - verbose "check_effective_target_ilp32: removing cached result" 2 - unset et_ilp32_saved - } - } - - if [info exists et_ilp32_saved] { - verbose "check-effective_target_ilp32: using cached result" 2 - } else { - verbose "check_effective_target_ilp32: compiling source" 2 - set et_ilp32_saved [string match "" [get_compiler_messages ilp32 object { - int dummy[(sizeof (int) == 4 && sizeof (void *) == 4 && sizeof (long) == 4 ) ? 1 : -1]; - }]] - } - verbose "check_effective_target_ilp32: returning $et_ilp32_saved" 2 - return $et_ilp32_saved + return [check_no_compiler_messages ilp32 object { + int dummy[sizeof (int) == 4 + && sizeof (void *) == 4 + && sizeof (long) == 4 ? 1 : -1]; + }] } # Return 1 if we're generating 64-bit code using default options, 0 # otherwise. -# -# When the target name changes, replace the cached result. proc check_effective_target_lp64 { } { - global et_lp64_saved - global et_lp64_target_name - - if { ![info exists et_lp64_target_name] } { - set et_lp64_target_name "" - } - - # If the target has changed since we set the cached value, clear it. - set current_target [current_target_name] - if { $current_target != $et_lp64_target_name } { - verbose "check_effective_target_lp64: `$et_lp64_target_name' `$current_target'" 2 - set et_lp64_target_name $current_target - if [info exists et_lp64_saved] { - verbose "check_effective_target_lp64: removing cached result" 2 - unset et_lp64_saved - } - } - - if [info exists et_lp64_saved] { - verbose "check_effective_target_lp64: using cached result" 2 - } else { - verbose "check_effective_target_lp64: compiling source" 2 - set et_lp64_saved [string match "" [get_compiler_messages lp64 object { - int dummy[(sizeof (int) == 4 && sizeof (void *) == 8 && sizeof (long) == 8 ) ? 1 : -1]; - }]] - } - verbose "check_effective_target_lp64: returning $et_lp64_saved" 2 - return $et_lp64_saved + return [check_no_compiler_messages lp64 object { + int dummy[sizeof (int) == 4 + && sizeof (void *) == 8 + && sizeof (long) == 8 ? 1 : -1]; + }] } # Return 1 if the target supports compiling decimal floating point, @@ -1684,38 +1609,9 @@ proc is-effective-target-keyword { arg } { # Return 1 if target default to short enums proc check_effective_target_short_enums { } { - global et_short_enums_saved - global et_short_enums_target_name - - if { ![info exists et_short_enums_target_name] } { - set et_short_enums_target_name "" - } - - # If the target has changed since we set the cached value, clear it. - set current_target [current_target_name] - if { $current_target != $et_short_enums_target_name } { - verbose "check_effective_target_short_enums: `$et_short_enums_target_name'" 2 - set et_short_enums_target_name $current_target - if [info exists et_short_enums_saved] { - verbose "check_effective_target_short_enums: removing cached result" 2 - unset et_short_enums_saved - } - } - - if [info exists et_short_enums_saved] { - verbose "check_effective_target_short_enums: using cached result" 2 - } else { - verbose "check_effective_target_short_enums: compiling source" 2 - - # PCC_BITFIELD_TYPE_MATTERS isn't just about unnamed or empty - # bitfields, but let's stick to the example code from the docs. - set et_short_enums_saved \ - [string match "" [get_compiler_messages short_enums assembly { - enum foo { bar }; - int s[sizeof (enum foo) == 1 ? 1 : -1]; - } ]] - } - verbose "check_effective_target_short_enums: returning $et_short_enums_saved" 2 - return $et_short_enums_saved + return [check_no_compiler_messages short_enums assembly { + enum foo { bar }; + int s[sizeof (enum foo) == 1 ? 1 : -1]; + }] } diff --git a/gcc/testsuite/obj-c++.dg/dwarf-2.mm b/gcc/testsuite/obj-c++.dg/dwarf-2.mm new file mode 100644 index 00000000000..46ab5bb428f --- /dev/null +++ b/gcc/testsuite/obj-c++.dg/dwarf-2.mm @@ -0,0 +1,3 @@ +/* { dg-options "-gdwarf-2 -dA" } */ +/* { dg-final { scan-assembler "0x11\[^0-9a-f\].*DW_AT_language" } } */ +int x; diff --git a/gcc/testsuite/objc.dg/dwarf-1.m b/gcc/testsuite/objc.dg/dwarf-1.m index c427da9dd65..70146ec22c4 100644 --- a/gcc/testsuite/objc.dg/dwarf-1.m +++ b/gcc/testsuite/objc.dg/dwarf-1.m @@ -1,5 +1,6 @@ /* { dg-options "-gdwarf-2 -dA" } */ /* { dg-final { scan-assembler "\"id.0\".*DW_AT_name" } } */ +/* { dg-skip-if "No Dwarf" { *-*-aix* } { "*" } { "" } } */ @interface foo id x; @end diff --git a/gcc/testsuite/objc.dg/dwarf-2.m b/gcc/testsuite/objc.dg/dwarf-2.m new file mode 100644 index 00000000000..211d794871d --- /dev/null +++ b/gcc/testsuite/objc.dg/dwarf-2.m @@ -0,0 +1,4 @@ +/* { dg-options "-gdwarf-2 -dA" } */ +/* { dg-final { scan-assembler "0x10\[^0-9a-f\].*DW_AT_language" } } */ +/* { dg-skip-if "No Dwarf" { *-*-aix* } { "*" } { "" } } */ +int x; diff --git a/gcc/testsuite/objc.dg/objc-nofilename-1.m b/gcc/testsuite/objc.dg/objc-nofilename-1.m index 0bd49ff6d7f..21e0c53b70e 100644 --- a/gcc/testsuite/objc.dg/objc-nofilename-1.m +++ b/gcc/testsuite/objc.dg/objc-nofilename-1.m @@ -1,5 +1,6 @@ /* Test to make sure that file name does not appear in the binary. */ -/* { dg-do compile } */ +/* { dg-do compile { target *-*-darwin* } } */ + #include @interface Foo { Class isa; } @end diff --git a/gcc/timevar.def b/gcc/timevar.def index 38376bf1bbe..cf366353ead 100644 --- a/gcc/timevar.def +++ b/gcc/timevar.def @@ -87,6 +87,7 @@ DEFTIMEVAR (TV_TREE_SSA_DOMINATOR_OPTS , "dominator optimization") DEFTIMEVAR (TV_TREE_SRA , "tree SRA") DEFTIMEVAR (TV_TREE_STORE_CCP , "tree STORE-CCP") DEFTIMEVAR (TV_TREE_CCP , "tree CCP") +DEFTIMEVAR (TV_TREE_PHI_CPROP , "tree PHI const/copy prop") DEFTIMEVAR (TV_TREE_SPLIT_EDGES , "tree split crit edges") DEFTIMEVAR (TV_TREE_REASSOC , "tree reassociation") DEFTIMEVAR (TV_TREE_PRE , "tree PRE") diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index b7f147ce77f..a62331b56d8 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -1,5 +1,6 @@ /* Control flow functions for trees. - Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. @@ -99,11 +100,10 @@ static void factor_computed_gotos (void); /* Edges. */ static void make_edges (void); -static void make_ctrl_stmt_edges (basic_block); -static void make_exit_edges (basic_block); static void make_cond_expr_edges (basic_block); static void make_switch_expr_edges (basic_block); static void make_goto_expr_edges (basic_block); +static void make_omp_sections_edges (basic_block); static edge tree_redirect_edge_and_branch (edge, basic_block); static edge tree_try_redirect_by_replacing_jump (edge, basic_block); static unsigned int split_critical_edges (void); @@ -455,30 +455,99 @@ make_edges (void) /* Traverse the basic block array placing edges. */ FOR_EACH_BB (bb) { - tree first = first_stmt (bb); tree last = last_stmt (bb); + bool fallthru; - if (first) + if (last) { - /* Edges for statements that always alter flow control. */ - if (is_ctrl_stmt (last)) - make_ctrl_stmt_edges (bb); + switch (TREE_CODE (last)) + { + case GOTO_EXPR: + make_goto_expr_edges (bb); + fallthru = false; + break; + case RETURN_EXPR: + make_edge (bb, EXIT_BLOCK_PTR, 0); + fallthru = false; + break; + case COND_EXPR: + make_cond_expr_edges (bb); + fallthru = false; + break; + case SWITCH_EXPR: + make_switch_expr_edges (bb); + fallthru = false; + break; + case RESX_EXPR: + make_eh_edges (last); + fallthru = false; + break; + + case CALL_EXPR: + /* If this function receives a nonlocal goto, then we need to + make edges from this call site to all the nonlocal goto + handlers. */ + if (TREE_SIDE_EFFECTS (last) + && current_function_has_nonlocal_label) + make_goto_expr_edges (bb); + + /* If this statement has reachable exception handlers, then + create abnormal edges to them. */ + make_eh_edges (last); + + /* Some calls are known not to return. */ + fallthru = !(call_expr_flags (last) & ECF_NORETURN); + break; + + case MODIFY_EXPR: + if (is_ctrl_altering_stmt (last)) + { + /* A MODIFY_EXPR may have a CALL_EXPR on its RHS and the + CALL_EXPR may have an abnormal edge. Search the RHS for + this case and create any required edges. */ + tree op = get_call_expr_in (last); + if (op && TREE_SIDE_EFFECTS (op) + && current_function_has_nonlocal_label) + make_goto_expr_edges (bb); + + make_eh_edges (last); + } + fallthru = true; + break; - /* Edges for statements that sometimes alter flow control. */ - if (is_ctrl_altering_stmt (last)) - make_exit_edges (bb); + case OMP_PARALLEL: + case OMP_FOR: + case OMP_SINGLE: + case OMP_MASTER: + case OMP_ORDERED: + case OMP_CRITICAL: + case OMP_SECTION: + fallthru = true; + break; + + case OMP_RETURN_EXPR: + /* In the case of an OMP_SECTION, we may have already made + an edge in make_omp_sections_edges. */ + fallthru = EDGE_COUNT (bb->succs) == 0; + break; + + case OMP_SECTIONS: + make_omp_sections_edges (bb); + fallthru = false; + break; + + default: + gcc_assert (!stmt_ends_bb_p (last)); + fallthru = true; + } } + else + fallthru = true; - /* Finally, if no edges were created above, this is a regular - basic block that only needs a fallthru edge. */ - if (EDGE_COUNT (bb->succs) == 0) + if (fallthru) make_edge (bb, bb->next_bb, EDGE_FALLTHRU); } - /* We do not care about fake edges, so remove any that the CFG - builder inserted for completeness. */ - remove_fake_exit_edges (); - /* Fold COND_EXPR_COND of each COND_EXPR. */ fold_cond_expr_cond (); @@ -505,7 +574,7 @@ make_omp_sections_edges (basic_block bb) { basic_block start_bb = bb_for_stmt (TREE_VEC_ELT (vec, i)); basic_block end_bb = bb_for_stmt (TREE_VEC_ELT (vec, i + 1)); - make_edge (bb, start_bb, EDGE_ABNORMAL); + make_edge (bb, start_bb, 0); make_edge (end_bb, exit_bb, EDGE_FALLTHRU); } @@ -516,130 +585,6 @@ make_omp_sections_edges (basic_block bb) OMP_SECTIONS_SECTIONS (stmt) = NULL_TREE; } - - -/* Create edges for control statement at basic block BB. */ - -static void -make_ctrl_stmt_edges (basic_block bb) -{ - tree last = last_stmt (bb); - - gcc_assert (last); - switch (TREE_CODE (last)) - { - case GOTO_EXPR: - make_goto_expr_edges (bb); - break; - - case RETURN_EXPR: - make_edge (bb, EXIT_BLOCK_PTR, 0); - break; - - case COND_EXPR: - make_cond_expr_edges (bb); - break; - - case SWITCH_EXPR: - make_switch_expr_edges (bb); - break; - - case RESX_EXPR: - make_eh_edges (last); - /* Yet another NORETURN hack. */ - if (EDGE_COUNT (bb->succs) == 0) - make_edge (bb, EXIT_BLOCK_PTR, EDGE_FAKE); - break; - - default: - gcc_unreachable (); - } -} - - -/* Create exit edges for statements in block BB that alter the flow of - control. Statements that alter the control flow are 'goto', 'return' - and calls to non-returning functions. */ - -static void -make_exit_edges (basic_block bb) -{ - tree last = last_stmt (bb), op; - - gcc_assert (last); - switch (TREE_CODE (last)) - { - case RESX_EXPR: - break; - case CALL_EXPR: - /* If this function receives a nonlocal goto, then we need to - make edges from this call site to all the nonlocal goto - handlers. */ - if (TREE_SIDE_EFFECTS (last) - && current_function_has_nonlocal_label) - make_goto_expr_edges (bb); - - /* If this statement has reachable exception handlers, then - create abnormal edges to them. */ - make_eh_edges (last); - - /* Some calls are known not to return. For such calls we create - a fake edge. - - We really need to revamp how we build edges so that it's not - such a bloody pain to avoid creating edges for this case since - all we do is remove these edges when we're done building the - CFG. */ - if (call_expr_flags (last) & ECF_NORETURN) - { - make_edge (bb, EXIT_BLOCK_PTR, EDGE_FAKE); - return; - } - - /* Don't forget the fall-thru edge. */ - make_edge (bb, bb->next_bb, EDGE_FALLTHRU); - break; - - case MODIFY_EXPR: - /* A MODIFY_EXPR may have a CALL_EXPR on its RHS and the CALL_EXPR - may have an abnormal edge. Search the RHS for this case and - create any required edges. */ - op = get_call_expr_in (last); - if (op && TREE_SIDE_EFFECTS (op) - && current_function_has_nonlocal_label) - make_goto_expr_edges (bb); - - make_eh_edges (last); - make_edge (bb, bb->next_bb, EDGE_FALLTHRU); - break; - - case OMP_PARALLEL: - case OMP_FOR: - case OMP_SINGLE: - case OMP_MASTER: - case OMP_ORDERED: - case OMP_CRITICAL: - make_edge (bb, bb->next_bb, EDGE_ABNORMAL); - - case OMP_RETURN_EXPR: - if (EDGE_COUNT (bb->succs) == 0) - make_edge (bb, bb->next_bb, EDGE_FALLTHRU); - break; - - case OMP_SECTIONS: - make_omp_sections_edges (bb); - break; - - case OMP_SECTION: - make_edge (bb, bb->next_bb, EDGE_FALLTHRU); - break; - - default: - gcc_unreachable (); - } -} - - /* Create the edges for a COND_EXPR starting at block BB. At this point, both clauses must contain only simple gotos. */ @@ -887,7 +832,7 @@ make_goto_expr_edges (basic_block bb) { tree goto_t; basic_block target_bb; - int for_call; + bool for_call; block_stmt_iterator last = bsi_last (bb); goto_t = bsi_stmt (last); @@ -896,11 +841,11 @@ make_goto_expr_edges (basic_block bb) CALL_EXPR or MODIFY_EXPR), then the edge is an abnormal edge resulting from a nonlocal goto. */ if (TREE_CODE (goto_t) != GOTO_EXPR) - for_call = 1; + for_call = true; else { tree dest = GOTO_DESTINATION (goto_t); - for_call = 0; + for_call = false; /* A GOTO to a local label creates normal edges. */ if (simple_goto_p (goto_t)) @@ -939,21 +884,17 @@ make_goto_expr_edges (basic_block bb) if ( /* Computed GOTOs. Make an edge to every label block that has been marked as a potential target for a computed goto. */ - (FORCED_LABEL (LABEL_EXPR_LABEL (target)) && for_call == 0) + (FORCED_LABEL (LABEL_EXPR_LABEL (target)) && !for_call) /* Nonlocal GOTO target. Make an edge to every label block that has been marked as a potential target for a nonlocal goto. */ - || (DECL_NONLOCAL (LABEL_EXPR_LABEL (target)) && for_call == 1)) + || (DECL_NONLOCAL (LABEL_EXPR_LABEL (target)) && for_call)) { make_edge (bb, target_bb, EDGE_ABNORMAL); break; } } } - - /* Degenerate case of computed goto with no labels. */ - if (!for_call && EDGE_COUNT (bb->succs) == 0) - make_edge (bb, EXIT_BLOCK_PTR, EDGE_FAKE); } @@ -4591,6 +4532,7 @@ struct move_stmt_d tree from_context; tree to_context; bitmap vars_to_remove; + htab_t new_label_map; bool remap_decls_p; }; @@ -4599,39 +4541,62 @@ struct move_stmt_d variable referenced in *TP. */ static tree -move_stmt_r (tree *tp, int *walk_subtrees ATTRIBUTE_UNUSED, void *data) +move_stmt_r (tree *tp, int *walk_subtrees, void *data) { struct move_stmt_d *p = (struct move_stmt_d *) data; + tree t = *tp; - if (p->block && IS_EXPR_CODE_CLASS (TREE_CODE_CLASS (TREE_CODE (*tp)))) - TREE_BLOCK (*tp) = p->block; + if (p->block && IS_EXPR_CODE_CLASS (TREE_CODE_CLASS (TREE_CODE (t)))) + TREE_BLOCK (t) = p->block; - if (OMP_DIRECTIVE_P (*tp)) + if (OMP_DIRECTIVE_P (t) && TREE_CODE (t) != OMP_RETURN_EXPR) { /* Do not remap variables inside OMP directives. Variables referenced in clauses and directive header belong to the parent function and should not be moved into the child function. */ + bool save_remap_decls_p = p->remap_decls_p; p->remap_decls_p = false; - } + *walk_subtrees = 0; + + walk_tree (&OMP_BODY (t), move_stmt_r, p, NULL); - if (p->remap_decls_p - && DECL_P (*tp) - && DECL_CONTEXT (*tp) == p->from_context) + p->remap_decls_p = save_remap_decls_p; + } + else if (DECL_P (t) && DECL_CONTEXT (t) == p->from_context) { - DECL_CONTEXT (*tp) = p->to_context; + if (TREE_CODE (t) == LABEL_DECL) + { + if (p->new_label_map) + { + struct tree_map in, *out; + in.from = t; + out = htab_find_with_hash (p->new_label_map, &in, DECL_UID (t)); + if (out) + *tp = t = out->to; + } - if (TREE_CODE (*tp) == VAR_DECL) + DECL_CONTEXT (t) = p->to_context; + } + else if (p->remap_decls_p) { - struct function *f = DECL_STRUCT_FUNCTION (p->to_context); - f->unexpanded_var_list = tree_cons (0, *tp, f->unexpanded_var_list); + DECL_CONTEXT (t) = p->to_context; - /* Mark *TP to be removed from the original function, - otherwise it will be given a DECL_RTL when the original - function is expanded. */ - bitmap_set_bit (p->vars_to_remove, DECL_UID (*tp)); + if (TREE_CODE (t) == VAR_DECL) + { + struct function *f = DECL_STRUCT_FUNCTION (p->to_context); + f->unexpanded_var_list + = tree_cons (0, t, f->unexpanded_var_list); + + /* Mark T to be removed from the original function, + otherwise it will be given a DECL_RTL when the + original function is expanded. */ + bitmap_set_bit (p->vars_to_remove, DECL_UID (t)); + } } } + else if (TYPE_P (t)) + *walk_subtrees = 0; return NULL_TREE; } @@ -4650,7 +4615,7 @@ move_stmt_r (tree *tp, int *walk_subtrees ATTRIBUTE_UNUSED, void *data) static void move_block_to_fn (struct function *dest_cfun, basic_block bb, basic_block after, bool update_edge_count_p, - bitmap vars_to_remove) + bitmap vars_to_remove, htab_t new_label_map, int eh_offset) { struct control_flow_graph *cfg; edge_iterator ei; @@ -4701,10 +4666,12 @@ move_block_to_fn (struct function *dest_cfun, basic_block bb, for (si = bsi_start (bb); !bsi_end_p (si); bsi_next (&si)) { tree stmt = bsi_stmt (si); + int region; d.from_context = cfun->decl; d.to_context = dest_cfun->decl; d.remap_decls_p = true; + d.new_label_map = new_label_map; if (TREE_BLOCK (stmt)) d.block = DECL_INITIAL (dest_cfun->decl); @@ -4736,11 +4703,66 @@ move_block_to_fn (struct function *dest_cfun, basic_block bb, if (uid >= dest_cfun->last_label_uid) dest_cfun->last_label_uid = uid + 1; } + else if (TREE_CODE (stmt) == RESX_EXPR && eh_offset != 0) + TREE_OPERAND (stmt, 0) = + build_int_cst (NULL_TREE, + TREE_INT_CST_LOW (TREE_OPERAND (stmt, 0)) + + eh_offset); + + region = lookup_stmt_eh_region (stmt); + if (region >= 0) + { + add_stmt_to_eh_region_fn (dest_cfun, stmt, region + eh_offset); + remove_stmt_from_eh_region (stmt); + } + } +} + +/* Examine the statements in BB (which is in SRC_CFUN); find and return + the outermost EH region. Use REGION as the incoming base EH region. */ - remove_stmt_from_eh_region (stmt); +static int +find_outermost_region_in_block (struct function *src_cfun, + basic_block bb, int region) +{ + block_stmt_iterator si; + + for (si = bsi_start (bb); !bsi_end_p (si); bsi_next (&si)) + { + tree stmt = bsi_stmt (si); + int stmt_region; + + stmt_region = lookup_stmt_eh_region_fn (src_cfun, stmt); + if (stmt_region > 0 + && (region < 0 || eh_region_outer_p (src_cfun, stmt_region, region))) + region = stmt_region; } + + return region; } +static tree +new_label_mapper (tree decl, void *data) +{ + htab_t hash = (htab_t) data; + struct tree_map *m; + void **slot; + + gcc_assert (TREE_CODE (decl) == LABEL_DECL); + + m = xmalloc (sizeof (struct tree_map)); + m->hash = DECL_UID (decl); + m->from = decl; + m->to = create_artificial_label (); + LABEL_DECL_UID (m->to) = LABEL_DECL_UID (decl); + + slot = htab_find_slot_with_hash (hash, m, m->hash, INSERT); + gcc_assert (*slot == NULL); + + *slot = m; + + return m->to; +} /* Move a single-entry, single-exit region delimited by ENTRY_BB and EXIT_BB to function DEST_CFUN. The whole region is replaced by a @@ -4763,11 +4785,12 @@ move_sese_region_to_fn (struct function *dest_cfun, basic_block entry_bb, VEC(basic_block,heap) *bbs; basic_block after, bb, *entry_pred, *exit_succ; struct function *saved_cfun; - int *entry_flag, *exit_flag; + int *entry_flag, *exit_flag, eh_offset; unsigned i, num_entry_edges, num_exit_edges; edge e; edge_iterator ei; bitmap vars_to_remove; + htab_t new_label_map; saved_cfun = cfun; @@ -4813,7 +4836,28 @@ move_sese_region_to_fn (struct function *dest_cfun, basic_block entry_bb, /* Switch context to the child function to initialize DEST_FN's CFG. */ gcc_assert (dest_cfun->cfg == NULL); cfun = dest_cfun; + init_empty_tree_cfg (); + + /* Initialize EH information for the new function. */ + eh_offset = 0; + new_label_map = NULL; + if (saved_cfun->eh) + { + int region = -1; + + for (i = 0; VEC_iterate (basic_block, bbs, i, bb); i++) + region = find_outermost_region_in_block (saved_cfun, bb, region); + + init_eh_for_function (); + if (region != -1) + { + new_label_map = htab_create (17, tree_map_hash, tree_map_eq, free); + eh_offset = duplicate_eh_regions (saved_cfun, new_label_mapper, + new_label_map, region, 0); + } + } + cfun = saved_cfun; /* Move blocks from BBS into DEST_CFUN. */ @@ -4825,10 +4869,14 @@ move_sese_region_to_fn (struct function *dest_cfun, basic_block entry_bb, /* No need to update edge counts on the last block. It has already been updated earlier when we detached the region from the original CFG. */ - move_block_to_fn (dest_cfun, bb, after, bb != exit_bb, vars_to_remove); + move_block_to_fn (dest_cfun, bb, after, bb != exit_bb, vars_to_remove, + new_label_map, eh_offset); after = bb; } + if (new_label_map) + htab_delete (new_label_map); + /* Remove the variables marked in VARS_TO_REMOVE from CFUN->UNEXPANDED_VAR_LIST. Otherwise, they will be given a DECL_RTL in the context of CFUN. */ diff --git a/gcc/tree-chrec.c b/gcc/tree-chrec.c index 8edc5b9bbec..cec8b7e0c80 100644 --- a/gcc/tree-chrec.c +++ b/gcc/tree-chrec.c @@ -32,7 +32,6 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include "tree.h" #include "real.h" #include "diagnostic.h" -#include "varray.h" #include "cfgloop.h" #include "tree-flow.h" #include "tree-chrec.h" @@ -64,7 +63,8 @@ chrec_fold_poly_cst (enum tree_code code, gcc_assert (cst); gcc_assert (TREE_CODE (poly) == POLYNOMIAL_CHREC); gcc_assert (!is_not_constant_evolution (cst)); - + gcc_assert (type == chrec_type (poly)); + switch (code) { case PLUS_EXPR: @@ -104,6 +104,8 @@ chrec_fold_plus_poly_poly (enum tree_code code, gcc_assert (poly1); gcc_assert (TREE_CODE (poly0) == POLYNOMIAL_CHREC); gcc_assert (TREE_CODE (poly1) == POLYNOMIAL_CHREC); + gcc_assert (chrec_type (poly0) == chrec_type (poly1)); + gcc_assert (type == chrec_type (poly0)); /* {a, +, b}_1 + {c, +, d}_2 -> {{a, +, b}_1 + c, +, d}_2, @@ -178,6 +180,8 @@ chrec_fold_multiply_poly_poly (tree type, gcc_assert (poly1); gcc_assert (TREE_CODE (poly0) == POLYNOMIAL_CHREC); gcc_assert (TREE_CODE (poly1) == POLYNOMIAL_CHREC); + gcc_assert (chrec_type (poly0) == chrec_type (poly1)); + gcc_assert (type == chrec_type (poly0)); /* {a, +, b}_1 * {c, +, d}_2 -> {c*{a, +, b}_1, +, d}_2, {a, +, b}_2 * {c, +, d}_1 -> {a*{c, +, d}_1, +, b}_2, @@ -247,10 +251,8 @@ chrec_fold_automatically_generated_operands (tree op0, /* Fold the addition of two chrecs. */ static tree -chrec_fold_plus_1 (enum tree_code code, - tree type, - tree op0, - tree op1) +chrec_fold_plus_1 (enum tree_code code, tree type, + tree op0, tree op1) { if (automatically_generated_chrec_p (op0) || automatically_generated_chrec_p (op1)) @@ -320,6 +322,10 @@ chrec_fold_plus (tree type, tree op0, tree op1) { + if (automatically_generated_chrec_p (op0) + || automatically_generated_chrec_p (op1)) + return chrec_fold_automatically_generated_operands (op0, op1); + if (integer_zerop (op0)) return op1; if (integer_zerop (op1)) @@ -335,6 +341,10 @@ chrec_fold_minus (tree type, tree op0, tree op1) { + if (automatically_generated_chrec_p (op0) + || automatically_generated_chrec_p (op1)) + return chrec_fold_automatically_generated_operands (op0, op1); + if (integer_zerop (op1)) return op0; @@ -584,7 +594,9 @@ chrec_replace_initial_condition (tree chrec, { if (automatically_generated_chrec_p (chrec)) return chrec; - + + gcc_assert (chrec_type (chrec) == chrec_type (init_cond)); + switch (TREE_CODE (chrec)) { case POLYNOMIAL_CHREC: @@ -730,6 +742,8 @@ reset_evolution_in_loop (unsigned loop_num, tree chrec, tree new_evol) { + gcc_assert (chrec_type (chrec) == chrec_type (new_evol)); + if (TREE_CODE (chrec) == POLYNOMIAL_CHREC && CHREC_VARIABLE (chrec) > loop_num) { @@ -769,7 +783,7 @@ chrec_merge (tree chrec1, if (chrec2 == chrec_not_analyzed_yet) return chrec1; - if (operand_equal_p (chrec1, chrec2, 0)) + if (eq_evolutions_p (chrec1, chrec2)) return chrec1; return chrec_dont_know; @@ -1242,17 +1256,6 @@ chrec_convert_aggressive (tree type, tree chrec) return build_polynomial_chrec (CHREC_VARIABLE (chrec), lc, rc); } -/* Returns the type of the chrec. */ - -tree -chrec_type (tree chrec) -{ - if (automatically_generated_chrec_p (chrec)) - return NULL_TREE; - - return TREE_TYPE (chrec); -} - /* Returns true when CHREC0 == CHREC1. */ bool @@ -1270,8 +1273,8 @@ eq_evolutions_p (tree chrec0, switch (TREE_CODE (chrec0)) { case INTEGER_CST: - return integer_zerop (fold (build2 (MINUS_EXPR, TREE_TYPE (chrec0), - chrec0, chrec1))); + return operand_equal_p (chrec0, chrec1, 0); + case POLYNOMIAL_CHREC: return (CHREC_VARIABLE (chrec0) == CHREC_VARIABLE (chrec1) && eq_evolutions_p (CHREC_LEFT (chrec0), CHREC_LEFT (chrec1)) diff --git a/gcc/tree-chrec.h b/gcc/tree-chrec.h index 55f6e978545..bc5c7782201 100644 --- a/gcc/tree-chrec.h +++ b/gcc/tree-chrec.h @@ -69,7 +69,6 @@ extern tree chrec_fold_minus (tree, tree, tree); extern tree chrec_fold_multiply (tree, tree, tree); extern tree chrec_convert (tree, tree, tree); extern tree chrec_convert_aggressive (tree, tree); -extern tree chrec_type (tree); /* Operations. */ extern tree chrec_apply (unsigned, tree, tree); @@ -106,6 +105,8 @@ build_polynomial_chrec (unsigned loop_num, || right == chrec_dont_know) return chrec_dont_know; + gcc_assert (TREE_TYPE (left) == TREE_TYPE (right)); + return build3 (POLYNOMIAL_CHREC, TREE_TYPE (left), build_int_cst (NULL_TREE, loop_num), left, right); } @@ -208,4 +209,16 @@ no_evolution_in_loop_p (tree chrec, unsigned loop_num, bool *res) return true; } +/* Returns the type of the chrec. */ + +static inline tree +chrec_type (tree chrec) +{ + if (automatically_generated_chrec_p (chrec)) + return NULL_TREE; + + return TREE_TYPE (chrec); +} + + #endif /* GCC_TREE_CHREC_H */ diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c index 2f0916be494..7f017141fd8 100644 --- a/gcc/tree-data-ref.c +++ b/gcc/tree-data-ref.c @@ -128,7 +128,9 @@ static struct data_reference * init_data_ref (tree, tree, tree, tree, bool, tree, tree, tree, tree, tree, struct ptr_info_def *, enum data_ref_type); - +static bool subscript_dependence_tester_1 (struct data_dependence_relation *, + struct data_reference *, + struct data_reference *); /* Determine if PTR and DECL may alias, the result is put in ALIASED. Return FALSE if there is no symbol memory tag for PTR. */ @@ -537,25 +539,26 @@ int_divides_p (int a, int b) /* Dump into FILE all the data references from DATAREFS. */ void -dump_data_references (FILE *file, - varray_type datarefs) +dump_data_references (FILE *file, VEC (data_reference_p, heap) *datarefs) { unsigned int i; - - for (i = 0; i < VARRAY_ACTIVE_SIZE (datarefs); i++) - dump_data_reference (file, VARRAY_GENERIC_PTR (datarefs, i)); + struct data_reference *dr; + + for (i = 0; VEC_iterate (data_reference_p, datarefs, i, dr); i++) + dump_data_reference (file, dr); } -/* Dump into FILE all the dependence relations from DDR. */ +/* Dump into FILE all the dependence relations from DDRS. */ void dump_data_dependence_relations (FILE *file, - varray_type ddr) + VEC (ddr_p, heap) *ddrs) { unsigned int i; - - for (i = 0; i < VARRAY_ACTIVE_SIZE (ddr); i++) - dump_data_dependence_relation (file, VARRAY_GENERIC_PTR (ddr, i)); + struct data_dependence_relation *ddr; + + for (i = 0; VEC_iterate (ddr_p, ddrs, i, ddr); i++) + dump_data_dependence_relation (file, ddr); } /* Dump function for a DATA_REFERENCE structure. */ @@ -666,6 +669,40 @@ print_direction_vector (FILE *outf, fprintf (outf, "\n"); } +/* Print a vector of direction vectors. */ + +void +print_dir_vectors (FILE *outf, VEC (lambda_vector, heap) *dir_vects, + int length) +{ + unsigned j; + lambda_vector v; + + for (j = 0; VEC_iterate (lambda_vector, dir_vects, j, v); j++) + print_direction_vector (outf, v, length); +} + +/* Print a vector of distance vectors. */ + +void +print_dist_vectors (FILE *outf, VEC (lambda_vector, heap) *dist_vects, + int length) +{ + unsigned j; + lambda_vector v; + + for (j = 0; VEC_iterate (lambda_vector, dist_vects, j, v); j++) + print_lambda_vector (outf, v, length); +} + +/* Debug version. */ + +void +debug_data_dependence_relation (struct data_dependence_relation *ddr) +{ + dump_data_dependence_relation (stderr, ddr); +} + /* Dump function for a DATA_DEPENDENCE_RELATION structure. */ void @@ -686,6 +723,7 @@ dump_data_dependence_relation (FILE *outf, else if (DDR_ARE_DEPENDENT (ddr) == NULL_TREE) { unsigned int i; + struct loop *loopi; for (i = 0; i < DDR_NUM_SUBSCRIPTS (ddr); i++) { @@ -696,18 +734,23 @@ dump_data_dependence_relation (FILE *outf, dump_subscript (outf, DDR_SUBSCRIPT (ddr, i)); } + fprintf (outf, " loop nest: ("); + for (i = 0; VEC_iterate (loop_p, DDR_LOOP_NEST (ddr), i, loopi); i++) + fprintf (outf, "%d ", loopi->num); + fprintf (outf, ")\n"); + for (i = 0; i < DDR_NUM_DIST_VECTS (ddr); i++) { fprintf (outf, " distance_vector: "); print_lambda_vector (outf, DDR_DIST_VECT (ddr, i), - DDR_SIZE_VECT (ddr)); + DDR_NB_LOOPS (ddr)); } for (i = 0; i < DDR_NUM_DIR_VECTS (ddr); i++) { fprintf (outf, " direction_vector: "); print_direction_vector (outf, DDR_DIR_VECT (ddr, i), - DDR_SIZE_VECT (ddr)); + DDR_NB_LOOPS (ddr)); } } @@ -761,52 +804,44 @@ dump_data_dependence_direction (FILE *file, considered nest. */ void -dump_dist_dir_vectors (FILE *file, varray_type ddrs) +dump_dist_dir_vectors (FILE *file, VEC (ddr_p, heap) *ddrs) { unsigned int i, j; + struct data_dependence_relation *ddr; + lambda_vector v; - for (i = 0; i < VARRAY_ACTIVE_SIZE (ddrs); i++) - { - struct data_dependence_relation *ddr = - (struct data_dependence_relation *) - VARRAY_GENERIC_PTR (ddrs, i); - if (DDR_ARE_DEPENDENT (ddr) == NULL_TREE - && DDR_AFFINE_P (ddr)) - { - for (j = 0; j < DDR_NUM_DIST_VECTS (ddr); j++) - { - fprintf (file, "DISTANCE_V ("); - print_lambda_vector (file, DDR_DIST_VECT (ddr, j), - DDR_SIZE_VECT (ddr)); - fprintf (file, ")\n"); - } + for (i = 0; VEC_iterate (ddr_p, ddrs, i, ddr); i++) + if (DDR_ARE_DEPENDENT (ddr) == NULL_TREE && DDR_AFFINE_P (ddr)) + { + for (j = 0; VEC_iterate (lambda_vector, DDR_DIST_VECTS (ddr), j, v); j++) + { + fprintf (file, "DISTANCE_V ("); + print_lambda_vector (file, v, DDR_NB_LOOPS (ddr)); + fprintf (file, ")\n"); + } + + for (j = 0; VEC_iterate (lambda_vector, DDR_DIR_VECTS (ddr), j, v); j++) + { + fprintf (file, "DIRECTION_V ("); + print_direction_vector (file, v, DDR_NB_LOOPS (ddr)); + fprintf (file, ")\n"); + } + } - for (j = 0; j < DDR_NUM_DIR_VECTS (ddr); j++) - { - fprintf (file, "DIRECTION_V ("); - print_direction_vector (file, DDR_DIR_VECT (ddr, j), - DDR_SIZE_VECT (ddr)); - fprintf (file, ")\n"); - } - } - } fprintf (file, "\n\n"); } /* Dumps the data dependence relations DDRS in FILE. */ void -dump_ddrs (FILE *file, varray_type ddrs) +dump_ddrs (FILE *file, VEC (ddr_p, heap) *ddrs) { unsigned int i; + struct data_dependence_relation *ddr; + + for (i = 0; VEC_iterate (ddr_p, ddrs, i, ddr); i++) + dump_data_dependence_relation (file, ddr); - for (i = 0; i < VARRAY_ACTIVE_SIZE (ddrs); i++) - { - struct data_dependence_relation *ddr = - (struct data_dependence_relation *) - VARRAY_GENERIC_PTR (ddrs, i); - dump_data_dependence_relation (file, ddr); - } fprintf (file, "\n\n"); } @@ -1908,8 +1943,8 @@ create_data_ref (tree memref, tree stmt, bool is_read) constant, type_size); } else - DR_INIT (dr) = init_cond = ssize_int (0);; - + DR_INIT (dr) = init_cond = ssize_int (0); + if (invariant) DR_OFFSET (dr) = invariant; else @@ -1935,6 +1970,8 @@ create_data_ref (tree memref, tree stmt, bool is_read) new_step = size_binop (TRUNC_DIV_EXPR, fold_convert (ssizetype, step), type_size); + init_cond = chrec_convert (chrec_type (access_fn), init_cond, stmt); + new_step = chrec_convert (chrec_type (access_fn), new_step, stmt); access_fn = chrec_replace_initial_condition (access_fn, init_cond); access_fn = reset_evolution_in_loop (loop->num, access_fn, new_step); @@ -1989,14 +2026,10 @@ all_chrecs_equal_p (tree chrec) int j; for (j = 0; j < TREE_VEC_LENGTH (chrec) - 1; j++) - { - tree chrec_j = TREE_VEC_ELT (chrec, j); - tree chrec_j_1 = TREE_VEC_ELT (chrec, j + 1); - if (!integer_zerop - (chrec_fold_minus - (integer_type_node, chrec_j, chrec_j_1))) - return false; - } + if (!eq_evolutions_p (TREE_VEC_ELT (chrec, j), + TREE_VEC_ELT (chrec, j + 1))) + return false; + return true; } @@ -2041,6 +2074,10 @@ compute_subscript_distance (struct data_dependence_relation *ddr) conflicts_b = TREE_VEC_ELT (conflicts_b, 0); } + conflicts_b = chrec_convert (integer_type_node, conflicts_b, + NULL_TREE); + conflicts_a = chrec_convert (integer_type_node, conflicts_a, + NULL_TREE); difference = chrec_fold_minus (integer_type_node, conflicts_b, conflicts_a); @@ -2060,7 +2097,7 @@ compute_subscript_distance (struct data_dependence_relation *ddr) static struct data_dependence_relation * initialize_data_dependence_relation (struct data_reference *a, struct data_reference *b, - int nb_loops) + VEC (loop_p, heap) *loop_nest) { struct data_dependence_relation *res; bool differ_p, known_dependence; @@ -2103,11 +2140,11 @@ initialize_data_dependence_relation (struct data_reference *a, DDR_ARE_DEPENDENT (res) = chrec_known; return res; } - + DDR_AFFINE_P (res) = true; DDR_ARE_DEPENDENT (res) = NULL_TREE; - DDR_SUBSCRIPTS_VECTOR_INIT (res, DR_NUM_DIMENSIONS (a)); - DDR_SIZE_VECT (res) = nb_loops; + DDR_SUBSCRIPTS (res) = VEC_alloc (subscript_p, heap, DR_NUM_DIMENSIONS (a)); + DDR_LOOP_NEST (res) = loop_nest; DDR_DIR_VECTS (res) = NULL; DDR_DIST_VECTS (res) = NULL; @@ -2120,9 +2157,9 @@ initialize_data_dependence_relation (struct data_reference *a, SUB_CONFLICTS_IN_B (subscript) = chrec_dont_know; SUB_LAST_CONFLICT (subscript) = chrec_dont_know; SUB_DISTANCE (subscript) = chrec_dont_know; - VARRAY_PUSH_GENERIC_PTR (DDR_SUBSCRIPTS (res), subscript); + VEC_safe_push (subscript_p, heap, DDR_SUBSCRIPTS (res), subscript); } - + return res; } @@ -2141,7 +2178,7 @@ finalize_ddr_dependent (struct data_dependence_relation *ddr, } DDR_ARE_DEPENDENT (ddr) = chrec; - varray_clear (DDR_SUBSCRIPTS (ddr)); + VEC_free (subscript_p, heap, DDR_SUBSCRIPTS (ddr)); } /* The dependence relation DDR cannot be represented by a distance @@ -2228,6 +2265,8 @@ analyze_ziv_subscript (tree chrec_a, if (dump_file && (dump_flags & TDF_DETAILS)) fprintf (dump_file, "(analyze_ziv_subscript \n"); + chrec_a = chrec_convert (integer_type_node, chrec_a, NULL_TREE); + chrec_b = chrec_convert (integer_type_node, chrec_b, NULL_TREE); difference = chrec_fold_minus (integer_type_node, chrec_a, chrec_b); switch (TREE_CODE (difference)) @@ -2301,7 +2340,11 @@ analyze_siv_subscript_cst_affine (tree chrec_a, tree *last_conflicts) { bool value0, value1, value2; - tree difference = chrec_fold_minus + tree difference; + + chrec_a = chrec_convert (integer_type_node, chrec_a, NULL_TREE); + chrec_b = chrec_convert (integer_type_node, chrec_b, NULL_TREE); + difference = chrec_fold_minus (integer_type_node, CHREC_LEFT (chrec_b), chrec_a); if (!chrec_is_positive (initial_condition (difference), &value0)) @@ -2619,32 +2662,52 @@ compute_overlap_steps_for_affine_1_2 (tree chrec_a, tree chrec_b, *overlaps_b = integer_zero_node; if (xz_p) { - TREE_VEC_ELT (*overlaps_a, 0) = - chrec_fold_plus (integer_type_node, TREE_VEC_ELT (*overlaps_a, 0), - overlaps_a_xz); - *overlaps_b = - chrec_fold_plus (integer_type_node, *overlaps_b, overlaps_b_xz); + tree t0 = chrec_convert (integer_type_node, + TREE_VEC_ELT (*overlaps_a, 0), NULL_TREE); + tree t1 = chrec_convert (integer_type_node, overlaps_a_xz, + NULL_TREE); + tree t2 = chrec_convert (integer_type_node, *overlaps_b, + NULL_TREE); + tree t3 = chrec_convert (integer_type_node, overlaps_b_xz, + NULL_TREE); + + TREE_VEC_ELT (*overlaps_a, 0) = chrec_fold_plus (integer_type_node, + t0, t1); + *overlaps_b = chrec_fold_plus (integer_type_node, t2, t3); *last_conflicts = last_conflicts_xz; } if (yz_p) { - TREE_VEC_ELT (*overlaps_a, 1) = - chrec_fold_plus (integer_type_node, TREE_VEC_ELT (*overlaps_a, 1), - overlaps_a_yz); - *overlaps_b = - chrec_fold_plus (integer_type_node, *overlaps_b, overlaps_b_yz); + tree t0 = chrec_convert (integer_type_node, + TREE_VEC_ELT (*overlaps_a, 1), NULL_TREE); + tree t1 = chrec_convert (integer_type_node, overlaps_a_yz, NULL_TREE); + tree t2 = chrec_convert (integer_type_node, *overlaps_b, NULL_TREE); + tree t3 = chrec_convert (integer_type_node, overlaps_b_yz, NULL_TREE); + + TREE_VEC_ELT (*overlaps_a, 1) = chrec_fold_plus (integer_type_node, + t0, t1); + *overlaps_b = chrec_fold_plus (integer_type_node, t2, t3); *last_conflicts = last_conflicts_yz; } if (xyz_p) { - TREE_VEC_ELT (*overlaps_a, 0) = - chrec_fold_plus (integer_type_node, TREE_VEC_ELT (*overlaps_a, 0), - overlaps_a_xyz); - TREE_VEC_ELT (*overlaps_a, 1) = - chrec_fold_plus (integer_type_node, TREE_VEC_ELT (*overlaps_a, 1), - overlaps_a_xyz); - *overlaps_b = - chrec_fold_plus (integer_type_node, *overlaps_b, overlaps_b_xyz); + tree t0 = chrec_convert (integer_type_node, + TREE_VEC_ELT (*overlaps_a, 0), NULL_TREE); + tree t1 = chrec_convert (integer_type_node, overlaps_a_xyz, + NULL_TREE); + tree t2 = chrec_convert (integer_type_node, + TREE_VEC_ELT (*overlaps_a, 1), NULL_TREE); + tree t3 = chrec_convert (integer_type_node, overlaps_a_xyz, + NULL_TREE); + tree t4 = chrec_convert (integer_type_node, *overlaps_b, NULL_TREE); + tree t5 = chrec_convert (integer_type_node, overlaps_b_xyz, + NULL_TREE); + + TREE_VEC_ELT (*overlaps_a, 0) = chrec_fold_plus (integer_type_node, + t0, t1); + TREE_VEC_ELT (*overlaps_a, 1) = chrec_fold_plus (integer_type_node, + t2, t3); + *overlaps_b = chrec_fold_plus (integer_type_node, t4, t5); *last_conflicts = last_conflicts_xyz; } } @@ -2672,12 +2735,11 @@ analyze_subscript_affine_affine (tree chrec_a, int init_a, init_b, gamma, gcd_alpha_beta; int tau1, tau2; lambda_matrix A, U, S; - tree difference = chrec_fold_minus (integer_type_node, chrec_a, chrec_b); - if (integer_zerop (difference)) + if (eq_evolutions_p (chrec_a, chrec_b)) { - /* The difference is equal to zero: the accessed index - overlaps for each iteration in the loop. */ + /* The accessed index overlaps for each iteration in the + loop. */ *overlaps_a = integer_zero_node; *overlaps_b = integer_zero_node; *last_conflicts = chrec_dont_know; @@ -2697,7 +2759,6 @@ analyze_subscript_affine_affine (tree chrec_a, there is no dependence. This function outputs a description of the iterations that hold the intersections. */ - nb_vars_a = nb_vars_in_chrec (chrec_a); nb_vars_b = nb_vars_in_chrec (chrec_b); @@ -2779,6 +2840,17 @@ analyze_subscript_affine_affine (tree chrec_a, } gcd_alpha_beta = S[0][0]; + /* Something went wrong: for example in {1, +, 0}_5 vs. {0, +, 0}_5, + but that is a quite strange case. Instead of ICEing, answer + don't know. */ + if (gcd_alpha_beta == 0) + { + *overlaps_a = chrec_dont_know; + *overlaps_b = chrec_dont_know; + *last_conflicts = chrec_dont_know; + goto end_analyze_subs_aa; + } + /* The classic "gcd-test". */ if (!int_divides_p (gcd_alpha_beta, gamma)) { @@ -2976,15 +3048,18 @@ end_analyze_subs_aa: static bool can_use_analyze_subscript_affine_affine (tree *chrec_a, tree *chrec_b) { - tree diff; + tree diff, type, left_a, left_b, right_b; if (chrec_contains_symbols (CHREC_RIGHT (*chrec_a)) || chrec_contains_symbols (CHREC_RIGHT (*chrec_b))) /* FIXME: For the moment not handled. Might be refined later. */ return false; - diff = chrec_fold_minus (chrec_type (*chrec_a), CHREC_LEFT (*chrec_a), - CHREC_LEFT (*chrec_b)); + type = chrec_type (*chrec_a); + left_a = CHREC_LEFT (*chrec_a); + left_b = chrec_convert (type, CHREC_LEFT (*chrec_b), NULL_TREE); + diff = chrec_fold_minus (type, left_a, left_b); + if (!evolution_function_is_constant_p (diff)) return false; @@ -2993,9 +3068,10 @@ can_use_analyze_subscript_affine_affine (tree *chrec_a, tree *chrec_b) *chrec_a = build_polynomial_chrec (CHREC_VARIABLE (*chrec_a), diff, CHREC_RIGHT (*chrec_a)); + right_b = chrec_convert (type, CHREC_RIGHT (*chrec_b), NULL_TREE); *chrec_b = build_polynomial_chrec (CHREC_VARIABLE (*chrec_b), - integer_zero_node, - CHREC_RIGHT (*chrec_b)); + build_int_cst (type, 0), + right_b); return true; } @@ -3144,10 +3220,12 @@ analyze_miv_subscript (tree chrec_a, dependence_stats.num_miv++; if (dump_file && (dump_flags & TDF_DETAILS)) fprintf (dump_file, "(analyze_miv_subscript \n"); - + + chrec_a = chrec_convert (integer_type_node, chrec_a, NULL_TREE); + chrec_b = chrec_convert (integer_type_node, chrec_b, NULL_TREE); difference = chrec_fold_minus (integer_type_node, chrec_a, chrec_b); - if (chrec_zerop (difference)) + if (eq_evolutions_p (chrec_a, chrec_b)) { /* Access functions are the same: all the elements are accessed in the same order. */ @@ -3311,35 +3389,79 @@ analyze_overlapping_iterations (tree chrec_a, } } - +/* Helper function for uniquely inserting distance vectors. */ -/* This section contains the affine functions dependences detector. */ +static void +save_dist_v (struct data_dependence_relation *ddr, lambda_vector dist_v) +{ + unsigned i; + lambda_vector v; -/* Compute the classic per loop distance vector. + for (i = 0; VEC_iterate (lambda_vector, DDR_DIST_VECTS (ddr), i, v); i++) + if (lambda_vector_equal (v, dist_v, DDR_NB_LOOPS (ddr))) + return; - DDR is the data dependence relation to build a vector from. - NB_LOOPS is the total number of loops we are considering. - FIRST_LOOP_DEPTH is the loop->depth of the first loop in the analyzed - loop nest. - Return FALSE when fail to represent the data dependence as a distance - vector. - Return TRUE otherwise. */ + VEC_safe_push (lambda_vector, heap, DDR_DIST_VECTS (ddr), dist_v); +} -static bool -build_classic_dist_vector (struct data_dependence_relation *ddr, - int first_loop_depth) +/* Helper function for uniquely inserting direction vectors. */ + +static void +save_dir_v (struct data_dependence_relation *ddr, lambda_vector dir_v) { unsigned i; - lambda_vector dist_v, init_v; - int nb_loops = DDR_SIZE_VECT (ddr); - bool init_b = false; - - DDR_SIZE_VECT (ddr) = nb_loops; - dist_v = lambda_vector_new (nb_loops); - init_v = lambda_vector_new (nb_loops); + lambda_vector v; - if (DDR_ARE_DEPENDENT (ddr) != NULL_TREE) - return true; + for (i = 0; VEC_iterate (lambda_vector, DDR_DIR_VECTS (ddr), i, v); i++) + if (lambda_vector_equal (v, dir_v, DDR_NB_LOOPS (ddr))) + return; + + VEC_safe_push (lambda_vector, heap, DDR_DIR_VECTS (ddr), dir_v); +} + +/* Add a distance of 1 on all the loops outer than INDEX. If we + haven't yet determined a distance for this outer loop, push a new + distance vector composed of the previous distance, and a distance + of 1 for this outer loop. Example: + + | loop_1 + | loop_2 + | A[10] + | endloop_2 + | endloop_1 + + Saved vectors are of the form (dist_in_1, dist_in_2). First, we + save (0, 1), then we have to save (1, 0). */ + +static void +add_outer_distances (struct data_dependence_relation *ddr, + lambda_vector dist_v, int index) +{ + /* For each outer loop where init_v is not set, the accesses are + in dependence of distance 1 in the loop. */ + while (--index >= 0) + { + lambda_vector save_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); + lambda_vector_copy (dist_v, save_v, DDR_NB_LOOPS (ddr)); + save_v[index] = 1; + save_dist_v (ddr, save_v); + } +} + +/* Return false when fail to represent the data dependence as a + distance vector. INIT_B is set to true when a component has been + added to the distance vector DIST_V. INDEX_CARRY is then set to + the index in DIST_V that carries the dependence. */ + +static bool +build_classic_dist_vector_1 (struct data_dependence_relation *ddr, + struct data_reference *ddr_a, + struct data_reference *ddr_b, + lambda_vector dist_v, bool *init_b, + int *index_carry) +{ + unsigned i; + lambda_vector init_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); for (i = 0; i < DDR_NUM_SUBSCRIPTS (ddr); i++) { @@ -3349,47 +3471,20 @@ build_classic_dist_vector (struct data_dependence_relation *ddr, if (chrec_contains_undetermined (SUB_DISTANCE (subscript))) { non_affine_dependence_relation (ddr); - return true; + return false; } - access_fn_a = DR_ACCESS_FN (DDR_A (ddr), i); - access_fn_b = DR_ACCESS_FN (DDR_B (ddr), i); + access_fn_a = DR_ACCESS_FN (ddr_a, i); + access_fn_b = DR_ACCESS_FN (ddr_b, i); if (TREE_CODE (access_fn_a) == POLYNOMIAL_CHREC && TREE_CODE (access_fn_b) == POLYNOMIAL_CHREC) { - int dist, loop_nb, loop_depth; - int loop_nb_a = CHREC_VARIABLE (access_fn_a); - int loop_nb_b = CHREC_VARIABLE (access_fn_b); - struct loop *loop_a = current_loops->parray[loop_nb_a]; - struct loop *loop_b = current_loops->parray[loop_nb_b]; - - /* If the loop for either variable is at a lower depth than - the first_loop's depth, then we can't possibly have a - dependency at this level of the loop. */ - - if (loop_a->depth < first_loop_depth - || loop_b->depth < first_loop_depth) - return false; - - if (loop_nb_a != loop_nb_b - && !flow_loop_nested_p (loop_a, loop_b) - && !flow_loop_nested_p (loop_b, loop_a)) - { - /* Example: when there are two consecutive loops, - - | loop_1 - | A[{0, +, 1}_1] - | endloop_1 - | loop_2 - | A[{0, +, 1}_2] - | endloop_2 - - the dependence relation cannot be captured by the - distance abstraction. */ - non_affine_dependence_relation (ddr); - return true; - } + int dist, index; + int index_a = index_in_loop_nest (CHREC_VARIABLE (access_fn_a), + DDR_LOOP_NEST (ddr)); + int index_b = index_in_loop_nest (CHREC_VARIABLE (access_fn_b), + DDR_LOOP_NEST (ddr)); /* The dependence is carried by the outermost loop. Example: | loop_1 @@ -3399,375 +3494,348 @@ build_classic_dist_vector (struct data_dependence_relation *ddr, | endloop_2 | endloop_1 In this case, the dependence is carried by loop_1. */ - loop_nb = loop_nb_a < loop_nb_b ? loop_nb_a : loop_nb_b; - loop_depth = current_loops->parray[loop_nb]->depth - first_loop_depth; - - /* If the loop number is still greater than the number of - loops we've been asked to analyze, or negative, - something is borked. */ - gcc_assert (loop_depth >= 0); - gcc_assert (loop_depth < nb_loops); + index = index_a < index_b ? index_a : index_b; + *index_carry = MIN (index, *index_carry); + if (chrec_contains_undetermined (SUB_DISTANCE (subscript))) { non_affine_dependence_relation (ddr); - return true; + return false; } dist = int_cst_value (SUB_DISTANCE (subscript)); - /* This is the subscript coupling test. + /* This is the subscript coupling test. If we have already + recorded a distance for this loop (a distance coming from + another subscript), it should be the same. For example, + in the following code, there is no dependence: + | loop i = 0, N, 1 | T[i+1][i] = ... | ... = T[i][i] | endloop - There is no dependence. */ - if (init_v[loop_depth] != 0 - && dist_v[loop_depth] != dist) + */ + if (init_v[index] != 0 && dist_v[index] != dist) { finalize_ddr_dependent (ddr, chrec_known); - return true; + return false; } - dist_v[loop_depth] = dist; - init_v[loop_depth] = 1; - init_b = true; + dist_v[index] = dist; + init_v[index] = 1; + *init_b = true; + } + else + { + /* This can be for example an affine vs. constant dependence + (T[i] vs. T[3]) that is not an affine dependence and is + not representable as a distance vector. */ + non_affine_dependence_relation (ddr); + return false; } } - /* Save the distance vector if we initialized one. */ - if (init_b) - { - lambda_vector save_v; + return true; +} - /* Verify a basic constraint: classic distance vectors should always - be lexicographically positive. */ - if (!lambda_vector_lexico_pos (dist_v, DDR_SIZE_VECT (ddr))) - { - if (DDR_SIZE_VECT (ddr) == 1) - /* This one is simple to fix, and can be fixed. - Multidimensional arrays cannot be fixed that simply. */ - lambda_vector_negate (dist_v, dist_v, DDR_SIZE_VECT (ddr)); - else - /* This is not valid: we need the delta test for properly - fixing all this. */ - return false; - } +/* Return true when the DDR contains two data references that have the + same access functions. */ - save_v = lambda_vector_new (DDR_SIZE_VECT (ddr)); - lambda_vector_copy (dist_v, save_v, DDR_SIZE_VECT (ddr)); - VEC_safe_push (lambda_vector, heap, DDR_DIST_VECTS (ddr), save_v); +static bool +same_access_functions (struct data_dependence_relation *ddr) +{ + unsigned i; - /* There is nothing more to do when there are no outer loops. */ - if (DDR_SIZE_VECT (ddr) == 1) - goto classic_dist_done; - } + for (i = 0; i < DDR_NUM_SUBSCRIPTS (ddr); i++) + if (!eq_evolutions_p (DR_ACCESS_FN (DDR_A (ddr), i), + DR_ACCESS_FN (DDR_B (ddr), i))) + return false; - /* There is a distance of 1 on all the outer loops: - - Example: there is a dependence of distance 1 on loop_1 for the array A. - | loop_1 - | A[5] = ... - | endloop - */ - { - struct loop *lca, *loop_a, *loop_b; - struct data_reference *a = DDR_A (ddr); - struct data_reference *b = DDR_B (ddr); - int lca_depth; - loop_a = loop_containing_stmt (DR_STMT (a)); - loop_b = loop_containing_stmt (DR_STMT (b)); - - /* Get the common ancestor loop. */ - lca = find_common_loop (loop_a, loop_b); - lca_depth = lca->depth - first_loop_depth; + return true; +} - gcc_assert (lca_depth >= 0); - gcc_assert (lca_depth < nb_loops); - - /* For each outer loop where init_v is not set, the accesses are - in dependence of distance 1 in the loop. */ - while (lca->depth != 0) - { - /* If we're considering just a sub-nest, then don't record - any information on the outer loops. */ - if (lca_depth < 0) - break; +/* Helper function for the case where DDR_A and DDR_B are the same + multivariate access function. */ - gcc_assert (lca_depth < nb_loops); +static void +add_multivariate_self_dist (struct data_dependence_relation *ddr, tree c_2) +{ + int x_1, x_2; + tree c_1 = CHREC_LEFT (c_2); + tree c_0 = CHREC_LEFT (c_1); + lambda_vector dist_v; - /* If we haven't yet determined a distance for this outer - loop, push a new distance vector composed of the previous - distance, and a distance of 1 for this outer loop. - Example: + /* Polynomials with more than 2 variables are not handled yet. */ + if (TREE_CODE (c_0) != INTEGER_CST) + { + DDR_ARE_DEPENDENT (ddr) = chrec_dont_know; + return; + } - | loop_1 - | loop_2 - | A[10] - | endloop_2 - | endloop_1 + x_2 = index_in_loop_nest (CHREC_VARIABLE (c_2), DDR_LOOP_NEST (ddr)); + x_1 = index_in_loop_nest (CHREC_VARIABLE (c_1), DDR_LOOP_NEST (ddr)); - Saved vectors are of the form (dist_in_1, dist_in_2). - First, we save (0, 1), then we have to save (1, 0). */ - if (init_v[lca_depth] == 0) - { - lambda_vector save_v = lambda_vector_new (DDR_SIZE_VECT (ddr)); + /* For "{{0, +, 2}_1, +, 3}_2" the distance vector is (3, -2). */ + dist_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); + dist_v[x_1] = int_cst_value (CHREC_RIGHT (c_2)); + dist_v[x_2] = -int_cst_value (CHREC_RIGHT (c_1)); + save_dist_v (ddr, dist_v); - lambda_vector_copy (dist_v, save_v, DDR_SIZE_VECT (ddr)); - save_v[lca_depth] = 1; - VEC_safe_push (lambda_vector, heap, DDR_DIST_VECTS (ddr), save_v); - } + add_outer_distances (ddr, dist_v, x_1); +} - lca = lca->outer; - lca_depth = lca->depth - first_loop_depth; - } - } +/* Helper function for the case where DDR_A and DDR_B are the same + access functions. */ - classic_dist_done:; +static void +add_other_self_distances (struct data_dependence_relation *ddr) +{ + lambda_vector dist_v; + unsigned i; + int index_carry = DDR_NB_LOOPS (ddr); - if (dump_file && (dump_flags & TDF_DETAILS)) + for (i = 0; i < DDR_NUM_SUBSCRIPTS (ddr); i++) { - fprintf (dump_file, "(build_classic_dist_vector\n"); + tree access_fun = DR_ACCESS_FN (DDR_A (ddr), i); - for (i = 0; i < DDR_NUM_DIST_VECTS (ddr); i++) + if (TREE_CODE (access_fun) == POLYNOMIAL_CHREC) { - fprintf (dump_file, " dist_vector = ("); - print_lambda_vector (dump_file, DDR_DIST_VECT (ddr, i), - DDR_SIZE_VECT (ddr)); - fprintf (dump_file, " )\n"); + if (!evolution_function_is_univariate_p (access_fun)) + { + if (DDR_NUM_SUBSCRIPTS (ddr) != 1) + { + DDR_ARE_DEPENDENT (ddr) = chrec_dont_know; + return; + } + + add_multivariate_self_dist (ddr, DR_ACCESS_FN (DDR_A (ddr), 0)); + return; + } + + index_carry = MIN (index_carry, + index_in_loop_nest (CHREC_VARIABLE (access_fun), + DDR_LOOP_NEST (ddr))); } - fprintf (dump_file, ")\n"); } - return true; + dist_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); + add_outer_distances (ddr, dist_v, index_carry); } -/* Compute the classic per loop direction vector. - - DDR is the data dependence relation to build a vector from. - NB_LOOPS is the total number of loops we are considering. - FIRST_LOOP_DEPTH is the loop->depth of the first loop in the analyzed - loop nest. - Return FALSE if the dependence relation is outside of the loop nest - at FIRST_LOOP_DEPTH. - Return TRUE otherwise. */ +/* Compute the classic per loop distance vector. DDR is the data + dependence relation to build a vector from. Return false when fail + to represent the data dependence as a distance vector. */ static bool -build_classic_dir_vector (struct data_dependence_relation *ddr, - int first_loop_depth) +build_classic_dist_vector (struct data_dependence_relation *ddr) { - unsigned i; - lambda_vector dir_v, init_v; - int nb_loops = DDR_SIZE_VECT (ddr); bool init_b = false; - - dir_v = lambda_vector_new (nb_loops); - init_v = lambda_vector_new (nb_loops); + int index_carry = DDR_NB_LOOPS (ddr); + lambda_vector dist_v; - DDR_SIZE_VECT (ddr) = nb_loops; - if (DDR_ARE_DEPENDENT (ddr) != NULL_TREE) return true; - - for (i = 0; i < DDR_NUM_SUBSCRIPTS (ddr); i++) + + if (same_access_functions (ddr)) { - tree access_fn_a, access_fn_b; - struct subscript *subscript = DDR_SUBSCRIPT (ddr, i); + /* Save the 0 vector. */ + dist_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); + save_dist_v (ddr, dist_v); - if (chrec_contains_undetermined (SUB_DISTANCE (subscript))) - { - non_affine_dependence_relation (ddr); - return true; - } + if (DDR_NB_LOOPS (ddr) > 1) + add_other_self_distances (ddr); - access_fn_a = DR_ACCESS_FN (DDR_A (ddr), i); - access_fn_b = DR_ACCESS_FN (DDR_B (ddr), i); - if (TREE_CODE (access_fn_a) == POLYNOMIAL_CHREC - && TREE_CODE (access_fn_b) == POLYNOMIAL_CHREC) - { - int dist, loop_nb, loop_depth; - enum data_dependence_direction dir = dir_star; - int loop_nb_a = CHREC_VARIABLE (access_fn_a); - int loop_nb_b = CHREC_VARIABLE (access_fn_b); - struct loop *loop_a = current_loops->parray[loop_nb_a]; - struct loop *loop_b = current_loops->parray[loop_nb_b]; - - /* If the loop for either variable is at a lower depth than - the first_loop's depth, then we can't possibly have a - dependency at this level of the loop. */ - - if (loop_a->depth < first_loop_depth - || loop_b->depth < first_loop_depth) - return false; - - if (loop_nb_a != loop_nb_b - && !flow_loop_nested_p (loop_a, loop_b) - && !flow_loop_nested_p (loop_b, loop_a)) - { - /* Example: when there are two consecutive loops, + return true; + } - | loop_1 - | A[{0, +, 1}_1] - | endloop_1 - | loop_2 - | A[{0, +, 1}_2] - | endloop_2 + dist_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); + if (!build_classic_dist_vector_1 (ddr, DDR_A (ddr), DDR_B (ddr), + dist_v, &init_b, &index_carry)) + return false; - the dependence relation cannot be captured by the - distance abstraction. */ - non_affine_dependence_relation (ddr); - return true; + /* Save the distance vector if we initialized one. */ + if (init_b) + { + /* Verify a basic constraint: classic distance vectors should + always be lexicographically positive. + + Data references are collected in the order of execution of + the program, thus for the following loop + + | for (i = 1; i < 100; i++) + | for (j = 1; j < 100; j++) + | { + | t = T[j+1][i-1]; // A + | T[j][i] = t + 2; // B + | } + + references are collected following the direction of the wind: + A then B. The data dependence tests are performed also + following this order, such that we're looking at the distance + separating the elements accessed by A from the elements later + accessed by B. But in this example, the distance returned by + test_dep (A, B) is lexicographically negative (-1, 1), that + means that the access A occurs later than B with respect to + the outer loop, ie. we're actually looking upwind. In this + case we solve test_dep (B, A) looking downwind to the + lexicographically positive solution, that returns the + distance vector (1, -1). */ + if (!lambda_vector_lexico_pos (dist_v, DDR_NB_LOOPS (ddr))) + { + lambda_vector save_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); + subscript_dependence_tester_1 (ddr, DDR_B (ddr), DDR_A (ddr)); + compute_subscript_distance (ddr); + build_classic_dist_vector_1 (ddr, DDR_B (ddr), DDR_A (ddr), + save_v, &init_b, &index_carry); + save_dist_v (ddr, save_v); + + /* In this case there is a dependence forward for all the + outer loops: + + | for (k = 1; k < 100; k++) + | for (i = 1; i < 100; i++) + | for (j = 1; j < 100; j++) + | { + | t = T[j+1][i-1]; // A + | T[j][i] = t + 2; // B + | } + + the vectors are: + (0, 1, -1) + (1, 1, -1) + (1, -1, 1) + */ + if (DDR_NB_LOOPS (ddr) > 1) + { + add_outer_distances (ddr, save_v, index_carry); + add_outer_distances (ddr, dist_v, index_carry); } + } + else + { + lambda_vector save_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); + lambda_vector_copy (dist_v, save_v, DDR_NB_LOOPS (ddr)); + save_dist_v (ddr, save_v); - /* The dependence is carried by the outermost loop. Example: - | loop_1 - | A[{4, +, 1}_1] - | loop_2 - | A[{5, +, 1}_2] - | endloop_2 - | endloop_1 - In this case, the dependence is carried by loop_1. */ - loop_nb = loop_nb_a < loop_nb_b ? loop_nb_a : loop_nb_b; - loop_depth = current_loops->parray[loop_nb]->depth - first_loop_depth; - - /* If the loop number is still greater than the number of - loops we've been asked to analyze, or negative, - something is borked. */ - gcc_assert (loop_depth >= 0); - gcc_assert (loop_depth < nb_loops); - - if (chrec_contains_undetermined (SUB_DISTANCE (subscript))) + if (DDR_NB_LOOPS (ddr) > 1) { - non_affine_dependence_relation (ddr); - return true; - } + lambda_vector opposite_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); - dist = int_cst_value (SUB_DISTANCE (subscript)); + subscript_dependence_tester_1 (ddr, DDR_B (ddr), DDR_A (ddr)); + compute_subscript_distance (ddr); + build_classic_dist_vector_1 (ddr, DDR_B (ddr), DDR_A (ddr), + opposite_v, &init_b, &index_carry); - if (dist == 0) - dir = dir_equal; - else if (dist > 0) - dir = dir_positive; - else if (dist < 0) - dir = dir_negative; - - /* This is the subscript coupling test. - | loop i = 0, N, 1 - | T[i+1][i] = ... - | ... = T[i][i] - | endloop - There is no dependence. */ - if (init_v[loop_depth] != 0 - && dir != dir_star - && (enum data_dependence_direction) dir_v[loop_depth] != dir - && (enum data_dependence_direction) dir_v[loop_depth] != dir_star) - { - finalize_ddr_dependent (ddr, chrec_known); - return true; + add_outer_distances (ddr, dist_v, index_carry); + add_outer_distances (ddr, opposite_v, index_carry); } - - dir_v[loop_depth] = dir; - init_v[loop_depth] = 1; - init_b = true; } } + else + { + /* There is a distance of 1 on all the outer loops: Example: + there is a dependence of distance 1 on loop_1 for the array A. - /* Save the direction vector if we initialized one. */ - if (init_b) + | loop_1 + | A[5] = ... + | endloop + */ + add_outer_distances (ddr, dist_v, + lambda_vector_first_nz (dist_v, + DDR_NB_LOOPS (ddr), 0)); + } + + if (dump_file && (dump_flags & TDF_DETAILS)) { - lambda_vector save_v = lambda_vector_new (DDR_SIZE_VECT (ddr)); + unsigned i; - lambda_vector_copy (dir_v, save_v, DDR_SIZE_VECT (ddr)); - VEC_safe_push (lambda_vector, heap, DDR_DIR_VECTS (ddr), save_v); + fprintf (dump_file, "(build_classic_dist_vector\n"); + for (i = 0; i < DDR_NUM_DIST_VECTS (ddr); i++) + { + fprintf (dump_file, " dist_vector = ("); + print_lambda_vector (dump_file, DDR_DIST_VECT (ddr, i), + DDR_NB_LOOPS (ddr)); + fprintf (dump_file, " )\n"); + } + fprintf (dump_file, ")\n"); } - /* There is a distance of 1 on all the outer loops: - - Example: there is a dependence of distance 1 on loop_1 for the array A. - | loop_1 - | A[5] = ... - | endloop - */ - { - struct loop *lca, *loop_a, *loop_b; - struct data_reference *a = DDR_A (ddr); - struct data_reference *b = DDR_B (ddr); - int lca_depth; - loop_a = loop_containing_stmt (DR_STMT (a)); - loop_b = loop_containing_stmt (DR_STMT (b)); - - /* Get the common ancestor loop. */ - lca = find_common_loop (loop_a, loop_b); - lca_depth = lca->depth - first_loop_depth; + return true; +} - gcc_assert (lca_depth >= 0); - gcc_assert (lca_depth < nb_loops); +/* Return the direction for a given distance. + FIXME: Computing dir this way is suboptimal, since dir can catch + cases that dist is unable to represent. */ - while (lca->depth != 0) - { - /* If we're considering just a sub-nest, then don't record - any information on the outer loops. */ - if (lca_depth < 0) - break; +static inline enum data_dependence_direction +dir_from_dist (int dist) +{ + if (dist > 0) + return dir_positive; + else if (dist < 0) + return dir_negative; + else + return dir_equal; +} - gcc_assert (lca_depth < nb_loops); +/* Compute the classic per loop direction vector. DDR is the data + dependence relation to build a vector from. */ - if (init_v[lca_depth] == 0) - { - lambda_vector save_v = lambda_vector_new (DDR_SIZE_VECT (ddr)); +static void +build_classic_dir_vector (struct data_dependence_relation *ddr) +{ + unsigned i, j; + lambda_vector dist_v; - lambda_vector_copy (dir_v, save_v, DDR_SIZE_VECT (ddr)); - save_v[lca_depth] = dir_positive; - VEC_safe_push (lambda_vector, heap, DDR_DIR_VECTS (ddr), save_v); - } + for (i = 0; VEC_iterate (lambda_vector, DDR_DIST_VECTS (ddr), i, dist_v); i++) + { + lambda_vector dir_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); - lca = lca->outer; - lca_depth = lca->depth - first_loop_depth; - } - } + for (j = 0; j < DDR_NB_LOOPS (ddr); j++) + dir_v[j] = dir_from_dist (dist_v[j]); - return true; + save_dir_v (ddr, dir_v); + } } -/* Computes the conflicting iterations, and initialize DDR. */ +/* Helper function. Returns true when there is a dependence between + data references DRA and DRB. */ -static void -subscript_dependence_tester (struct data_dependence_relation *ddr, - int loop_nest_depth) +static bool +subscript_dependence_tester_1 (struct data_dependence_relation *ddr, + struct data_reference *dra, + struct data_reference *drb) { unsigned int i; - struct data_reference *dra = DDR_A (ddr); - struct data_reference *drb = DDR_B (ddr); tree last_conflicts; - - if (dump_file && (dump_flags & TDF_DETAILS)) - fprintf (dump_file, "(subscript_dependence_tester \n"); - - for (i = 0; i < DDR_NUM_SUBSCRIPTS (ddr); i++) + struct subscript *subscript; + + for (i = 0; VEC_iterate (subscript_p, DDR_SUBSCRIPTS (ddr), i, subscript); + i++) { tree overlaps_a, overlaps_b; - struct subscript *subscript = DDR_SUBSCRIPT (ddr, i); - + analyze_overlapping_iterations (DR_ACCESS_FN (dra, i), DR_ACCESS_FN (drb, i), &overlaps_a, &overlaps_b, &last_conflicts); - + if (chrec_contains_undetermined (overlaps_a) || chrec_contains_undetermined (overlaps_b)) { finalize_ddr_dependent (ddr, chrec_dont_know); dependence_stats.num_dependence_undetermined++; - goto subs_test_end; + return false; } - + else if (overlaps_a == chrec_known || overlaps_b == chrec_known) { finalize_ddr_dependent (ddr, chrec_known); dependence_stats.num_dependence_independent++; - goto subs_test_end; + return false; } - + else { SUB_CONFLICTS_IN_A (subscript) = overlaps_a; @@ -3776,12 +3844,24 @@ subscript_dependence_tester (struct data_dependence_relation *ddr, } } - dependence_stats.num_dependence_dependent++; + return true; +} + +/* Computes the conflicting iterations, and initialize DDR. */ + +static void +subscript_dependence_tester (struct data_dependence_relation *ddr) +{ + + if (dump_file && (dump_flags & TDF_DETAILS)) + fprintf (dump_file, "(subscript_dependence_tester \n"); + + if (subscript_dependence_tester_1 (ddr, DDR_A (ddr), DDR_B (ddr))) + dependence_stats.num_dependence_dependent++; - subs_test_end:; compute_subscript_distance (ddr); - if (build_classic_dist_vector (ddr, loop_nest_depth)) - build_classic_dir_vector (ddr, loop_nest_depth); + if (build_classic_dist_vector (ddr)) + build_classic_dir_vector (ddr); if (dump_file && (dump_flags & TDF_DETAILS)) fprintf (dump_file, ")\n"); @@ -3815,8 +3895,7 @@ access_functions_are_affine_or_constant_p (struct data_reference *a) subscript. */ static void -compute_affine_dependence (struct data_dependence_relation *ddr, - int loop_nest_depth) +compute_affine_dependence (struct data_dependence_relation *ddr) { struct data_reference *dra = DDR_A (ddr); struct data_reference *drb = DDR_B (ddr); @@ -3838,7 +3917,7 @@ compute_affine_dependence (struct data_dependence_relation *ddr, if (access_functions_are_affine_or_constant_p (dra) && access_functions_are_affine_or_constant_p (drb)) - subscript_dependence_tester (ddr, loop_nest_depth); + subscript_dependence_tester (ddr); /* As a last case, if the dependence cannot be determined, or if the dependence is considered too difficult to determine, answer @@ -3870,12 +3949,11 @@ static void compute_self_dependence (struct data_dependence_relation *ddr) { unsigned int i; - lambda_vector dir_v, dist_v; + struct subscript *subscript; - for (i = 0; i < DDR_NUM_SUBSCRIPTS (ddr); i++) + for (i = 0; VEC_iterate (subscript_p, DDR_SUBSCRIPTS (ddr), i, subscript); + i++) { - struct subscript *subscript = DDR_SUBSCRIPT (ddr, i); - /* The accessed index overlaps for each iteration. */ SUB_CONFLICTS_IN_A (subscript) = integer_zero_node; SUB_CONFLICTS_IN_B (subscript) = integer_zero_node; @@ -3883,68 +3961,41 @@ compute_self_dependence (struct data_dependence_relation *ddr) } /* The distance vector is the zero vector. */ - dist_v = lambda_vector_new (DDR_SIZE_VECT (ddr)); - dir_v = lambda_vector_new (DDR_SIZE_VECT (ddr)); - - VEC_safe_push (lambda_vector, heap, DDR_DIST_VECTS (ddr), dist_v); - VEC_safe_push (lambda_vector, heap, DDR_DIR_VECTS (ddr), dir_v); - - compute_subscript_distance (ddr); + save_dist_v (ddr, lambda_vector_new (DDR_NB_LOOPS (ddr))); + save_dir_v (ddr, lambda_vector_new (DDR_NB_LOOPS (ddr))); } -/* Compute a subset of the data dependence relation graph. Don't - compute read-read and self relations if - COMPUTE_SELF_AND_READ_READ_DEPENDENCES is FALSE, and avoid the computation - of the opposite relation, i.e. when AB has been computed, don't compute BA. - DATAREFS contains a list of data references, and the result is set - in DEPENDENCE_RELATIONS. */ +/* Compute in DEPENDENCE_RELATIONS the data dependence graph for all + the data references in DATAREFS, in the LOOP_NEST. When + COMPUTE_SELF_AND_RR is FALSE, don't compute read-read and self + relations. */ static void -compute_all_dependences (varray_type datarefs, - VEC(ddr_p,heap) **dependence_relations, - bool compute_self_and_read_read_dependences, - unsigned nb_loops, unsigned loop_nest_depth) +compute_all_dependences (VEC (data_reference_p, heap) *datarefs, + VEC (ddr_p, heap) **dependence_relations, + VEC (loop_p, heap) *loop_nest, + bool compute_self_and_rr) { - unsigned int i, j, N; - - N = VARRAY_ACTIVE_SIZE (datarefs); + struct data_dependence_relation *ddr; + struct data_reference *a, *b; + unsigned int i, j; - /* Note that we specifically skip i == j because it's a self dependence, and - use compute_self_dependence below. */ + for (i = 0; VEC_iterate (data_reference_p, datarefs, i, a); i++) + for (j = i + 1; VEC_iterate (data_reference_p, datarefs, j, b); j++) + if (!DR_IS_READ (a) || !DR_IS_READ (b) || compute_self_and_rr) + { + ddr = initialize_data_dependence_relation (a, b, loop_nest); + VEC_safe_push (ddr_p, heap, *dependence_relations, ddr); + compute_affine_dependence (ddr); + } - for (i = 0; i < N; i++) - for (j = i + 1; j < N; j++) + if (compute_self_and_rr) + for (i = 0; VEC_iterate (data_reference_p, datarefs, i, a); i++) { - struct data_reference *a, *b; - struct data_dependence_relation *ddr; - - a = VARRAY_GENERIC_PTR (datarefs, i); - b = VARRAY_GENERIC_PTR (datarefs, j); - - if (DR_IS_READ (a) && DR_IS_READ (b) - && !compute_self_and_read_read_dependences) - continue; - - ddr = initialize_data_dependence_relation (a, b, nb_loops); + ddr = initialize_data_dependence_relation (a, a, loop_nest); VEC_safe_push (ddr_p, heap, *dependence_relations, ddr); - compute_affine_dependence (ddr, loop_nest_depth); + compute_self_dependence (ddr); } - - if (!compute_self_and_read_read_dependences) - return; - - /* Compute self dependence relation of each dataref to itself. */ - for (i = 0; i < N; i++) - { - struct data_reference *a, *b; - struct data_dependence_relation *ddr; - - a = VARRAY_GENERIC_PTR (datarefs, i); - b = VARRAY_GENERIC_PTR (datarefs, i); - ddr = initialize_data_dependence_relation (a, b, nb_loops); - VEC_safe_push (ddr_p, heap, *dependence_relations, ddr); - compute_self_dependence (ddr); - } } /* Search the data references in LOOP, and record the information into @@ -3955,7 +4006,8 @@ compute_all_dependences (varray_type datarefs, arithmetic as if they were array accesses, etc. */ tree -find_data_references_in_loop (struct loop *loop, varray_type *datarefs) +find_data_references_in_loop (struct loop *loop, + VEC (data_reference_p, heap) **datarefs) { basic_block bb, *bbs; unsigned int i; @@ -3999,7 +4051,7 @@ find_data_references_in_loop (struct loop *loop, varray_type *datarefs) dr = create_data_ref (opnd0, stmt, false); if (dr) { - VARRAY_PUSH_GENERIC_PTR (*datarefs, dr); + VEC_safe_push (data_reference_p, heap, *datarefs, dr); one_inserted = true; } } @@ -4011,7 +4063,7 @@ find_data_references_in_loop (struct loop *loop, varray_type *datarefs) dr = create_data_ref (opnd1, stmt, true); if (dr) { - VARRAY_PUSH_GENERIC_PTR (*datarefs, dr); + VEC_safe_push (data_reference_p, heap, *datarefs, dr); one_inserted = true; } } @@ -4036,7 +4088,7 @@ find_data_references_in_loop (struct loop *loop, varray_type *datarefs) dr = create_data_ref (TREE_VALUE (args), stmt, true); if (dr) { - VARRAY_PUSH_GENERIC_PTR (*datarefs, dr); + VEC_safe_push (data_reference_p, heap, *datarefs, dr); one_inserted = true; } } @@ -4067,7 +4119,7 @@ find_data_references_in_loop (struct loop *loop, varray_type *datarefs) DR_OFFSET_MISALIGNMENT (res) = NULL_TREE; DR_MEMTAG (res) = NULL_TREE; DR_PTR_INFO (res) = NULL; - VARRAY_PUSH_GENERIC_PTR (*datarefs, res); + VEC_safe_push (data_reference_p, heap, *datarefs, res); free (bbs); return chrec_dont_know; @@ -4085,55 +4137,82 @@ find_data_references_in_loop (struct loop *loop, varray_type *datarefs) return NULL_TREE; } - +/* Recursive helper function. */ -/* This section contains all the entry points. */ +static bool +find_loop_nest_1 (struct loop *loop, VEC (loop_p, heap) *loop_nest) +{ + /* Inner loops of the nest should not contain siblings. Example: + when there are two consecutive loops, + + | loop_0 + | loop_1 + | A[{0, +, 1}_1] + | endloop_1 + | loop_2 + | A[{0, +, 1}_2] + | endloop_2 + | endloop_0 + + the dependence relation cannot be captured by the distance + abstraction. */ + if (loop->next) + return false; + + VEC_safe_push (loop_p, heap, loop_nest, loop); + if (loop->inner) + return find_loop_nest_1 (loop->inner, loop_nest); + return true; +} + +/* Return false when the LOOP is not well nested. Otherwise return + true and insert in LOOP_NEST the loops of the nest. LOOP_NEST will + contain the loops from the outermost to the innermost, as they will + appear in the classic distance vector. */ + +static bool +find_loop_nest (struct loop *loop, VEC (loop_p, heap) *loop_nest) +{ + VEC_safe_push (loop_p, heap, loop_nest, loop); + if (loop->inner) + return find_loop_nest_1 (loop->inner, loop_nest); + return true; +} /* Given a loop nest LOOP, the following vectors are returned: - *DATAREFS is initialized to all the array elements contained in this loop, - *DEPENDENCE_RELATIONS contains the relations between the data references. + DATAREFS is initialized to all the array elements contained in this loop, + DEPENDENCE_RELATIONS contains the relations between the data references. Compute read-read and self relations if COMPUTE_SELF_AND_READ_READ_DEPENDENCES is TRUE. */ void compute_data_dependences_for_loop (struct loop *loop, bool compute_self_and_read_read_dependences, - varray_type *datarefs, - varray_type *dependence_relations) + VEC (data_reference_p, heap) **datarefs, + VEC (ddr_p, heap) **dependence_relations) { - unsigned int i, nb_loops; - VEC(ddr_p,heap) *allrelations; - struct data_dependence_relation *ddr; struct loop *loop_nest = loop; + VEC (loop_p, heap) *vloops = VEC_alloc (loop_p, heap, 3); - while (loop_nest && loop_nest->outer && loop_nest->outer->outer) - loop_nest = loop_nest->outer; - - nb_loops = loop_nest->level; memset (&dependence_stats, 0, sizeof (dependence_stats)); - /* If one of the data references is not computable, give up without - spending time to compute other dependences. */ - if (find_data_references_in_loop (loop, datarefs) == chrec_dont_know) + /* If the loop nest is not well formed, or one of the data references + is not computable, give up without spending time to compute other + dependences. */ + if (!loop_nest + || !find_loop_nest (loop_nest, vloops) + || find_data_references_in_loop (loop, datarefs) == chrec_dont_know) { struct data_dependence_relation *ddr; /* Insert a single relation into dependence_relations: chrec_dont_know. */ - ddr = initialize_data_dependence_relation (NULL, NULL, nb_loops); - VARRAY_PUSH_GENERIC_PTR (*dependence_relations, ddr); - return; + ddr = initialize_data_dependence_relation (NULL, NULL, vloops); + VEC_safe_push (ddr_p, heap, *dependence_relations, ddr); } - - allrelations = NULL; - compute_all_dependences (*datarefs, &allrelations, - compute_self_and_read_read_dependences, - nb_loops, loop_nest->depth); - - /* FIXME: We copy the contents of allrelations back to a VARRAY - because the vectorizer has not yet been converted to use VECs. */ - for (i = 0; VEC_iterate (ddr_p, allrelations, i, ddr); i++) - VARRAY_PUSH_GENERIC_PTR (*dependence_relations, ddr); + else + compute_all_dependences (*datarefs, dependence_relations, vloops, + compute_self_and_read_read_dependences); if (dump_file && (dump_flags & TDF_STATS)) { @@ -4210,14 +4289,11 @@ static void analyze_all_data_dependences (struct loops *loops) { unsigned int i; - varray_type datarefs; - varray_type dependence_relations; int nb_data_refs = 10; - - VARRAY_GENERIC_PTR_INIT (datarefs, nb_data_refs, "datarefs"); - VARRAY_GENERIC_PTR_INIT (dependence_relations, - nb_data_refs * nb_data_refs, - "dependence_relations"); + VEC (data_reference_p, heap) *datarefs = + VEC_alloc (data_reference_p, heap, nb_data_refs); + VEC (ddr_p, heap) *dependence_relations = + VEC_alloc (ddr_p, heap, nb_data_refs * nb_data_refs); /* Compute DDs on the whole function. */ compute_data_dependences_for_loop (loops->parray[0], false, @@ -4237,12 +4313,10 @@ analyze_all_data_dependences (struct loops *loops) unsigned nb_bot_relations = 0; unsigned nb_basename_differ = 0; unsigned nb_chrec_relations = 0; + struct data_dependence_relation *ddr; - for (i = 0; i < VARRAY_ACTIVE_SIZE (dependence_relations); i++) + for (i = 0; VEC_iterate (ddr_p, dependence_relations, i, ddr); i++) { - struct data_dependence_relation *ddr; - ddr = VARRAY_GENERIC_PTR (dependence_relations, i); - if (chrec_contains_undetermined (DDR_ARE_DEPENDENT (ddr))) nb_top_relations++; @@ -4283,7 +4357,8 @@ free_dependence_relation (struct data_dependence_relation *ddr) return; if (DDR_ARE_DEPENDENT (ddr) == NULL_TREE && DDR_SUBSCRIPTS (ddr)) - varray_clear (DDR_SUBSCRIPTS (ddr)); + VEC_free (subscript_p, heap, DDR_SUBSCRIPTS (ddr)); + free (ddr); } @@ -4291,37 +4366,34 @@ free_dependence_relation (struct data_dependence_relation *ddr) DEPENDENCE_RELATIONS. */ void -free_dependence_relations (varray_type dependence_relations) +free_dependence_relations (VEC (ddr_p, heap) *dependence_relations) { unsigned int i; - if (dependence_relations == NULL) - return; + struct data_dependence_relation *ddr; + + for (i = 0; VEC_iterate (ddr_p, dependence_relations, i, ddr); i++) + free_dependence_relation (ddr); - for (i = 0; i < VARRAY_ACTIVE_SIZE (dependence_relations); i++) - free_dependence_relation (VARRAY_GENERIC_PTR (dependence_relations, i)); - varray_clear (dependence_relations); + VEC_free (ddr_p, heap, dependence_relations); } /* Free the memory used by the data references from DATAREFS. */ void -free_data_refs (varray_type datarefs) +free_data_refs (VEC (data_reference_p, heap) *datarefs) { unsigned int i; - - if (datarefs == NULL) - return; + struct data_reference *dr; - for (i = 0; i < VARRAY_ACTIVE_SIZE (datarefs); i++) + for (i = 0; VEC_iterate (data_reference_p, datarefs, i, dr); i++) { - struct data_reference *dr = (struct data_reference *) - VARRAY_GENERIC_PTR (datarefs, i); - if (dr) - { - DR_FREE_ACCESS_FNS (dr); - free (dr); - } + if (DR_TYPE(dr) == ARRAY_REF_TYPE) + VEC_free (tree, heap, (dr)->object_info.access_fns); + else + VEC_free (tree, heap, (dr)->first_location.access_fns); + + free (dr); } - varray_clear (datarefs); + VEC_free (data_reference_p, heap, datarefs); } diff --git a/gcc/tree-data-ref.h b/gcc/tree-data-ref.h index 2c246df0660..8cf17ae8fb5 100644 --- a/gcc/tree-data-ref.h +++ b/gcc/tree-data-ref.h @@ -107,6 +107,10 @@ struct data_reference enum data_ref_type type; }; +typedef struct data_reference *data_reference_p; +DEF_VEC_P(data_reference_p); +DEF_VEC_ALLOC_P (data_reference_p, heap); + #define DR_STMT(DR) (DR)->stmt #define DR_REF(DR) (DR)->ref #define DR_BASE_OBJECT(DR) (DR)->object_info.base_object @@ -181,11 +185,19 @@ struct subscript tree distance; }; +typedef struct subscript *subscript_p; +DEF_VEC_P(subscript_p); +DEF_VEC_ALLOC_P (subscript_p, heap); + #define SUB_CONFLICTS_IN_A(SUB) SUB->conflicting_iterations_in_a #define SUB_CONFLICTS_IN_B(SUB) SUB->conflicting_iterations_in_b #define SUB_LAST_CONFLICT(SUB) SUB->last_conflict #define SUB_DISTANCE(SUB) SUB->distance +typedef struct loop *loop_p; +DEF_VEC_P(loop_p); +DEF_VEC_ALLOC_P (loop_p, heap); + /* A data_dependence_relation represents a relation between two data_references A and B. */ @@ -215,17 +227,16 @@ struct data_dependence_relation /* For each subscript in the dependence test, there is an element in this array. This is the attribute that labels the edge A->B of the data_dependence_relation. */ - varray_type subscripts; + VEC (subscript_p, heap) *subscripts; - /* The size of the direction/distance vectors: the depth of the - analyzed loop nest. */ - int size_vect; + /* The analyzed loop nest. */ + VEC (loop_p, heap) *loop_nest; /* The classic direction vector. */ - VEC(lambda_vector,heap) *dir_vects; + VEC (lambda_vector, heap) *dir_vects; /* The classic distance vector. */ - VEC(lambda_vector,heap) *dist_vects; + VEC (lambda_vector, heap) *dist_vects; }; typedef struct data_dependence_relation *ddr_p; @@ -237,11 +248,13 @@ DEF_VEC_ALLOC_P(ddr_p,heap); #define DDR_AFFINE_P(DDR) DDR->affine_p #define DDR_ARE_DEPENDENT(DDR) DDR->are_dependent #define DDR_SUBSCRIPTS(DDR) DDR->subscripts -#define DDR_SUBSCRIPTS_VECTOR_INIT(DDR, N) \ - VARRAY_GENERIC_PTR_INIT (DDR_SUBSCRIPTS (DDR), N, "subscripts_vector"); -#define DDR_SUBSCRIPT(DDR, I) VARRAY_GENERIC_PTR (DDR_SUBSCRIPTS (DDR), I) -#define DDR_NUM_SUBSCRIPTS(DDR) VARRAY_ACTIVE_SIZE (DDR_SUBSCRIPTS (DDR)) -#define DDR_SIZE_VECT(DDR) DDR->size_vect +#define DDR_SUBSCRIPT(DDR, I) VEC_index (subscript_p, DDR_SUBSCRIPTS (DDR), I) +#define DDR_NUM_SUBSCRIPTS(DDR) VEC_length (subscript_p, DDR_SUBSCRIPTS (DDR)) + +#define DDR_LOOP_NEST(DDR) DDR->loop_nest +/* The size of the direction/distance vectors: the number of loops in + the loop nest. */ +#define DDR_NB_LOOPS(DDR) (VEC_length (loop_p, DDR_LOOP_NEST (DDR))) #define DDR_DIST_VECTS(DDR) ((DDR)->dist_vects) #define DDR_DIR_VECTS(DDR) ((DDR)->dir_vects) @@ -256,26 +269,49 @@ DEF_VEC_ALLOC_P(ddr_p,heap); -extern tree find_data_references_in_loop (struct loop *, varray_type *); +extern tree find_data_references_in_loop (struct loop *, + VEC (data_reference_p, heap) **); extern void compute_data_dependences_for_loop (struct loop *, bool, - varray_type *, varray_type *); + VEC (data_reference_p, heap) **, + VEC (ddr_p, heap) **); extern void print_direction_vector (FILE *, lambda_vector, int); +extern void print_dir_vectors (FILE *, VEC (lambda_vector, heap) *, int); +extern void print_dist_vectors (FILE *, VEC (lambda_vector, heap) *, int); extern void dump_subscript (FILE *, struct subscript *); -extern void dump_ddrs (FILE *, varray_type); -extern void dump_dist_dir_vectors (FILE *, varray_type); +extern void dump_ddrs (FILE *, VEC (ddr_p, heap) *); +extern void dump_dist_dir_vectors (FILE *, VEC (ddr_p, heap) *); extern void dump_data_reference (FILE *, struct data_reference *); -extern void dump_data_references (FILE *, varray_type); +extern void dump_data_references (FILE *, VEC (data_reference_p, heap) *); +extern void debug_data_dependence_relation (struct data_dependence_relation *); extern void dump_data_dependence_relation (FILE *, struct data_dependence_relation *); -extern void dump_data_dependence_relations (FILE *, varray_type); +extern void dump_data_dependence_relations (FILE *, VEC (ddr_p, heap) *); extern void dump_data_dependence_direction (FILE *, enum data_dependence_direction); extern void free_dependence_relation (struct data_dependence_relation *); -extern void free_dependence_relations (varray_type); -extern void free_data_refs (varray_type); +extern void free_dependence_relations (VEC (ddr_p, heap) *); +extern void free_data_refs (VEC (data_reference_p, heap) *); extern struct data_reference *analyze_array (tree, tree, bool); extern void estimate_iters_using_array (tree, tree); - + +/* Return the index of the variable VAR in the LOOP_NEST array. */ + +static inline int +index_in_loop_nest (int var, VEC (loop_p, heap) *loop_nest) +{ + struct loop *loopi; + int var_index; + + for (var_index = 0; VEC_iterate (loop_p, loop_nest, var_index, loopi); + var_index++) + if (loopi->num == var) + break; + + return var_index; +} + +/* In lambda-code.c */ +bool lambda_transform_legal_p (lambda_trans_matrix, int, VEC (ddr_p, heap) *); #endif /* GCC_TREE_DATA_REF_H */ diff --git a/gcc/tree-dump.c b/gcc/tree-dump.c index 42c019f4062..d97dc83af13 100644 --- a/gcc/tree-dump.c +++ b/gcc/tree-dump.c @@ -1,5 +1,5 @@ /* Tree-dumping functionality for intermediate representation. - Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005 + Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. Written by Mark Mitchell @@ -32,6 +32,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include "tree-pass.h" #include "langhooks.h" #include "tree-iterator.h" +#include "real.h" static unsigned int queue (dump_info_p, tree, int); static void dump_index (dump_info_p, unsigned int); @@ -179,6 +180,19 @@ dump_int (dump_info_p di, const char *field, int i) di->column += 14; } +/* Dump the floating point value R, using FIELD to identify it. */ + +static void +dump_real (dump_info_p di, const char *field, const REAL_VALUE_TYPE *r) +{ + char buf[32]; + real_to_decimal (buf, r, sizeof (buf), 0, true); + dump_maybe_newline (di); + fprintf (di->stream, "%-4s: %s ", field, buf); + di->column += strlen (buf) + 7; +} + + /* Dump the string S. */ void @@ -531,6 +545,10 @@ dequeue_and_dump (dump_info_p di) dump_int (di, "lngt", TREE_STRING_LENGTH (t)); break; + case REAL_CST: + dump_real (di, "valu", TREE_REAL_CST_PTR (t)); + break; + case TRUTH_NOT_EXPR: case ADDR_EXPR: case INDIRECT_REF: diff --git a/gcc/tree-flow-inline.h b/gcc/tree-flow-inline.h index b8d8e012147..800e4105856 100644 --- a/gcc/tree-flow-inline.h +++ b/gcc/tree-flow-inline.h @@ -821,7 +821,10 @@ loop_containing_stmt (tree stmt) static inline bool is_call_clobbered (tree var) { - return bitmap_bit_p (cfun->ssa->call_clobbered_vars, DECL_UID (var)); + if (!MTAG_P (var)) + return DECL_CALL_CLOBBERED (var); + else + return bitmap_bit_p (cfun->ssa->call_clobbered_vars, DECL_UID (var)); } /* Mark variable VAR as being clobbered by function calls. */ @@ -829,6 +832,8 @@ static inline void mark_call_clobbered (tree var, unsigned int escape_type) { var_ann (var)->escape_mask |= escape_type; + if (!MTAG_P (var)) + DECL_CALL_CLOBBERED (var) = true; bitmap_set_bit (cfun->ssa->call_clobbered_vars, DECL_UID (var)); } @@ -840,6 +845,8 @@ clear_call_clobbered (tree var) ann->escape_mask = 0; if (MTAG_P (var) && TREE_CODE (var) != STRUCT_FIELD_TAG) MTAG_GLOBAL (var) = 0; + if (!MTAG_P (var)) + DECL_CALL_CLOBBERED (var) = false; bitmap_clear_bit (cfun->ssa->call_clobbered_vars, DECL_UID (var)); } @@ -847,6 +854,8 @@ clear_call_clobbered (tree var) static inline void mark_non_addressable (tree var) { + if (!MTAG_P (var)) + DECL_CALL_CLOBBERED (var) = false; bitmap_clear_bit (cfun->ssa->call_clobbered_vars, DECL_UID (var)); TREE_ADDRESSABLE (var) = 0; } diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index bc3491a11c8..5326de4e20e 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -1102,6 +1102,7 @@ copy_cfg_body (copy_body_data * id, gcov_type count, int frequency, basic_block bb; tree new_fndecl = NULL; int count_scale, frequency_scale; + int last; if (ENTRY_BLOCK_PTR_FOR_FUNCTION (src_cfun)->count) count_scale = (REG_BR_PROB_BASE * count @@ -1137,7 +1138,8 @@ copy_cfg_body (copy_body_data * id, gcov_type count, int frequency, if (cfun->eh) { id->eh_region_offset - = duplicate_eh_regions (cfun_to_copy, remap_decl_1, id, id->eh_region); + = duplicate_eh_regions (cfun_to_copy, remap_decl_1, id, + 0, id->eh_region); } /* Use aux pointers to map the original blocks to copy. */ FOR_EACH_BB_FN (bb, cfun_to_copy) @@ -1146,6 +1148,8 @@ copy_cfg_body (copy_body_data * id, gcov_type count, int frequency, bb->aux = new; new->aux = bb; } + + last = n_basic_blocks; /* Now that we've duplicated the blocks, duplicate their edges. */ FOR_ALL_BB_FN (bb, cfun_to_copy) copy_edges_for_bb (bb, count_scale, exit_block_map); @@ -1153,7 +1157,14 @@ copy_cfg_body (copy_body_data * id, gcov_type count, int frequency, FOR_ALL_BB_FN (bb, cfun_to_copy) copy_phis_for_bb (bb, id); FOR_ALL_BB_FN (bb, cfun_to_copy) - ((basic_block)bb->aux)->aux = bb->aux = NULL; + { + ((basic_block)bb->aux)->aux = NULL; + bb->aux = NULL; + } + /* Zero out AUX fields of newly created block during EH edge + insertion. */ + for (; last < n_basic_blocks; last++) + BASIC_BLOCK (last)->aux = NULL; entry_block_map->aux = NULL; exit_block_map->aux = NULL; @@ -2568,7 +2579,8 @@ optimize_inline_calls (tree fn, bool early) if (ENTRY_BLOCK_PTR->count) counts_to_freqs (); fold_cond_expr_cond (); - delete_unreachable_blocks (); + if (delete_unreachable_blocks ()) + rebuild_cgraph_edges (); #ifdef ENABLE_CHECKING verify_stmts (); verify_flow_info (); diff --git a/gcc/tree-loop-linear.c b/gcc/tree-loop-linear.c index da790dc842f..bf353e59f5b 100644 --- a/gcc/tree-loop-linear.c +++ b/gcc/tree-loop-linear.c @@ -41,7 +41,6 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include "tree-data-ref.h" #include "tree-scalar-evolution.h" #include "tree-pass.h" -#include "varray.h" #include "lambda.h" /* Linear loop transforms include any composition of interchange, @@ -90,8 +89,8 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA */ static void -gather_interchange_stats (varray_type dependence_relations, - varray_type datarefs, +gather_interchange_stats (VEC (ddr_p, heap) *dependence_relations, + VEC (data_reference_p, heap) *datarefs, struct loop *loop, struct loop *first_loop, unsigned int *dependence_steps, @@ -99,17 +98,15 @@ gather_interchange_stats (varray_type dependence_relations, unsigned int *access_strides) { unsigned int i, j; + struct data_dependence_relation *ddr; + struct data_reference *dr; *dependence_steps = 0; *nb_deps_not_carried_by_loop = 0; *access_strides = 0; - for (i = 0; i < VARRAY_ACTIVE_SIZE (dependence_relations); i++) + for (i = 0; VEC_iterate (ddr_p, dependence_relations, i, ddr); i++) { - struct data_dependence_relation *ddr = - (struct data_dependence_relation *) - VARRAY_GENERIC_PTR (dependence_relations, i); - /* If we don't know anything about this dependence, or the distance vector is NULL, or there is no dependence, then there is no reuse of data. */ @@ -134,10 +131,9 @@ gather_interchange_stats (varray_type dependence_relations, } /* Compute the access strides. */ - for (i = 0; i < VARRAY_ACTIVE_SIZE (datarefs); i++) + for (i = 0; VEC_iterate (data_reference_p, datarefs, i, dr); i++) { unsigned int it; - struct data_reference *dr = VARRAY_GENERIC_PTR (datarefs, i); tree stmt = DR_STMT (dr); struct loop *stmt_loop = loop_containing_stmt (stmt); struct loop *inner_loop = first_loop->inner; @@ -171,8 +167,8 @@ gather_interchange_stats (varray_type dependence_relations, static lambda_trans_matrix try_interchange_loops (lambda_trans_matrix trans, unsigned int depth, - varray_type dependence_relations, - varray_type datarefs, + VEC (ddr_p, heap) *dependence_relations, + VEC (data_reference_p, heap) *datarefs, struct loop *first_loop) { struct loop *loop_i; @@ -184,8 +180,7 @@ try_interchange_loops (lambda_trans_matrix trans, /* When there is an unknown relation in the dependence_relations, we know that it is no worth looking at this loop nest: give up. */ - ddr = (struct data_dependence_relation *) - VARRAY_GENERIC_PTR (dependence_relations, 0); + ddr = VEC_index (ddr_p, dependence_relations, 0); if (ddr == NULL || DDR_ARE_DEPENDENT (ddr) == chrec_dont_know) return trans; @@ -250,8 +245,8 @@ linear_transform_loops (struct loops *loops) for (i = 1; i < loops->num; i++) { unsigned int depth = 0; - varray_type datarefs; - varray_type dependence_relations; + VEC (ddr_p, heap) *dependence_relations; + VEC (data_reference_p, heap) *datarefs; struct loop *loop_nest = loops->parray[i]; struct loop *temp; lambda_loopnest before, after; @@ -292,31 +287,17 @@ linear_transform_loops (struct loops *loops) /* Analyze data references and dependence relations using scev. */ - VARRAY_GENERIC_PTR_INIT (datarefs, 10, "datarefs"); - VARRAY_GENERIC_PTR_INIT (dependence_relations, 10, - "dependence_relations"); - - - compute_data_dependences_for_loop (loop_nest, true, - &datarefs, &dependence_relations); + datarefs = VEC_alloc (data_reference_p, heap, 10); + dependence_relations = VEC_alloc (ddr_p, heap, 10 * 10); + compute_data_dependences_for_loop (loop_nest, true, &datarefs, + &dependence_relations); + if (dump_file && (dump_flags & TDF_DETAILS)) - { - unsigned int j; - for (j = 0; j < VARRAY_ACTIVE_SIZE (dependence_relations); j++) - { - struct data_dependence_relation *ddr = - (struct data_dependence_relation *) - VARRAY_GENERIC_PTR (dependence_relations, j); + dump_ddrs (dump_file, dependence_relations); - if (DDR_ARE_DEPENDENT (ddr) == NULL_TREE) - dump_data_dependence_relation (dump_file, ddr); - } - fprintf (dump_file, "\n\n"); - } /* Build the transformation matrix. */ trans = lambda_trans_matrix_new (depth, depth); lambda_matrix_id (LTM_MATRIX (trans), depth); - trans = try_interchange_loops (trans, depth, dependence_relations, datarefs, loop_nest); @@ -334,8 +315,10 @@ linear_transform_loops (struct loops *loops) fprintf (dump_file, "Can't transform loop, transform is illegal:\n"); continue; } + if (!perfect_nest_p (loop_nest)) need_perfect_nest = true; + before = gcc_loopnest_to_lambda_loopnest (loops, loop_nest, &oldivs, &invariants, @@ -350,18 +333,23 @@ linear_transform_loops (struct loops *loops) } after = lambda_loopnest_transform (before, trans); + if (dump_file) { fprintf (dump_file, "After:\n"); print_lambda_loopnest (dump_file, after, 'u'); } + lambda_loopnest_to_gcc_loopnest (loop_nest, oldivs, invariants, after, trans); + if (dump_file) fprintf (dump_file, "Successfully transformed loop.\n"); + free_dependence_relations (dependence_relations); free_data_refs (datarefs); } + VEC_free (tree, heap, oldivs); VEC_free (tree, heap, invariants); scev_reset (); diff --git a/gcc/tree-mudflap.c b/gcc/tree-mudflap.c index 5a1444d1dba..245b940453d 100644 --- a/gcc/tree-mudflap.c +++ b/gcc/tree-mudflap.c @@ -728,6 +728,10 @@ mf_xform_derefs_1 (block_stmt_iterator *iter, tree *tp, t = *tp; type = TREE_TYPE (t); + + if (type == error_mark_node) + return; + size = TYPE_SIZE_UNIT (type); switch (TREE_CODE (t)) @@ -1252,6 +1256,9 @@ mudflap_finish_file (void) { gcc_assert (DECL_P (obj)); + if (TREE_TYPE (obj) == error_mark_node) + continue; + if (mf_marked_p (obj)) continue; diff --git a/gcc/tree-object-size.c b/gcc/tree-object-size.c index 068bacf4645..9c510bbc00f 100644 --- a/gcc/tree-object-size.c +++ b/gcc/tree-object-size.c @@ -1,5 +1,5 @@ /* __builtin_object_size (ptr, object_size_type) computation - Copyright (C) 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. Contributed by Jakub Jelinek This file is part of GCC. @@ -134,7 +134,7 @@ compute_object_offset (tree expr, tree var) code = MINUS_EXPR; t = fold_build1 (NEGATE_EXPR, TREE_TYPE (t), t); } - t = convert (sizetype, t); + t = fold_convert (sizetype, t); off = size_binop (MULT_EXPR, TYPE_SIZE_UNIT (TREE_TYPE (expr)), t); break; diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h index dd6d9c1560a..959c2de4740 100644 --- a/gcc/tree-pass.h +++ b/gcc/tree-pass.h @@ -258,6 +258,7 @@ extern struct tree_opt_pass pass_iv_optimize; extern struct tree_opt_pass pass_tree_loop_done; extern struct tree_opt_pass pass_ch; extern struct tree_opt_pass pass_ccp; +extern struct tree_opt_pass pass_phi_only_cprop; extern struct tree_opt_pass pass_build_ssa; extern struct tree_opt_pass pass_del_ssa; extern struct tree_opt_pass pass_dominator; @@ -296,7 +297,6 @@ extern struct tree_opt_pass pass_sink_code; extern struct tree_opt_pass pass_fre; extern struct tree_opt_pass pass_linear_transform; extern struct tree_opt_pass pass_copy_prop; -extern struct tree_opt_pass pass_phi_only_copy_prop; extern struct tree_opt_pass pass_store_ccp; extern struct tree_opt_pass pass_store_copy_prop; extern struct tree_opt_pass pass_vrp; @@ -305,6 +305,7 @@ extern struct tree_opt_pass pass_uncprop; extern struct tree_opt_pass pass_return_slot; extern struct tree_opt_pass pass_reassoc; extern struct tree_opt_pass pass_rebuild_cgraph_edges; +extern struct tree_opt_pass pass_reset_cc_flags; /* IPA Passes */ extern struct tree_opt_pass pass_ipa_cp; @@ -325,7 +326,6 @@ extern struct tree_opt_pass pass_free_datastructures; extern struct tree_opt_pass pass_init_datastructures; extern struct tree_opt_pass pass_fixup_cfg; -extern struct tree_opt_pass pass_remove_unnecessary_notes; extern struct tree_opt_pass pass_init_function; extern struct tree_opt_pass pass_jump; extern struct tree_opt_pass pass_insn_locators_initialize; diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c index 23bea839162..a8a33a50fcf 100644 --- a/gcc/tree-pretty-print.c +++ b/gcc/tree-pretty-print.c @@ -1557,8 +1557,8 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags, break; case RESX_EXPR: - pp_string (buffer, "resx"); - /* ??? Any sensible way to present the eh region? */ + pp_string (buffer, "resx "); + dump_generic_node (buffer, TREE_OPERAND (node, 0), spc, flags, false); break; case ASM_EXPR: diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c index a346aa5d9e2..6fcfaa4fa19 100644 --- a/gcc/tree-scalar-evolution.c +++ b/gcc/tree-scalar-evolution.c @@ -476,12 +476,12 @@ compute_overall_effect_of_inner_loop (struct loop *loop, tree evolution_fn) else { tree res; + tree type = chrec_type (nb_iter); /* Number of iterations is off by one (the ssa name we analyze must be defined before the exit). */ - nb_iter = chrec_fold_minus (chrec_type (nb_iter), - nb_iter, - build_int_cst_type (chrec_type (nb_iter), 1)); + nb_iter = chrec_fold_minus (type, nb_iter, + build_int_cst (type, 1)); /* evolution_fn is the evolution function in LOOP. Get its value in the nb_iter-th iteration. */ @@ -510,10 +510,8 @@ compute_overall_effect_of_inner_loop (struct loop *loop, tree evolution_fn) bool chrec_is_positive (tree chrec, bool *value) { - bool value0, value1; - bool value2; - tree end_value; - tree nb_iter; + bool value0, value1, value2; + tree type, end_value, nb_iter; switch (TREE_CODE (chrec)) { @@ -542,17 +540,14 @@ chrec_is_positive (tree chrec, bool *value) if (chrec_contains_undetermined (nb_iter)) return false; - nb_iter = chrec_fold_minus - (chrec_type (nb_iter), nb_iter, - build_int_cst (chrec_type (nb_iter), 1)); + type = chrec_type (nb_iter); + nb_iter = chrec_fold_minus (type, nb_iter, build_int_cst (type, 1)); #if 0 /* TODO -- If the test is after the exit, we may decrease the number of iterations by one. */ if (after_exit) - nb_iter = chrec_fold_minus - (chrec_type (nb_iter), nb_iter, - build_int_cst (chrec_type (nb_iter), 1)); + nb_iter = chrec_fold_minus (type, nb_iter, build_int_cst (type, 1)); #endif end_value = chrec_apply (CHREC_VARIABLE (chrec), chrec, nb_iter); @@ -659,18 +654,19 @@ get_scalar_evolution (tree scalar) part for this loop. */ static tree -add_to_evolution_1 (unsigned loop_nb, - tree chrec_before, - tree to_add) +add_to_evolution_1 (unsigned loop_nb, tree chrec_before, tree to_add, + tree at_stmt) { + tree type, left, right; + switch (TREE_CODE (chrec_before)) { case POLYNOMIAL_CHREC: if (CHREC_VARIABLE (chrec_before) <= loop_nb) { unsigned var; - tree left, right; - tree type = chrec_type (chrec_before); + + type = chrec_type (chrec_before); /* When there is no evolution part in this loop, build it. */ if (CHREC_VARIABLE (chrec_before) < loop_nb) @@ -688,21 +684,30 @@ add_to_evolution_1 (unsigned loop_nb, right = CHREC_RIGHT (chrec_before); } - return build_polynomial_chrec - (var, left, chrec_fold_plus (type, right, to_add)); + to_add = chrec_convert (type, to_add, at_stmt); + right = chrec_convert (type, right, at_stmt); + right = chrec_fold_plus (type, right, to_add); + return build_polynomial_chrec (var, left, right); } else - /* Search the evolution in LOOP_NB. */ - return build_polynomial_chrec - (CHREC_VARIABLE (chrec_before), - add_to_evolution_1 (loop_nb, CHREC_LEFT (chrec_before), to_add), - CHREC_RIGHT (chrec_before)); + { + /* Search the evolution in LOOP_NB. */ + left = add_to_evolution_1 (loop_nb, CHREC_LEFT (chrec_before), + to_add, at_stmt); + right = CHREC_RIGHT (chrec_before); + right = chrec_convert (chrec_type (left), right, at_stmt); + return build_polynomial_chrec (CHREC_VARIABLE (chrec_before), + left, right); + } default: /* These nodes do not depend on a loop. */ if (chrec_before == chrec_dont_know) return chrec_dont_know; - return build_polynomial_chrec (loop_nb, chrec_before, to_add); + + left = chrec_before; + right = chrec_convert (chrec_type (left), to_add, at_stmt); + return build_polynomial_chrec (loop_nb, left, right); } } @@ -841,10 +846,8 @@ add_to_evolution_1 (unsigned loop_nb, */ static tree -add_to_evolution (unsigned loop_nb, - tree chrec_before, - enum tree_code code, - tree to_add) +add_to_evolution (unsigned loop_nb, tree chrec_before, enum tree_code code, + tree to_add, tree at_stmt) { tree type = chrec_type (to_add); tree res = NULL_TREE; @@ -874,7 +877,7 @@ add_to_evolution (unsigned loop_nb, ? build_real (type, dconstm1) : build_int_cst_type (type, -1)); - res = add_to_evolution_1 (loop_nb, chrec_before, to_add); + res = add_to_evolution_1 (loop_nb, chrec_before, to_add, at_stmt); if (dump_file && (dump_flags & TDF_DETAILS)) { @@ -892,8 +895,9 @@ static inline tree set_nb_iterations_in_loop (struct loop *loop, tree res) { - res = chrec_fold_plus (chrec_type (res), res, - build_int_cst_type (chrec_type (res), 1)); + tree type = chrec_type (res); + + res = chrec_fold_plus (type, res, build_int_cst (type, 1)); /* FIXME HWI: However we want to store one iteration less than the count of the loop in order to be compatible with the other @@ -1094,7 +1098,7 @@ follow_ssa_edge_in_rhs (struct loop *loop, tree at_stmt, tree rhs, *evolution_of_loop = add_to_evolution (loop->num, chrec_convert (type_rhs, evol, at_stmt), - PLUS_EXPR, rhs1); + PLUS_EXPR, rhs1, at_stmt); else if (res == t_false) { @@ -1106,7 +1110,7 @@ follow_ssa_edge_in_rhs (struct loop *loop, tree at_stmt, tree rhs, *evolution_of_loop = add_to_evolution (loop->num, chrec_convert (type_rhs, *evolution_of_loop, at_stmt), - PLUS_EXPR, rhs0); + PLUS_EXPR, rhs0, at_stmt); else if (res == t_dont_know) *evolution_of_loop = chrec_dont_know; @@ -1127,7 +1131,7 @@ follow_ssa_edge_in_rhs (struct loop *loop, tree at_stmt, tree rhs, *evolution_of_loop = add_to_evolution (loop->num, chrec_convert (type_rhs, *evolution_of_loop, at_stmt), - PLUS_EXPR, rhs1); + PLUS_EXPR, rhs1, at_stmt); else if (res == t_dont_know) *evolution_of_loop = chrec_dont_know; @@ -1145,7 +1149,7 @@ follow_ssa_edge_in_rhs (struct loop *loop, tree at_stmt, tree rhs, *evolution_of_loop = add_to_evolution (loop->num, chrec_convert (type_rhs, *evolution_of_loop, at_stmt), - PLUS_EXPR, rhs0); + PLUS_EXPR, rhs0, at_stmt); else if (res == t_dont_know) *evolution_of_loop = chrec_dont_know; @@ -1175,7 +1179,7 @@ follow_ssa_edge_in_rhs (struct loop *loop, tree at_stmt, tree rhs, if (res == t_true) *evolution_of_loop = add_to_evolution (loop->num, chrec_convert (type_rhs, *evolution_of_loop, at_stmt), - MINUS_EXPR, rhs1); + MINUS_EXPR, rhs1, at_stmt); else if (res == t_dont_know) *evolution_of_loop = chrec_dont_know; @@ -1723,7 +1727,7 @@ analyze_scalar_evolution_1 (struct loop *loop, tree var, tree res) basic_block bb; struct loop *def_loop; - if (loop == NULL) + if (loop == NULL || TREE_CODE (type) == VECTOR_TYPE) return chrec_dont_know; if (TREE_CODE (var) != SSA_NAME) @@ -1950,6 +1954,7 @@ instantiate_parameters_1 (struct loop *loop, tree chrec, int flags, htab_t cache tree res, op0, op1, op2; basic_block def_bb; struct loop *def_loop; + tree type = chrec_type (chrec); /* Give up if the expression is larger than the MAX that we allow. */ if (size_expr++ > PARAM_VALUE (PARAM_SCEV_MAX_EXPR_SIZE)) @@ -2043,7 +2048,10 @@ instantiate_parameters_1 (struct loop *loop, tree chrec, int flags, htab_t cache if (CHREC_LEFT (chrec) != op0 || CHREC_RIGHT (chrec) != op1) - chrec = build_polynomial_chrec (CHREC_VARIABLE (chrec), op0, op1); + { + op1 = chrec_convert (chrec_type (op0), op1, NULL_TREE); + chrec = build_polynomial_chrec (CHREC_VARIABLE (chrec), op0, op1); + } return chrec; case PLUS_EXPR: @@ -2059,7 +2067,11 @@ instantiate_parameters_1 (struct loop *loop, tree chrec, int flags, htab_t cache if (TREE_OPERAND (chrec, 0) != op0 || TREE_OPERAND (chrec, 1) != op1) - chrec = chrec_fold_plus (TREE_TYPE (chrec), op0, op1); + { + op0 = chrec_convert (type, op0, NULL_TREE); + op1 = chrec_convert (type, op1, NULL_TREE); + chrec = chrec_fold_plus (type, op0, op1); + } return chrec; case MINUS_EXPR: @@ -2075,7 +2087,11 @@ instantiate_parameters_1 (struct loop *loop, tree chrec, int flags, htab_t cache if (TREE_OPERAND (chrec, 0) != op0 || TREE_OPERAND (chrec, 1) != op1) - chrec = chrec_fold_minus (TREE_TYPE (chrec), op0, op1); + { + op0 = chrec_convert (type, op0, NULL_TREE); + op1 = chrec_convert (type, op1, NULL_TREE); + chrec = chrec_fold_minus (type, op0, op1); + } return chrec; case MULT_EXPR: @@ -2091,7 +2107,11 @@ instantiate_parameters_1 (struct loop *loop, tree chrec, int flags, htab_t cache if (TREE_OPERAND (chrec, 0) != op0 || TREE_OPERAND (chrec, 1) != op1) - chrec = chrec_fold_multiply (TREE_TYPE (chrec), op0, op1); + { + op0 = chrec_convert (type, op0, NULL_TREE); + op1 = chrec_convert (type, op1, NULL_TREE); + chrec = chrec_fold_multiply (type, op0, op1); + } return chrec; case NOP_EXPR: diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index 1d0f63c651d..2a759a5ad38 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -2844,6 +2844,7 @@ create_sft (tree var, tree field, unsigned HOST_WIDE_INT offset, TREE_PUBLIC (subvar) = TREE_PUBLIC (var); TREE_STATIC (subvar) = TREE_STATIC (var); TREE_READONLY (subvar) = TREE_READONLY (var); + TREE_ADDRESSABLE (subvar) = TREE_ADDRESSABLE (var); /* Add the new variable to REFERENCED_VARS. */ ann = get_var_ann (subvar); @@ -3184,3 +3185,34 @@ struct tree_opt_pass pass_create_structure_vars = TODO_dump_func, /* todo_flags_finish */ 0 /* letter */ }; + +/* Reset the DECL_CALL_CLOBBERED flags on our referenced vars. In + theory, this only needs to be done for globals. */ + +static unsigned int +reset_cc_flags (void) +{ + tree var; + referenced_var_iterator rvi; + + FOR_EACH_REFERENCED_VAR (var, rvi) + DECL_CALL_CLOBBERED (var) = false; + return 0; +} + +struct tree_opt_pass pass_reset_cc_flags = +{ + NULL, /* name */ + NULL, /* gate */ + reset_cc_flags, /* execute */ + NULL, /* sub */ + NULL, /* next */ + 0, /* static_pass_number */ + 0, /* tv_id */ + PROP_referenced_vars |PROP_cfg, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + 0, /* todo_flags_finish */ + 0 /* letter */ +}; diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index 8f0cec5b376..67ea0a7a47f 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -1,5 +1,5 @@ /* Conditional constant propagation pass for the GNU compiler. - Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 + Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. Adapted from original RTL SSA-CCP by Daniel Berlin Adapted to GIMPLE trees by Diego Novillo @@ -1879,7 +1879,7 @@ maybe_fold_stmt_addition (tree expr) if (TREE_CODE (min_idx) != INTEGER_CST) break; - array_idx = convert (TREE_TYPE (min_idx), array_idx); + array_idx = fold_convert (TREE_TYPE (min_idx), array_idx); if (!integer_zerop (min_idx)) array_idx = int_const_binop (MINUS_EXPR, array_idx, min_idx, 0); @@ -1887,7 +1887,7 @@ maybe_fold_stmt_addition (tree expr) } /* Convert the index to a byte offset. */ - array_idx = convert (sizetype, array_idx); + array_idx = fold_convert (sizetype, array_idx); array_idx = int_const_binop (MULT_EXPR, array_idx, elt_size, 0); /* Update the operands for the next round, or for folding. */ diff --git a/gcc/tree-ssa-copy.c b/gcc/tree-ssa-copy.c index e0e2a4faf1f..d3bc53364fd 100644 --- a/gcc/tree-ssa-copy.c +++ b/gcc/tree-ssa-copy.c @@ -550,14 +550,6 @@ copy_prop_visit_assignment (tree stmt, tree *result_p) if (!may_propagate_copy (lhs, rhs)) return SSA_PROP_VARYING; - /* Avoid copy propagation from an inner into an outer loop. - Otherwise, this may move loop variant variables outside of - their loops and prevent coalescing opportunities. If the - value was loop invariant, it will be hoisted by LICM and - exposed for copy propagation. */ - if (loop_depth_of_name (rhs) > loop_depth_of_name (lhs)) - return SSA_PROP_VARYING; - /* Notice that in the case of assignments, we make the LHS be a copy of RHS's value, not of RHS itself. This avoids keeping unnecessary copy-of chains (assignments cannot be in a cycle @@ -671,7 +663,6 @@ copy_prop_visit_cond_stmt (tree stmt, edge *taken_edge_p) static enum ssa_prop_result copy_prop_visit_stmt (tree stmt, edge *taken_edge_p, tree *result_p) { - stmt_ann_t ann; enum ssa_prop_result retval; if (dump_file && (dump_flags & TDF_DETAILS)) @@ -681,8 +672,6 @@ copy_prop_visit_stmt (tree stmt, edge *taken_edge_p, tree *result_p) fprintf (dump_file, "\n"); } - ann = stmt_ann (stmt); - if (TREE_CODE (stmt) == MODIFY_EXPR && TREE_CODE (TREE_OPERAND (stmt, 1)) == SSA_NAME && (do_store_copy_prop @@ -843,7 +832,7 @@ copy_prop_visit_phi_node (tree phi) opportunities. */ static void -init_copy_prop (bool phis_only) +init_copy_prop (void) { basic_block bb; @@ -856,37 +845,54 @@ init_copy_prop (bool phis_only) FOR_EACH_BB (bb) { block_stmt_iterator si; - tree phi; + tree phi, def; + int depth = bb->loop_depth; for (si = bsi_start (bb); !bsi_end_p (si); bsi_next (&si)) { tree stmt = bsi_stmt (si); + ssa_op_iter iter; /* The only statements that we care about are those that may generate useful copies. We also need to mark conditional jumps so that their outgoing edges are added to the work - lists of the propagator. */ + lists of the propagator. + + Avoid copy propagation from an inner into an outer loop. + Otherwise, this may move loop variant variables outside of + their loops and prevent coalescing opportunities. If the + value was loop invariant, it will be hoisted by LICM and + exposed for copy propagation. */ if (stmt_ends_bb_p (stmt)) DONT_SIMULATE_AGAIN (stmt) = false; - else if (!phis_only && stmt_may_generate_copy (stmt)) + else if (stmt_may_generate_copy (stmt) + && loop_depth_of_name (TREE_OPERAND (stmt, 1)) <= depth) DONT_SIMULATE_AGAIN (stmt) = false; else - { - tree def; - ssa_op_iter iter; - - /* No need to simulate this statement anymore. */ - DONT_SIMULATE_AGAIN (stmt) = true; - - /* Mark all the outputs of this statement as not being - the copy of anything. */ - FOR_EACH_SSA_TREE_OPERAND (def, stmt, iter, SSA_OP_ALL_DEFS) - set_copy_of_val (def, def, NULL_TREE); - } + DONT_SIMULATE_AGAIN (stmt) = true; + + /* Mark all the outputs of this statement as not being + the copy of anything. */ + FOR_EACH_SSA_TREE_OPERAND (def, stmt, iter, SSA_OP_ALL_DEFS) + if (DONT_SIMULATE_AGAIN (stmt)) + set_copy_of_val (def, def, NULL_TREE); + else + cached_last_copy_of[SSA_NAME_VERSION (def)] = def; } for (phi = phi_nodes (bb); phi; phi = PHI_CHAIN (phi)) - DONT_SIMULATE_AGAIN (phi) = false; + { + def = PHI_RESULT (phi); + if (!do_store_copy_prop && !is_gimple_reg (def)) + DONT_SIMULATE_AGAIN (phi) = true; + else + DONT_SIMULATE_AGAIN (phi) = false; + + if (DONT_SIMULATE_AGAIN (phi)) + set_copy_of_val (def, def, NULL_TREE); + else + cached_last_copy_of[SSA_NAME_VERSION (def)] = def; + } } } @@ -1027,10 +1033,10 @@ fini_copy_prop (void) x_53 and x_54 are both copies of x_898. */ static void -execute_copy_prop (bool store_copy_prop, bool phis_only) +execute_copy_prop (bool store_copy_prop) { do_store_copy_prop = store_copy_prop; - init_copy_prop (phis_only); + init_copy_prop (); ssa_propagate (copy_prop_visit_stmt, copy_prop_visit_phi_node); fini_copy_prop (); } @@ -1045,7 +1051,7 @@ gate_copy_prop (void) static unsigned int do_copy_prop (void) { - execute_copy_prop (false, false); + execute_copy_prop (false); return 0; } @@ -1070,36 +1076,6 @@ struct tree_opt_pass pass_copy_prop = 0 /* letter */ }; - -static unsigned int -do_phi_only_copy_prop (void) -{ - execute_copy_prop (false, true); - return 0; -} - -struct tree_opt_pass pass_phi_only_copy_prop = -{ - "phionlycopyprop", /* name */ - gate_copy_prop, /* gate */ - do_phi_only_copy_prop, /* execute */ - NULL, /* sub */ - NULL, /* next */ - 0, /* static_pass_number */ - TV_TREE_COPY_PROP, /* tv_id */ - PROP_ssa | PROP_alias | PROP_cfg, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - TODO_cleanup_cfg - | TODO_dump_func - | TODO_ggc_collect - | TODO_verify_ssa - | TODO_update_ssa, /* todo_flags_finish */ - 0 /* letter */ -}; - - static bool gate_store_copy_prop (void) { @@ -1114,7 +1090,7 @@ static unsigned int store_copy_prop (void) { /* If STORE-COPY-PROP is not enabled, we just run regular COPY-PROP. */ - execute_copy_prop (flag_tree_store_copy_prop != 0, false); + execute_copy_prop (flag_tree_store_copy_prop != 0); return 0; } diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c index 5a28e7830e2..45034dd2ce7 100644 --- a/gcc/tree-ssa-dom.c +++ b/gcc/tree-ssa-dom.c @@ -2020,3 +2020,494 @@ avail_expr_eq (const void *p1, const void *p2) return false; } + +/* PHI-ONLY copy and constant propagation. This pass is meant to clean + up degenerate PHIs created by or exposed by jump threading. */ + +/* Given PHI, return its RHS if the PHI is a degenerate, otherwise return + NULL. */ + +static tree +degenerate_phi_result (tree phi) +{ + tree lhs = PHI_RESULT (phi); + tree val = NULL; + int i; + + /* Ignoring arguments which are the same as LHS, if all the remaining + arguments are the same, then the PHI is a degenerate and has the + value of that common argument. */ + for (i = 0; i < PHI_NUM_ARGS (phi); i++) + { + tree arg = PHI_ARG_DEF (phi, i); + + if (arg == lhs) + continue; + else if (!val) + val = arg; + else if (!operand_equal_p (arg, val, 0)) + break; + } + return (i == PHI_NUM_ARGS (phi) ? val : NULL); +} + +/* Given a tree node T, which is either a PHI_NODE or MODIFY_EXPR, + remove it from the IL. */ + +static void +remove_stmt_or_phi (tree t) +{ + if (TREE_CODE (t) == PHI_NODE) + remove_phi_node (t, NULL); + else + { + block_stmt_iterator bsi = bsi_for_stmt (t); + bsi_remove (&bsi, true); + } +} + +/* Given a tree node T, which is either a PHI_NODE or MODIFY_EXPR, + return the "rhs" of the node, in the case of a non-degenerate + PHI, NULL is returned. */ + +static tree +get_rhs_or_phi_arg (tree t) +{ + if (TREE_CODE (t) == PHI_NODE) + return degenerate_phi_result (t); + else if (TREE_CODE (t) == MODIFY_EXPR) + return TREE_OPERAND (t, 1); + gcc_unreachable (); +} + + +/* Given a tree node T, which is either a PHI_NODE or a MODIFY_EXPR, + return the "lhs" of the node. */ + +static tree +get_lhs_or_phi_result (tree t) +{ + if (TREE_CODE (t) == PHI_NODE) + return PHI_RESULT (t); + else if (TREE_CODE (t) == MODIFY_EXPR) + return TREE_OPERAND (t, 0); + gcc_unreachable (); +} + +/* Propagate RHS into all uses of LHS (when possible). + + RHS and LHS are derived from STMT, which is passed in solely so + that we can remove it if propagation is successful. + + When propagating into a PHI node or into a statement which turns + into a trivial copy or constant initialization, set the + appropriate bit in INTERESTING_NAMEs so that we will visit those + nodes as well in an effort to pick up secondary optimization + opportunities. */ + +static void +propagate_rhs_into_lhs (tree stmt, tree lhs, tree rhs, bitmap interesting_names) +{ + /* First verify that propagation is valid and isn't going to move a + loop variant variable outside its loop. */ + if (! SSA_NAME_OCCURS_IN_ABNORMAL_PHI (lhs) + && (TREE_CODE (rhs) != SSA_NAME + || ! SSA_NAME_OCCURS_IN_ABNORMAL_PHI (rhs)) + && may_propagate_copy (lhs, rhs) + && loop_depth_of_name (lhs) >= loop_depth_of_name (rhs)) + { + use_operand_p use_p; + imm_use_iterator iter; + bool all = true; + + /* Dump details. */ + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fprintf (dump_file, " Replacing '"); + print_generic_expr (dump_file, lhs, dump_flags); + fprintf (dump_file, "' with %s '", + (TREE_CODE (rhs) != SSA_NAME ? "constant" : "variable")); + print_generic_expr (dump_file, rhs, dump_flags); + fprintf (dump_file, "'\n"); + } + + /* Walk over every use of LHS and try to replace the use with RHS. + At this point the only reason why such a propagation would not + be successful would be if the use occurs in an ASM_EXPR. */ + repeat: + FOR_EACH_IMM_USE_SAFE (use_p, iter, lhs) + { + tree use_stmt = USE_STMT (use_p); + + /* It's not always safe to propagate into an ASM_EXPR. */ + if (TREE_CODE (use_stmt) == ASM_EXPR + && ! may_propagate_copy_into_asm (lhs)) + { + all = false; + continue; + } + + /* Dump details. */ + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fprintf (dump_file, " Original statement:"); + print_generic_expr (dump_file, use_stmt, dump_flags); + fprintf (dump_file, "\n"); + } + + /* Propagate the RHS into this use of the LHS. */ + propagate_value (use_p, rhs); + + /* Special cases to avoid useless calls into the folding + routines, operand scanning, etc. + + First, propagation into a PHI may cause the PHI to become + a degenerate, so mark the PHI as interesting. No other + actions are necessary. + + Second, if we're propagating a virtual operand and the + propagation does not change the underlying _DECL node for + the virtual operand, then no further actions are necessary. */ + if (TREE_CODE (use_stmt) == PHI_NODE + || (! is_gimple_reg (lhs) + && TREE_CODE (rhs) == SSA_NAME + && SSA_NAME_VAR (lhs) == SSA_NAME_VAR (rhs))) + { + /* Dump details. */ + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fprintf (dump_file, " Updated statement:"); + print_generic_expr (dump_file, use_stmt, dump_flags); + fprintf (dump_file, "\n"); + } + + /* Propagation into a PHI may expose new degenerate PHIs, + so mark the result of the PHI as interesting. */ + if (TREE_CODE (use_stmt) == PHI_NODE) + { + tree result = get_lhs_or_phi_result (use_stmt); + bitmap_set_bit (interesting_names, SSA_NAME_VERSION (result)); + } + continue; + } + + /* From this point onward we are propagating into a + real statement. Folding may (or may not) be possible, + we may expose new operands, expose dead EH edges, + etc. */ + fold_stmt_inplace (use_stmt); + + /* Sometimes propagation can expose new operands to the + renamer. Note this will call update_stmt at the + appropriate time. */ + mark_new_vars_to_rename (use_stmt); + + /* Dump details. */ + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fprintf (dump_file, " Updated statement:"); + print_generic_expr (dump_file, use_stmt, dump_flags); + fprintf (dump_file, "\n"); + } + + /* If we replaced a variable index with a constant, then + we would need to update the invariant flag for ADDR_EXPRs. */ + if (TREE_CODE (use_stmt) == MODIFY_EXPR + && TREE_CODE (TREE_OPERAND (use_stmt, 1)) == ADDR_EXPR) + recompute_tree_invariant_for_addr_expr (TREE_OPERAND (use_stmt, 1)); + + /* If we cleaned up EH information from the statement, + mark its containing block as needing EH cleanups. */ + if (maybe_clean_or_replace_eh_stmt (use_stmt, use_stmt)) + { + bitmap_set_bit (need_eh_cleanup, bb_for_stmt (use_stmt)->index); + if (dump_file && (dump_flags & TDF_DETAILS)) + fprintf (dump_file, " Flagged to clear EH edges.\n"); + } + + /* Propagation may expose new trivial copy/constant propagation + opportunities. */ + if (TREE_CODE (use_stmt) == MODIFY_EXPR + && TREE_CODE (TREE_OPERAND (use_stmt, 0)) == SSA_NAME + && (TREE_CODE (TREE_OPERAND (use_stmt, 1)) == SSA_NAME + || is_gimple_min_invariant (TREE_OPERAND (use_stmt, 1)))) + { + tree result = get_lhs_or_phi_result (use_stmt); + bitmap_set_bit (interesting_names, SSA_NAME_VERSION (result)); + } + + /* Propagation into these nodes may make certain edges in + the CFG unexecutable. We want to identify them as PHI nodes + at the destination of those unexecutable edges may become + degenerates. */ + else if (TREE_CODE (use_stmt) == COND_EXPR + || TREE_CODE (use_stmt) == SWITCH_EXPR + || TREE_CODE (use_stmt) == GOTO_EXPR) + { + tree val; + + if (TREE_CODE (use_stmt) == COND_EXPR) + val = COND_EXPR_COND (use_stmt); + else if (TREE_CODE (use_stmt) == SWITCH_EXPR) + val = SWITCH_COND (use_stmt); + else + val = GOTO_DESTINATION (use_stmt); + + if (is_gimple_min_invariant (val)) + { + basic_block bb = bb_for_stmt (use_stmt); + edge te = find_taken_edge (bb, val); + edge_iterator ei; + edge e; + block_stmt_iterator bsi; + + /* Remove all outgoing edges except TE. */ + for (ei = ei_start (bb->succs); (e = ei_safe_edge (ei));) + { + if (e != te) + { + tree phi; + + /* Mark all the PHI nodes at the destination of + the unexecutable edge as interesting. */ + for (phi = phi_nodes (e->dest); + phi; + phi = PHI_CHAIN (phi)) + { + tree result = PHI_RESULT (phi); + int version = SSA_NAME_VERSION (result); + + bitmap_set_bit (interesting_names, version); + } + + te->probability += e->probability; + + te->count += e->count; + remove_edge (e); + cfg_altered = 1; + } + else + ei_next (&ei); + } + + bsi = bsi_last (bb_for_stmt (use_stmt)); + bsi_remove (&bsi, true); + + /* And fixup the flags on the single remaining edge. */ + te->flags &= ~(EDGE_TRUE_VALUE | EDGE_FALSE_VALUE); + te->flags &= ~EDGE_ABNORMAL; + te->flags |= EDGE_FALLTHRU; + if (te->probability > REG_BR_PROB_BASE) + te->probability = REG_BR_PROB_BASE; + } + } + } + + /* Due to a bug in the immediate use iterator code, we can + miss visiting uses in some cases when there is more than + one use in a statement. Missing a use can cause a multitude + of problems if we expected to eliminate all uses and remove + the defining statement. + + Until Andrew can fix the iterator, this hack will detect + the cases which cause us problems. Namely if ALL is set + and we still have some immediate uses, then we must have + skipped one or more in the loop above. So just re-execute + the loop. + + The maximum number of times we can re-execute the loop is + bounded by the maximum number of times a given SSA_NAME + appears in a single statement. */ + if (all && num_imm_uses (lhs) != 0) + goto repeat; + + /* If we were able to propagate away all uses of LHS, then + we can remove STMT. */ + if (all) + remove_stmt_or_phi (stmt); + } +} + +/* T is either a PHI node (potentally a degenerate PHI node) or + a statement that is a trivial copy or constant initialization. + + Attempt to eliminate T by propagating its RHS into all uses of + its LHS. This may in turn set new bits in INTERESTING_NAMES + for nodes we want to revisit later. + + All exit paths should clear INTERESTING_NAMES for the result + of T. */ + +static void +eliminate_const_or_copy (tree t, bitmap interesting_names) +{ + tree lhs = get_lhs_or_phi_result (t); + tree rhs; + int version = SSA_NAME_VERSION (lhs); + + /* If the LHS of this statement or PHI has no uses, then we can + just eliminate it. This can occur if, for example, the PHI + was created by block duplication due to threading and its only + use was in the conditional at the end of the block which was + deleted. */ + if (has_zero_uses (lhs)) + { + bitmap_clear_bit (interesting_names, version); + remove_stmt_or_phi (t); + return; + } + + /* Get the RHS of the assignment or PHI node if the PHI is a + degenerate. */ + rhs = get_rhs_or_phi_arg (t); + if (!rhs) + { + bitmap_clear_bit (interesting_names, version); + return; + } + + propagate_rhs_into_lhs (t, lhs, rhs, interesting_names); + + /* Note that T may well have been deleted by now, so do + not access it, instead use the saved version # to clear + T's entry in the worklist. */ + bitmap_clear_bit (interesting_names, version); +} + +/* The first phase in degenerate PHI elimination. + + Eliminate the degenerate PHIs in BB, then recurse on the + dominator children of BB. */ + +static void +eliminate_degenerate_phis_1 (basic_block bb, bitmap interesting_names) +{ + tree phi, next; + basic_block son; + + for (phi = phi_nodes (bb); phi; phi = next) + { + next = PHI_CHAIN (phi); + eliminate_const_or_copy (phi, interesting_names); + } + + /* Recurse into the dominator children of BB. */ + for (son = first_dom_son (CDI_DOMINATORS, bb); + son; + son = next_dom_son (CDI_DOMINATORS, son)) + eliminate_degenerate_phis_1 (son, interesting_names); +} + + +/* A very simple pass to eliminate degenerate PHI nodes from the + IL. This is meant to be fast enough to be able to be run several + times in the optimization pipeline. + + Certain optimizations, particularly those which duplicate blocks + or remove edges from the CFG can create or expose PHIs which are + trivial copies or constant initializations. + + While we could pick up these optimizations in DOM or with the + combination of copy-prop and CCP, those solutions are far too + heavy-weight for our needs. + + This implementation has two phases so that we can efficiently + eliminate the first order degenerate PHIs and second order + degenerate PHIs. + + The first phase performs a dominator walk to identify and eliminate + the vast majority of the degenerate PHIs. When a degenerate PHI + is identified and eliminated any affected statements or PHIs + are put on a worklist. + + The second phase eliminates degenerate PHIs and trivial copies + or constant initializations using the worklist. This is how we + pick up the secondary optimization opportunities with minimal + cost. */ + +static unsigned int +eliminate_degenerate_phis (void) +{ + bitmap interesting_names; + + /* Bitmap of blocks which need EH information updated. We can not + update it on-the-fly as doing so invalidates the dominator tree. */ + need_eh_cleanup = BITMAP_ALLOC (NULL); + + /* INTERESTING_NAMES is effectively our worklist, indexed by + SSA_NAME_VERSION. + + A set bit indicates that the statement or PHI node which + defines the SSA_NAME should be (re)examined to determine if + it has become a degenerate PHI or trival const/copy propagation + opportunity. + + Experiments have show we generally get better compilation + time behavior with bitmaps rather than sbitmaps. */ + interesting_names = BITMAP_ALLOC (NULL); + + /* First phase. Elimiante degenerate PHIs via a domiantor + walk of the CFG. + + Experiments have indicated that we generally get better + compile-time behavior by visiting blocks in the first + phase in dominator order. Presumably this is because walking + in dominator order leaves fewer PHIs for later examination + by the worklist phase. */ + calculate_dominance_info (CDI_DOMINATORS); + eliminate_degenerate_phis_1 (ENTRY_BLOCK_PTR, interesting_names); + + /* Second phase. Eliminate second order degnerate PHIs as well + as trivial copies or constant initializations identified by + the first phase or this phase. Basically we keep iterating + until our set of INTERESTING_NAMEs is empty. */ + while (!bitmap_empty_p (interesting_names)) + { + unsigned int i; + bitmap_iterator bi; + + EXECUTE_IF_SET_IN_BITMAP (interesting_names, 0, i, bi) + { + tree name = ssa_name (i); + + /* Ignore SSA_NAMEs that have been released because + their defining statement was deleted (unreachable). */ + if (name) + eliminate_const_or_copy (SSA_NAME_DEF_STMT (ssa_name (i)), + interesting_names); + } + } + + /* Propagation of const and copies may make some EH edges dead. Purge + such edges from the CFG as needed. */ + if (!bitmap_empty_p (need_eh_cleanup)) + { + cfg_altered |= tree_purge_all_dead_eh_edges (need_eh_cleanup); + BITMAP_FREE (need_eh_cleanup); + } + + BITMAP_FREE (interesting_names); + if (cfg_altered) + free_dominance_info (CDI_DOMINATORS); + return 0; +} + +struct tree_opt_pass pass_phi_only_cprop = +{ + "phicprop", /* name */ + gate_dominator, /* gate */ + eliminate_degenerate_phis, /* execute */ + NULL, /* sub */ + NULL, /* next */ + 0, /* static_pass_number */ + TV_TREE_PHI_CPROP, /* tv_id */ + PROP_cfg | PROP_ssa | PROP_alias, /* properties_required */ + 0, /* properties_provided */ + PROP_smt_usage, /* properties_destroyed */ + 0, /* todo_flags_start */ + TODO_cleanup_cfg | TODO_dump_func + | TODO_ggc_collect | TODO_verify_ssa + | TODO_verify_stmts | TODO_update_smt_usage + | TODO_update_ssa, /* todo_flags_finish */ + 0 /* letter */ +}; diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index 9e310416c34..517b812607f 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -1482,8 +1482,9 @@ find_interesting_uses_address (struct ivopts_data *data, tree stmt, tree *op_p) /* Ignore bitfields for now. Not really something terribly complicated to handle. TODO. */ - if (TREE_CODE (base) == COMPONENT_REF - && DECL_NONADDRESSABLE_P (TREE_OPERAND (base, 1))) + if (TREE_CODE (base) == BIT_FIELD_REF + || (TREE_CODE (base) == COMPONENT_REF + && DECL_NONADDRESSABLE_P (TREE_OPERAND (base, 1)))) goto fail; if (STRICT_ALIGNMENT diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c index cda02dd7783..364c61041fc 100644 --- a/gcc/tree-ssa-loop-niter.c +++ b/gcc/tree-ssa-loop-niter.c @@ -129,9 +129,9 @@ inverse (tree x, tree mask) /* Determines number of iterations of loop whose ending condition is IV <> FINAL. TYPE is the type of the iv. The number of iterations is stored to NITER. NEVER_INFINITE is true if - we know that the loop cannot be infinite (we derived this - earlier, and possibly set NITER->assumptions to make sure this - is the case. */ + we know that the exit must be taken eventually, i.e., that the IV + ever reaches the value FINAL (we derived this earlier, and possibly set + NITER->assumptions to make sure this is the case). */ static bool number_of_iterations_ne (tree type, affine_iv *iv, tree final, @@ -492,9 +492,9 @@ number_of_iterations_lt (tree type, affine_iv *iv0, affine_iv *iv1, /* Determines number of iterations of loop whose ending condition is IV0 <= IV1. TYPE is the type of the iv. The number of iterations is stored to NITER. NEVER_INFINITE is true if - we know that the loop cannot be infinite (we derived this + we know that this condition must eventually become false (we derived this earlier, and possibly set NITER->assumptions to make sure this - is the case. */ + is the case). */ static bool number_of_iterations_le (tree type, affine_iv *iv0, affine_iv *iv1, @@ -538,6 +538,11 @@ number_of_iterations_le (tree type, affine_iv *iv0, affine_iv *iv1, is IV0, the right-hand side is IV1. Both induction variables must have type TYPE, which must be an integer or pointer type. The steps of the ivs must be constants (or NULL_TREE, which is interpreted as constant zero). + + ONLY_EXIT is true if we are sure this is the only way the loop could be + exited (including possibly non-returning function calls, exceptions, etc.) + -- in this case we can use the information whether the control induction + variables can overflow or not in a more efficient way. The results (number of iterations and assumptions as described in comments at struct tree_niter_desc in tree-flow.h) are stored to NITER. @@ -546,7 +551,8 @@ number_of_iterations_le (tree type, affine_iv *iv0, affine_iv *iv1, static bool number_of_iterations_cond (tree type, affine_iv *iv0, enum tree_code code, - affine_iv *iv1, struct tree_niter_desc *niter) + affine_iv *iv1, struct tree_niter_desc *niter, + bool only_exit) { bool never_infinite; @@ -572,13 +578,30 @@ number_of_iterations_cond (tree type, affine_iv *iv0, enum tree_code code, code = swap_tree_comparison (code); } + if (!only_exit) + { + /* If this is not the only possible exit from the loop, the information + that the induction variables cannot overflow as derived from + signedness analysis cannot be relied upon. We use them e.g. in the + following way: given loop for (i = 0; i <= n; i++), if i is + signed, it cannot overflow, thus this loop is equivalent to + for (i = 0; i < n + 1; i++); however, if n == MAX, but the loop + is exited in some other way before i overflows, this transformation + is incorrect (the new loop exits immediately). */ + iv0->no_overflow = false; + iv1->no_overflow = false; + } + if (POINTER_TYPE_P (type)) { /* Comparison of pointers is undefined unless both iv0 and iv1 point to the same object. If they do, the control variable cannot wrap (as wrap around the bounds of memory will never return a pointer that would be guaranteed to point to the same object, even if we - avoid undefined behavior by casting to size_t and back). */ + avoid undefined behavior by casting to size_t and back). The + restrictions on pointer arithmetics and comparisons of pointers + ensure that using the no-overflow assumptions is correct in this + case even if ONLY_EXIT is false. */ iv0->no_overflow = true; iv1->no_overflow = true; } @@ -963,6 +986,37 @@ simplify_using_outer_evolutions (struct loop *loop, tree expr) return expr; } +/* Returns true if EXIT is the only possible exit from LOOP. */ + +static bool +loop_only_exit_p (struct loop *loop, edge exit) +{ + basic_block *body; + block_stmt_iterator bsi; + unsigned i; + tree call; + + if (exit != loop->single_exit) + return false; + + body = get_loop_body (loop); + for (i = 0; i < loop->num_nodes; i++) + { + for (bsi = bsi_start (body[0]); !bsi_end_p (bsi); bsi_next (&bsi)) + { + call = get_call_expr_in (bsi_stmt (bsi)); + if (call && TREE_SIDE_EFFECTS (call)) + { + free (body); + return false; + } + } + } + + free (body); + return true; +} + /* Stores description of number of iterations of LOOP derived from EXIT (an exit edge of the LOOP) in NITER. Returns true if some useful information could be derived (and fields of NITER has @@ -1023,7 +1077,8 @@ number_of_iterations_exit (struct loop *loop, edge exit, iv0.base = expand_simple_operations (iv0.base); iv1.base = expand_simple_operations (iv1.base); - if (!number_of_iterations_cond (type, &iv0, code, &iv1, niter)) + if (!number_of_iterations_cond (type, &iv0, code, &iv1, niter, + loop_only_exit_p (loop, exit))) return false; if (optimize >= 3) @@ -1527,9 +1582,13 @@ infer_loop_bounds_from_undefined (struct loop *loop) diff = fold_build2 (MINUS_EXPR, utype, TYPE_MAX_VALUE (type), init); - estimation = fold_build2 (CEIL_DIV_EXPR, utype, diff, - step); - record_estimate (loop, estimation, boolean_true_node, stmt); + if (!integer_zerop (step)) + { + estimation = fold_build2 (CEIL_DIV_EXPR, utype, diff, + step); + record_estimate (loop, estimation, boolean_true_node, + stmt); + } } break; @@ -2035,7 +2094,7 @@ tree convert_step (struct loop *loop, tree new_type, tree base, tree step, tree at_stmt) { - tree base_type; + tree res, base_type; if (chrec_contains_undetermined (base) || chrec_contains_undetermined (step)) @@ -2045,12 +2104,22 @@ convert_step (struct loop *loop, tree new_type, tree base, tree step, /* When not using wrapping arithmetic, signed types don't wrap. */ if (!flag_wrapv && !TYPE_UNSIGNED (base_type)) - return fold_convert (new_type, step); + goto do_convert_step; if (TYPE_PRECISION (new_type) > TYPE_PRECISION (base_type)) return convert_step_widening (loop, new_type, base, step, at_stmt); - return fold_convert (new_type, step); + do_convert_step: + + res = fold_convert (new_type, step); + + if (TREE_CODE (res) == INTEGER_CST) + { + TREE_OVERFLOW (res) = 0; + TREE_CONSTANT_OVERFLOW (res) = 0; + } + + return res; } /* Frees the information on upper bounds on numbers of iterations of LOOP. */ diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index 305ee3e938b..fc0dff5a2b8 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -1177,32 +1177,78 @@ phi_translate (tree expr, value_set_t set, basic_block pred, case tcc_reference: { - tree oldop1 = TREE_OPERAND (expr, 0); - tree newop1; + tree oldop0 = TREE_OPERAND (expr, 0); + tree oldop1 = NULL; + tree newop0; + tree newop1 = NULL; + tree oldop2 = NULL; + tree newop2 = NULL; + tree oldop3 = NULL; + tree newop3 = NULL; tree newexpr; VEC (tree, gc) * oldvuses = NULL; VEC (tree, gc) * newvuses = NULL; if (TREE_CODE (expr) != INDIRECT_REF - && TREE_CODE (expr) != COMPONENT_REF) + && TREE_CODE (expr) != COMPONENT_REF + && TREE_CODE (expr) != ARRAY_REF) return NULL; - newop1 = phi_translate (find_leader (set, oldop1), + newop0 = phi_translate (find_leader (set, oldop0), set, pred, phiblock); - if (newop1 == NULL) + if (newop0 == NULL) return NULL; + + if (TREE_CODE (expr) == ARRAY_REF) + { + oldop1 = TREE_OPERAND (expr, 1); + newop1 = phi_translate (find_leader (set, oldop1), + set, pred, phiblock); + + if (newop1 == NULL) + return NULL; + oldop2 = TREE_OPERAND (expr, 2); + if (oldop2) + { + newop2 = phi_translate (find_leader (set, oldop2), + set, pred, phiblock); + + if (newop2 == NULL) + return NULL; + } + oldop3 = TREE_OPERAND (expr, 3); + if (oldop3) + { + newop3 = phi_translate (find_leader (set, oldop3), + set, pred, phiblock); + + if (newop3 == NULL) + return NULL; + } + } oldvuses = VALUE_HANDLE_VUSES (get_value_handle (expr)); if (oldvuses) newvuses = translate_vuses_through_block (oldvuses, pred); - - if (newop1 != oldop1 || newvuses != oldvuses) + + if (newop0 != oldop0 || newvuses != oldvuses + || newop1 != oldop1 + || newop2 != oldop2 + || newop3 != oldop3) { tree t; newexpr = pool_alloc (reference_node_pool); memcpy (newexpr, expr, tree_size (expr)); - TREE_OPERAND (newexpr, 0) = get_value_handle (newop1); + TREE_OPERAND (newexpr, 0) = get_value_handle (newop0); + if (TREE_CODE (expr) == ARRAY_REF) + { + TREE_OPERAND (newexpr, 1) = get_value_handle (newop1); + if (newop2) + TREE_OPERAND (newexpr, 2) = get_value_handle (newop2); + if (newop3) + TREE_OPERAND (newexpr, 3) = get_value_handle (newop3); + } t = fully_constant_expression (newexpr); @@ -1525,22 +1571,38 @@ valid_in_set (value_set_t set, tree expr, basic_block block) case tcc_reference: { if (TREE_CODE (expr) == INDIRECT_REF - || TREE_CODE (expr) == COMPONENT_REF) + || TREE_CODE (expr) == COMPONENT_REF + || TREE_CODE (expr) == ARRAY_REF) { tree op0 = TREE_OPERAND (expr, 0); - if (is_gimple_min_invariant (op0) - || TREE_CODE (op0) == VALUE_HANDLE) + gcc_assert (is_gimple_min_invariant (op0) + || TREE_CODE (op0) == VALUE_HANDLE); + if (!set_contains_value (set, op0)) + return false; + if (TREE_CODE (expr) == ARRAY_REF) { - bool retval = set_contains_value (set, op0); - if (retval) - { - return set_contains_value (ANTIC_SAFE_LOADS (block), - vh) - || !vuses_dies_in_block_x (VALUE_HANDLE_VUSES (vh), - block); - } - return false; - } + tree op1 = TREE_OPERAND (expr, 1); + tree op2 = TREE_OPERAND (expr, 2); + tree op3 = TREE_OPERAND (expr, 3); + gcc_assert (is_gimple_min_invariant (op1) + || TREE_CODE (op1) == VALUE_HANDLE); + if (!set_contains_value (set, op1)) + return false; + gcc_assert (!op2 || is_gimple_min_invariant (op2) + || TREE_CODE (op2) == VALUE_HANDLE); + if (op2 + && !set_contains_value (set, op2)) + return false; + gcc_assert (!op3 || is_gimple_min_invariant (op3) + || TREE_CODE (op3) == VALUE_HANDLE); + if (op3 + && !set_contains_value (set, op3)) + return false; + } + return set_contains_value (ANTIC_SAFE_LOADS (block), + vh) + || !vuses_dies_in_block_x (VALUE_HANDLE_VUSES (vh), + block); } } return false; @@ -2091,7 +2153,8 @@ can_PRE_operation (tree op) || COMPARISON_CLASS_P (op) || TREE_CODE (op) == INDIRECT_REF || TREE_CODE (op) == COMPONENT_REF - || TREE_CODE (op) == CALL_EXPR; + || TREE_CODE (op) == CALL_EXPR + || TREE_CODE (op) == ARRAY_REF; } @@ -2105,8 +2168,8 @@ static VEC(tree,heap) *inserted_exprs; to see which expressions need to be put into GC'able memory */ static VEC(tree, heap) *need_creation; -/* For COMPONENT_REF's, we can't have any intermediates for the - COMPONENT_REF or INDIRECT_REF portion, because we'd end up with +/* For COMPONENT_REF's and ARRAY_REF's, we can't have any intermediates for the + COMPONENT_REF or INDIRECT_REF or ARRAY_REF portion, because we'd end up with trying to rename aggregates into ssa form directly, which is a no no. @@ -2136,6 +2199,26 @@ create_component_ref_by_pieces (basic_block block, tree expr, tree stmts) switch TREE_CODE (genop) { + case ARRAY_REF: + { + tree op0; + tree op1, op2, op3; + op0 = create_component_ref_by_pieces (block, + TREE_OPERAND (genop, 0), + stmts); + op1 = TREE_OPERAND (genop, 1); + if (TREE_CODE (op1) == VALUE_HANDLE) + op1 = find_or_generate_expression (block, op1, stmts); + op2 = TREE_OPERAND (genop, 2); + if (op2 && TREE_CODE (op2) == VALUE_HANDLE) + op2 = find_or_generate_expression (block, op2, stmts); + op3 = TREE_OPERAND (genop, 3); + if (op3 && TREE_CODE (op3) == VALUE_HANDLE) + op3 = find_or_generate_expression (block, op3, stmts); + folded = build4 (ARRAY_REF, TREE_TYPE (genop), op0, op1, + op2, op3); + return folded; + } case COMPONENT_REF: { tree op0; @@ -2163,6 +2246,7 @@ create_component_ref_by_pieces (basic_block block, tree expr, tree stmts) case PARM_DECL: case RESULT_DECL: case SSA_NAME: + case STRING_CST: return genop; default: gcc_unreachable (); @@ -2259,7 +2343,8 @@ create_expression_by_pieces (basic_block block, tree expr, tree stmts) break; case tcc_reference: { - if (TREE_CODE (expr) == COMPONENT_REF) + if (TREE_CODE (expr) == COMPONENT_REF + || TREE_CODE (expr) == ARRAY_REF) { folded = create_component_ref_by_pieces (block, expr, stmts); } @@ -2853,15 +2938,6 @@ create_value_expr_from (tree expr, basic_block block, tree stmt) if (op == NULL_TREE) continue; - /* If OP is a constant that has overflowed, do not value number - this expression. */ - if (CONSTANT_CLASS_P (op) - && TREE_OVERFLOW (op)) - { - pool_free (pool, vexpr); - return NULL; - } - /* Recursively value-numberize reference ops and tree lists. */ if (REFERENCE_CLASS_P (op)) { diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index 342e8da60f2..7f8fbddd8b8 100644 --- a/gcc/tree-ssa-structalias.c +++ b/gcc/tree-ssa-structalias.c @@ -4041,7 +4041,7 @@ intra_create_variable_infos (void) tree t; /* For each incoming argument arg, ARG = &ANYTHING or a dummy variable if - flag_argument_noalias > 1. */ + flag_argument_noalias > 2. */ for (t = DECL_ARGUMENTS (current_function_decl); t; t = TREE_CHAIN (t)) { struct constraint_expr lhs; @@ -4051,11 +4051,11 @@ intra_create_variable_infos (void) lhs.type = SCALAR; lhs.var = create_variable_info_for (t, alias_get_name (t)); - /* With flag_argument_noalias greater than one means that the incoming + /* With flag_argument_noalias greater than two means that the incoming argument cannot alias anything except for itself so create a HEAP variable. */ if (POINTER_TYPE_P (TREE_TYPE (t)) - && flag_argument_noalias > 1) + && flag_argument_noalias > 2) { varinfo_t vi; struct constraint_expr rhs; diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index 54c86da4773..6ddb570bb55 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -613,6 +613,46 @@ err: } +/* Verify the consistency of call clobbering information. */ +static void +verify_call_clobbering (void) +{ + unsigned int i; + bitmap_iterator bi; + tree var; + referenced_var_iterator rvi; + + /* At all times, the result of the DECL_CALL_CLOBBERED flag should + match the result of the call_clobbered_vars bitmap. Verify both + that everything in call_clobbered_vars is marked + DECL_CALL_CLOBBERED, and that everything marked + DECL_CALL_CLOBBERED is in call_clobbered_vars. */ + EXECUTE_IF_SET_IN_BITMAP (cfun->ssa->call_clobbered_vars, 0, i, bi) + { + var = referenced_var (i); + if (!MTAG_P (var) && !DECL_CALL_CLOBBERED (var)) + { + error ("variable in call_clobbered_vars but not marked DECL_CALL_CLOBBERED"); + debug_variable (var); + goto err; + } + } + FOR_EACH_REFERENCED_VAR (var, rvi) + { + if (!MTAG_P (var) && DECL_CALL_CLOBBERED (var) + && !bitmap_bit_p (cfun->ssa->call_clobbered_vars, DECL_UID (var))) + { + error ("variable marked DECL_CALL_CLOBBERED but not in call_clobbered_vars bitmap."); + debug_variable (var); + goto err; + } + } + return; + + err: + internal_error ("verify_call_clobbering failed"); +} + /* Verify the consistency of aliasing information. */ static void @@ -620,6 +660,7 @@ verify_alias_info (void) { verify_flow_sensitive_alias_info (); verify_name_tags (); + verify_call_clobbering (); verify_flow_insensitive_alias_info (); } @@ -746,7 +787,8 @@ verify_ssa (bool check_modified_stmt) } /* Finally, verify alias information. */ - verify_alias_info (); + if (aliases_computed_p) + verify_alias_info (); free (definition_block); diff --git a/gcc/tree-vect-analyze.c b/gcc/tree-vect-analyze.c index c5882d42afb..b031ceb1640 100644 --- a/gcc/tree-vect-analyze.c +++ b/gcc/tree-vect-analyze.c @@ -584,12 +584,12 @@ vect_analyze_data_ref_dependence (struct data_dependence_relation *ddr, unsigned int i; struct loop *loop = LOOP_VINFO_LOOP (loop_vinfo); int vectorization_factor = LOOP_VINFO_VECT_FACTOR (loop_vinfo); - unsigned int loop_depth = 0; - struct loop *loop_nest = loop; struct data_reference *dra = DDR_A (ddr); struct data_reference *drb = DDR_B (ddr); stmt_vec_info stmtinfo_a = vinfo_for_stmt (DR_STMT (dra)); stmt_vec_info stmtinfo_b = vinfo_for_stmt (DR_STMT (drb)); + lambda_vector dist_v; + unsigned int loop_depth; if (DDR_ARE_DEPENDENT (ddr) == chrec_known) return false; @@ -619,16 +619,10 @@ vect_analyze_data_ref_dependence (struct data_dependence_relation *ddr, return true; } - /* Find loop depth. */ - while (loop_nest && loop_nest->outer && loop_nest->outer->outer) + loop_depth = index_in_loop_nest (loop->num, DDR_LOOP_NEST (ddr)); + for (i = 0; VEC_iterate (lambda_vector, DDR_DIST_VECTS (ddr), i, dist_v); i++) { - loop_nest = loop_nest->outer; - loop_depth++; - } - - for (i = 0; i < DDR_NUM_DIST_VECTS (ddr); i++) - { - int dist = DDR_DIST_VECT (ddr, i)[loop_depth]; + int dist = dist_v[loop_depth]; if (vect_print_dump_info (REPORT_DR_DETAILS)) fprintf (vect_dump, "dependence distance = %d.", dist); @@ -685,18 +679,15 @@ static bool vect_analyze_data_ref_dependences (loop_vec_info loop_vinfo) { unsigned int i; - varray_type ddrs = LOOP_VINFO_DDRS (loop_vinfo); + VEC (ddr_p, heap) *ddrs = LOOP_VINFO_DDRS (loop_vinfo); + struct data_dependence_relation *ddr; if (vect_print_dump_info (REPORT_DETAILS)) fprintf (vect_dump, "=== vect_analyze_dependences ==="); - for (i = 0; i < VARRAY_ACTIVE_SIZE (ddrs); i++) - { - struct data_dependence_relation *ddr = VARRAY_GENERIC_PTR (ddrs, i); - - if (vect_analyze_data_ref_dependence (ddr, loop_vinfo)) - return false; - } + for (i = 0; VEC_iterate (ddr_p, ddrs, i, ddr); i++) + if (vect_analyze_data_ref_dependence (ddr, loop_vinfo)) + return false; return true; } @@ -818,15 +809,13 @@ vect_compute_data_ref_alignment (struct data_reference *dr) static bool vect_compute_data_refs_alignment (loop_vec_info loop_vinfo) { - varray_type datarefs = LOOP_VINFO_DATAREFS (loop_vinfo); + VEC (data_reference_p, heap) *datarefs = LOOP_VINFO_DATAREFS (loop_vinfo); + struct data_reference *dr; unsigned int i; - for (i = 0; i < VARRAY_ACTIVE_SIZE (datarefs); i++) - { - struct data_reference *dr = VARRAY_GENERIC_PTR (datarefs, i); - if (!vect_compute_data_ref_alignment (dr)) - return false; - } + for (i = 0; VEC_iterate (data_reference_p, datarefs, i, dr); i++) + if (!vect_compute_data_ref_alignment (dr)) + return false; return true; } @@ -890,13 +879,13 @@ vect_update_misalignment_for_peel (struct data_reference *dr, static bool vect_verify_datarefs_alignment (loop_vec_info loop_vinfo) { - varray_type datarefs = LOOP_VINFO_DATAREFS (loop_vinfo); + VEC (data_reference_p, heap) *datarefs = LOOP_VINFO_DATAREFS (loop_vinfo); + struct data_reference *dr; enum dr_alignment_support supportable_dr_alignment; unsigned int i; - for (i = 0; i < VARRAY_ACTIVE_SIZE (datarefs); i++) + for (i = 0; VEC_iterate (data_reference_p, datarefs, i, dr); i++) { - struct data_reference *dr = VARRAY_GENERIC_PTR (datarefs, i); supportable_dr_alignment = vect_supportable_dr_alignment (dr); if (!supportable_dr_alignment) { @@ -1013,7 +1002,7 @@ vect_verify_datarefs_alignment (loop_vec_info loop_vinfo) static bool vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo) { - varray_type datarefs = LOOP_VINFO_DATAREFS (loop_vinfo); + VEC (data_reference_p, heap) *datarefs = LOOP_VINFO_DATAREFS (loop_vinfo); enum dr_alignment_support supportable_dr_alignment; struct data_reference *dr0 = NULL; struct data_reference *dr; @@ -1061,16 +1050,13 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo) TODO: Use a cost model. */ - for (i = 0; i < VARRAY_ACTIVE_SIZE (datarefs); i++) - { - dr = VARRAY_GENERIC_PTR (datarefs, i); - if (!DR_IS_READ (dr) && !aligned_access_p (dr)) - { - dr0 = dr; - do_peeling = true; - break; - } - } + for (i = 0; VEC_iterate (data_reference_p, datarefs, i, dr); i++) + if (!DR_IS_READ (dr) && !aligned_access_p (dr)) + { + dr0 = dr; + do_peeling = true; + break; + } /* Often peeling for alignment will require peeling for loop-bound, which in turn requires that we know how to adjust the loop ivs after the loop. */ @@ -1094,13 +1080,13 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo) } /* Ensure that all data refs can be vectorized after the peel. */ - for (i = 0; i < VARRAY_ACTIVE_SIZE (datarefs); i++) + for (i = 0; VEC_iterate (data_reference_p, datarefs, i, dr); i++) { int save_misalignment; - dr = VARRAY_GENERIC_PTR (datarefs, i); if (dr == dr0) continue; + save_misalignment = DR_MISALIGNMENT (dr); vect_update_misalignment_for_peel (dr, dr0, npeel); supportable_dr_alignment = vect_supportable_dr_alignment (dr); @@ -1122,13 +1108,9 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo) by the peeling factor times the element size of DR_i (MOD the vectorization factor times the size). Otherwise, the misalignment of DR_i must be set to unknown. */ - for (i = 0; i < VARRAY_ACTIVE_SIZE (datarefs); i++) - { - dr = VARRAY_GENERIC_PTR (datarefs, i); - if (dr == dr0) - continue; + for (i = 0; VEC_iterate (data_reference_p, datarefs, i, dr); i++) + if (dr != dr0) vect_update_misalignment_for_peel (dr, dr0, npeel); - } LOOP_VINFO_UNALIGNED_DR (loop_vinfo) = dr0; LOOP_PEELING_FOR_ALIGNMENT (loop_vinfo) = DR_MISALIGNMENT (dr0); @@ -1160,10 +1142,8 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo) if (do_versioning) { - for (i = 0; i < VARRAY_ACTIVE_SIZE (datarefs); i++) + for (i = 0; VEC_iterate (data_reference_p, datarefs, i, dr); i++) { - dr = VARRAY_GENERIC_PTR (datarefs, i); - if (aligned_access_p (dr)) continue; @@ -1309,21 +1289,19 @@ static bool vect_analyze_data_ref_accesses (loop_vec_info loop_vinfo) { unsigned int i; - varray_type datarefs = LOOP_VINFO_DATAREFS (loop_vinfo); + VEC (data_reference_p, heap) *datarefs = LOOP_VINFO_DATAREFS (loop_vinfo); + struct data_reference *dr; if (vect_print_dump_info (REPORT_DETAILS)) fprintf (vect_dump, "=== vect_analyze_data_ref_accesses ==="); - for (i = 0; i < VARRAY_ACTIVE_SIZE (datarefs); i++) - { - struct data_reference *dr = VARRAY_GENERIC_PTR (datarefs, i); - if (!vect_analyze_data_ref_access (dr)) - { - if (vect_print_dump_info (REPORT_UNVECTORIZED_LOOPS)) - fprintf (vect_dump, "not vectorized: complicated access pattern."); - return false; - } - } + for (i = 0; VEC_iterate (data_reference_p, datarefs, i, dr); i++) + if (!vect_analyze_data_ref_access (dr)) + { + if (vect_print_dump_info (REPORT_UNVECTORIZED_LOOPS)) + fprintf (vect_dump, "not vectorized: complicated access pattern."); + return false; + } return true; } @@ -1348,22 +1326,23 @@ vect_analyze_data_refs (loop_vec_info loop_vinfo) { struct loop *loop = LOOP_VINFO_LOOP (loop_vinfo); unsigned int i; - varray_type datarefs; + VEC (data_reference_p, heap) *datarefs; + struct data_reference *dr; tree scalar_type; if (vect_print_dump_info (REPORT_DETAILS)) fprintf (vect_dump, "=== vect_analyze_data_refs ==="); compute_data_dependences_for_loop (loop, false, - &(LOOP_VINFO_DATAREFS (loop_vinfo)), - &(LOOP_VINFO_DDRS (loop_vinfo))); + &LOOP_VINFO_DATAREFS (loop_vinfo), + &LOOP_VINFO_DDRS (loop_vinfo)); /* Go through the data-refs, check that the analysis succeeded. Update pointer from stmt_vec_info struct to DR and vectype. */ datarefs = LOOP_VINFO_DATAREFS (loop_vinfo); - for (i = 0; i < VARRAY_ACTIVE_SIZE (datarefs); i++) + + for (i = 0; VEC_iterate (data_reference_p, datarefs, i, dr); i++) { - struct data_reference *dr = VARRAY_GENERIC_PTR (datarefs, i); tree stmt; stmt_vec_info stmt_info; diff --git a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c index 2d533e67a9a..1d23f14d1ff 100644 --- a/gcc/tree-vect-transform.c +++ b/gcc/tree-vect-transform.c @@ -2769,16 +2769,14 @@ static void vect_update_inits_of_drs (loop_vec_info loop_vinfo, tree niters) { unsigned int i; - varray_type datarefs = LOOP_VINFO_DATAREFS (loop_vinfo); + VEC (data_reference_p, heap) *datarefs = LOOP_VINFO_DATAREFS (loop_vinfo); + struct data_reference *dr; if (vect_dump && (dump_flags & TDF_DETAILS)) fprintf (vect_dump, "=== vect_update_inits_of_dr ==="); - for (i = 0; i < VARRAY_ACTIVE_SIZE (datarefs); i++) - { - struct data_reference *dr = VARRAY_GENERIC_PTR (datarefs, i); - vect_update_init_of_dr (dr, niters); - } + for (i = 0; VEC_iterate (data_reference_p, datarefs, i, dr); i++) + vect_update_init_of_dr (dr, niters); } diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c index a07af12b6a1..b6538a4b46d 100644 --- a/gcc/tree-vectorizer.c +++ b/gcc/tree-vectorizer.c @@ -1420,8 +1420,8 @@ new_loop_vec_info (struct loop *loop) LOOP_VINFO_VECTORIZABLE_P (res) = 0; LOOP_PEELING_FOR_ALIGNMENT (res) = 0; LOOP_VINFO_VECT_FACTOR (res) = 0; - VARRAY_GENERIC_PTR_INIT (LOOP_VINFO_DATAREFS (res), 20, "loop_datarefs"); - VARRAY_GENERIC_PTR_INIT (LOOP_VINFO_DDRS (res), 20, "loop_ddrs"); + LOOP_VINFO_DATAREFS (res) = VEC_alloc (data_reference_p, heap, 10); + LOOP_VINFO_DDRS (res) = VEC_alloc (ddr_p, heap, 10 * 10); LOOP_VINFO_UNALIGNED_DR (res) = NULL; LOOP_VINFO_MAY_MISALIGN_STMTS (res) = VEC_alloc (tree, heap, PARAM_VALUE (PARAM_VECT_MAX_VERSION_CHECKS)); @@ -1483,8 +1483,8 @@ destroy_loop_vec_info (loop_vec_info loop_vinfo) } free (LOOP_VINFO_BBS (loop_vinfo)); - varray_clear (LOOP_VINFO_DATAREFS (loop_vinfo)); - varray_clear (LOOP_VINFO_DDRS (loop_vinfo)); + free_data_refs (LOOP_VINFO_DATAREFS (loop_vinfo)); + free_dependence_relations (LOOP_VINFO_DDRS (loop_vinfo)); VEC_free (tree, heap, LOOP_VINFO_MAY_MISALIGN_STMTS (loop_vinfo)); free (loop_vinfo); diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index 405289cba9d..3b7ca1b911a 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -122,10 +122,10 @@ typedef struct _loop_vec_info { int ptr_mask; /* All data references in the loop. */ - varray_type datarefs; + VEC (data_reference_p, heap) *datarefs; /* All data dependences in the loop. */ - varray_type ddrs; + VEC (ddr_p, heap) *ddrs; /* Statements in the loop that have data references that are candidates for a runtime (loop versioning) misalignment check. */ diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index ed1f5f28f40..402af8cbb94 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -1641,14 +1641,12 @@ extract_range_from_unary_expr (value_range_t *vr, tree expr) return; } - /* Refuse to operate on varying and symbolic ranges. Also, if the - operand is neither a pointer nor an integral type, set the - resulting range to VARYING. TODO, in some cases we may be able - to derive anti-ranges (like nonzero values). */ - if (vr0.type == VR_VARYING - || (!INTEGRAL_TYPE_P (TREE_TYPE (op0)) - && !POINTER_TYPE_P (TREE_TYPE (op0))) - || symbolic_range_p (&vr0)) + /* Refuse to operate on symbolic ranges, or if neither operand is + a pointer or integral type. */ + if ((!INTEGRAL_TYPE_P (TREE_TYPE (op0)) + && !POINTER_TYPE_P (TREE_TYPE (op0))) + || (vr0.type != VR_VARYING + && symbolic_range_p (&vr0))) { set_value_range_to_varying (vr); return; @@ -1681,20 +1679,36 @@ extract_range_from_unary_expr (value_range_t *vr, tree expr) or equal to the new max, then we can safely use the newly computed range for EXPR. This allows us to compute accurate ranges through many casts. */ - if (vr0.type == VR_RANGE) + if (vr0.type == VR_RANGE + || (vr0.type == VR_VARYING + && TYPE_PRECISION (outer_type) > TYPE_PRECISION (inner_type))) { - tree new_min, new_max; + tree new_min, new_max, orig_min, orig_max; - /* Convert VR0's min/max to OUTER_TYPE. */ - new_min = fold_convert (outer_type, vr0.min); - new_max = fold_convert (outer_type, vr0.max); + /* Convert the input operand min/max to OUTER_TYPE. If + the input has no range information, then use the min/max + for the input's type. */ + if (vr0.type == VR_RANGE) + { + orig_min = vr0.min; + orig_max = vr0.max; + } + else + { + orig_min = TYPE_MIN_VALUE (inner_type); + orig_max = TYPE_MAX_VALUE (inner_type); + } + + new_min = fold_convert (outer_type, orig_min); + new_max = fold_convert (outer_type, orig_max); /* Verify the new min/max values are gimple values and - that they compare equal to VR0's min/max values. */ + that they compare equal to the orignal input's + min/max values. */ if (is_gimple_val (new_min) && is_gimple_val (new_max) - && tree_int_cst_equal (new_min, vr0.min) - && tree_int_cst_equal (new_max, vr0.max) + && tree_int_cst_equal (new_min, orig_min) + && tree_int_cst_equal (new_max, orig_max) && compare_values (new_min, new_max) <= 0 && compare_values (new_min, new_max) >= -1) { @@ -1717,6 +1731,16 @@ extract_range_from_unary_expr (value_range_t *vr, tree expr) } } + /* Conversion of a VR_VARYING value to a wider type can result + in a usable range. So wait until after we've handled conversions + before dropping the result to VR_VARYING if we had a source + operand that is VR_VARYING. */ + if (vr0.type == VR_VARYING) + { + set_value_range_to_varying (vr); + return; + } + /* Apply the operation to each end of the range and see what we end up with. */ if (code == NEGATE_EXPR diff --git a/gcc/tree.c b/gcc/tree.c index 86d881632f0..f1c588792e4 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -5021,8 +5021,8 @@ build_range_type (tree type, tree lowval, tree highval) if (type == NULL_TREE) type = sizetype; - TYPE_MIN_VALUE (itype) = convert (type, lowval); - TYPE_MAX_VALUE (itype) = highval ? convert (type, highval) : NULL; + TYPE_MIN_VALUE (itype) = fold_convert (type, lowval); + TYPE_MAX_VALUE (itype) = highval ? fold_convert (type, highval) : NULL; TYPE_PRECISION (itype) = TYPE_PRECISION (type); TYPE_MODE (itype) = TYPE_MODE (type); @@ -5801,6 +5801,9 @@ get_callee_fndecl (tree call) { tree addr; + if (call == error_mark_node) + return call; + /* It's invalid to call this function with anything but a CALL_EXPR. */ gcc_assert (TREE_CODE (call) == CALL_EXPR); diff --git a/gcc/tree.h b/gcc/tree.h index 5743767cd85..d2879d017ef 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -2486,6 +2486,12 @@ struct tree_struct_field_tag GTY(()) #define DECL_COMPLEX_GIMPLE_REG_P(DECL) \ DECL_COMMON_CHECK (DECL)->decl_common.gimple_reg_flag +/* This is true if DECL is call clobbered in the current function. + The result of this flag should always be the same as + bitmap_bit_p (call_clobbered_vars, DECL_UID (decl)). */ +#define DECL_CALL_CLOBBERED(DECL) \ + DECL_COMMON_CHECK (DECL)->decl_common.call_clobbered_flag + struct tree_decl_common GTY(()) { struct tree_decl_minimal common; @@ -2523,9 +2529,10 @@ struct tree_decl_common GTY(()) /* 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, this would go in a theoretical base shared by var and parm - decl. */ + /* Logically, these two would go in a theoretical base shared by var and + parm decl. */ unsigned gimple_reg_flag : 1; + unsigned call_clobbered_flag : 1; union tree_decl_u1 { /* In a FUNCTION_DECL for which DECL_BUILT_IN holds, this is diff --git a/gcc/treelang/ChangeLog b/gcc/treelang/ChangeLog index 318795f1200..3cd85d6ffcc 100644 --- a/gcc/treelang/ChangeLog +++ b/gcc/treelang/ChangeLog @@ -1,3 +1,7 @@ +2006-03-29 Carlos O'Donell + + * Make-lang.in: Rename docdir to gcc_docdir. + 2006-02-20 Rafael Ávila de Espíndola * Make-lang.in (.phony): Remove TREELANG (TREELANG): Remove diff --git a/gcc/treelang/Make-lang.in b/gcc/treelang/Make-lang.in index bd603364f2c..53998de1dad 100644 --- a/gcc/treelang/Make-lang.in +++ b/gcc/treelang/Make-lang.in @@ -161,14 +161,14 @@ treelang.srcinfo: doc/treelang.info treelang.dvi: doc/treelang.dvi TEXI_TREELANG_FILES = treelang/treelang.texi \ - $(docdir)/include/gcc-common.texi \ - $(docdir)/include/gpl.texi \ - $(docdir)/include/fdl.texi \ - $(docdir)/include/funding.texi \ + $(gcc_docdir)/include/gcc-common.texi \ + $(gcc_docdir)/include/gpl.texi \ + $(gcc_docdir)/include/fdl.texi \ + $(gcc_docdir)/include/funding.texi \ gcc-vers.texi doc/treelang.info: $(TEXI_TREELANG_FILES) - $(MAKEINFO) $(MAKEINFOFLAGS) -I $(docdir)/include -o $@ $< + $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir)/include -o $@ $< doc/treelang.dvi: $(TEXI_TREELANG_FILES) $(TEXI2DVI) -I $(abs_docdir)/include -o $@ $< @@ -178,7 +178,7 @@ treelang.html: $(htmldir)/treelang/index.html $(htmldir)/treelang/index.html: $(TEXI_TREELANG_FILES) $(mkinstalldirs) $(@D) rm -f $(@D)/* - $(TEXI2HTML) -I $(docdir)/include -I $(srcdir)/treelang -o $(@D) $< + $(TEXI2HTML) -I $(gcc_docdir)/include -I $(srcdir)/treelang -o $(@D) $< # # Install hooks: diff --git a/gcc/varasm.c b/gcc/varasm.c index e6249a53917..2d8a6bfe81a 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -139,7 +139,7 @@ static void asm_output_aligned_bss (FILE *, tree, const char *, #endif #endif /* BSS_SECTION_ASM_OP */ static void mark_weak (tree); -static void output_constant_pool (void); +static void output_constant_pool (const char *, tree); /* Well-known sections, each one associated with some sort of *_ASM_OP. */ section *text_section; @@ -1332,7 +1332,7 @@ assemble_start_function (tree decl, const char *fnname) app_disable (); if (CONSTANT_POOL_BEFORE_FUNCTION) - output_constant_pool (); + output_constant_pool (fnname, decl); resolve_unique_section (decl, 0, flag_function_sections); @@ -1450,7 +1450,7 @@ assemble_end_function (tree decl, const char *fnname ATTRIBUTE_UNUSED) #endif if (! CONSTANT_POOL_BEFORE_FUNCTION) { - output_constant_pool (); + output_constant_pool (fnname, decl); switch_to_section (function_section (decl)); /* need to switch back */ } /* Output labels for end of hot/cold text sections (to be used by @@ -3533,7 +3533,8 @@ output_constant_pool_contents (struct rtx_constant_pool *pool) out the function's private constant pool. */ static void -output_constant_pool (void) +output_constant_pool (const char *fnname ATTRIBUTE_UNUSED, + tree fndecl ATTRIBUTE_UNUSED) { struct rtx_constant_pool *pool = cfun->varasm->pool; @@ -4136,7 +4137,7 @@ array_size_for_constructor (tree val) { tree max_index, i; unsigned HOST_WIDE_INT cnt; - tree index, value; + tree index, value, tmp; /* This code used to attempt to handle string constants that are not arrays of single-bytes, but nothing else does, so there's no point in @@ -4157,9 +4158,9 @@ array_size_for_constructor (tree val) return 0; /* Compute the total number of array elements. */ - i = size_binop (MINUS_EXPR, convert (sizetype, max_index), - convert (sizetype, - TYPE_MIN_VALUE (TYPE_DOMAIN (TREE_TYPE (val))))); + tmp = TYPE_MIN_VALUE (TYPE_DOMAIN (TREE_TYPE (val))); + i = size_binop (MINUS_EXPR, fold_convert (sizetype, max_index), + fold_convert (sizetype, tmp)); i = size_binop (PLUS_EXPR, i, build_int_cst (sizetype, 1)); /* Multiply by the array element unit size to find number of bytes. */ diff --git a/libcpp/po/ChangeLog b/libcpp/po/ChangeLog index dc03197ad1e..cd6ab0662fc 100644 --- a/libcpp/po/ChangeLog +++ b/libcpp/po/ChangeLog @@ -1,3 +1,7 @@ +2006-03-31 Joseph S. Myers + + * sv.po: Update. + 2006-03-13 Joseph S. Myers * be.po, ca.po, da.po, de.po, el.po, es.po, fr.po, ja.po, nl.po, diff --git a/libcpp/po/sv.po b/libcpp/po/sv.po index e32e7e1ffda..217e6a38c7b 100644 --- a/libcpp/po/sv.po +++ b/libcpp/po/sv.po @@ -1,16 +1,16 @@ # Swedish messages for cpplib. -# Copyright © 2000, 2005 Free Software Foundation, Inc. +# Copyright © 2000, 2005, 2006 Free Software Foundation, Inc. # Dennis Björklund , 2000, 2001, 2002. -# Göran Uddeborg , 2005. +# Göran Uddeborg , 2005, 2006. # # Remember: GCC team does not want RCS keywords in the header! # msgid "" msgstr "" -"Project-Id-Version: cpplib 4.1-b20051125\n" +"Project-Id-Version: cpplib 4.1.0\n" "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" "POT-Creation-Date: 2006-02-28 00:12-0800\n" -"PO-Revision-Date: 2005-11-27 22:26+0100\n" +"PO-Revision-Date: 2006-03-11 11:50+0100\n" "Last-Translator: Göran Uddeborg \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" diff --git a/libffi/ChangeLog b/libffi/ChangeLog index 0622223c04e..1d8b23899dd 100644 --- a/libffi/ChangeLog +++ b/libffi/ChangeLog @@ -1,3 +1,26 @@ +2006-03-24 Alan Modra + + * src/powerpc/ffitarget.h (enum ffi_abi): Add FFI_LINUX. Default + for 32-bit using IBM extended double format. Fix FFI_LAST_ABI. + * src/powerpc/ffi.c (ffi_prep_args_SYSV): Handle linux variant of + FFI_TYPE_LONGDOUBLE. + (ffi_prep_args64): Assert using IBM extended double. + (ffi_prep_cif_machdep): Don't munge FFI_TYPE_LONGDOUBLE type. + Handle FFI_LINUX FFI_TYPE_LONGDOUBLE return and args. + (ffi_call): Handle FFI_LINUX. + (ffi_closure_helper_SYSV): Non FFI_LINUX long double return needs + gpr3 return pointer as for struct return. Handle FFI_LINUX + FFI_TYPE_LONGDOUBLE return and args. Don't increment "nf" + unnecessarily. + * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Load both f1 and f2 + for FFI_TYPE_LONGDOUBLE. Move epilogue insns into case table. + Don't use r6 as pointer to results, instead use sp offset. Don't + make a special call to load lr with case table address, instead + use offset from previous call. + * src/powerpc/sysv.S (ffi_call_SYSV): Save long double return. + * src/powerpc/linux64.S (ffi_call_LINUX64): Simplify long double + return. + 2006-03-15 Kaz Kojima * src/sh64/ffi.c (ffi_prep_cif_machdep): Handle float arguments diff --git a/libffi/src/powerpc/ffi.c b/libffi/src/powerpc/ffi.c index bfd7ab67688..39460d1b05a 100644 --- a/libffi/src/powerpc/ffi.c +++ b/libffi/src/powerpc/ffi.c @@ -197,6 +197,38 @@ ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack) FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); break; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + if (ecif->cif->abi != FFI_LINUX) + goto do_struct; + double_tmp = (*p_argv.d)[0]; + + if (fparg_count >= NUM_FPR_ARG_REGISTERS - 1) + { + if (intarg_count >= NUM_GPR_ARG_REGISTERS + && intarg_count % 2 != 0) + { + intarg_count++; + next_arg.u++; + } + *next_arg.d = double_tmp; + next_arg.u += 2; + double_tmp = (*p_argv.d)[1]; + *next_arg.d = double_tmp; + next_arg.u += 2; + } + else + { + *fpr_base.d++ = double_tmp; + double_tmp = (*p_argv.d)[1]; + *fpr_base.d++ = double_tmp; + } + + fparg_count += 2; + FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); + break; +#endif + case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: if (intarg_count == NUM_GPR_ARG_REGISTERS-1) @@ -232,7 +264,7 @@ ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack) case FFI_TYPE_STRUCT: #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE - case FFI_TYPE_LONGDOUBLE: + do_struct: #endif struct_copy_size = ((*ptr)->size + 15) & ~0xF; copy_space.c -= struct_copy_size; @@ -433,6 +465,7 @@ ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack) if (fparg_count < NUM_FPR_ARG_REGISTERS64) *fpr_base.d++ = double_tmp; fparg_count++; + FFI_ASSERT (__LDBL_MANT_DIG__ == 106); FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); break; #endif @@ -536,11 +569,6 @@ ffi_prep_cif_machdep (ffi_cif *cif) /* Space for the mandatory parm save area and general registers. */ bytes += 2 * NUM_GPR_ARG_REGISTERS64 * sizeof (long); - -#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE - if (type == FFI_TYPE_LONGDOUBLE) - type = FFI_TYPE_DOUBLE; -#endif } /* Return value handling. The rules for SYSV are as follows: @@ -549,14 +577,24 @@ ffi_prep_cif_machdep (ffi_cif *cif) - 64-bit integer values and structures between 5 and 8 bytes are returned in gpr3 and gpr4; - Single/double FP values are returned in fpr1; - - Larger structures and long double (if not equivalent to double) values - are allocated space and a pointer is passed as the first argument. + - Larger structures are allocated space and a pointer is passed as + the first argument. + - long doubles (if not equivalent to double) are returned in + fpr1,fpr2 for Linux and as for large structs for SysV. For LINUX64: - integer values in gpr3; - Structures/Unions by reference; - Single/double FP values in fpr1, long double in fpr1,fpr2. */ switch (type) { +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX64) + goto byref; + + flags |= FLAG_RETURNS_128BITS; + /* Fall through. */ +#endif case FFI_TYPE_DOUBLE: flags |= FLAG_RETURNS_64BITS; /* Fall through. */ @@ -598,15 +636,8 @@ ffi_prep_cif_machdep (ffi_cif *cif) } } } - /* else fall through. */ #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE - case FFI_TYPE_LONGDOUBLE: - if (type == FFI_TYPE_LONGDOUBLE && cif->abi == FFI_LINUX64) - { - flags |= FLAG_RETURNS_128BITS; - flags |= FLAG_RETURNS_FP; - break; - } + byref: #endif intarg_count++; flags |= FLAG_RETVAL_REFERENCE; @@ -635,6 +666,13 @@ ffi_prep_cif_machdep (ffi_cif *cif) /* floating singles are not 8-aligned on stack */ break; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + if (cif->abi != FFI_LINUX) + goto do_struct; + fparg_count++; + /* Fall thru */ +#endif case FFI_TYPE_DOUBLE: fparg_count++; /* If this FP arg is going on the stack, it must be @@ -664,7 +702,7 @@ ffi_prep_cif_machdep (ffi_cif *cif) case FFI_TYPE_STRUCT: #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE - case FFI_TYPE_LONGDOUBLE: + do_struct: #endif /* We must allocate space for a copy of these to enforce pass-by-value. Pad the space up to a multiple of 16 @@ -793,6 +831,7 @@ ffi_call(/*@dependent@*/ ffi_cif *cif, #ifndef POWERPC64 case FFI_SYSV: case FFI_GCC_SYSV: + case FFI_LINUX: /*@-usedef@*/ ffi_call_SYSV (&ecif, -cif->bytes, cif->flags, ecif.rvalue, fn); /*@=usedef@*/ @@ -920,14 +959,17 @@ ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue, For FFI_SYSV the result is passed in r3/r4 if the struct size is less or equal 8 bytes. */ - if (cif->rtype->type == FFI_TYPE_STRUCT) + if ((cif->rtype->type == FFI_TYPE_STRUCT + && !((cif->abi == FFI_SYSV) && (size <= 8))) +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + || (cif->rtype->type == FFI_TYPE_LONGDOUBLE + && cif->abi != FFI_LINUX) +#endif + ) { - if (!((cif->abi == FFI_SYSV) && (size <= 8))) - { - rvalue = (void *) *pgr; - ng++; - pgr++; - } + rvalue = (void *) *pgr; + ng++; + pgr++; } i = 0; @@ -989,6 +1031,9 @@ ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue, break; case FFI_TYPE_STRUCT: +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + do_struct: +#endif /* Structs are passed by reference. The address will appear in a gpr if it is one of the first 8 arguments. */ if (ng < 8) @@ -1060,7 +1105,6 @@ ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue, * naughty thing to do but... */ avalue[i] = pst; - nf++; pst += 1; } break; @@ -1080,11 +1124,32 @@ ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue, if (((long) pst) & 4) pst++; avalue[i] = pst; - nf++; pst += 2; } break; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + if (cif->abi != FFI_LINUX) + goto do_struct; + + if (nf < 7) + { + avalue[i] = pfr; + pfr += 2; + nf += 2; + } + else + { + if (((long) pst) & 4) + pst++; + avalue[i] = pst; + pst += 4; + nf = 8; + } + break; +#endif + default: FFI_ASSERT (0); } @@ -1101,8 +1166,12 @@ ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue, if (cif->abi == FFI_SYSV && cif->rtype->type == FFI_TYPE_STRUCT && size <= 8) return FFI_SYSV_TYPE_SMALL_STRUCT + size; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + else if (cif->rtype->type == FFI_TYPE_LONGDOUBLE + && cif->abi != FFI_LINUX) + return FFI_TYPE_STRUCT; +#endif return cif->rtype->type; - } int FFI_HIDDEN ffi_closure_helper_LINUX64 (ffi_closure *, void *, diff --git a/libffi/src/powerpc/ffitarget.h b/libffi/src/powerpc/ffitarget.h index af63796c77c..e7f62950371 100644 --- a/libffi/src/powerpc/ffitarget.h +++ b/libffi/src/powerpc/ffitarget.h @@ -43,10 +43,15 @@ typedef enum ffi_abi { FFI_SYSV, FFI_GCC_SYSV, FFI_LINUX64, + FFI_LINUX, # ifdef POWERPC64 FFI_DEFAULT_ABI = FFI_LINUX64, # else +# if __LDBL_MANT_DIG__ == 106 + FFI_DEFAULT_ABI = FFI_LINUX, +# else FFI_DEFAULT_ABI = FFI_GCC_SYSV, +# endif # endif #endif @@ -69,7 +74,7 @@ typedef enum ffi_abi { FFI_DEFAULT_ABI = FFI_SYSV, #endif - FFI_LAST_ABI = FFI_DEFAULT_ABI + 1 + FFI_LAST_ABI } ffi_abi; #endif diff --git a/libffi/src/powerpc/linux64.S b/libffi/src/powerpc/linux64.S index 25b2c4f455b..d72912da1ed 100644 --- a/libffi/src/powerpc/linux64.S +++ b/libffi/src/powerpc/linux64.S @@ -120,12 +120,9 @@ ffi_call_LINUX64: blr .Lfp_return_value: - bt 27, .Lfd_return_value bf 28, .Lfloat_return_value stfd %f1, 0(%r30) - b .Ldone_return_value -.Lfd_return_value: - stfd %f1, 0(%r30) + bf 27, .Ldone_return_value stfd %f2, 8(%r30) b .Ldone_return_value .Lfloat_return_value: diff --git a/libffi/src/powerpc/ppc_closure.S b/libffi/src/powerpc/ppc_closure.S index 370381378f9..356a0e32620 100644 --- a/libffi/src/powerpc/ppc_closure.S +++ b/libffi/src/powerpc/ppc_closure.S @@ -58,218 +58,178 @@ ENTRY(ffi_closure_SYSV) # make the call bl ffi_closure_helper_SYSV@local - +.Lret: # now r3 contains the return type # so use it to look up in a table # so we know how to deal with each type # look up the proper starting point in table # by using return type as offset - addi %r6,%r1,112 # get pointer to results area - bl .Lget_ret_type0_addr # get pointer to .Lret_type0 into LR - mflr %r4 # move to r4 - slwi %r3,%r3,4 # now multiply return type by 16 - add %r3,%r3,%r4 # add contents of table to table address + + mflr %r4 # move address of .Lret to r4 + slwi %r3,%r3,4 # now multiply return type by 16 + addi %r4, %r4, .Lret_type0 - .Lret + lwz %r0,148(%r1) + add %r3,%r3,%r4 # add contents of table to table address mtctr %r3 - bctr # jump to it + bctr # jump to it .LFE1: # Each of the ret_typeX code fragments has to be exactly 16 bytes long # (4 instructions). For cache effectiveness we align to a 16 byte boundary # first. .align 4 - - nop - nop - nop -.Lget_ret_type0_addr: - blrl - # case FFI_TYPE_VOID .Lret_type0: - b .Lfinish - nop - nop + mtlr %r0 + addi %r1,%r1,144 + blr nop # case FFI_TYPE_INT -.Lret_type1: - lwz %r3,0(%r6) - b .Lfinish - nop - nop + lwz %r3,112+0(%r1) + mtlr %r0 +.Lfinish: + addi %r1,%r1,144 + blr # case FFI_TYPE_FLOAT -.Lret_type2: - lfs %f1,0(%r6) - b .Lfinish - nop - nop + lfs %f1,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # case FFI_TYPE_DOUBLE -.Lret_type3: - lfd %f1,0(%r6) - b .Lfinish - nop - nop + lfd %f1,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # case FFI_TYPE_LONGDOUBLE -.Lret_type4: - lfd %f1,0(%r6) + lfd %f1,112+0(%r1) + lfd %f2,112+8(%r1) + mtlr %r0 b .Lfinish - nop - nop # case FFI_TYPE_UINT8 -.Lret_type5: - lbz %r3,3(%r6) - b .Lfinish - nop - nop + lbz %r3,112+3(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # case FFI_TYPE_SINT8 -.Lret_type6: - lbz %r3,3(%r6) + lbz %r3,112+3(%r1) extsb %r3,%r3 + mtlr %r0 b .Lfinish - nop # case FFI_TYPE_UINT16 -.Lret_type7: - lhz %r3,2(%r6) - b .Lfinish - nop - nop + lhz %r3,112+2(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # case FFI_TYPE_SINT16 -.Lret_type8: - lha %r3,2(%r6) - b .Lfinish - nop - nop + lha %r3,112+2(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # case FFI_TYPE_UINT32 -.Lret_type9: - lwz %r3,0(%r6) - b .Lfinish - nop - nop + lwz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # case FFI_TYPE_SINT32 -.Lret_type10: - lwz %r3,0(%r6) - b .Lfinish - nop - nop + lwz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # case FFI_TYPE_UINT64 -.Lret_type11: - lwz %r3,0(%r6) - lwz %r4,4(%r6) + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) + mtlr %r0 b .Lfinish - nop # case FFI_TYPE_SINT64 -.Lret_type12: - lwz %r3,0(%r6) - lwz %r4,4(%r6) + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) + mtlr %r0 b .Lfinish - nop # case FFI_TYPE_STRUCT -.Lret_type13: - b .Lfinish - nop - nop + mtlr %r0 + addi %r1,%r1,144 + blr nop # case FFI_TYPE_POINTER -.Lret_type14: - lwz %r3,0(%r6) - b .Lfinish - nop - nop + lwz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # The return types below are only used when the ABI type is FFI_SYSV. # case FFI_SYSV_TYPE_SMALL_STRUCT + 1. One byte struct. -.Lret_type15: -# fall through. - lbz %r3,0(%r6) - b .Lfinish - nop - nop + lbz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # case FFI_SYSV_TYPE_SMALL_STRUCT + 2. Two byte struct. -.Lret_type16: -# fall through. - lhz %r3,0(%r6) - b .Lfinish - nop - nop + lhz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # case FFI_SYSV_TYPE_SMALL_STRUCT + 3. Three byte struct. -.Lret_type17: -# fall through. - lwz %r3,0(%r6) + lwz %r3,112+0(%r1) srwi %r3,%r3,8 + mtlr %r0 b .Lfinish - nop # case FFI_SYSV_TYPE_SMALL_STRUCT + 4. Four byte struct. -.Lret_type18: -# this one handles the structs from above too. - lwz %r3,0(%r6) - b .Lfinish - nop - nop + lwz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # case FFI_SYSV_TYPE_SMALL_STRUCT + 5. Five byte struct. -.Lret_type19: -# fall through. - lwz %r3,0(%r6) - lwz %r4,4(%r6) + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) li %r5,24 b .Lstruct567 # case FFI_SYSV_TYPE_SMALL_STRUCT + 6. Six byte struct. -.Lret_type20: -# fall through. - lwz %r3,0(%r6) - lwz %r4,4(%r6) + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) li %r5,16 b .Lstruct567 # case FFI_SYSV_TYPE_SMALL_STRUCT + 7. Seven byte struct. -.Lret_type21: -# fall through. - lwz %r3,0(%r6) - lwz %r4,4(%r6) + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) li %r5,8 b .Lstruct567 # case FFI_SYSV_TYPE_SMALL_STRUCT + 8. Eight byte struct. -.Lret_type22: -# this one handles the above unhandled structs. - lwz %r3,0(%r6) - lwz %r4,4(%r6) + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) + mtlr %r0 b .Lfinish - nop -# case done -.Lfinish: - - lwz %r0,148(%r1) +.Lstruct567: + subfic %r6,%r5,32 + srw %r4,%r4,%r5 + slw %r6,%r3,%r6 + srw %r3,%r3,%r5 + or %r4,%r6,%r4 mtlr %r0 addi %r1,%r1,144 blr -.Lstruct567: - subfic %r0,%r5,32 - srw %r4,%r4,%r5 - slw %r0,%r3,%r0 - srw %r3,%r3,%r5 - or %r4,%r0,%r4 - b .Lfinish END(ffi_closure_SYSV) .section ".eh_frame",EH_FRAME_FLAGS,@progbits diff --git a/libffi/src/powerpc/sysv.S b/libffi/src/powerpc/sysv.S index 6d5a707ec03..9a9a109d1ae 100644 --- a/libffi/src/powerpc/sysv.S +++ b/libffi/src/powerpc/sysv.S @@ -121,6 +121,8 @@ L(done_return_value): L(fp_return_value): bf 28,L(float_return_value) stfd %f1,0(%r30) + bf 27,L(done_return_value) + stfd %f2,8(%r30) b L(done_return_value) L(float_return_value): stfs %f1,0(%r30) diff --git a/libgcc-math/ChangeLog b/libgcc-math/ChangeLog index 5f1c9839d7d..414a95f9edd 100644 --- a/libgcc-math/ChangeLog +++ b/libgcc-math/ChangeLog @@ -1,3 +1,13 @@ +2006-03-30 Richard Guenther + + * i386/Makefile.am: Do not build dbl-64 variants. + * i386/Makefile.in: Regenerate. + * dbl-64: Remove. + +2006-03-20 Richard Guenther + + * README: New file. + 2006-02-28 Richard Guenther PR bootstrap/26055 diff --git a/libgcc-math/README b/libgcc-math/README new file mode 100644 index 00000000000..f5ed0f2b57c --- /dev/null +++ b/libgcc-math/README @@ -0,0 +1,6 @@ +This directory contains parts of the GLIBC package, which are not part of GCC +but shipped with GCC as a convenience. This includes the files in the flt-32 +and dbl-64 directories which are imported from the GLIBC sysdeps/ieee754 +versions. Changes to these parts of libgcc-math should be done upstream in +GLIBC and then re-imported to libgcc-math. + diff --git a/libgcc-math/dbl-64/MathLib.h b/libgcc-math/dbl-64/MathLib.h deleted file mode 100644 index 7e271425d93..00000000000 --- a/libgcc-math/dbl-64/MathLib.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/********************************************************************/ -/* Ultimate math functions. Each function computes the exact */ -/* theoretical value of its argument rounded to nearest or even. */ -/* */ -/* Assumption: Machine arithmetic operations are performed in */ -/* round nearest mode of IEEE 754 standard. */ -/********************************************************************/ - -#ifndef UMATH_LIB -#define UMATH_LIB -/********************************************************************/ -/* Function changes the precision mode to IEEE 754 double precision */ -/* and the rounding mode to nearest or even. */ -/* It returns the original status of these modes. */ -/* See further explanations of usage in DPChange.h */ -/********************************************************************/ -unsigned short Init_Lib(void); - -/********************************************************************/ -/* Function that changes the precision and rounding modes to the */ -/* specified by the argument received. See further explanations in */ -/* DPChange.h */ -/********************************************************************/ -void Exit_Lib(unsigned short); - - -/* The asin() function calculates the arc sine of its argument. */ -/* The function returns the arc sine in radians */ -/* (between -PI/2 and PI/2). */ -/* If the argument is greater than 1 or less than -1 it returns */ -/* a NaN. */ -double uasin(double ); - - -/* The acos() function calculates the arc cosine of its argument. */ -/* The function returns the arc cosine in radians */ -/* (between -PI/2 and PI/2). */ -/* If the argument is greater than 1 or less than -1 it returns */ -/* a NaN. */ -double uacos(double ); - -/* The atan() function calculates the arctanget of its argument. */ -/* The function returns the arc tangent in radians */ -/* (between -PI/2 and PI/2). */ -double uatan(double ); - - -/* The uatan2() function calculates the arc tangent of the two arguments x */ -/* and y (x is the right argument and y is the left one).The signs of both */ -/* arguments are used to determine the quadrant of the result. */ -/* The function returns the result in radians, which is between -PI and PI */ -double uatan2(double ,double ); - -/* Compute log(x). The base of log is e (natural logarithm) */ -double ulog(double ); - -/* Compute e raised to the power of argument x. */ -double uexp(double ); - -/* Compute sin(x). The argument x is assumed to be given in radians.*/ -double usin(double ); - -/* Compute cos(x). The argument x is assumed to be given in radians.*/ -double ucos(double ); - -/* Compute tan(x). The argument x is assumed to be given in radians.*/ -double utan(double ); - -/* Compute the square root of non-negative argument x. */ -/* If x is negative the returned value is NaN. */ -double usqrt(double ); - -/* Compute x raised to the power of y, where x is the left argument */ -/* and y is the right argument. The function returns a NaN if x<0. */ -/* If x equals zero it returns -inf */ -double upow(double , double ); - -/* Computing x mod y, where x is the left argument and y is the */ -/* right one. */ -double uremainder(double , double ); - - -#endif diff --git a/libgcc-math/dbl-64/asincos.tbl b/libgcc-math/dbl-64/asincos.tbl deleted file mode 100644 index ff67957253a..00000000000 --- a/libgcc-math/dbl-64/asincos.tbl +++ /dev/null @@ -1,5169 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/***************************************************************************/ -/* Table for arcsin() and arccos() FUNCTIONS */ -/***************************************************************************/ - -#ifdef BIG_ENDI -static const union {int4 i[5136];double x[2568];} asncs = { .i = { -/**/ 0x3FC04000, 0x00000000, -/**/ 0x3FF02169, 0x88994424, -/**/ 0x3FB0A6A2, 0xB799B115, -/**/ 0x3FC6EF15, 0xD57409A0, -/**/ 0x3FAA141E, 0xAF52EAA0, -/**/ 0x3FB75591, 0xABBBE261, -/**/ 0x3FA72B51, 0xD206D88F, -/**/ 0x3C96B595, 0x5BB33E7D, -/**/ 0x3FC04B41, 0xA03E2700, -/**/ 0x3FF04000, 0x00000000, -/**/ 0xBF7E9677, 0x66BBDC7C, -/**/ 0x3FC0C000, 0x00000000, -/**/ 0x3FF02386, 0xF9E23A56, -/**/ 0x3FB1308C, 0x60FD0235, -/**/ 0x3FC7099F, 0x14D16B02, -/**/ 0x3FAAFED6, 0x27C01EE1, -/**/ 0x3FB79C6F, 0xDBCD5F98, -/**/ 0x3FA8144A, 0x4084DAAC, -/**/ 0xBC87C092, 0x38D8505E, -/**/ 0x3FC0CC55, 0x56C9F380, -/**/ 0x3FF04000, 0x00000000, -/**/ 0xBF7C7906, 0x1DC5AA24, -/**/ 0x3FC14000, 0x00000000, -/**/ 0x3FF025B5, 0xB27141F6, -/**/ 0x3FB1BB18, 0x04CE7400, -/**/ 0x3FC72514, 0x72907342, -/**/ 0x3FABEC60, 0x0BF4222C, -/**/ 0x3FB7E610, 0x75B3736C, -/**/ 0x3FA9024C, 0x5199C343, -/**/ 0xBC8AE84C, 0x06B56F60, -/**/ 0x3FC14D7A, 0x3DEFA070, -/**/ 0x3FF04000, 0x00000000, -/**/ 0xBF7A4A4D, 0x8EBE0A5C, -/**/ 0x3FC1C000, 0x00000000, -/**/ 0x3FF027F5, 0xC6DE8F57, -/**/ 0x3FB2464B, 0x345751E1, -/**/ 0x3FC74178, 0xCF026805, -/**/ 0x3FACDCD8, 0x40A9E0D6, -/**/ 0x3FB83282, 0xEB1D9C38, -/**/ 0x3FA9F590, 0xD7BE707B, -/**/ 0xBCAB9768, 0x03A2A6D6, -/**/ 0x3FC1CEB0, 0xE03B4870, -/**/ 0x3FF04000, 0x00000000, -/**/ 0xBF780A39, 0x2170A943, -/**/ 0x3FC24000, 0x00000000, -/**/ 0x3FF02A47, 0x4C759796, -/**/ 0x3FB2D22B, 0x92771935, -/**/ 0x3FC75ECF, 0x26ABA06D, -/**/ 0x3FADD05B, 0x486A1932, -/**/ 0x3FB881D7, 0x5AF971D5, -/**/ 0x3FAAEE52, 0x831AEE0C, -/**/ 0x3CA13F57, 0xAD1B1BEF, -/**/ 0x3FC24FF9, 0xC8E09330, -/**/ 0x3FF04000, 0x00000000, -/**/ 0xBF75B8B3, 0x8A68699B, -/**/ 0x3FC2C000, 0x00000000, -/**/ 0x3FF02CAA, 0x59374E09, -/**/ 0x3FB35EBE, 0xD44E8BEA, -/**/ 0x3FC77D1A, 0x92E4BE8A, -/**/ 0x3FAEC706, 0x4A6C34FD, -/**/ 0x3FB8D41E, 0x972F6E07, -/**/ 0x3FABECCD, 0xF9845F69, -/**/ 0x3C8BA1FA, 0x945C4185, -/**/ 0x3FC2D155, 0x83C058B0, -/**/ 0x3FF04000, 0x00000000, -/**/ 0xBF7355A6, 0xC8B1F774, -/**/ 0x3FC34000, 0x00000000, -/**/ 0x3FF02F1F, 0x03DC7745, -/**/ 0x3FB3EC0A, 0xC1EE9F61, -/**/ 0x3FC79C5E, 0x4A82E6D2, -/**/ 0x3FAFC0F7, 0x19B1EF72, -/**/ 0x3FB9296A, 0x2AA943E5, -/**/ 0x3FACF141, 0xEF8B9DE7, -/**/ 0xBC834081, 0x083C8716, -/**/ 0x3FC352C4, 0x9D6E5610, -/**/ 0x3FF04000, 0x00000000, -/**/ 0xBF70E0FC, 0x2388BB30, -/**/ 0x3FC3C000, 0x00000000, -/**/ 0x3FF031A5, 0x63D81251, -/**/ 0x3FB47A15, 0x370B721F, -/**/ 0x3FC7BC9D, 0xA28731E5, -/**/ 0x3FB05F26, 0x1E305BE9, -/**/ 0x3FB981CC, 0x5FA50FBD, -/**/ 0x3FADFBEF, 0x42AC4083, -/**/ 0x3CA20ACB, 0xA8E107C7, -/**/ 0x3FC3D447, 0xA336F5E0, -/**/ 0x3FF04000, 0x00000000, -/**/ 0xBF6CB538, 0x4FDB5D5C, -/**/ 0x3FC44000, 0x00000000, -/**/ 0x3FF0343D, 0x9159D86F, -/**/ 0x3FB508E4, 0x23B3747C, -/**/ 0x3FC7DDDC, 0x0ED597CB, -/**/ 0x3FB0DF92, 0x79ADF104, -/**/ 0x3FB9DD58, 0x4658D945, -/**/ 0x3FAF0D19, 0x14ACA06B, -/**/ 0xBCA4E10D, 0xDF636EFE, -/**/ 0x3FC455DF, 0x23252C00, -/**/ 0x3FF04000, 0x00000000, -/**/ 0xBF6784DD, 0x4C4F221A, -/**/ 0x3FC4C000, 0x00000000, -/**/ 0x3FF036E7, 0xA550D410, -/**/ 0x3FB5987D, 0x8D0AF1E7, -/**/ 0x3FC8001D, 0x22F39726, -/**/ 0x3FB161D0, 0xA1116D73, -/**/ 0x3FBA3C21, 0xBBEA1528, -/**/ 0x3FB01282, 0x74202FF6, -/**/ 0x3CAA0611, 0xD10866E2, -/**/ 0x3FC4D78B, 0xAC086560, -/**/ 0x3FF04000, 0x00000000, -/**/ 0xBF6230B5, 0x5E57DF8A, -/**/ 0x3FC54000, 0x00000000, -/**/ 0x3FF039A3, 0xB96E0F8A, -/**/ 0x3FB628E7, 0x8E0C29F6, -/**/ 0x3FC82364, 0x92CEDE01, -/**/ 0x3FB1E5F0, 0xFB7B5D84, -/**/ 0x3FBA9E3D, 0x71BD08EE, -/**/ 0x3FB0A1FD, 0x5F7FFAB4, -/**/ 0xBC90F980, 0xEF04F6E7, -/**/ 0x3FC5594D, 0xCD7A8DC0, -/**/ 0x3FF04000, 0x00000000, -/**/ 0xBF59711A, 0x47C1D879, -/**/ 0x3FC5C000, 0x00000000, -/**/ 0x3FF03C71, 0xE8275C12, -/**/ 0x3FB6BA28, 0x584C2A23, -/**/ 0x3FC847B6, 0x338C3D4B, -/**/ 0x3FB26C04, 0x59A55DD8, -/**/ 0x3FBB03C0, 0xF5202D6A, -/**/ 0x3FB13522, 0x9C6466A4, -/**/ 0x3C983C9A, 0x2A268973, -/**/ 0x3FC5DB26, 0x17E62A20, -/**/ 0x3FF04000, 0x00000000, -/**/ 0xBF4C70BE, 0xC51F7008, -/**/ 0x3FC64000, 0x00000000, -/**/ 0x3FF03F52, 0x4CBA31A9, -/**/ 0x3FB74C46, 0x34C49ADE, -/**/ 0x3FC86D15, 0xFC5F33CC, -/**/ 0x3FB2F41B, 0xFA419D7C, -/**/ 0x3FBB6CC2, 0xB757E82A, -/**/ 0x3FB1CC18, 0xDA4D5C39, -/**/ 0xBCA862D4, 0x2DFB224D, -/**/ 0x3FC65D15, 0x1C8C8AF0, -/**/ 0x3FF04000, 0x00000000, -/**/ 0xBF25B668, 0xB9CADBBF, -/**/ 0x3FC6C000, 0x00000000, -/**/ 0x3FF04245, 0x032EA88F, -/**/ 0x3FB7DF47, 0x84A2B473, -/**/ 0x3FC89388, 0x076A60F5, -/**/ 0x3FB37E49, 0x8E8394C1, -/**/ 0x3FBBD95A, 0x160F3472, -/**/ 0x3FB26708, 0x39844810, -/**/ 0x3C994228, 0x698BC8EA, -/**/ 0x3FC6DF1B, 0x6D8C14A0, -/**/ 0x3FF04000, 0x00000000, -/**/ 0x3F422819, 0x754477AC, -/**/ 0x3FC74000, 0x00000000, -/**/ 0x3FF0454A, 0x285A8CEB, -/**/ 0x3FB87332, 0xC21B9224, -/**/ 0x3FC8BB10, 0x92A93402, -/**/ 0x3FB40A9F, 0x3ED3F586, -/**/ 0x3FBC499F, 0x643217C8, -/**/ 0x3FB3061A, 0x5D29A16B, -/**/ 0xBCA3B2DF, 0x3DF9F2D7, -/**/ 0x3FC76139, 0x9DE6A160, -/**/ 0x3FF04000, 0x00000000, -/**/ 0x3F5528A1, 0x6A33AB4B, -/**/ 0x3FC7C000, 0x00000000, -/**/ 0x3FF04861, 0xD9E48D58, -/**/ 0x3FB9080E, 0x81461BF6, -/**/ 0x3FC8E3B4, 0x00E32FFA, -/**/ 0x3FB4992F, 0xAFB1F2A5, -/**/ 0x3FBCBDAB, 0xF33705D5, -/**/ 0x3FB3A97A, 0x7E23EE89, -/**/ 0x3C7AAD12, 0xCCE44C41, -/**/ 0x3FC7E370, 0x4187FAE0, -/**/ 0x3FF04000, 0x00000000, -/**/ 0x3F60C3B3, 0xC91AAF11, -/**/ 0x3FC84000, 0x00000000, -/**/ 0x3FF04B8C, 0x36478509, -/**/ 0x3FB99DE1, 0x70FAC1B4, -/**/ 0x3FC90D76, 0xDAA92166, -/**/ 0x3FB52A0E, 0x06C416A6, -/**/ 0x3FBD359A, 0x1CDCA344, -/**/ 0x3FB45155, 0x7EFD4CA0, -/**/ 0x3C396CA5, 0x35A8895D, -/**/ 0x3FC865BF, 0xED4C6EF0, -/**/ 0x3FF04000, 0x00000000, -/**/ 0x3F67186C, 0x8F0A11A4, -/**/ 0x3FC8C000, 0x00000000, -/**/ 0x3FF04EC9, 0x5CD5E248, -/**/ 0x3FBA34B2, 0x5BB94403, -/**/ 0x3FC9385D, 0xCF5CA73A, -/**/ 0x3FB5BD4D, 0xF01AFDBE, -/**/ 0x3FBDB185, 0x4D61A7A9, -/**/ 0x3FB4FDDA, 0x00BD47CF, -/**/ 0xBC9D1119, 0x727E8B64, -/**/ 0x3FC8E829, 0x37077E20, -/**/ 0x3FF04000, 0x00000000, -/**/ 0x3F6D92B9, 0xABC490CB, -/**/ 0x3FC94000, 0x00000000, -/**/ 0x3FF05219, 0x6DBD2A10, -/**/ 0x3FBACC88, 0x2894CAA1, -/**/ 0x3FC9646D, 0xB6427516, -/**/ 0x3FB65303, 0xA3A864D7, -/**/ 0x3FBE318A, 0x0E3CF3D4, -/**/ 0x3FB5AF38, 0x78CDA678, -/**/ 0x3CA3841D, 0xDA9D51DF, -/**/ 0x3FC96AAC, 0xB58AA660, -/**/ 0x3FF04000, 0x00000000, -/**/ 0x3F72196D, 0xBD2A1052, -/**/ 0x3FC9C000, 0x00000000, -/**/ 0x3FF0557C, 0x8A099990, -/**/ 0x3FBB6569, 0xDC268965, -/**/ 0x3FC991AB, 0x8F9FBA21, -/**/ 0x3FB6EB43, 0xEAED1E85, -/**/ 0x3FBEB5C6, 0x115C4C63, -/**/ 0x3FB665A3, 0x47F9AEFA, -/**/ 0xBCA1F8FD, 0x03AB3673, -/**/ 0x3FC9ED4B, 0x00AC4A60, -/**/ 0x3FF04000, 0x00000000, -/**/ 0x3F757C8A, 0x0999905B, -/**/ 0x3FCA4000, 0x00000000, -/**/ 0x3FF058F2, 0xD3A9E674, -/**/ 0x3FBBFF5E, 0x99873832, -/**/ 0x3FC9C01C, 0x85E31CE9, -/**/ 0x3FB78624, 0x26E09FF2, -/**/ 0x3FBF3E58, 0x3CF0885C, -/**/ 0x3FB7214E, 0xD2986239, -/**/ 0x3C97E3E5, 0x3E594694, -/**/ 0x3FCA7004, 0xB14EB5D0, -/**/ 0x3FF04000, 0x00000000, -/**/ 0x3F78F2D3, 0xA9E6746B, -/**/ 0x3FCAC000, 0x00000000, -/**/ 0x3FF05C7C, 0x6D731ECB, -/**/ 0x3FBC9A6D, 0xA34FA4B3, -/**/ 0x3FC9EFC5, 0xEED9C253, -/**/ 0x3FB823BA, 0x5614FAEB, -/**/ 0x3FBFCB60, 0xB7CE698F, -/**/ 0x3FB7E271, 0x99F3292F, -/**/ 0xBC9842C6, 0x068D709C, -/**/ 0x3FCAF2DA, 0x61674110, -/**/ 0x3FF04000, 0x00000000, -/**/ 0x3F7C7C6D, 0x731ECAE2, -/**/ 0x3FCB4000, 0x00000000, -/**/ 0x3FF06019, 0x7B24A973, -/**/ 0x3FBD369E, 0x5CA0A798, -/**/ 0x3FCA20AD, 0x4CF0DB64, -/**/ 0x3FB8C41D, 0x1B1A3F31, -/**/ 0x3FC02E80, 0x7B35E049, -/**/ 0x3FB8A944, 0x56FB8A97, -/**/ 0xBCACBF9C, 0xD337B37C, -/**/ 0x3FCB75CC, 0xAC059370, -/**/ 0x3FF08000, 0x00000000, -/**/ 0xBF7FE684, 0xDB568D78, -/**/ 0x3FCBC000, 0x00000000, -/**/ 0x3FF063CA, 0x216C6801, -/**/ 0x3FBDD3F8, 0x4A32C9FD, -/**/ 0x3FCA52D8, 0x50843BC9, -/**/ 0x3FB96763, 0xC324648A, -/**/ 0x3FC079AD, 0xE4407899, -/**/ 0x3FB97602, 0x1663A5DC, -/**/ 0xBCA3ADC3, 0xC637289D, -/**/ 0x3FCBF8DC, 0x2D5B06A0, -/**/ 0x3FF08000, 0x00000000, -/**/ 0xBF7C35DE, 0x9397FEA6, -/**/ 0x3FCC4000, 0x00000000, -/**/ 0x3FF0678E, 0x85EAFB1F, -/**/ 0x3FBE7283, 0x136DEAC6, -/**/ 0x3FCA864C, 0xD93A817D, -/**/ 0x3FBA0DA6, 0x4CF7089B, -/**/ 0x3FC0C74A, 0xB3ABB322, -/**/ 0x3FBA48E8, 0x562E6E1E, -/**/ 0xBC951E3E, 0x7EB8FFF8, -/**/ 0x3FCC7C09, 0x82C22B80, -/**/ 0x3FF08000, 0x00000000, -/**/ 0xBF78717A, 0x1504E0D3, -/**/ 0x3FCCC000, 0x00000000, -/**/ 0x3FF06B66, 0xCF382A59, -/**/ 0x3FBF1246, 0x838936FB, -/**/ 0x3FCABB10, 0xF76F5C94, -/**/ 0x3FBAB6FD, 0x701A77AE, -/**/ 0x3FC11769, 0xC26702C6, -/**/ 0x3FBB2237, 0x24CDF38E, -/**/ 0xBC8DB69A, 0xE28307A9, -/**/ 0x3FCCFF55, 0x4AC67190, -/**/ 0x3FF08000, 0x00000000, -/**/ 0xBF749930, 0xC7D5A6B9, -/**/ 0x3FCD4000, 0x00000000, -/**/ 0x3FF06F53, 0x24E7707F, -/**/ 0x3FBFB34A, 0x8AB3CBB2, -/**/ 0x3FCAF12A, 0xEDAC8D74, -/**/ 0x3FBB6382, 0xA45DA614, -/**/ 0x3FC16A1E, 0xAD8E9F44, -/**/ 0x3FBC0231, 0x41E7749D, -/**/ 0x3C76CA27, 0x22DC16A2, -/**/ 0x3FCD82C0, 0x252BF240, -/**/ 0x3FF08000, 0x00000000, -/**/ 0xBF70ACDB, 0x188F814B, -/**/ 0x3FCDC000, 0x00000000, -/**/ 0x3FF07353, 0xAF8CADA0, -/**/ 0x3FC02ACB, 0x9FA32DC9, -/**/ 0x3FCB28A1, 0x32323718, -/**/ 0x3FBC1350, 0x29A8F15E, -/**/ 0x3FC1BF7D, 0xDEB270E1, -/**/ 0x3FBCE91C, 0x40D67463, -/**/ 0x3CA6E976, 0x104BAA08, -/**/ 0x3FCE064A, 0xB2F76140, -/**/ 0x3FF08000, 0x00000000, -/**/ 0xBF6958A0, 0xE6A4BFC9, -/**/ 0x3FCE4000, 0x00000000, -/**/ 0x3FF07768, 0x98C0FFD9, -/**/ 0x3FC07C9A, 0x6F7F1AF0, -/**/ 0x3FCB617A, 0x708F2AFB, -/**/ 0x3FBCC681, 0x1025B50C, -/**/ 0x3FC2179C, 0x9487453A, -/**/ 0x3FBDD740, 0xAD09B3AB, -/**/ 0xBC8D32DB, 0x189038C0, -/**/ 0x3FCE89F5, 0x96762300, -/**/ 0x3FF08000, 0x00000000, -/**/ 0xBF612ECE, 0x7E004D50, -/**/ 0x3FCEC000, 0x00000000, -/**/ 0x3FF07B92, 0x0B27C417, -/**/ 0x3FC0CF15, 0xE821087A, -/**/ 0x3FCB9BBD, 0x8B49DC8C, -/**/ 0x3FBD7D31, 0x40BEF5C2, -/**/ 0x3FC27290, 0xEC080575, -/**/ 0x3FBECCEA, 0x3056A6A9, -/**/ 0x3C9DE506, 0x0C9B27A2, -/**/ 0x3FCF0DC1, 0x73468A50, -/**/ 0x3FF08000, 0x00000000, -/**/ 0xBF51B7D3, 0x60EFA34D, -/**/ 0x3FCF4000, 0x00000000, -/**/ 0x3FF07FD0, 0x3273C018, -/**/ 0x3FC12242, 0x51B87F08, -/**/ 0x3FCBD771, 0x9D9AB2BC, -/**/ 0x3FBE377D, 0x85FFA125, -/**/ 0x3FC2D071, 0xEA0CFE55, -/**/ 0x3FBFCA67, 0xBB61DDD3, -/**/ 0xBCA25383, 0x88A645E7, -/**/ 0x3FCF91AE, 0xEE603F40, -/**/ 0x3FF08000, 0x00000000, -/**/ 0xBF07E6C6, 0x1FF422B6, -/**/ 0x3FCFC000, 0x00000000, -/**/ 0x3FF08423, 0x3B6C76F2, -/**/ 0x3FC17624, 0x0A1DF897, -/**/ 0x3FCC149D, 0xFD38779D, -/**/ 0x3FBEF583, 0x95531ECD, -/**/ 0x3FC33157, 0x855FA966, -/**/ 0x3FC06805, 0xD81E6BAA, -/**/ 0x3C86827E, 0x1B47FAEC, -/**/ 0x3FD00ADF, 0x570E6798, -/**/ 0x3FF08000, 0x00000000, -/**/ 0x3F508CED, 0xB1DBC656, -/**/ 0x3FD02000, 0x00000000, -/**/ 0x3FF0888B, 0x53F3A97B, -/**/ 0x3FC1CABF, 0x858525D6, -/**/ 0x3FCC534A, 0x3C37AF90, -/**/ 0x3FBFB762, 0x18AD312A, -/**/ 0x3FC3955A, 0xB151CAAD, -/**/ 0x3FC0EF16, 0x07ADE82D, -/**/ 0x3CAEEF44, 0xFCDE8746, -/**/ 0x3FD04CF8, 0xAD203480, -/**/ 0x3FF08000, 0x00000000, -/**/ 0x3F6116A7, 0xE752F5A1, -/**/ 0x3FD06000, 0x00000000, -/**/ 0x3FF08D08, 0xAB0B03F8, -/**/ 0x3FC22019, 0x4F34EEE8, -/**/ 0x3FCC937E, 0x2AFDABDE, -/**/ 0x3FC03E9C, 0x5C4F35BA, -/**/ 0x3FC3FC95, 0x68DF21A6, -/**/ 0x3FC17A91, 0x53843C52, -/**/ 0xBC9D6F54, 0xC2BB835A, -/**/ 0x3FD08F23, 0xCE0162B8, -/**/ 0x3FF08000, 0x00000000, -/**/ 0x3F6A1156, 0x1607EF23, -/**/ 0x3FD0A000, 0x00000000, -/**/ 0x3FF0919B, 0x70D9FA87, -/**/ 0x3FC27636, 0x0A456C09, -/**/ 0x3FCCD541, 0xDA483778, -/**/ 0x3FC0A394, 0x136D6630, -/**/ 0x3FC46722, 0xBA615E9C, -/**/ 0x3FC20AA6, 0xA2BC6F73, -/**/ 0x3CA9D006, 0x7F1D9D86, -/**/ 0x3FD0D161, 0x0F0C1EC8, -/**/ 0x3FF08000, 0x00000000, -/**/ 0x3F719B70, 0xD9FA8688, -/**/ 0x3FD0E000, 0x00000000, -/**/ 0x3FF09643, 0xD6B3D5D1, -/**/ 0x3FC2CD1A, 0x72641546, -/**/ 0x3FCD189D, 0x9D4AC7EC, -/**/ 0x3FC10AA9, 0x149C2E66, -/**/ 0x3FC4D51E, 0xD3DE8741, -/**/ 0x3FC29F86, 0xF6DA4768, -/**/ 0x3CAEA900, 0x828C2A81, -/**/ 0x3FD113B0, 0xC65D88C8, -/**/ 0x3FF08000, 0x00000000, -/**/ 0x3F7643D6, 0xB3D5D119, -/**/ 0x3FD12000, 0x00000000, -/**/ 0x3FF09B02, 0x0F1DF195, -/**/ 0x3FC324CB, 0x5C9E6B3F, -/**/ 0x3FCD5D9A, 0x0BE228B7, -/**/ 0x3FC173EC, 0xD29602B0, -/**/ 0x3FC546A7, 0x0FFA7799, -/**/ 0x3FC33965, 0x87BA569F, -/**/ 0xBCAE3258, 0x9956F2C3, -/**/ 0x3FD15613, 0x4ADA6FF0, -/**/ 0x3FF08000, 0x00000000, -/**/ 0x3F7B020F, 0x1DF1952F, -/**/ 0x3FD16000, 0x00000000, -/**/ 0x3FF09FD6, 0x4DD62EB0, -/**/ 0x3FC37D4D, 0xB8335DE5, -/**/ 0x3FCDA440, 0x04DFA3F1, -/**/ 0x3FC1DF71, 0x55E59412, -/**/ 0x3FC5BBDA, 0x0394B72E, -/**/ 0x3FC3D877, 0xE1177398, -/**/ 0x3CA8AC88, 0x3B5720A7, -/**/ 0x3FD19888, 0xF43427A8, -/**/ 0x3FF08000, 0x00000000, -/**/ 0x3F7FD64D, 0xD62EAF85, -/**/ 0x3FD1A000, 0x00000000, -/**/ 0x3FF0A4C0, 0xC7D99A5F, -/**/ 0x3FC3D6A6, 0x8F6BB942, -/**/ 0x3FCDEC98, 0xB06CB8A9, -/**/ 0x3FC24D49, 0x432C74B1, -/**/ 0x3FC634D7, 0x8C1C6EC6, -/**/ 0x3FC47CF6, 0x01BF2560, -/**/ 0x3CA3EDE7, 0x476E25C7, -/**/ 0x3FD1DB12, 0x1AED7720, -/**/ 0x3FF0C000, 0x00000000, -/**/ 0xBF7B3F38, 0x2665A126, -/**/ 0x3FD1E000, 0x00000000, -/**/ 0x3FF0A9C1, 0xB36B4C8B, -/**/ 0x3FC430DB, 0x0879E39B, -/**/ 0x3FCE36AD, 0x82887D8B, -/**/ 0x3FC2BD87, 0xE1B33C79, -/**/ 0x3FC6B1C0, 0xDEA4E95E, -/**/ 0x3FC5271A, 0x7C90504A, -/**/ 0x3CAAFAD9, 0x8A6EBD08, -/**/ 0x3FD21DAF, 0x185FA360, -/**/ 0x3FF0C000, 0x00000000, -/**/ 0xBF763E4C, 0x94B3751C, -/**/ 0x3FD22000, 0x00000000, -/**/ 0x3FF0AED9, 0x481B7EED, -/**/ 0x3FC48BF0, 0x66613BB3, -/**/ 0x3FCE8288, 0x3D9FDD8F, -/**/ 0x3FC33041, 0x22470BF2, -/**/ 0x3FC732B8, 0x97C5B476, -/**/ 0x3FC5D722, 0x9B614F73, -/**/ 0x3CA96B82, 0x759745C8, -/**/ 0x3FD26060, 0x46BF95B8, -/**/ 0x3FF0C000, 0x00000000, -/**/ 0xBF7126B7, 0xE48112DC, -/**/ 0x3FD26000, 0x00000000, -/**/ 0x3FF0B407, 0xBECEDF0E, -/**/ 0x3FC4E7EC, 0x09E5699A, -/**/ 0x3FCED032, 0xF541EC2D, -/**/ 0x3FC3A589, 0xA6688484, -/**/ 0x3FC7B7E2, 0xCC5228BD, -/**/ 0x3FC68D4E, 0x83ECAD1F, -/**/ 0x3CA98586, 0x7CB79363, -/**/ 0x3FD2A326, 0x01231EC8, -/**/ 0x3FF0C000, 0x00000000, -/**/ 0xBF67F082, 0x6241E449, -/**/ 0x3FD2A000, 0x00000000, -/**/ 0x3FF0B94D, 0x51C61D1C, -/**/ 0x3FC544D3, 0x7281F837, -/**/ 0x3FCF1FB8, 0x10F19F89, -/**/ 0x3FC41D76, 0xC7D08A44, -/**/ 0x3FC84165, 0x1AF4E5E6, -/**/ 0x3FC749E1, 0x5EE5D838, -/**/ 0x3C8A2A36, 0xA1F9A890, -/**/ 0x3FD2E600, 0xA3865760, -/**/ 0x3FF0C000, 0x00000000, -/**/ 0xBF5ACAB8, 0xE78B8E2F, -/**/ 0x3FD2E000, 0x00000000, -/**/ 0x3FF0BEAA, 0x3CA5B9C1, -/**/ 0x3FC5A2AC, 0x3F6A91D3, -/**/ 0x3FCF7122, 0x4F1650DB, -/**/ 0x3FC4981E, 0xA04F63E7, -/**/ 0x3FC8CF66, 0xBEBC9B64, -/**/ 0x3FC80D21, 0x81598BF7, -/**/ 0xBC984143, 0x8E0FD320, -/**/ 0x3FD328F0, 0x8AD12008, -/**/ 0x3FF0C000, 0x00000000, -/**/ 0xBF355C35, 0xA463F3FD, -/**/ 0x3FD32000, 0x00000000, -/**/ 0x3FF0C41E, 0xBC7E151A, -/**/ 0x3FC6017C, 0x30943E19, -/**/ 0x3FCFC47C, 0xC80C760D, -/**/ 0x3FC51598, 0x120B129D, -/**/ 0x3FC96210, 0xA2A855B5, -/**/ 0x3FC8D758, 0x9880230D, -/**/ 0xBCA4D129, 0xBF178596, -/**/ 0x3FD36BF6, 0x14DCC050, -/**/ 0x3FF0C000, 0x00000000, -/**/ 0x3F507AF1, 0xF854661E, -/**/ 0x3FD36000, 0x00000000, -/**/ 0x3FF0C9AB, 0x0FD3C135, -/**/ 0x3FC66149, 0x27C80482, -/**/ 0x3FD00CE9, 0x78AC0DDD, -/**/ 0x3FC595FA, 0xD02204B1, -/**/ 0x3FC9F98D, 0x7642750D, -/**/ 0x3FC9A8D3, 0xD82AC48A, -/**/ 0x3C977587, 0x289B3951, -/**/ 0x3FD3AF11, 0xA079A6D8, -/**/ 0x3FF0C000, 0x00000000, -/**/ 0x3F63561F, 0xA7826A0D, -/**/ 0x3FD3A000, 0x00000000, -/**/ 0x3FF0CF4F, 0x76A81A69, -/**/ 0x3FC6C219, 0x29BF5ACD, -/**/ 0x3FD03898, 0x507D5DD4, -/**/ 0x3FC6195F, 0x67B79439, -/**/ 0x3FCA9609, 0xC35A709F, -/**/ 0x3FCA81E4, 0x2BF7455C, -/**/ 0x3CA03304, 0xF424551E, -/**/ 0x3FD3F243, 0x8D754B40, -/**/ 0x3FF0C000, 0x00000000, -/**/ 0x3F6E9EED, 0x5034D2A8, -/**/ 0x3FD3E000, 0x00000000, -/**/ 0x3FF0D50C, 0x3282280D, -/**/ 0x3FC723F2, 0x5F4ACC23, -/**/ 0x3FD06551, 0x08771131, -/**/ 0x3FC69FDF, 0x4970163E, -/**/ 0x3FCB37B4, 0x04EE9A0A, -/**/ 0x3FCB62DE, 0x6B79BC18, -/**/ 0x3CAECF25, 0x02A2F456, -/**/ 0x3FD4358C, 0x3CA032E0, -/**/ 0x3FF0C000, 0x00000000, -/**/ 0x3F750C32, 0x82280D28, -/**/ 0x3FD42000, 0x00000000, -/**/ 0x3FF0DAE1, 0x8677C82D, -/**/ 0x3FC786DB, 0x16834ABE, -/**/ 0x3FD09319, 0xF1631731, -/**/ 0x3FC72994, 0xD36297AF, -/**/ 0x3FCBDEBC, 0xBF583888, -/**/ 0x3FCC4C1B, 0x918E2AE6, -/**/ 0x3CA92F70, 0xF34A155C, -/**/ 0x3FD478EC, 0x0FD419C8, -/**/ 0x3FF0C000, 0x00000000, -/**/ 0x3F7AE186, 0x77C82D53, -/**/ 0x3FD46000, 0x00000000, -/**/ 0x3FF0E0CF, 0xB73728F8, -/**/ 0x3FC7EAD9, 0xC406A36A, -/**/ 0x3FD0C1F9, 0x91BDA616, -/**/ 0x3FC7B69B, 0x5B86C42B, -/**/ 0x3FCC8B56, 0x99CD8C9F, -/**/ 0x3FCD3DF8, 0xF7084936, -/**/ 0xBC923B74, 0x54942387, -/**/ 0x3FD4BC63, 0x69FA40E8, -/**/ 0x3FF10000, 0x00000000, -/**/ 0xBF7F3048, 0xC8D707BB, -/**/ 0x3FD4A000, 0x00000000, -/**/ 0x3FF0E6D7, 0x0B1092B8, -/**/ 0x3FC84FF5, 0x043F9011, -/**/ 0x3FD0F1F6, 0xA7AFD6EB, -/**/ 0x3FC8470F, 0x3AA5D7B9, -/**/ 0x3FCD3DB6, 0x794E9CFD, -/**/ 0x3FCE38D8, 0x90FB69FD, -/**/ 0x3C9CFA2D, 0xC2327DC5, -/**/ 0x3FD4FFF2, 0xAF11E2C0, -/**/ 0x3FF10000, 0x00000000, -/**/ 0xBF7928F4, 0xEF6D4848, -/**/ 0x3FD4E000, 0x00000000, -/**/ 0x3FF0ECF7, 0xCA008550, -/**/ 0x3FC8B633, 0x9CB9ECA7, -/**/ 0x3FD12318, 0x2B20AC3D, -/**/ 0x3FC8DB0D, 0xD7D5E860, -/**/ 0x3FCDF613, 0x9D1315AF, -/**/ 0x3FCF3D21, 0x32D8BC6F, -/**/ 0x3C9C6A36, 0x92E48EEE, -/**/ 0x3FD5439A, 0x4436D008, -/**/ 0x3FF10000, 0x00000000, -/**/ 0xBF730835, 0xFF7AAF92, -/**/ 0x3FD52000, 0x00000000, -/**/ 0x3FF0F332, 0x3DBA2C62, -/**/ 0x3FC91D9C, 0x7D83983C, -/**/ 0x3FD15565, 0x4FDDA02E, -/**/ 0x3FC972B5, 0xB48747C7, -/**/ 0x3FCEB4A7, 0xBC9105F9, -/**/ 0x3FD0259F, 0x6A535ECF, -/**/ 0x3C87EB36, 0xF6EA55C1, -/**/ 0x3FD5875A, 0x8FA83538, -/**/ 0x3FF10000, 0x00000000, -/**/ 0xBF699B84, 0x8BA73C6A, -/**/ 0x3FD56000, 0x00000000, -/**/ 0x3FF0F986, 0xB1B22D42, -/**/ 0x3FC98636, 0xC29A92ED, -/**/ 0x3FD188E5, 0x87DBE62D, -/**/ 0x3FCA0E26, 0x792C37EB, -/**/ 0x3FCF79AF, 0x2735E8CD, -/**/ 0x3FD0B1D1, 0x6ECCD4C0, -/**/ 0x3C9502B5, 0xBEAE0510, -/**/ 0x3FD5CB33, 0xF8CF8AC0, -/**/ 0x3FF10000, 0x00000000, -/**/ 0xBF59E539, 0x374AF74C, -/**/ 0x3FD5A000, 0x00000000, -/**/ 0x3FF0FFF5, 0x7329D23A, -/**/ 0x3FC9F009, 0xB568F082, -/**/ 0x3FD1BDA0, 0x85939DB2, -/**/ 0x3FCAAD81, 0x0283B18A, -/**/ 0x3FD022B4, 0x72F69148, -/**/ 0x3FD14362, 0x39AD0B79, -/**/ 0xBCAD7968, 0x80828B86, -/**/ 0x3FD60F26, 0xE847B130, -/**/ 0x3FF10000, 0x00000000, -/**/ 0xBEE519AC, 0x5B8BC081, -/**/ 0x3FD5E000, 0x00000000, -/**/ 0x3FF1067E, 0xD13A9687, -/**/ 0x3FCA5B1C, 0xCE4F3F61, -/**/ 0x3FD1F39E, 0x3E764545, -/**/ 0x3FCB50E7, 0x6F90871B, -/**/ 0x3FD08C0B, 0x6F487F97, -/**/ 0x3FD1DA90, 0x67265C20, -/**/ 0x3CAE5B02, 0x995723AD, -/**/ 0x3FD65333, 0xC7E43AA0, -/**/ 0x3FF10000, 0x00000000, -/**/ 0x3F59FB44, 0xEA5A1D64, -/**/ 0x3FD62000, 0x00000000, -/**/ 0x3FF10D23, 0x1CE216D9, -/**/ 0x3FCAC777, 0xB63E0B53, -/**/ 0x3FD22AE6, 0xED81D055, -/**/ 0x3FCBF87D, 0x3046C5AC, -/**/ 0x3FD0F8FE, 0xFCB29FE4, -/**/ 0x3FD2779D, 0xC99A404E, -/**/ 0xBCA2AF1E, 0xC3202AE8, -/**/ 0x3FD6975B, 0x02B8E378, -/**/ 0x3FF10000, 0x00000000, -/**/ 0x3F6A4639, 0xC42DB2AB, -/**/ 0x3FD66000, 0x00000000, -/**/ 0x3FF113E2, 0xA90E6A24, -/**/ 0x3FCB3522, 0x485F2C6B, -/**/ 0x3FD26383, 0x15F1D6CC, -/**/ 0x3FCCA467, 0x14F9D555, -/**/ 0x3FD169B3, 0x245E397E, -/**/ 0x3FD31ACF, 0x99479CF7, -/**/ 0xBC730D3F, 0x8992C228, -/**/ 0x3FD6DB9D, 0x05213B28, -/**/ 0x3FF10000, 0x00000000, -/**/ 0x3F73E2A9, 0x0E6A2469, -/**/ 0x3FD6A000, 0x00000000, -/**/ 0x3FF11ABD, 0xCAAAE6D5, -/**/ 0x3FCBA424, 0x93CF9B23, -/**/ 0x3FD29D7B, 0x86106AD4, -/**/ 0x3FCD54CB, 0x5E96870B, -/**/ 0x3FD1DE4D, 0x9975D46D, -/**/ 0x3FD3C46E, 0xA709F8A4, -/**/ 0xBC9CB630, 0x457B6F5C, -/**/ 0x3FD71FFA, 0x3CC87FC8, -/**/ 0x3FF10000, 0x00000000, -/**/ 0x3F7ABDCA, 0xAAE6D53D, -/**/ 0x3FD6E000, 0x00000000, -/**/ 0x3FF121B4, 0xD8AD589E, -/**/ 0x3FCC1486, 0xDD6A8C89, -/**/ 0x3FD2D8D9, 0x5A283891, -/**/ 0x3FCE09D1, 0xCFB4F5A1, -/**/ 0x3FD256F5, 0xCF594BB6, -/**/ 0x3FD474C7, 0x92614C29, -/**/ 0xBC88FB31, 0x533051E9, -/**/ 0x3FD76473, 0x18B1AD28, -/**/ 0x3FF14000, 0x00000000, -/**/ 0xBF7E4B27, 0x52A761D6, -/**/ 0x3FD72000, 0x00000000, -/**/ 0x3FF128C8, 0x2C23AB4A, -/**/ 0x3FCC8651, 0xA1A6A356, -/**/ 0x3FD315A5, 0xFF99ABE3, -/**/ 0x3FCEC3A3, 0xBE8EE4C2, -/**/ 0x3FD2D3D5, 0x11207D5D, -/**/ 0x3FD52C2B, 0x02FE6DF8, -/**/ 0xBCA3F304, 0xFE4D8DF3, -/**/ 0x3FD7A908, 0x093FC1F0, -/**/ 0x3FF14000, 0x00000000, -/**/ 0xBF7737D3, 0xDC54B622, -/**/ 0x3FD76000, 0x00000000, -/**/ 0x3FF12FF8, 0x20420F33, -/**/ 0x3FCCF98D, 0x96860D89, -/**/ 0x3FD353EB, 0x3814F292, -/**/ 0x3FCF826C, 0x27E81BF7, -/**/ 0x3FD35516, 0x9A827352, -/**/ 0x3FD5EAED, 0xE614C6DF, -/**/ 0x3C80AEDB, 0x36C1700C, -/**/ 0x3FD7EDB9, 0x803E3C28, -/**/ 0x3FF14000, 0x00000000, -/**/ 0xBF7007DF, 0xBDF0CCC6, -/**/ 0x3FD7A000, 0x00000000, -/**/ 0x3FF13745, 0x12719C3A, -/**/ 0x3FCD6E43, 0xAD9A717F, -/**/ 0x3FD393B3, 0x1CFACD12, -/**/ 0x3FD0232B, 0xE17B8F05, -/**/ 0x3FD3DAE7, 0xB23873BC, -/**/ 0x3FD6B169, 0xAFB712E5, -/**/ 0x3C994C0C, 0x0BC74599, -/**/ 0x3FD83287, 0xF0E9CF80, -/**/ 0x3FF14000, 0x00000000, -/**/ 0xBF6175DB, 0x1CC78CA5, -/**/ 0x3FD7E000, 0x00000000, -/**/ 0x3FF13EAF, 0x625F7844, -/**/ 0x3FCDE47D, 0x161D9978, -/**/ 0x3FD3D508, 0x22E63DCA, -/**/ 0x3FD087CA, 0x8B2EC7EB, -/**/ 0x3FD46577, 0xC5F619C8, -/**/ 0x3FD77FFC, 0xA08A73DE, -/**/ 0x3CA1DBDE, 0x6E7B547F, -/**/ 0x3FD87773, 0xCFF956F8, -/**/ 0x3FF14000, 0x00000000, -/**/ 0xBF3509DA, 0x087BC752, -/**/ 0x3FD82000, 0x00000000, -/**/ 0x3FF14637, 0x720C869D, -/**/ 0x3FCE5C43, 0x3F1FD940, -/**/ 0x3FD417F5, 0x1D614654, -/**/ 0x3FD0EF2A, 0x472052ED, -/**/ 0x3FD4F4F8, 0x88116DA6, -/**/ 0x3FD8570A, 0x102117B6, -/**/ 0xBCAB6E89, 0x214A7328, -/**/ 0x3FD8BC7D, 0x93A70458, -/**/ 0x3FF14000, 0x00000000, -/**/ 0x3F58DDC8, 0x321A7479, -/**/ 0x3FD86000, 0x00000000, -/**/ 0x3FF14DDD, 0xA5DDA5C4, -/**/ 0x3FCED59F, 0xD9CD3739, -/**/ 0x3FD45C85, 0x42C70412, -/**/ 0x3FD15964, 0x49C983A8, -/**/ 0x3FD5899E, 0x0EF7ED0B, -/**/ 0x3FD936FA, 0xBC543499, -/**/ 0x3CAFF50D, 0x7B29F22E, -/**/ 0x3FD901A5, 0xB3B9CF50, -/**/ 0x3FF14000, 0x00000000, -/**/ 0x3F6BBB4B, 0xBB4B87E0, -/**/ 0x3FD8A000, 0x00000000, -/**/ 0x3FF155A2, 0x64AC8172, -/**/ 0x3FCF509C, 0xDBCA7047, -/**/ 0x3FD4A2C4, 0x3055A16F, -/**/ 0x3FD1C692, 0xD25160C7, -/**/ 0x3FD6239E, 0xF68F9906, -/**/ 0x3FDA203D, 0x1DFC2EE2, -/**/ 0x3CAD2019, 0x671EF39F, -/**/ 0x3FD946EC, 0xA98F2718, -/**/ 0x3FF14000, 0x00000000, -/**/ 0x3F75A264, 0xAC8171A9, -/**/ 0x3FD8E000, 0x00000000, -/**/ 0x3FF15D86, 0x17D8FF02, -/**/ 0x3FCFCD44, 0x81AAFD5E, -/**/ 0x3FD4EABD, 0xEE72B776, -/**/ 0x3FD236D1, 0x377F943F, -/**/ 0x3FD6C334, 0x83A56DB7, -/**/ 0x3FDB1345, 0xC36D6C50, -/**/ 0xBC7841E5, 0x761537BB, -/**/ 0x3FD98C52, 0xF024E808, -/**/ 0x3FF14000, 0x00000000, -/**/ 0x3F7D8617, 0xD8FF01DE, -/**/ 0x3FD92000, 0x00000000, -/**/ 0x3FF16589, 0x2B5B4A9A, -/**/ 0x3FD025D0, 0xA8C0A8C6, -/**/ 0x3FD5347E, 0xF524E4B6, -/**/ 0x3FD2AA3B, 0xF565EDBD, -/**/ 0x3FD7689A, 0xC98D2842, -/**/ 0x3FDC108F, 0xB128B4DD, -/**/ 0xBC8A5EEB, 0x4452A669, -/**/ 0x3FD9D1D9, 0x04239878, -/**/ 0x3FF18000, 0x00000000, -/**/ 0xBF7A76D4, 0xA4B56661, -/**/ 0x3FD96000, 0x00000000, -/**/ 0x3FF16DAC, 0x0DD68BC8, -/**/ 0x3FD065DF, 0x0EC54C3A, -/**/ 0x3FD58014, 0x30C58A12, -/**/ 0x3FD320F0, 0xBBCBCCEF, -/**/ 0x3FD81410, 0xD218F380, -/**/ 0x3FDD189C, 0xC9371D29, -/**/ 0x3C58C3C1, 0x1D6E6EC7, -/**/ 0x3FDA177F, 0x63E8EF18, -/**/ 0x3FF18000, 0x00000000, -/**/ 0xBF7253F2, 0x29743866, -/**/ 0x3FD9A000, 0x00000000, -/**/ 0x3FF175EF, 0x30AC48A8, -/**/ 0x3FD0A6D3, 0x037BA7C0, -/**/ 0x3FD5CD8B, 0x06EDCD18, -/**/ 0x3FD39B0E, 0x7D679188, -/**/ 0x3FD8C5D8, 0xC8128143, -/**/ 0x3FDE2BF6, 0x39B3613A, -/**/ 0xBC874080, 0xC70C9C76, -/**/ 0x3FDA5D46, 0x8F92A560, -/**/ 0x3FF18000, 0x00000000, -/**/ 0xBF64219E, 0xA76EB06E, -/**/ 0x3FD9E000, 0x00000000, -/**/ 0x3FF17E53, 0x08107EEF, -/**/ 0x3FD0E8B2, 0x40691386, -/**/ 0x3FD61CF1, 0x5BA2319A, -/**/ 0x3FD418B5, 0x7FF30656, -/**/ 0x3FD97E38, 0x24624146, -/**/ 0x3FDF4B2C, 0xF30D6589, -/**/ 0xBC8D4AD9, 0x74DD0C9B, -/**/ 0x3FDAA32F, 0x090998F8, -/**/ 0x3FF18000, 0x00000000, -/**/ 0xBF3ACF7E, 0xF81116BC, -/**/ 0x3FDA2000, 0x00000000, -/**/ 0x3FF186D8, 0x0B1E7A9D, -/**/ 0x3FD12B82, 0xA98356F0, -/**/ 0x3FD66E55, 0x96C051D8, -/**/ 0x3FD49A07, 0x6D28A49D, -/**/ 0x3FDA3D77, 0xDE14D616, -/**/ 0x3FE03B6D, 0x13502F53, -/**/ 0x3CA51700, 0x4AD59707, -/**/ 0x3FDAE939, 0x540D3F08, -/**/ 0x3FF18000, 0x00000000, -/**/ 0x3F5B602C, 0x79EA752F, -/**/ 0x3FDA6000, 0x00000000, -/**/ 0x3FF18F7E, 0xB3EE7285, -/**/ 0x3FD16F4A, 0x4EC4AF40, -/**/ 0x3FD6C1C6, 0xA9B275FD, -/**/ 0x3FD51F27, 0x64B886B9, -/**/ 0x3FDB03E4, 0x9D72A144, -/**/ 0x3FE0D7CF, 0xE7207DD5, -/**/ 0xBCAACE1E, 0x8E77D1B2, -/**/ 0x3FDB2F65, 0xF63F6C78, -/**/ 0x3FF18000, 0x00000000, -/**/ 0x3F6EFD67, 0xDCE509F5, -/**/ 0x3FDAA000, 0x00000000, -/**/ 0x3FF19847, 0x7FABF325, -/**/ 0x3FD1B40F, 0x6DD15EDB, -/**/ 0x3FD71754, 0x156D090D, -/**/ 0x3FD5A83A, 0x0F44EE42, -/**/ 0x3FDBD1CE, 0xF26149CC, -/**/ 0x3FE17B14, 0x9EBB7D53, -/**/ 0x3CA18867, 0x054C177A, -/**/ 0x3FDB75B5, 0x773075F8, -/**/ 0x3FF18000, 0x00000000, -/**/ 0x3F78477F, 0xABF3257B, -/**/ 0x3FDAE000, 0x00000000, -/**/ 0x3FF1A132, 0xEEAD20E6, -/**/ 0x3FD1F9D8, 0x73AFA8F4, -/**/ 0x3FD76F0D, 0xF0BA2B44, -/**/ 0x3FD63565, 0xB2776412, -/**/ 0x3FDCA78B, 0x8E4B8181, -/**/ 0x3FE22595, 0xDE92725A, -/**/ 0xBCABDA45, 0x225EE470, -/**/ 0x3FDBBC28, 0x606BABE0, -/**/ 0x3FF1C000, 0x00000000, -/**/ 0xBF7ECD11, 0x52DF1A7E, -/**/ 0x3FDB2000, 0x00000000, -/**/ 0x3FF1AA41, 0x848ADB16, -/**/ 0x3FD240AB, 0xFE932ABB, -/**/ 0x3FD7C904, 0xEED7E85D, -/**/ 0x3FD6C6D2, 0x4640B1B3, -/**/ 0x3FDD8573, 0x81D01020, -/**/ 0x3FE2D7B3, 0x9938B939, -/**/ 0x3CA12ECB, 0x36D76E02, -/**/ 0x3FDC02BF, 0x3D843430, -/**/ 0x3FF1C000, 0x00000000, -/**/ 0xBF75BE7B, 0x7524EA70, -/**/ 0x3FDB6000, 0x00000000, -/**/ 0x3FF1B373, 0xC839C9AC, -/**/ 0x3FD28890, 0xDFBC912D, -/**/ 0x3FD8254A, 0x666DE3CA, -/**/ 0x3FD75CA9, 0x8B57457C, -/**/ 0x3FDE6BE4, 0x7E7E55FE, -/**/ 0x3FE391D3, 0x68EC3777, -/**/ 0xBC9F7EFE, 0x4D8A80A5, -/**/ 0x3FDC497A, 0x9C2247A0, -/**/ 0x3FF1C000, 0x00000000, -/**/ 0xBF69186F, 0x8C6CA8A7, -/**/ 0x3FDBA000, 0x00000000, -/**/ 0x3FF1BCCA, 0x44246029, -/**/ 0x3FD2D18E, 0x1D6EB966, -/**/ 0x3FD883F0, 0x58DF9E20, -/**/ 0x3FD7F717, 0x2308FF84, -/**/ 0x3FDF5B41, 0x1CEC1692, -/**/ 0x3FE45460, 0xEFAE7F7E, -/**/ 0xBCACA88A, 0xC247C281, -/**/ 0x3FDC905B, 0x0C10D428, -/**/ 0x3FF1C000, 0x00000000, -/**/ 0xBF49ADDE, 0xDCFEB6F6, -/**/ 0x3FDBE000, 0x00000000, -/**/ 0x3FF1C645, 0x8645E0A6, -/**/ 0x3FD31BAA, 0xF4FA598C, -/**/ 0x3FD8E509, 0x7A00CDBD, -/**/ 0x3FD89648, 0xA876EFA4, -/**/ 0x3FE029F8, 0x93BB3BA0, -/**/ 0x3FE51FCE, 0x3E769492, -/**/ 0xBC63BD0A, 0xDAC78BA6, -/**/ 0x3FDCD761, 0x1F4B8A08, -/**/ 0x3FF1C000, 0x00000000, -/**/ 0x3F591619, 0x178298DB, -/**/ 0x3FDC2000, 0x00000000, -/**/ 0x3FF1CFE6, 0x20466A93, -/**/ 0x3FD366EE, 0xDCE16113, -/**/ 0x3FD948A9, 0x3831A262, -/**/ 0x3FD93A6D, 0xCB5336B7, -/**/ 0x3FE0AB30, 0xF50362A5, -/**/ 0x3FE5F494, 0x440F45E4, -/**/ 0xBCA1B23F, 0x79A811B8, -/**/ 0x3FDD1E8D, 0x6A0D56C8, -/**/ 0x3FF1C000, 0x00000000, -/**/ 0x3F6FCC40, 0x8CD52690, -/**/ 0x3FDC6000, 0x00000000, -/**/ 0x3FF1D9AC, 0xA798215A, -/**/ 0x3FD3B361, 0x87135170, -/**/ 0x3FD9AEE3, 0xC4E92F90, -/**/ 0x3FD9E3B8, 0x6C3B0A06, -/**/ 0x3FE13183, 0x439D6983, -/**/ 0x3FE6D333, 0x444347EE, -/**/ 0x3C9E6687, 0x141D7ADE, -/**/ 0x3FDD65E0, 0x82DF5278, -/**/ 0x3FF1C000, 0x00000000, -/**/ 0x3F79ACA7, 0x98215A4D, -/**/ 0x3FDCA000, 0x00000000, -/**/ 0x3FF1E399, 0xB59577B1, -/**/ 0x3FD4010A, 0xE343E389, -/**/ 0x3FDA17CE, 0x1DB4A57B, -/**/ 0x3FDA925C, 0xBAC8CA27, -/**/ 0x3FE1BD2C, 0x29AC5009, -/**/ 0x3FE7BC33, 0x5806ABBE, -/**/ 0x3C89743A, 0xD953CBEA, -/**/ 0x3FDDAD5B, 0x02A82420, -/**/ 0x3FF20000, 0x00000000, -/**/ 0xBF7C664A, 0x6A884EAF, -/**/ 0x3FDCE000, 0x00000000, -/**/ 0x3FF1EDAD, 0xE7A0AD1E, -/**/ 0x3FD44FF3, 0x215D62D8, -/**/ 0x3FDA837E, 0x15B2742E, -/**/ 0x3FDB4691, 0x557C3A62, -/**/ 0x3FE24E6B, 0x9ABECCA0, -/**/ 0x3FE8B024, 0xF75D3619, -/**/ 0xBC60A42B, 0x953C1F21, -/**/ 0x3FDDF4FD, 0x84BBE168, -/**/ 0x3FF20000, 0x00000000, -/**/ 0xBF725218, 0x5F52E269, -/**/ 0x3FDD2000, 0x00000000, -/**/ 0x3FF1F7E9, 0xDF448BE1, -/**/ 0x3FD4A022, 0xB4103D45, -/**/ 0x3FDAF20A, 0x5F90F152, -/**/ 0x3FDC008F, 0x6B992E26, -/**/ 0x3FE2E585, 0x07C18F30, -/**/ 0x3FE9AFA1, 0x8DCE89C2, -/**/ 0xBC8B90A5, 0xE5B4E0DD, -/**/ 0x3FDE3CC8, 0xA6EC6EF0, -/**/ 0x3FF20000, 0x00000000, -/**/ 0xBF602C41, 0x76E83DEE, -/**/ 0x3FDD6000, 0x00000000, -/**/ 0x3FF2024E, 0x42567651, -/**/ 0x3FD4F1A2, 0x53815E48, -/**/ 0x3FDB638A, 0x98189F26, -/**/ 0x3FDCC092, 0xE11F7BB9, -/**/ 0x3FE382BF, 0x968E1C3C, -/**/ 0x3FEABB4C, 0x1A4C4551, -/**/ 0xBCAC384D, 0xC65EE1E9, -/**/ 0x3FDE84BD, 0x099A6620, -/**/ 0x3FF20000, 0x00000000, -/**/ 0x3F427212, 0xB3B2877E, -/**/ 0x3FDDA000, 0x00000000, -/**/ 0x3FF20CDB, 0xBB19D366, -/**/ 0x3FD5447B, 0x00190520, -/**/ 0x3FDBD817, 0x514AC3D7, -/**/ 0x3FDD86DA, 0x7501B24E, -/**/ 0x3FE42666, 0x5D5DCC91, -/**/ 0x3FEBD3D1, 0xDB834BBA, -/**/ 0xBCA62892, 0x64307FE4, -/**/ 0x3FDECCDB, 0x4FC685E0, -/**/ 0x3FF20000, 0x00000000, -/**/ 0x3F69B776, 0x33A6CD00, -/**/ 0x3FDDE000, 0x00000000, -/**/ 0x3FF21792, 0xF864EB38, -/**/ 0x3FD598B6, 0x0573E0CA, -/**/ 0x3FDC4FCA, 0x1E1D9C05, -/**/ 0x3FDE53A7, 0xE9C2FB44, -/**/ 0x3FE4D0C8, 0xA26E99AF, -/**/ 0x3FECF9EB, 0x09A8A359, -/**/ 0xBCADF861, 0xD9AFA9E0, -/**/ 0x3FDF1524, 0x1F23B3F8, -/**/ 0x3FF20000, 0x00000000, -/**/ 0x3F7792F8, 0x64EB3836, -/**/ 0x3FDE2000, 0x00000000, -/**/ 0x3FF22274, 0xADC744F8, -/**/ 0x3FD5EE5C, 0xFD785957, -/**/ 0x3FDCCABD, 0x9EE01B3A, -/**/ 0x3FDF2740, 0x30A7B7B5, -/**/ 0x3FE5823A, 0x202E0D0D, -/**/ 0x3FEE2E5B, 0x9EEBE829, -/**/ 0xBC93BB42, 0xE2EA9787, -/**/ 0x3FDF5D98, 0x202994B8, -/**/ 0x3FF24000, 0x00000000, -/**/ 0xBF7D8B52, 0x38BB0864, -/**/ 0x3FDE6000, 0x00000000, -/**/ 0x3FF22D81, 0x93B1990A, -/**/ 0x3FD64579, 0xD3920D0F, -/**/ 0x3FDD490D, 0x8E4FE1FE, -/**/ 0x3FE000F5, 0xCBD3ED59, -/**/ 0x3FE63B13, 0x4E45F774, -/**/ 0x3FEF71F4, 0x2FD578CE, -/**/ 0x3CA8AD1C, 0xC0E1AC47, -/**/ 0x3FDFA637, 0xFE27BF60, -/**/ 0x3FF24000, 0x00000000, -/**/ 0xBF727E6C, 0x4E66F5A1, -/**/ 0x3FDEA000, 0x00000000, -/**/ 0x3FF238BA, 0x679F6AE1, -/**/ 0x3FD69E16, 0xC815A8F5, -/**/ 0x3FDDCAD6, 0xCF6CD4C9, -/**/ 0x3FE071FA, 0xFD2ADE38, -/**/ 0x3FE6FBB1, 0xAFEE9630, -/**/ 0x3FF062C9, 0x6A7ACB82, -/**/ 0x3C7E3580, 0x35D3555B, -/**/ 0x3FDFEF04, 0x67599588, -/**/ 0x3FF24000, 0x00000000, -/**/ 0xBF5D1661, 0x82547B6F, -/**/ 0x3FDEE000, 0x00000000, -/**/ 0x3FF2441F, 0xEC425F4B, -/**/ 0x3FD6F83E, 0x73CF67B4, -/**/ 0x3FDE5037, 0x7C1691BA, -/**/ 0x3FE0E6D7, 0x7AF8190E, -/**/ 0x3FE7C478, 0x27F29078, -/**/ 0x3FF11512, 0x13B5FFDC, -/**/ 0x3C6CC7A1, 0x5FEBA301, -/**/ 0x3FE01BFF, 0x067D6224, -/**/ 0x3FF24000, 0x00000000, -/**/ 0x3F507FB1, 0x097D2BDC, -/**/ 0x3FDF2000, 0x00000000, -/**/ 0x3FF24FB2, 0xE9AF6533, -/**/ 0x3FD753FB, 0xCBBEA804, -/**/ 0x3FDED94E, 0xF480E731, -/**/ 0x3FE15FB5, 0x106D90C6, -/**/ 0x3FE895CF, 0x52DAD430, -/**/ 0x3FF1D052, 0x28FAAE13, -/**/ 0xBCA50976, 0xE849F35A, -/**/ 0x3FE04092, 0xD1AE3B48, -/**/ 0x3FF24000, 0x00000000, -/**/ 0x3F6F65D3, 0x5ECA665D, -/**/ 0x3FDF6000, 0x00000000, -/**/ 0x3FF25B74, 0x2D8DC7FA, -/**/ 0x3FD7B15A, 0x25013475, -/**/ 0x3FDF663D, 0xEF8D6387, -/**/ 0x3FE1DCBF, 0xA2DF4BFF, -/**/ 0x3FE97025, 0xE7C2E4E5, -/**/ 0x3FF29510, 0x1C2AE4AB, -/**/ 0x3CA4C8DC, 0xB02A3D13, -/**/ 0x3FE0653D, 0xF0FD9FD8, -/**/ 0x3FF24000, 0x00000000, -/**/ 0x3F7B742D, 0x8DC7FA40, -/**/ 0x3FDFA000, 0x00000000, -/**/ 0x3FF26764, 0x8B4843F2, -/**/ 0x3FD81065, 0x38F10257, -/**/ 0x3FDFF726, 0x8C1920B1, -/**/ 0x3FE25E25, 0x5148D4E4, -/**/ 0x3FEA53F1, 0x2061C3FE, -/**/ 0x3FF363DB, 0x5B9300E5, -/**/ 0xBCA47774, 0x624B8B97, -/**/ 0x3FE08A00, 0xC1CAE338, -/**/ 0x3FF28000, 0x00000000, -/**/ 0xBF789B74, 0xB7BC0E50, -/**/ 0x3FDFE000, 0x00000000, -/**/ 0x3FF27384, 0xDC4036F2, -/**/ 0x3FD87129, 0x29775C8F, -/**/ 0x3FE04616, 0x31A78776, -/**/ 0x3FE2E416, 0x95EE0C65, -/**/ 0x3FEB41AD, 0x28E05161, -/**/ 0x3FF43D4C, 0xFF1DF849, -/**/ 0x3CA5941C, 0xBABBA919, -/**/ 0x3FE0AEDB, 0xA3221C1C, -/**/ 0x3FF28000, 0x00000000, -/**/ 0xBF68F647, 0x7F921C27, -/**/ 0x3FE01000, 0x00000000, -/**/ 0x3FF27FD6, 0x00030888, -/**/ 0x3FD8D3B2, 0x8598A1B5, -/**/ 0x3FE092BA, 0x4E0BC755, -/**/ 0x3FE36EC6, 0x6A428EEC, -/**/ 0x3FEC39C0, 0x44F514C9, -/**/ 0x3FF52205, 0x18C4EF3A, -/**/ 0x4000C1D1, 0xA852F235, -/**/ 0x3CA78082, 0xD00F64B8, -/**/ 0x3FE0D3CE, 0xF5C846F8, -/**/ 0x3FF28000, 0x00000000, -/**/ 0xBF04FFFE, 0x7BBC39DF, -/**/ 0x3FE03000, 0x00000000, -/**/ 0x3FF28C58, 0xDC81E6D7, -/**/ 0x3FD9380E, 0x4E3BF356, -/**/ 0x3FE0E192, 0xFFC646A7, -/**/ 0x3FE3FE6A, 0x6D34756D, -/**/ 0x3FED3CEF, 0x139ABC91, -/**/ 0x3FF612B8, 0xF80111C0, -/**/ 0x4001A33C, 0x3467C688, -/**/ 0xBC8A9954, 0x34F59445, -/**/ 0x3FE0F8DB, 0x1C47D550, -/**/ 0x3FF28000, 0x00000000, -/**/ 0x3F68B1B9, 0x03CDAE3F, -/**/ 0x3FE05000, 0x00000000, -/**/ 0x3FF2990E, 0x5E4BF713, -/**/ 0x3FD99E49, 0xFB326E9E, -/**/ 0x3FE132B4, 0x8779391A, -/**/ 0x3FE4933B, 0x0C2FE325, -/**/ 0x3FEE4BB1, 0xAEAAE1D0, -/**/ 0x3FF71020, 0x1F4377BD, -/**/ 0x40029271, 0x1C886605, -/**/ 0xBCA33AB1, 0x7130CE99, -/**/ 0x3FE11E00, 0x7AFDAF10, -/**/ 0x3FF28000, 0x00000000, -/**/ 0x3F790E5E, 0x4BF712C7, -/**/ 0x3FE07000, 0x00000000, -/**/ 0x3FF2A5F7, 0x78CB1A3B, -/**/ 0x3FDA0673, 0x8081C5D1, -/**/ 0x3FE18634, 0x0D5E6499, -/**/ 0x3FE52D73, 0xAEDD6BE6, -/**/ 0x3FEF66A5, 0x1CF1AAA0, -/**/ 0x3FF81B02, 0x4834E5A9, -/**/ 0x40039066, 0xFCE48906, -/**/ 0xBCA34E4F, 0x6BFB4C85, -/**/ 0x3FE1433F, 0x7826AAD4, -/**/ 0x3FF2C000, 0x00000000, -/**/ 0xBF7A0887, 0x34E5C574, -/**/ 0x3FE09000, 0x00000000, -/**/ 0x3FF2B315, 0x268368DB, -/**/ 0x3FDA7099, 0x53F655B7, -/**/ 0x3FE1DC27, 0xAD9032EC, -/**/ 0x3FE5CD52, 0xE5F88E23, -/**/ 0x3FF04738, 0x0A68BDFC, -/**/ 0x3FF93435, 0x2F057820, -/**/ 0x40049E27, 0xDAE8A2FC, -/**/ 0x3C86832C, 0xFAA44565, -/**/ 0x3FE16898, 0x7BED8260, -/**/ 0x3FF2C000, 0x00000000, -/**/ 0xBF69D5B2, 0xF92E4A41, -/**/ 0x3FE0B000, 0x00000000, -/**/ 0x3FF2C068, 0x69558A9E, -/**/ 0x3FDADCCA, 0x73011B64, -/**/ 0x3FE234A6, 0x8511146A, -/**/ 0x3FE6731A, 0x9D6CBF3C, -/**/ 0x3FF0E1E1, 0xD575F00A, -/**/ 0x3FFA5C9D, 0xADEA17E7, -/**/ 0x4005BCD2, 0xD9123E7C, -/**/ 0xBCA23E4F, 0xCC2AE1E4, -/**/ 0x3FE18E0B, 0xF07948F0, -/**/ 0x3FF2C000, 0x00000000, -/**/ 0x3F1A1A55, 0x62A7614A, -/**/ 0x3FE0D000, 0x00000000, -/**/ 0x3FF2CDF2, 0x4AC410C6, -/**/ 0x3FDB4B16, 0x68E63D97, -/**/ 0x3FE28FC8, 0xBFA256B2, -/**/ 0x3FE71F10, 0x51FDF05A, -/**/ 0x3FF183AE, 0x0753C882, -/**/ 0x3FFB9530, 0xF1921090, -/**/ 0x4006ED9E, 0x14F942BC, -/**/ 0x3CA27879, 0x89C77FA3, -/**/ 0x3FE1B39A, 0x41FC691C, -/**/ 0x3FF2C000, 0x00000000, -/**/ 0x3F6BE495, 0x88218CD6, -/**/ 0x3FE0F000, 0x00000000, -/**/ 0x3FF2DBB3, 0xDC3BFD25, -/**/ 0x3FDBBB8D, 0x55413207, -/**/ 0x3FE2EDA7, 0xA6792BF1, -/**/ 0x3FE7D17D, 0x4AC4E230, -/**/ 0x3FF22D00, 0xAAE6CB05, -/**/ 0x3FFCDEF5, 0xC9028E71, -/**/ 0x400831D8, 0xB40C626C, -/**/ 0x3C953FEF, 0x9873F484, -/**/ 0x3FE1D943, 0xDEC430C0, -/**/ 0x3FF2C000, 0x00000000, -/**/ 0x3F7BB3DC, 0x3BFD24A1, -/**/ 0x3FE11000, 0x00000000, -/**/ 0x3FF2E9AE, 0x3760A19B, -/**/ 0x3FDC2E3F, 0xF2E3E2EB, -/**/ 0x3FE34E5D, 0xAFE1CD38, -/**/ 0x3FE88AAE, 0xD6CE0B26, -/**/ 0x3FF2DE44, 0x2C4B06C6, -/**/ 0x3FFE3B06, 0x138813D2, -/**/ 0x40098AED, 0x23FD5612, -/**/ 0xBC91EC19, 0xB7AF0E54, -/**/ 0x3FE1FF09, 0x3748F114, -/**/ 0x3FF30000, 0x00000000, -/**/ 0xBF7651C8, 0x9F5E657E, -/**/ 0x3FE13000, 0x00000000, -/**/ 0x3FF2F7E2, 0x7E5B072B, -/**/ 0x3FDCA33F, 0x9F169C4D, -/**/ 0x3FE3B206, 0x8FE1EB56, -/**/ 0x3FE94AF6, 0x8F30E1B7, -/**/ 0x3FF397E9, 0xCFCF9887, -/**/ 0x3FFFAA90, 0x4FB7F25F, -/**/ 0x400AFA63, 0x94745D90, -/**/ 0x3C96955C, 0x2A139390, -/**/ 0x3FE224EA, 0xBE3EBA20, -/**/ 0x3FF30000, 0x00000000, -/**/ 0xBF603B03, 0x49F1AA85, -/**/ 0x3FE15000, 0x00000000, -/**/ 0x3FF30651, 0xDC2D0E76, -/**/ 0x3FDD1A9E, 0x613EF408, -/**/ 0x3FE418BF, 0x49ED083D, -/**/ 0x3FEA12AA, 0x9DFD1E23, -/**/ 0x3FF45A6A, 0x32B75F76, -/**/ 0x4000976C, 0xA7673F47, -/**/ 0x400C81E4, 0xB046AC6A, -/**/ 0x3C879FF7, 0x7D1BEB80, -/**/ 0x3FE24AE8, 0xE8A6B8B0, -/**/ 0x3FF30000, 0x00000000, -/**/ 0x3F594770, 0xB439D90E, -/**/ 0x3FE17000, 0x00000000, -/**/ 0x3FF314FD, 0x85087ECD, -/**/ 0x3FDD946E, 0xF2F45390, -/**/ 0x3FE482A6, 0x43BEDA05, -/**/ 0x3FEAE226, 0x0A640DD7, -/**/ 0x3FF52645, 0xD6A3D695, -/**/ 0x4001649F, 0x08098FE0, -/**/ 0x400E233C, 0x9D2BADE7, -/**/ 0x3C9E948C, 0x4E5F8348, -/**/ 0x3FE27104, 0x2DE13E58, -/**/ 0x3FF30000, 0x00000000, -/**/ 0x3F74FD85, 0x087ECD1A, -/**/ 0x3FE19000, 0x00000000, -/**/ 0x3FF323E6, 0xB6AA3C67, -/**/ 0x3FDE10C4, 0xC8894828, -/**/ 0x3FE4EFDB, 0x59718389, -/**/ 0x3FEBB9C9, 0x0A8D7622, -/**/ 0x3FF5FC05, 0xB8A62B12, -/**/ 0x40023D9A, 0xE4296831, -/**/ 0x400FE05E, 0x49C0B830, -/**/ 0x3CA19107, 0xC1189DE8, -/**/ 0x3FE2973D, 0x07C07BCC, -/**/ 0x3FF34000, 0x00000000, -/**/ 0xBF7C1949, 0x55C3993D, -/**/ 0x3FE1B000, 0x00000000, -/**/ 0x3FF3330E, 0xB8B9E20B, -/**/ 0x3FDE8FB4, 0x1A11468B, -/**/ 0x3FE5607F, 0xF2E740E1, -/**/ 0x3FEC99F9, 0x5B91DB14, -/**/ 0x3FF6DC3B, 0xF50C5FAA, -/**/ 0x4003232A, 0x0CFAC1C7, -/**/ 0x4010DDB3, 0x894EFD30, -/**/ 0xBCA7760F, 0x3783D916, -/**/ 0x3FE2BD93, 0xF29BF5F0, -/**/ 0x3FF34000, 0x00000000, -/**/ 0xBF69E28E, 0x8C3BEA7F, -/**/ 0x3FE1D000, 0x00000000, -/**/ 0x3FF34276, 0xDD2DFE6D, -/**/ 0x3FDF1151, 0xECEB226B, -/**/ 0x3FE5D4B7, 0x1AA123CE, -/**/ 0x3FED8322, 0xA01F65F8, -/**/ 0x3FF7C784, 0x791CE583, -/**/ 0x40041625, 0xC15A6B9C, -/**/ 0x4011DB51, 0x64280FEB, -/**/ 0x3CA10463, 0x28CA6DBB, -/**/ 0x3FE2E409, 0x6D64BEAC, -/**/ 0x3FF34000, 0x00000000, -/**/ 0x3F43B6E9, 0x6FF364E1, -/**/ 0x3FE1F000, 0x00000000, -/**/ 0x3FF35220, 0x80B539C7, -/**/ 0x3FDF95B4, 0x1DD91A82, -/**/ 0x3FE64CA5, 0x961EA9CA, -/**/ 0x3FEE75B6, 0xC65B3B2F, -/**/ 0x3FF8BE85, 0xC412E59F, -/**/ 0x40051778, 0x02462A51, -/**/ 0x4012EA48, 0x109FC81B, -/**/ 0x3C959E4C, 0x9F70CA98, -/**/ 0x3FE30A9D, 0xF9BA7B3C, -/**/ 0x3FF34000, 0x00000000, -/**/ 0x3F722080, 0xB539C6A2, -/**/ 0x3FE21000, 0x00000000, -/**/ 0x3FF3620D, 0x0B24ACDA, -/**/ 0x3FE00E78, 0xB5D803B6, -/**/ 0x3FE6C871, 0xFFE457FB, -/**/ 0x3FEF722E, 0x759EF386, -/**/ 0x3FF9C1F1, 0xB8D0E874, -/**/ 0x4006281D, 0x080FB06E, -/**/ 0x40140BF2, 0xD1F69DF7, -/**/ 0xBC8489EA, 0xCBFAF37F, -/**/ 0x3FE33152, 0x1C0141BC, -/**/ 0x3FF38000, 0x00000000, -/**/ 0xBF7DF2F4, 0xDB532667, -/**/ 0x3FE23000, 0x00000000, -/**/ 0x3FF3723D, 0xEFEBB76D, -/**/ 0x3FE05390, 0xC153FC4C, -/**/ 0x3FE74844, 0xE34A2666, -/**/ 0x3FF03C84, 0xC260A400, -/**/ 0x3FFAD286, 0x81E70F01, -/**/ 0x40074924, 0xDBC4A78E, -/**/ 0x401541CB, 0x8BBCA2E0, -/**/ 0x3C9C7528, 0x7BEA8472, -/**/ 0x3FE35826, 0x5B7858F8, -/**/ 0x3FF38000, 0x00000000, -/**/ 0xBF6B8420, 0x28912510, -/**/ 0x3FE25000, 0x00000000, -/**/ 0x3FF382B4, 0xAE8DA9C7, -/**/ 0x3FE09A2E, 0x842CABB9, -/**/ 0x3FE7CC48, 0xDA356141, -/**/ 0x3FF0C567, 0xBCD4FDB8, -/**/ 0x3FFBF10F, 0x89B62C32, -/**/ 0x40087BB5, 0x18ADC4B9, -/**/ 0x40168D6D, 0xC516F6F1, -/**/ 0xBC933A6B, 0x2E37D6A3, -/**/ 0x3FE37F1B, 0x4251E5AC, -/**/ 0x3FF38000, 0x00000000, -/**/ 0x3F45A574, 0x6D4E3A7A, -/**/ 0x3FE27000, 0x00000000, -/**/ 0x3FF39372, 0xD3219A4C, -/**/ 0x3FE0E25E, 0xD4394437, -/**/ 0x3FE854AA, 0xACE4CC74, -/**/ 0x3FF15408, 0x0981EE13, -/**/ 0x3FFD1E66, 0x88AA5332, -/**/ 0x4009C10A, 0xDA3BD18F, -/**/ 0x4017F099, 0xFFE4AE21, -/**/ 0xBCAED56B, 0x7B588ABE, -/**/ 0x3FE3A631, 0x5DCB911C, -/**/ 0x3FF38000, 0x00000000, -/**/ 0x3F7372D3, 0x219A4BA9, -/**/ 0x3FE29000, 0x00000000, -/**/ 0x3FF3A479, 0xF6D8C6BC, -/**/ 0x3FE12C2F, 0x11197A32, -/**/ 0x3FE8E199, 0x73F949D5, -/**/ 0x3FF1E8B1, 0xEE7A481D, -/**/ 0x3FFE5B74, 0xABBE8828, -/**/ 0x400B1A7C, 0xDB3D83BC, -/**/ 0x40196D39, 0x6DC46100, -/**/ 0x3CA7798C, 0xACD8F69C, -/**/ 0x3FE3CD69, 0x3E4835E8, -/**/ 0x3FF3C000, 0x00000000, -/**/ 0xBF7B8609, 0x27394391, -/**/ 0x3FE2B000, 0x00000000, -/**/ 0x3FF3B5CB, 0xC08BE738, -/**/ 0x3FE177AD, 0x2B5CB6B7, -/**/ 0x3FE97346, 0xBCE90EB1, -/**/ 0x3FF283B6, 0x68EC7F04, -/**/ 0x3FFFA933, 0xD5B8ED04, -/**/ 0x400C897D, 0xCBCDFF9A, -/**/ 0x401B0562, 0x0E4ABF55, -/**/ 0x3C881FF6, 0x1EE42043, -/**/ 0x3FE3F4C3, 0x776AA08C, -/**/ 0x3FF3C000, 0x00000000, -/**/ 0xBF64687E, 0xE8319086, -/**/ 0x3FE2D000, 0x00000000, -/**/ 0x3FF3C769, 0xE54FE05E, -/**/ 0x3FE1C4E7, 0xAC1A81A0, -/**/ 0x3FEA09E6, 0xB10FA326, -/**/ 0x3FF3256B, 0x840F679B, -/**/ 0x40008457, 0xFEE9EF1A, -/**/ 0x400E0F9E, 0xE4146343, -/**/ 0x401CBB5B, 0x433496A9, -/**/ 0xBCA57A4C, 0x59F087C0, -/**/ 0x3FE41C40, 0xA03171A8, -/**/ 0x3FF3C000, 0x00000000, -/**/ 0x3F5DA795, 0x3F81773D, -/**/ 0x3FE2F000, 0x00000000, -/**/ 0x3FF3D956, 0x291249DC, -/**/ 0x3FE213ED, 0xBD044AC9, -/**/ 0x3FEAA5B0, 0x3F917FA8, -/**/ 0x3FF3CE2C, 0xB7380A79, -/**/ 0x40013D84, 0x576AFAE8, -/**/ 0x400FAE92, 0xBAAB74F3, -/**/ 0x401E91A2, 0xE9129E4A, -/**/ 0x3C905671, 0x0CEC83F7, -/**/ 0x3FE443E1, 0x53143194, -/**/ 0x3FF3C000, 0x00000000, -/**/ 0x3F795629, 0x1249DBC4, -/**/ 0x3FE31000, 0x00000000, -/**/ 0x3FF3EB92, 0x5F3E4715, -/**/ 0x3FE264CF, 0x30F965D1, -/**/ 0x3FEB46DD, 0x4A4F2FB2, -/**/ 0x3FF47E5B, 0x4BC2E94F, -/**/ 0x400200B9, 0x54F8F9EB, -/**/ 0x4010B418, 0x33305D9F, -/**/ 0x40204579, 0x826EF167, -/**/ 0xBC9737A0, 0xE06EBCAE, -/**/ 0x3FE46BA6, 0x2E21A53C, -/**/ 0x3FF40000, 0x00000000, -/**/ 0xBF746DA0, 0xC1B8EB04, -/**/ 0x3FE33000, 0x00000000, -/**/ 0x3FF3FE20, 0x6B6A38D5, -/**/ 0x3FE2B79C, 0x8D26C7A0, -/**/ 0x3FEBEDAA, 0xD62978F8, -/**/ 0x3FF5365E, 0xCB8CC6D1, -/**/ 0x4002CE9C, 0xD894AF54, -/**/ 0x40119F3B, 0x79F7C63E, -/**/ 0x40215524, 0x0C8E7B9E, -/**/ 0x3CA485D0, 0x13DC9A80, -/**/ 0x3FE4938F, 0xD31F754C, -/**/ 0x3FF40000, 0x00000000, -/**/ 0xBF3DF949, 0x5C72B1E7, -/**/ 0x3FE35000, 0x00000000, -/**/ 0x3FF41102, 0x420ED8E7, -/**/ 0x3FE30C67, 0x12BCE2B2, -/**/ 0x3FEC9A59, 0x3EDE345E, -/**/ 0x3FF5F6A5, 0x78CAB466, -/**/ 0x4003A7E1, 0x3EAD62EE, -/**/ 0x401299C8, 0x9CB9A228, -/**/ 0x40227974, 0x1BE749B0, -/**/ 0x3CAFE28F, 0xC6A9831F, -/**/ 0x3FE4BB9E, 0xE7AB3A40, -/**/ 0x3FF40000, 0x00000000, -/**/ 0x3F710242, 0x0ED8E776, -/**/ 0x3FE37000, 0x00000000, -/**/ 0x3FF42439, 0xE9485B43, -/**/ 0x3FE36340, 0xC946E033, -/**/ 0x3FED4D2C, 0x6ECC5A7E, -/**/ 0x3FF6BFA4, 0xD027255A, -/**/ 0x40048D46, 0x72504BE1, -/**/ 0x4013A4ED, 0x09445BD5, -/**/ 0x4023B435, 0x749E19F9, -/**/ 0xBC40E7E5, 0xEAAAF53E, -/**/ 0x3FE4E3D4, 0x155D0070, -/**/ 0x3FF44000, 0x00000000, -/**/ 0xBF7BC616, 0xB7A4BD36, -/**/ 0x3FE39000, 0x00000000, -/**/ 0x3FF437C9, 0x79A23C23, -/**/ 0x3FE3BC3C, 0x89AF6A9D, -/**/ 0x3FEE066C, 0x1AF553BA, -/**/ 0x3FF791DA, 0x1622569A, -/**/ 0x40057F9B, 0x1B18AE2B, -/**/ 0x4014C1F0, 0x88BFF240, -/**/ 0x40250761, 0x019A4522, -/**/ 0x3CA4C238, 0xFDFCCB13, -/**/ 0x3FE50C30, 0x09EB58F8, -/**/ 0x3FF44000, 0x00000000, -/**/ 0xBF606D0C, 0xBB87B9E1, -/**/ 0x3FE3B000, 0x00000000, -/**/ 0x3FF44BB3, 0x1EEE6F35, -/**/ 0x3FE4176E, 0x0A004D1D, -/**/ 0x3FEEC664, 0x0399FA54, -/**/ 0x3FF86DCA, 0xF0CFD106, -/**/ 0x40067FBD, 0xE8C80E97, -/**/ 0x4015F237, 0xD9CD2D79, -/**/ 0x40267521, 0xC8076345, -/**/ 0x3CAEC756, 0xB089F7AF, -/**/ 0x3FE534B3, 0x77510D94, -/**/ 0x3FF44000, 0x00000000, -/**/ 0x3F67663D, 0xDCDE698F, -/**/ 0x3FE3D000, 0x00000000, -/**/ 0x3FF45FF9, 0x1928B1BE, -/**/ 0x3FE474E9, 0xE9EB53E9, -/**/ 0x3FEF8D64, 0x39DB03B6, -/**/ 0x3FF95406, 0x0F298B87, -/**/ 0x40078E9E, 0xFFC72AB6, -/**/ 0x40173747, 0x941456E7, -/**/ 0x4027FFDA, 0x74A71E71, -/**/ 0xBCAEED93, 0xFE7483B3, -/**/ 0x3FE55D5F, 0x13F48EC0, -/**/ 0x3FF44000, 0x00000000, -/**/ 0x3F7FF919, 0x28B1BDFF, -/**/ 0x3FE3F000, 0x00000000, -/**/ 0x3FF4749D, 0xBD66D0C4, -/**/ 0x3FE4D4C5, 0xC02C2013, -/**/ 0x3FF02DE0, 0xB56768CC, -/**/ 0x3FFA4523, 0xDF53A7BD, -/**/ 0x4008AD41, 0x8A357386, -/**/ 0x401892C7, 0x5E392799, -/**/ 0x4029AA2B, 0x97746ACD, -/**/ 0x3C924F0A, 0xB4A71E44, -/**/ 0x3FE58633, 0x9AD13548, -/**/ 0x3FF48000, 0x00000000, -/**/ 0xBF66C485, 0x325E775E, -/**/ 0x3FE41000, 0x00000000, -/**/ 0x3FF489A3, 0x76D6C491, -/**/ 0x3FE53718, 0x28D40829, -/**/ 0x3FF098EA, 0x98450D83, -/**/ 0x3FFB41C7, 0x55526E3B, -/**/ 0x4009DCBD, 0x719F540E, -/**/ 0x401A0685, 0x805D08D1, -/**/ 0x402B76FA, 0xA5142633, -/**/ 0x3C2AD9A7, 0xF1FF56FC, -/**/ 0x3FE5AF31, 0xCBA27244, -/**/ 0x3FF48000, 0x00000000, -/**/ 0x3F6346ED, 0xAD892100, -/**/ 0x3FE43000, 0x00000000, -/**/ 0x3FF49F0C, 0xC7CB94CC, -/**/ 0x3FE59BF8, 0xD492AA1E, -/**/ 0x3FF107FF, 0x34D2CA82, -/**/ 0x3FFC4A9E, 0xC3DF9E51, -/**/ 0x400B1E41, 0x45F5874E, -/**/ 0x401B947A, 0xDEB92648, -/**/ 0x402D6979, 0xD903D532, -/**/ 0x3CA43231, 0x04C67F5E, -/**/ 0x3FE5D85A, 0x6B1109A4, -/**/ 0x3FF48000, 0x00000000, -/**/ 0x3F7F0CC7, 0xCB94CC1A, -/**/ 0x3FE45000, 0x00000000, -/**/ 0x3FF4B4DC, 0x4ADA0BF0, -/**/ 0x3FE60380, 0x990F861F, -/**/ 0x3FF17B50, 0xCBEC7542, -/**/ 0x3FFD6064, 0xC93CFE8F, -/**/ 0x400C7314, 0x56F36FE3, -/**/ 0x401D3ECF, 0x696E5374, -/**/ 0x402F8531, 0x1778AF1D, -/**/ 0x3C7A53BF, 0x31EBDA84, -/**/ 0x3FE601AE, 0x42E27660, -/**/ 0x3FF4C000, 0x00000000, -/**/ 0xBF66476A, 0x4BE81F81, -/**/ 0x3FE47000, 0x00000000, -/**/ 0x3FF4CB14, 0xB4065600, -/**/ 0x3FE66DC9, 0x826ADA4F, -/**/ 0x3FF1F314, 0xA3298D4D, -/**/ 0x3FFE83E1, 0x52191CB4, -/**/ 0x400DDC99, 0x05CA69AF, -/**/ 0x401F07DF, 0x1079C46A, -/**/ 0x4030E703, 0xF9440EB0, -/**/ 0x3CA495E1, 0x5817D0DD, -/**/ 0x3FE62B2E, 0x222A98A0, -/**/ 0x3FF4C000, 0x00000000, -/**/ 0x3F662968, 0x0CAC00D4, -/**/ 0x3FE49000, 0x00000000, -/**/ 0x3FF4E1B8, 0xD203BDC9, -/**/ 0x3FE6DAEE, 0xE5FE0976, -/**/ 0x3FF26F83, 0x3C44F71E, -/**/ 0x3FFFB5EA, 0xB4D92F91, -/**/ 0x400F5C4F, 0x55A779C8, -/**/ 0x4020791F, 0xA66A7536, -/**/ 0x40322428, 0x7DCE5D75, -/**/ 0x3CADE7E8, 0x964F770B, -/**/ 0x3FE654DA, 0xDD7FD12C, -/**/ 0x3FF50000, 0x00000000, -/**/ 0xBF7E472D, 0xFC42374B, -/**/ 0x3FE4B000, 0x00000000, -/**/ 0x3FF4F8CB, 0x8F87D541, -/**/ 0x3FE74B0D, 0x767620C4, -/**/ 0x3FF2F0D8, 0x9126F083, -/**/ 0x40007BB3, 0x73F08794, -/**/ 0x401079EB, 0xE1419117, -/**/ 0x40218062, 0xA917F81E, -/**/ 0x40337C6B, 0x48444DEE, -/**/ 0x3C907A41, 0xF4061E08, -/**/ 0x3FE67EB5, 0x4F31AF70, -/**/ 0x3FF50000, 0x00000000, -/**/ 0xBF5CD1C1, 0xE0AAFA85, -/**/ 0x3FE4D000, 0x00000000, -/**/ 0x3FF5104F, 0xF4B2718C, -/**/ 0x3FE7BE43, 0x59659939, -/**/ 0x3FF37754, 0x5502EAE6, -/**/ 0x400124A6, 0x6AE0AC51, -/**/ 0x4011527B, 0x33524D17, -/**/ 0x40229B46, 0x7FBF7A2D, -/**/ 0x4034F274, 0xAD716768, -/**/ 0xBC9C610F, 0x7C204EA8, -/**/ 0x3FE6A8BE, 0x57825A6C, -/**/ 0x3FF50000, 0x00000000, -/**/ 0x3F704FF4, 0xB2718C01, -/**/ 0x3FE4F000, 0x00000000, -/**/ 0x3FF52849, 0x288C017D, -/**/ 0x3FE834B0, 0x3E6D3F7F, -/**/ 0x3FF4033A, 0x3B0747CB, -/**/ 0x4001D652, 0xE946B196, -/**/ 0x401238CB, 0x3C2F8CB4, -/**/ 0x4023CB80, 0x53E520C1, -/**/ 0x40368938, 0x607BC0F6, -/**/ 0xBC84274C, 0xCC053597, -/**/ 0x3FE6D2F6, 0xDCE2DFB8, -/**/ 0x3FF54000, 0x00000000, -/**/ 0xBF77B6D7, 0x73FE8364, -/**/ 0x3FE51000, 0x00000000, -/**/ 0x3FF540BA, 0x729BE713, -/**/ 0x3FE8AE75, 0x781F49A2, -/**/ 0x3FF494D2, 0x432AC103, -/**/ 0x40029147, 0x9B0015B6, -/**/ 0x40132DE7, 0x156B74E9, -/**/ 0x402512F0, 0xE8362EC8, -/**/ 0x403843FE, 0xC8D2E0F8, -/**/ 0xBC8F55DB, 0xBB3ACC53, -/**/ 0x3FE6FD5F, 0xCC3296F0, -/**/ 0x3FF54000, 0x00000000, -/**/ 0x3F274E53, 0x7CE2565E, -/**/ 0x3FE53000, 0x00000000, -/**/ 0x3FF559A7, 0x3C98A101, -/**/ 0x3FE92BB6, 0x16C3163D, -/**/ 0x3FF52C69, 0x0DB2C44D, -/**/ 0x4003561E, 0x0F4546B8, -/**/ 0x401432F1, 0x7F099A82, -/**/ 0x402673A9, 0x831E227A, -/**/ 0x403A266F, 0xA02BBCD5, -/**/ 0x3CA279A8, 0xAEA9CB9D, -/**/ 0x3FE727FA, 0x1901CB44, -/**/ 0x3FF54000, 0x00000000, -/**/ 0x3F79A73C, 0x98A10084, -/**/ 0x3FE55000, 0x00000000, -/**/ 0x3FF57313, 0x1433B9BD, -/**/ 0x3FE9AC97, 0x0523E7B2, -/**/ 0x3FF5CA50, 0x361F7393, -/**/ 0x4004257B, 0xB0F40825, -/**/ 0x40154927, 0x46286025, -/**/ 0x4027EFF1, 0x781495B4, -/**/ 0x403C349E, 0x0A1139F1, -/**/ 0xBC5D2C66, 0x8B6015DA, -/**/ 0x3FE752C6, 0xBDD7E0E0, -/**/ 0x3FF58000, 0x00000000, -/**/ 0xBF69D9D7, 0x988C865F, -/**/ 0x3FE57000, 0x00000000, -/**/ 0x3FF58D01, 0xAD039E07, -/**/ 0x3FEA313F, 0x279933CD, -/**/ 0x3FF66EDE, 0xB63D93A6, -/**/ 0x40050012, 0xD836441A, -/**/ 0x401671E1, 0xF23D152C, -/**/ 0x40298A4C, 0x65D3A1DD, -/**/ 0x403E7316, 0x5EBDBF39, -/**/ 0xBCAE5B6C, 0x7AAA4996, -/**/ 0x3FE77DC6, 0xBC7D2FA0, -/**/ 0x3FF58000, 0x00000000, -/**/ 0x3F6A035A, 0x073C0E86, -/**/ 0x3FE59000, 0x00000000, -/**/ 0x3FF5A776, 0xE28DADB6, -/**/ 0x3FEAB9D7, 0x7D7BE2B5, -/**/ 0x3FF71A71, 0x5234C8A9, -/**/ 0x4005E6A3, 0xF873554C, -/**/ 0x4017AE9A, 0xC1F33F9B, -/**/ 0x402B4581, 0x4310046E, -/**/ 0x40407376, 0xF64B03E7, -/**/ 0xBCA3F39B, 0xB3AB0542, -/**/ 0x3FE7A8FB, 0x1E48D158, -/**/ 0x3FF5C000, 0x00000000, -/**/ 0xBF78891D, 0x725249CA, -/**/ 0x3FE5B000, 0x00000000, -/**/ 0x3FF5C276, 0xBA730F9B, -/**/ 0x3FEB468B, 0x454127C3, -/**/ 0x3FF7CD6B, 0x0E816ADB, -/**/ 0x4006D9FE, 0xEDDAC837, -/**/ 0x401900EE, 0x0209E3B7, -/**/ 0x402D24A2, 0x57489C7E, -/**/ 0x4041CAEA, 0x7F810E14, -/**/ 0xBC84F20E, 0x24F9675B, -/**/ 0x3FE7D464, 0xF472A690, -/**/ 0x3FF5C000, 0x00000000, -/**/ 0x3F43B5D3, 0x987CD623, -/**/ 0x3FE5D000, 0x00000000, -/**/ 0x3FF5DE05, 0x66C30CDC, -/**/ 0x3FEBD788, 0x23798D1A, -/**/ 0x3FF88835, 0xB0E567D8, -/**/ 0x4007DB04, 0x6E46660A, -/**/ 0x401A6A9E, 0xCA07CAA5, -/**/ 0x402F2B16, 0x41ECEF64, -/**/ 0x40434315, 0xC36F367B, -/**/ 0xBCA08CA1, 0x542594A6, -/**/ 0x3FE80005, 0x5869D9E8, -/**/ 0x3FF5C000, 0x00000000, -/**/ 0x3F7E0566, 0xC30CDBD9, -/**/ 0x3FE5F000, 0x00000000, -/**/ 0x3FF5FA27, 0x4875FA03, -/**/ 0x3FEC6CFE, 0x4CF96D63, -/**/ 0x3FF94B42, 0x4D7B8313, -/**/ 0x4008EAA7, 0xA1B04592, -/**/ 0x401BED9B, 0x2C5A9D87, -/**/ 0x4030AE51, 0x1BC92F68, -/**/ 0x4044DF8C, 0x685FBD64, -/**/ 0xBCAC07A8, 0x30FE6378, -/**/ 0x3FE82BDD, 0x6C30303C, -/**/ 0x3FF60000, 0x00000000, -/**/ 0xBF5762DE, 0x2817F40C, -/**/ 0x3FE61000, 0x00000000, -/**/ 0x3FF616E0, 0xF213FCD6, -/**/ 0x3FED0720, 0xB47784FF, -/**/ 0x3FFA1709, 0xE13C6707, -/**/ 0x400A09EF, 0xE70B2E72, -/**/ 0x401D8C00, 0xE976AAD9, -/**/ 0x4031DEBA, 0xD1AE1EA8, -/**/ 0x4046A453, 0x6424341F, -/**/ 0x3CA13E53, 0xA65D40B1, -/**/ 0x3FE857EE, 0x5ABA79E8, -/**/ 0x3FF60000, 0x00000000, -/**/ 0x3F76E0F2, 0x13FCD614, -/**/ 0x3FE63000, 0x00000000, -/**/ 0x3FF63437, 0x2A8B4ED8, -/**/ 0x3FEDA625, 0x3BF69915, -/**/ 0x3FFAEC0D, 0xFB6DF86F, -/**/ 0x400B39FA, 0xCAF2D64B, -/**/ 0x401F4822, 0xB7E2DC06, -/**/ 0x4033291B, 0xB12537E3, -/**/ 0x404895F0, 0xAF3EF0D1, -/**/ 0x3CAEA588, 0x71E7ED76, -/**/ 0x3FE88439, 0x5856807C, -/**/ 0x3FF64000, 0x00000000, -/**/ 0xBF6791AA, 0xE9624F1C, -/**/ 0x3FE65000, 0x00000000, -/**/ 0x3FF6522E, 0xF039F5E3, -/**/ 0x3FEE4A44, 0xEA588E54, -/**/ 0x3FFBCAD9, 0x77A3F8A4, -/**/ 0x400C7BFE, 0x3669F2F2, -/**/ 0x40209247, 0x1AEA54A4, -/**/ 0x4034900A, 0x6B866959, -/**/ 0x404AB97D, 0x620634CF, -/**/ 0x3C948649, 0xDA91B0FD, -/**/ 0x3FE8B0BF, 0xA316D3A0, -/**/ 0x3FF64000, 0x00000000, -/**/ 0x3F722EF0, 0x39F5E2AD, -/**/ 0x3FE67000, 0x00000000, -/**/ 0x3FF670CD, 0x7C2F4FC3, -/**/ 0x3FEEF3BC, 0x2583CF60, -/**/ 0x3FFCB401, 0x4A2E1684, -/**/ 0x400DD14A, 0xDCB9F8FB, -/**/ 0x40219209, 0x4E164373, -/**/ 0x40361669, 0x8FC171BC, -/**/ 0x404D14BA, 0xA46B7BE1, -/**/ 0xBCABAC31, 0xBBDFE65A, -/**/ 0x3FE8DD82, 0x8344E08C, -/**/ 0x3FF68000, 0x00000000, -/**/ 0xBF6E6507, 0xA1607A77, -/**/ 0x3FE69000, 0x00000000, -/**/ 0x3FF69018, 0x45AA3C85, -/**/ 0x3FEFA2CA, 0xF18FBD18, -/**/ 0x3FFDA825, 0x610C140E, -/**/ 0x400F3B4E, 0xF08895E1, -/**/ 0x4022A4E4, 0x272CD203, -/**/ 0x4037BF71, 0x60C4A0EE, -/**/ 0x404FAE29, 0xEC79351D, -/**/ 0x3C6BF5BB, 0x3E22FB0A, -/**/ 0x3FE90A83, 0x4BD9C858, -/**/ 0x3FF68000, 0x00000000, -/**/ 0x3F701845, 0xAA3C8533, -/**/ 0x3FE6B000, 0x00000000, -/**/ 0x3FF6B015, 0x05D92E4E, -/**/ 0x3FF02BDA, 0x9ABD20D8, -/**/ 0x3FFEA7F1, 0x9BC5CC13, -/**/ 0x40105DCC, 0x94AFB2BB, -/**/ 0x4023CC8C, 0xB382B54A, -/**/ 0x40398EBB, 0x19C28EAE, -/**/ 0x40514694, 0x8F7609B5, -/**/ 0x3C9CD223, 0xF66137E5, -/**/ 0x3FE937C3, 0x5AFE73AC, -/**/ 0x3FF6C000, 0x00000000, -/**/ 0xBF6FD5F4, 0x4DA36334, -/**/ 0x3FE6D000, 0x00000000, -/**/ 0x3FF6D0C9, 0xBBE1EF2B, -/**/ 0x3FF08961, 0x82FBDD29, -/**/ 0x3FFFB41E, 0xDCD403EC, -/**/ 0x401129EE, 0x121D0023, -/**/ 0x40250AE5, 0xB34159B2, -/**/ 0x403B884D, 0xDB5CEAC4, -/**/ 0x4052DD09, 0xA0B334B0, -/**/ 0xBC96BF1D, 0xD8F14BF9, -/**/ 0x3FE96544, 0x1A936D24, -/**/ 0x3FF6C000, 0x00000000, -/**/ 0x3F70C9BB, 0xE1EF2AEE, -/**/ 0x3FE6F000, 0x00000000, -/**/ 0x3FF6F23C, 0xB13786CF, -/**/ 0x3FF0EA20, 0x7B7FC134, -/**/ 0x400066BA, 0x1BD0D518, -/**/ 0x401202F9, 0x159EC945, -/**/ 0x40266205, 0x16FF868A, -/**/ 0x403DB0AD, 0x87398014, -/**/ 0x40549F33, 0x47D58711, -/**/ 0x3C8D858F, 0x54B11A28, -/**/ 0x3FE99307, 0x00C1184C, -/**/ 0x3FF70000, 0x00000000, -/**/ 0xBF6B869D, 0x90F2626A, -/**/ 0x3FE71000, 0x00000000, -/**/ 0x3FF71474, 0x7E455603, -/**/ 0x3FF14E40, 0x3A65655F, -/**/ 0x4000FA64, 0x1F4AA7A1, -/**/ 0x4012E9F0, 0xB946C70A, -/**/ 0x4027D43A, 0x3CC53936, -/**/ 0x40400675, 0xEE087279, -/**/ 0x40569278, 0x77313CEF, -/**/ 0xBCAB1BA1, 0x772D6E62, -/**/ 0x3FE9C10D, 0x9090E874, -/**/ 0x3FF70000, 0x00000000, -/**/ 0x3F74747E, 0x455602D3, -/**/ 0x3FE73000, 0x00000000, -/**/ 0x3FF73778, 0x0F773DEC, -/**/ 0x3FF1B5EC, 0x1288B243, -/**/ 0x40019581, 0x3A853FA5, -/**/ 0x4013DFF0, 0x6D2743E5, -/**/ 0x40296415, 0x09B4B924, -/**/ 0x4041515E, 0x19A59D1F, -/**/ 0x4058BD01, 0xF3E53877, -/**/ 0x3C962269, 0xFC348BAE, -/**/ 0x3FE9EF59, 0x5A90493C, -/**/ 0x3FF74000, 0x00000000, -/**/ 0xBF610FE1, 0x11842743, -/**/ 0x3FE75000, 0x00000000, -/**/ 0x3FF75B4E, 0xAAA78140, -/**/ 0x3FF22152, 0x28B49576, -/**/ 0x4002388E, 0x74D66746, -/**/ 0x4014E62E, 0xA43083A8, -/**/ 0x402B146E, 0x02885ED7, -/**/ 0x4042BC45, 0x29A3BC2C, -/**/ 0x405B25D8, 0xCDAFE7E5, -/**/ 0x3CA8862D, 0xF03F8A74, -/**/ 0x3FEA1DEB, 0xFD7DFBD8, -/**/ 0x3FF74000, 0x00000000, -/**/ 0x3F7B4EAA, 0xA7813FBA, -/**/ 0x3FE77000, 0x00000000, -/**/ 0x3FF77FFF, 0xF4FC0008, -/**/ 0x3FF290A3, 0xADE499E4, -/**/ 0x4002E412, 0xFF22FE11, -/**/ 0x4015FDFF, 0xD7A17943, -/**/ 0x402CE86F, 0x8AF79AEF, -/**/ 0x40444ACA, 0x6F8EDF86, -/**/ 0x405DD50A, 0x29CF9F92, -/**/ 0x3CA49DB0, 0xC5865233, -/**/ 0x3FEA4CC7, 0x2702BD90, -/**/ 0x3FF78000, 0x00000000, -/**/ 0xBE6607FF, 0xF08268E1, -/**/ 0x3FE79000, 0x00000000, -/**/ 0x3FF7A593, 0xF93D7FBC, -/**/ 0x3FF30415, 0x1F293A81, -/**/ 0x400398A1, 0x31649EA4, -/**/ 0x401728D9, 0xED75DA1E, -/**/ 0x402EE3A0, 0x7B1736CA, -/**/ 0x40460106, 0x036EC9D4, -/**/ 0x406069E8, 0xB3E5A09F, -/**/ 0xBCA79BBD, 0x4E8EB882, -/**/ 0x3FEA7BEC, 0x94762100, -/**/ 0x3FF7C000, 0x00000000, -/**/ 0xBF7A6C06, 0xC280445C, -/**/ 0x3FE7B000, 0x00000000, -/**/ 0x3FF7CC13, 0x2EB4E536, -/**/ 0x3FF37BDE, 0x8BD25D7D, -/**/ 0x400456D7, 0xA51DF797, -/**/ 0x40186858, 0x103AF33E, -/**/ 0x403084F8, 0x21121C2E, -/**/ 0x4047E39A, 0x9D7C6DE3, -/**/ 0x40621664, 0xEF4C9A12, -/**/ 0x3C804D2D, 0x39DB72FF, -/**/ 0x3FEAAB5E, 0x13B099B0, -/**/ 0x3FF7C000, 0x00000000, -/**/ 0x3F68265D, 0x69CA6C2F, -/**/ 0x3FE7D000, 0x00000000, -/**/ 0x3FF7F386, 0x809BA1CD, -/**/ 0x3FF3F83B, 0xE298B2EB, -/**/ 0x40051F62, 0x708A6ABE, -/**/ 0x4019BE3F, 0x090F77AB, -/**/ 0x4031AFE2, 0x6C13BF38, -/**/ 0x4049F7CA, 0x65FF02A8, -/**/ 0x4063F614, 0xDA840FE0, -/**/ 0xBCA7BDE9, 0xAB5D1A54, -/**/ 0x3FEADB1D, 0x83EBD320, -/**/ 0x3FF80000, 0x00000000, -/**/ 0xBF68F2FE, 0xC8BC6562, -/**/ 0x3FE7F000, 0x00000000, -/**/ 0x3FF81BF7, 0x562E1E24, -/**/ 0x3FF4796D, 0x469724DB, -/**/ 0x4005F2FC, 0x86E67917, -/**/ 0x401B2C82, 0x2F5AE582, -/**/ 0x4032F505, 0x65EE1919, -/**/ 0x404C438F, 0x4744D220, -/**/ 0x40661003, 0xD66309FD, -/**/ 0x3C8470C8, 0xFC828894, -/**/ 0x3FEB0B2C, 0xD6B287DC, -/**/ 0x3FF80000, 0x00000000, -/**/ 0x3F7BF756, 0x2E1E23E5, -/**/ 0x3FE81000, 0x00000000, -/**/ 0x3FF8456F, 0x9B70AB1D, -/**/ 0x3FF4FFB7, 0x6D01A674, -/**/ 0x4006D271, 0x42D7B667, -/**/ 0x401CB549, 0x05DD4055, -/**/ 0x40345723, 0xE490CA9B, -/**/ 0x404ECD17, 0x47C5589B, -/**/ 0x40686C46, 0x3D6DB036, -/**/ 0x4084044D, 0xECF23C2E, -/**/ 0xBC7F0990, 0x0D173A5F, -/**/ 0x3FEB3B8E, 0x10E12D3C, -/**/ 0x3FF84000, 0x00000000, -/**/ 0x3F55BE6D, 0xC2AC733C, -/**/ 0x3FE83000, 0x00000000, -/**/ 0x3FF86FF9, 0xCAB97B9D, -/**/ 0x3FF58B64, 0x04A71B42, -/**/ 0x4007BE9E, 0x20C0FB6E, -/**/ 0x401E5AF5, 0x9B426297, -/**/ 0x4035D958, 0x013C40EE, -/**/ 0x4050CEA9, 0x2215E48C, -/**/ 0x406B146B, 0xB8C0669A, -/**/ 0x40868C96, 0xFB8EB0FE, -/**/ 0x3CA55848, 0x1FCCBAD4, -/**/ 0x3FEB6C43, 0x4BB8EA98, -/**/ 0x3FF88000, 0x00000000, -/**/ 0xBF700635, 0x46846319, -/**/ 0x3FE85000, 0x00000000, -/**/ 0x3FF89BA0, 0xF71469BF, -/**/ 0x3FF61CC2, 0x28717EFA, -/**/ 0x4008B874, 0xAFB7BAF7, -/**/ 0x40201015, 0xEC7286DB, -/**/ 0x40377F1F, 0x8329A469, -/**/ 0x40525E49, 0x2927F0DD, -/**/ 0x406E135C, 0x5AE80CD9, -/**/ 0x40897364, 0x40DF64FD, -/**/ 0x3C89F53B, 0x1ED91B03, -/**/ 0x3FEB9D4E, 0xB6067ABC, -/**/ 0x3FF88000, 0x00000000, -/**/ 0x3F7BA0F7, 0x1469BF33, -/**/ 0x3FE87000, 0x00000000, -/**/ 0x3FF8C870, 0xD797DABF, -/**/ 0x3FF6B426, 0xDE42D55F, -/**/ 0x4009C0FC, 0xC0E06552, -/**/ 0x402103EC, 0xEB059907, -/**/ 0x40394C6A, 0x49A75AA7, -/**/ 0x40541A81, 0xB2A496D0, -/**/ 0x4070BAEE, 0x209CB693, -/**/ 0x408CC860, 0x285808C5, -/**/ 0xBCAE6D8C, 0x9B0DC6F3, -/**/ 0x3FEBCEB2, 0x955EC1C4, -/**/ 0x3FF8C000, 0x00000000, -/**/ 0x3F60E1AF, 0x2FB57EE7, -/**/ 0x3FE89000, 0x00000000, -/**/ 0x3FF8F675, 0xD3C502F4, -/**/ 0x3FF751ED, 0xA3BFB2E4, -/**/ 0x400AD956, 0xDE3987BC, -/**/ 0x40220AA0, 0xB30AAD0A, -/**/ 0x403B45AB, 0x16220014, -/**/ 0x40560929, 0xEC84429C, -/**/ 0x4072A569, 0x0D747939, -/**/ 0x40904F10, 0x5407F41E, -/**/ 0xBC675CEB, 0xFC269962, -/**/ 0x3FEC0071, 0x4773138C, -/**/ 0x3FF90000, 0x00000000, -/**/ 0xBF631458, 0x75FA1750, -/**/ 0x3FE8B000, 0x00000000, -/**/ 0x3FF925BD, 0x111125DF, -/**/ 0x3FF7F679, 0x0AD2B4C2, -/**/ 0x400C02BF, 0x1359A3C8, -/**/ 0x40232601, 0x88857C21, -/**/ 0x403D6FEB, 0x2515D90E, -/**/ 0x405830FA, 0xD421145E, -/**/ 0x4074D1D6, 0xFD789544, -/**/ 0x40928561, 0x4B30EBF1, -/**/ 0x3CA13E7B, 0x7876F9D2, -/**/ 0x3FEC328D, 0x437F5E74, -/**/ 0x3FF94000, 0x00000000, -/**/ 0xBF7A42EE, 0xEEDA20A4, -/**/ 0x3FE8D000, 0x00000000, -/**/ 0x3FF95654, 0x81B9477B, -/**/ 0x3FF8A233, 0x67F87779, -/**/ 0x400D3E90, 0x14665EA0, -/**/ 0x40245815, 0x5A415747, -/**/ 0x403FD0E1, 0x1D7511C0, -/**/ 0x405A99B6, 0x01EC30FB, -/**/ 0x40774A72, 0xDD7EE7A1, -/**/ 0x40951454, 0x5C2F1724, -/**/ 0x3C8185B3, 0x774A5205, -/**/ 0x3FEC6509, 0x1BD4AD0C, -/**/ 0x3FF94000, 0x00000000, -/**/ 0x3F765481, 0xB9477AC0, -/**/ 0x3FE8F000, 0x00000000, -/**/ 0x3FF9884A, 0xF50630B5, -/**/ 0x3FF9558F, 0x94B35A8D, -/**/ 0x400E8E46, 0xD1A32B1D, -/**/ 0x4025A31F, 0x0AEC68DB, -/**/ 0x40413785, 0xFD21A759, -/**/ 0x405D4C53, 0xF56DFCA6, -/**/ 0x407A1B45, 0xF89C0F5F, -/**/ 0x40980BB3, 0xC92C8CF3, -/**/ 0xBC8696E8, 0xFEB6A05E, -/**/ 0x3FEC97E7, 0x7F82B8CC, -/**/ 0x3FF98000, 0x00000000, -/**/ 0x3F6095EA, 0x0C6169C6, -/**/ 0x3FE91000, 0x00000000, -/**/ 0x3FF9BBB0, 0x292BC29F, -/**/ 0x3FFA1109, 0xC8E3D76B, -/**/ 0x400FF386, 0x8873C480, -/**/ 0x402709A6, 0xDE619C77, -/**/ 0x4042A8E9, 0x5A9417B9, -/**/ 0x4060299D, 0xBFE20B57, -/**/ 0x407D5283, 0xE1225431, -/**/ 0x409B7E74, 0xC225406C, -/**/ 0xBC879431, 0x74F396DB, -/**/ 0x3FECCB2B, 0x3C239888, -/**/ 0x3FF9C000, 0x00000000, -/**/ 0xBF513F5B, 0x50F5839F, -/**/ 0x3FE93000, 0x00000000, -/**/ 0x3FF9F094, 0xDEF4783D, -/**/ 0x3FFAD528, 0x8E300736, -/**/ 0x4010B80E, 0xB2D4D4EE, -/**/ 0x40288E84, 0x3F3D0057, -/**/ 0x404440D4, 0xD20263C0, -/**/ 0x4061DD42, 0x26E14927, -/**/ 0x4080807D, 0x5EF13D09, -/**/ 0x409F836C, 0xFE9E94BE, -/**/ 0xBC813C84, 0xE5FD9D2D, -/**/ 0x3FECFED7, 0x3FCCF104, -/**/ 0x3FFA0000, 0x00000000, -/**/ 0xBF6ED642, 0x170F854B, -/**/ 0x3FE95000, 0x00000000, -/**/ 0x3FFA270A, 0xEF70C9F9, -/**/ 0x3FFBA27D, 0xD12662D9, -/**/ 0x40118304, 0xE8433B59, -/**/ 0x402A34E9, 0x1B4DD8D9, -/**/ 0x4046041F, 0x58AA354C, -/**/ 0x4063C823, 0x87EB035B, -/**/ 0x40829D4E, 0x7F89A6B6, -/**/ 0x40A21B1A, 0xB4BED54D, -/**/ 0x3C855D66, 0xFD8283D4, -/**/ 0x3FED32EE, 0x9B2A7684, -/**/ 0x3FFA4000, 0x00000000, -/**/ 0xBF78F510, 0x8F3606B9, -/**/ 0x3FE97000, 0x00000000, -/**/ 0x3FFA5F25, 0x63EA127F, -/**/ 0x3FFC79A8, 0x1460C218, -/**/ 0x40125BC0, 0x3D14975C, -/**/ 0x402C006F, 0x2249DB66, -/**/ 0x4047F856, 0xED0AEFCD, -/**/ 0x4065F27F, 0x2E2028D0, -/**/ 0x40850B95, 0x6CE59595, -/**/ 0x40A4DC23, 0x18C497E2, -/**/ 0x3C8BDFAE, 0x76BA54CA, -/**/ 0x3FED6774, 0x83C60554, -/**/ 0x3FFA4000, 0x00000000, -/**/ 0x3F7F2563, 0xEA127F53, -/**/ 0x3FE99000, 0x00000000, -/**/ 0x3FFA98F8, 0x9061CEFE, -/**/ 0x3FFD5B53, 0xCAA1F466, -/**/ 0x40134379, 0xA92630E8, -/**/ 0x402DF527, 0x41E37357, -/**/ 0x404A23DF, 0xD7DE2305, -/**/ 0x406865FE, 0x1911C50F, -/**/ 0x4087D981, 0xD5CE543D, -/**/ 0x40A8192E, 0x2134A322, -/**/ 0xBC915CF9, 0x4FE6DAC8, -/**/ 0x3FED9C6C, 0x56821F74, -/**/ 0x3FFA8000, 0x00000000, -/**/ 0x3F78F890, 0x61CEFDBB, -/**/ 0x3FE9B000, 0x00000000, -/**/ 0x3FFAD49A, 0x30F0DACC, -/**/ 0x3FFE483C, 0xDDBFEE70, -/**/ 0x40143B8C, 0xC4418459, -/**/ 0x40300BD5, 0xE6E7E816, -/**/ 0x404C8E1A, 0x02EE200E, -/**/ 0x406B2DFC, 0x83038A03, -/**/ 0x408B1814, 0xD987E3D9, -/**/ 0x40ABEB1E, 0x8827CEFA, -/**/ 0x3CA8829A, 0xE22AFCE0, -/**/ 0x3FEDD1D9, 0x9A4C39D0, -/**/ 0x3FFAC000, 0x00000000, -/**/ 0x3F749A30, 0xF0DACB86, -/**/ 0x3FE9D000, 0x00000000, -/**/ 0x3FFB1221, 0x8A66E40D, -/**/ 0x3FFF4130, 0x692DC10A, -/**/ 0x4015457C, 0x64621A80, -/**/ 0x4031369A, 0xED2A1AB4, -/**/ 0x404F3F8D, 0xBC003A70, -/**/ 0x406E57E1, 0x462E99D6, -/**/ 0x408EDBC2, 0xC53F5717, -/**/ 0x40B0383D, 0x0A71E453, -/**/ 0x3C90AF9F, 0xBEDD86A9, -/**/ 0x3FEE07C0, 0x030CF708, -/**/ 0x3FFB0000, 0x00000000, -/**/ 0x3F72218A, 0x66E40CBE, -/**/ 0x3FE9F000, 0x00000000, -/**/ 0x3FFB51A7, 0x8E9927E5, -/**/ 0x40002387, 0x581637B3, -/**/ 0x401662F7, 0xF5B2C17E, -/**/ 0x40327DDB, 0x36EAC07E, -/**/ 0x40512110, 0xC70D9C43, -/**/ 0x4070F9C4, 0x88C52943, -/**/ 0x40919E9E, 0xB1AB4848, -/**/ 0x40B2E76B, 0xB1EC7695, -/**/ 0x3CAA2400, 0x5E9F6FD9, -/**/ 0x3FEE3E23, 0x74DD3C64, -/**/ 0x3FFB4000, 0x00000000, -/**/ 0x3F71A78E, 0x9927E571, -/**/ 0x3FEA1000, 0x00000000, -/**/ 0x3FFB9347, 0x04E0F95F, -/**/ 0x4000AD66, 0xAC8DC27B, -/**/ 0x401795E1, 0xAE05A580, -/**/ 0x4033E4FA, 0x299AA0A0, -/**/ 0x4052D0AD, 0xA33AB75C, -/**/ 0x407309E5, 0x39D64C89, -/**/ 0x40942D39, 0x154C34C4, -/**/ 0x40B61A59, 0x59D15B1D, -/**/ 0xBCAFC899, 0x114BE565, -/**/ 0x3FEE7508, 0x0787FD30, -/**/ 0x3FFB8000, 0x00000000, -/**/ 0x3F734704, 0xE0F95E8B, -/**/ 0x3FEA3000, 0x00000000, -/**/ 0x3FFBD71C, 0xB75F37A1, -/**/ 0x40013EBC, 0xFC9006E1, -/**/ 0x4018E055, 0xC48D2C09, -/**/ 0x40356FD7, 0xC2C8C9CD, -/**/ 0x4054B557, 0x6198B971, -/**/ 0x4075678C, 0x9680F9AF, -/**/ 0x40972BE5, 0x8AF946DD, -/**/ 0x40B9EDE4, 0xE1B531F9, -/**/ 0xBC447F69, 0xE4527544, -/**/ 0x3FEEAC72, 0x0A61AD1C, -/**/ 0x3FFBC000, 0x00000000, -/**/ 0x3F771CB7, 0x5F37A0DF, -/**/ 0x3FEA5000, 0x00000000, -/**/ 0x3FFC1D47, 0xA5B24F80, -/**/ 0x4001D81E, 0x7EB9F789, -/**/ 0x401A44B2, 0xDF42B6B7, -/**/ 0x403722E5, 0xB4766752, -/**/ 0x4056D6EE, 0xECFADFF0, -/**/ 0x40782028, 0x8B1EB8D5, -/**/ 0x409AB0E2, 0xCA840144, -/**/ 0x40BE8614, 0xE2126BBF, -/**/ 0xBC8D9A93, 0x2CC624E2, -/**/ 0x3FEEE466, 0x087F8D20, -/**/ 0x3FFC0000, 0x00000000, -/**/ 0x3F7D47A5, 0xB24F8064, -/**/ 0x3FEA7000, 0x00000000, -/**/ 0x3FFC65E9, 0x3DE98207, -/**/ 0x40027A2E, 0x811F641B, -/**/ 0x401BC5A3, 0xF223266D, -/**/ 0x40390340, 0xA6ECBE29, -/**/ 0x40593EB6, 0xC3D499AF, -/**/ 0x407B43D9, 0xAD8CC2F1, -/**/ 0x409ED77C, 0xA519B816, -/**/ 0x40C2080A, 0x5B3B703B, -/**/ 0x3C7B187D, 0xE993C3DD, -/**/ 0x3FEF1CE8, 0xCD5A7CE8, -/**/ 0x3FFC8000, 0x00000000, -/**/ 0xBF7A16C2, 0x167DF937, -/**/ 0x3FEA9000, 0x00000000, -/**/ 0x3FFCB125, 0x9CA2F05E, -/**/ 0x400325A1, 0x54FC4C95, -/**/ 0x401D662B, 0xD9C5FF75, -/**/ 0x403B16CE, 0x8E93577D, -/**/ 0x405BF79A, 0xE0E3029E, -/**/ 0x407EE612, 0x04BCDF91, -/**/ 0x40A1E0AC, 0x31EFE3F1, -/**/ 0x40C56267, 0x85DF051C, -/**/ 0xBCAD6122, 0x2D0BC06E, -/**/ 0x3FEF55FF, 0x69EAB2F0, -/**/ 0x3FFCC000, 0x00000000, -/**/ 0xBF6DB4C6, 0xBA1F43E4, -/**/ 0x3FEAB000, 0x00000000, -/**/ 0x3FFCFF23, 0xD56B9F55, -/**/ 0x4003DB3E, 0x86149A3B, -/**/ 0x401F29B3, 0x0B8D0DAD, -/**/ 0x403D6463, 0x40E9D1A7, -/**/ 0x405F0E89, 0x619D6679, -/**/ 0x40818F2E, 0x92CF3FBC, -/**/ 0x40A4CC10, 0x844E51BD, -/**/ 0x40C9762D, 0xF3A9EB60, -/**/ 0x3CA20E79, 0xEF4B1E02, -/**/ 0x3FEF8FAF, 0x3A4BC01C, -/**/ 0x3FFD0000, 0x00000000, -/**/ 0xBF2B8552, 0x8C156248, -/**/ 0x3FEAD000, 0x00000000, -/**/ 0x3FFD500E, 0x44AAD4F2, -/**/ 0x40049BE3, 0x6B85DB68, -/**/ 0x40208A0B, 0xE558F351, -/**/ 0x403FF3EC, 0xC1BCC632, -/**/ 0x40614970, 0x2A555E45, -/**/ 0x408404AE, 0xDD057F33, -/**/ 0x40A847D9, 0x22610A18, -/**/ 0x40CE7146, 0x3C7AA2B4, -/**/ 0xBC9571D0, 0x53CA14EC, -/**/ 0x3FEFC9FD, 0xEBFAA348, -/**/ 0x3FFD4000, 0x00000000, -/**/ 0x3F700E44, 0xAAD4F267, -/**/ 0x3FEAF000, 0x00000000, -/**/ 0x3FFDA412, 0xEC9EDC5A, -/**/ 0x40056886, 0x22B6D908, -/**/ 0x402194E0, 0xB605B3B4, -/**/ 0x40416754, 0x9338560C, -/**/ 0x40634B7B, 0x34B16169, -/**/ 0x4086E508, 0x3B1BAF9C, -/**/ 0x40AC7475, 0xFB9DFBF5, -/**/ 0x40D2473E, 0xF4B4BB01, -/**/ 0x3CA82B31, 0xE9F06EFC, -/**/ 0x3FF00278, 0xC2613F02, -/**/ 0x3FFDC000, 0x00000000, -/**/ 0xBF7BED13, 0x6123A5D1, -/**/ 0x3FEB1000, 0x00000000, -/**/ 0x3FFDFB63, 0xDF3AE0DB, -/**/ 0x40064239, 0x08AD38CF, -/**/ 0x4022B7DB, 0xAA166573, -/**/ 0x4042FFB4, 0x38210D3E, -/**/ 0x40659862, 0xFB634456, -/**/ 0x408A45B4, 0xEE8F3E34, -/**/ 0x40B0BD59, 0xD39A6C6F, -/**/ 0x40D60CCD, 0x2B4867E8, -/**/ 0xBCA6097F, 0x1CBB85B3, -/**/ 0x3FF02048, 0x3537E800, -/**/ 0x3FFE0000, 0x00000000, -/**/ 0xBF527083, 0x147C93ED, -/**/ 0x3FEB3000, 0x00000000, -/**/ 0x3FFE5637, 0xB70F5F72, -/**/ 0x40072A2E, 0xCA935102, -/**/ 0x4023F5DE, 0x43559218, -/**/ 0x4044C96E, 0xB4E19CA3, -/**/ 0x40683D62, 0x1272DDA3, -/**/ 0x408E4135, 0xC6BFAAED, -/**/ 0x40B3C717, 0x099FB249, -/**/ 0x40DABA6D, 0xD5294F7D, -/**/ 0x3CA488B1, 0xC91FFA21, -/**/ 0x3FF03E70, 0xB5B309E0, -/**/ 0x3FFE4000, 0x00000000, -/**/ 0x3F7637B7, 0x0F5F723E, -/**/ 0x3FEB5000, 0x00000000, -/**/ 0x3FFEB4CA, 0x21D4B842, -/**/ 0x400821BF, 0x2BE08FC5, -/**/ 0x40255238, 0x6A6A3BD0, -/**/ 0x4046CC00, 0xBAC907E2, -/**/ 0x406B4A78, 0x94202458, -/**/ 0x40917C35, 0xFE065CA6, -/**/ 0x40B77848, 0xE8D5B845, -/**/ 0x40E04820, 0x0CD72D76, -/**/ 0x3CA54B6E, 0x9CBE508B, -/**/ 0x3FF05CF5, 0xE41C2ACE, -/**/ 0x3FFEC000, 0x00000000, -/**/ 0xBF666BBC, 0x568F7C18, -/**/ 0x3FEB7000, 0x00000000, -/**/ 0x3FFF175C, 0x7FB6EB26, -/**/ 0x40092A6C, 0xA7BA9C35, -/**/ 0x4026D0BC, 0x80F5BA9F, -/**/ 0x40491048, 0x33BD74FB, -/**/ 0x406ED319, 0x61FCE21F, -/**/ 0x40944A2E, 0x60DF5AED, -/**/ 0x40BBFAFC, 0x1AC97175, -/**/ 0x40E3F145, 0xC3A8BC22, -/**/ 0xBC994B5D, 0xA70A42D9, -/**/ 0x3FF07BDB, 0x9F358760, -/**/ 0x3FFF0000, 0x00000000, -/**/ 0x3F775C7F, 0xB6EB2582, -/**/ 0x3FEB9000, 0x00000000, -/**/ 0x3FFF7E36, 0x9B29492C, -/**/ 0x400A45EB, 0x1C35AD8A, -/**/ 0x402875D7, 0xC8373BB1, -/**/ 0x404BA0D1, 0x885E6AE6, -/**/ 0x40717784, 0x0831631E, -/**/ 0x4097A441, 0x7F51DA78, -/**/ 0x40C0C2B2, 0x6D7642FB, -/**/ 0x40E89073, 0x594961FB, -/**/ 0xBCA5DECE, 0x96CDC181, -/**/ 0x3FF09B26, 0x0A46374E, -/**/ 0x3FFF8000, 0x00000000, -/**/ 0xBF3C964D, 0x6B6D3D05, -/**/ 0x3FEBB000, 0x00000000, -/**/ 0x3FFFE9A7, 0x7DD9B1CF, -/**/ 0x400B7627, 0xB9AE77AF, -/**/ 0x402A46B0, 0x3338306D, -/**/ 0x404E8A38, 0xA0CAACE9, -/**/ 0x4073DDBB, 0x864F53A2, -/**/ 0x409BAAF0, 0xD6C97F8D, -/**/ 0x40C42EEF, 0xDFAE5A98, -/**/ 0x40EE701A, 0xE19501DA, -/**/ 0x3C9CC4F4, 0xC7D3D675, -/**/ 0x3FF0BAD9, 0x93EC49AE, -/**/ 0x40000000, 0x00000000, -/**/ 0xBF765882, 0x264E310D, -/**/ 0x3FEBD000, 0x00000000, -/**/ 0x40002D03, 0x34302F3B, -/**/ 0x400CBD52, 0x7F5AAF0D, -/**/ 0x402C4949, 0x0C635C0A, -/**/ 0x4050EDD1, 0xB6BB1732, -/**/ 0x4076AE3D, 0x9691A9F4, -/**/ 0x40A043C7, 0x61482FC6, -/**/ 0x40C87037, 0xF81EB6E0, -/**/ 0x40F2FA30, 0xE84FE55E, -/**/ 0xBC9820F1, 0x228FC41D, -/**/ 0x3FF0DAFA, 0xFDD4AE68, -/**/ 0x40002000, 0x00000000, -/**/ 0x3F7A0668, 0x605E76B0, -/**/ 0x3FEBF000, 0x00000000, -/**/ 0x400067D9, 0xF9C947A3, -/**/ 0x400E1DE9, 0xA1722882, -/**/ 0x402E84B0, 0x41FE0247, -/**/ 0x4052D3AE, 0xDBD1D676, -/**/ 0x4079FF78, 0xE088BEF5, -/**/ 0x40A33780, 0x64D9A484, -/**/ 0x40CDC32D, 0x1974F9B5, -/**/ 0x40F7D295, 0xCE268611, -/**/ 0xBCA5A192, 0xD437D23F, -/**/ 0x3FF0FB8F, 0x657EFDCA, -/**/ 0x40006000, 0x00000000, -/**/ 0x3F6F67E7, 0x251E8CF3, -/**/ 0x3FEC1000, 0x00000000, -/**/ 0x4000A58D, 0xB1FFFA6D, -/**/ 0x400F9AC7, 0x4E7307C3, -/**/ 0x4030809B, 0x5EA15962, -/**/ 0x405501D0, 0x5418E1B6, -/**/ 0x407DED80, 0xB476D79F, -/**/ 0x40A6D2BF, 0x37F33D5F, -/**/ 0x40D23C31, 0xA43F6C6F, -/**/ 0x40FE1E46, 0xDB17BBAA, -/**/ 0xBCA7EB62, 0x41D8AD56, -/**/ 0x3FF11C9C, 0x4E3ADE0A, -/**/ 0x4000A000, 0x00000000, -/**/ 0x3F6636C7, 0xFFE9B457, -/**/ 0x3FEC3000, 0x00000000, -/**/ 0x4000E65A, 0x1D1BDCC6, -/**/ 0x40109B99, 0x3503CCCE, -/**/ 0x4031E45B, 0x7580EC24, -/**/ 0x405785CA, 0x1803E176, -/**/ 0x40814DDB, 0x8458A77D, -/**/ 0x40AB41D9, 0x6C115AB7, -/**/ 0x40D67DF0, 0xD7BCE584, -/**/ 0x41032EF5, 0xF5487646, -/**/ 0xBC9C4040, 0xF3631254, -/**/ 0x3FF13E27, 0xAC964DA8, -/**/ 0x4000E000, 0x00000000, -/**/ 0x3F696874, 0x6F731770, -/**/ 0x3FEC5000, 0x00000000, -/**/ 0x40012A82, 0x068FBCB4, -/**/ 0x40117B79, 0x7FE89A5F, -/**/ 0x40337376, 0xD37F3897, -/**/ 0x405A704E, 0xDF3B47A2, -/**/ 0x40841B83, 0xEB114449, -/**/ 0x40B05F75, 0x8D323120, -/**/ 0x40DBEFEC, 0x8AE65DDD, -/**/ 0x4108A2A2, 0xD1814341, -/**/ 0x3CA3E83D, 0xFB25EC76, -/**/ 0x3FF16037, 0xF37FFEDA, -/**/ 0x40012000, 0x00000000, -/**/ 0x3F75040D, 0x1F796787, -/**/ 0x3FEC7000, 0x00000000, -/**/ 0x40017250, 0x5F8F574B, -/**/ 0x40126F35, 0xB566493D, -/**/ 0x403534F5, 0x95186E3D, -/**/ 0x405DD60B, 0x947D5EA5, -/**/ 0x40877C77, 0x568C5D73, -/**/ 0x40B3CB66, 0xA26261F0, -/**/ 0x40E17B06, 0xBF32194D, -/**/ 0x410FE921, 0x11490E42, -/**/ 0xBCA34428, 0x5376CB61, -/**/ 0x3FF182D4, 0x236FE314, -/**/ 0x40018000, 0x00000000, -/**/ 0xBF7B5F40, 0xE15169A9, -/**/ 0x3FEC9000, 0x00000000, -/**/ 0x4001BE19, 0x91B4C8D8, -/**/ 0x4013795B, 0xBE69BAE6, -/**/ 0x40373151, 0xCD6F8B02, -/**/ 0x4060E864, 0xD86A7BFF, -/**/ 0x408B95CC, 0x515F5BD6, -/**/ 0x40B8180C, 0xD070B4A1, -/**/ 0x40E60D2C, 0xC9B24D80, -/**/ 0x4114DBF6, 0xAA392CAF, -/**/ 0xBCA89BD0, 0xF5844C55, -/**/ 0x3FF1A603, 0xDBFAF236, -/**/ 0x4001C000, 0x00000000, -/**/ 0xBF4E66E4, 0xB37285FC, -/**/ 0x3FECB000, 0x00000000, -/**/ 0x40020E3D, 0x1757F6B1, -/**/ 0x40149CE9, 0xAE890640, -/**/ 0x403972D4, 0xD6174F60, -/**/ 0x40634079, 0x8C82DF92, -/**/ 0x40904BE6, 0xACAB5569, -/**/ 0x40BD8A99, 0xB362E75A, -/**/ 0x40EC0ED7, 0x389374DC, -/**/ 0x411B8ADF, 0xCA5E9653, -/**/ 0xBC80CBC7, 0x4A1E3E49, -/**/ 0x3FF1C9CF, 0x704F5D26, -/**/ 0x40020000, 0x00000000, -/**/ 0x3F7C7A2E, 0xAFED62A2, -/**/ 0x3FECD000, 0x00000000, -/**/ 0x40026327, 0x6B3395AA, -/**/ 0x4015DD66, 0x33FB1467, -/**/ 0x403C0610, 0xDCF3437C, -/**/ 0x406607CE, 0xC9D7C47A, -/**/ 0x409360FB, 0xA330DC5C, -/**/ 0x40C240B4, 0x38A3194B, -/**/ 0x40F20437, 0xBAA6A879, -/**/ 0x41226106, 0x04D6F19C, -/**/ 0x3CABCCF5, 0x15E5252C, -/**/ 0x3FF1EE3F, 0xFF35681A, -/**/ 0x40026000, 0x00000000, -/**/ 0x3F593B59, 0x9CAD4CE9, -/**/ 0x3FECF000, 0x00000000, -/**/ 0x4002BD54, 0x664A8350, -/**/ 0x40173EFF, 0x945190A0, -/**/ 0x403EFA80, 0xC7CC5224, -/**/ 0x406958AA, 0x896F1658, -/**/ 0x40973450, 0x4FD54E04, -/**/ 0x40C6BF55, 0x4CD60C4A, -/**/ 0x40F75EBE, 0x3EFFD07C, -/**/ 0x4128D03C, 0x9E2E6981, -/**/ 0xBC987CEE, 0xC8A488FF, -/**/ 0x3FF2135F, 0x8F597306, -/**/ 0x4002C000, 0x00000000, -/**/ 0xBF555CCD, 0xABE583FE, -/**/ 0x3FED1000, 0x00000000, -/**/ 0x40031D52, 0x2A40EA5C, -/**/ 0x4018C6B3, 0x52B4947D, -/**/ 0x404131AE, 0x5D01146E, -/**/ 0x406D54FB, 0x0163E71C, -/**/ 0x409BFE8A, 0xEF3ED15B, -/**/ 0x40CC9C28, 0xA33A6B00, -/**/ 0x40FEA523, 0x1456E1A6, -/**/ 0x4130F60F, 0xFC8790DB, -/**/ 0x3CAC104F, 0x6FABCA41, -/**/ 0x3FF23939, 0x30D87C68, -/**/ 0x40032000, 0x00000000, -/**/ 0xBF556EAD, 0xF8AD1CF9, -/**/ 0x3FED3000, 0x00000000, -/**/ 0x400383C4, 0xC053C623, -/**/ 0x401A7A81, 0x6ADBFF2C, -/**/ 0x40432C5B, 0xE219A24E, -/**/ 0x40711484, 0x30F4B8D8, -/**/ 0x40A10659, 0xBC59423E, -/**/ 0x40D22C09, 0x3D537AE5, -/**/ 0x410454A2, 0xA4B7D930, -/**/ 0x41378151, 0xC151F3C3, -/**/ 0xBCA2F226, 0x779E9951, -/**/ 0x3FF25FD9, 0x254E3F9C, -/**/ 0x40038000, 0x00000000, -/**/ 0x3F5E2602, 0x9E311A8B, -/**/ 0x3FED5000, 0x00000000, -/**/ 0x4003F16A, 0xA2F65F8C, -/**/ 0x401C61AF, 0x36C0308E, -/**/ 0x40457C82, 0x5337FF7D, -/**/ 0x407407A3, 0x7FB84BA9, -/**/ 0x40A4E476, 0x4C74DEA7, -/**/ 0x40D75638, 0xDF1C2124, -/**/ 0x410B5320, 0xA2556E94, -/**/ 0x414087CD, 0x7D68ABBE, -/**/ 0xBCACD58C, 0x73A87AB9, -/**/ 0x3FF2874D, 0x10017B06, -/**/ 0x40040000, 0x00000000, -/**/ 0xBF7D2ABA, 0x1340E849, -/**/ 0x3FED7000, 0x00000000, -/**/ 0x40046722, 0x7BA9A810, -/**/ 0x401E851F, 0xCBC74735, -/**/ 0x40483596, 0xF3879985, -/**/ 0x4077AAEB, 0xCD297F00, -/**/ 0x40A9E3C8, 0x31669F50, -/**/ 0x40DE5420, 0xB7CBB664, -/**/ 0x41129F7B, 0xB75100A0, -/**/ 0x4147A1C1, 0x51D127BF, -/**/ 0x3CAC647E, 0x46D9C78F, -/**/ 0x3FF2AFA4, 0x304962AE, -/**/ 0x40046000, 0x00000000, -/**/ 0x3F6C89EE, 0xA6A041C9, -/**/ 0x3FED9000, 0x00000000, -/**/ 0x4004E5F2, 0x7A99A835, -/**/ 0x402077E5, 0x15B0232D, -/**/ 0x404B70C1, 0xEE468866, -/**/ 0x407C334A, 0x43A041C3, -/**/ 0x40B036D1, 0x53D2C164, -/**/ 0x40E3F7B1, 0x10CCEDBE, -/**/ 0x4119C160, 0xF6C2E560, -/**/ 0x415131DD, 0x6D21D20F, -/**/ 0x41878683, 0x2EC50766, -/**/ 0xBCA95596, 0xD1134ECC, -/**/ 0x3FF2D8EF, 0xA8F4B028, -/**/ 0x4004E000, 0x00000000, -/**/ 0x3F67C9EA, 0x66A0D2C7, -/**/ 0x3FEDB000, 0x00000000, -/**/ 0x40056F11, 0xD6373B90, -/**/ 0x4021D7AC, 0xC3747DF3, -/**/ 0x404F4EF3, 0x6A014D6F, -/**/ 0x4080F4C4, 0x505C454B, -/**/ 0x40B48D16, 0x214975C5, -/**/ 0x40EAACFD, 0xF57BFAC6, -/**/ 0x41222235, 0x5225A6ED, -/**/ 0x41598643, 0xACBA67AB, -/**/ 0x419267B9, 0xDE5D19B9, -/**/ 0xBCAEF63C, 0x42C92439, -/**/ 0x3FF30342, 0xD86BED76, -/**/ 0x40056000, 0x00000000, -/**/ 0x3F7E23AC, 0x6E771F48, -/**/ 0x3FEDD000, 0x00000000, -/**/ 0x400603F5, 0x3D2D8CF1, -/**/ 0x40236A84, 0xEF4A10FA, -/**/ 0x4051FDF3, 0x4EA265AF, -/**/ 0x408499B5, 0xD944F636, -/**/ 0x40BA64B8, 0x37F73BAC, -/**/ 0x40F21B9F, 0x259B27FC, -/**/ 0x412A0669, 0x265D5B9F, -/**/ 0x41635D8E, 0x3DC806E2, -/**/ 0x419D8657, 0x36AD8B00, -/**/ 0x3CA4CEEB, 0x3FFCDCA3, -/**/ 0x3FF32EB3, 0xC69D2D10, -/**/ 0x40060000, 0x00000000, -/**/ 0x3F5FA9E9, 0x6C678625, -/**/ 0x3FEDF000, 0x00000000, -/**/ 0x4006A65F, 0x5FCDF915, -/**/ 0x40253B6E, 0x68321BDA, -/**/ 0x4054D949, 0x706E8DA9, -/**/ 0x408950EF, 0x4A70D2D7, -/**/ 0x40C13319, 0x1F15E14E, -/**/ 0x40F907B1, 0x846A9BD5, -/**/ 0x4133139C, 0x17C39016, -/**/ 0x416E1DA3, 0xBC86F11B, -/**/ 0x41A8597F, 0xD9F86F3B, -/**/ 0x3C32D4F8, 0x7D0D5190, -/**/ 0x3FF35B5B, 0xAFA88354, -/**/ 0x4006A000, 0x00000000, -/**/ 0x3F697D7F, 0x37E455FD, -/**/ 0x3FEE1000, 0x00000000, -/**/ 0x40075877, 0x41D1DBF9, -/**/ 0x402758A8, 0xF5852184, -/**/ 0x405861EE, 0x65C0F467, -/**/ 0x408F83C0, 0xD2D91276, -/**/ 0x40C6CA7C, 0x43EC3B0E, -/**/ 0x4101A722, 0x718322C8, -/**/ 0x413CA4C6, 0x9533D806, -/**/ 0x417812B7, 0xE9899583, -/**/ 0x41B4B875, 0x85EE8B86, -/**/ 0xBC99DEFB, 0xD1AEEED1, -/**/ 0x3FF38957, 0xB510476E, -/**/ 0x40076000, 0x00000000, -/**/ 0xBF6E22F8, 0xB8901BF9, -/**/ 0x3FEE3000, 0x00000000, -/**/ 0x40081CE6, 0xE1C37E57, -/**/ 0x4029D4F3, 0xD3DC9910, -/**/ 0x405CD074, 0xE3095065, -/**/ 0x4093E764, 0xC5C38224, -/**/ 0x40CEC5AE, 0x3CAE1F31, -/**/ 0x41097A50, 0xC0645F38, -/**/ 0x41461866, 0xD8A7F25E, -/**/ 0x4183DAF5, 0x8C2F04A3, -/**/ 0x41C2450E, 0xA9143C1F, -/**/ 0x3C7D25BE, 0x9FD995BC, -/**/ 0x3FF3B8C9, 0xC35D33E6, -/**/ 0x40082000, 0x00000000, -/**/ 0xBF58C8F1, 0xE40D49E0, -/**/ 0x3FEE5000, 0x00000000, -/**/ 0x4008F706, 0x285640BB, -/**/ 0x402CC96B, 0x3B2B7CD1, -/**/ 0x40613ADF, 0xC5341328, -/**/ 0x4099908D, 0x16E928A9, -/**/ 0x40D53986, 0x7CC08A3C, -/**/ 0x4112DFC5, 0x31DD3E45, -/**/ 0x41519499, 0xE2A13787, -/**/ 0x4190F943, 0xF94424AD, -/**/ 0x41D0C6BC, 0xCDCD49BE, -/**/ 0xBC9E2458, 0x6D41701D, -/**/ 0x3FF3E9D9, 0xC088BD28, -/**/ 0x40090000, 0x00000000, -/**/ 0xBF71F3AF, 0x537E8A00, -/**/ 0x3FEE7000, 0x00000000, -/**/ 0x4009EB18, 0x6562D1E0, -/**/ 0x40302C31, 0x75651223, -/**/ 0x4064E431, 0x336E41C7, -/**/ 0x40A0BCA6, 0xA065DA69, -/**/ 0x40DE034D, 0x917AF357, -/**/ 0x411CD2C1, 0x4168FB0F, -/**/ 0x415CFEB6, 0x15BB794D, -/**/ 0x419E3EE1, 0x6EFFD5E5, -/**/ 0x41E024E7, 0x1ACB4D9C, -/**/ 0xBC9C29C8, 0xD93F153F, -/**/ 0x3FF41CB7, 0x2183E810, -/**/ 0x4009E000, 0x00000000, -/**/ 0x3F7630CA, 0xC5A3C038, -/**/ 0x3FEE9000, 0x00000000, -/**/ 0x400AFEA6, 0xA364196F, -/**/ 0x403258F3, 0x0B19A2EB, -/**/ 0x4069BDA5, 0x2520AC75, -/**/ 0x40A669BC, 0x8F67EDEA, -/**/ 0x40E5D78C, 0xC026C9F8, -/**/ 0x4126CCB4, 0x1E3B36C2, -/**/ 0x4168EDE4, 0xBF45C805, -/**/ 0x41AC2F6A, 0x8AC89E76, -/**/ 0x41F0675E, 0x4CA9EB55, -/**/ 0x42336AC1, 0x0D13E3DF, -/**/ 0x3C9B1D74, 0xF2DE93A6, -/**/ 0x3FF4519B, 0x155FB22E, -/**/ 0x400B0000, 0x00000000, -/**/ 0xBF4595C9, 0xBE690E67, -/**/ 0x3FEEB000, 0x00000000, -/**/ 0x400C3908, 0x4BD1C065, -/**/ 0x40350D88, 0x26C39FFD, -/**/ 0x4070296B, 0x69D3E79E, -/**/ 0x40AED279, 0xD7FEEA5D, -/**/ 0x40F072A8, 0xFD5BD547, -/**/ 0x4132CDB9, 0x4A08BB38, -/**/ 0x41768482, 0x536BED06, -/**/ 0x41BBE1FF, 0x2F10E88D, -/**/ 0x4201C966, 0xABDBBDAC, -/**/ 0x42471011, 0x02E62DDA, -/**/ 0xBCA0855D, 0x3E907E71, -/**/ 0x3FF488CB, 0x8FA73920, -/**/ 0x400C4000, 0x00000000, -/**/ 0xBF6BDED0, 0xB8FE6DDF, -/**/ 0x3FEED000, 0x00000000, -/**/ 0x400DA439, 0x12AAF9A9, -/**/ 0x40387D46, 0x62F25109, -/**/ 0x4074C339, 0x3F133A3F, -/**/ 0x40B5E143, 0x662036F9, -/**/ 0x40F9CF04, 0x74467831, -/**/ 0x41404E10, 0x576C6FA8, -/**/ 0x41859489, 0xFF4F8E88, -/**/ 0x41CD88D2, 0xB44962A9, -/**/ 0x4214D838, 0x97A288F3, -/**/ 0x425DE10B, 0x6CF738B3, -/**/ 0xBC8E9EA7, 0x5F7263CC, -/**/ 0x3FF4C29F, 0xAA786F36, -/**/ 0x400DA000, 0x00000000, -/**/ 0x3F60E44A, 0xABE6A2AD, -/**/ 0x3FEEF000, 0x00000000, -/**/ 0x400F4E35, 0xC169B52F, -/**/ 0x403CF773, 0x29E8699C, -/**/ 0x407B6D37, 0xFC1818D6, -/**/ 0x40C02655, 0x1386790A, -/**/ 0x41054A1F, 0x4FF79D1E, -/**/ 0x414E104A, 0x7DB0265A, -/**/ 0x41963C39, 0xE5C8114B, -/**/ 0x41E10156, 0xF52A87DB, -/**/ 0x422ADD76, 0x2E9E7ABE, -/**/ 0x427586AB, 0x6EC81361, -/**/ 0x3C935690, 0xE395EEA6, -/**/ 0x3FF4FF86, 0x2E5965A2, -/**/ 0x400F4000, 0x00000000, -/**/ 0x3F7C6B82, 0xD36A5E70 } }; - -#else -#ifdef LITTLE_ENDI -static const union {int4 i[5136];double x[2568];} asncs = { .i = { -/**/ 0x00000000, 0x3FC04000, -/**/ 0x88994424, 0x3FF02169, -/**/ 0xB799B115, 0x3FB0A6A2, -/**/ 0xD57409A0, 0x3FC6EF15, -/**/ 0xAF52EAA0, 0x3FAA141E, -/**/ 0xABBBE261, 0x3FB75591, -/**/ 0xD206D88F, 0x3FA72B51, -/**/ 0x5BB33E7D, 0x3C96B595, -/**/ 0xA03E2700, 0x3FC04B41, -/**/ 0x00000000, 0x3FF04000, -/**/ 0x66BBDC7C, 0xBF7E9677, -/**/ 0x00000000, 0x3FC0C000, -/**/ 0xF9E23A56, 0x3FF02386, -/**/ 0x60FD0235, 0x3FB1308C, -/**/ 0x14D16B02, 0x3FC7099F, -/**/ 0x27C01EE1, 0x3FAAFED6, -/**/ 0xDBCD5F98, 0x3FB79C6F, -/**/ 0x4084DAAC, 0x3FA8144A, -/**/ 0x38D8505E, 0xBC87C092, -/**/ 0x56C9F380, 0x3FC0CC55, -/**/ 0x00000000, 0x3FF04000, -/**/ 0x1DC5AA24, 0xBF7C7906, -/**/ 0x00000000, 0x3FC14000, -/**/ 0xB27141F6, 0x3FF025B5, -/**/ 0x04CE7400, 0x3FB1BB18, -/**/ 0x72907342, 0x3FC72514, -/**/ 0x0BF4222C, 0x3FABEC60, -/**/ 0x75B3736C, 0x3FB7E610, -/**/ 0x5199C343, 0x3FA9024C, -/**/ 0x06B56F60, 0xBC8AE84C, -/**/ 0x3DEFA070, 0x3FC14D7A, -/**/ 0x00000000, 0x3FF04000, -/**/ 0x8EBE0A5C, 0xBF7A4A4D, -/**/ 0x00000000, 0x3FC1C000, -/**/ 0xC6DE8F57, 0x3FF027F5, -/**/ 0x345751E1, 0x3FB2464B, -/**/ 0xCF026805, 0x3FC74178, -/**/ 0x40A9E0D6, 0x3FACDCD8, -/**/ 0xEB1D9C38, 0x3FB83282, -/**/ 0xD7BE707B, 0x3FA9F590, -/**/ 0x03A2A6D6, 0xBCAB9768, -/**/ 0xE03B4870, 0x3FC1CEB0, -/**/ 0x00000000, 0x3FF04000, -/**/ 0x2170A943, 0xBF780A39, -/**/ 0x00000000, 0x3FC24000, -/**/ 0x4C759796, 0x3FF02A47, -/**/ 0x92771935, 0x3FB2D22B, -/**/ 0x26ABA06D, 0x3FC75ECF, -/**/ 0x486A1932, 0x3FADD05B, -/**/ 0x5AF971D5, 0x3FB881D7, -/**/ 0x831AEE0C, 0x3FAAEE52, -/**/ 0xAD1B1BEF, 0x3CA13F57, -/**/ 0xC8E09330, 0x3FC24FF9, -/**/ 0x00000000, 0x3FF04000, -/**/ 0x8A68699B, 0xBF75B8B3, -/**/ 0x00000000, 0x3FC2C000, -/**/ 0x59374E09, 0x3FF02CAA, -/**/ 0xD44E8BEA, 0x3FB35EBE, -/**/ 0x92E4BE8A, 0x3FC77D1A, -/**/ 0x4A6C34FD, 0x3FAEC706, -/**/ 0x972F6E07, 0x3FB8D41E, -/**/ 0xF9845F69, 0x3FABECCD, -/**/ 0x945C4185, 0x3C8BA1FA, -/**/ 0x83C058B0, 0x3FC2D155, -/**/ 0x00000000, 0x3FF04000, -/**/ 0xC8B1F774, 0xBF7355A6, -/**/ 0x00000000, 0x3FC34000, -/**/ 0x03DC7745, 0x3FF02F1F, -/**/ 0xC1EE9F61, 0x3FB3EC0A, -/**/ 0x4A82E6D2, 0x3FC79C5E, -/**/ 0x19B1EF72, 0x3FAFC0F7, -/**/ 0x2AA943E5, 0x3FB9296A, -/**/ 0xEF8B9DE7, 0x3FACF141, -/**/ 0x083C8716, 0xBC834081, -/**/ 0x9D6E5610, 0x3FC352C4, -/**/ 0x00000000, 0x3FF04000, -/**/ 0x2388BB30, 0xBF70E0FC, -/**/ 0x00000000, 0x3FC3C000, -/**/ 0x63D81251, 0x3FF031A5, -/**/ 0x370B721F, 0x3FB47A15, -/**/ 0xA28731E5, 0x3FC7BC9D, -/**/ 0x1E305BE9, 0x3FB05F26, -/**/ 0x5FA50FBD, 0x3FB981CC, -/**/ 0x42AC4083, 0x3FADFBEF, -/**/ 0xA8E107C7, 0x3CA20ACB, -/**/ 0xA336F5E0, 0x3FC3D447, -/**/ 0x00000000, 0x3FF04000, -/**/ 0x4FDB5D5C, 0xBF6CB538, -/**/ 0x00000000, 0x3FC44000, -/**/ 0x9159D86F, 0x3FF0343D, -/**/ 0x23B3747C, 0x3FB508E4, -/**/ 0x0ED597CB, 0x3FC7DDDC, -/**/ 0x79ADF104, 0x3FB0DF92, -/**/ 0x4658D945, 0x3FB9DD58, -/**/ 0x14ACA06B, 0x3FAF0D19, -/**/ 0xDF636EFE, 0xBCA4E10D, -/**/ 0x23252C00, 0x3FC455DF, -/**/ 0x00000000, 0x3FF04000, -/**/ 0x4C4F221A, 0xBF6784DD, -/**/ 0x00000000, 0x3FC4C000, -/**/ 0xA550D410, 0x3FF036E7, -/**/ 0x8D0AF1E7, 0x3FB5987D, -/**/ 0x22F39726, 0x3FC8001D, -/**/ 0xA1116D73, 0x3FB161D0, -/**/ 0xBBEA1528, 0x3FBA3C21, -/**/ 0x74202FF6, 0x3FB01282, -/**/ 0xD10866E2, 0x3CAA0611, -/**/ 0xAC086560, 0x3FC4D78B, -/**/ 0x00000000, 0x3FF04000, -/**/ 0x5E57DF8A, 0xBF6230B5, -/**/ 0x00000000, 0x3FC54000, -/**/ 0xB96E0F8A, 0x3FF039A3, -/**/ 0x8E0C29F6, 0x3FB628E7, -/**/ 0x92CEDE01, 0x3FC82364, -/**/ 0xFB7B5D84, 0x3FB1E5F0, -/**/ 0x71BD08EE, 0x3FBA9E3D, -/**/ 0x5F7FFAB4, 0x3FB0A1FD, -/**/ 0xEF04F6E7, 0xBC90F980, -/**/ 0xCD7A8DC0, 0x3FC5594D, -/**/ 0x00000000, 0x3FF04000, -/**/ 0x47C1D879, 0xBF59711A, -/**/ 0x00000000, 0x3FC5C000, -/**/ 0xE8275C12, 0x3FF03C71, -/**/ 0x584C2A23, 0x3FB6BA28, -/**/ 0x338C3D4B, 0x3FC847B6, -/**/ 0x59A55DD8, 0x3FB26C04, -/**/ 0xF5202D6A, 0x3FBB03C0, -/**/ 0x9C6466A4, 0x3FB13522, -/**/ 0x2A268973, 0x3C983C9A, -/**/ 0x17E62A20, 0x3FC5DB26, -/**/ 0x00000000, 0x3FF04000, -/**/ 0xC51F7008, 0xBF4C70BE, -/**/ 0x00000000, 0x3FC64000, -/**/ 0x4CBA31A9, 0x3FF03F52, -/**/ 0x34C49ADE, 0x3FB74C46, -/**/ 0xFC5F33CC, 0x3FC86D15, -/**/ 0xFA419D7C, 0x3FB2F41B, -/**/ 0xB757E82A, 0x3FBB6CC2, -/**/ 0xDA4D5C39, 0x3FB1CC18, -/**/ 0x2DFB224D, 0xBCA862D4, -/**/ 0x1C8C8AF0, 0x3FC65D15, -/**/ 0x00000000, 0x3FF04000, -/**/ 0xB9CADBBF, 0xBF25B668, -/**/ 0x00000000, 0x3FC6C000, -/**/ 0x032EA88F, 0x3FF04245, -/**/ 0x84A2B473, 0x3FB7DF47, -/**/ 0x076A60F5, 0x3FC89388, -/**/ 0x8E8394C1, 0x3FB37E49, -/**/ 0x160F3472, 0x3FBBD95A, -/**/ 0x39844810, 0x3FB26708, -/**/ 0x698BC8EA, 0x3C994228, -/**/ 0x6D8C14A0, 0x3FC6DF1B, -/**/ 0x00000000, 0x3FF04000, -/**/ 0x754477AC, 0x3F422819, -/**/ 0x00000000, 0x3FC74000, -/**/ 0x285A8CEB, 0x3FF0454A, -/**/ 0xC21B9224, 0x3FB87332, -/**/ 0x92A93402, 0x3FC8BB10, -/**/ 0x3ED3F586, 0x3FB40A9F, -/**/ 0x643217C8, 0x3FBC499F, -/**/ 0x5D29A16B, 0x3FB3061A, -/**/ 0x3DF9F2D7, 0xBCA3B2DF, -/**/ 0x9DE6A160, 0x3FC76139, -/**/ 0x00000000, 0x3FF04000, -/**/ 0x6A33AB4B, 0x3F5528A1, -/**/ 0x00000000, 0x3FC7C000, -/**/ 0xD9E48D58, 0x3FF04861, -/**/ 0x81461BF6, 0x3FB9080E, -/**/ 0x00E32FFA, 0x3FC8E3B4, -/**/ 0xAFB1F2A5, 0x3FB4992F, -/**/ 0xF33705D5, 0x3FBCBDAB, -/**/ 0x7E23EE89, 0x3FB3A97A, -/**/ 0xCCE44C41, 0x3C7AAD12, -/**/ 0x4187FAE0, 0x3FC7E370, -/**/ 0x00000000, 0x3FF04000, -/**/ 0xC91AAF11, 0x3F60C3B3, -/**/ 0x00000000, 0x3FC84000, -/**/ 0x36478509, 0x3FF04B8C, -/**/ 0x70FAC1B4, 0x3FB99DE1, -/**/ 0xDAA92166, 0x3FC90D76, -/**/ 0x06C416A6, 0x3FB52A0E, -/**/ 0x1CDCA344, 0x3FBD359A, -/**/ 0x7EFD4CA0, 0x3FB45155, -/**/ 0x35A8895D, 0x3C396CA5, -/**/ 0xED4C6EF0, 0x3FC865BF, -/**/ 0x00000000, 0x3FF04000, -/**/ 0x8F0A11A4, 0x3F67186C, -/**/ 0x00000000, 0x3FC8C000, -/**/ 0x5CD5E248, 0x3FF04EC9, -/**/ 0x5BB94403, 0x3FBA34B2, -/**/ 0xCF5CA73A, 0x3FC9385D, -/**/ 0xF01AFDBE, 0x3FB5BD4D, -/**/ 0x4D61A7A9, 0x3FBDB185, -/**/ 0x00BD47CF, 0x3FB4FDDA, -/**/ 0x727E8B64, 0xBC9D1119, -/**/ 0x37077E20, 0x3FC8E829, -/**/ 0x00000000, 0x3FF04000, -/**/ 0xABC490CB, 0x3F6D92B9, -/**/ 0x00000000, 0x3FC94000, -/**/ 0x6DBD2A10, 0x3FF05219, -/**/ 0x2894CAA1, 0x3FBACC88, -/**/ 0xB6427516, 0x3FC9646D, -/**/ 0xA3A864D7, 0x3FB65303, -/**/ 0x0E3CF3D4, 0x3FBE318A, -/**/ 0x78CDA678, 0x3FB5AF38, -/**/ 0xDA9D51DF, 0x3CA3841D, -/**/ 0xB58AA660, 0x3FC96AAC, -/**/ 0x00000000, 0x3FF04000, -/**/ 0xBD2A1052, 0x3F72196D, -/**/ 0x00000000, 0x3FC9C000, -/**/ 0x8A099990, 0x3FF0557C, -/**/ 0xDC268965, 0x3FBB6569, -/**/ 0x8F9FBA21, 0x3FC991AB, -/**/ 0xEAED1E85, 0x3FB6EB43, -/**/ 0x115C4C63, 0x3FBEB5C6, -/**/ 0x47F9AEFA, 0x3FB665A3, -/**/ 0x03AB3673, 0xBCA1F8FD, -/**/ 0x00AC4A60, 0x3FC9ED4B, -/**/ 0x00000000, 0x3FF04000, -/**/ 0x0999905B, 0x3F757C8A, -/**/ 0x00000000, 0x3FCA4000, -/**/ 0xD3A9E674, 0x3FF058F2, -/**/ 0x99873832, 0x3FBBFF5E, -/**/ 0x85E31CE9, 0x3FC9C01C, -/**/ 0x26E09FF2, 0x3FB78624, -/**/ 0x3CF0885C, 0x3FBF3E58, -/**/ 0xD2986239, 0x3FB7214E, -/**/ 0x3E594694, 0x3C97E3E5, -/**/ 0xB14EB5D0, 0x3FCA7004, -/**/ 0x00000000, 0x3FF04000, -/**/ 0xA9E6746B, 0x3F78F2D3, -/**/ 0x00000000, 0x3FCAC000, -/**/ 0x6D731ECB, 0x3FF05C7C, -/**/ 0xA34FA4B3, 0x3FBC9A6D, -/**/ 0xEED9C253, 0x3FC9EFC5, -/**/ 0x5614FAEB, 0x3FB823BA, -/**/ 0xB7CE698F, 0x3FBFCB60, -/**/ 0x99F3292F, 0x3FB7E271, -/**/ 0x068D709C, 0xBC9842C6, -/**/ 0x61674110, 0x3FCAF2DA, -/**/ 0x00000000, 0x3FF04000, -/**/ 0x731ECAE2, 0x3F7C7C6D, -/**/ 0x00000000, 0x3FCB4000, -/**/ 0x7B24A973, 0x3FF06019, -/**/ 0x5CA0A798, 0x3FBD369E, -/**/ 0x4CF0DB64, 0x3FCA20AD, -/**/ 0x1B1A3F31, 0x3FB8C41D, -/**/ 0x7B35E049, 0x3FC02E80, -/**/ 0x56FB8A97, 0x3FB8A944, -/**/ 0xD337B37C, 0xBCACBF9C, -/**/ 0xAC059370, 0x3FCB75CC, -/**/ 0x00000000, 0x3FF08000, -/**/ 0xDB568D78, 0xBF7FE684, -/**/ 0x00000000, 0x3FCBC000, -/**/ 0x216C6801, 0x3FF063CA, -/**/ 0x4A32C9FD, 0x3FBDD3F8, -/**/ 0x50843BC9, 0x3FCA52D8, -/**/ 0xC324648A, 0x3FB96763, -/**/ 0xE4407899, 0x3FC079AD, -/**/ 0x1663A5DC, 0x3FB97602, -/**/ 0xC637289D, 0xBCA3ADC3, -/**/ 0x2D5B06A0, 0x3FCBF8DC, -/**/ 0x00000000, 0x3FF08000, -/**/ 0x9397FEA6, 0xBF7C35DE, -/**/ 0x00000000, 0x3FCC4000, -/**/ 0x85EAFB1F, 0x3FF0678E, -/**/ 0x136DEAC6, 0x3FBE7283, -/**/ 0xD93A817D, 0x3FCA864C, -/**/ 0x4CF7089B, 0x3FBA0DA6, -/**/ 0xB3ABB322, 0x3FC0C74A, -/**/ 0x562E6E1E, 0x3FBA48E8, -/**/ 0x7EB8FFF8, 0xBC951E3E, -/**/ 0x82C22B80, 0x3FCC7C09, -/**/ 0x00000000, 0x3FF08000, -/**/ 0x1504E0D3, 0xBF78717A, -/**/ 0x00000000, 0x3FCCC000, -/**/ 0xCF382A59, 0x3FF06B66, -/**/ 0x838936FB, 0x3FBF1246, -/**/ 0xF76F5C94, 0x3FCABB10, -/**/ 0x701A77AE, 0x3FBAB6FD, -/**/ 0xC26702C6, 0x3FC11769, -/**/ 0x24CDF38E, 0x3FBB2237, -/**/ 0xE28307A9, 0xBC8DB69A, -/**/ 0x4AC67190, 0x3FCCFF55, -/**/ 0x00000000, 0x3FF08000, -/**/ 0xC7D5A6B9, 0xBF749930, -/**/ 0x00000000, 0x3FCD4000, -/**/ 0x24E7707F, 0x3FF06F53, -/**/ 0x8AB3CBB2, 0x3FBFB34A, -/**/ 0xEDAC8D74, 0x3FCAF12A, -/**/ 0xA45DA614, 0x3FBB6382, -/**/ 0xAD8E9F44, 0x3FC16A1E, -/**/ 0x41E7749D, 0x3FBC0231, -/**/ 0x22DC16A2, 0x3C76CA27, -/**/ 0x252BF240, 0x3FCD82C0, -/**/ 0x00000000, 0x3FF08000, -/**/ 0x188F814B, 0xBF70ACDB, -/**/ 0x00000000, 0x3FCDC000, -/**/ 0xAF8CADA0, 0x3FF07353, -/**/ 0x9FA32DC9, 0x3FC02ACB, -/**/ 0x32323718, 0x3FCB28A1, -/**/ 0x29A8F15E, 0x3FBC1350, -/**/ 0xDEB270E1, 0x3FC1BF7D, -/**/ 0x40D67463, 0x3FBCE91C, -/**/ 0x104BAA08, 0x3CA6E976, -/**/ 0xB2F76140, 0x3FCE064A, -/**/ 0x00000000, 0x3FF08000, -/**/ 0xE6A4BFC9, 0xBF6958A0, -/**/ 0x00000000, 0x3FCE4000, -/**/ 0x98C0FFD9, 0x3FF07768, -/**/ 0x6F7F1AF0, 0x3FC07C9A, -/**/ 0x708F2AFB, 0x3FCB617A, -/**/ 0x1025B50C, 0x3FBCC681, -/**/ 0x9487453A, 0x3FC2179C, -/**/ 0xAD09B3AB, 0x3FBDD740, -/**/ 0x189038C0, 0xBC8D32DB, -/**/ 0x96762300, 0x3FCE89F5, -/**/ 0x00000000, 0x3FF08000, -/**/ 0x7E004D50, 0xBF612ECE, -/**/ 0x00000000, 0x3FCEC000, -/**/ 0x0B27C417, 0x3FF07B92, -/**/ 0xE821087A, 0x3FC0CF15, -/**/ 0x8B49DC8C, 0x3FCB9BBD, -/**/ 0x40BEF5C2, 0x3FBD7D31, -/**/ 0xEC080575, 0x3FC27290, -/**/ 0x3056A6A9, 0x3FBECCEA, -/**/ 0x0C9B27A2, 0x3C9DE506, -/**/ 0x73468A50, 0x3FCF0DC1, -/**/ 0x00000000, 0x3FF08000, -/**/ 0x60EFA34D, 0xBF51B7D3, -/**/ 0x00000000, 0x3FCF4000, -/**/ 0x3273C018, 0x3FF07FD0, -/**/ 0x51B87F08, 0x3FC12242, -/**/ 0x9D9AB2BC, 0x3FCBD771, -/**/ 0x85FFA125, 0x3FBE377D, -/**/ 0xEA0CFE55, 0x3FC2D071, -/**/ 0xBB61DDD3, 0x3FBFCA67, -/**/ 0x88A645E7, 0xBCA25383, -/**/ 0xEE603F40, 0x3FCF91AE, -/**/ 0x00000000, 0x3FF08000, -/**/ 0x1FF422B6, 0xBF07E6C6, -/**/ 0x00000000, 0x3FCFC000, -/**/ 0x3B6C76F2, 0x3FF08423, -/**/ 0x0A1DF897, 0x3FC17624, -/**/ 0xFD38779D, 0x3FCC149D, -/**/ 0x95531ECD, 0x3FBEF583, -/**/ 0x855FA966, 0x3FC33157, -/**/ 0xD81E6BAA, 0x3FC06805, -/**/ 0x1B47FAEC, 0x3C86827E, -/**/ 0x570E6798, 0x3FD00ADF, -/**/ 0x00000000, 0x3FF08000, -/**/ 0xB1DBC656, 0x3F508CED, -/**/ 0x00000000, 0x3FD02000, -/**/ 0x53F3A97B, 0x3FF0888B, -/**/ 0x858525D6, 0x3FC1CABF, -/**/ 0x3C37AF90, 0x3FCC534A, -/**/ 0x18AD312A, 0x3FBFB762, -/**/ 0xB151CAAD, 0x3FC3955A, -/**/ 0x07ADE82D, 0x3FC0EF16, -/**/ 0xFCDE8746, 0x3CAEEF44, -/**/ 0xAD203480, 0x3FD04CF8, -/**/ 0x00000000, 0x3FF08000, -/**/ 0xE752F5A1, 0x3F6116A7, -/**/ 0x00000000, 0x3FD06000, -/**/ 0xAB0B03F8, 0x3FF08D08, -/**/ 0x4F34EEE8, 0x3FC22019, -/**/ 0x2AFDABDE, 0x3FCC937E, -/**/ 0x5C4F35BA, 0x3FC03E9C, -/**/ 0x68DF21A6, 0x3FC3FC95, -/**/ 0x53843C52, 0x3FC17A91, -/**/ 0xC2BB835A, 0xBC9D6F54, -/**/ 0xCE0162B8, 0x3FD08F23, -/**/ 0x00000000, 0x3FF08000, -/**/ 0x1607EF23, 0x3F6A1156, -/**/ 0x00000000, 0x3FD0A000, -/**/ 0x70D9FA87, 0x3FF0919B, -/**/ 0x0A456C09, 0x3FC27636, -/**/ 0xDA483778, 0x3FCCD541, -/**/ 0x136D6630, 0x3FC0A394, -/**/ 0xBA615E9C, 0x3FC46722, -/**/ 0xA2BC6F73, 0x3FC20AA6, -/**/ 0x7F1D9D86, 0x3CA9D006, -/**/ 0x0F0C1EC8, 0x3FD0D161, -/**/ 0x00000000, 0x3FF08000, -/**/ 0xD9FA8688, 0x3F719B70, -/**/ 0x00000000, 0x3FD0E000, -/**/ 0xD6B3D5D1, 0x3FF09643, -/**/ 0x72641546, 0x3FC2CD1A, -/**/ 0x9D4AC7EC, 0x3FCD189D, -/**/ 0x149C2E66, 0x3FC10AA9, -/**/ 0xD3DE8741, 0x3FC4D51E, -/**/ 0xF6DA4768, 0x3FC29F86, -/**/ 0x828C2A81, 0x3CAEA900, -/**/ 0xC65D88C8, 0x3FD113B0, -/**/ 0x00000000, 0x3FF08000, -/**/ 0xB3D5D119, 0x3F7643D6, -/**/ 0x00000000, 0x3FD12000, -/**/ 0x0F1DF195, 0x3FF09B02, -/**/ 0x5C9E6B3F, 0x3FC324CB, -/**/ 0x0BE228B7, 0x3FCD5D9A, -/**/ 0xD29602B0, 0x3FC173EC, -/**/ 0x0FFA7799, 0x3FC546A7, -/**/ 0x87BA569F, 0x3FC33965, -/**/ 0x9956F2C3, 0xBCAE3258, -/**/ 0x4ADA6FF0, 0x3FD15613, -/**/ 0x00000000, 0x3FF08000, -/**/ 0x1DF1952F, 0x3F7B020F, -/**/ 0x00000000, 0x3FD16000, -/**/ 0x4DD62EB0, 0x3FF09FD6, -/**/ 0xB8335DE5, 0x3FC37D4D, -/**/ 0x04DFA3F1, 0x3FCDA440, -/**/ 0x55E59412, 0x3FC1DF71, -/**/ 0x0394B72E, 0x3FC5BBDA, -/**/ 0xE1177398, 0x3FC3D877, -/**/ 0x3B5720A7, 0x3CA8AC88, -/**/ 0xF43427A8, 0x3FD19888, -/**/ 0x00000000, 0x3FF08000, -/**/ 0xD62EAF85, 0x3F7FD64D, -/**/ 0x00000000, 0x3FD1A000, -/**/ 0xC7D99A5F, 0x3FF0A4C0, -/**/ 0x8F6BB942, 0x3FC3D6A6, -/**/ 0xB06CB8A9, 0x3FCDEC98, -/**/ 0x432C74B1, 0x3FC24D49, -/**/ 0x8C1C6EC6, 0x3FC634D7, -/**/ 0x01BF2560, 0x3FC47CF6, -/**/ 0x476E25C7, 0x3CA3EDE7, -/**/ 0x1AED7720, 0x3FD1DB12, -/**/ 0x00000000, 0x3FF0C000, -/**/ 0x2665A126, 0xBF7B3F38, -/**/ 0x00000000, 0x3FD1E000, -/**/ 0xB36B4C8B, 0x3FF0A9C1, -/**/ 0x0879E39B, 0x3FC430DB, -/**/ 0x82887D8B, 0x3FCE36AD, -/**/ 0xE1B33C79, 0x3FC2BD87, -/**/ 0xDEA4E95E, 0x3FC6B1C0, -/**/ 0x7C90504A, 0x3FC5271A, -/**/ 0x8A6EBD08, 0x3CAAFAD9, -/**/ 0x185FA360, 0x3FD21DAF, -/**/ 0x00000000, 0x3FF0C000, -/**/ 0x94B3751C, 0xBF763E4C, -/**/ 0x00000000, 0x3FD22000, -/**/ 0x481B7EED, 0x3FF0AED9, -/**/ 0x66613BB3, 0x3FC48BF0, -/**/ 0x3D9FDD8F, 0x3FCE8288, -/**/ 0x22470BF2, 0x3FC33041, -/**/ 0x97C5B476, 0x3FC732B8, -/**/ 0x9B614F73, 0x3FC5D722, -/**/ 0x759745C8, 0x3CA96B82, -/**/ 0x46BF95B8, 0x3FD26060, -/**/ 0x00000000, 0x3FF0C000, -/**/ 0xE48112DC, 0xBF7126B7, -/**/ 0x00000000, 0x3FD26000, -/**/ 0xBECEDF0E, 0x3FF0B407, -/**/ 0x09E5699A, 0x3FC4E7EC, -/**/ 0xF541EC2D, 0x3FCED032, -/**/ 0xA6688484, 0x3FC3A589, -/**/ 0xCC5228BD, 0x3FC7B7E2, -/**/ 0x83ECAD1F, 0x3FC68D4E, -/**/ 0x7CB79363, 0x3CA98586, -/**/ 0x01231EC8, 0x3FD2A326, -/**/ 0x00000000, 0x3FF0C000, -/**/ 0x6241E449, 0xBF67F082, -/**/ 0x00000000, 0x3FD2A000, -/**/ 0x51C61D1C, 0x3FF0B94D, -/**/ 0x7281F837, 0x3FC544D3, -/**/ 0x10F19F89, 0x3FCF1FB8, -/**/ 0xC7D08A44, 0x3FC41D76, -/**/ 0x1AF4E5E6, 0x3FC84165, -/**/ 0x5EE5D838, 0x3FC749E1, -/**/ 0xA1F9A890, 0x3C8A2A36, -/**/ 0xA3865760, 0x3FD2E600, -/**/ 0x00000000, 0x3FF0C000, -/**/ 0xE78B8E2F, 0xBF5ACAB8, -/**/ 0x00000000, 0x3FD2E000, -/**/ 0x3CA5B9C1, 0x3FF0BEAA, -/**/ 0x3F6A91D3, 0x3FC5A2AC, -/**/ 0x4F1650DB, 0x3FCF7122, -/**/ 0xA04F63E7, 0x3FC4981E, -/**/ 0xBEBC9B64, 0x3FC8CF66, -/**/ 0x81598BF7, 0x3FC80D21, -/**/ 0x8E0FD320, 0xBC984143, -/**/ 0x8AD12008, 0x3FD328F0, -/**/ 0x00000000, 0x3FF0C000, -/**/ 0xA463F3FD, 0xBF355C35, -/**/ 0x00000000, 0x3FD32000, -/**/ 0xBC7E151A, 0x3FF0C41E, -/**/ 0x30943E19, 0x3FC6017C, -/**/ 0xC80C760D, 0x3FCFC47C, -/**/ 0x120B129D, 0x3FC51598, -/**/ 0xA2A855B5, 0x3FC96210, -/**/ 0x9880230D, 0x3FC8D758, -/**/ 0xBF178596, 0xBCA4D129, -/**/ 0x14DCC050, 0x3FD36BF6, -/**/ 0x00000000, 0x3FF0C000, -/**/ 0xF854661E, 0x3F507AF1, -/**/ 0x00000000, 0x3FD36000, -/**/ 0x0FD3C135, 0x3FF0C9AB, -/**/ 0x27C80482, 0x3FC66149, -/**/ 0x78AC0DDD, 0x3FD00CE9, -/**/ 0xD02204B1, 0x3FC595FA, -/**/ 0x7642750D, 0x3FC9F98D, -/**/ 0xD82AC48A, 0x3FC9A8D3, -/**/ 0x289B3951, 0x3C977587, -/**/ 0xA079A6D8, 0x3FD3AF11, -/**/ 0x00000000, 0x3FF0C000, -/**/ 0xA7826A0D, 0x3F63561F, -/**/ 0x00000000, 0x3FD3A000, -/**/ 0x76A81A69, 0x3FF0CF4F, -/**/ 0x29BF5ACD, 0x3FC6C219, -/**/ 0x507D5DD4, 0x3FD03898, -/**/ 0x67B79439, 0x3FC6195F, -/**/ 0xC35A709F, 0x3FCA9609, -/**/ 0x2BF7455C, 0x3FCA81E4, -/**/ 0xF424551E, 0x3CA03304, -/**/ 0x8D754B40, 0x3FD3F243, -/**/ 0x00000000, 0x3FF0C000, -/**/ 0x5034D2A8, 0x3F6E9EED, -/**/ 0x00000000, 0x3FD3E000, -/**/ 0x3282280D, 0x3FF0D50C, -/**/ 0x5F4ACC23, 0x3FC723F2, -/**/ 0x08771131, 0x3FD06551, -/**/ 0x4970163E, 0x3FC69FDF, -/**/ 0x04EE9A0A, 0x3FCB37B4, -/**/ 0x6B79BC18, 0x3FCB62DE, -/**/ 0x02A2F456, 0x3CAECF25, -/**/ 0x3CA032E0, 0x3FD4358C, -/**/ 0x00000000, 0x3FF0C000, -/**/ 0x82280D28, 0x3F750C32, -/**/ 0x00000000, 0x3FD42000, -/**/ 0x8677C82D, 0x3FF0DAE1, -/**/ 0x16834ABE, 0x3FC786DB, -/**/ 0xF1631731, 0x3FD09319, -/**/ 0xD36297AF, 0x3FC72994, -/**/ 0xBF583888, 0x3FCBDEBC, -/**/ 0x918E2AE6, 0x3FCC4C1B, -/**/ 0xF34A155C, 0x3CA92F70, -/**/ 0x0FD419C8, 0x3FD478EC, -/**/ 0x00000000, 0x3FF0C000, -/**/ 0x77C82D53, 0x3F7AE186, -/**/ 0x00000000, 0x3FD46000, -/**/ 0xB73728F8, 0x3FF0E0CF, -/**/ 0xC406A36A, 0x3FC7EAD9, -/**/ 0x91BDA616, 0x3FD0C1F9, -/**/ 0x5B86C42B, 0x3FC7B69B, -/**/ 0x99CD8C9F, 0x3FCC8B56, -/**/ 0xF7084936, 0x3FCD3DF8, -/**/ 0x54942387, 0xBC923B74, -/**/ 0x69FA40E8, 0x3FD4BC63, -/**/ 0x00000000, 0x3FF10000, -/**/ 0xC8D707BB, 0xBF7F3048, -/**/ 0x00000000, 0x3FD4A000, -/**/ 0x0B1092B8, 0x3FF0E6D7, -/**/ 0x043F9011, 0x3FC84FF5, -/**/ 0xA7AFD6EB, 0x3FD0F1F6, -/**/ 0x3AA5D7B9, 0x3FC8470F, -/**/ 0x794E9CFD, 0x3FCD3DB6, -/**/ 0x90FB69FD, 0x3FCE38D8, -/**/ 0xC2327DC5, 0x3C9CFA2D, -/**/ 0xAF11E2C0, 0x3FD4FFF2, -/**/ 0x00000000, 0x3FF10000, -/**/ 0xEF6D4848, 0xBF7928F4, -/**/ 0x00000000, 0x3FD4E000, -/**/ 0xCA008550, 0x3FF0ECF7, -/**/ 0x9CB9ECA7, 0x3FC8B633, -/**/ 0x2B20AC3D, 0x3FD12318, -/**/ 0xD7D5E860, 0x3FC8DB0D, -/**/ 0x9D1315AF, 0x3FCDF613, -/**/ 0x32D8BC6F, 0x3FCF3D21, -/**/ 0x92E48EEE, 0x3C9C6A36, -/**/ 0x4436D008, 0x3FD5439A, -/**/ 0x00000000, 0x3FF10000, -/**/ 0xFF7AAF92, 0xBF730835, -/**/ 0x00000000, 0x3FD52000, -/**/ 0x3DBA2C62, 0x3FF0F332, -/**/ 0x7D83983C, 0x3FC91D9C, -/**/ 0x4FDDA02E, 0x3FD15565, -/**/ 0xB48747C7, 0x3FC972B5, -/**/ 0xBC9105F9, 0x3FCEB4A7, -/**/ 0x6A535ECF, 0x3FD0259F, -/**/ 0xF6EA55C1, 0x3C87EB36, -/**/ 0x8FA83538, 0x3FD5875A, -/**/ 0x00000000, 0x3FF10000, -/**/ 0x8BA73C6A, 0xBF699B84, -/**/ 0x00000000, 0x3FD56000, -/**/ 0xB1B22D42, 0x3FF0F986, -/**/ 0xC29A92ED, 0x3FC98636, -/**/ 0x87DBE62D, 0x3FD188E5, -/**/ 0x792C37EB, 0x3FCA0E26, -/**/ 0x2735E8CD, 0x3FCF79AF, -/**/ 0x6ECCD4C0, 0x3FD0B1D1, -/**/ 0xBEAE0510, 0x3C9502B5, -/**/ 0xF8CF8AC0, 0x3FD5CB33, -/**/ 0x00000000, 0x3FF10000, -/**/ 0x374AF74C, 0xBF59E539, -/**/ 0x00000000, 0x3FD5A000, -/**/ 0x7329D23A, 0x3FF0FFF5, -/**/ 0xB568F082, 0x3FC9F009, -/**/ 0x85939DB2, 0x3FD1BDA0, -/**/ 0x0283B18A, 0x3FCAAD81, -/**/ 0x72F69148, 0x3FD022B4, -/**/ 0x39AD0B79, 0x3FD14362, -/**/ 0x80828B86, 0xBCAD7968, -/**/ 0xE847B130, 0x3FD60F26, -/**/ 0x00000000, 0x3FF10000, -/**/ 0x5B8BC081, 0xBEE519AC, -/**/ 0x00000000, 0x3FD5E000, -/**/ 0xD13A9687, 0x3FF1067E, -/**/ 0xCE4F3F61, 0x3FCA5B1C, -/**/ 0x3E764545, 0x3FD1F39E, -/**/ 0x6F90871B, 0x3FCB50E7, -/**/ 0x6F487F97, 0x3FD08C0B, -/**/ 0x67265C20, 0x3FD1DA90, -/**/ 0x995723AD, 0x3CAE5B02, -/**/ 0xC7E43AA0, 0x3FD65333, -/**/ 0x00000000, 0x3FF10000, -/**/ 0xEA5A1D64, 0x3F59FB44, -/**/ 0x00000000, 0x3FD62000, -/**/ 0x1CE216D9, 0x3FF10D23, -/**/ 0xB63E0B53, 0x3FCAC777, -/**/ 0xED81D055, 0x3FD22AE6, -/**/ 0x3046C5AC, 0x3FCBF87D, -/**/ 0xFCB29FE4, 0x3FD0F8FE, -/**/ 0xC99A404E, 0x3FD2779D, -/**/ 0xC3202AE8, 0xBCA2AF1E, -/**/ 0x02B8E378, 0x3FD6975B, -/**/ 0x00000000, 0x3FF10000, -/**/ 0xC42DB2AB, 0x3F6A4639, -/**/ 0x00000000, 0x3FD66000, -/**/ 0xA90E6A24, 0x3FF113E2, -/**/ 0x485F2C6B, 0x3FCB3522, -/**/ 0x15F1D6CC, 0x3FD26383, -/**/ 0x14F9D555, 0x3FCCA467, -/**/ 0x245E397E, 0x3FD169B3, -/**/ 0x99479CF7, 0x3FD31ACF, -/**/ 0x8992C228, 0xBC730D3F, -/**/ 0x05213B28, 0x3FD6DB9D, -/**/ 0x00000000, 0x3FF10000, -/**/ 0x0E6A2469, 0x3F73E2A9, -/**/ 0x00000000, 0x3FD6A000, -/**/ 0xCAAAE6D5, 0x3FF11ABD, -/**/ 0x93CF9B23, 0x3FCBA424, -/**/ 0x86106AD4, 0x3FD29D7B, -/**/ 0x5E96870B, 0x3FCD54CB, -/**/ 0x9975D46D, 0x3FD1DE4D, -/**/ 0xA709F8A4, 0x3FD3C46E, -/**/ 0x457B6F5C, 0xBC9CB630, -/**/ 0x3CC87FC8, 0x3FD71FFA, -/**/ 0x00000000, 0x3FF10000, -/**/ 0xAAE6D53D, 0x3F7ABDCA, -/**/ 0x00000000, 0x3FD6E000, -/**/ 0xD8AD589E, 0x3FF121B4, -/**/ 0xDD6A8C89, 0x3FCC1486, -/**/ 0x5A283891, 0x3FD2D8D9, -/**/ 0xCFB4F5A1, 0x3FCE09D1, -/**/ 0xCF594BB6, 0x3FD256F5, -/**/ 0x92614C29, 0x3FD474C7, -/**/ 0x533051E9, 0xBC88FB31, -/**/ 0x18B1AD28, 0x3FD76473, -/**/ 0x00000000, 0x3FF14000, -/**/ 0x52A761D6, 0xBF7E4B27, -/**/ 0x00000000, 0x3FD72000, -/**/ 0x2C23AB4A, 0x3FF128C8, -/**/ 0xA1A6A356, 0x3FCC8651, -/**/ 0xFF99ABE3, 0x3FD315A5, -/**/ 0xBE8EE4C2, 0x3FCEC3A3, -/**/ 0x11207D5D, 0x3FD2D3D5, -/**/ 0x02FE6DF8, 0x3FD52C2B, -/**/ 0xFE4D8DF3, 0xBCA3F304, -/**/ 0x093FC1F0, 0x3FD7A908, -/**/ 0x00000000, 0x3FF14000, -/**/ 0xDC54B622, 0xBF7737D3, -/**/ 0x00000000, 0x3FD76000, -/**/ 0x20420F33, 0x3FF12FF8, -/**/ 0x96860D89, 0x3FCCF98D, -/**/ 0x3814F292, 0x3FD353EB, -/**/ 0x27E81BF7, 0x3FCF826C, -/**/ 0x9A827352, 0x3FD35516, -/**/ 0xE614C6DF, 0x3FD5EAED, -/**/ 0x36C1700C, 0x3C80AEDB, -/**/ 0x803E3C28, 0x3FD7EDB9, -/**/ 0x00000000, 0x3FF14000, -/**/ 0xBDF0CCC6, 0xBF7007DF, -/**/ 0x00000000, 0x3FD7A000, -/**/ 0x12719C3A, 0x3FF13745, -/**/ 0xAD9A717F, 0x3FCD6E43, -/**/ 0x1CFACD12, 0x3FD393B3, -/**/ 0xE17B8F05, 0x3FD0232B, -/**/ 0xB23873BC, 0x3FD3DAE7, -/**/ 0xAFB712E5, 0x3FD6B169, -/**/ 0x0BC74599, 0x3C994C0C, -/**/ 0xF0E9CF80, 0x3FD83287, -/**/ 0x00000000, 0x3FF14000, -/**/ 0x1CC78CA5, 0xBF6175DB, -/**/ 0x00000000, 0x3FD7E000, -/**/ 0x625F7844, 0x3FF13EAF, -/**/ 0x161D9978, 0x3FCDE47D, -/**/ 0x22E63DCA, 0x3FD3D508, -/**/ 0x8B2EC7EB, 0x3FD087CA, -/**/ 0xC5F619C8, 0x3FD46577, -/**/ 0xA08A73DE, 0x3FD77FFC, -/**/ 0x6E7B547F, 0x3CA1DBDE, -/**/ 0xCFF956F8, 0x3FD87773, -/**/ 0x00000000, 0x3FF14000, -/**/ 0x087BC752, 0xBF3509DA, -/**/ 0x00000000, 0x3FD82000, -/**/ 0x720C869D, 0x3FF14637, -/**/ 0x3F1FD940, 0x3FCE5C43, -/**/ 0x1D614654, 0x3FD417F5, -/**/ 0x472052ED, 0x3FD0EF2A, -/**/ 0x88116DA6, 0x3FD4F4F8, -/**/ 0x102117B6, 0x3FD8570A, -/**/ 0x214A7328, 0xBCAB6E89, -/**/ 0x93A70458, 0x3FD8BC7D, -/**/ 0x00000000, 0x3FF14000, -/**/ 0x321A7479, 0x3F58DDC8, -/**/ 0x00000000, 0x3FD86000, -/**/ 0xA5DDA5C4, 0x3FF14DDD, -/**/ 0xD9CD3739, 0x3FCED59F, -/**/ 0x42C70412, 0x3FD45C85, -/**/ 0x49C983A8, 0x3FD15964, -/**/ 0x0EF7ED0B, 0x3FD5899E, -/**/ 0xBC543499, 0x3FD936FA, -/**/ 0x7B29F22E, 0x3CAFF50D, -/**/ 0xB3B9CF50, 0x3FD901A5, -/**/ 0x00000000, 0x3FF14000, -/**/ 0xBB4B87E0, 0x3F6BBB4B, -/**/ 0x00000000, 0x3FD8A000, -/**/ 0x64AC8172, 0x3FF155A2, -/**/ 0xDBCA7047, 0x3FCF509C, -/**/ 0x3055A16F, 0x3FD4A2C4, -/**/ 0xD25160C7, 0x3FD1C692, -/**/ 0xF68F9906, 0x3FD6239E, -/**/ 0x1DFC2EE2, 0x3FDA203D, -/**/ 0x671EF39F, 0x3CAD2019, -/**/ 0xA98F2718, 0x3FD946EC, -/**/ 0x00000000, 0x3FF14000, -/**/ 0xAC8171A9, 0x3F75A264, -/**/ 0x00000000, 0x3FD8E000, -/**/ 0x17D8FF02, 0x3FF15D86, -/**/ 0x81AAFD5E, 0x3FCFCD44, -/**/ 0xEE72B776, 0x3FD4EABD, -/**/ 0x377F943F, 0x3FD236D1, -/**/ 0x83A56DB7, 0x3FD6C334, -/**/ 0xC36D6C50, 0x3FDB1345, -/**/ 0x761537BB, 0xBC7841E5, -/**/ 0xF024E808, 0x3FD98C52, -/**/ 0x00000000, 0x3FF14000, -/**/ 0xD8FF01DE, 0x3F7D8617, -/**/ 0x00000000, 0x3FD92000, -/**/ 0x2B5B4A9A, 0x3FF16589, -/**/ 0xA8C0A8C6, 0x3FD025D0, -/**/ 0xF524E4B6, 0x3FD5347E, -/**/ 0xF565EDBD, 0x3FD2AA3B, -/**/ 0xC98D2842, 0x3FD7689A, -/**/ 0xB128B4DD, 0x3FDC108F, -/**/ 0x4452A669, 0xBC8A5EEB, -/**/ 0x04239878, 0x3FD9D1D9, -/**/ 0x00000000, 0x3FF18000, -/**/ 0xA4B56661, 0xBF7A76D4, -/**/ 0x00000000, 0x3FD96000, -/**/ 0x0DD68BC8, 0x3FF16DAC, -/**/ 0x0EC54C3A, 0x3FD065DF, -/**/ 0x30C58A12, 0x3FD58014, -/**/ 0xBBCBCCEF, 0x3FD320F0, -/**/ 0xD218F380, 0x3FD81410, -/**/ 0xC9371D29, 0x3FDD189C, -/**/ 0x1D6E6EC7, 0x3C58C3C1, -/**/ 0x63E8EF18, 0x3FDA177F, -/**/ 0x00000000, 0x3FF18000, -/**/ 0x29743866, 0xBF7253F2, -/**/ 0x00000000, 0x3FD9A000, -/**/ 0x30AC48A8, 0x3FF175EF, -/**/ 0x037BA7C0, 0x3FD0A6D3, -/**/ 0x06EDCD18, 0x3FD5CD8B, -/**/ 0x7D679188, 0x3FD39B0E, -/**/ 0xC8128143, 0x3FD8C5D8, -/**/ 0x39B3613A, 0x3FDE2BF6, -/**/ 0xC70C9C76, 0xBC874080, -/**/ 0x8F92A560, 0x3FDA5D46, -/**/ 0x00000000, 0x3FF18000, -/**/ 0xA76EB06E, 0xBF64219E, -/**/ 0x00000000, 0x3FD9E000, -/**/ 0x08107EEF, 0x3FF17E53, -/**/ 0x40691386, 0x3FD0E8B2, -/**/ 0x5BA2319A, 0x3FD61CF1, -/**/ 0x7FF30656, 0x3FD418B5, -/**/ 0x24624146, 0x3FD97E38, -/**/ 0xF30D6589, 0x3FDF4B2C, -/**/ 0x74DD0C9B, 0xBC8D4AD9, -/**/ 0x090998F8, 0x3FDAA32F, -/**/ 0x00000000, 0x3FF18000, -/**/ 0xF81116BC, 0xBF3ACF7E, -/**/ 0x00000000, 0x3FDA2000, -/**/ 0x0B1E7A9D, 0x3FF186D8, -/**/ 0xA98356F0, 0x3FD12B82, -/**/ 0x96C051D8, 0x3FD66E55, -/**/ 0x6D28A49D, 0x3FD49A07, -/**/ 0xDE14D616, 0x3FDA3D77, -/**/ 0x13502F53, 0x3FE03B6D, -/**/ 0x4AD59707, 0x3CA51700, -/**/ 0x540D3F08, 0x3FDAE939, -/**/ 0x00000000, 0x3FF18000, -/**/ 0x79EA752F, 0x3F5B602C, -/**/ 0x00000000, 0x3FDA6000, -/**/ 0xB3EE7285, 0x3FF18F7E, -/**/ 0x4EC4AF40, 0x3FD16F4A, -/**/ 0xA9B275FD, 0x3FD6C1C6, -/**/ 0x64B886B9, 0x3FD51F27, -/**/ 0x9D72A144, 0x3FDB03E4, -/**/ 0xE7207DD5, 0x3FE0D7CF, -/**/ 0x8E77D1B2, 0xBCAACE1E, -/**/ 0xF63F6C78, 0x3FDB2F65, -/**/ 0x00000000, 0x3FF18000, -/**/ 0xDCE509F5, 0x3F6EFD67, -/**/ 0x00000000, 0x3FDAA000, -/**/ 0x7FABF325, 0x3FF19847, -/**/ 0x6DD15EDB, 0x3FD1B40F, -/**/ 0x156D090D, 0x3FD71754, -/**/ 0x0F44EE42, 0x3FD5A83A, -/**/ 0xF26149CC, 0x3FDBD1CE, -/**/ 0x9EBB7D53, 0x3FE17B14, -/**/ 0x054C177A, 0x3CA18867, -/**/ 0x773075F8, 0x3FDB75B5, -/**/ 0x00000000, 0x3FF18000, -/**/ 0xABF3257B, 0x3F78477F, -/**/ 0x00000000, 0x3FDAE000, -/**/ 0xEEAD20E6, 0x3FF1A132, -/**/ 0x73AFA8F4, 0x3FD1F9D8, -/**/ 0xF0BA2B44, 0x3FD76F0D, -/**/ 0xB2776412, 0x3FD63565, -/**/ 0x8E4B8181, 0x3FDCA78B, -/**/ 0xDE92725A, 0x3FE22595, -/**/ 0x225EE470, 0xBCABDA45, -/**/ 0x606BABE0, 0x3FDBBC28, -/**/ 0x00000000, 0x3FF1C000, -/**/ 0x52DF1A7E, 0xBF7ECD11, -/**/ 0x00000000, 0x3FDB2000, -/**/ 0x848ADB16, 0x3FF1AA41, -/**/ 0xFE932ABB, 0x3FD240AB, -/**/ 0xEED7E85D, 0x3FD7C904, -/**/ 0x4640B1B3, 0x3FD6C6D2, -/**/ 0x81D01020, 0x3FDD8573, -/**/ 0x9938B939, 0x3FE2D7B3, -/**/ 0x36D76E02, 0x3CA12ECB, -/**/ 0x3D843430, 0x3FDC02BF, -/**/ 0x00000000, 0x3FF1C000, -/**/ 0x7524EA70, 0xBF75BE7B, -/**/ 0x00000000, 0x3FDB6000, -/**/ 0xC839C9AC, 0x3FF1B373, -/**/ 0xDFBC912D, 0x3FD28890, -/**/ 0x666DE3CA, 0x3FD8254A, -/**/ 0x8B57457C, 0x3FD75CA9, -/**/ 0x7E7E55FE, 0x3FDE6BE4, -/**/ 0x68EC3777, 0x3FE391D3, -/**/ 0x4D8A80A5, 0xBC9F7EFE, -/**/ 0x9C2247A0, 0x3FDC497A, -/**/ 0x00000000, 0x3FF1C000, -/**/ 0x8C6CA8A7, 0xBF69186F, -/**/ 0x00000000, 0x3FDBA000, -/**/ 0x44246029, 0x3FF1BCCA, -/**/ 0x1D6EB966, 0x3FD2D18E, -/**/ 0x58DF9E20, 0x3FD883F0, -/**/ 0x2308FF84, 0x3FD7F717, -/**/ 0x1CEC1692, 0x3FDF5B41, -/**/ 0xEFAE7F7E, 0x3FE45460, -/**/ 0xC247C281, 0xBCACA88A, -/**/ 0x0C10D428, 0x3FDC905B, -/**/ 0x00000000, 0x3FF1C000, -/**/ 0xDCFEB6F6, 0xBF49ADDE, -/**/ 0x00000000, 0x3FDBE000, -/**/ 0x8645E0A6, 0x3FF1C645, -/**/ 0xF4FA598C, 0x3FD31BAA, -/**/ 0x7A00CDBD, 0x3FD8E509, -/**/ 0xA876EFA4, 0x3FD89648, -/**/ 0x93BB3BA0, 0x3FE029F8, -/**/ 0x3E769492, 0x3FE51FCE, -/**/ 0xDAC78BA6, 0xBC63BD0A, -/**/ 0x1F4B8A08, 0x3FDCD761, -/**/ 0x00000000, 0x3FF1C000, -/**/ 0x178298DB, 0x3F591619, -/**/ 0x00000000, 0x3FDC2000, -/**/ 0x20466A93, 0x3FF1CFE6, -/**/ 0xDCE16113, 0x3FD366EE, -/**/ 0x3831A262, 0x3FD948A9, -/**/ 0xCB5336B7, 0x3FD93A6D, -/**/ 0xF50362A5, 0x3FE0AB30, -/**/ 0x440F45E4, 0x3FE5F494, -/**/ 0x79A811B8, 0xBCA1B23F, -/**/ 0x6A0D56C8, 0x3FDD1E8D, -/**/ 0x00000000, 0x3FF1C000, -/**/ 0x8CD52690, 0x3F6FCC40, -/**/ 0x00000000, 0x3FDC6000, -/**/ 0xA798215A, 0x3FF1D9AC, -/**/ 0x87135170, 0x3FD3B361, -/**/ 0xC4E92F90, 0x3FD9AEE3, -/**/ 0x6C3B0A06, 0x3FD9E3B8, -/**/ 0x439D6983, 0x3FE13183, -/**/ 0x444347EE, 0x3FE6D333, -/**/ 0x141D7ADE, 0x3C9E6687, -/**/ 0x82DF5278, 0x3FDD65E0, -/**/ 0x00000000, 0x3FF1C000, -/**/ 0x98215A4D, 0x3F79ACA7, -/**/ 0x00000000, 0x3FDCA000, -/**/ 0xB59577B1, 0x3FF1E399, -/**/ 0xE343E389, 0x3FD4010A, -/**/ 0x1DB4A57B, 0x3FDA17CE, -/**/ 0xBAC8CA27, 0x3FDA925C, -/**/ 0x29AC5009, 0x3FE1BD2C, -/**/ 0x5806ABBE, 0x3FE7BC33, -/**/ 0xD953CBEA, 0x3C89743A, -/**/ 0x02A82420, 0x3FDDAD5B, -/**/ 0x00000000, 0x3FF20000, -/**/ 0x6A884EAF, 0xBF7C664A, -/**/ 0x00000000, 0x3FDCE000, -/**/ 0xE7A0AD1E, 0x3FF1EDAD, -/**/ 0x215D62D8, 0x3FD44FF3, -/**/ 0x15B2742E, 0x3FDA837E, -/**/ 0x557C3A62, 0x3FDB4691, -/**/ 0x9ABECCA0, 0x3FE24E6B, -/**/ 0xF75D3619, 0x3FE8B024, -/**/ 0x953C1F21, 0xBC60A42B, -/**/ 0x84BBE168, 0x3FDDF4FD, -/**/ 0x00000000, 0x3FF20000, -/**/ 0x5F52E269, 0xBF725218, -/**/ 0x00000000, 0x3FDD2000, -/**/ 0xDF448BE1, 0x3FF1F7E9, -/**/ 0xB4103D45, 0x3FD4A022, -/**/ 0x5F90F152, 0x3FDAF20A, -/**/ 0x6B992E26, 0x3FDC008F, -/**/ 0x07C18F30, 0x3FE2E585, -/**/ 0x8DCE89C2, 0x3FE9AFA1, -/**/ 0xE5B4E0DD, 0xBC8B90A5, -/**/ 0xA6EC6EF0, 0x3FDE3CC8, -/**/ 0x00000000, 0x3FF20000, -/**/ 0x76E83DEE, 0xBF602C41, -/**/ 0x00000000, 0x3FDD6000, -/**/ 0x42567651, 0x3FF2024E, -/**/ 0x53815E48, 0x3FD4F1A2, -/**/ 0x98189F26, 0x3FDB638A, -/**/ 0xE11F7BB9, 0x3FDCC092, -/**/ 0x968E1C3C, 0x3FE382BF, -/**/ 0x1A4C4551, 0x3FEABB4C, -/**/ 0xC65EE1E9, 0xBCAC384D, -/**/ 0x099A6620, 0x3FDE84BD, -/**/ 0x00000000, 0x3FF20000, -/**/ 0xB3B2877E, 0x3F427212, -/**/ 0x00000000, 0x3FDDA000, -/**/ 0xBB19D366, 0x3FF20CDB, -/**/ 0x00190520, 0x3FD5447B, -/**/ 0x514AC3D7, 0x3FDBD817, -/**/ 0x7501B24E, 0x3FDD86DA, -/**/ 0x5D5DCC91, 0x3FE42666, -/**/ 0xDB834BBA, 0x3FEBD3D1, -/**/ 0x64307FE4, 0xBCA62892, -/**/ 0x4FC685E0, 0x3FDECCDB, -/**/ 0x00000000, 0x3FF20000, -/**/ 0x33A6CD00, 0x3F69B776, -/**/ 0x00000000, 0x3FDDE000, -/**/ 0xF864EB38, 0x3FF21792, -/**/ 0x0573E0CA, 0x3FD598B6, -/**/ 0x1E1D9C05, 0x3FDC4FCA, -/**/ 0xE9C2FB44, 0x3FDE53A7, -/**/ 0xA26E99AF, 0x3FE4D0C8, -/**/ 0x09A8A359, 0x3FECF9EB, -/**/ 0xD9AFA9E0, 0xBCADF861, -/**/ 0x1F23B3F8, 0x3FDF1524, -/**/ 0x00000000, 0x3FF20000, -/**/ 0x64EB3836, 0x3F7792F8, -/**/ 0x00000000, 0x3FDE2000, -/**/ 0xADC744F8, 0x3FF22274, -/**/ 0xFD785957, 0x3FD5EE5C, -/**/ 0x9EE01B3A, 0x3FDCCABD, -/**/ 0x30A7B7B5, 0x3FDF2740, -/**/ 0x202E0D0D, 0x3FE5823A, -/**/ 0x9EEBE829, 0x3FEE2E5B, -/**/ 0xE2EA9787, 0xBC93BB42, -/**/ 0x202994B8, 0x3FDF5D98, -/**/ 0x00000000, 0x3FF24000, -/**/ 0x38BB0864, 0xBF7D8B52, -/**/ 0x00000000, 0x3FDE6000, -/**/ 0x93B1990A, 0x3FF22D81, -/**/ 0xD3920D0F, 0x3FD64579, -/**/ 0x8E4FE1FE, 0x3FDD490D, -/**/ 0xCBD3ED59, 0x3FE000F5, -/**/ 0x4E45F774, 0x3FE63B13, -/**/ 0x2FD578CE, 0x3FEF71F4, -/**/ 0xC0E1AC47, 0x3CA8AD1C, -/**/ 0xFE27BF60, 0x3FDFA637, -/**/ 0x00000000, 0x3FF24000, -/**/ 0x4E66F5A1, 0xBF727E6C, -/**/ 0x00000000, 0x3FDEA000, -/**/ 0x679F6AE1, 0x3FF238BA, -/**/ 0xC815A8F5, 0x3FD69E16, -/**/ 0xCF6CD4C9, 0x3FDDCAD6, -/**/ 0xFD2ADE38, 0x3FE071FA, -/**/ 0xAFEE9630, 0x3FE6FBB1, -/**/ 0x6A7ACB82, 0x3FF062C9, -/**/ 0x35D3555B, 0x3C7E3580, -/**/ 0x67599588, 0x3FDFEF04, -/**/ 0x00000000, 0x3FF24000, -/**/ 0x82547B6F, 0xBF5D1661, -/**/ 0x00000000, 0x3FDEE000, -/**/ 0xEC425F4B, 0x3FF2441F, -/**/ 0x73CF67B4, 0x3FD6F83E, -/**/ 0x7C1691BA, 0x3FDE5037, -/**/ 0x7AF8190E, 0x3FE0E6D7, -/**/ 0x27F29078, 0x3FE7C478, -/**/ 0x13B5FFDC, 0x3FF11512, -/**/ 0x5FEBA301, 0x3C6CC7A1, -/**/ 0x067D6224, 0x3FE01BFF, -/**/ 0x00000000, 0x3FF24000, -/**/ 0x097D2BDC, 0x3F507FB1, -/**/ 0x00000000, 0x3FDF2000, -/**/ 0xE9AF6533, 0x3FF24FB2, -/**/ 0xCBBEA804, 0x3FD753FB, -/**/ 0xF480E731, 0x3FDED94E, -/**/ 0x106D90C6, 0x3FE15FB5, -/**/ 0x52DAD430, 0x3FE895CF, -/**/ 0x28FAAE13, 0x3FF1D052, -/**/ 0xE849F35A, 0xBCA50976, -/**/ 0xD1AE3B48, 0x3FE04092, -/**/ 0x00000000, 0x3FF24000, -/**/ 0x5ECA665D, 0x3F6F65D3, -/**/ 0x00000000, 0x3FDF6000, -/**/ 0x2D8DC7FA, 0x3FF25B74, -/**/ 0x25013475, 0x3FD7B15A, -/**/ 0xEF8D6387, 0x3FDF663D, -/**/ 0xA2DF4BFF, 0x3FE1DCBF, -/**/ 0xE7C2E4E5, 0x3FE97025, -/**/ 0x1C2AE4AB, 0x3FF29510, -/**/ 0xB02A3D13, 0x3CA4C8DC, -/**/ 0xF0FD9FD8, 0x3FE0653D, -/**/ 0x00000000, 0x3FF24000, -/**/ 0x8DC7FA40, 0x3F7B742D, -/**/ 0x00000000, 0x3FDFA000, -/**/ 0x8B4843F2, 0x3FF26764, -/**/ 0x38F10257, 0x3FD81065, -/**/ 0x8C1920B1, 0x3FDFF726, -/**/ 0x5148D4E4, 0x3FE25E25, -/**/ 0x2061C3FE, 0x3FEA53F1, -/**/ 0x5B9300E5, 0x3FF363DB, -/**/ 0x624B8B97, 0xBCA47774, -/**/ 0xC1CAE338, 0x3FE08A00, -/**/ 0x00000000, 0x3FF28000, -/**/ 0xB7BC0E50, 0xBF789B74, -/**/ 0x00000000, 0x3FDFE000, -/**/ 0xDC4036F2, 0x3FF27384, -/**/ 0x29775C8F, 0x3FD87129, -/**/ 0x31A78776, 0x3FE04616, -/**/ 0x95EE0C65, 0x3FE2E416, -/**/ 0x28E05161, 0x3FEB41AD, -/**/ 0xFF1DF849, 0x3FF43D4C, -/**/ 0xBABBA919, 0x3CA5941C, -/**/ 0xA3221C1C, 0x3FE0AEDB, -/**/ 0x00000000, 0x3FF28000, -/**/ 0x7F921C27, 0xBF68F647, -/**/ 0x00000000, 0x3FE01000, -/**/ 0x00030888, 0x3FF27FD6, -/**/ 0x8598A1B5, 0x3FD8D3B2, -/**/ 0x4E0BC755, 0x3FE092BA, -/**/ 0x6A428EEC, 0x3FE36EC6, -/**/ 0x44F514C9, 0x3FEC39C0, -/**/ 0x18C4EF3A, 0x3FF52205, -/**/ 0xA852F235, 0x4000C1D1, -/**/ 0xD00F64B8, 0x3CA78082, -/**/ 0xF5C846F8, 0x3FE0D3CE, -/**/ 0x00000000, 0x3FF28000, -/**/ 0x7BBC39DF, 0xBF04FFFE, -/**/ 0x00000000, 0x3FE03000, -/**/ 0xDC81E6D7, 0x3FF28C58, -/**/ 0x4E3BF356, 0x3FD9380E, -/**/ 0xFFC646A7, 0x3FE0E192, -/**/ 0x6D34756D, 0x3FE3FE6A, -/**/ 0x139ABC91, 0x3FED3CEF, -/**/ 0xF80111C0, 0x3FF612B8, -/**/ 0x3467C688, 0x4001A33C, -/**/ 0x34F59445, 0xBC8A9954, -/**/ 0x1C47D550, 0x3FE0F8DB, -/**/ 0x00000000, 0x3FF28000, -/**/ 0x03CDAE3F, 0x3F68B1B9, -/**/ 0x00000000, 0x3FE05000, -/**/ 0x5E4BF713, 0x3FF2990E, -/**/ 0xFB326E9E, 0x3FD99E49, -/**/ 0x8779391A, 0x3FE132B4, -/**/ 0x0C2FE325, 0x3FE4933B, -/**/ 0xAEAAE1D0, 0x3FEE4BB1, -/**/ 0x1F4377BD, 0x3FF71020, -/**/ 0x1C886605, 0x40029271, -/**/ 0x7130CE99, 0xBCA33AB1, -/**/ 0x7AFDAF10, 0x3FE11E00, -/**/ 0x00000000, 0x3FF28000, -/**/ 0x4BF712C7, 0x3F790E5E, -/**/ 0x00000000, 0x3FE07000, -/**/ 0x78CB1A3B, 0x3FF2A5F7, -/**/ 0x8081C5D1, 0x3FDA0673, -/**/ 0x0D5E6499, 0x3FE18634, -/**/ 0xAEDD6BE6, 0x3FE52D73, -/**/ 0x1CF1AAA0, 0x3FEF66A5, -/**/ 0x4834E5A9, 0x3FF81B02, -/**/ 0xFCE48906, 0x40039066, -/**/ 0x6BFB4C85, 0xBCA34E4F, -/**/ 0x7826AAD4, 0x3FE1433F, -/**/ 0x00000000, 0x3FF2C000, -/**/ 0x34E5C574, 0xBF7A0887, -/**/ 0x00000000, 0x3FE09000, -/**/ 0x268368DB, 0x3FF2B315, -/**/ 0x53F655B7, 0x3FDA7099, -/**/ 0xAD9032EC, 0x3FE1DC27, -/**/ 0xE5F88E23, 0x3FE5CD52, -/**/ 0x0A68BDFC, 0x3FF04738, -/**/ 0x2F057820, 0x3FF93435, -/**/ 0xDAE8A2FC, 0x40049E27, -/**/ 0xFAA44565, 0x3C86832C, -/**/ 0x7BED8260, 0x3FE16898, -/**/ 0x00000000, 0x3FF2C000, -/**/ 0xF92E4A41, 0xBF69D5B2, -/**/ 0x00000000, 0x3FE0B000, -/**/ 0x69558A9E, 0x3FF2C068, -/**/ 0x73011B64, 0x3FDADCCA, -/**/ 0x8511146A, 0x3FE234A6, -/**/ 0x9D6CBF3C, 0x3FE6731A, -/**/ 0xD575F00A, 0x3FF0E1E1, -/**/ 0xADEA17E7, 0x3FFA5C9D, -/**/ 0xD9123E7C, 0x4005BCD2, -/**/ 0xCC2AE1E4, 0xBCA23E4F, -/**/ 0xF07948F0, 0x3FE18E0B, -/**/ 0x00000000, 0x3FF2C000, -/**/ 0x62A7614A, 0x3F1A1A55, -/**/ 0x00000000, 0x3FE0D000, -/**/ 0x4AC410C6, 0x3FF2CDF2, -/**/ 0x68E63D97, 0x3FDB4B16, -/**/ 0xBFA256B2, 0x3FE28FC8, -/**/ 0x51FDF05A, 0x3FE71F10, -/**/ 0x0753C882, 0x3FF183AE, -/**/ 0xF1921090, 0x3FFB9530, -/**/ 0x14F942BC, 0x4006ED9E, -/**/ 0x89C77FA3, 0x3CA27879, -/**/ 0x41FC691C, 0x3FE1B39A, -/**/ 0x00000000, 0x3FF2C000, -/**/ 0x88218CD6, 0x3F6BE495, -/**/ 0x00000000, 0x3FE0F000, -/**/ 0xDC3BFD25, 0x3FF2DBB3, -/**/ 0x55413207, 0x3FDBBB8D, -/**/ 0xA6792BF1, 0x3FE2EDA7, -/**/ 0x4AC4E230, 0x3FE7D17D, -/**/ 0xAAE6CB05, 0x3FF22D00, -/**/ 0xC9028E71, 0x3FFCDEF5, -/**/ 0xB40C626C, 0x400831D8, -/**/ 0x9873F484, 0x3C953FEF, -/**/ 0xDEC430C0, 0x3FE1D943, -/**/ 0x00000000, 0x3FF2C000, -/**/ 0x3BFD24A1, 0x3F7BB3DC, -/**/ 0x00000000, 0x3FE11000, -/**/ 0x3760A19B, 0x3FF2E9AE, -/**/ 0xF2E3E2EB, 0x3FDC2E3F, -/**/ 0xAFE1CD38, 0x3FE34E5D, -/**/ 0xD6CE0B26, 0x3FE88AAE, -/**/ 0x2C4B06C6, 0x3FF2DE44, -/**/ 0x138813D2, 0x3FFE3B06, -/**/ 0x23FD5612, 0x40098AED, -/**/ 0xB7AF0E54, 0xBC91EC19, -/**/ 0x3748F114, 0x3FE1FF09, -/**/ 0x00000000, 0x3FF30000, -/**/ 0x9F5E657E, 0xBF7651C8, -/**/ 0x00000000, 0x3FE13000, -/**/ 0x7E5B072B, 0x3FF2F7E2, -/**/ 0x9F169C4D, 0x3FDCA33F, -/**/ 0x8FE1EB56, 0x3FE3B206, -/**/ 0x8F30E1B7, 0x3FE94AF6, -/**/ 0xCFCF9887, 0x3FF397E9, -/**/ 0x4FB7F25F, 0x3FFFAA90, -/**/ 0x94745D90, 0x400AFA63, -/**/ 0x2A139390, 0x3C96955C, -/**/ 0xBE3EBA20, 0x3FE224EA, -/**/ 0x00000000, 0x3FF30000, -/**/ 0x49F1AA85, 0xBF603B03, -/**/ 0x00000000, 0x3FE15000, -/**/ 0xDC2D0E76, 0x3FF30651, -/**/ 0x613EF408, 0x3FDD1A9E, -/**/ 0x49ED083D, 0x3FE418BF, -/**/ 0x9DFD1E23, 0x3FEA12AA, -/**/ 0x32B75F76, 0x3FF45A6A, -/**/ 0xA7673F47, 0x4000976C, -/**/ 0xB046AC6A, 0x400C81E4, -/**/ 0x7D1BEB80, 0x3C879FF7, -/**/ 0xE8A6B8B0, 0x3FE24AE8, -/**/ 0x00000000, 0x3FF30000, -/**/ 0xB439D90E, 0x3F594770, -/**/ 0x00000000, 0x3FE17000, -/**/ 0x85087ECD, 0x3FF314FD, -/**/ 0xF2F45390, 0x3FDD946E, -/**/ 0x43BEDA05, 0x3FE482A6, -/**/ 0x0A640DD7, 0x3FEAE226, -/**/ 0xD6A3D695, 0x3FF52645, -/**/ 0x08098FE0, 0x4001649F, -/**/ 0x9D2BADE7, 0x400E233C, -/**/ 0x4E5F8348, 0x3C9E948C, -/**/ 0x2DE13E58, 0x3FE27104, -/**/ 0x00000000, 0x3FF30000, -/**/ 0x087ECD1A, 0x3F74FD85, -/**/ 0x00000000, 0x3FE19000, -/**/ 0xB6AA3C67, 0x3FF323E6, -/**/ 0xC8894828, 0x3FDE10C4, -/**/ 0x59718389, 0x3FE4EFDB, -/**/ 0x0A8D7622, 0x3FEBB9C9, -/**/ 0xB8A62B12, 0x3FF5FC05, -/**/ 0xE4296831, 0x40023D9A, -/**/ 0x49C0B830, 0x400FE05E, -/**/ 0xC1189DE8, 0x3CA19107, -/**/ 0x07C07BCC, 0x3FE2973D, -/**/ 0x00000000, 0x3FF34000, -/**/ 0x55C3993D, 0xBF7C1949, -/**/ 0x00000000, 0x3FE1B000, -/**/ 0xB8B9E20B, 0x3FF3330E, -/**/ 0x1A11468B, 0x3FDE8FB4, -/**/ 0xF2E740E1, 0x3FE5607F, -/**/ 0x5B91DB14, 0x3FEC99F9, -/**/ 0xF50C5FAA, 0x3FF6DC3B, -/**/ 0x0CFAC1C7, 0x4003232A, -/**/ 0x894EFD30, 0x4010DDB3, -/**/ 0x3783D916, 0xBCA7760F, -/**/ 0xF29BF5F0, 0x3FE2BD93, -/**/ 0x00000000, 0x3FF34000, -/**/ 0x8C3BEA7F, 0xBF69E28E, -/**/ 0x00000000, 0x3FE1D000, -/**/ 0xDD2DFE6D, 0x3FF34276, -/**/ 0xECEB226B, 0x3FDF1151, -/**/ 0x1AA123CE, 0x3FE5D4B7, -/**/ 0xA01F65F8, 0x3FED8322, -/**/ 0x791CE583, 0x3FF7C784, -/**/ 0xC15A6B9C, 0x40041625, -/**/ 0x64280FEB, 0x4011DB51, -/**/ 0x28CA6DBB, 0x3CA10463, -/**/ 0x6D64BEAC, 0x3FE2E409, -/**/ 0x00000000, 0x3FF34000, -/**/ 0x6FF364E1, 0x3F43B6E9, -/**/ 0x00000000, 0x3FE1F000, -/**/ 0x80B539C7, 0x3FF35220, -/**/ 0x1DD91A82, 0x3FDF95B4, -/**/ 0x961EA9CA, 0x3FE64CA5, -/**/ 0xC65B3B2F, 0x3FEE75B6, -/**/ 0xC412E59F, 0x3FF8BE85, -/**/ 0x02462A51, 0x40051778, -/**/ 0x109FC81B, 0x4012EA48, -/**/ 0x9F70CA98, 0x3C959E4C, -/**/ 0xF9BA7B3C, 0x3FE30A9D, -/**/ 0x00000000, 0x3FF34000, -/**/ 0xB539C6A2, 0x3F722080, -/**/ 0x00000000, 0x3FE21000, -/**/ 0x0B24ACDA, 0x3FF3620D, -/**/ 0xB5D803B6, 0x3FE00E78, -/**/ 0xFFE457FB, 0x3FE6C871, -/**/ 0x759EF386, 0x3FEF722E, -/**/ 0xB8D0E874, 0x3FF9C1F1, -/**/ 0x080FB06E, 0x4006281D, -/**/ 0xD1F69DF7, 0x40140BF2, -/**/ 0xCBFAF37F, 0xBC8489EA, -/**/ 0x1C0141BC, 0x3FE33152, -/**/ 0x00000000, 0x3FF38000, -/**/ 0xDB532667, 0xBF7DF2F4, -/**/ 0x00000000, 0x3FE23000, -/**/ 0xEFEBB76D, 0x3FF3723D, -/**/ 0xC153FC4C, 0x3FE05390, -/**/ 0xE34A2666, 0x3FE74844, -/**/ 0xC260A400, 0x3FF03C84, -/**/ 0x81E70F01, 0x3FFAD286, -/**/ 0xDBC4A78E, 0x40074924, -/**/ 0x8BBCA2E0, 0x401541CB, -/**/ 0x7BEA8472, 0x3C9C7528, -/**/ 0x5B7858F8, 0x3FE35826, -/**/ 0x00000000, 0x3FF38000, -/**/ 0x28912510, 0xBF6B8420, -/**/ 0x00000000, 0x3FE25000, -/**/ 0xAE8DA9C7, 0x3FF382B4, -/**/ 0x842CABB9, 0x3FE09A2E, -/**/ 0xDA356141, 0x3FE7CC48, -/**/ 0xBCD4FDB8, 0x3FF0C567, -/**/ 0x89B62C32, 0x3FFBF10F, -/**/ 0x18ADC4B9, 0x40087BB5, -/**/ 0xC516F6F1, 0x40168D6D, -/**/ 0x2E37D6A3, 0xBC933A6B, -/**/ 0x4251E5AC, 0x3FE37F1B, -/**/ 0x00000000, 0x3FF38000, -/**/ 0x6D4E3A7A, 0x3F45A574, -/**/ 0x00000000, 0x3FE27000, -/**/ 0xD3219A4C, 0x3FF39372, -/**/ 0xD4394437, 0x3FE0E25E, -/**/ 0xACE4CC74, 0x3FE854AA, -/**/ 0x0981EE13, 0x3FF15408, -/**/ 0x88AA5332, 0x3FFD1E66, -/**/ 0xDA3BD18F, 0x4009C10A, -/**/ 0xFFE4AE21, 0x4017F099, -/**/ 0x7B588ABE, 0xBCAED56B, -/**/ 0x5DCB911C, 0x3FE3A631, -/**/ 0x00000000, 0x3FF38000, -/**/ 0x219A4BA9, 0x3F7372D3, -/**/ 0x00000000, 0x3FE29000, -/**/ 0xF6D8C6BC, 0x3FF3A479, -/**/ 0x11197A32, 0x3FE12C2F, -/**/ 0x73F949D5, 0x3FE8E199, -/**/ 0xEE7A481D, 0x3FF1E8B1, -/**/ 0xABBE8828, 0x3FFE5B74, -/**/ 0xDB3D83BC, 0x400B1A7C, -/**/ 0x6DC46100, 0x40196D39, -/**/ 0xACD8F69C, 0x3CA7798C, -/**/ 0x3E4835E8, 0x3FE3CD69, -/**/ 0x00000000, 0x3FF3C000, -/**/ 0x27394391, 0xBF7B8609, -/**/ 0x00000000, 0x3FE2B000, -/**/ 0xC08BE738, 0x3FF3B5CB, -/**/ 0x2B5CB6B7, 0x3FE177AD, -/**/ 0xBCE90EB1, 0x3FE97346, -/**/ 0x68EC7F04, 0x3FF283B6, -/**/ 0xD5B8ED04, 0x3FFFA933, -/**/ 0xCBCDFF9A, 0x400C897D, -/**/ 0x0E4ABF55, 0x401B0562, -/**/ 0x1EE42043, 0x3C881FF6, -/**/ 0x776AA08C, 0x3FE3F4C3, -/**/ 0x00000000, 0x3FF3C000, -/**/ 0xE8319086, 0xBF64687E, -/**/ 0x00000000, 0x3FE2D000, -/**/ 0xE54FE05E, 0x3FF3C769, -/**/ 0xAC1A81A0, 0x3FE1C4E7, -/**/ 0xB10FA326, 0x3FEA09E6, -/**/ 0x840F679B, 0x3FF3256B, -/**/ 0xFEE9EF1A, 0x40008457, -/**/ 0xE4146343, 0x400E0F9E, -/**/ 0x433496A9, 0x401CBB5B, -/**/ 0x59F087C0, 0xBCA57A4C, -/**/ 0xA03171A8, 0x3FE41C40, -/**/ 0x00000000, 0x3FF3C000, -/**/ 0x3F81773D, 0x3F5DA795, -/**/ 0x00000000, 0x3FE2F000, -/**/ 0x291249DC, 0x3FF3D956, -/**/ 0xBD044AC9, 0x3FE213ED, -/**/ 0x3F917FA8, 0x3FEAA5B0, -/**/ 0xB7380A79, 0x3FF3CE2C, -/**/ 0x576AFAE8, 0x40013D84, -/**/ 0xBAAB74F3, 0x400FAE92, -/**/ 0xE9129E4A, 0x401E91A2, -/**/ 0x0CEC83F7, 0x3C905671, -/**/ 0x53143194, 0x3FE443E1, -/**/ 0x00000000, 0x3FF3C000, -/**/ 0x1249DBC4, 0x3F795629, -/**/ 0x00000000, 0x3FE31000, -/**/ 0x5F3E4715, 0x3FF3EB92, -/**/ 0x30F965D1, 0x3FE264CF, -/**/ 0x4A4F2FB2, 0x3FEB46DD, -/**/ 0x4BC2E94F, 0x3FF47E5B, -/**/ 0x54F8F9EB, 0x400200B9, -/**/ 0x33305D9F, 0x4010B418, -/**/ 0x826EF167, 0x40204579, -/**/ 0xE06EBCAE, 0xBC9737A0, -/**/ 0x2E21A53C, 0x3FE46BA6, -/**/ 0x00000000, 0x3FF40000, -/**/ 0xC1B8EB04, 0xBF746DA0, -/**/ 0x00000000, 0x3FE33000, -/**/ 0x6B6A38D5, 0x3FF3FE20, -/**/ 0x8D26C7A0, 0x3FE2B79C, -/**/ 0xD62978F8, 0x3FEBEDAA, -/**/ 0xCB8CC6D1, 0x3FF5365E, -/**/ 0xD894AF54, 0x4002CE9C, -/**/ 0x79F7C63E, 0x40119F3B, -/**/ 0x0C8E7B9E, 0x40215524, -/**/ 0x13DC9A80, 0x3CA485D0, -/**/ 0xD31F754C, 0x3FE4938F, -/**/ 0x00000000, 0x3FF40000, -/**/ 0x5C72B1E7, 0xBF3DF949, -/**/ 0x00000000, 0x3FE35000, -/**/ 0x420ED8E7, 0x3FF41102, -/**/ 0x12BCE2B2, 0x3FE30C67, -/**/ 0x3EDE345E, 0x3FEC9A59, -/**/ 0x78CAB466, 0x3FF5F6A5, -/**/ 0x3EAD62EE, 0x4003A7E1, -/**/ 0x9CB9A228, 0x401299C8, -/**/ 0x1BE749B0, 0x40227974, -/**/ 0xC6A9831F, 0x3CAFE28F, -/**/ 0xE7AB3A40, 0x3FE4BB9E, -/**/ 0x00000000, 0x3FF40000, -/**/ 0x0ED8E776, 0x3F710242, -/**/ 0x00000000, 0x3FE37000, -/**/ 0xE9485B43, 0x3FF42439, -/**/ 0xC946E033, 0x3FE36340, -/**/ 0x6ECC5A7E, 0x3FED4D2C, -/**/ 0xD027255A, 0x3FF6BFA4, -/**/ 0x72504BE1, 0x40048D46, -/**/ 0x09445BD5, 0x4013A4ED, -/**/ 0x749E19F9, 0x4023B435, -/**/ 0xEAAAF53E, 0xBC40E7E5, -/**/ 0x155D0070, 0x3FE4E3D4, -/**/ 0x00000000, 0x3FF44000, -/**/ 0xB7A4BD36, 0xBF7BC616, -/**/ 0x00000000, 0x3FE39000, -/**/ 0x79A23C23, 0x3FF437C9, -/**/ 0x89AF6A9D, 0x3FE3BC3C, -/**/ 0x1AF553BA, 0x3FEE066C, -/**/ 0x1622569A, 0x3FF791DA, -/**/ 0x1B18AE2B, 0x40057F9B, -/**/ 0x88BFF240, 0x4014C1F0, -/**/ 0x019A4522, 0x40250761, -/**/ 0xFDFCCB13, 0x3CA4C238, -/**/ 0x09EB58F8, 0x3FE50C30, -/**/ 0x00000000, 0x3FF44000, -/**/ 0xBB87B9E1, 0xBF606D0C, -/**/ 0x00000000, 0x3FE3B000, -/**/ 0x1EEE6F35, 0x3FF44BB3, -/**/ 0x0A004D1D, 0x3FE4176E, -/**/ 0x0399FA54, 0x3FEEC664, -/**/ 0xF0CFD106, 0x3FF86DCA, -/**/ 0xE8C80E97, 0x40067FBD, -/**/ 0xD9CD2D79, 0x4015F237, -/**/ 0xC8076345, 0x40267521, -/**/ 0xB089F7AF, 0x3CAEC756, -/**/ 0x77510D94, 0x3FE534B3, -/**/ 0x00000000, 0x3FF44000, -/**/ 0xDCDE698F, 0x3F67663D, -/**/ 0x00000000, 0x3FE3D000, -/**/ 0x1928B1BE, 0x3FF45FF9, -/**/ 0xE9EB53E9, 0x3FE474E9, -/**/ 0x39DB03B6, 0x3FEF8D64, -/**/ 0x0F298B87, 0x3FF95406, -/**/ 0xFFC72AB6, 0x40078E9E, -/**/ 0x941456E7, 0x40173747, -/**/ 0x74A71E71, 0x4027FFDA, -/**/ 0xFE7483B3, 0xBCAEED93, -/**/ 0x13F48EC0, 0x3FE55D5F, -/**/ 0x00000000, 0x3FF44000, -/**/ 0x28B1BDFF, 0x3F7FF919, -/**/ 0x00000000, 0x3FE3F000, -/**/ 0xBD66D0C4, 0x3FF4749D, -/**/ 0xC02C2013, 0x3FE4D4C5, -/**/ 0xB56768CC, 0x3FF02DE0, -/**/ 0xDF53A7BD, 0x3FFA4523, -/**/ 0x8A357386, 0x4008AD41, -/**/ 0x5E392799, 0x401892C7, -/**/ 0x97746ACD, 0x4029AA2B, -/**/ 0xB4A71E44, 0x3C924F0A, -/**/ 0x9AD13548, 0x3FE58633, -/**/ 0x00000000, 0x3FF48000, -/**/ 0x325E775E, 0xBF66C485, -/**/ 0x00000000, 0x3FE41000, -/**/ 0x76D6C491, 0x3FF489A3, -/**/ 0x28D40829, 0x3FE53718, -/**/ 0x98450D83, 0x3FF098EA, -/**/ 0x55526E3B, 0x3FFB41C7, -/**/ 0x719F540E, 0x4009DCBD, -/**/ 0x805D08D1, 0x401A0685, -/**/ 0xA5142633, 0x402B76FA, -/**/ 0xF1FF56FC, 0x3C2AD9A7, -/**/ 0xCBA27244, 0x3FE5AF31, -/**/ 0x00000000, 0x3FF48000, -/**/ 0xAD892100, 0x3F6346ED, -/**/ 0x00000000, 0x3FE43000, -/**/ 0xC7CB94CC, 0x3FF49F0C, -/**/ 0xD492AA1E, 0x3FE59BF8, -/**/ 0x34D2CA82, 0x3FF107FF, -/**/ 0xC3DF9E51, 0x3FFC4A9E, -/**/ 0x45F5874E, 0x400B1E41, -/**/ 0xDEB92648, 0x401B947A, -/**/ 0xD903D532, 0x402D6979, -/**/ 0x04C67F5E, 0x3CA43231, -/**/ 0x6B1109A4, 0x3FE5D85A, -/**/ 0x00000000, 0x3FF48000, -/**/ 0xCB94CC1A, 0x3F7F0CC7, -/**/ 0x00000000, 0x3FE45000, -/**/ 0x4ADA0BF0, 0x3FF4B4DC, -/**/ 0x990F861F, 0x3FE60380, -/**/ 0xCBEC7542, 0x3FF17B50, -/**/ 0xC93CFE8F, 0x3FFD6064, -/**/ 0x56F36FE3, 0x400C7314, -/**/ 0x696E5374, 0x401D3ECF, -/**/ 0x1778AF1D, 0x402F8531, -/**/ 0x31EBDA84, 0x3C7A53BF, -/**/ 0x42E27660, 0x3FE601AE, -/**/ 0x00000000, 0x3FF4C000, -/**/ 0x4BE81F81, 0xBF66476A, -/**/ 0x00000000, 0x3FE47000, -/**/ 0xB4065600, 0x3FF4CB14, -/**/ 0x826ADA4F, 0x3FE66DC9, -/**/ 0xA3298D4D, 0x3FF1F314, -/**/ 0x52191CB4, 0x3FFE83E1, -/**/ 0x05CA69AF, 0x400DDC99, -/**/ 0x1079C46A, 0x401F07DF, -/**/ 0xF9440EB0, 0x4030E703, -/**/ 0x5817D0DD, 0x3CA495E1, -/**/ 0x222A98A0, 0x3FE62B2E, -/**/ 0x00000000, 0x3FF4C000, -/**/ 0x0CAC00D4, 0x3F662968, -/**/ 0x00000000, 0x3FE49000, -/**/ 0xD203BDC9, 0x3FF4E1B8, -/**/ 0xE5FE0976, 0x3FE6DAEE, -/**/ 0x3C44F71E, 0x3FF26F83, -/**/ 0xB4D92F91, 0x3FFFB5EA, -/**/ 0x55A779C8, 0x400F5C4F, -/**/ 0xA66A7536, 0x4020791F, -/**/ 0x7DCE5D75, 0x40322428, -/**/ 0x964F770B, 0x3CADE7E8, -/**/ 0xDD7FD12C, 0x3FE654DA, -/**/ 0x00000000, 0x3FF50000, -/**/ 0xFC42374B, 0xBF7E472D, -/**/ 0x00000000, 0x3FE4B000, -/**/ 0x8F87D541, 0x3FF4F8CB, -/**/ 0x767620C4, 0x3FE74B0D, -/**/ 0x9126F083, 0x3FF2F0D8, -/**/ 0x73F08794, 0x40007BB3, -/**/ 0xE1419117, 0x401079EB, -/**/ 0xA917F81E, 0x40218062, -/**/ 0x48444DEE, 0x40337C6B, -/**/ 0xF4061E08, 0x3C907A41, -/**/ 0x4F31AF70, 0x3FE67EB5, -/**/ 0x00000000, 0x3FF50000, -/**/ 0xE0AAFA85, 0xBF5CD1C1, -/**/ 0x00000000, 0x3FE4D000, -/**/ 0xF4B2718C, 0x3FF5104F, -/**/ 0x59659939, 0x3FE7BE43, -/**/ 0x5502EAE6, 0x3FF37754, -/**/ 0x6AE0AC51, 0x400124A6, -/**/ 0x33524D17, 0x4011527B, -/**/ 0x7FBF7A2D, 0x40229B46, -/**/ 0xAD716768, 0x4034F274, -/**/ 0x7C204EA8, 0xBC9C610F, -/**/ 0x57825A6C, 0x3FE6A8BE, -/**/ 0x00000000, 0x3FF50000, -/**/ 0xB2718C01, 0x3F704FF4, -/**/ 0x00000000, 0x3FE4F000, -/**/ 0x288C017D, 0x3FF52849, -/**/ 0x3E6D3F7F, 0x3FE834B0, -/**/ 0x3B0747CB, 0x3FF4033A, -/**/ 0xE946B196, 0x4001D652, -/**/ 0x3C2F8CB4, 0x401238CB, -/**/ 0x53E520C1, 0x4023CB80, -/**/ 0x607BC0F6, 0x40368938, -/**/ 0xCC053597, 0xBC84274C, -/**/ 0xDCE2DFB8, 0x3FE6D2F6, -/**/ 0x00000000, 0x3FF54000, -/**/ 0x73FE8364, 0xBF77B6D7, -/**/ 0x00000000, 0x3FE51000, -/**/ 0x729BE713, 0x3FF540BA, -/**/ 0x781F49A2, 0x3FE8AE75, -/**/ 0x432AC103, 0x3FF494D2, -/**/ 0x9B0015B6, 0x40029147, -/**/ 0x156B74E9, 0x40132DE7, -/**/ 0xE8362EC8, 0x402512F0, -/**/ 0xC8D2E0F8, 0x403843FE, -/**/ 0xBB3ACC53, 0xBC8F55DB, -/**/ 0xCC3296F0, 0x3FE6FD5F, -/**/ 0x00000000, 0x3FF54000, -/**/ 0x7CE2565E, 0x3F274E53, -/**/ 0x00000000, 0x3FE53000, -/**/ 0x3C98A101, 0x3FF559A7, -/**/ 0x16C3163D, 0x3FE92BB6, -/**/ 0x0DB2C44D, 0x3FF52C69, -/**/ 0x0F4546B8, 0x4003561E, -/**/ 0x7F099A82, 0x401432F1, -/**/ 0x831E227A, 0x402673A9, -/**/ 0xA02BBCD5, 0x403A266F, -/**/ 0xAEA9CB9D, 0x3CA279A8, -/**/ 0x1901CB44, 0x3FE727FA, -/**/ 0x00000000, 0x3FF54000, -/**/ 0x98A10084, 0x3F79A73C, -/**/ 0x00000000, 0x3FE55000, -/**/ 0x1433B9BD, 0x3FF57313, -/**/ 0x0523E7B2, 0x3FE9AC97, -/**/ 0x361F7393, 0x3FF5CA50, -/**/ 0xB0F40825, 0x4004257B, -/**/ 0x46286025, 0x40154927, -/**/ 0x781495B4, 0x4027EFF1, -/**/ 0x0A1139F1, 0x403C349E, -/**/ 0x8B6015DA, 0xBC5D2C66, -/**/ 0xBDD7E0E0, 0x3FE752C6, -/**/ 0x00000000, 0x3FF58000, -/**/ 0x988C865F, 0xBF69D9D7, -/**/ 0x00000000, 0x3FE57000, -/**/ 0xAD039E07, 0x3FF58D01, -/**/ 0x279933CD, 0x3FEA313F, -/**/ 0xB63D93A6, 0x3FF66EDE, -/**/ 0xD836441A, 0x40050012, -/**/ 0xF23D152C, 0x401671E1, -/**/ 0x65D3A1DD, 0x40298A4C, -/**/ 0x5EBDBF39, 0x403E7316, -/**/ 0x7AAA4996, 0xBCAE5B6C, -/**/ 0xBC7D2FA0, 0x3FE77DC6, -/**/ 0x00000000, 0x3FF58000, -/**/ 0x073C0E86, 0x3F6A035A, -/**/ 0x00000000, 0x3FE59000, -/**/ 0xE28DADB6, 0x3FF5A776, -/**/ 0x7D7BE2B5, 0x3FEAB9D7, -/**/ 0x5234C8A9, 0x3FF71A71, -/**/ 0xF873554C, 0x4005E6A3, -/**/ 0xC1F33F9B, 0x4017AE9A, -/**/ 0x4310046E, 0x402B4581, -/**/ 0xF64B03E7, 0x40407376, -/**/ 0xB3AB0542, 0xBCA3F39B, -/**/ 0x1E48D158, 0x3FE7A8FB, -/**/ 0x00000000, 0x3FF5C000, -/**/ 0x725249CA, 0xBF78891D, -/**/ 0x00000000, 0x3FE5B000, -/**/ 0xBA730F9B, 0x3FF5C276, -/**/ 0x454127C3, 0x3FEB468B, -/**/ 0x0E816ADB, 0x3FF7CD6B, -/**/ 0xEDDAC837, 0x4006D9FE, -/**/ 0x0209E3B7, 0x401900EE, -/**/ 0x57489C7E, 0x402D24A2, -/**/ 0x7F810E14, 0x4041CAEA, -/**/ 0x24F9675B, 0xBC84F20E, -/**/ 0xF472A690, 0x3FE7D464, -/**/ 0x00000000, 0x3FF5C000, -/**/ 0x987CD623, 0x3F43B5D3, -/**/ 0x00000000, 0x3FE5D000, -/**/ 0x66C30CDC, 0x3FF5DE05, -/**/ 0x23798D1A, 0x3FEBD788, -/**/ 0xB0E567D8, 0x3FF88835, -/**/ 0x6E46660A, 0x4007DB04, -/**/ 0xCA07CAA5, 0x401A6A9E, -/**/ 0x41ECEF64, 0x402F2B16, -/**/ 0xC36F367B, 0x40434315, -/**/ 0x542594A6, 0xBCA08CA1, -/**/ 0x5869D9E8, 0x3FE80005, -/**/ 0x00000000, 0x3FF5C000, -/**/ 0xC30CDBD9, 0x3F7E0566, -/**/ 0x00000000, 0x3FE5F000, -/**/ 0x4875FA03, 0x3FF5FA27, -/**/ 0x4CF96D63, 0x3FEC6CFE, -/**/ 0x4D7B8313, 0x3FF94B42, -/**/ 0xA1B04592, 0x4008EAA7, -/**/ 0x2C5A9D87, 0x401BED9B, -/**/ 0x1BC92F68, 0x4030AE51, -/**/ 0x685FBD64, 0x4044DF8C, -/**/ 0x30FE6378, 0xBCAC07A8, -/**/ 0x6C30303C, 0x3FE82BDD, -/**/ 0x00000000, 0x3FF60000, -/**/ 0x2817F40C, 0xBF5762DE, -/**/ 0x00000000, 0x3FE61000, -/**/ 0xF213FCD6, 0x3FF616E0, -/**/ 0xB47784FF, 0x3FED0720, -/**/ 0xE13C6707, 0x3FFA1709, -/**/ 0xE70B2E72, 0x400A09EF, -/**/ 0xE976AAD9, 0x401D8C00, -/**/ 0xD1AE1EA8, 0x4031DEBA, -/**/ 0x6424341F, 0x4046A453, -/**/ 0xA65D40B1, 0x3CA13E53, -/**/ 0x5ABA79E8, 0x3FE857EE, -/**/ 0x00000000, 0x3FF60000, -/**/ 0x13FCD614, 0x3F76E0F2, -/**/ 0x00000000, 0x3FE63000, -/**/ 0x2A8B4ED8, 0x3FF63437, -/**/ 0x3BF69915, 0x3FEDA625, -/**/ 0xFB6DF86F, 0x3FFAEC0D, -/**/ 0xCAF2D64B, 0x400B39FA, -/**/ 0xB7E2DC06, 0x401F4822, -/**/ 0xB12537E3, 0x4033291B, -/**/ 0xAF3EF0D1, 0x404895F0, -/**/ 0x71E7ED76, 0x3CAEA588, -/**/ 0x5856807C, 0x3FE88439, -/**/ 0x00000000, 0x3FF64000, -/**/ 0xE9624F1C, 0xBF6791AA, -/**/ 0x00000000, 0x3FE65000, -/**/ 0xF039F5E3, 0x3FF6522E, -/**/ 0xEA588E54, 0x3FEE4A44, -/**/ 0x77A3F8A4, 0x3FFBCAD9, -/**/ 0x3669F2F2, 0x400C7BFE, -/**/ 0x1AEA54A4, 0x40209247, -/**/ 0x6B866959, 0x4034900A, -/**/ 0x620634CF, 0x404AB97D, -/**/ 0xDA91B0FD, 0x3C948649, -/**/ 0xA316D3A0, 0x3FE8B0BF, -/**/ 0x00000000, 0x3FF64000, -/**/ 0x39F5E2AD, 0x3F722EF0, -/**/ 0x00000000, 0x3FE67000, -/**/ 0x7C2F4FC3, 0x3FF670CD, -/**/ 0x2583CF60, 0x3FEEF3BC, -/**/ 0x4A2E1684, 0x3FFCB401, -/**/ 0xDCB9F8FB, 0x400DD14A, -/**/ 0x4E164373, 0x40219209, -/**/ 0x8FC171BC, 0x40361669, -/**/ 0xA46B7BE1, 0x404D14BA, -/**/ 0xBBDFE65A, 0xBCABAC31, -/**/ 0x8344E08C, 0x3FE8DD82, -/**/ 0x00000000, 0x3FF68000, -/**/ 0xA1607A77, 0xBF6E6507, -/**/ 0x00000000, 0x3FE69000, -/**/ 0x45AA3C85, 0x3FF69018, -/**/ 0xF18FBD18, 0x3FEFA2CA, -/**/ 0x610C140E, 0x3FFDA825, -/**/ 0xF08895E1, 0x400F3B4E, -/**/ 0x272CD203, 0x4022A4E4, -/**/ 0x60C4A0EE, 0x4037BF71, -/**/ 0xEC79351D, 0x404FAE29, -/**/ 0x3E22FB0A, 0x3C6BF5BB, -/**/ 0x4BD9C858, 0x3FE90A83, -/**/ 0x00000000, 0x3FF68000, -/**/ 0xAA3C8533, 0x3F701845, -/**/ 0x00000000, 0x3FE6B000, -/**/ 0x05D92E4E, 0x3FF6B015, -/**/ 0x9ABD20D8, 0x3FF02BDA, -/**/ 0x9BC5CC13, 0x3FFEA7F1, -/**/ 0x94AFB2BB, 0x40105DCC, -/**/ 0xB382B54A, 0x4023CC8C, -/**/ 0x19C28EAE, 0x40398EBB, -/**/ 0x8F7609B5, 0x40514694, -/**/ 0xF66137E5, 0x3C9CD223, -/**/ 0x5AFE73AC, 0x3FE937C3, -/**/ 0x00000000, 0x3FF6C000, -/**/ 0x4DA36334, 0xBF6FD5F4, -/**/ 0x00000000, 0x3FE6D000, -/**/ 0xBBE1EF2B, 0x3FF6D0C9, -/**/ 0x82FBDD29, 0x3FF08961, -/**/ 0xDCD403EC, 0x3FFFB41E, -/**/ 0x121D0023, 0x401129EE, -/**/ 0xB34159B2, 0x40250AE5, -/**/ 0xDB5CEAC4, 0x403B884D, -/**/ 0xA0B334B0, 0x4052DD09, -/**/ 0xD8F14BF9, 0xBC96BF1D, -/**/ 0x1A936D24, 0x3FE96544, -/**/ 0x00000000, 0x3FF6C000, -/**/ 0xE1EF2AEE, 0x3F70C9BB, -/**/ 0x00000000, 0x3FE6F000, -/**/ 0xB13786CF, 0x3FF6F23C, -/**/ 0x7B7FC134, 0x3FF0EA20, -/**/ 0x1BD0D518, 0x400066BA, -/**/ 0x159EC945, 0x401202F9, -/**/ 0x16FF868A, 0x40266205, -/**/ 0x87398014, 0x403DB0AD, -/**/ 0x47D58711, 0x40549F33, -/**/ 0x54B11A28, 0x3C8D858F, -/**/ 0x00C1184C, 0x3FE99307, -/**/ 0x00000000, 0x3FF70000, -/**/ 0x90F2626A, 0xBF6B869D, -/**/ 0x00000000, 0x3FE71000, -/**/ 0x7E455603, 0x3FF71474, -/**/ 0x3A65655F, 0x3FF14E40, -/**/ 0x1F4AA7A1, 0x4000FA64, -/**/ 0xB946C70A, 0x4012E9F0, -/**/ 0x3CC53936, 0x4027D43A, -/**/ 0xEE087279, 0x40400675, -/**/ 0x77313CEF, 0x40569278, -/**/ 0x772D6E62, 0xBCAB1BA1, -/**/ 0x9090E874, 0x3FE9C10D, -/**/ 0x00000000, 0x3FF70000, -/**/ 0x455602D3, 0x3F74747E, -/**/ 0x00000000, 0x3FE73000, -/**/ 0x0F773DEC, 0x3FF73778, -/**/ 0x1288B243, 0x3FF1B5EC, -/**/ 0x3A853FA5, 0x40019581, -/**/ 0x6D2743E5, 0x4013DFF0, -/**/ 0x09B4B924, 0x40296415, -/**/ 0x19A59D1F, 0x4041515E, -/**/ 0xF3E53877, 0x4058BD01, -/**/ 0xFC348BAE, 0x3C962269, -/**/ 0x5A90493C, 0x3FE9EF59, -/**/ 0x00000000, 0x3FF74000, -/**/ 0x11842743, 0xBF610FE1, -/**/ 0x00000000, 0x3FE75000, -/**/ 0xAAA78140, 0x3FF75B4E, -/**/ 0x28B49576, 0x3FF22152, -/**/ 0x74D66746, 0x4002388E, -/**/ 0xA43083A8, 0x4014E62E, -/**/ 0x02885ED7, 0x402B146E, -/**/ 0x29A3BC2C, 0x4042BC45, -/**/ 0xCDAFE7E5, 0x405B25D8, -/**/ 0xF03F8A74, 0x3CA8862D, -/**/ 0xFD7DFBD8, 0x3FEA1DEB, -/**/ 0x00000000, 0x3FF74000, -/**/ 0xA7813FBA, 0x3F7B4EAA, -/**/ 0x00000000, 0x3FE77000, -/**/ 0xF4FC0008, 0x3FF77FFF, -/**/ 0xADE499E4, 0x3FF290A3, -/**/ 0xFF22FE11, 0x4002E412, -/**/ 0xD7A17943, 0x4015FDFF, -/**/ 0x8AF79AEF, 0x402CE86F, -/**/ 0x6F8EDF86, 0x40444ACA, -/**/ 0x29CF9F92, 0x405DD50A, -/**/ 0xC5865233, 0x3CA49DB0, -/**/ 0x2702BD90, 0x3FEA4CC7, -/**/ 0x00000000, 0x3FF78000, -/**/ 0xF08268E1, 0xBE6607FF, -/**/ 0x00000000, 0x3FE79000, -/**/ 0xF93D7FBC, 0x3FF7A593, -/**/ 0x1F293A81, 0x3FF30415, -/**/ 0x31649EA4, 0x400398A1, -/**/ 0xED75DA1E, 0x401728D9, -/**/ 0x7B1736CA, 0x402EE3A0, -/**/ 0x036EC9D4, 0x40460106, -/**/ 0xB3E5A09F, 0x406069E8, -/**/ 0x4E8EB882, 0xBCA79BBD, -/**/ 0x94762100, 0x3FEA7BEC, -/**/ 0x00000000, 0x3FF7C000, -/**/ 0xC280445C, 0xBF7A6C06, -/**/ 0x00000000, 0x3FE7B000, -/**/ 0x2EB4E536, 0x3FF7CC13, -/**/ 0x8BD25D7D, 0x3FF37BDE, -/**/ 0xA51DF797, 0x400456D7, -/**/ 0x103AF33E, 0x40186858, -/**/ 0x21121C2E, 0x403084F8, -/**/ 0x9D7C6DE3, 0x4047E39A, -/**/ 0xEF4C9A12, 0x40621664, -/**/ 0x39DB72FF, 0x3C804D2D, -/**/ 0x13B099B0, 0x3FEAAB5E, -/**/ 0x00000000, 0x3FF7C000, -/**/ 0x69CA6C2F, 0x3F68265D, -/**/ 0x00000000, 0x3FE7D000, -/**/ 0x809BA1CD, 0x3FF7F386, -/**/ 0xE298B2EB, 0x3FF3F83B, -/**/ 0x708A6ABE, 0x40051F62, -/**/ 0x090F77AB, 0x4019BE3F, -/**/ 0x6C13BF38, 0x4031AFE2, -/**/ 0x65FF02A8, 0x4049F7CA, -/**/ 0xDA840FE0, 0x4063F614, -/**/ 0xAB5D1A54, 0xBCA7BDE9, -/**/ 0x83EBD320, 0x3FEADB1D, -/**/ 0x00000000, 0x3FF80000, -/**/ 0xC8BC6562, 0xBF68F2FE, -/**/ 0x00000000, 0x3FE7F000, -/**/ 0x562E1E24, 0x3FF81BF7, -/**/ 0x469724DB, 0x3FF4796D, -/**/ 0x86E67917, 0x4005F2FC, -/**/ 0x2F5AE582, 0x401B2C82, -/**/ 0x65EE1919, 0x4032F505, -/**/ 0x4744D220, 0x404C438F, -/**/ 0xD66309FD, 0x40661003, -/**/ 0xFC828894, 0x3C8470C8, -/**/ 0xD6B287DC, 0x3FEB0B2C, -/**/ 0x00000000, 0x3FF80000, -/**/ 0x2E1E23E5, 0x3F7BF756, -/**/ 0x00000000, 0x3FE81000, -/**/ 0x9B70AB1D, 0x3FF8456F, -/**/ 0x6D01A674, 0x3FF4FFB7, -/**/ 0x42D7B667, 0x4006D271, -/**/ 0x05DD4055, 0x401CB549, -/**/ 0xE490CA9B, 0x40345723, -/**/ 0x47C5589B, 0x404ECD17, -/**/ 0x3D6DB036, 0x40686C46, -/**/ 0xECF23C2E, 0x4084044D, -/**/ 0x0D173A5F, 0xBC7F0990, -/**/ 0x10E12D3C, 0x3FEB3B8E, -/**/ 0x00000000, 0x3FF84000, -/**/ 0xC2AC733C, 0x3F55BE6D, -/**/ 0x00000000, 0x3FE83000, -/**/ 0xCAB97B9D, 0x3FF86FF9, -/**/ 0x04A71B42, 0x3FF58B64, -/**/ 0x20C0FB6E, 0x4007BE9E, -/**/ 0x9B426297, 0x401E5AF5, -/**/ 0x013C40EE, 0x4035D958, -/**/ 0x2215E48C, 0x4050CEA9, -/**/ 0xB8C0669A, 0x406B146B, -/**/ 0xFB8EB0FE, 0x40868C96, -/**/ 0x1FCCBAD4, 0x3CA55848, -/**/ 0x4BB8EA98, 0x3FEB6C43, -/**/ 0x00000000, 0x3FF88000, -/**/ 0x46846319, 0xBF700635, -/**/ 0x00000000, 0x3FE85000, -/**/ 0xF71469BF, 0x3FF89BA0, -/**/ 0x28717EFA, 0x3FF61CC2, -/**/ 0xAFB7BAF7, 0x4008B874, -/**/ 0xEC7286DB, 0x40201015, -/**/ 0x8329A469, 0x40377F1F, -/**/ 0x2927F0DD, 0x40525E49, -/**/ 0x5AE80CD9, 0x406E135C, -/**/ 0x40DF64FD, 0x40897364, -/**/ 0x1ED91B03, 0x3C89F53B, -/**/ 0xB6067ABC, 0x3FEB9D4E, -/**/ 0x00000000, 0x3FF88000, -/**/ 0x1469BF33, 0x3F7BA0F7, -/**/ 0x00000000, 0x3FE87000, -/**/ 0xD797DABF, 0x3FF8C870, -/**/ 0xDE42D55F, 0x3FF6B426, -/**/ 0xC0E06552, 0x4009C0FC, -/**/ 0xEB059907, 0x402103EC, -/**/ 0x49A75AA7, 0x40394C6A, -/**/ 0xB2A496D0, 0x40541A81, -/**/ 0x209CB693, 0x4070BAEE, -/**/ 0x285808C5, 0x408CC860, -/**/ 0x9B0DC6F3, 0xBCAE6D8C, -/**/ 0x955EC1C4, 0x3FEBCEB2, -/**/ 0x00000000, 0x3FF8C000, -/**/ 0x2FB57EE7, 0x3F60E1AF, -/**/ 0x00000000, 0x3FE89000, -/**/ 0xD3C502F4, 0x3FF8F675, -/**/ 0xA3BFB2E4, 0x3FF751ED, -/**/ 0xDE3987BC, 0x400AD956, -/**/ 0xB30AAD0A, 0x40220AA0, -/**/ 0x16220014, 0x403B45AB, -/**/ 0xEC84429C, 0x40560929, -/**/ 0x0D747939, 0x4072A569, -/**/ 0x5407F41E, 0x40904F10, -/**/ 0xFC269962, 0xBC675CEB, -/**/ 0x4773138C, 0x3FEC0071, -/**/ 0x00000000, 0x3FF90000, -/**/ 0x75FA1750, 0xBF631458, -/**/ 0x00000000, 0x3FE8B000, -/**/ 0x111125DF, 0x3FF925BD, -/**/ 0x0AD2B4C2, 0x3FF7F679, -/**/ 0x1359A3C8, 0x400C02BF, -/**/ 0x88857C21, 0x40232601, -/**/ 0x2515D90E, 0x403D6FEB, -/**/ 0xD421145E, 0x405830FA, -/**/ 0xFD789544, 0x4074D1D6, -/**/ 0x4B30EBF1, 0x40928561, -/**/ 0x7876F9D2, 0x3CA13E7B, -/**/ 0x437F5E74, 0x3FEC328D, -/**/ 0x00000000, 0x3FF94000, -/**/ 0xEEDA20A4, 0xBF7A42EE, -/**/ 0x00000000, 0x3FE8D000, -/**/ 0x81B9477B, 0x3FF95654, -/**/ 0x67F87779, 0x3FF8A233, -/**/ 0x14665EA0, 0x400D3E90, -/**/ 0x5A415747, 0x40245815, -/**/ 0x1D7511C0, 0x403FD0E1, -/**/ 0x01EC30FB, 0x405A99B6, -/**/ 0xDD7EE7A1, 0x40774A72, -/**/ 0x5C2F1724, 0x40951454, -/**/ 0x774A5205, 0x3C8185B3, -/**/ 0x1BD4AD0C, 0x3FEC6509, -/**/ 0x00000000, 0x3FF94000, -/**/ 0xB9477AC0, 0x3F765481, -/**/ 0x00000000, 0x3FE8F000, -/**/ 0xF50630B5, 0x3FF9884A, -/**/ 0x94B35A8D, 0x3FF9558F, -/**/ 0xD1A32B1D, 0x400E8E46, -/**/ 0x0AEC68DB, 0x4025A31F, -/**/ 0xFD21A759, 0x40413785, -/**/ 0xF56DFCA6, 0x405D4C53, -/**/ 0xF89C0F5F, 0x407A1B45, -/**/ 0xC92C8CF3, 0x40980BB3, -/**/ 0xFEB6A05E, 0xBC8696E8, -/**/ 0x7F82B8CC, 0x3FEC97E7, -/**/ 0x00000000, 0x3FF98000, -/**/ 0x0C6169C6, 0x3F6095EA, -/**/ 0x00000000, 0x3FE91000, -/**/ 0x292BC29F, 0x3FF9BBB0, -/**/ 0xC8E3D76B, 0x3FFA1109, -/**/ 0x8873C480, 0x400FF386, -/**/ 0xDE619C77, 0x402709A6, -/**/ 0x5A9417B9, 0x4042A8E9, -/**/ 0xBFE20B57, 0x4060299D, -/**/ 0xE1225431, 0x407D5283, -/**/ 0xC225406C, 0x409B7E74, -/**/ 0x74F396DB, 0xBC879431, -/**/ 0x3C239888, 0x3FECCB2B, -/**/ 0x00000000, 0x3FF9C000, -/**/ 0x50F5839F, 0xBF513F5B, -/**/ 0x00000000, 0x3FE93000, -/**/ 0xDEF4783D, 0x3FF9F094, -/**/ 0x8E300736, 0x3FFAD528, -/**/ 0xB2D4D4EE, 0x4010B80E, -/**/ 0x3F3D0057, 0x40288E84, -/**/ 0xD20263C0, 0x404440D4, -/**/ 0x26E14927, 0x4061DD42, -/**/ 0x5EF13D09, 0x4080807D, -/**/ 0xFE9E94BE, 0x409F836C, -/**/ 0xE5FD9D2D, 0xBC813C84, -/**/ 0x3FCCF104, 0x3FECFED7, -/**/ 0x00000000, 0x3FFA0000, -/**/ 0x170F854B, 0xBF6ED642, -/**/ 0x00000000, 0x3FE95000, -/**/ 0xEF70C9F9, 0x3FFA270A, -/**/ 0xD12662D9, 0x3FFBA27D, -/**/ 0xE8433B59, 0x40118304, -/**/ 0x1B4DD8D9, 0x402A34E9, -/**/ 0x58AA354C, 0x4046041F, -/**/ 0x87EB035B, 0x4063C823, -/**/ 0x7F89A6B6, 0x40829D4E, -/**/ 0xB4BED54D, 0x40A21B1A, -/**/ 0xFD8283D4, 0x3C855D66, -/**/ 0x9B2A7684, 0x3FED32EE, -/**/ 0x00000000, 0x3FFA4000, -/**/ 0x8F3606B9, 0xBF78F510, -/**/ 0x00000000, 0x3FE97000, -/**/ 0x63EA127F, 0x3FFA5F25, -/**/ 0x1460C218, 0x3FFC79A8, -/**/ 0x3D14975C, 0x40125BC0, -/**/ 0x2249DB66, 0x402C006F, -/**/ 0xED0AEFCD, 0x4047F856, -/**/ 0x2E2028D0, 0x4065F27F, -/**/ 0x6CE59595, 0x40850B95, -/**/ 0x18C497E2, 0x40A4DC23, -/**/ 0x76BA54CA, 0x3C8BDFAE, -/**/ 0x83C60554, 0x3FED6774, -/**/ 0x00000000, 0x3FFA4000, -/**/ 0xEA127F53, 0x3F7F2563, -/**/ 0x00000000, 0x3FE99000, -/**/ 0x9061CEFE, 0x3FFA98F8, -/**/ 0xCAA1F466, 0x3FFD5B53, -/**/ 0xA92630E8, 0x40134379, -/**/ 0x41E37357, 0x402DF527, -/**/ 0xD7DE2305, 0x404A23DF, -/**/ 0x1911C50F, 0x406865FE, -/**/ 0xD5CE543D, 0x4087D981, -/**/ 0x2134A322, 0x40A8192E, -/**/ 0x4FE6DAC8, 0xBC915CF9, -/**/ 0x56821F74, 0x3FED9C6C, -/**/ 0x00000000, 0x3FFA8000, -/**/ 0x61CEFDBB, 0x3F78F890, -/**/ 0x00000000, 0x3FE9B000, -/**/ 0x30F0DACC, 0x3FFAD49A, -/**/ 0xDDBFEE70, 0x3FFE483C, -/**/ 0xC4418459, 0x40143B8C, -/**/ 0xE6E7E816, 0x40300BD5, -/**/ 0x02EE200E, 0x404C8E1A, -/**/ 0x83038A03, 0x406B2DFC, -/**/ 0xD987E3D9, 0x408B1814, -/**/ 0x8827CEFA, 0x40ABEB1E, -/**/ 0xE22AFCE0, 0x3CA8829A, -/**/ 0x9A4C39D0, 0x3FEDD1D9, -/**/ 0x00000000, 0x3FFAC000, -/**/ 0xF0DACB86, 0x3F749A30, -/**/ 0x00000000, 0x3FE9D000, -/**/ 0x8A66E40D, 0x3FFB1221, -/**/ 0x692DC10A, 0x3FFF4130, -/**/ 0x64621A80, 0x4015457C, -/**/ 0xED2A1AB4, 0x4031369A, -/**/ 0xBC003A70, 0x404F3F8D, -/**/ 0x462E99D6, 0x406E57E1, -/**/ 0xC53F5717, 0x408EDBC2, -/**/ 0x0A71E453, 0x40B0383D, -/**/ 0xBEDD86A9, 0x3C90AF9F, -/**/ 0x030CF708, 0x3FEE07C0, -/**/ 0x00000000, 0x3FFB0000, -/**/ 0x66E40CBE, 0x3F72218A, -/**/ 0x00000000, 0x3FE9F000, -/**/ 0x8E9927E5, 0x3FFB51A7, -/**/ 0x581637B3, 0x40002387, -/**/ 0xF5B2C17E, 0x401662F7, -/**/ 0x36EAC07E, 0x40327DDB, -/**/ 0xC70D9C43, 0x40512110, -/**/ 0x88C52943, 0x4070F9C4, -/**/ 0xB1AB4848, 0x40919E9E, -/**/ 0xB1EC7695, 0x40B2E76B, -/**/ 0x5E9F6FD9, 0x3CAA2400, -/**/ 0x74DD3C64, 0x3FEE3E23, -/**/ 0x00000000, 0x3FFB4000, -/**/ 0x9927E571, 0x3F71A78E, -/**/ 0x00000000, 0x3FEA1000, -/**/ 0x04E0F95F, 0x3FFB9347, -/**/ 0xAC8DC27B, 0x4000AD66, -/**/ 0xAE05A580, 0x401795E1, -/**/ 0x299AA0A0, 0x4033E4FA, -/**/ 0xA33AB75C, 0x4052D0AD, -/**/ 0x39D64C89, 0x407309E5, -/**/ 0x154C34C4, 0x40942D39, -/**/ 0x59D15B1D, 0x40B61A59, -/**/ 0x114BE565, 0xBCAFC899, -/**/ 0x0787FD30, 0x3FEE7508, -/**/ 0x00000000, 0x3FFB8000, -/**/ 0xE0F95E8B, 0x3F734704, -/**/ 0x00000000, 0x3FEA3000, -/**/ 0xB75F37A1, 0x3FFBD71C, -/**/ 0xFC9006E1, 0x40013EBC, -/**/ 0xC48D2C09, 0x4018E055, -/**/ 0xC2C8C9CD, 0x40356FD7, -/**/ 0x6198B971, 0x4054B557, -/**/ 0x9680F9AF, 0x4075678C, -/**/ 0x8AF946DD, 0x40972BE5, -/**/ 0xE1B531F9, 0x40B9EDE4, -/**/ 0xE4527544, 0xBC447F69, -/**/ 0x0A61AD1C, 0x3FEEAC72, -/**/ 0x00000000, 0x3FFBC000, -/**/ 0x5F37A0DF, 0x3F771CB7, -/**/ 0x00000000, 0x3FEA5000, -/**/ 0xA5B24F80, 0x3FFC1D47, -/**/ 0x7EB9F789, 0x4001D81E, -/**/ 0xDF42B6B7, 0x401A44B2, -/**/ 0xB4766752, 0x403722E5, -/**/ 0xECFADFF0, 0x4056D6EE, -/**/ 0x8B1EB8D5, 0x40782028, -/**/ 0xCA840144, 0x409AB0E2, -/**/ 0xE2126BBF, 0x40BE8614, -/**/ 0x2CC624E2, 0xBC8D9A93, -/**/ 0x087F8D20, 0x3FEEE466, -/**/ 0x00000000, 0x3FFC0000, -/**/ 0xB24F8064, 0x3F7D47A5, -/**/ 0x00000000, 0x3FEA7000, -/**/ 0x3DE98207, 0x3FFC65E9, -/**/ 0x811F641B, 0x40027A2E, -/**/ 0xF223266D, 0x401BC5A3, -/**/ 0xA6ECBE29, 0x40390340, -/**/ 0xC3D499AF, 0x40593EB6, -/**/ 0xAD8CC2F1, 0x407B43D9, -/**/ 0xA519B816, 0x409ED77C, -/**/ 0x5B3B703B, 0x40C2080A, -/**/ 0xE993C3DD, 0x3C7B187D, -/**/ 0xCD5A7CE8, 0x3FEF1CE8, -/**/ 0x00000000, 0x3FFC8000, -/**/ 0x167DF937, 0xBF7A16C2, -/**/ 0x00000000, 0x3FEA9000, -/**/ 0x9CA2F05E, 0x3FFCB125, -/**/ 0x54FC4C95, 0x400325A1, -/**/ 0xD9C5FF75, 0x401D662B, -/**/ 0x8E93577D, 0x403B16CE, -/**/ 0xE0E3029E, 0x405BF79A, -/**/ 0x04BCDF91, 0x407EE612, -/**/ 0x31EFE3F1, 0x40A1E0AC, -/**/ 0x85DF051C, 0x40C56267, -/**/ 0x2D0BC06E, 0xBCAD6122, -/**/ 0x69EAB2F0, 0x3FEF55FF, -/**/ 0x00000000, 0x3FFCC000, -/**/ 0xBA1F43E4, 0xBF6DB4C6, -/**/ 0x00000000, 0x3FEAB000, -/**/ 0xD56B9F55, 0x3FFCFF23, -/**/ 0x86149A3B, 0x4003DB3E, -/**/ 0x0B8D0DAD, 0x401F29B3, -/**/ 0x40E9D1A7, 0x403D6463, -/**/ 0x619D6679, 0x405F0E89, -/**/ 0x92CF3FBC, 0x40818F2E, -/**/ 0x844E51BD, 0x40A4CC10, -/**/ 0xF3A9EB60, 0x40C9762D, -/**/ 0xEF4B1E02, 0x3CA20E79, -/**/ 0x3A4BC01C, 0x3FEF8FAF, -/**/ 0x00000000, 0x3FFD0000, -/**/ 0x8C156248, 0xBF2B8552, -/**/ 0x00000000, 0x3FEAD000, -/**/ 0x44AAD4F2, 0x3FFD500E, -/**/ 0x6B85DB68, 0x40049BE3, -/**/ 0xE558F351, 0x40208A0B, -/**/ 0xC1BCC632, 0x403FF3EC, -/**/ 0x2A555E45, 0x40614970, -/**/ 0xDD057F33, 0x408404AE, -/**/ 0x22610A18, 0x40A847D9, -/**/ 0x3C7AA2B4, 0x40CE7146, -/**/ 0x53CA14EC, 0xBC9571D0, -/**/ 0xEBFAA348, 0x3FEFC9FD, -/**/ 0x00000000, 0x3FFD4000, -/**/ 0xAAD4F267, 0x3F700E44, -/**/ 0x00000000, 0x3FEAF000, -/**/ 0xEC9EDC5A, 0x3FFDA412, -/**/ 0x22B6D908, 0x40056886, -/**/ 0xB605B3B4, 0x402194E0, -/**/ 0x9338560C, 0x40416754, -/**/ 0x34B16169, 0x40634B7B, -/**/ 0x3B1BAF9C, 0x4086E508, -/**/ 0xFB9DFBF5, 0x40AC7475, -/**/ 0xF4B4BB01, 0x40D2473E, -/**/ 0xE9F06EFC, 0x3CA82B31, -/**/ 0xC2613F02, 0x3FF00278, -/**/ 0x00000000, 0x3FFDC000, -/**/ 0x6123A5D1, 0xBF7BED13, -/**/ 0x00000000, 0x3FEB1000, -/**/ 0xDF3AE0DB, 0x3FFDFB63, -/**/ 0x08AD38CF, 0x40064239, -/**/ 0xAA166573, 0x4022B7DB, -/**/ 0x38210D3E, 0x4042FFB4, -/**/ 0xFB634456, 0x40659862, -/**/ 0xEE8F3E34, 0x408A45B4, -/**/ 0xD39A6C6F, 0x40B0BD59, -/**/ 0x2B4867E8, 0x40D60CCD, -/**/ 0x1CBB85B3, 0xBCA6097F, -/**/ 0x3537E800, 0x3FF02048, -/**/ 0x00000000, 0x3FFE0000, -/**/ 0x147C93ED, 0xBF527083, -/**/ 0x00000000, 0x3FEB3000, -/**/ 0xB70F5F72, 0x3FFE5637, -/**/ 0xCA935102, 0x40072A2E, -/**/ 0x43559218, 0x4023F5DE, -/**/ 0xB4E19CA3, 0x4044C96E, -/**/ 0x1272DDA3, 0x40683D62, -/**/ 0xC6BFAAED, 0x408E4135, -/**/ 0x099FB249, 0x40B3C717, -/**/ 0xD5294F7D, 0x40DABA6D, -/**/ 0xC91FFA21, 0x3CA488B1, -/**/ 0xB5B309E0, 0x3FF03E70, -/**/ 0x00000000, 0x3FFE4000, -/**/ 0x0F5F723E, 0x3F7637B7, -/**/ 0x00000000, 0x3FEB5000, -/**/ 0x21D4B842, 0x3FFEB4CA, -/**/ 0x2BE08FC5, 0x400821BF, -/**/ 0x6A6A3BD0, 0x40255238, -/**/ 0xBAC907E2, 0x4046CC00, -/**/ 0x94202458, 0x406B4A78, -/**/ 0xFE065CA6, 0x40917C35, -/**/ 0xE8D5B845, 0x40B77848, -/**/ 0x0CD72D76, 0x40E04820, -/**/ 0x9CBE508B, 0x3CA54B6E, -/**/ 0xE41C2ACE, 0x3FF05CF5, -/**/ 0x00000000, 0x3FFEC000, -/**/ 0x568F7C18, 0xBF666BBC, -/**/ 0x00000000, 0x3FEB7000, -/**/ 0x7FB6EB26, 0x3FFF175C, -/**/ 0xA7BA9C35, 0x40092A6C, -/**/ 0x80F5BA9F, 0x4026D0BC, -/**/ 0x33BD74FB, 0x40491048, -/**/ 0x61FCE21F, 0x406ED319, -/**/ 0x60DF5AED, 0x40944A2E, -/**/ 0x1AC97175, 0x40BBFAFC, -/**/ 0xC3A8BC22, 0x40E3F145, -/**/ 0xA70A42D9, 0xBC994B5D, -/**/ 0x9F358760, 0x3FF07BDB, -/**/ 0x00000000, 0x3FFF0000, -/**/ 0xB6EB2582, 0x3F775C7F, -/**/ 0x00000000, 0x3FEB9000, -/**/ 0x9B29492C, 0x3FFF7E36, -/**/ 0x1C35AD8A, 0x400A45EB, -/**/ 0xC8373BB1, 0x402875D7, -/**/ 0x885E6AE6, 0x404BA0D1, -/**/ 0x0831631E, 0x40717784, -/**/ 0x7F51DA78, 0x4097A441, -/**/ 0x6D7642FB, 0x40C0C2B2, -/**/ 0x594961FB, 0x40E89073, -/**/ 0x96CDC181, 0xBCA5DECE, -/**/ 0x0A46374E, 0x3FF09B26, -/**/ 0x00000000, 0x3FFF8000, -/**/ 0x6B6D3D05, 0xBF3C964D, -/**/ 0x00000000, 0x3FEBB000, -/**/ 0x7DD9B1CF, 0x3FFFE9A7, -/**/ 0xB9AE77AF, 0x400B7627, -/**/ 0x3338306D, 0x402A46B0, -/**/ 0xA0CAACE9, 0x404E8A38, -/**/ 0x864F53A2, 0x4073DDBB, -/**/ 0xD6C97F8D, 0x409BAAF0, -/**/ 0xDFAE5A98, 0x40C42EEF, -/**/ 0xE19501DA, 0x40EE701A, -/**/ 0xC7D3D675, 0x3C9CC4F4, -/**/ 0x93EC49AE, 0x3FF0BAD9, -/**/ 0x00000000, 0x40000000, -/**/ 0x264E310D, 0xBF765882, -/**/ 0x00000000, 0x3FEBD000, -/**/ 0x34302F3B, 0x40002D03, -/**/ 0x7F5AAF0D, 0x400CBD52, -/**/ 0x0C635C0A, 0x402C4949, -/**/ 0xB6BB1732, 0x4050EDD1, -/**/ 0x9691A9F4, 0x4076AE3D, -/**/ 0x61482FC6, 0x40A043C7, -/**/ 0xF81EB6E0, 0x40C87037, -/**/ 0xE84FE55E, 0x40F2FA30, -/**/ 0x228FC41D, 0xBC9820F1, -/**/ 0xFDD4AE68, 0x3FF0DAFA, -/**/ 0x00000000, 0x40002000, -/**/ 0x605E76B0, 0x3F7A0668, -/**/ 0x00000000, 0x3FEBF000, -/**/ 0xF9C947A3, 0x400067D9, -/**/ 0xA1722882, 0x400E1DE9, -/**/ 0x41FE0247, 0x402E84B0, -/**/ 0xDBD1D676, 0x4052D3AE, -/**/ 0xE088BEF5, 0x4079FF78, -/**/ 0x64D9A484, 0x40A33780, -/**/ 0x1974F9B5, 0x40CDC32D, -/**/ 0xCE268611, 0x40F7D295, -/**/ 0xD437D23F, 0xBCA5A192, -/**/ 0x657EFDCA, 0x3FF0FB8F, -/**/ 0x00000000, 0x40006000, -/**/ 0x251E8CF3, 0x3F6F67E7, -/**/ 0x00000000, 0x3FEC1000, -/**/ 0xB1FFFA6D, 0x4000A58D, -/**/ 0x4E7307C3, 0x400F9AC7, -/**/ 0x5EA15962, 0x4030809B, -/**/ 0x5418E1B6, 0x405501D0, -/**/ 0xB476D79F, 0x407DED80, -/**/ 0x37F33D5F, 0x40A6D2BF, -/**/ 0xA43F6C6F, 0x40D23C31, -/**/ 0xDB17BBAA, 0x40FE1E46, -/**/ 0x41D8AD56, 0xBCA7EB62, -/**/ 0x4E3ADE0A, 0x3FF11C9C, -/**/ 0x00000000, 0x4000A000, -/**/ 0xFFE9B457, 0x3F6636C7, -/**/ 0x00000000, 0x3FEC3000, -/**/ 0x1D1BDCC6, 0x4000E65A, -/**/ 0x3503CCCE, 0x40109B99, -/**/ 0x7580EC24, 0x4031E45B, -/**/ 0x1803E176, 0x405785CA, -/**/ 0x8458A77D, 0x40814DDB, -/**/ 0x6C115AB7, 0x40AB41D9, -/**/ 0xD7BCE584, 0x40D67DF0, -/**/ 0xF5487646, 0x41032EF5, -/**/ 0xF3631254, 0xBC9C4040, -/**/ 0xAC964DA8, 0x3FF13E27, -/**/ 0x00000000, 0x4000E000, -/**/ 0x6F731770, 0x3F696874, -/**/ 0x00000000, 0x3FEC5000, -/**/ 0x068FBCB4, 0x40012A82, -/**/ 0x7FE89A5F, 0x40117B79, -/**/ 0xD37F3897, 0x40337376, -/**/ 0xDF3B47A2, 0x405A704E, -/**/ 0xEB114449, 0x40841B83, -/**/ 0x8D323120, 0x40B05F75, -/**/ 0x8AE65DDD, 0x40DBEFEC, -/**/ 0xD1814341, 0x4108A2A2, -/**/ 0xFB25EC76, 0x3CA3E83D, -/**/ 0xF37FFEDA, 0x3FF16037, -/**/ 0x00000000, 0x40012000, -/**/ 0x1F796787, 0x3F75040D, -/**/ 0x00000000, 0x3FEC7000, -/**/ 0x5F8F574B, 0x40017250, -/**/ 0xB566493D, 0x40126F35, -/**/ 0x95186E3D, 0x403534F5, -/**/ 0x947D5EA5, 0x405DD60B, -/**/ 0x568C5D73, 0x40877C77, -/**/ 0xA26261F0, 0x40B3CB66, -/**/ 0xBF32194D, 0x40E17B06, -/**/ 0x11490E42, 0x410FE921, -/**/ 0x5376CB61, 0xBCA34428, -/**/ 0x236FE314, 0x3FF182D4, -/**/ 0x00000000, 0x40018000, -/**/ 0xE15169A9, 0xBF7B5F40, -/**/ 0x00000000, 0x3FEC9000, -/**/ 0x91B4C8D8, 0x4001BE19, -/**/ 0xBE69BAE6, 0x4013795B, -/**/ 0xCD6F8B02, 0x40373151, -/**/ 0xD86A7BFF, 0x4060E864, -/**/ 0x515F5BD6, 0x408B95CC, -/**/ 0xD070B4A1, 0x40B8180C, -/**/ 0xC9B24D80, 0x40E60D2C, -/**/ 0xAA392CAF, 0x4114DBF6, -/**/ 0xF5844C55, 0xBCA89BD0, -/**/ 0xDBFAF236, 0x3FF1A603, -/**/ 0x00000000, 0x4001C000, -/**/ 0xB37285FC, 0xBF4E66E4, -/**/ 0x00000000, 0x3FECB000, -/**/ 0x1757F6B1, 0x40020E3D, -/**/ 0xAE890640, 0x40149CE9, -/**/ 0xD6174F60, 0x403972D4, -/**/ 0x8C82DF92, 0x40634079, -/**/ 0xACAB5569, 0x40904BE6, -/**/ 0xB362E75A, 0x40BD8A99, -/**/ 0x389374DC, 0x40EC0ED7, -/**/ 0xCA5E9653, 0x411B8ADF, -/**/ 0x4A1E3E49, 0xBC80CBC7, -/**/ 0x704F5D26, 0x3FF1C9CF, -/**/ 0x00000000, 0x40020000, -/**/ 0xAFED62A2, 0x3F7C7A2E, -/**/ 0x00000000, 0x3FECD000, -/**/ 0x6B3395AA, 0x40026327, -/**/ 0x33FB1467, 0x4015DD66, -/**/ 0xDCF3437C, 0x403C0610, -/**/ 0xC9D7C47A, 0x406607CE, -/**/ 0xA330DC5C, 0x409360FB, -/**/ 0x38A3194B, 0x40C240B4, -/**/ 0xBAA6A879, 0x40F20437, -/**/ 0x04D6F19C, 0x41226106, -/**/ 0x15E5252C, 0x3CABCCF5, -/**/ 0xFF35681A, 0x3FF1EE3F, -/**/ 0x00000000, 0x40026000, -/**/ 0x9CAD4CE9, 0x3F593B59, -/**/ 0x00000000, 0x3FECF000, -/**/ 0x664A8350, 0x4002BD54, -/**/ 0x945190A0, 0x40173EFF, -/**/ 0xC7CC5224, 0x403EFA80, -/**/ 0x896F1658, 0x406958AA, -/**/ 0x4FD54E04, 0x40973450, -/**/ 0x4CD60C4A, 0x40C6BF55, -/**/ 0x3EFFD07C, 0x40F75EBE, -/**/ 0x9E2E6981, 0x4128D03C, -/**/ 0xC8A488FF, 0xBC987CEE, -/**/ 0x8F597306, 0x3FF2135F, -/**/ 0x00000000, 0x4002C000, -/**/ 0xABE583FE, 0xBF555CCD, -/**/ 0x00000000, 0x3FED1000, -/**/ 0x2A40EA5C, 0x40031D52, -/**/ 0x52B4947D, 0x4018C6B3, -/**/ 0x5D01146E, 0x404131AE, -/**/ 0x0163E71C, 0x406D54FB, -/**/ 0xEF3ED15B, 0x409BFE8A, -/**/ 0xA33A6B00, 0x40CC9C28, -/**/ 0x1456E1A6, 0x40FEA523, -/**/ 0xFC8790DB, 0x4130F60F, -/**/ 0x6FABCA41, 0x3CAC104F, -/**/ 0x30D87C68, 0x3FF23939, -/**/ 0x00000000, 0x40032000, -/**/ 0xF8AD1CF9, 0xBF556EAD, -/**/ 0x00000000, 0x3FED3000, -/**/ 0xC053C623, 0x400383C4, -/**/ 0x6ADBFF2C, 0x401A7A81, -/**/ 0xE219A24E, 0x40432C5B, -/**/ 0x30F4B8D8, 0x40711484, -/**/ 0xBC59423E, 0x40A10659, -/**/ 0x3D537AE5, 0x40D22C09, -/**/ 0xA4B7D930, 0x410454A2, -/**/ 0xC151F3C3, 0x41378151, -/**/ 0x779E9951, 0xBCA2F226, -/**/ 0x254E3F9C, 0x3FF25FD9, -/**/ 0x00000000, 0x40038000, -/**/ 0x9E311A8B, 0x3F5E2602, -/**/ 0x00000000, 0x3FED5000, -/**/ 0xA2F65F8C, 0x4003F16A, -/**/ 0x36C0308E, 0x401C61AF, -/**/ 0x5337FF7D, 0x40457C82, -/**/ 0x7FB84BA9, 0x407407A3, -/**/ 0x4C74DEA7, 0x40A4E476, -/**/ 0xDF1C2124, 0x40D75638, -/**/ 0xA2556E94, 0x410B5320, -/**/ 0x7D68ABBE, 0x414087CD, -/**/ 0x73A87AB9, 0xBCACD58C, -/**/ 0x10017B06, 0x3FF2874D, -/**/ 0x00000000, 0x40040000, -/**/ 0x1340E849, 0xBF7D2ABA, -/**/ 0x00000000, 0x3FED7000, -/**/ 0x7BA9A810, 0x40046722, -/**/ 0xCBC74735, 0x401E851F, -/**/ 0xF3879985, 0x40483596, -/**/ 0xCD297F00, 0x4077AAEB, -/**/ 0x31669F50, 0x40A9E3C8, -/**/ 0xB7CBB664, 0x40DE5420, -/**/ 0xB75100A0, 0x41129F7B, -/**/ 0x51D127BF, 0x4147A1C1, -/**/ 0x46D9C78F, 0x3CAC647E, -/**/ 0x304962AE, 0x3FF2AFA4, -/**/ 0x00000000, 0x40046000, -/**/ 0xA6A041C9, 0x3F6C89EE, -/**/ 0x00000000, 0x3FED9000, -/**/ 0x7A99A835, 0x4004E5F2, -/**/ 0x15B0232D, 0x402077E5, -/**/ 0xEE468866, 0x404B70C1, -/**/ 0x43A041C3, 0x407C334A, -/**/ 0x53D2C164, 0x40B036D1, -/**/ 0x10CCEDBE, 0x40E3F7B1, -/**/ 0xF6C2E560, 0x4119C160, -/**/ 0x6D21D20F, 0x415131DD, -/**/ 0x2EC50766, 0x41878683, -/**/ 0xD1134ECC, 0xBCA95596, -/**/ 0xA8F4B028, 0x3FF2D8EF, -/**/ 0x00000000, 0x4004E000, -/**/ 0x66A0D2C7, 0x3F67C9EA, -/**/ 0x00000000, 0x3FEDB000, -/**/ 0xD6373B90, 0x40056F11, -/**/ 0xC3747DF3, 0x4021D7AC, -/**/ 0x6A014D6F, 0x404F4EF3, -/**/ 0x505C454B, 0x4080F4C4, -/**/ 0x214975C5, 0x40B48D16, -/**/ 0xF57BFAC6, 0x40EAACFD, -/**/ 0x5225A6ED, 0x41222235, -/**/ 0xACBA67AB, 0x41598643, -/**/ 0xDE5D19B9, 0x419267B9, -/**/ 0x42C92439, 0xBCAEF63C, -/**/ 0xD86BED76, 0x3FF30342, -/**/ 0x00000000, 0x40056000, -/**/ 0x6E771F48, 0x3F7E23AC, -/**/ 0x00000000, 0x3FEDD000, -/**/ 0x3D2D8CF1, 0x400603F5, -/**/ 0xEF4A10FA, 0x40236A84, -/**/ 0x4EA265AF, 0x4051FDF3, -/**/ 0xD944F636, 0x408499B5, -/**/ 0x37F73BAC, 0x40BA64B8, -/**/ 0x259B27FC, 0x40F21B9F, -/**/ 0x265D5B9F, 0x412A0669, -/**/ 0x3DC806E2, 0x41635D8E, -/**/ 0x36AD8B00, 0x419D8657, -/**/ 0x3FFCDCA3, 0x3CA4CEEB, -/**/ 0xC69D2D10, 0x3FF32EB3, -/**/ 0x00000000, 0x40060000, -/**/ 0x6C678625, 0x3F5FA9E9, -/**/ 0x00000000, 0x3FEDF000, -/**/ 0x5FCDF915, 0x4006A65F, -/**/ 0x68321BDA, 0x40253B6E, -/**/ 0x706E8DA9, 0x4054D949, -/**/ 0x4A70D2D7, 0x408950EF, -/**/ 0x1F15E14E, 0x40C13319, -/**/ 0x846A9BD5, 0x40F907B1, -/**/ 0x17C39016, 0x4133139C, -/**/ 0xBC86F11B, 0x416E1DA3, -/**/ 0xD9F86F3B, 0x41A8597F, -/**/ 0x7D0D5190, 0x3C32D4F8, -/**/ 0xAFA88354, 0x3FF35B5B, -/**/ 0x00000000, 0x4006A000, -/**/ 0x37E455FD, 0x3F697D7F, -/**/ 0x00000000, 0x3FEE1000, -/**/ 0x41D1DBF9, 0x40075877, -/**/ 0xF5852184, 0x402758A8, -/**/ 0x65C0F467, 0x405861EE, -/**/ 0xD2D91276, 0x408F83C0, -/**/ 0x43EC3B0E, 0x40C6CA7C, -/**/ 0x718322C8, 0x4101A722, -/**/ 0x9533D806, 0x413CA4C6, -/**/ 0xE9899583, 0x417812B7, -/**/ 0x85EE8B86, 0x41B4B875, -/**/ 0xD1AEEED1, 0xBC99DEFB, -/**/ 0xB510476E, 0x3FF38957, -/**/ 0x00000000, 0x40076000, -/**/ 0xB8901BF9, 0xBF6E22F8, -/**/ 0x00000000, 0x3FEE3000, -/**/ 0xE1C37E57, 0x40081CE6, -/**/ 0xD3DC9910, 0x4029D4F3, -/**/ 0xE3095065, 0x405CD074, -/**/ 0xC5C38224, 0x4093E764, -/**/ 0x3CAE1F31, 0x40CEC5AE, -/**/ 0xC0645F38, 0x41097A50, -/**/ 0xD8A7F25E, 0x41461866, -/**/ 0x8C2F04A3, 0x4183DAF5, -/**/ 0xA9143C1F, 0x41C2450E, -/**/ 0x9FD995BC, 0x3C7D25BE, -/**/ 0xC35D33E6, 0x3FF3B8C9, -/**/ 0x00000000, 0x40082000, -/**/ 0xE40D49E0, 0xBF58C8F1, -/**/ 0x00000000, 0x3FEE5000, -/**/ 0x285640BB, 0x4008F706, -/**/ 0x3B2B7CD1, 0x402CC96B, -/**/ 0xC5341328, 0x40613ADF, -/**/ 0x16E928A9, 0x4099908D, -/**/ 0x7CC08A3C, 0x40D53986, -/**/ 0x31DD3E45, 0x4112DFC5, -/**/ 0xE2A13787, 0x41519499, -/**/ 0xF94424AD, 0x4190F943, -/**/ 0xCDCD49BE, 0x41D0C6BC, -/**/ 0x6D41701D, 0xBC9E2458, -/**/ 0xC088BD28, 0x3FF3E9D9, -/**/ 0x00000000, 0x40090000, -/**/ 0x537E8A00, 0xBF71F3AF, -/**/ 0x00000000, 0x3FEE7000, -/**/ 0x6562D1E0, 0x4009EB18, -/**/ 0x75651223, 0x40302C31, -/**/ 0x336E41C7, 0x4064E431, -/**/ 0xA065DA69, 0x40A0BCA6, -/**/ 0x917AF357, 0x40DE034D, -/**/ 0x4168FB0F, 0x411CD2C1, -/**/ 0x15BB794D, 0x415CFEB6, -/**/ 0x6EFFD5E5, 0x419E3EE1, -/**/ 0x1ACB4D9C, 0x41E024E7, -/**/ 0xD93F153F, 0xBC9C29C8, -/**/ 0x2183E810, 0x3FF41CB7, -/**/ 0x00000000, 0x4009E000, -/**/ 0xC5A3C038, 0x3F7630CA, -/**/ 0x00000000, 0x3FEE9000, -/**/ 0xA364196F, 0x400AFEA6, -/**/ 0x0B19A2EB, 0x403258F3, -/**/ 0x2520AC75, 0x4069BDA5, -/**/ 0x8F67EDEA, 0x40A669BC, -/**/ 0xC026C9F8, 0x40E5D78C, -/**/ 0x1E3B36C2, 0x4126CCB4, -/**/ 0xBF45C805, 0x4168EDE4, -/**/ 0x8AC89E76, 0x41AC2F6A, -/**/ 0x4CA9EB55, 0x41F0675E, -/**/ 0x0D13E3DF, 0x42336AC1, -/**/ 0xF2DE93A6, 0x3C9B1D74, -/**/ 0x155FB22E, 0x3FF4519B, -/**/ 0x00000000, 0x400B0000, -/**/ 0xBE690E67, 0xBF4595C9, -/**/ 0x00000000, 0x3FEEB000, -/**/ 0x4BD1C065, 0x400C3908, -/**/ 0x26C39FFD, 0x40350D88, -/**/ 0x69D3E79E, 0x4070296B, -/**/ 0xD7FEEA5D, 0x40AED279, -/**/ 0xFD5BD547, 0x40F072A8, -/**/ 0x4A08BB38, 0x4132CDB9, -/**/ 0x536BED06, 0x41768482, -/**/ 0x2F10E88D, 0x41BBE1FF, -/**/ 0xABDBBDAC, 0x4201C966, -/**/ 0x02E62DDA, 0x42471011, -/**/ 0x3E907E71, 0xBCA0855D, -/**/ 0x8FA73920, 0x3FF488CB, -/**/ 0x00000000, 0x400C4000, -/**/ 0xB8FE6DDF, 0xBF6BDED0, -/**/ 0x00000000, 0x3FEED000, -/**/ 0x12AAF9A9, 0x400DA439, -/**/ 0x62F25109, 0x40387D46, -/**/ 0x3F133A3F, 0x4074C339, -/**/ 0x662036F9, 0x40B5E143, -/**/ 0x74467831, 0x40F9CF04, -/**/ 0x576C6FA8, 0x41404E10, -/**/ 0xFF4F8E88, 0x41859489, -/**/ 0xB44962A9, 0x41CD88D2, -/**/ 0x97A288F3, 0x4214D838, -/**/ 0x6CF738B3, 0x425DE10B, -/**/ 0x5F7263CC, 0xBC8E9EA7, -/**/ 0xAA786F36, 0x3FF4C29F, -/**/ 0x00000000, 0x400DA000, -/**/ 0xABE6A2AD, 0x3F60E44A, -/**/ 0x00000000, 0x3FEEF000, -/**/ 0xC169B52F, 0x400F4E35, -/**/ 0x29E8699C, 0x403CF773, -/**/ 0xFC1818D6, 0x407B6D37, -/**/ 0x1386790A, 0x40C02655, -/**/ 0x4FF79D1E, 0x41054A1F, -/**/ 0x7DB0265A, 0x414E104A, -/**/ 0xE5C8114B, 0x41963C39, -/**/ 0xF52A87DB, 0x41E10156, -/**/ 0x2E9E7ABE, 0x422ADD76, -/**/ 0x6EC81361, 0x427586AB, -/**/ 0xE395EEA6, 0x3C935690, -/**/ 0x2E5965A2, 0x3FF4FF86, -/**/ 0x00000000, 0x400F4000, -/**/ 0xD36A5E70, 0x3F7C6B82 } }; - -#endif -#endif diff --git a/libgcc-math/dbl-64/atnat.h b/libgcc-math/dbl-64/atnat.h deleted file mode 100644 index 72f67f01fcd..00000000000 --- a/libgcc-math/dbl-64/atnat.h +++ /dev/null @@ -1,167 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/************************************************************************/ -/* MODULE_NAME: atnat.h */ -/* */ -/* */ -/* common data and variables definition for BIG or LITTLE ENDIAN */ -/************************************************************************/ -#ifndef ATNAT_H -#define ATNAT_H - -#define M 4 - -#ifdef BIG_ENDI - static const number - /* polynomial I */ -/**/ d3 = {{0xbfd55555, 0x55555555} }, /* -0.333... */ -/**/ d5 = {{0x3fc99999, 0x999997fd} }, /* 0.199... */ -/**/ d7 = {{0xbfc24924, 0x923f7603} }, /* -0.142... */ -/**/ d9 = {{0x3fbc71c6, 0xe5129a3b} }, /* 0.111... */ -/**/ d11 = {{0xbfb74580, 0x22b13c25} }, /* -0.090... */ -/**/ d13 = {{0x3fb375f0, 0x8b31cbce} }, /* 0.076... */ - /* polynomial II */ -/**/ f3 = {{0xbfd55555, 0x55555555} }, /* -1/3 */ -/**/ ff3 = {{0xbc755555, 0x55555555} }, /* -1/3-f3 */ -/**/ f5 = {{0x3fc99999, 0x9999999a} }, /* 1/5 */ -/**/ ff5 = {{0xbc699999, 0x9999999a} }, /* 1/5-f5 */ -/**/ f7 = {{0xbfc24924, 0x92492492} }, /* -1/7 */ -/**/ ff7 = {{0xbc624924, 0x92492492} }, /* -1/7-f7 */ -/**/ f9 = {{0x3fbc71c7, 0x1c71c71c} }, /* 1/9 */ -/**/ ff9 = {{0x3c5c71c7, 0x1c71c71c} }, /* 1/9-f9 */ -/**/ f11 = {{0xbfb745d1, 0x745d1746} }, /* -1/11 */ -/**/ f13 = {{0x3fb3b13b, 0x13b13b14} }, /* 1/13 */ -/**/ f15 = {{0xbfb11111, 0x11111111} }, /* -1/15 */ -/**/ f17 = {{0x3fae1e1e, 0x1e1e1e1e} }, /* 1/17 */ -/**/ f19 = {{0xbfaaf286, 0xbca1af28} }, /* -1/19 */ - /* constants */ -/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */ -/**/ one = {{0x3ff00000, 0x00000000} }, /* 1 */ -/**/ a = {{0x3e4bb67a, 0x00000000} }, /* 1.290e-8 */ -/**/ b = {{0x3fb00000, 0x00000000} }, /* 1/16 */ -/**/ c = {{0x3ff00000, 0x00000000} }, /* 1 */ -/**/ d = {{0x40300000, 0x00000000} }, /* 16 */ -/**/ e = {{0x43349ff2, 0x00000000} }, /* 5.805e15 */ -/**/ hpi = {{0x3ff921fb, 0x54442d18} }, /* pi/2 */ -/**/ mhpi = {{0xbff921fb, 0x54442d18} }, /* -pi/2 */ -/**/ hpi1 = {{0x3c91a626, 0x33145c07} }, /* pi/2-hpi */ -/**/ u1 = {{0x3c2d3382, 0x00000000} }, /* 7.915e-19 */ -/**/ u21 = {{0x3c6dffc0, 0x00000000} }, /* 1.301e-17 */ -/**/ u22 = {{0x3c527bd0, 0x00000000} }, /* 4.008e-18 */ -/**/ u23 = {{0x3c3cd057, 0x00000000} }, /* 1.562e-18 */ -/**/ u24 = {{0x3c329cdf, 0x00000000} }, /* 1.009e-18 */ -/**/ u31 = {{0x3c3a1edf, 0x00000000} }, /* 1.416e-18 */ -/**/ u32 = {{0x3c33f0e1, 0x00000000} }, /* 1.081e-18 */ -/**/ u4 = {{0x3bf955e4, 0x00000000} }, /* 8.584e-20 */ -/**/ u5 = {{0x3aaef2d1, 0x00000000} }, /* 5e-26 */ -/**/ u6 = {{0x3a98c56d, 0x00000000} }, /* 2.001e-26 */ -/**/ u7 = {{0x3a9375de, 0x00000000} }, /* 1.572e-26 */ -/**/ u8 = {{0x3a6eeb36, 0x00000000} }, /* 3.122e-27 */ -/**/ u9[M] ={{{0x38c1aa5b, 0x00000000} }, /* 2.658e-35 */ -/**/ {{0x35c1aa4d, 0x00000000} }, /* 9.443e-50 */ -/**/ {{0x32c1aa88, 0x00000000} }, /* 3.355e-64 */ -/**/ {{0x11c1aa56, 0x00000000} }},/* 3.818e-223 */ -/**/ two8 = {{0x40700000, 0x00000000} }, /* 2**8=256 */ -/**/ two52 = {{0x43300000, 0x00000000} }; /* 2**52 */ - -#else -#ifdef LITTLE_ENDI - static const number - /* polynomial I */ -/**/ d3 = {{0x55555555, 0xbfd55555} }, /* -0.333... */ -/**/ d5 = {{0x999997fd, 0x3fc99999} }, /* 0.199... */ -/**/ d7 = {{0x923f7603, 0xbfc24924} }, /* -0.142... */ -/**/ d9 = {{0xe5129a3b, 0x3fbc71c6} }, /* 0.111... */ -/**/ d11 = {{0x22b13c25, 0xbfb74580} }, /* -0.090... */ -/**/ d13 = {{0x8b31cbce, 0x3fb375f0} }, /* 0.076... */ - /* polynomial II */ -/**/ f3 = {{0x55555555, 0xbfd55555} }, /* -1/3 */ -/**/ ff3 = {{0x55555555, 0xbc755555} }, /* -1/3-f3 */ -/**/ f5 = {{0x9999999a, 0x3fc99999} }, /* 1/5 */ -/**/ ff5 = {{0x9999999a, 0xbc699999} }, /* 1/5-f5 */ -/**/ f7 = {{0x92492492, 0xbfc24924} }, /* -1/7 */ -/**/ ff7 = {{0x92492492, 0xbc624924} }, /* -1/7-f7 */ -/**/ f9 = {{0x1c71c71c, 0x3fbc71c7} }, /* 1/9 */ -/**/ ff9 = {{0x1c71c71c, 0x3c5c71c7} }, /* 1/9-f9 */ -/**/ f11 = {{0x745d1746, 0xbfb745d1} }, /* -1/11 */ -/**/ f13 = {{0x13b13b14, 0x3fb3b13b} }, /* 1/13 */ -/**/ f15 = {{0x11111111, 0xbfb11111} }, /* -1/15 */ -/**/ f17 = {{0x1e1e1e1e, 0x3fae1e1e} }, /* 1/17 */ -/**/ f19 = {{0xbca1af28, 0xbfaaf286} }, /* -1/19 */ - /* constants */ -/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */ -/**/ one = {{0x00000000, 0x3ff00000} }, /* 1 */ -/**/ a = {{0x00000000, 0x3e4bb67a} }, /* 1.290e-8 */ -/**/ b = {{0x00000000, 0x3fb00000} }, /* 1/16 */ -/**/ c = {{0x00000000, 0x3ff00000} }, /* 1 */ -/**/ d = {{0x00000000, 0x40300000} }, /* 16 */ -/**/ e = {{0x00000000, 0x43349ff2} }, /* 5.805e15 */ -/**/ hpi = {{0x54442d18, 0x3ff921fb} }, /* pi/2 */ -/**/ mhpi = {{0x54442d18, 0xbff921fb} }, /* -pi/2 */ -/**/ hpi1 = {{0x33145c07, 0x3c91a626} }, /* pi/2-hpi */ -/**/ u1 = {{0x00000000, 0x3c2d3382} }, /* 7.915e-19 */ -/**/ u21 = {{0x00000000, 0x3c6dffc0} }, /* 1.301e-17 */ -/**/ u22 = {{0x00000000, 0x3c527bd0} }, /* 4.008e-18 */ -/**/ u23 = {{0x00000000, 0x3c3cd057} }, /* 1.562e-18 */ -/**/ u24 = {{0x00000000, 0x3c329cdf} }, /* 1.009e-18 */ -/**/ u31 = {{0x00000000, 0x3c3a1edf} }, /* 1.416e-18 */ -/**/ u32 = {{0x00000000, 0x3c33f0e1} }, /* 1.081e-18 */ -/**/ u4 = {{0x00000000, 0x3bf955e4} }, /* 8.584e-20 */ -/**/ u5 = {{0x00000000, 0x3aaef2d1} }, /* 5e-26 */ -/**/ u6 = {{0x00000000, 0x3a98c56d} }, /* 2.001e-26 */ -/**/ u7 = {{0x00000000, 0x3a9375de} }, /* 1.572e-26 */ -/**/ u8 = {{0x00000000, 0x3a6eeb36} }, /* 3.122e-27 */ -/**/ u9[M] ={{{0x00000000, 0x38c1aa5b} }, /* 2.658e-35 */ -/**/ {{0x00000000, 0x35c1aa4d} }, /* 9.443e-50 */ -/**/ {{0x00000000, 0x32c1aa88} }, /* 3.355e-64 */ -/**/ {{0x00000000, 0x11c1aa56} }},/* 3.818e-223 */ -/**/ two8 = {{0x00000000, 0x40700000} }, /* 2**8=256 */ -/**/ two52 = {{0x00000000, 0x43300000} }; /* 2**52 */ - -#endif -#endif - -#define ZERO zero.d -#define ONE one.d -#define A a.d -#define B b.d -#define C c.d -#define D d.d -#define E e.d -#define HPI hpi.d -#define MHPI mhpi.d -#define HPI1 hpi1.d -#define U1 u1.d -#define U21 u21.d -#define U22 u22.d -#define U23 u23.d -#define U24 u24.d -#define U31 u31.d -#define U32 u32.d -#define U4 u4.d -#define U5 u5.d -#define U6 u6.d -#define U7 u7.d -#define U8 u8.d -#define TWO8 two8.d -#define TWO52 two52.d - -#endif diff --git a/libgcc-math/dbl-64/atnat2.h b/libgcc-math/dbl-64/atnat2.h deleted file mode 100644 index c6914ac0fa0..00000000000 --- a/libgcc-math/dbl-64/atnat2.h +++ /dev/null @@ -1,185 +0,0 @@ - -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/************************************************************************/ -/* MODULE_NAME: atnat2.h */ -/* */ -/* */ -/* common data and variables definition for BIG or LITTLE ENDIAN */ -/************************************************************************/ - - - -#ifndef ATNAT2_H -#define ATNAT2_H - - -#define MM 5 -#ifdef BIG_ENDI - - static const number - /* polynomial I */ -/**/ d3 = {{0xbfd55555, 0x55555555} }, /* -0.333... */ -/**/ d5 = {{0x3fc99999, 0x999997fd} }, /* 0.199... */ -/**/ d7 = {{0xbfc24924, 0x923f7603} }, /* -0.142... */ -/**/ d9 = {{0x3fbc71c6, 0xe5129a3b} }, /* 0.111... */ -/**/ d11 = {{0xbfb74580, 0x22b13c25} }, /* -0.090... */ -/**/ d13 = {{0x3fb375f0, 0x8b31cbce} }, /* 0.076... */ - /* polynomial II */ -/**/ f3 = {{0xbfd55555, 0x55555555} }, /* -1/3 */ -/**/ ff3 = {{0xbc755555, 0x55555555} }, /* -1/3-f3 */ -/**/ f5 = {{0x3fc99999, 0x9999999a} }, /* 1/5 */ -/**/ ff5 = {{0xbc699999, 0x9999999a} }, /* 1/5-f5 */ -/**/ f7 = {{0xbfc24924, 0x92492492} }, /* -1/7 */ -/**/ ff7 = {{0xbc624924, 0x92492492} }, /* -1/7-f7 */ -/**/ f9 = {{0x3fbc71c7, 0x1c71c71c} }, /* 1/9 */ -/**/ ff9 = {{0x3c5c71c7, 0x1c71c71c} }, /* 1/9-f9 */ -/**/ f11 = {{0xbfb745d1, 0x745d1746} }, /* -1/11 */ -/**/ f13 = {{0x3fb3b13b, 0x13b13b14} }, /* 1/13 */ -/**/ f15 = {{0xbfb11111, 0x11111111} }, /* -1/15 */ -/**/ f17 = {{0x3fae1e1e, 0x1e1e1e1e} }, /* 1/17 */ -/**/ f19 = {{0xbfaaf286, 0xbca1af28} }, /* -1/19 */ - /* constants */ -/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */ -/**/ mzero = {{0x80000000, 0x00000000} }, /* -0 */ -/**/ one = {{0x3ff00000, 0x00000000} }, /* 1 */ -/**/ inv16 = {{0x3fb00000, 0x00000000} }, /* 1/16 */ -/**/ opi = {{0x400921fb, 0x54442d18} }, /* pi */ -/**/ opi1 = {{0x3ca1a626, 0x33145c07} }, /* pi-opi */ -/**/ mopi = {{0xc00921fb, 0x54442d18} }, /* -pi */ -/**/ hpi = {{0x3ff921fb, 0x54442d18} }, /* pi/2 */ -/**/ hpi1 = {{0x3c91a626, 0x33145c07} }, /* pi/2-hpi */ -/**/ mhpi = {{0xbff921fb, 0x54442d18} }, /* -pi/2 */ -/**/ qpi = {{0x3fe921fb, 0x54442d18} }, /* pi/4 */ -/**/ qpi1 = {{0x3c81a626, 0x33145c07} }, /* pi/4-qpi */ -/**/ mqpi = {{0xbfe921fb, 0x54442d18} }, /* -pi/4 */ -/**/ tqpi = {{0x4002d97c, 0x7f3321d2} }, /* 3pi/4 */ -/**/ tqpi1 = {{0x3c9a7939, 0x4c9e8a0a} }, /* 3pi/4-tqpi */ -/**/ mtqpi = {{0xc002d97c, 0x7f3321d2} }, /* -3pi/4 */ -/**/ u1 = {{0x3c314c2a, 0x00000000} }, /* 9.377e-19 */ -/**/ u2 = {{0x3bf955e4, 0x00000000} }, /* 8.584e-20 */ -/**/ u3 = {{0x3bf955e4, 0x00000000} }, /* 8.584e-20 */ -/**/ u4 = {{0x3bf955e4, 0x00000000} }, /* 8.584e-20 */ -/**/ u5 = {{0x3aaef2d1, 0x00000000} }, /* 5e-26 */ -/**/ u6 = {{0x3a6eeb36, 0x00000000} }, /* 3.122e-27 */ -/**/ u7 = {{0x3a6eeb36, 0x00000000} }, /* 3.122e-27 */ -/**/ u8 = {{0x3a6eeb36, 0x00000000} }, /* 3.122e-27 */ -/**/ u91 = {{0x3c6dffc0, 0x00000000} }, /* 1.301e-17 */ -/**/ u92 = {{0x3c527bd0, 0x00000000} }, /* 4.008e-18 */ -/**/ u93 = {{0x3c3cd057, 0x00000000} }, /* 1.562e-18 */ -/**/ u94 = {{0x3c329cdf, 0x00000000} }, /* 1.009e-18 */ -/**/ ua1 = {{0x3c3a1edf, 0x00000000} }, /* 1.416e-18 */ -/**/ ua2 = {{0x3c33f0e1, 0x00000000} }, /* 1.081e-18 */ -/**/ ub = {{0x3a98c56d, 0x00000000} }, /* 2.001e-26 */ -/**/ uc = {{0x3a9375de, 0x00000000} }, /* 1.572e-26 */ -/**/ ud[MM] ={{{0x38c6eddf, 0x00000000} }, /* 3.450e-35 */ -/**/ {{0x35c6ef60, 0x00000000} }, /* 1.226e-49 */ -/**/ {{0x32c6ed2f, 0x00000000} }, /* 4.354e-64 */ -/**/ {{0x23c6eee8, 0x00000000} }, /* 2.465e-136 */ -/**/ {{0x11c6ed16, 0x00000000} }},/* 4.955e-223 */ -/**/ ue = {{0x38900e9d, 0x00000000} }, /* 3.02e-36 */ -/**/ two8 = {{0x40700000, 0x00000000} }, /* 2**8=256 */ -/**/ two52 = {{0x43300000, 0x00000000} }, /* 2**52 */ -/**/ two500 = {{0x5f300000, 0x00000000} }, /* 2**500 */ -/**/ twom500 = {{0x20b00000, 0x00000000} }, /* 2**(-500) */ -/**/ twom1022 = {{0x00100000, 0x00000000} }; /* 2**(-1022) */ - -#else -#ifdef LITTLE_ENDI - - static const number - /* polynomial I */ -/**/ d3 = {{0x55555555, 0xbfd55555} }, /* -0.333... */ -/**/ d5 = {{0x999997fd, 0x3fc99999} }, /* 0.199... */ -/**/ d7 = {{0x923f7603, 0xbfc24924} }, /* -0.142... */ -/**/ d9 = {{0xe5129a3b, 0x3fbc71c6} }, /* 0.111... */ -/**/ d11 = {{0x22b13c25, 0xbfb74580} }, /* -0.090... */ -/**/ d13 = {{0x8b31cbce, 0x3fb375f0} }, /* 0.076... */ - /* polynomial II */ -/**/ f3 = {{0x55555555, 0xbfd55555} }, /* -1/3 */ -/**/ ff3 = {{0x55555555, 0xbc755555} }, /* -1/3-f3 */ -/**/ f5 = {{0x9999999a, 0x3fc99999} }, /* 1/5 */ -/**/ ff5 = {{0x9999999a, 0xbc699999} }, /* 1/5-f5 */ -/**/ f7 = {{0x92492492, 0xbfc24924} }, /* -1/7 */ -/**/ ff7 = {{0x92492492, 0xbc624924} }, /* -1/7-f7 */ -/**/ f9 = {{0x1c71c71c, 0x3fbc71c7} }, /* 1/9 */ -/**/ ff9 = {{0x1c71c71c, 0x3c5c71c7} }, /* 1/9-f9 */ -/**/ f11 = {{0x745d1746, 0xbfb745d1} }, /* -1/11 */ -/**/ f13 = {{0x13b13b14, 0x3fb3b13b} }, /* 1/13 */ -/**/ f15 = {{0x11111111, 0xbfb11111} }, /* -1/15 */ -/**/ f17 = {{0x1e1e1e1e, 0x3fae1e1e} }, /* 1/17 */ -/**/ f19 = {{0xbca1af28, 0xbfaaf286} }, /* -1/19 */ - /* constants */ -/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */ -/**/ mzero = {{0x00000000, 0x80000000} }, /* -0 */ -/**/ one = {{0x00000000, 0x3ff00000} }, /* 1 */ -/**/ inv16 = {{0x00000000, 0x3fb00000} }, /* 1/16 */ -/**/ opi = {{0x54442d18, 0x400921fb} }, /* pi */ -/**/ opi1 = {{0x33145c07, 0x3ca1a626} }, /* pi-opi */ -/**/ mopi = {{0x54442d18, 0xc00921fb} }, /* -pi */ -/**/ hpi = {{0x54442d18, 0x3ff921fb} }, /* pi/2 */ -/**/ hpi1 = {{0x33145c07, 0x3c91a626} }, /* pi/2-hpi */ -/**/ mhpi = {{0x54442d18, 0xbff921fb} }, /* -pi/2 */ -/**/ qpi = {{0x54442d18, 0x3fe921fb} }, /* pi/4 */ -/**/ qpi1 = {{0x33145c07, 0x3c81a626} }, /* pi/4-qpi */ -/**/ mqpi = {{0x54442d18, 0xbfe921fb} }, /* -pi/4 */ -/**/ tqpi = {{0x7f3321d2, 0x4002d97c} }, /* 3pi/4 */ -/**/ tqpi1 = {{0x4c9e8a0a, 0x3c9a7939} }, /* 3pi/4-tqpi */ -/**/ mtqpi = {{0x7f3321d2, 0xc002d97c} }, /* -3pi/4 */ -/**/ u1 = {{0x00000000, 0x3c314c2a} }, /* 9.377e-19 */ -/**/ u2 = {{0x00000000, 0x3bf955e4} }, /* 8.584e-20 */ -/**/ u3 = {{0x00000000, 0x3bf955e4} }, /* 8.584e-20 */ -/**/ u4 = {{0x00000000, 0x3bf955e4} }, /* 8.584e-20 */ -/**/ u5 = {{0x00000000, 0x3aaef2d1} }, /* 5e-26 */ -/**/ u6 = {{0x00000000, 0x3a6eeb36} }, /* 3.122e-27 */ -/**/ u7 = {{0x00000000, 0x3a6eeb36} }, /* 3.122e-27 */ -/**/ u8 = {{0x00000000, 0x3a6eeb36} }, /* 3.122e-27 */ -/**/ u91 = {{0x00000000, 0x3c6dffc0} }, /* 1.301e-17 */ -/**/ u92 = {{0x00000000, 0x3c527bd0} }, /* 4.008e-18 */ -/**/ u93 = {{0x00000000, 0x3c3cd057} }, /* 1.562e-18 */ -/**/ u94 = {{0x00000000, 0x3c329cdf} }, /* 1.009e-18 */ -/**/ ua1 = {{0x00000000, 0x3c3a1edf} }, /* 1.416e-18 */ -/**/ ua2 = {{0x00000000, 0x3c33f0e1} }, /* 1.081e-18 */ -/**/ ub = {{0x00000000, 0x3a98c56d} }, /* 2.001e-26 */ -/**/ uc = {{0x00000000, 0x3a9375de} }, /* 1.572e-26 */ -/**/ ud[MM] ={{{0x00000000, 0x38c6eddf} }, /* 3.450e-35 */ -/**/ {{0x00000000, 0x35c6ef60} }, /* 1.226e-49 */ -/**/ {{0x00000000, 0x32c6ed2f} }, /* 4.354e-64 */ -/**/ {{0x00000000, 0x23c6eee8} }, /* 2.465e-136 */ -/**/ {{0x00000000, 0x11c6ed16} }},/* 4.955e-223 */ -/**/ ue = {{0x00000000, 0x38900e9d} }, /* 3.02e-36 */ -/**/ two8 = {{0x00000000, 0x40700000} }, /* 2**8=256 */ -/**/ two52 = {{0x00000000, 0x43300000} }, /* 2**52 */ -/**/ two500 = {{0x00000000, 0x5f300000} }, /* 2**500 */ -/**/ twom500 = {{0x00000000, 0x20b00000} }, /* 2**(-500) */ -/**/ twom1022 = {{0x00000000, 0x00100000} }; /* 2**(-1022) */ - -#endif -#endif - -#define ZERO zero.d -#define MZERO mzero.d -#define ONE one.d -#define TWO8 two8.d -#define TWO52 two52.d -#define TWOM1022 twom1022.d - -#endif diff --git a/libgcc-math/dbl-64/branred.c b/libgcc-math/dbl-64/branred.c deleted file mode 100644 index 76015f0c5ce..00000000000 --- a/libgcc-math/dbl-64/branred.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/*******************************************************************/ -/* */ -/* MODULE_NAME: branred.c */ -/* */ -/* FUNCTIONS: branred */ -/* */ -/* FILES NEEDED: branred.h mydefs.h endian.h mpa.h */ -/* mha.c */ -/* */ -/* Routine branred() performs range reduction of a double number */ -/* x into Double length number a+aa,such that */ -/* x=n*pi/2+(a+aa), abs(a+aa)>20)&2047; - k = (k-450)/24; - if (k<0) - k=0; - gor.x = t576.x; - gor.i[HIGH_HALF] -= ((k*24)<<20); - for (i=0;i<6;i++) - { r[i] = x1*toverp[k+i]*gor.x; gor.x *= tm24.x; } - for (i=0;i<3;i++) { - s=(r[i]+big.x)-big.x; - sum+=s; - r[i]-=s; - } - t=0; - for (i=0;i<6;i++) - t+=r[5-i]; - bb=(((((r[0]-t)+r[1])+r[2])+r[3])+r[4])+r[5]; - s=(t+big.x)-big.x; - sum+=s; - t-=s; - b=t+bb; - bb=(t-b)+bb; - s=(sum+big1.x)-big1.x; - sum-=s; - b1=b; - bb1=bb; - sum1=sum; - sum=0; - - u.x = x2; - k = (u.i[HIGH_HALF]>>20)&2047; - k = (k-450)/24; - if (k<0) - k=0; - gor.x = t576.x; - gor.i[HIGH_HALF] -= ((k*24)<<20); - for (i=0;i<6;i++) - { r[i] = x2*toverp[k+i]*gor.x; gor.x *= tm24.x; } - for (i=0;i<3;i++) { - s=(r[i]+big.x)-big.x; - sum+=s; - r[i]-=s; - } - t=0; - for (i=0;i<6;i++) - t+=r[5-i]; - bb=(((((r[0]-t)+r[1])+r[2])+r[3])+r[4])+r[5]; - s=(t+big.x)-big.x; - sum+=s; - t-=s; - b=t+bb; - bb=(t-b)+bb; - s=(sum+big1.x)-big1.x; - sum-=s; - - b2=b; - bb2=bb; - sum2=sum; - - sum=sum1+sum2; - b=b1+b2; - bb = (ABS(b1)>ABS(b2))? (b1-b)+b2 : (b2-b)+b1; - if (b > 0.5) - {b-=1.0; sum+=1.0;} - else if (b < -0.5) - {b+=1.0; sum-=1.0;} - s=b+(bb+bb1+bb2); - t=((b-s)+bb)+(bb1+bb2); - b=s*split; - t1=b-(b-s); - t2=s-t1; - b=s*hp0.x; - bb=(((t1*mp1.x-b)+t1*mp2.x)+t2*mp1.x)+(t2*mp2.x+s*hp1.x+t*hp0.x); - s=b+bb; - t=(b-s)+bb; - *a=s; - *aa=t; - return ((int) sum)&3; /* return quater of unit circle */ -} diff --git a/libgcc-math/dbl-64/branred.h b/libgcc-math/dbl-64/branred.h deleted file mode 100644 index 48f8976640f..00000000000 --- a/libgcc-math/dbl-64/branred.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/************************************************************************/ -/* MODULE_NAME: branred.h */ -/* */ -/* */ -/* common data and variables definition for BIG or LITTLE ENDIAN */ -/************************************************************************/ - -#ifndef BRANRED_H -#define BRANRED_H - - -#ifdef BIG_ENDI -static const mynumber - -/**/ t576 = {{0x63f00000, 0x00000000}}, /* 2 ^ 576 */ -/**/ tm600 = {{0x1a700000, 0x00000000}}, /* 2 ^- 600 */ -/**/ tm24 = {{0x3e700000, 0x00000000}}, /* 2 ^- 24 */ -/**/ big = {{0x43380000, 0x00000000}}, /* 6755399441055744 */ -/**/ big1 = {{0x43580000, 0x00000000}}, /* 27021597764222976 */ -/**/ hp0 = {{0x3FF921FB, 0x54442D18}} ,/* 1.5707963267948966 */ -/**/ hp1 = {{0x3C91A626, 0x33145C07}} ,/* 6.123233995736766e-17 */ -/**/ mp1 = {{0x3FF921FB, 0x58000000}}, /* 1.5707963407039642 */ -/**/ mp2 = {{0xBE4DDE97, 0x40000000}}; /*-1.3909067675399456e-08 */ - -#else -#ifdef LITTLE_ENDI -static const mynumber - -/**/ t576 = {{0x00000000, 0x63f00000}}, /* 2 ^ 576 */ -/**/ tm600 = {{0x00000000, 0x1a700000}}, /* 2 ^- 600 */ -/**/ tm24 = {{0x00000000, 0x3e700000}}, /* 2 ^- 24 */ -/**/ big = {{0x00000000, 0x43380000}}, /* 6755399441055744 */ -/**/ big1 = {{0x00000000, 0x43580000}}, /* 27021597764222976 */ -/**/ hp0 = {{0x54442D18, 0x3FF921FB}}, /* 1.5707963267948966 */ -/**/ hp1 = {{0x33145C07, 0x3C91A626}}, /* 6.123233995736766e-17 */ -/**/ mp1 = {{0x58000000, 0x3FF921FB}}, /* 1.5707963407039642 */ -/**/ mp2 = {{0x40000000, 0xBE4DDE97}}; /*-1.3909067675399456e-08 */ - -#endif -#endif - -static const double toverp[75] = { /* 2/ PI base 24*/ - 10680707.0, 7228996.0, 1387004.0, 2578385.0, 16069853.0, - 12639074.0, 9804092.0, 4427841.0, 16666979.0, 11263675.0, - 12935607.0, 2387514.0, 4345298.0, 14681673.0, 3074569.0, - 13734428.0, 16653803.0, 1880361.0, 10960616.0, 8533493.0, - 3062596.0, 8710556.0, 7349940.0, 6258241.0, 3772886.0, - 3769171.0, 3798172.0, 8675211.0, 12450088.0, 3874808.0, - 9961438.0, 366607.0, 15675153.0, 9132554.0, 7151469.0, - 3571407.0, 2607881.0, 12013382.0, 4155038.0, 6285869.0, - 7677882.0, 13102053.0, 15825725.0, 473591.0, 9065106.0, - 15363067.0, 6271263.0, 9264392.0, 5636912.0, 4652155.0, - 7056368.0, 13614112.0, 10155062.0, 1944035.0, 9527646.0, - 15080200.0, 6658437.0, 6231200.0, 6832269.0, 16767104.0, - 5075751.0, 3212806.0, 1398474.0, 7579849.0, 6349435.0, - 12618859.0, 4703257.0, 12806093.0, 14477321.0, 2786137.0, - 12875403.0, 9837734.0, 14528324.0, 13719321.0, 343717.0 }; - -static const double split = 134217729.0; - -#endif diff --git a/libgcc-math/dbl-64/dla.h b/libgcc-math/dbl-64/dla.h deleted file mode 100644 index bf73fa902e2..00000000000 --- a/libgcc-math/dbl-64/dla.h +++ /dev/null @@ -1,174 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/***********************************************************************/ -/*MODULE_NAME: dla.h */ -/* */ -/* This file holds C language macros for 'Double Length Floating Point */ -/* Arithmetic'. The macros are based on the paper: */ -/* T.J.Dekker, "A floating-point Technique for extending the */ -/* Available Precision", Number. Math. 18, 224-242 (1971). */ -/* A Double-Length number is defined by a pair (r,s), of IEEE double */ -/* precision floating point numbers that satisfy, */ -/* */ -/* abs(s) <= abs(r+s)*2**(-53)/(1+2**(-53)). */ -/* */ -/* The computer arithmetic assumed is IEEE double precision in */ -/* round to nearest mode. All variables in the macros must be of type */ -/* IEEE double. */ -/***********************************************************************/ - -/* CN = 1+2**27 = '41a0000002000000' IEEE double format */ -#define CN 134217729.0 - - -/* Exact addition of two single-length floating point numbers, Dekker. */ -/* The macro produces a double-length number (z,zz) that satisfies */ -/* z+zz = x+y exactly. */ - -#define EADD(x,y,z,zz) \ - z=(x)+(y); zz=(ABS(x)>ABS(y)) ? (((x)-(z))+(y)) : (((y)-(z))+(x)); - - -/* Exact subtraction of two single-length floating point numbers, Dekker. */ -/* The macro produces a double-length number (z,zz) that satisfies */ -/* z+zz = x-y exactly. */ - -#define ESUB(x,y,z,zz) \ - z=(x)-(y); zz=(ABS(x)>ABS(y)) ? (((x)-(z))-(y)) : ((x)-((y)+(z))); - - -/* Exact multiplication of two single-length floating point numbers, */ -/* Veltkamp. The macro produces a double-length number (z,zz) that */ -/* satisfies z+zz = x*y exactly. p,hx,tx,hy,ty are temporary */ -/* storage variables of type double. */ - -#define EMULV(x,y,z,zz,p,hx,tx,hy,ty) \ - p=CN*(x); hx=((x)-p)+p; tx=(x)-hx; \ - p=CN*(y); hy=((y)-p)+p; ty=(y)-hy; \ - z=(x)*(y); zz=(((hx*hy-z)+hx*ty)+tx*hy)+tx*ty; - - -/* Exact multiplication of two single-length floating point numbers, Dekker. */ -/* The macro produces a nearly double-length number (z,zz) (see Dekker) */ -/* that satisfies z+zz = x*y exactly. p,hx,tx,hy,ty,q are temporary */ -/* storage variables of type double. */ - -#define MUL12(x,y,z,zz,p,hx,tx,hy,ty,q) \ - p=CN*(x); hx=((x)-p)+p; tx=(x)-hx; \ - p=CN*(y); hy=((y)-p)+p; ty=(y)-hy; \ - p=hx*hy; q=hx*ty+tx*hy; z=p+q; zz=((p-z)+q)+tx*ty; - - -/* Double-length addition, Dekker. The macro produces a double-length */ -/* number (z,zz) which satisfies approximately z+zz = x+xx + y+yy. */ -/* An error bound: (abs(x+xx)+abs(y+yy))*4.94e-32. (x,xx), (y,yy) */ -/* are assumed to be double-length numbers. r,s are temporary */ -/* storage variables of type double. */ - -#define ADD2(x,xx,y,yy,z,zz,r,s) \ - r=(x)+(y); s=(ABS(x)>ABS(y)) ? \ - (((((x)-r)+(y))+(yy))+(xx)) : \ - (((((y)-r)+(x))+(xx))+(yy)); \ - z=r+s; zz=(r-z)+s; - - -/* Double-length subtraction, Dekker. The macro produces a double-length */ -/* number (z,zz) which satisfies approximately z+zz = x+xx - (y+yy). */ -/* An error bound: (abs(x+xx)+abs(y+yy))*4.94e-32. (x,xx), (y,yy) */ -/* are assumed to be double-length numbers. r,s are temporary */ -/* storage variables of type double. */ - -#define SUB2(x,xx,y,yy,z,zz,r,s) \ - r=(x)-(y); s=(ABS(x)>ABS(y)) ? \ - (((((x)-r)-(y))-(yy))+(xx)) : \ - ((((x)-((y)+r))+(xx))-(yy)); \ - z=r+s; zz=(r-z)+s; - - -/* Double-length multiplication, Dekker. The macro produces a double-length */ -/* number (z,zz) which satisfies approximately z+zz = (x+xx)*(y+yy). */ -/* An error bound: abs((x+xx)*(y+yy))*1.24e-31. (x,xx), (y,yy) */ -/* are assumed to be double-length numbers. p,hx,tx,hy,ty,q,c,cc are */ -/* temporary storage variables of type double. */ - -#define MUL2(x,xx,y,yy,z,zz,p,hx,tx,hy,ty,q,c,cc) \ - MUL12(x,y,c,cc,p,hx,tx,hy,ty,q) \ - cc=((x)*(yy)+(xx)*(y))+cc; z=c+cc; zz=(c-z)+cc; - - -/* Double-length division, Dekker. The macro produces a double-length */ -/* number (z,zz) which satisfies approximately z+zz = (x+xx)/(y+yy). */ -/* An error bound: abs((x+xx)/(y+yy))*1.50e-31. (x,xx), (y,yy) */ -/* are assumed to be double-length numbers. p,hx,tx,hy,ty,q,c,cc,u,uu */ -/* are temporary storage variables of type double. */ - -#define DIV2(x,xx,y,yy,z,zz,p,hx,tx,hy,ty,q,c,cc,u,uu) \ - c=(x)/(y); MUL12(c,y,u,uu,p,hx,tx,hy,ty,q) \ - cc=(((((x)-u)-uu)+(xx))-c*(yy))/(y); z=c+cc; zz=(c-z)+cc; - - -/* Double-length addition, slower but more accurate than ADD2. */ -/* The macro produces a double-length */ -/* number (z,zz) which satisfies approximately z+zz = (x+xx)+(y+yy). */ -/* An error bound: abs(x+xx + y+yy)*1.50e-31. (x,xx), (y,yy) */ -/* are assumed to be double-length numbers. r,rr,s,ss,u,uu,w */ -/* are temporary storage variables of type double. */ - -#define ADD2A(x,xx,y,yy,z,zz,r,rr,s,ss,u,uu,w) \ - r=(x)+(y); \ - if (ABS(x)>ABS(y)) { rr=((x)-r)+(y); s=(rr+(yy))+(xx); } \ - else { rr=((y)-r)+(x); s=(rr+(xx))+(yy); } \ - if (rr!=0.0) { \ - z=r+s; zz=(r-z)+s; } \ - else { \ - ss=(ABS(xx)>ABS(yy)) ? (((xx)-s)+(yy)) : (((yy)-s)+(xx)); \ - u=r+s; \ - uu=(ABS(r)>ABS(s)) ? ((r-u)+s) : ((s-u)+r) ; \ - w=uu+ss; z=u+w; \ - zz=(ABS(u)>ABS(w)) ? ((u-z)+w) : ((w-z)+u) ; } - - -/* Double-length subtraction, slower but more accurate than SUB2. */ -/* The macro produces a double-length */ -/* number (z,zz) which satisfies approximately z+zz = (x+xx)-(y+yy). */ -/* An error bound: abs(x+xx - (y+yy))*1.50e-31. (x,xx), (y,yy) */ -/* are assumed to be double-length numbers. r,rr,s,ss,u,uu,w */ -/* are temporary storage variables of type double. */ - -#define SUB2A(x,xx,y,yy,z,zz,r,rr,s,ss,u,uu,w) \ - r=(x)-(y); \ - if (ABS(x)>ABS(y)) { rr=((x)-r)-(y); s=(rr-(yy))+(xx); } \ - else { rr=(x)-((y)+r); s=(rr+(xx))-(yy); } \ - if (rr!=0.0) { \ - z=r+s; zz=(r-z)+s; } \ - else { \ - ss=(ABS(xx)>ABS(yy)) ? (((xx)-s)-(yy)) : ((xx)-((yy)+s)); \ - u=r+s; \ - uu=(ABS(r)>ABS(s)) ? ((r-u)+s) : ((s-u)+r) ; \ - w=uu+ss; z=u+w; \ - zz=(ABS(u)>ABS(w)) ? ((u-z)+w) : ((w-z)+u) ; } - - - - - - - diff --git a/libgcc-math/dbl-64/doasin.c b/libgcc-math/dbl-64/doasin.c deleted file mode 100644 index 79f344af2dc..00000000000 --- a/libgcc-math/dbl-64/doasin.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/**********************************************************************/ -/* MODULE_NAME: doasin.c */ -/* */ -/* FUNCTION: doasin */ -/* */ -/* FILES NEEDED:endian.h mydefs.h dla.h doasin.h */ -/* mpa.c */ -/* */ -/* Compute arcsin(x,dx,v) of double-length number (x+dx) the result */ -/* stored in v where v= v[0]+v[1] =arcsin(x+dx) */ -/**********************************************************************/ - -#include "endian.h" -#include "mydefs.h" -#include "dla.h" -#include "math_private.h" - -/********************************************************************/ -/* Compute arcsin(x,dx,v) of double-length number (x+dx) the result */ -/* stored in v where v= v[0]+v[1] =arcsin(x+dx) */ -/********************************************************************/ -void __doasin(double x, double dx, double v[]) { - -#include "doasin.h" - - static const double - d5 = 0.22372159090911789889975459505194491E-01, - d6 = 0.17352764422456822913014975683014622E-01, - d7 = 0.13964843843786693521653681033981614E-01, - d8 = 0.11551791438485242609036067259086589E-01, - d9 = 0.97622386568166960207425666787248914E-02, - d10 = 0.83638737193775788576092749009744976E-02, - d11 = 0.79470250400727425881446981833568758E-02; - - double xx,p,pp,u,uu,r,s; - double hx,tx,hy,ty,tp,tq,tc,tcc; - - -/* Taylor series for arcsin for Double-Length numbers */ - xx = x*x+2.0*x*dx; - p = ((((((d11*xx+d10)*xx+d9)*xx+d8)*xx+d7)*xx+d6)*xx+d5)*xx; - pp = 0; - - MUL2(x,dx,x,dx,u,uu,tp,hx,tx,hy,ty,tq,tc,tcc); - ADD2(p,pp,c4.x,cc4.x,p,pp,r,s); - MUL2(p,pp,u,uu,p,pp,tp,hx,tx,hy,ty,tq,tc,tcc); - ADD2(p,pp,c3.x,cc3.x,p,pp,r,s); - MUL2(p,pp,u,uu,p,pp,tp,hx,tx,hy,ty,tq,tc,tcc); - ADD2(p,pp,c2.x,cc2.x,p,pp,r,s); - MUL2(p,pp,u,uu,p,pp,tp,hx,tx,hy,ty,tq,tc,tcc); - ADD2(p,pp,c1.x,cc1.x,p,pp,r,s); - MUL2(p,pp,u,uu,p,pp,tp,hx,tx,hy,ty,tq,tc,tcc); - MUL2(p,pp,x,dx,p,pp,tp,hx,tx,hy,ty,tq,tc,tcc); - ADD2(p,pp,x,dx,p,pp,r,s); - v[0]=p; - v[1]=pp; /* arcsin(x+dx)=v[0]+v[1] */ -} diff --git a/libgcc-math/dbl-64/doasin.h b/libgcc-math/dbl-64/doasin.h deleted file mode 100644 index 0625e518526..00000000000 --- a/libgcc-math/dbl-64/doasin.h +++ /dev/null @@ -1,64 +0,0 @@ - -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/************************************************************************/ -/* MODULE_NAME: doasin.h */ -/* */ -/* */ -/* common data and variables definition for BIG or LITTLE ENDIAN */ -/************************************************************************/ - - - -#ifndef DOASIN_H -#define DOASIN_H - -#ifdef BIG_ENDI - - static const mynumber -/**/ c1 = {{0x3FC55555, 0x55555555}}, /* 0.16666666666666666 */ -/**/ cc1 = {{0x3C655555, 0x55775389}}, /* 9.2518585419753846e-18 */ -/**/ c2 = {{0x3FB33333, 0x33333333}}, /* 0.074999999999999997 */ -/**/ cc2 = {{0x3C499993, 0x63F1A115}}, /* 2.7755472886508899e-18 */ -/**/ c3 = {{0x3FA6DB6D, 0xB6DB6DB7}}, /* 0.044642857142857144 */ -/**/ cc3 = {{0xBC320FC0, 0x3D5CF0C5}}, /* -9.7911734574147224e-19 */ -/**/ c4 = {{0x3F9F1C71, 0xC71C71C5}}, /* 0.030381944444444437 */ -/**/ cc4 = {{0xBC02B240, 0xFF23ED1E}}; /* -1.2669108566898312e-19 */ - -#else -#ifdef LITTLE_ENDI - - static const mynumber -/**/ c1 = {{0x55555555, 0x3FC55555}}, /* 0.16666666666666666 */ -/**/ cc1 = {{0x55775389, 0x3C655555}}, /* 9.2518585419753846e-18 */ -/**/ c2 = {{0x33333333, 0x3FB33333}}, /* 0.074999999999999997 */ -/**/ cc2 = {{0x63F1A115, 0x3C499993}}, /* 2.7755472886508899e-18 */ -/**/ c3 = {{0xB6DB6DB7, 0x3FA6DB6D}}, /* 0.044642857142857144 */ -/**/ cc3 = {{0x3D5CF0C5, 0xBC320FC0}}, /* -9.7911734574147224e-19 */ -/**/ c4 = {{0xC71C71C5, 0x3F9F1C71}}, /* 0.030381944444444437 */ -/**/ cc4 = {{0xFF23ED1E, 0xBC02B240}}; /* -1.2669108566898312e-19 */ - - -#endif -#endif - - -#endif diff --git a/libgcc-math/dbl-64/dosincos.c b/libgcc-math/dbl-64/dosincos.c deleted file mode 100644 index 1d347a4bc78..00000000000 --- a/libgcc-math/dbl-64/dosincos.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/********************************************************************/ -/* */ -/* MODULE_NAME: dosincos.c */ -/* */ -/* */ -/* FUNCTIONS: dubsin */ -/* dubcos */ -/* docos */ -/* FILES NEEDED: endian.h mydefs.h dla.h dosincos.h */ -/* sincos.tbl */ -/* */ -/* Routines compute sin() and cos() as Double-Length numbers */ -/********************************************************************/ - - - -#include "endian.h" -#include "mydefs.h" -#include "sincos.tbl" -#include "dla.h" -#include "dosincos.h" -#include "math_private.h" - -/***********************************************************************/ -/* Routine receive Double-Length number (x+dx) and computing sin(x+dx) */ -/* as Double-Length number and store it at array v .It computes it by */ -/* arithmetic action on Double-Length numbers */ -/*(x+dx) between 0 and PI/4 */ -/***********************************************************************/ - -void __dubsin(double x, double dx, double v[]) { - double r,s,p,hx,tx,hy,ty,q,c,cc,d,dd,d2,dd2,e,ee, - sn,ssn,cs,ccs,ds,dss,dc,dcc; -#if 0 - double xx,y,yy,z,zz; -#endif - mynumber u; - int4 k; - - u.x=x+big.x; - k = u.i[LOW_HALF]<<2; - x=x-(u.x-big.x); - d=x+dx; - dd=(x-d)+dx; - /* sin(x+dx)=sin(Xi+t)=sin(Xi)*cos(t) + cos(Xi)sin(t) where t ->0 */ - MUL2(d,dd,d,dd,d2,dd2,p,hx,tx,hy,ty,q,c,cc); - sn=sincos.x[k]; /* */ - ssn=sincos.x[k+1]; /* sin(Xi) and cos(Xi) */ - cs=sincos.x[k+2]; /* */ - ccs=sincos.x[k+3]; /* */ - MUL2(d2,dd2,s7.x,ss7.x,ds,dss,p,hx,tx,hy,ty,q,c,cc); /* Taylor */ - ADD2(ds,dss,s5.x,ss5.x,ds,dss,r,s); - MUL2(d2,dd2,ds,dss,ds,dss,p,hx,tx,hy,ty,q,c,cc); /* series */ - ADD2(ds,dss,s3.x,ss3.x,ds,dss,r,s); - MUL2(d2,dd2,ds,dss,ds,dss,p,hx,tx,hy,ty,q,c,cc); /* for sin */ - MUL2(d,dd,ds,dss,ds,dss,p,hx,tx,hy,ty,q,c,cc); - ADD2(ds,dss,d,dd,ds,dss,r,s); /* ds=sin(t) */ - - MUL2(d2,dd2,c8.x,cc8.x,dc,dcc,p,hx,tx,hy,ty,q,c,cc); ;/* Taylor */ - ADD2(dc,dcc,c6.x,cc6.x,dc,dcc,r,s); - MUL2(d2,dd2,dc,dcc,dc,dcc,p,hx,tx,hy,ty,q,c,cc); /* series */ - ADD2(dc,dcc,c4.x,cc4.x,dc,dcc,r,s); - MUL2(d2,dd2,dc,dcc,dc,dcc,p,hx,tx,hy,ty,q,c,cc); /* for cos */ - ADD2(dc,dcc,c2.x,cc2.x,dc,dcc,r,s); - MUL2(d2,dd2,dc,dcc,dc,dcc,p,hx,tx,hy,ty,q,c,cc); /* dc=cos(t) */ - - MUL2(cs,ccs,ds,dss,e,ee,p,hx,tx,hy,ty,q,c,cc); - MUL2(dc,dcc,sn,ssn,dc,dcc,p,hx,tx,hy,ty,q,c,cc); - SUB2(e,ee,dc,dcc,e,ee,r,s); - ADD2(e,ee,sn,ssn,e,ee,r,s); /* e+ee=sin(x+dx) */ - - v[0]=e; - v[1]=ee; -} -/**********************************************************************/ -/* Routine receive Double-Length number (x+dx) and computes cos(x+dx) */ -/* as Double-Length number and store it in array v .It computes it by */ -/* arithmetic action on Double-Length numbers */ -/*(x+dx) between 0 and PI/4 */ -/**********************************************************************/ - -void __dubcos(double x, double dx, double v[]) { - double r,s,p,hx,tx,hy,ty,q,c,cc,d,dd,d2,dd2,e,ee, - sn,ssn,cs,ccs,ds,dss,dc,dcc; -#if 0 - double xx,y,yy,z,zz; -#endif - mynumber u; - int4 k; - u.x=x+big.x; - k = u.i[LOW_HALF]<<2; - x=x-(u.x-big.x); - d=x+dx; - dd=(x-d)+dx; /* cos(x+dx)=cos(Xi+t)=cos(Xi)cos(t) - sin(Xi)sin(t) */ - MUL2(d,dd,d,dd,d2,dd2,p,hx,tx,hy,ty,q,c,cc); - sn=sincos.x[k]; /* */ - ssn=sincos.x[k+1]; /* sin(Xi) and cos(Xi) */ - cs=sincos.x[k+2]; /* */ - ccs=sincos.x[k+3]; /* */ - MUL2(d2,dd2,s7.x,ss7.x,ds,dss,p,hx,tx,hy,ty,q,c,cc); - ADD2(ds,dss,s5.x,ss5.x,ds,dss,r,s); - MUL2(d2,dd2,ds,dss,ds,dss,p,hx,tx,hy,ty,q,c,cc); - ADD2(ds,dss,s3.x,ss3.x,ds,dss,r,s); - MUL2(d2,dd2,ds,dss,ds,dss,p,hx,tx,hy,ty,q,c,cc); - MUL2(d,dd,ds,dss,ds,dss,p,hx,tx,hy,ty,q,c,cc); - ADD2(ds,dss,d,dd,ds,dss,r,s); - - MUL2(d2,dd2,c8.x,cc8.x,dc,dcc,p,hx,tx,hy,ty,q,c,cc); - ADD2(dc,dcc,c6.x,cc6.x,dc,dcc,r,s); - MUL2(d2,dd2,dc,dcc,dc,dcc,p,hx,tx,hy,ty,q,c,cc); - ADD2(dc,dcc,c4.x,cc4.x,dc,dcc,r,s); - MUL2(d2,dd2,dc,dcc,dc,dcc,p,hx,tx,hy,ty,q,c,cc); - ADD2(dc,dcc,c2.x,cc2.x,dc,dcc,r,s); - MUL2(d2,dd2,dc,dcc,dc,dcc,p,hx,tx,hy,ty,q,c,cc); - - MUL2(cs,ccs,ds,dss,e,ee,p,hx,tx,hy,ty,q,c,cc); - MUL2(dc,dcc,sn,ssn,dc,dcc,p,hx,tx,hy,ty,q,c,cc); - - MUL2(d2,dd2,s7.x,ss7.x,ds,dss,p,hx,tx,hy,ty,q,c,cc); - ADD2(ds,dss,s5.x,ss5.x,ds,dss,r,s); - MUL2(d2,dd2,ds,dss,ds,dss,p,hx,tx,hy,ty,q,c,cc); - ADD2(ds,dss,s3.x,ss3.x,ds,dss,r,s); - MUL2(d2,dd2,ds,dss,ds,dss,p,hx,tx,hy,ty,q,c,cc); - MUL2(d,dd,ds,dss,ds,dss,p,hx,tx,hy,ty,q,c,cc); - ADD2(ds,dss,d,dd,ds,dss,r,s); - MUL2(d2,dd2,c8.x,cc8.x,dc,dcc,p,hx,tx,hy,ty,q,c,cc); - ADD2(dc,dcc,c6.x,cc6.x,dc,dcc,r,s); - MUL2(d2,dd2,dc,dcc,dc,dcc,p,hx,tx,hy,ty,q,c,cc); - ADD2(dc,dcc,c4.x,cc4.x,dc,dcc,r,s); - MUL2(d2,dd2,dc,dcc,dc,dcc,p,hx,tx,hy,ty,q,c,cc); - ADD2(dc,dcc,c2.x,cc2.x,dc,dcc,r,s); - MUL2(d2,dd2,dc,dcc,dc,dcc,p,hx,tx,hy,ty,q,c,cc); - MUL2(sn,ssn,ds,dss,e,ee,p,hx,tx,hy,ty,q,c,cc); - MUL2(dc,dcc,cs,ccs,dc,dcc,p,hx,tx,hy,ty,q,c,cc); - ADD2(e,ee,dc,dcc,e,ee,r,s); - SUB2(cs,ccs,e,ee,e,ee,r,s); - - v[0]=e; - v[1]=ee; -} -/**********************************************************************/ -/* Routine receive Double-Length number (x+dx) and computes cos(x+dx) */ -/* as Double-Length number and store it in array v */ -/**********************************************************************/ -void __docos(double x, double dx, double v[]) { - double y,yy,p,w[2]; - if (x>0) {y=x; yy=dx;} - else {y=-x; yy=-dx;} - if (y<0.5*hp0.x) /* y< PI/4 */ - {__dubcos(y,yy,w); v[0]=w[0]; v[1]=w[1];} - else if (y<1.5*hp0.x) { /* y< 3/4 * PI */ - p=hp0.x-y; /* p = PI/2 - y */ - yy=hp1.x-yy; - y=p+yy; - yy=(p-y)+yy; - if (y>0) {__dubsin(y,yy,w); v[0]=w[0]; v[1]=w[1];} - /* cos(x) = sin ( 90 - x ) */ - else {__dubsin(-y,-yy,w); v[0]=-w[0]; v[1]=-w[1]; - } - } - else { /* y>= 3/4 * PI */ - p=2.0*hp0.x-y; /* p = PI- y */ - yy=2.0*hp1.x-yy; - y=p+yy; - yy=(p-y)+yy; - __dubcos(y,yy,w); - v[0]=-w[0]; - v[1]=-w[1]; - } -} diff --git a/libgcc-math/dbl-64/dosincos.h b/libgcc-math/dbl-64/dosincos.h deleted file mode 100644 index 49d61cd9179..00000000000 --- a/libgcc-math/dbl-64/dosincos.h +++ /dev/null @@ -1,81 +0,0 @@ - -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/************************************************************************/ -/* MODULE_NAME: dosincos.h */ -/* */ -/* */ -/* common data and variables definition for BIG or LITTLE ENDIAN */ -/************************************************************************/ - - - -#ifndef DOSINCOS_H -#define DOSINCOS_H - - -#ifdef BIG_ENDI -static const mynumber -/**/ s3 = {{0xBFC55555, 0x55555555}},/* -0.16666666666666666 */ -/**/ ss3 = {{0xBC6553AA, 0xE77EE482}},/* -9.2490366677784492e-18 */ -/**/ s5 = {{0x3F811111, 0x11110F15}},/* 0.008333333333332452 */ -/**/ ss5 = {{0xBC21AC06, 0xDA488820}},/* -4.7899996586987931e-19 */ -/**/ s7 = {{0xBF2A019F, 0x5816C78D}},/* -0.00019841261022928957 */ -/**/ ss7 = {{0x3BCDCEC9, 0x6A18BF2A}},/* 1.2624077757871259e-20 */ -/**/ c2 = {{0x3FE00000, 0x00000000}},/* 0.5 */ -/**/ cc2 = {{0xBA282FD8, 0x00000000}},/* -1.5264073330037701e-28 */ -/**/ c4 = {{0xBFA55555, 0x55555555}},/* -0.041666666666666664 */ -/**/ cc4 = {{0xBC4554BC, 0x2FFF257E}},/* -2.312711276085743e-18 */ -/**/ c6 = {{0x3F56C16C, 0x16C16A96}},/* 0.0013888888888888055 */ -/**/ cc6 = {{0xBBD2E846, 0xE6346F14}},/* -1.6015133010194884e-20 */ -/**/ c8 = {{0xBEFA019F, 0x821D5987}},/* -2.480157866754367e-05 */ -/**/ cc8 = {{0x3B7AB71E, 0x72FFE5CC}},/* 3.5357416224857556e-22 */ - -/**/ big = {{0x42c80000, 0x00000000}}, /* 52776558133248 */ - -/**/ hp0 = {{0x3FF921FB, 0x54442D18}}, /* PI / 2 */ -/**/ hp1 = {{0x3C91A626, 0x33145C07}}; /* 6.123233995736766e-17 */ -#else -#ifdef LITTLE_ENDI -static const mynumber -/**/ s3 = {{0x55555555, 0xBFC55555}},/* -0.16666666666666666 */ -/**/ ss3 = {{0xE77EE482, 0xBC6553AA}},/* -9.2490366677784492e-18 */ -/**/ s5 = {{0x11110F15, 0x3F811111}},/* 0.008333333333332452 */ -/**/ ss5 = {{0xDA488820, 0xBC21AC06}},/* -4.7899996586987931e-19 */ -/**/ s7 = {{0x5816C78D, 0xBF2A019F}},/* -0.00019841261022928957 */ -/**/ ss7 = {{0x6A18BF2A, 0x3BCDCEC9}},/* 1.2624077757871259e-20 */ -/**/ c2 = {{0x00000000, 0x3FE00000}},/* 0.5 */ -/**/ cc2 = {{0x00000000, 0xBA282FD8}},/* -1.5264073330037701e-28 */ -/**/ c4 = {{0x55555555, 0xBFA55555}},/* -0.041666666666666664 */ -/**/ cc4 = {{0x2FFF257E, 0xBC4554BC}},/* -2.312711276085743e-18 */ -/**/ c6 = {{0x16C16A96, 0x3F56C16C}},/* 0.0013888888888888055 */ -/**/ cc6 = {{0xE6346F14, 0xBBD2E846}},/* -1.6015133010194884e-20 */ -/**/ c8 = {{0x821D5987, 0xBEFA019F}},/* -2.480157866754367e-05 */ -/**/ cc8 = {{0x72FFE5CC, 0x3B7AB71E}},/* 3.5357416224857556e-22 */ - -/**/ big = {{0x00000000, 0x42c80000}}, /* 52776558133248 */ - -/**/ hp0 = {{0x54442D18, 0x3FF921FB}}, /* PI / 2 */ -/**/ hp1 = {{0x33145C07, 0x3C91A626}}; /* 6.123233995736766e-17 */ -#endif -#endif - -#endif diff --git a/libgcc-math/dbl-64/e_asin.c b/libgcc-math/dbl-64/e_asin.c deleted file mode 100644 index ce5d227b71e..00000000000 --- a/libgcc-math/dbl-64/e_asin.c +++ /dev/null @@ -1,637 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/******************************************************************/ -/* MODULE_NAME:uasncs.c */ -/* */ -/* FUNCTIONS: uasin */ -/* uacos */ -/* FILES NEEDED: dla.h endian.h mpa.h mydefs.h usncs.h */ -/* doasin.c sincos32.c dosincos.c mpa.c */ -/* sincos.tbl asincos.tbl powtwo.tbl root.tbl */ -/* */ -/* Ultimate asin/acos routines. Given an IEEE double machine */ -/* number x, compute the correctly rounded value of */ -/* arcsin(x)or arccos(x) according to the function called. */ -/* Assumption: Machine arithmetic operations are performed in */ -/* round to nearest mode of IEEE 754 standard. */ -/* */ -/******************************************************************/ -#include "endian.h" -#include "mydefs.h" -#include "asincos.tbl" -#include "root.tbl" -#include "powtwo.tbl" -#include "MathLib.h" -#include "uasncs.h" -#include "math_private.h" - -void __doasin(double x, double dx, double w[]); -void __dubsin(double x, double dx, double v[]); -void __dubcos(double x, double dx, double v[]); -void __docos(double x, double dx, double v[]); -double __sin32(double x, double res, double res1); -double __cos32(double x, double res, double res1); - -/***************************************************************************/ -/* An ultimate asin routine. Given an IEEE double machine number x */ -/* it computes the correctly rounded (to nearest) value of arcsin(x) */ -/***************************************************************************/ -double __ieee754_asin(double x){ - double x1,x2,xx,s1,s2,res1,p,t,res,r,cor,cc,y,c,z,w[2]; - mynumber u,v; - int4 k,m,n; -#if 0 - int4 nn; -#endif - - u.x = x; - m = u.i[HIGH_HALF]; - k = 0x7fffffff&m; /* no sign */ - - if (k < 0x3e500000) return x; /* for x->0 => sin(x)=x */ - /*----------------------2^-26 <= |x| < 2^ -3 -----------------*/ - else - if (k < 0x3fc00000) { - x2 = x*x; - t = (((((f6*x2 + f5)*x2 + f4)*x2 + f3)*x2 + f2)*x2 + f1)*(x2*x); - res = x+t; /* res=arcsin(x) according to Taylor series */ - cor = (x-res)+t; - if (res == res+1.025*cor) return res; - else { - x1 = x+big; - xx = x*x; - x1 -= big; - x2 = x - x1; - p = x1*x1*x1; - s1 = a1.x*p; - s2 = ((((((c7*xx + c6)*xx + c5)*xx + c4)*xx + c3)*xx + c2)*xx*xx*x + - ((a1.x+a2.x)*x2*x2+ 0.5*x1*x)*x2) + a2.x*p; - res1 = x+s1; - s2 = ((x-res1)+s1)+s2; - res = res1+s2; - cor = (res1-res)+s2; - if (res == res+1.00014*cor) return res; - else { - __doasin(x,0,w); - if (w[0]==(w[0]+1.00000001*w[1])) return w[0]; - else { - y=ABS(x); - res=ABS(w[0]); - res1=ABS(w[0]+1.1*w[1]); - return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1); - } - } - } - } - /*---------------------0.125 <= |x| < 0.5 -----------------------------*/ - else if (k < 0x3fe00000) { - if (k<0x3fd00000) n = 11*((k&0x000fffff)>>15); - else n = 11*((k&0x000fffff)>>14)+352; - if (m>0) xx = x - asncs.x[n]; - else xx = -x - asncs.x[n]; - t = asncs.x[n+1]*xx; - p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+xx*(asncs.x[n+5] - +xx*asncs.x[n+6]))))+asncs.x[n+7]; - t+=p; - res =asncs.x[n+8] +t; - cor = (asncs.x[n+8]-res)+t; - if (res == res+1.05*cor) return (m>0)?res:-res; - else { - r=asncs.x[n+8]+xx*asncs.x[n+9]; - t=((asncs.x[n+8]-r)+xx*asncs.x[n+9])+(p+xx*asncs.x[n+10]); - res = r+t; - cor = (r-res)+t; - if (res == res+1.0005*cor) return (m>0)?res:-res; - else { - res1=res+1.1*cor; - z=0.5*(res1-res); - __dubsin(res,z,w); - z=(w[0]-ABS(x))+w[1]; - if (z>1.0e-27) return (m>0)?min(res,res1):-min(res,res1); - else if (z<-1.0e-27) return (m>0)?max(res,res1):-max(res,res1); - else { - y=ABS(x); - return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1); - } - } - } - } /* else if (k < 0x3fe00000) */ - /*-------------------- 0.5 <= |x| < 0.75 -----------------------------*/ - else - if (k < 0x3fe80000) { - n = 1056+((k&0x000fe000)>>11)*3; - if (m>0) xx = x - asncs.x[n]; - else xx = -x - asncs.x[n]; - t = asncs.x[n+1]*xx; - p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+xx*(asncs.x[n+5] - +xx*(asncs.x[n+6]+xx*asncs.x[n+7])))))+asncs.x[n+8]; - t+=p; - res =asncs.x[n+9] +t; - cor = (asncs.x[n+9]-res)+t; - if (res == res+1.01*cor) return (m>0)?res:-res; - else { - r=asncs.x[n+9]+xx*asncs.x[n+10]; - t=((asncs.x[n+9]-r)+xx*asncs.x[n+10])+(p+xx*asncs.x[n+11]); - res = r+t; - cor = (r-res)+t; - if (res == res+1.0005*cor) return (m>0)?res:-res; - else { - res1=res+1.1*cor; - z=0.5*(res1-res); - __dubsin(res,z,w); - z=(w[0]-ABS(x))+w[1]; - if (z>1.0e-27) return (m>0)?min(res,res1):-min(res,res1); - else if (z<-1.0e-27) return (m>0)?max(res,res1):-max(res,res1); - else { - y=ABS(x); - return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1); - } - } - } - } /* else if (k < 0x3fe80000) */ - /*--------------------- 0.75 <= |x|< 0.921875 ----------------------*/ - else - if (k < 0x3fed8000) { - n = 992+((k&0x000fe000)>>13)*13; - if (m>0) xx = x - asncs.x[n]; - else xx = -x - asncs.x[n]; - t = asncs.x[n+1]*xx; - p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+xx*(asncs.x[n+5] - +xx*(asncs.x[n+6]+xx*(asncs.x[n+7]+xx*asncs.x[n+8]))))))+asncs.x[n+9]; - t+=p; - res =asncs.x[n+10] +t; - cor = (asncs.x[n+10]-res)+t; - if (res == res+1.01*cor) return (m>0)?res:-res; - else { - r=asncs.x[n+10]+xx*asncs.x[n+11]; - t=((asncs.x[n+10]-r)+xx*asncs.x[n+11])+(p+xx*asncs.x[n+12]); - res = r+t; - cor = (r-res)+t; - if (res == res+1.0008*cor) return (m>0)?res:-res; - else { - res1=res+1.1*cor; - z=0.5*(res1-res); - y=hp0.x-res; - z=((hp0.x-y)-res)+(hp1.x-z); - __dubcos(y,z,w); - z=(w[0]-ABS(x))+w[1]; - if (z>1.0e-27) return (m>0)?min(res,res1):-min(res,res1); - else if (z<-1.0e-27) return (m>0)?max(res,res1):-max(res,res1); - else { - y=ABS(x); - return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1); - } - } - } - } /* else if (k < 0x3fed8000) */ - /*-------------------0.921875 <= |x| < 0.953125 ------------------------*/ - else - if (k < 0x3fee8000) { - n = 884+((k&0x000fe000)>>13)*14; - if (m>0) xx = x - asncs.x[n]; - else xx = -x - asncs.x[n]; - t = asncs.x[n+1]*xx; - p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+ - xx*(asncs.x[n+5]+xx*(asncs.x[n+6] - +xx*(asncs.x[n+7]+xx*(asncs.x[n+8]+ - xx*asncs.x[n+9])))))))+asncs.x[n+10]; - t+=p; - res =asncs.x[n+11] +t; - cor = (asncs.x[n+11]-res)+t; - if (res == res+1.01*cor) return (m>0)?res:-res; - else { - r=asncs.x[n+11]+xx*asncs.x[n+12]; - t=((asncs.x[n+11]-r)+xx*asncs.x[n+12])+(p+xx*asncs.x[n+13]); - res = r+t; - cor = (r-res)+t; - if (res == res+1.0007*cor) return (m>0)?res:-res; - else { - res1=res+1.1*cor; - z=0.5*(res1-res); - y=(hp0.x-res)-z; - z=y+hp1.x; - y=(y-z)+hp1.x; - __dubcos(z,y,w); - z=(w[0]-ABS(x))+w[1]; - if (z>1.0e-27) return (m>0)?min(res,res1):-min(res,res1); - else if (z<-1.0e-27) return (m>0)?max(res,res1):-max(res,res1); - else { - y=ABS(x); - return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1); - } - } - } - } /* else if (k < 0x3fee8000) */ - - /*--------------------0.953125 <= |x| < 0.96875 ------------------------*/ - else - if (k < 0x3fef0000) { - n = 768+((k&0x000fe000)>>13)*15; - if (m>0) xx = x - asncs.x[n]; - else xx = -x - asncs.x[n]; - t = asncs.x[n+1]*xx; - p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+ - xx*(asncs.x[n+5]+xx*(asncs.x[n+6] - +xx*(asncs.x[n+7]+xx*(asncs.x[n+8]+ - xx*(asncs.x[n+9]+xx*asncs.x[n+10]))))))))+asncs.x[n+11]; - t+=p; - res =asncs.x[n+12] +t; - cor = (asncs.x[n+12]-res)+t; - if (res == res+1.01*cor) return (m>0)?res:-res; - else { - r=asncs.x[n+12]+xx*asncs.x[n+13]; - t=((asncs.x[n+12]-r)+xx*asncs.x[n+13])+(p+xx*asncs.x[n+14]); - res = r+t; - cor = (r-res)+t; - if (res == res+1.0007*cor) return (m>0)?res:-res; - else { - res1=res+1.1*cor; - z=0.5*(res1-res); - y=(hp0.x-res)-z; - z=y+hp1.x; - y=(y-z)+hp1.x; - __dubcos(z,y,w); - z=(w[0]-ABS(x))+w[1]; - if (z>1.0e-27) return (m>0)?min(res,res1):-min(res,res1); - else if (z<-1.0e-27) return (m>0)?max(res,res1):-max(res,res1); - else { - y=ABS(x); - return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1); - } - } - } - } /* else if (k < 0x3fef0000) */ - /*--------------------0.96875 <= |x| < 1 --------------------------------*/ - else - if (k<0x3ff00000) { - z = 0.5*((m>0)?(1.0-x):(1.0+x)); - v.x=z; - k=v.i[HIGH_HALF]; - t=inroot[(k&0x001fffff)>>14]*powtwo[511-(k>>21)]; - r=1.0-t*t*z; - t = t*(rt0+r*(rt1+r*(rt2+r*rt3))); - c=t*z; - t=c*(1.5-0.5*t*c); - y=(c+t24)-t24; - cc = (z-y*y)/(t+y); - p=(((((f6*z+f5)*z+f4)*z+f3)*z+f2)*z+f1)*z; - cor = (hp1.x - 2.0*cc)-2.0*(y+cc)*p; - res1 = hp0.x - 2.0*y; - res =res1 + cor; - if (res == res+1.003*((res1-res)+cor)) return (m>0)?res:-res; - else { - c=y+cc; - cc=(y-c)+cc; - __doasin(c,cc,w); - res1=hp0.x-2.0*w[0]; - cor=((hp0.x-res1)-2.0*w[0])+(hp1.x-2.0*w[1]); - res = res1+cor; - cor = (res1-res)+cor; - if (res==(res+1.0000001*cor)) return (m>0)?res:-res; - else { - y=ABS(x); - res1=res+1.1*cor; - return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1); - } - } - } /* else if (k < 0x3ff00000) */ - /*---------------------------- |x|>=1 -------------------------------*/ - else if (k==0x3ff00000 && u.i[LOW_HALF]==0) return (m>0)?hp0.x:-hp0.x; - else - if (k>0x7ff00000 || (k == 0x7ff00000 && u.i[LOW_HALF] != 0)) return x; - else { - u.i[HIGH_HALF]=0x7ff00000; - v.i[HIGH_HALF]=0x7ff00000; - u.i[LOW_HALF]=0; - v.i[LOW_HALF]=0; - return u.x/v.x; /* NaN */ - } -} - -/*******************************************************************/ -/* */ -/* End of arcsine, below is arccosine */ -/* */ -/*******************************************************************/ - -double __ieee754_acos(double x) -{ - double x1,x2,xx,s1,s2,res1,p,t,res,r,cor,cc,y,c,z,w[2],eps; -#if 0 - double fc; -#endif - mynumber u,v; - int4 k,m,n; -#if 0 - int4 nn; -#endif - u.x = x; - m = u.i[HIGH_HALF]; - k = 0x7fffffff&m; - /*------------------- |x|<2.77556*10^-17 ----------------------*/ - if (k < 0x3c880000) return hp0.x; - - /*----------------- 2.77556*10^-17 <= |x| < 2^-3 --------------*/ - else - if (k < 0x3fc00000) { - x2 = x*x; - t = (((((f6*x2 + f5)*x2 + f4)*x2 + f3)*x2 + f2)*x2 + f1)*(x2*x); - r=hp0.x-x; - cor=(((hp0.x-r)-x)+hp1.x)-t; - res = r+cor; - cor = (r-res)+cor; - if (res == res+1.004*cor) return res; - else { - x1 = x+big; - xx = x*x; - x1 -= big; - x2 = x - x1; - p = x1*x1*x1; - s1 = a1.x*p; - s2 = ((((((c7*xx + c6)*xx + c5)*xx + c4)*xx + c3)*xx + c2)*xx*xx*x + - ((a1.x+a2.x)*x2*x2+ 0.5*x1*x)*x2) + a2.x*p; - res1 = x+s1; - s2 = ((x-res1)+s1)+s2; - r=hp0.x-res1; - cor=(((hp0.x-r)-res1)+hp1.x)-s2; - res = r+cor; - cor = (r-res)+cor; - if (res == res+1.00004*cor) return res; - else { - __doasin(x,0,w); - r=hp0.x-w[0]; - cor=((hp0.x-r)-w[0])+(hp1.x-w[1]); - res=r+cor; - cor=(r-res)+cor; - if (res ==(res +1.00000001*cor)) return res; - else { - res1=res+1.1*cor; - return __cos32(x,res,res1); - } - } - } - } /* else if (k < 0x3fc00000) */ - /*---------------------- 0.125 <= |x| < 0.5 --------------------*/ - else - if (k < 0x3fe00000) { - if (k<0x3fd00000) n = 11*((k&0x000fffff)>>15); - else n = 11*((k&0x000fffff)>>14)+352; - if (m>0) xx = x - asncs.x[n]; - else xx = -x - asncs.x[n]; - t = asncs.x[n+1]*xx; - p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+ - xx*(asncs.x[n+5]+xx*asncs.x[n+6]))))+asncs.x[n+7]; - t+=p; - y = (m>0)?(hp0.x-asncs.x[n+8]):(hp0.x+asncs.x[n+8]); - t = (m>0)?(hp1.x-t):(hp1.x+t); - res = y+t; - if (res == res+1.02*((y-res)+t)) return res; - else { - r=asncs.x[n+8]+xx*asncs.x[n+9]; - t=((asncs.x[n+8]-r)+xx*asncs.x[n+9])+(p+xx*asncs.x[n+10]); - if (m>0) - {p = hp0.x-r; t = (((hp0.x-p)-r)-t)+hp1.x; } - else - {p = hp0.x+r; t = ((hp0.x-p)+r)+(hp1.x+t); } - res = p+t; - cor = (p-res)+t; - if (res == (res+1.0002*cor)) return res; - else { - res1=res+1.1*cor; - z=0.5*(res1-res); - __docos(res,z,w); - z=(w[0]-x)+w[1]; - if (z>1.0e-27) return max(res,res1); - else if (z<-1.0e-27) return min(res,res1); - else return __cos32(x,res,res1); - } - } - } /* else if (k < 0x3fe00000) */ - - /*--------------------------- 0.5 <= |x| < 0.75 ---------------------*/ - else - if (k < 0x3fe80000) { - n = 1056+((k&0x000fe000)>>11)*3; - if (m>0) {xx = x - asncs.x[n]; eps=1.04; } - else {xx = -x - asncs.x[n]; eps=1.02; } - t = asncs.x[n+1]*xx; - p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+ - xx*(asncs.x[n+5]+xx*(asncs.x[n+6]+ - xx*asncs.x[n+7])))))+asncs.x[n+8]; - t+=p; - y = (m>0)?(hp0.x-asncs.x[n+9]):(hp0.x+asncs.x[n+9]); - t = (m>0)?(hp1.x-t):(hp1.x+t); - res = y+t; - if (res == res+eps*((y-res)+t)) return res; - else { - r=asncs.x[n+9]+xx*asncs.x[n+10]; - t=((asncs.x[n+9]-r)+xx*asncs.x[n+10])+(p+xx*asncs.x[n+11]); - if (m>0) {p = hp0.x-r; t = (((hp0.x-p)-r)-t)+hp1.x; eps=1.0004; } - else {p = hp0.x+r; t = ((hp0.x-p)+r)+(hp1.x+t); eps=1.0002; } - res = p+t; - cor = (p-res)+t; - if (res == (res+eps*cor)) return res; - else { - res1=res+1.1*cor; - z=0.5*(res1-res); - __docos(res,z,w); - z=(w[0]-x)+w[1]; - if (z>1.0e-27) return max(res,res1); - else if (z<-1.0e-27) return min(res,res1); - else return __cos32(x,res,res1); - } - } - } /* else if (k < 0x3fe80000) */ - -/*------------------------- 0.75 <= |x| < 0.921875 -------------*/ - else - if (k < 0x3fed8000) { - n = 992+((k&0x000fe000)>>13)*13; - if (m>0) {xx = x - asncs.x[n]; eps = 1.04; } - else {xx = -x - asncs.x[n]; eps = 1.01; } - t = asncs.x[n+1]*xx; - p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+ - xx*(asncs.x[n+5]+xx*(asncs.x[n+6]+xx*(asncs.x[n+7]+ - xx*asncs.x[n+8]))))))+asncs.x[n+9]; - t+=p; - y = (m>0)?(hp0.x-asncs.x[n+10]):(hp0.x+asncs.x[n+10]); - t = (m>0)?(hp1.x-t):(hp1.x+t); - res = y+t; - if (res == res+eps*((y-res)+t)) return res; - else { - r=asncs.x[n+10]+xx*asncs.x[n+11]; - t=((asncs.x[n+10]-r)+xx*asncs.x[n+11])+(p+xx*asncs.x[n+12]); - if (m>0) {p = hp0.x-r; t = (((hp0.x-p)-r)-t)+hp1.x; eps=1.0032; } - else {p = hp0.x+r; t = ((hp0.x-p)+r)+(hp1.x+t); eps=1.0008; } - res = p+t; - cor = (p-res)+t; - if (res == (res+eps*cor)) return res; - else { - res1=res+1.1*cor; - z=0.5*(res1-res); - __docos(res,z,w); - z=(w[0]-x)+w[1]; - if (z>1.0e-27) return max(res,res1); - else if (z<-1.0e-27) return min(res,res1); - else return __cos32(x,res,res1); - } - } - } /* else if (k < 0x3fed8000) */ - -/*-------------------0.921875 <= |x| < 0.953125 ------------------*/ - else - if (k < 0x3fee8000) { - n = 884+((k&0x000fe000)>>13)*14; - if (m>0) {xx = x - asncs.x[n]; eps=1.04; } - else {xx = -x - asncs.x[n]; eps =1.005; } - t = asncs.x[n+1]*xx; - p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+ - xx*(asncs.x[n+5]+xx*(asncs.x[n+6] - +xx*(asncs.x[n+7]+xx*(asncs.x[n+8]+ - xx*asncs.x[n+9])))))))+asncs.x[n+10]; - t+=p; - y = (m>0)?(hp0.x-asncs.x[n+11]):(hp0.x+asncs.x[n+11]); - t = (m>0)?(hp1.x-t):(hp1.x+t); - res = y+t; - if (res == res+eps*((y-res)+t)) return res; - else { - r=asncs.x[n+11]+xx*asncs.x[n+12]; - t=((asncs.x[n+11]-r)+xx*asncs.x[n+12])+(p+xx*asncs.x[n+13]); - if (m>0) {p = hp0.x-r; t = (((hp0.x-p)-r)-t)+hp1.x; eps=1.0030; } - else {p = hp0.x+r; t = ((hp0.x-p)+r)+(hp1.x+t); eps=1.0005; } - res = p+t; - cor = (p-res)+t; - if (res == (res+eps*cor)) return res; - else { - res1=res+1.1*cor; - z=0.5*(res1-res); - __docos(res,z,w); - z=(w[0]-x)+w[1]; - if (z>1.0e-27) return max(res,res1); - else if (z<-1.0e-27) return min(res,res1); - else return __cos32(x,res,res1); - } - } - } /* else if (k < 0x3fee8000) */ - - /*--------------------0.953125 <= |x| < 0.96875 ----------------*/ - else - if (k < 0x3fef0000) { - n = 768+((k&0x000fe000)>>13)*15; - if (m>0) {xx = x - asncs.x[n]; eps=1.04; } - else {xx = -x - asncs.x[n]; eps=1.005;} - t = asncs.x[n+1]*xx; - p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+ - xx*(asncs.x[n+5]+xx*(asncs.x[n+6] - +xx*(asncs.x[n+7]+xx*(asncs.x[n+8]+xx*(asncs.x[n+9]+ - xx*asncs.x[n+10]))))))))+asncs.x[n+11]; - t+=p; - y = (m>0)?(hp0.x-asncs.x[n+12]):(hp0.x+asncs.x[n+12]); - t = (m>0)?(hp1.x-t):(hp1.x+t); - res = y+t; - if (res == res+eps*((y-res)+t)) return res; - else { - r=asncs.x[n+12]+xx*asncs.x[n+13]; - t=((asncs.x[n+12]-r)+xx*asncs.x[n+13])+(p+xx*asncs.x[n+14]); - if (m>0) {p = hp0.x-r; t = (((hp0.x-p)-r)-t)+hp1.x; eps=1.0030; } - else {p = hp0.x+r; t = ((hp0.x-p)+r)+(hp1.x+t); eps=1.0005; } - res = p+t; - cor = (p-res)+t; - if (res == (res+eps*cor)) return res; - else { - res1=res+1.1*cor; - z=0.5*(res1-res); - __docos(res,z,w); - z=(w[0]-x)+w[1]; - if (z>1.0e-27) return max(res,res1); - else if (z<-1.0e-27) return min(res,res1); - else return __cos32(x,res,res1); - } - } - } /* else if (k < 0x3fef0000) */ - /*-----------------0.96875 <= |x| < 1 ---------------------------*/ - - else - if (k<0x3ff00000) { - z = 0.5*((m>0)?(1.0-x):(1.0+x)); - v.x=z; - k=v.i[HIGH_HALF]; - t=inroot[(k&0x001fffff)>>14]*powtwo[511-(k>>21)]; - r=1.0-t*t*z; - t = t*(rt0+r*(rt1+r*(rt2+r*rt3))); - c=t*z; - t=c*(1.5-0.5*t*c); - y = (t27*c+c)-t27*c; - cc = (z-y*y)/(t+y); - p=(((((f6*z+f5)*z+f4)*z+f3)*z+f2)*z+f1)*z; - if (m<0) { - cor = (hp1.x - cc)-(y+cc)*p; - res1 = hp0.x - y; - res =res1 + cor; - if (res == res+1.002*((res1-res)+cor)) return (res+res); - else { - c=y+cc; - cc=(y-c)+cc; - __doasin(c,cc,w); - res1=hp0.x-w[0]; - cor=((hp0.x-res1)-w[0])+(hp1.x-w[1]); - res = res1+cor; - cor = (res1-res)+cor; - if (res==(res+1.000001*cor)) return (res+res); - else { - res=res+res; - res1=res+1.2*cor; - return __cos32(x,res,res1); - } - } - } - else { - cor = cc+p*(y+cc); - res = y + cor; - if (res == res+1.03*((y-res)+cor)) return (res+res); - else { - c=y+cc; - cc=(y-c)+cc; - __doasin(c,cc,w); - res = w[0]; - cor=w[1]; - if (res==(res+1.000001*cor)) return (res+res); - else { - res=res+res; - res1=res+1.2*cor; - return __cos32(x,res,res1); - } - } - } - } /* else if (k < 0x3ff00000) */ - - /*---------------------------- |x|>=1 -----------------------*/ - else - if (k==0x3ff00000 && u.i[LOW_HALF]==0) return (m>0)?0:2.0*hp0.x; - else - if (k>0x7ff00000 || (k == 0x7ff00000 && u.i[LOW_HALF] != 0)) return x; - else { - u.i[HIGH_HALF]=0x7ff00000; - v.i[HIGH_HALF]=0x7ff00000; - u.i[LOW_HALF]=0; - v.i[LOW_HALF]=0; - return u.x/v.x; - } -} diff --git a/libgcc-math/dbl-64/e_atan2.c b/libgcc-math/dbl-64/e_atan2.c deleted file mode 100644 index 9e1a794ec82..00000000000 --- a/libgcc-math/dbl-64/e_atan2.c +++ /dev/null @@ -1,406 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/************************************************************************/ -/* MODULE_NAME: atnat2.c */ -/* */ -/* FUNCTIONS: uatan2 */ -/* atan2Mp */ -/* signArctan2 */ -/* normalized */ -/* */ -/* FILES NEEDED: dla.h endian.h mpa.h mydefs.h atnat2.h */ -/* mpatan.c mpatan2.c mpsqrt.c */ -/* uatan.tbl */ -/* */ -/* An ultimate atan2() routine. Given two IEEE double machine numbers y,*/ -/* x it computes the correctly rounded (to nearest) value of atan2(y,x).*/ -/* */ -/* Assumption: Machine arithmetic operations are performed in */ -/* round to nearest mode of IEEE 754 standard. */ -/* */ -/************************************************************************/ - -#include "dla.h" -#include "mpa.h" -#include "MathLib.h" -#include "uatan.tbl" -#include "atnat2.h" -#include "math_private.h" - -/************************************************************************/ -/* An ultimate atan2 routine. Given two IEEE double machine numbers y,x */ -/* it computes the correctly rounded (to nearest) value of atan2(y,x). */ -/* Assumption: Machine arithmetic operations are performed in */ -/* round to nearest mode of IEEE 754 standard. */ -/************************************************************************/ -static double atan2Mp(double ,double ,const int[]); -static double signArctan2(double ,double); -static double normalized(double ,double,double ,double); -void __mpatan2(mp_no *,mp_no *,mp_no *,int); - -double __ieee754_atan2(double y,double x) { - - int i,de,ux,dx,uy,dy; -#if 0 - int p; -#endif - static const int pr[MM]={6,8,10,20,32}; - double ax,ay,u,du,u9,ua,v,vv,dv,t1,t2,t3,t4,t5,t6,t7,t8, - z,zz,cor,s1,ss1,s2,ss2; -#if 0 - double z1,z2; -#endif - number num; -#if 0 - mp_no mperr,mpt1,mpx,mpy,mpz,mpz1,mpz2; -#endif - - static const int ep= 59768832, /* 57*16**5 */ - em=-59768832; /* -57*16**5 */ - - /* x=NaN or y=NaN */ - num.d = x; ux = num.i[HIGH_HALF]; dx = num.i[LOW_HALF]; - if ((ux&0x7ff00000) ==0x7ff00000) { - if (((ux&0x000fffff)|dx)!=0x00000000) return x+x; } - num.d = y; uy = num.i[HIGH_HALF]; dy = num.i[LOW_HALF]; - if ((uy&0x7ff00000) ==0x7ff00000) { - if (((uy&0x000fffff)|dy)!=0x00000000) return y+y; } - - /* y=+-0 */ - if (uy==0x00000000) { - if (dy==0x00000000) { - if ((ux&0x80000000)==0x00000000) return ZERO; - else return opi.d; } } - else if (uy==0x80000000) { - if (dy==0x00000000) { - if ((ux&0x80000000)==0x00000000) return MZERO; - else return mopi.d;} } - - /* x=+-0 */ - if (x==ZERO) { - if ((uy&0x80000000)==0x00000000) return hpi.d; - else return mhpi.d; } - - /* x=+-INF */ - if (ux==0x7ff00000) { - if (dx==0x00000000) { - if (uy==0x7ff00000) { - if (dy==0x00000000) return qpi.d; } - else if (uy==0xfff00000) { - if (dy==0x00000000) return mqpi.d; } - else { - if ((uy&0x80000000)==0x00000000) return ZERO; - else return MZERO; } - } - } - else if (ux==0xfff00000) { - if (dx==0x00000000) { - if (uy==0x7ff00000) { - if (dy==0x00000000) return tqpi.d; } - else if (uy==0xfff00000) { - if (dy==0x00000000) return mtqpi.d; } - else { - if ((uy&0x80000000)==0x00000000) return opi.d; - else return mopi.d; } - } - } - - /* y=+-INF */ - if (uy==0x7ff00000) { - if (dy==0x00000000) return hpi.d; } - else if (uy==0xfff00000) { - if (dy==0x00000000) return mhpi.d; } - - /* either x/y or y/x is very close to zero */ - ax = (x=ep) { return ((y>ZERO) ? hpi.d : mhpi.d); } - else if (de<=em) { - if (x>ZERO) { - if ((z=ay/ax)ZERO) ? opi.d : mopi.d); } } - - /* if either x or y is extremely close to zero, scale abs(x), abs(y). */ - if (axZERO) { - - /* (i) x>0, abs(y)< abs(x): atan(ay/ax) */ - if (ay0, abs(x)<=abs(y): pi/2-atan(ax/ay) */ - else { - if (u= 1/2 */ - if ((z=t1+(zz-ua)) == t1+(zz+ua)) return signArctan2(y,z); - - t1=u-hij[i][0].d; - EADD(t1,du,v,vv) - s1=v*(hij[i][11].d+v*(hij[i][12].d+v*(hij[i][13].d+ - v*(hij[i][14].d+v* hij[i][15].d)))); - ADD2(hij[i][9].d,hij[i][10].d,s1,ZERO,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][7].d,hij[i][8].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][5].d,hij[i][6].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][3].d,hij[i][4].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][1].d,hij[i][2].d,s1,ss1,s2,ss2,t1,t2) - SUB2(hpi.d,hpi1.d,s2,ss2,s1,ss1,t1,t2) - if ((z=s1+(ss1-uc.d)) == s1+(ss1+uc.d)) return signArctan2(y,z); - return atan2Mp(x,y,pr); - } - } - } - else { - - /* (iii) x<0, abs(x)< abs(y): pi/2+atan(ax/ay) */ - if (ax= 1/2 */ - if ((z=t1+(zz-ua)) == t1+(zz+ua)) return signArctan2(y,z); - - t1=u-hij[i][0].d; - EADD(t1,du,v,vv) - s1=v*(hij[i][11].d+v*(hij[i][12].d+v*(hij[i][13].d+ - v*(hij[i][14].d+v* hij[i][15].d)))); - ADD2(hij[i][9].d,hij[i][10].d,s1,ZERO,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][7].d,hij[i][8].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][5].d,hij[i][6].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][3].d,hij[i][4].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][1].d,hij[i][2].d,s1,ss1,s2,ss2,t1,t2) - ADD2(hpi.d,hpi1.d,s2,ss2,s1,ss1,t1,t2) - if ((z=s1+(ss1-uc.d)) == s1+(ss1+uc.d)) return signArctan2(y,z); - return atan2Mp(x,y,pr); - } - } - - /* (iv) x<0, abs(y)<=abs(x): pi-atan(ax/ay) */ - else { - if (u= 1/2 */ - if ((z=t1+(zz-ua)) == t1+(zz+ua)) return signArctan2(y,z); - - t1=u-hij[i][0].d; - EADD(t1,du,v,vv) - s1=v*(hij[i][11].d+v*(hij[i][12].d+v*(hij[i][13].d+ - v*(hij[i][14].d+v* hij[i][15].d)))); - ADD2(hij[i][9].d,hij[i][10].d,s1,ZERO,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][7].d,hij[i][8].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][5].d,hij[i][6].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][3].d,hij[i][4].d,s1,ss1,s2,ss2,t1,t2) - MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][1].d,hij[i][2].d,s1,ss1,s2,ss2,t1,t2) - SUB2(opi.d,opi1.d,s2,ss2,s1,ss1,t1,t2) - if ((z=s1+(ss1-uc.d)) == s1+(ss1+uc.d)) return signArctan2(y,z); - return atan2Mp(x,y,pr); - } - } - } -} - /* Treat the Denormalized case */ -static double normalized(double ax,double ay,double y, double z) - { int p; - mp_no mpx,mpy,mpz,mperr,mpz2,mpt1; - p=6; - __dbl_mp(ax,&mpx,p); __dbl_mp(ay,&mpy,p); __dvd(&mpy,&mpx,&mpz,p); - __dbl_mp(ue.d,&mpt1,p); __mul(&mpz,&mpt1,&mperr,p); - __sub(&mpz,&mperr,&mpz2,p); __mp_dbl(&mpz2,&z,p); - return signArctan2(y,z); -} - /* Fix the sign and return after stage 1 or stage 2 */ -static double signArctan2(double y,double z) -{ - return ((y smallint && n < bigint) { - - y = x*log2e.x + three51.x; - bexp = y - three51.x; /* multiply the result by 2**bexp */ - - junk1.x = y; - - eps = bexp*ln_two2.x; /* x = bexp*ln(2) + t - eps */ - t = x - bexp*ln_two1.x; - - y = t + three33.x; - base = y - three33.x; /* t rounded to a multiple of 2**-18 */ - junk2.x = y; - del = (t - base) - eps; /* x = bexp*ln(2) + base + del */ - eps = del + del*del*(p3.x*del + p2.x); - - binexp.i[HIGH_HALF] =(junk1.i[LOW_HALF]+1023)<<20; - - i = ((junk2.i[LOW_HALF]>>8)&0xfffffffe)+356; - j = (junk2.i[LOW_HALF]&511)<<1; - - al = coar.x[i]*fine.x[j]; - bet =(coar.x[i]*fine.x[j+1] + coar.x[i+1]*fine.x[j]) + coar.x[i+1]*fine.x[j+1]; - - rem=(bet + bet*eps)+al*eps; - res = al + rem; - cor = (al - res) + rem; - if (res == (res+cor*err_0)) return res*binexp.x; - else return __slowexp(x); /*if error is over bound */ - } - - if (n <= smallint) return 1.0; - - if (n >= badint) { - if (n > infint) return(x+x); /* x is NaN */ - if (n < infint) return ( (x>0) ? (hhuge*hhuge) : (tiny*tiny) ); - /* x is finite, cause either overflow or underflow */ - if (junk1.i[LOW_HALF] != 0) return (x+x); /* x is NaN */ - return ((x>0)?inf.x:zero ); /* |x| = inf; return either inf or 0 */ - } - - y = x*log2e.x + three51.x; - bexp = y - three51.x; - junk1.x = y; - eps = bexp*ln_two2.x; - t = x - bexp*ln_two1.x; - y = t + three33.x; - base = y - three33.x; - junk2.x = y; - del = (t - base) - eps; - eps = del + del*del*(p3.x*del + p2.x); - i = ((junk2.i[LOW_HALF]>>8)&0xfffffffe)+356; - j = (junk2.i[LOW_HALF]&511)<<1; - al = coar.x[i]*fine.x[j]; - bet =(coar.x[i]*fine.x[j+1] + coar.x[i+1]*fine.x[j]) + coar.x[i+1]*fine.x[j+1]; - rem=(bet + bet*eps)+al*eps; - res = al + rem; - cor = (al - res) + rem; - if (m>>31) { - ex=junk1.i[LOW_HALF]; - if (res < 1.0) {res+=res; cor+=cor; ex-=1;} - if (ex >=-1022) { - binexp.i[HIGH_HALF] = (1023+ex)<<20; - if (res == (res+cor*err_0)) return res*binexp.x; - else return __slowexp(x); /*if error is over bound */ - } - ex = -(1022+ex); - binexp.i[HIGH_HALF] = (1023-ex)<<20; - res*=binexp.x; - cor*=binexp.x; - eps=1.0000000001+err_0*binexp.x; - t=1.0+res; - y = ((1.0-t)+res)+cor; - res=t+y; - cor = (t-res)+y; - if (res == (res + eps*cor)) - { binexp.i[HIGH_HALF] = 0x00100000; - return (res-1.0)*binexp.x; - } - else return __slowexp(x); /* if error is over bound */ - } - else { - binexp.i[HIGH_HALF] =(junk1.i[LOW_HALF]+767)<<20; - if (res == (res+cor*err_0)) return res*binexp.x*t256.x; - else return __slowexp(x); - } -} - -/************************************************************************/ -/* Compute e^(x+xx)(Double-Length number) .The routine also receive */ -/* bound of error of previous calculation .If after computing exp */ -/* error bigger than allows routine return non positive number */ -/*else return e^(x + xx) (always positive ) */ -/************************************************************************/ - -double __exp1(double x, double xx, double error) { - double bexp, t, eps, del, base, y, al, bet, res, rem, cor; - mynumber junk1, junk2, binexp = {{0,0}}; -#if 0 - int4 k; -#endif - int4 i,j,m,n,ex; - - junk1.x = x; - m = junk1.i[HIGH_HALF]; - n = m&hugeint; /* no sign */ - - if (n > smallint && n < bigint) { - y = x*log2e.x + three51.x; - bexp = y - three51.x; /* multiply the result by 2**bexp */ - - junk1.x = y; - - eps = bexp*ln_two2.x; /* x = bexp*ln(2) + t - eps */ - t = x - bexp*ln_two1.x; - - y = t + three33.x; - base = y - three33.x; /* t rounded to a multiple of 2**-18 */ - junk2.x = y; - del = (t - base) + (xx-eps); /* x = bexp*ln(2) + base + del */ - eps = del + del*del*(p3.x*del + p2.x); - - binexp.i[HIGH_HALF] =(junk1.i[LOW_HALF]+1023)<<20; - - i = ((junk2.i[LOW_HALF]>>8)&0xfffffffe)+356; - j = (junk2.i[LOW_HALF]&511)<<1; - - al = coar.x[i]*fine.x[j]; - bet =(coar.x[i]*fine.x[j+1] + coar.x[i+1]*fine.x[j]) + coar.x[i+1]*fine.x[j+1]; - - rem=(bet + bet*eps)+al*eps; - res = al + rem; - cor = (al - res) + rem; - if (res == (res+cor*(1.0+error+err_1))) return res*binexp.x; - else return -10.0; - } - - if (n <= smallint) return 1.0; /* if x->0 e^x=1 */ - - if (n >= badint) { - if (n > infint) return(zero/zero); /* x is NaN, return invalid */ - if (n < infint) return ( (x>0) ? (hhuge*hhuge) : (tiny*tiny) ); - /* x is finite, cause either overflow or underflow */ - if (junk1.i[LOW_HALF] != 0) return (zero/zero); /* x is NaN */ - return ((x>0)?inf.x:zero ); /* |x| = inf; return either inf or 0 */ - } - - y = x*log2e.x + three51.x; - bexp = y - three51.x; - junk1.x = y; - eps = bexp*ln_two2.x; - t = x - bexp*ln_two1.x; - y = t + three33.x; - base = y - three33.x; - junk2.x = y; - del = (t - base) + (xx-eps); - eps = del + del*del*(p3.x*del + p2.x); - i = ((junk2.i[LOW_HALF]>>8)&0xfffffffe)+356; - j = (junk2.i[LOW_HALF]&511)<<1; - al = coar.x[i]*fine.x[j]; - bet =(coar.x[i]*fine.x[j+1] + coar.x[i+1]*fine.x[j]) + coar.x[i+1]*fine.x[j+1]; - rem=(bet + bet*eps)+al*eps; - res = al + rem; - cor = (al - res) + rem; - if (m>>31) { - ex=junk1.i[LOW_HALF]; - if (res < 1.0) {res+=res; cor+=cor; ex-=1;} - if (ex >=-1022) { - binexp.i[HIGH_HALF] = (1023+ex)<<20; - if (res == (res+cor*(1.0+error+err_1))) return res*binexp.x; - else return -10.0; - } - ex = -(1022+ex); - binexp.i[HIGH_HALF] = (1023-ex)<<20; - res*=binexp.x; - cor*=binexp.x; - eps=1.00000000001+(error+err_1)*binexp.x; - t=1.0+res; - y = ((1.0-t)+res)+cor; - res=t+y; - cor = (t-res)+y; - if (res == (res + eps*cor)) - {binexp.i[HIGH_HALF] = 0x00100000; return (res-1.0)*binexp.x;} - else return -10.0; - } - else { - binexp.i[HIGH_HALF] =(junk1.i[LOW_HALF]+767)<<20; - if (res == (res+cor*(1.0+error+err_1))) - return res*binexp.x*t256.x; - else return -10.0; - } -} diff --git a/libgcc-math/dbl-64/e_log.c b/libgcc-math/dbl-64/e_log.c deleted file mode 100644 index 1a9967b546f..00000000000 --- a/libgcc-math/dbl-64/e_log.c +++ /dev/null @@ -1,203 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/*********************************************************************/ -/* */ -/* MODULE_NAME:ulog.c */ -/* */ -/* FUNCTION:ulog */ -/* */ -/* FILES NEEDED: dla.h endian.h mpa.h mydefs.h ulog.h */ -/* mpexp.c mplog.c mpa.c */ -/* ulog.tbl */ -/* */ -/* An ultimate log routine. Given an IEEE double machine number x */ -/* it computes the correctly rounded (to nearest) value of log(x). */ -/* Assumption: Machine arithmetic operations are performed in */ -/* round to nearest mode of IEEE 754 standard. */ -/* */ -/*********************************************************************/ - - -#include "endian.h" -#include "dla.h" -#include "mpa.h" -#include "MathLib.h" -#include "math_private.h" - -void __mplog(mp_no *, mp_no *, int); - -/*********************************************************************/ -/* An ultimate log routine. Given an IEEE double machine number x */ -/* it computes the correctly rounded (to nearest) value of log(x). */ -/*********************************************************************/ -double __ieee754_log(double x) { -#define M 4 - static const int pr[M]={8,10,18,32}; - int i,j,n,ux,dx,p; -#if 0 - int k; -#endif - double dbl_n,u,p0,q,r0,w,nln2a,luai,lubi,lvaj,lvbj, - sij,ssij,ttij,A,B,B0,y,y1,y2,polI,polII,sa,sb, - t1,t2,t3,t4,t5,t6,t7,t8,t,ra,rb,ww, - a0,aa0,s1,s2,ss2,s3,ss3,a1,aa1,a,aa,b,bb,c; - number num; - mp_no mpx,mpy,mpy1,mpy2,mperr; - -#include "ulog.tbl" -#include "ulog.h" - - /* Treating special values of x ( x<=0, x=INF, x=NaN etc.). */ - - num.d = x; ux = num.i[HIGH_HALF]; dx = num.i[LOW_HALF]; - n=0; - if (ux < 0x00100000) { - if (((ux & 0x7fffffff) | dx) == 0) return MHALF/ZERO; /* return -INF */ - if (ux < 0) return (x-x)/ZERO; /* return NaN */ - n -= 54; x *= two54.d; /* scale x */ - num.d = x; - } - if (ux >= 0x7ff00000) return x+x; /* INF or NaN */ - - /* Regular values of x */ - - w = x-ONE; - if (ABS(w) > U03) { goto case_03; } - - - /*--- Stage I, the case abs(x-1) < 0.03 */ - - t8 = MHALF*w; - EMULV(t8,w,a,aa,t1,t2,t3,t4,t5) - EADD(w,a,b,bb) - - /* Evaluate polynomial II */ - polII = (b0.d+w*(b1.d+w*(b2.d+w*(b3.d+w*(b4.d+ - w*(b5.d+w*(b6.d+w*(b7.d+w*b8.d))))))))*w*w*w; - c = (aa+bb)+polII; - - /* End stage I, case abs(x-1) < 0.03 */ - if ((y=b+(c+b*E2)) == b+(c-b*E2)) return y; - - /*--- Stage II, the case abs(x-1) < 0.03 */ - - a = d11.d+w*(d12.d+w*(d13.d+w*(d14.d+w*(d15.d+w*(d16.d+ - w*(d17.d+w*(d18.d+w*(d19.d+w*d20.d)))))))); - EMULV(w,a,s2,ss2,t1,t2,t3,t4,t5) - ADD2(d10.d,dd10.d,s2,ss2,s3,ss3,t1,t2) - MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(d9.d,dd9.d,s2,ss2,s3,ss3,t1,t2) - MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(d8.d,dd8.d,s2,ss2,s3,ss3,t1,t2) - MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(d7.d,dd7.d,s2,ss2,s3,ss3,t1,t2) - MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(d6.d,dd6.d,s2,ss2,s3,ss3,t1,t2) - MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(d5.d,dd5.d,s2,ss2,s3,ss3,t1,t2) - MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(d4.d,dd4.d,s2,ss2,s3,ss3,t1,t2) - MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(d3.d,dd3.d,s2,ss2,s3,ss3,t1,t2) - MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(d2.d,dd2.d,s2,ss2,s3,ss3,t1,t2) - MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - MUL2(w,ZERO,s2,ss2,s3,ss3,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(w,ZERO, s3,ss3, b, bb,t1,t2) - - /* End stage II, case abs(x-1) < 0.03 */ - if ((y=b+(bb+b*E4)) == b+(bb-b*E4)) return y; - goto stage_n; - - /*--- Stage I, the case abs(x-1) > 0.03 */ - case_03: - - /* Find n,u such that x = u*2**n, 1/sqrt(2) < u < sqrt(2) */ - n += (num.i[HIGH_HALF] >> 20) - 1023; - num.i[HIGH_HALF] = (num.i[HIGH_HALF] & 0x000fffff) | 0x3ff00000; - if (num.d > SQRT_2) { num.d *= HALF; n++; } - u = num.d; dbl_n = (double) n; - - /* Find i such that ui=1+(i-75)/2**8 is closest to u (i= 0,1,2,...,181) */ - num.d += h1.d; - i = (num.i[HIGH_HALF] & 0x000fffff) >> 12; - - /* Find j such that vj=1+(j-180)/2**16 is closest to v=u/ui (j= 0,...,361) */ - num.d = u*Iu[i].d + h2.d; - j = (num.i[HIGH_HALF] & 0x000fffff) >> 4; - - /* Compute w=(u-ui*vj)/(ui*vj) */ - p0=(ONE+(i-75)*DEL_U)*(ONE+(j-180)*DEL_V); - q=u-p0; r0=Iu[i].d*Iv[j].d; w=q*r0; - - /* Evaluate polynomial I */ - polI = w+(a2.d+a3.d*w)*w*w; - - /* Add up everything */ - nln2a = dbl_n*LN2A; - luai = Lu[i][0].d; lubi = Lu[i][1].d; - lvaj = Lv[j][0].d; lvbj = Lv[j][1].d; - EADD(luai,lvaj,sij,ssij) - EADD(nln2a,sij,A ,ttij) - B0 = (((lubi+lvbj)+ssij)+ttij)+dbl_n*LN2B; - B = polI+B0; - - /* End stage I, case abs(x-1) >= 0.03 */ - if ((y=A+(B+E1)) == A+(B-E1)) return y; - - - /*--- Stage II, the case abs(x-1) > 0.03 */ - - /* Improve the accuracy of r0 */ - EMULV(p0,r0,sa,sb,t1,t2,t3,t4,t5) - t=r0*((ONE-sa)-sb); - EADD(r0,t,ra,rb) - - /* Compute w */ - MUL2(q,ZERO,ra,rb,w,ww,t1,t2,t3,t4,t5,t6,t7,t8) - - EADD(A,B0,a0,aa0) - - /* Evaluate polynomial III */ - s1 = (c3.d+(c4.d+c5.d*w)*w)*w; - EADD(c2.d,s1,s2,ss2) - MUL2(s2,ss2,w,ww,s3,ss3,t1,t2,t3,t4,t5,t6,t7,t8) - MUL2(s3,ss3,w,ww,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(s2,ss2,w,ww,s3,ss3,t1,t2) - ADD2(s3,ss3,a0,aa0,a1,aa1,t1,t2) - - /* End stage II, case abs(x-1) >= 0.03 */ - if ((y=a1+(aa1+E3)) == a1+(aa1-E3)) return y; - - - /* Final stages. Use multi-precision arithmetic. */ - stage_n: - - for (i=0; i= 0x7ff00000) return x+x; - k += (hx>>20)-1023; - i = ((uint32_t)k&0x80000000)>>31; - hx = (hx&0x000fffff)|((0x3ff-i)<<20); - y = (double)(k+i); - SET_HIGH_WORD(x,hx); - z = y*log10_2lo + ivln10*__ieee754_log(x); - return z+y*log10_2hi; -} diff --git a/libgcc-math/dbl-64/e_pow.c b/libgcc-math/dbl-64/e_pow.c deleted file mode 100644 index d9bd8b479f4..00000000000 --- a/libgcc-math/dbl-64/e_pow.c +++ /dev/null @@ -1,388 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * written by International Business Machines Corp. - * Copyright (C) 2001, 2002, 2004 Free Software Foundation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/***************************************************************************/ -/* MODULE_NAME: upow.c */ -/* */ -/* FUNCTIONS: upow */ -/* power1 */ -/* my_log2 */ -/* log1 */ -/* checkint */ -/* FILES NEEDED: dla.h endian.h mpa.h mydefs.h */ -/* halfulp.c mpexp.c mplog.c slowexp.c slowpow.c mpa.c */ -/* uexp.c upow.c */ -/* root.tbl uexp.tbl upow.tbl */ -/* An ultimate power routine. Given two IEEE double machine numbers y,x */ -/* it computes the correctly rounded (to nearest) value of x^y. */ -/* Assumption: Machine arithmetic operations are performed in */ -/* round to nearest mode of IEEE 754 standard. */ -/* */ -/***************************************************************************/ -#include "endian.h" -#include "upow.h" -#include "dla.h" -#include "mydefs.h" -#include "MathLib.h" -#include "upow.tbl" -#include "math_private.h" - - -double __exp1(double x, double xx, double error); -static double log1(double x, double *delta, double *error); -static double my_log2(double x, double *delta, double *error); -double __slowpow(double x, double y,double z); -static double power1(double x, double y); -static int checkint(double x); - -/***************************************************************************/ -/* An ultimate power routine. Given two IEEE double machine numbers y,x */ -/* it computes the correctly rounded (to nearest) value of X^y. */ -/***************************************************************************/ -double __ieee754_pow(double x, double y) { - double z,a,aa,error, t,a1,a2,y1,y2; -#if 0 - double gor=1.0; -#endif - mynumber u,v; - int k; - int4 qx,qy; - v.x=y; - u.x=x; - if (v.i[LOW_HALF] == 0) { /* of y */ - qx = u.i[HIGH_HALF]&0x7fffffff; - /* Checking if x is not too small to compute */ - if (((qx==0x7ff00000)&&(u.i[LOW_HALF]!=0))||(qx>0x7ff00000)) return NaNQ.x; - if (y == 1.0) return x; - if (y == 2.0) return x*x; - if (y == -1.0) return 1.0/x; - if (y == 0) return 1.0; - } - /* else */ - if(((u.i[HIGH_HALF]>0 && u.i[HIGH_HALF]<0x7ff00000)|| /* x>0 and not x->0 */ - (u.i[HIGH_HALF]==0 && u.i[LOW_HALF]!=0)) && - /* 2^-1023< x<= 2^-1023 * 0x1.0000ffffffff */ - (v.i[HIGH_HALF]&0x7fffffff) < 0x4ff00000) { /* if y<-1 or y>1 */ - z = log1(x,&aa,&error); /* x^y =e^(y log (X)) */ - t = y*134217729.0; - y1 = t - (t-y); - y2 = y - y1; - t = z*134217729.0; - a1 = t - (t-z); - a2 = (z - a1)+aa; - a = y1*a1; - aa = y2*a1 + y*a2; - a1 = a+aa; - a2 = (a-a1)+aa; - error = error*ABS(y); - t = __exp1(a1,a2,1.9e16*error); /* return -10 or 0 if wasn't computed exactly */ - return (t>0)?t:power1(x,y); - } - - if (x == 0) { - if (((v.i[HIGH_HALF] & 0x7fffffff) == 0x7ff00000 && v.i[LOW_HALF] != 0) - || (v.i[HIGH_HALF] & 0x7fffffff) > 0x7ff00000) - return y; - if (ABS(y) > 1.0e20) return (y>0)?0:INF.x; - k = checkint(y); - if (k == -1) - return y < 0 ? 1.0/x : x; - else - return y < 0 ? 1.0/ABS(x) : 0.0; /* return 0 */ - } - /* if x<0 */ - if (u.i[HIGH_HALF] < 0) { - k = checkint(y); - if (k==0) { - if ((v.i[HIGH_HALF] & 0x7fffffff) == 0x7ff00000 && v.i[LOW_HALF] == 0) { - if (x == -1.0) return 1.0; - else if (x > -1.0) return v.i[HIGH_HALF] < 0 ? INF.x : 0.0; - else return v.i[HIGH_HALF] < 0 ? 0.0 : INF.x; - } - else if (u.i[HIGH_HALF] == 0xfff00000 && u.i[LOW_HALF] == 0) - return y < 0 ? 0.0 : INF.x; - return NaNQ.x; /* y not integer and x<0 */ - } - else if (u.i[HIGH_HALF] == 0xfff00000 && u.i[LOW_HALF] == 0) - { - if (k < 0) - return y < 0 ? nZERO.x : nINF.x; - else - return y < 0 ? 0.0 : INF.x; - } - return (k==1)?__ieee754_pow(-x,y):-__ieee754_pow(-x,y); /* if y even or odd */ - } - /* x>0 */ - qx = u.i[HIGH_HALF]&0x7fffffff; /* no sign */ - qy = v.i[HIGH_HALF]&0x7fffffff; /* no sign */ - - if (qx > 0x7ff00000 || (qx == 0x7ff00000 && u.i[LOW_HALF] != 0)) return NaNQ.x; - /* if 0 0x7ff00000 || (qy == 0x7ff00000 && v.i[LOW_HALF] != 0)) - return x == 1.0 ? 1.0 : NaNQ.x; - /* if y<2^-0x7fe */ - - if (qx == 0x7ff00000) /* x= 2^-0x3ff */ - {if (y == 0) return NaNQ.x; - return (y>0)?x:0; } - - if (qy > 0x45f00000 && qy < 0x7ff00000) { - if (x == 1.0) return 1.0; - if (y>0) return (x>1.0)?INF.x:0; - if (y<0) return (x<1.0)?INF.x:0; - } - - if (x == 1.0) return 1.0; - if (y>0) return (x>1.0)?INF.x:0; - if (y<0) return (x<1.0)?INF.x:0; - return 0; /* unreachable, to make the compiler happy */ -} - -/**************************************************************************/ -/* Computing x^y using more accurate but more slow log routine */ -/**************************************************************************/ -static double power1(double x, double y) { - double z,a,aa,error, t,a1,a2,y1,y2; - z = my_log2(x,&aa,&error); - t = y*134217729.0; - y1 = t - (t-y); - y2 = y - y1; - t = z*134217729.0; - a1 = t - (t-z); - a2 = z - a1; - a = y*z; - aa = ((y1*a1-a)+y1*a2+y2*a1)+y2*a2+aa*y; - a1 = a+aa; - a2 = (a-a1)+aa; - error = error*ABS(y); - t = __exp1(a1,a2,1.9e16*error); - return (t >= 0)?t:__slowpow(x,y,z); -} - -/****************************************************************************/ -/* Computing log(x) (x is left argument). The result is the returned double */ -/* + the parameter delta. */ -/* The result is bounded by error (rightmost argument) */ -/****************************************************************************/ -static double log1(double x, double *delta, double *error) { - int i,j,m; -#if 0 - int n; -#endif - double uu,vv,eps,nx,e,e1,e2,t,t1,t2,res,add=0; -#if 0 - double cor; -#endif - mynumber u,v; -#ifdef BIG_ENDI - mynumber -/**/ two52 = {{0x43300000, 0x00000000}}; /* 2**52 */ -#else -#ifdef LITTLE_ENDI - mynumber -/**/ two52 = {{0x00000000, 0x43300000}}; /* 2**52 */ -#endif -#endif - - u.x = x; - m = u.i[HIGH_HALF]; - *error = 0; - *delta = 0; - if (m < 0x00100000) /* 1>20); } - else - {u.i[HIGH_HALF] = (m&0x000fffff)|0x3fe00000; two52.i[LOW_HALF]=(m>>20)+1; } - - v.x = u.x + bigu.x; - uu = v.x - bigu.x; - i = (v.i[LOW_HALF]&0x000003ff)<<2; - if (two52.i[LOW_HALF] == 1023) /* nx = 0 */ - { - if (i > 1192 && i < 1208) /* |x-1| < 1.5*2**-10 */ - { - t = x - 1.0; - t1 = (t+5.0e6)-5.0e6; - t2 = t-t1; - e1 = t - 0.5*t1*t1; - e2 = t*t*t*(r3+t*(r4+t*(r5+t*(r6+t*(r7+t*r8)))))-0.5*t2*(t+t1); - res = e1+e2; - *error = 1.0e-21*ABS(t); - *delta = (e1-res)+e2; - return res; - } /* |x-1| < 1.5*2**-10 */ - else - { - v.x = u.x*(ui.x[i]+ui.x[i+1])+bigv.x; - vv = v.x-bigv.x; - j = v.i[LOW_HALF]&0x0007ffff; - j = j+j+j; - eps = u.x - uu*vv; - e1 = eps*ui.x[i]; - e2 = eps*(ui.x[i+1]+vj.x[j]*(ui.x[i]+ui.x[i+1])); - e = e1+e2; - e2 = ((e1-e)+e2); - t=ui.x[i+2]+vj.x[j+1]; - t1 = t+e; - t2 = (((t-t1)+e)+(ui.x[i+3]+vj.x[j+2]))+e2+e*e*(p2+e*(p3+e*p4)); - res=t1+t2; - *error = 1.0e-24; - *delta = (t1-res)+t2; - return res; - } - } /* nx = 0 */ - else /* nx != 0 */ - { - eps = u.x - uu; - nx = (two52.x - two52e.x)+add; - e1 = eps*ui.x[i]; - e2 = eps*ui.x[i+1]; - e=e1+e2; - e2 = (e1-e)+e2; - t=nx*ln2a.x+ui.x[i+2]; - t1=t+e; - t2=(((t-t1)+e)+nx*ln2b.x+ui.x[i+3]+e2)+e*e*(q2+e*(q3+e*(q4+e*(q5+e*q6)))); - res = t1+t2; - *error = 1.0e-21; - *delta = (t1-res)+t2; - return res; - } /* nx != 0 */ -} - -/****************************************************************************/ -/* More slow but more accurate routine of log */ -/* Computing log(x)(x is left argument).The result is return double + delta.*/ -/* The result is bounded by error (right argument) */ -/****************************************************************************/ -static double my_log2(double x, double *delta, double *error) { - int i,j,m; -#if 0 - int n; -#endif - double uu,vv,eps,nx,e,e1,e2,t,t1,t2,res,add=0; -#if 0 - double cor; -#endif - double ou1,ou2,lu1,lu2,ov,lv1,lv2,a,a1,a2; - double y,yy,z,zz,j1,j2,j3,j4,j5,j6,j7,j8; - mynumber u,v; -#ifdef BIG_ENDI - mynumber -/**/ two52 = {{0x43300000, 0x00000000}}; /* 2**52 */ -#else -#ifdef LITTLE_ENDI - mynumber -/**/ two52 = {{0x00000000, 0x43300000}}; /* 2**52 */ -#endif -#endif - - u.x = x; - m = u.i[HIGH_HALF]; - *error = 0; - *delta = 0; - add=0; - if (m<0x00100000) { /* x < 2^-1022 */ - x = x*t52.x; add = -52.0; u.x = x; m = u.i[HIGH_HALF]; } - - if ((m&0x000fffff) < 0x0006a09e) - {u.i[HIGH_HALF] = (m&0x000fffff)|0x3ff00000; two52.i[LOW_HALF]=(m>>20); } - else - {u.i[HIGH_HALF] = (m&0x000fffff)|0x3fe00000; two52.i[LOW_HALF]=(m>>20)+1; } - - v.x = u.x + bigu.x; - uu = v.x - bigu.x; - i = (v.i[LOW_HALF]&0x000003ff)<<2; - /*------------------------------------- |x-1| < 2**-11------------------------------- */ - if ((two52.i[LOW_HALF] == 1023) && (i == 1200)) - { - t = x - 1.0; - EMULV(t,s3,y,yy,j1,j2,j3,j4,j5); - ADD2(-0.5,0,y,yy,z,zz,j1,j2); - MUL2(t,0,z,zz,y,yy,j1,j2,j3,j4,j5,j6,j7,j8); - MUL2(t,0,y,yy,z,zz,j1,j2,j3,j4,j5,j6,j7,j8); - - e1 = t+z; - e2 = (((t-e1)+z)+zz)+t*t*t*(ss3+t*(s4+t*(s5+t*(s6+t*(s7+t*s8))))); - res = e1+e2; - *error = 1.0e-25*ABS(t); - *delta = (e1-res)+e2; - return res; - } - /*----------------------------- |x-1| > 2**-11 -------------------------- */ - else - { /*Computing log(x) according to log table */ - nx = (two52.x - two52e.x)+add; - ou1 = ui.x[i]; - ou2 = ui.x[i+1]; - lu1 = ui.x[i+2]; - lu2 = ui.x[i+3]; - v.x = u.x*(ou1+ou2)+bigv.x; - vv = v.x-bigv.x; - j = v.i[LOW_HALF]&0x0007ffff; - j = j+j+j; - eps = u.x - uu*vv; - ov = vj.x[j]; - lv1 = vj.x[j+1]; - lv2 = vj.x[j+2]; - a = (ou1+ou2)*(1.0+ov); - a1 = (a+1.0e10)-1.0e10; - a2 = a*(1.0-a1*uu*vv); - e1 = eps*a1; - e2 = eps*a2; - e = e1+e2; - e2 = (e1-e)+e2; - t=nx*ln2a.x+lu1+lv1; - t1 = t+e; - t2 = (((t-t1)+e)+(lu2+lv2+nx*ln2b.x+e2))+e*e*(p2+e*(p3+e*p4)); - res=t1+t2; - *error = 1.0e-27; - *delta = (t1-res)+t2; - return res; - } -} - -/**********************************************************************/ -/* Routine receives a double x and checks if it is an integer. If not */ -/* it returns 0, else it returns 1 if even or -1 if odd. */ -/**********************************************************************/ -static int checkint(double x) { - union {int4 i[2]; double x;} u; - int k,m,n; -#if 0 - int l; -#endif - u.x = x; - m = u.i[HIGH_HALF]&0x7fffffff; /* no sign */ - if (m >= 0x7ff00000) return 0; /* x is +/-inf or NaN */ - if (m >= 0x43400000) return 1; /* |x| >= 2**53 */ - if (m < 0x40000000) return 0; /* |x| < 2, can not be 0 or 1 */ - n = u.i[LOW_HALF]; - k = (m>>20)-1023; /* 1 <= k <= 52 */ - if (k == 52) return (n&1)? -1:1; /* odd or even*/ - if (k>20) { - if (n<<(k-20)) return 0; /* if not integer */ - return (n<<(k-21))?-1:1; - } - if (n) return 0; /*if not integer*/ - if (k == 20) return (m&1)? -1:1; - if (m<<(k+12)) return 0; - return (m<<(k+11))?-1:1; -} diff --git a/libgcc-math/dbl-64/e_rem_pio2.c b/libgcc-math/dbl-64/e_rem_pio2.c deleted file mode 100644 index 7d4f7e19b5c..00000000000 --- a/libgcc-math/dbl-64/e_rem_pio2.c +++ /dev/null @@ -1,182 +0,0 @@ -/* @(#)e_rem_pio2.c 5.1 93/09/24 */ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -#if defined(LIBM_SCCS) && !defined(lint) -static char rcsid[] = "$NetBSD: e_rem_pio2.c,v 1.8 1995/05/10 20:46:02 jtc Exp $"; -#endif - -/* __ieee754_rem_pio2(x,y) - * - * return the remainder of x rem pi/2 in y[0]+y[1] - * use __kernel_rem_pio2() - */ - -#include "math_private.h" - -/* - * Table of constants for 2/pi, 396 Hex digits (476 decimal) of 2/pi - */ -#ifdef __STDC__ -static const int32_t two_over_pi[] = { -#else -static int32_t two_over_pi[] = { -#endif -0xA2F983, 0x6E4E44, 0x1529FC, 0x2757D1, 0xF534DD, 0xC0DB62, -0x95993C, 0x439041, 0xFE5163, 0xABDEBB, 0xC561B7, 0x246E3A, -0x424DD2, 0xE00649, 0x2EEA09, 0xD1921C, 0xFE1DEB, 0x1CB129, -0xA73EE8, 0x8235F5, 0x2EBB44, 0x84E99C, 0x7026B4, 0x5F7E41, -0x3991D6, 0x398353, 0x39F49C, 0x845F8B, 0xBDF928, 0x3B1FF8, -0x97FFDE, 0x05980F, 0xEF2F11, 0x8B5A0A, 0x6D1F6D, 0x367ECF, -0x27CB09, 0xB74F46, 0x3F669E, 0x5FEA2D, 0x7527BA, 0xC7EBE5, -0xF17B3D, 0x0739F7, 0x8A5292, 0xEA6BFB, 0x5FB11F, 0x8D5D08, -0x560330, 0x46FC7B, 0x6BABF0, 0xCFBC20, 0x9AF436, 0x1DA9E3, -0x91615E, 0xE61B08, 0x659985, 0x5F14A0, 0x68408D, 0xFFD880, -0x4D7327, 0x310606, 0x1556CA, 0x73A8C9, 0x60E27B, 0xC08C6B, -}; - -#ifdef __STDC__ -static const int32_t npio2_hw[] = { -#else -static int32_t npio2_hw[] = { -#endif -0x3FF921FB, 0x400921FB, 0x4012D97C, 0x401921FB, 0x401F6A7A, 0x4022D97C, -0x4025FDBB, 0x402921FB, 0x402C463A, 0x402F6A7A, 0x4031475C, 0x4032D97C, -0x40346B9C, 0x4035FDBB, 0x40378FDB, 0x403921FB, 0x403AB41B, 0x403C463A, -0x403DD85A, 0x403F6A7A, 0x40407E4C, 0x4041475C, 0x4042106C, 0x4042D97C, -0x4043A28C, 0x40446B9C, 0x404534AC, 0x4045FDBB, 0x4046C6CB, 0x40478FDB, -0x404858EB, 0x404921FB, -}; - -/* - * invpio2: 53 bits of 2/pi - * pio2_1: first 33 bit of pi/2 - * pio2_1t: pi/2 - pio2_1 - * pio2_2: second 33 bit of pi/2 - * pio2_2t: pi/2 - (pio2_1+pio2_2) - * pio2_3: third 33 bit of pi/2 - * pio2_3t: pi/2 - (pio2_1+pio2_2+pio2_3) - */ - -#ifdef __STDC__ -static const double -#else -static double -#endif -zero = 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */ -half = 5.00000000000000000000e-01, /* 0x3FE00000, 0x00000000 */ -two24 = 1.67772160000000000000e+07, /* 0x41700000, 0x00000000 */ -invpio2 = 6.36619772367581382433e-01, /* 0x3FE45F30, 0x6DC9C883 */ -pio2_1 = 1.57079632673412561417e+00, /* 0x3FF921FB, 0x54400000 */ -pio2_1t = 6.07710050650619224932e-11, /* 0x3DD0B461, 0x1A626331 */ -pio2_2 = 6.07710050630396597660e-11, /* 0x3DD0B461, 0x1A600000 */ -pio2_2t = 2.02226624879595063154e-21, /* 0x3BA3198A, 0x2E037073 */ -pio2_3 = 2.02226624871116645580e-21, /* 0x3BA3198A, 0x2E000000 */ -pio2_3t = 8.47842766036889956997e-32; /* 0x397B839A, 0x252049C1 */ - -#ifdef __STDC__ - int32_t __ieee754_rem_pio2(double x, double *y) -#else - int32_t __ieee754_rem_pio2(x,y) - double x,y[]; -#endif -{ - double z=z,w,t,r,fn; - double tx[3]; - int32_t e0,i,j,nx,n,ix,hx; - uint32_t low; - - GET_HIGH_WORD(hx,x); /* high word of x */ - ix = hx&0x7fffffff; - if(ix<=0x3fe921fb) /* |x| ~<= pi/4 , no need for reduction */ - {y[0] = x; y[1] = 0; return 0;} - if(ix<0x4002d97c) { /* |x| < 3pi/4, special case with n=+-1 */ - if(hx>0) { - z = x - pio2_1; - if(ix!=0x3ff921fb) { /* 33+53 bit pi is good enough */ - y[0] = z - pio2_1t; - y[1] = (z-y[0])-pio2_1t; - } else { /* near pi/2, use 33+33+53 bit pi */ - z -= pio2_2; - y[0] = z - pio2_2t; - y[1] = (z-y[0])-pio2_2t; - } - return 1; - } else { /* negative x */ - z = x + pio2_1; - if(ix!=0x3ff921fb) { /* 33+53 bit pi is good enough */ - y[0] = z + pio2_1t; - y[1] = (z-y[0])+pio2_1t; - } else { /* near pi/2, use 33+33+53 bit pi */ - z += pio2_2; - y[0] = z + pio2_2t; - y[1] = (z-y[0])+pio2_2t; - } - return -1; - } - } - if(ix<=0x413921fb) { /* |x| ~<= 2^19*(pi/2), medium size */ - t = fabs(x); - n = (int32_t) (t*invpio2+half); - fn = (double)n; - r = t-fn*pio2_1; - w = fn*pio2_1t; /* 1st round good to 85 bit */ - if(n<32&&ix!=npio2_hw[n-1]) { - y[0] = r-w; /* quick check no cancellation */ - } else { - uint32_t high; - j = ix>>20; - y[0] = r-w; - GET_HIGH_WORD(high,y[0]); - i = j-((high>>20)&0x7ff); - if(i>16) { /* 2nd iteration needed, good to 118 */ - t = r; - w = fn*pio2_2; - r = t-w; - w = fn*pio2_2t-((t-r)-w); - y[0] = r-w; - GET_HIGH_WORD(high,y[0]); - i = j-((high>>20)&0x7ff); - if(i>49) { /* 3rd iteration need, 151 bits acc */ - t = r; /* will cover all possible cases */ - w = fn*pio2_3; - r = t-w; - w = fn*pio2_3t-((t-r)-w); - y[0] = r-w; - } - } - } - y[1] = (r-y[0])-w; - if(hx<0) {y[0] = -y[0]; y[1] = -y[1]; return -n;} - else return n; - } - /* - * all other (large) arguments - */ - if(ix>=0x7ff00000) { /* x is inf or NaN */ - y[0]=y[1]=x-x; return 0; - } - /* set z = scalbn(|x|,ilogb(x)-23) */ - GET_LOW_WORD(low,x); - SET_LOW_WORD(z,low); - e0 = (ix>>20)-1046; /* e0 = ilogb(z)-23; */ - SET_HIGH_WORD(z, ix - ((int32_t)(e0<<20))); - for(i=0;i<2;i++) { - tx[i] = (double)((int32_t)(z)); - z = (z-tx[i])*two24; - } - tx[2] = z; - nx = 3; - while(tx[nx-1]==zero) nx--; /* skip zero term */ - n = __kernel_rem_pio2(tx,y,e0,nx,2,two_over_pi); - if(hx<0) {y[0] = -y[0]; y[1] = -y[1]; return -n;} - return n; -} diff --git a/libgcc-math/dbl-64/e_sqrt.c b/libgcc-math/dbl-64/e_sqrt.c deleted file mode 100644 index f7e80554917..00000000000 --- a/libgcc-math/dbl-64/e_sqrt.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/*********************************************************************/ -/* MODULE_NAME: uroot.c */ -/* */ -/* FUNCTION: usqrt */ -/* */ -/* FILES NEEDED: dla.h endian.h mydefs.h uroot.h */ -/* uroot.tbl */ -/* */ -/* An ultimate sqrt routine. Given an IEEE double machine number x */ -/* it computes the correctly rounded (to nearest) value of square */ -/* root of x. */ -/* Assumption: Machine arithmetic operations are performed in */ -/* round to nearest mode of IEEE 754 standard. */ -/* */ -/*********************************************************************/ - -#include "endian.h" -#include "mydefs.h" -#include "dla.h" -#include "MathLib.h" -#include "root.tbl" -#include "math_private.h" - -/*********************************************************************/ -/* An ultimate sqrt routine. Given an IEEE double machine number x */ -/* it computes the correctly rounded (to nearest) value of square */ -/* root of x. */ -/*********************************************************************/ -double __ieee754_sqrt(double x) { -#include "uroot.h" - static const double - rt0 = 9.99999999859990725855365213134618E-01, - rt1 = 4.99999999495955425917856814202739E-01, - rt2 = 3.75017500867345182581453026130850E-01, - rt3 = 3.12523626554518656309172508769531E-01; - static const double big = 134217728.0; - double y,t,del,res,res1,hy,z,zz,p,hx,tx,ty,s; - mynumber a,c={{0,0}}; - int4 k; - - a.x=x; - k=a.i[HIGH_HALF]; - a.i[HIGH_HALF]=(k&0x001fffff)|0x3fe00000; - t=inroot[(k&0x001fffff)>>14]; - s=a.x; - /*----------------- 2^-1022 <= | x |< 2^1024 -----------------*/ - if (k>0x000fffff && k<0x7ff00000) { - y=1.0-t*(t*s); - t=t*(rt0+y*(rt1+y*(rt2+y*rt3))); - c.i[HIGH_HALF]=0x20000000+((k&0x7fe00000)>>1); - y=t*s; - hy=(y+big)-big; - del=0.5*t*((s-hy*hy)-(y-hy)*(y+hy)); - res=y+del; - if (res == (res+1.002*((y-res)+del))) return res*c.x; - else { - res1=res+1.5*((y-res)+del); - EMULV(res,res1,z,zz,p,hx,tx,hy,ty); /* (z+zz)=res*res1 */ - return ((((z-s)+zz)<0)?max(res,res1):min(res,res1))*c.x; - } - } - else { - if ((k & 0x7ff00000) == 0x7ff00000) - return x*x+x; /* sqrt(NaN)=NaN, sqrt(+inf)=+inf, sqrt(-inf)=sNaN */ - if (x==0) return x; /* sqrt(+0)=+0, sqrt(-0)=-0 */ - if (k<0) return (x-x)/(x-x); /* sqrt(-ve)=sNaN */ - return tm256.x*__ieee754_sqrt(x*t512.x); - } -} diff --git a/libgcc-math/dbl-64/halfulp.c b/libgcc-math/dbl-64/halfulp.c deleted file mode 100644 index 478a4bacf60..00000000000 --- a/libgcc-math/dbl-64/halfulp.c +++ /dev/null @@ -1,123 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * written by International Business Machines Corp. - * Copyright (C) 2001, 2005 Free Software Foundation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/************************************************************************/ -/* */ -/* MODULE_NAME:halfulp.c */ -/* */ -/* FUNCTIONS:halfulp */ -/* FILES NEEDED: mydefs.h dla.h endian.h */ -/* uroot.c */ -/* */ -/*Routine halfulp(double x, double y) computes x^y where result does */ -/*not need rounding. If the result is closer to 0 than can be */ -/*represented it returns 0. */ -/* In the following cases the function does not compute anything */ -/*and returns a negative number: */ -/*1. if the result needs rounding, */ -/*2. if y is outside the interval [0, 2^20-1], */ -/*3. if x can be represented by x=2**n for some integer n. */ -/************************************************************************/ - -#include "endian.h" -#include "mydefs.h" -#include "dla.h" -#include "math_private.h" - -double __ieee754_sqrt(double x); - -static const int4 tab54[32] = { - 262143, 11585, 1782, 511, 210, 107, 63, 42, - 30, 22, 17, 14, 12, 10, 9, 7, - 7, 6, 5, 5, 5, 4, 4, 4, - 3, 3, 3, 3, 3, 3, 3, 3 }; - - -double __halfulp(double x, double y) -{ - mynumber v; - double z,u,uu,j1,j2,j3,j4,j5; - int4 k,l,m,n; - if (y <= 0) { /*if power is negative or zero */ - v.x = y; - if (v.i[LOW_HALF] != 0) return -10.0; - v.x = x; - if (v.i[LOW_HALF] != 0) return -10.0; - if ((v.i[HIGH_HALF]&0x000fffff) != 0) return -10; /* if x =2 ^ n */ - k = ((v.i[HIGH_HALF]&0x7fffffff)>>20)-1023; /* find this n */ - z = (double) k; - return (z*y == -1075.0)?0: -10.0; - } - /* if y > 0 */ - v.x = y; - if (v.i[LOW_HALF] != 0) return -10.0; - - v.x=x; - /* case where x = 2**n for some integer n */ - if (((v.i[HIGH_HALF]&0x000fffff)|v.i[LOW_HALF]) == 0) { - k=(v.i[HIGH_HALF]>>20)-1023; - return (((double) k)*y == -1075.0)?0:-10.0; - } - - v.x = y; - k = v.i[HIGH_HALF]; - m = k<<12; - l = 0; - while (m) - {m = m<<1; l++; } - n = (k&0x000fffff)|0x00100000; - n = n>>(20-l); /* n is the odd integer of y */ - k = ((k>>20) -1023)-l; /* y = n*2**k */ - if (k>5) return -10.0; - if (k>0) for (;k>0;k--) n *= 2; - if (n > 34) return -10.0; - k = -k; - if (k>5) return -10.0; - - /* now treat x */ - while (k>0) { - z = __ieee754_sqrt(x); - EMULV(z,z,u,uu,j1,j2,j3,j4,j5); - if (((u-x)+uu) != 0) break; - x = z; - k--; - } - if (k) return -10.0; - - /* it is impossible that n == 2, so the mantissa of x must be short */ - - v.x = x; - if (v.i[LOW_HALF]) return -10.0; - k = v.i[HIGH_HALF]; - m = k<<12; - l = 0; - while (m) {m = m<<1; l++; } - m = (k&0x000fffff)|0x00100000; - m = m>>(20-l); /* m is the odd integer of x */ - - /* now check whether the length of m**n is at most 54 bits */ - - if (m > tab54[n-3]) return -10.0; - - /* yes, it is - now compute x**n by simple multiplications */ - - u = x; - for (k=1;k= 0 or (e0-3)/24 >= jv - * Hence jv = max(0,(e0-3)/24). - * - * jp jp+1 is the number of terms in PIo2[] needed, jp = jk. - * - * q[] double array with integral value, representing the - * 24-bits chunk of the product of x and 2/pi. - * - * q0 the corresponding exponent of q[0]. Note that the - * exponent for q[i] would be q0-24*i. - * - * PIo2[] double precision array, obtained by cutting pi/2 - * into 24 bits chunks. - * - * f[] ipio2[] in floating point - * - * iq[] integer array by breaking up q[] in 24-bits chunk. - * - * fq[] final product of x*(2/pi) in fq[0],..,fq[jk] - * - * ih integer. If >0 it indicates q[] is >= 0.5, hence - * it also indicates the *sign* of the result. - * - */ - - -/* - * Constants: - * The hexadecimal values are the intended ones for the following - * constants. The decimal values may be used, provided that the - * compiler will convert from decimal to binary accurately enough - * to produce the hexadecimal values shown. - */ - -#include "math_private.h" - -#ifdef __STDC__ -static const int init_jk[] = {2,3,4,6}; /* initial value for jk */ -#else -static int init_jk[] = {2,3,4,6}; -#endif - -#ifdef __STDC__ -static const double PIo2[] = { -#else -static double PIo2[] = { -#endif - 1.57079625129699707031e+00, /* 0x3FF921FB, 0x40000000 */ - 7.54978941586159635335e-08, /* 0x3E74442D, 0x00000000 */ - 5.39030252995776476554e-15, /* 0x3CF84698, 0x80000000 */ - 3.28200341580791294123e-22, /* 0x3B78CC51, 0x60000000 */ - 1.27065575308067607349e-29, /* 0x39F01B83, 0x80000000 */ - 1.22933308981111328932e-36, /* 0x387A2520, 0x40000000 */ - 2.73370053816464559624e-44, /* 0x36E38222, 0x80000000 */ - 2.16741683877804819444e-51, /* 0x3569F31D, 0x00000000 */ -}; - -#ifdef __STDC__ -static const double -#else -static double -#endif -zero = 0.0, -one = 1.0, -two24 = 1.67772160000000000000e+07, /* 0x41700000, 0x00000000 */ -twon24 = 5.96046447753906250000e-08; /* 0x3E700000, 0x00000000 */ - -#ifdef __STDC__ - int __kernel_rem_pio2(double *x, double *y, int e0, int nx, int prec, const int32_t *ipio2) -#else - int __kernel_rem_pio2(x,y,e0,nx,prec,ipio2) - double x[], y[]; int e0,nx,prec; int32_t ipio2[]; -#endif -{ - int32_t jz,jx,jv,jp,jk,carry,n,iq[20],i,j,k,m,q0,ih; - double z,fw,f[20],fq[20],q[20]; - - /* initialize jk*/ - jk = init_jk[prec]; - jp = jk; - - /* determine jx,jv,q0, note that 3>q0 */ - jx = nx-1; - jv = (e0-3)/24; if(jv<0) jv=0; - q0 = e0-24*(jv+1); - - /* set up f[0] to f[jx+jk] where f[jx+jk] = ipio2[jv+jk] */ - j = jv-jx; m = jx+jk; - for(i=0;i<=m;i++,j++) f[i] = (j<0)? zero : (double) ipio2[j]; - - /* compute q[0],q[1],...q[jk] */ - for (i=0;i<=jk;i++) { - for(j=0,fw=0.0;j<=jx;j++) fw += x[j]*f[jx+i-j]; q[i] = fw; - } - - jz = jk; -recompute: - /* distill q[] into iq[] reversingly */ - for(i=0,j=jz,z=q[jz];j>0;i++,j--) { - fw = (double)((int32_t)(twon24* z)); - iq[i] = (int32_t)(z-two24*fw); - z = q[j-1]+fw; - } - - /* compute n */ - z = __scalbn(z,q0); /* actual value of z */ - z -= 8.0*__floor(z*0.125); /* trim off integer >= 8 */ - n = (int32_t) z; - z -= (double)n; - ih = 0; - if(q0>0) { /* need iq[jz-1] to determine n */ - i = (iq[jz-1]>>(24-q0)); n += i; - iq[jz-1] -= i<<(24-q0); - ih = iq[jz-1]>>(23-q0); - } - else if(q0==0) ih = iq[jz-1]>>23; - else if(z>=0.5) ih=2; - - if(ih>0) { /* q > 0.5 */ - n += 1; carry = 0; - for(i=0;i0) { /* rare case: chance is 1 in 12 */ - switch(q0) { - case 1: - iq[jz-1] &= 0x7fffff; break; - case 2: - iq[jz-1] &= 0x3fffff; break; - } - } - if(ih==2) { - z = one - z; - if(carry!=0) z -= __scalbn(one,q0); - } - } - - /* check if recomputation is needed */ - if(z==zero) { - j = 0; - for (i=jz-1;i>=jk;i--) j |= iq[i]; - if(j==0) { /* need recomputation */ - for(k=1;iq[jk-k]==0;k++); /* k = no. of terms needed */ - - for(i=jz+1;i<=jz+k;i++) { /* add q[jz+1] to q[jz+k] */ - f[jx+i] = (double) ipio2[jv+i]; - for(j=0,fw=0.0;j<=jx;j++) fw += x[j]*f[jx+i-j]; - q[i] = fw; - } - jz += k; - goto recompute; - } - } - - /* chop off zero terms */ - if(z==0.0) { - jz -= 1; q0 -= 24; - while(iq[jz]==0) { jz--; q0-=24;} - } else { /* break z into 24-bit if necessary */ - z = __scalbn(z,-q0); - if(z>=two24) { - fw = (double)((int32_t)(twon24*z)); - iq[jz] = (int32_t)(z-two24*fw); - jz += 1; q0 += 24; - iq[jz] = (int32_t) fw; - } else iq[jz] = (int32_t) z ; - } - - /* convert integer "bit" chunk to floating-point value */ - fw = __scalbn(one,q0); - for(i=jz;i>=0;i--) { - q[i] = fw*(double)iq[i]; fw*=twon24; - } - - /* compute PIo2[0,...,jp]*q[jz,...,0] */ - for(i=jz;i>=0;i--) { - for(fw=0.0,k=0;k<=jp&&k<=jz-i;k++) fw += PIo2[k]*q[i+k]; - fq[jz-i] = fw; - } - - /* compress fq[] into y[] */ - switch(prec) { - case 0: - fw = 0.0; - for (i=jz;i>=0;i--) fw += fq[i]; - y[0] = (ih==0)? fw: -fw; - break; - case 1: - case 2: - fw = 0.0; - for (i=jz;i>=0;i--) fw += fq[i]; - y[0] = (ih==0)? fw: -fw; - fw = fq[0]-fw; - for (i=1;i<=jz;i++) fw += fq[i]; - y[1] = (ih==0)? fw: -fw; - break; - case 3: /* painful */ - for (i=jz;i>0;i--) { - fw = fq[i-1]+fq[i]; - fq[i] += fq[i-1]-fw; - fq[i-1] = fw; - } - for (i=jz;i>1;i--) { - fw = fq[i-1]+fq[i]; - fq[i] += fq[i-1]-fw; - fq[i-1] = fw; - } - for (fw=0.0,i=jz;i>=2;i--) fw += fq[i]; - if(ih==0) { - y[0] = fq[0]; y[1] = fq[1]; y[2] = fw; - } else { - y[0] = -fq[0]; y[1] = -fq[1]; y[2] = -fw; - } - } - return n&7; -} diff --git a/libgcc-math/dbl-64/mpa.c b/libgcc-math/dbl-64/mpa.c deleted file mode 100644 index 0fd87321445..00000000000 --- a/libgcc-math/dbl-64/mpa.c +++ /dev/null @@ -1,508 +0,0 @@ - -/* - * IBM Accurate Mathematical Library - * written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/************************************************************************/ -/* MODULE_NAME: mpa.c */ -/* */ -/* FUNCTIONS: */ -/* mcr */ -/* acr */ -/* cr */ -/* cpy */ -/* cpymn */ -/* norm */ -/* denorm */ -/* mp_dbl */ -/* dbl_mp */ -/* add_magnitudes */ -/* sub_magnitudes */ -/* add */ -/* sub */ -/* mul */ -/* inv */ -/* dvd */ -/* */ -/* Arithmetic functions for multiple precision numbers. */ -/* Relative errors are bounded */ -/************************************************************************/ - - -#include "endian.h" -#include "mpa.h" -#include "mpa2.h" - -/* mcr() compares the sizes of the mantissas of two multiple precision */ -/* numbers. Mantissas are compared regardless of the signs of the */ -/* numbers, even if x->d[0] or y->d[0] are zero. Exponents are also */ -/* disregarded. */ -static int mcr(const mp_no *x, const mp_no *y, int p) { - int i; - for (i=1; i<=p; i++) { - if (X[i] == Y[i]) continue; - else if (X[i] > Y[i]) return 1; - else return -1; } - return 0; -} - - - -/* acr() compares the absolute values of two multiple precision numbers */ -int __acr(const mp_no *x, const mp_no *y, int p) { - int i; - - if (X[0] == ZERO) { - if (Y[0] == ZERO) i= 0; - else i=-1; - } - else if (Y[0] == ZERO) i= 1; - else { - if (EX > EY) i= 1; - else if (EX < EY) i=-1; - else i= mcr(x,y,p); - } - - return i; -} - - -/* cr90 compares the values of two multiple precision numbers */ -int __cr(const mp_no *x, const mp_no *y, int p) { - int i; - - if (X[0] > Y[0]) i= 1; - else if (X[0] < Y[0]) i=-1; - else if (X[0] < ZERO ) i= __acr(y,x,p); - else i= __acr(x,y,p); - - return i; -} - - -/* Copy a multiple precision number. Set *y=*x. x=y is permissible. */ -void __cpy(const mp_no *x, mp_no *y, int p) { - int i; - - EY = EX; - for (i=0; i <= p; i++) Y[i] = X[i]; - - return; -} - - -/* Copy a multiple precision number x of precision m into a */ -/* multiple precision number y of precision n. In case n>m, */ -/* the digits of y beyond the m'th are set to zero. In case */ -/* n= 2**(-1022))) */ -static void norm(const mp_no *x, double *y, int p) -{ - #define R radixi.d - int i; -#if 0 - int k; -#endif - double a,c=c,u,v,z[5]; - if (p<5) { - if (p==1) c = X[1]; - else if (p==2) c = X[1] + R* X[2]; - else if (p==3) c = X[1] + R*(X[2] + R* X[3]); - else if (p==4) c =(X[1] + R* X[2]) + R*R*(X[3] + R*X[4]); - } - else { - for (a=ONE, z[1]=X[1]; z[1] < TWO23; ) - {a *= TWO; z[1] *= TWO; } - - for (i=2; i<5; i++) { - z[i] = X[i]*a; - u = (z[i] + CUTTER)-CUTTER; - if (u > z[i]) u -= RADIX; - z[i] -= u; - z[i-1] += u*RADIXI; - } - - u = (z[3] + TWO71) - TWO71; - if (u > z[3]) u -= TWO19; - v = z[3]-u; - - if (v == TWO18) { - if (z[4] == ZERO) { - for (i=5; i <= p; i++) { - if (X[i] == ZERO) continue; - else {z[3] += ONE; break; } - } - } - else z[3] += ONE; - } - - c = (z[1] + R *(z[2] + R * z[3]))/a; - } - - c *= X[0]; - - for (i=1; iEX; i--) c *= RADIXI; - - *y = c; - return; -#undef R -} - -/* Convert a multiple precision number *x into a double precision */ -/* number *y, denormalized case (|x| < 2**(-1022))) */ -static void denorm(const mp_no *x, double *y, int p) -{ - int i,k; - double c,u,z[5]; -#if 0 - double a,v; -#endif - -#define R radixi.d - if (EX<-44 || (EX==-44 && X[1] z[3]) u -= TWO5; - - if (u==z[3]) { - for (i=k+1; i <= p; i++) { - if (X[i] == ZERO) continue; - else {z[3] += ONE; break; } - } - } - - c = X[0]*((z[1] + R*(z[2] + R*z[3])) - TWO10); - - *y = c*TWOM1032; - return; - -#undef R -} - -/* Convert a multiple precision number *x into a double precision number *y. */ -/* The result is correctly rounded to the nearest/even. *x is left unchanged */ - -void __mp_dbl(const mp_no *x, double *y, int p) { -#if 0 - int i,k; - double a,c,u,v,z[5]; -#endif - - if (X[0] == ZERO) {*y = ZERO; return; } - - if (EX> -42) norm(x,y,p); - else if (EX==-42 && X[1]>=TWO10) norm(x,y,p); - else denorm(x,y,p); -} - - -/* dbl_mp() converts a double precision number x into a multiple precision */ -/* number *y. If the precision p is too small the result is truncated. x is */ -/* left unchanged. */ - -void __dbl_mp(double x, mp_no *y, int p) { - - int i,n; - double u; - - /* Sign */ - if (x == ZERO) {Y[0] = ZERO; return; } - else if (x > ZERO) Y[0] = ONE; - else {Y[0] = MONE; x=-x; } - - /* Exponent */ - for (EY=ONE; x >= RADIX; EY += ONE) x *= RADIXI; - for ( ; x < ONE; EY -= ONE) x *= RADIX; - - /* Digits */ - n=MIN(p,4); - for (i=1; i<=n; i++) { - u = (x + TWO52) - TWO52; - if (u>x) u -= ONE; - Y[i] = u; x -= u; x *= RADIX; } - for ( ; i<=p; i++) Y[i] = ZERO; - return; -} - - -/* add_magnitudes() adds the magnitudes of *x & *y assuming that */ -/* abs(*x) >= abs(*y) > 0. */ -/* The sign of the sum *z is undefined. x&y may overlap but not x&z or y&z. */ -/* No guard digit is used. The result equals the exact sum, truncated. */ -/* *x & *y are left unchanged. */ - -static void add_magnitudes(const mp_no *x, const mp_no *y, mp_no *z, int p) { - - int i,j,k; - - EZ = EX; - - i=p; j=p+ EY - EX; k=p+1; - - if (j<1) - {__cpy(x,z,p); return; } - else Z[k] = ZERO; - - for (; j>0; i--,j--) { - Z[k] += X[i] + Y[j]; - if (Z[k] >= RADIX) { - Z[k] -= RADIX; - Z[--k] = ONE; } - else - Z[--k] = ZERO; - } - - for (; i>0; i--) { - Z[k] += X[i]; - if (Z[k] >= RADIX) { - Z[k] -= RADIX; - Z[--k] = ONE; } - else - Z[--k] = ZERO; - } - - if (Z[1] == ZERO) { - for (i=1; i<=p; i++) Z[i] = Z[i+1]; } - else EZ += ONE; -} - - -/* sub_magnitudes() subtracts the magnitudes of *x & *y assuming that */ -/* abs(*x) > abs(*y) > 0. */ -/* The sign of the difference *z is undefined. x&y may overlap but not x&z */ -/* or y&z. One guard digit is used. The error is less than one ulp. */ -/* *x & *y are left unchanged. */ - -static void sub_magnitudes(const mp_no *x, const mp_no *y, mp_no *z, int p) { - - int i,j,k; - - EZ = EX; - - if (EX == EY) { - i=j=k=p; - Z[k] = Z[k+1] = ZERO; } - else { - j= EX - EY; - if (j > p) {__cpy(x,z,p); return; } - else { - i=p; j=p+1-j; k=p; - if (Y[j] > ZERO) { - Z[k+1] = RADIX - Y[j--]; - Z[k] = MONE; } - else { - Z[k+1] = ZERO; - Z[k] = ZERO; j--;} - } - } - - for (; j>0; i--,j--) { - Z[k] += (X[i] - Y[j]); - if (Z[k] < ZERO) { - Z[k] += RADIX; - Z[--k] = MONE; } - else - Z[--k] = ZERO; - } - - for (; i>0; i--) { - Z[k] += X[i]; - if (Z[k] < ZERO) { - Z[k] += RADIX; - Z[--k] = MONE; } - else - Z[--k] = ZERO; - } - - for (i=1; Z[i] == ZERO; i++) ; - EZ = EZ - i + 1; - for (k=1; i <= p+1; ) - Z[k++] = Z[i++]; - for (; k <= p; ) - Z[k++] = ZERO; - - return; -} - - -/* Add two multiple precision numbers. Set *z = *x + *y. x&y may overlap */ -/* but not x&z or y&z. One guard digit is used. The error is less than */ -/* one ulp. *x & *y are left unchanged. */ - -void __add(const mp_no *x, const mp_no *y, mp_no *z, int p) { - - int n; - - if (X[0] == ZERO) {__cpy(y,z,p); return; } - else if (Y[0] == ZERO) {__cpy(x,z,p); return; } - - if (X[0] == Y[0]) { - if (__acr(x,y,p) > 0) {add_magnitudes(x,y,z,p); Z[0] = X[0]; } - else {add_magnitudes(y,x,z,p); Z[0] = Y[0]; } - } - else { - if ((n=__acr(x,y,p)) == 1) {sub_magnitudes(x,y,z,p); Z[0] = X[0]; } - else if (n == -1) {sub_magnitudes(y,x,z,p); Z[0] = Y[0]; } - else Z[0] = ZERO; - } - return; -} - - -/* Subtract two multiple precision numbers. *z is set to *x - *y. x&y may */ -/* overlap but not x&z or y&z. One guard digit is used. The error is */ -/* less than one ulp. *x & *y are left unchanged. */ - -void __sub(const mp_no *x, const mp_no *y, mp_no *z, int p) { - - int n; - - if (X[0] == ZERO) {__cpy(y,z,p); Z[0] = -Z[0]; return; } - else if (Y[0] == ZERO) {__cpy(x,z,p); return; } - - if (X[0] != Y[0]) { - if (__acr(x,y,p) > 0) {add_magnitudes(x,y,z,p); Z[0] = X[0]; } - else {add_magnitudes(y,x,z,p); Z[0] = -Y[0]; } - } - else { - if ((n=__acr(x,y,p)) == 1) {sub_magnitudes(x,y,z,p); Z[0] = X[0]; } - else if (n == -1) {sub_magnitudes(y,x,z,p); Z[0] = -Y[0]; } - else Z[0] = ZERO; - } - return; -} - - -/* Multiply two multiple precision numbers. *z is set to *x * *y. x&y */ -/* may overlap but not x&z or y&z. In case p=1,2,3 the exact result is */ -/* truncated to p digits. In case p>3 the error is bounded by 1.001 ulp. */ -/* *x & *y are left unchanged. */ - -void __mul(const mp_no *x, const mp_no *y, mp_no *z, int p) { - - int i, i1, i2, j, k, k2; - double u; - - /* Is z=0? */ - if (X[0]*Y[0]==ZERO) - { Z[0]=ZERO; return; } - - /* Multiply, add and carry */ - k2 = (p<3) ? p+p : p+3; - Z[k2]=ZERO; - for (k=k2; k>1; ) { - if (k > p) {i1=k-p; i2=p+1; } - else {i1=1; i2=k; } - for (i=i1,j=i2-1; i Z[k]) u -= RADIX; - Z[k] -= u; - Z[--k] = u*RADIXI; - } - - /* Is there a carry beyond the most significant digit? */ - if (Z[1] == ZERO) { - for (i=1; i<=p; i++) Z[i]=Z[i+1]; - EZ = EX + EY - 1; } - else - EZ = EX + EY; - - Z[0] = X[0] * Y[0]; - return; -} - - -/* Invert a multiple precision number. Set *y = 1 / *x. */ -/* Relative error bound = 1.001*r**(1-p) for p=2, 1.063*r**(1-p) for p=3, */ -/* 2.001*r**(1-p) for p>3. */ -/* *x=0 is not permissible. *x is left unchanged. */ - -void __inv(const mp_no *x, mp_no *y, int p) { - int i; -#if 0 - int l; -#endif - double t; - mp_no z,w; - static const int np1[] = {0,0,0,0,1,2,2,2,2,3,3,3,3,3,3,3,3,3, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4}; - const mp_no mptwo = {1,{1.0,2.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}}; - - __cpy(x,&z,p); z.e=0; __mp_dbl(&z,&t,p); - t=ONE/t; __dbl_mp(t,y,p); EY -= EX; - - for (i=0; i3. *y=0 is not permissible. */ - -void __dvd(const mp_no *x, const mp_no *y, mp_no *z, int p) { - - mp_no w; - - if (X[0] == ZERO) Z[0] = ZERO; - else {__inv(y,&w,p); __mul(x,&w,z,p);} - return; -} diff --git a/libgcc-math/dbl-64/mpa.h b/libgcc-math/dbl-64/mpa.h deleted file mode 100644 index 14a446baf97..00000000000 --- a/libgcc-math/dbl-64/mpa.h +++ /dev/null @@ -1,90 +0,0 @@ - -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/************************************************************************/ -/* MODULE_NAME: mpa.h */ -/* */ -/* FUNCTIONS: */ -/* mcr */ -/* acr */ -/* cr */ -/* cpy */ -/* cpymn */ -/* mp_dbl */ -/* dbl_mp */ -/* add */ -/* sub */ -/* mul */ -/* inv */ -/* dvd */ -/* */ -/* Arithmetic functions for multiple precision numbers. */ -/* Common types and definition */ -/************************************************************************/ - -#ifndef MPA_H -#define MPA_H - -typedef struct {/* This structure holds the details of a multi-precision */ - int e; /* floating point number, x: d[0] holds its sign (-1,0 or 1) */ - double d[40]; /* e holds its exponent (...,-2,-1,0,1,2,...) and */ -} mp_no; /* d[1]...d[p] hold its mantissa digits. The value of x is, */ - /* x = d[1]*r**(e-1) + d[2]*r**(e-2) + ... + d[p]*r**(e-p). */ - /* Here r = 2**24, 0 <= d[i] < r and 1 <= p <= 32. */ - /* p is a global variable. A multi-precision number is */ - /* always normalized. Namely, d[1] > 0. An exception is */ - /* a zero which is characterized by d[0] = 0. The terms */ - /* d[p+1], d[p+2], ... of a none zero number have no */ - /* significance and so are the terms e, d[1],d[2],... */ - /* of a zero. */ - -typedef union { int i[2]; double d; } number; - -#define X x->d -#define Y y->d -#define Z z->d -#define EX x->e -#define EY y->e -#define EZ z->e - -#define ABS(x) ((x) < 0 ? -(x) : (x)) -#define MIN(a,b) (((a)<(b))?(a):(b)) - -int __acr(const mp_no *, const mp_no *, int); -int __cr(const mp_no *, const mp_no *, int); -void __cpy(const mp_no *, mp_no *, int); -void __cpymn(const mp_no *, int, mp_no *, int); -void __mp_dbl(const mp_no *, double *, int); -void __dbl_mp(double, mp_no *, int); -void __add(const mp_no *, const mp_no *, mp_no *, int); -void __sub(const mp_no *, const mp_no *, mp_no *, int); -void __mul(const mp_no *, const mp_no *, mp_no *, int); -void __inv(const mp_no *, mp_no *, int); -void __dvd(const mp_no *, const mp_no *, mp_no *, int); - -extern void __mpatan (mp_no *, mp_no *, int); -extern void __mpatan2 (mp_no *, mp_no *, mp_no *, int); -extern void __mpsqrt (mp_no *, mp_no *, int); -extern void __mpexp (mp_no *, mp_no *__y, int); -extern void __c32 (mp_no *, mp_no *, mp_no *, int); -extern int __mpranred (double, mp_no *, int); - -#endif diff --git a/libgcc-math/dbl-64/mpa2.h b/libgcc-math/dbl-64/mpa2.h deleted file mode 100644 index 54284bb8dc5..00000000000 --- a/libgcc-math/dbl-64/mpa2.h +++ /dev/null @@ -1,98 +0,0 @@ - -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/**************************************************************************/ -/* */ -/* MODULE_NAME:mpa2.h */ -/* */ -/* */ -/* variables prototype and definition according to type of processor */ -/* types definition */ -/**************************************************************************/ - -#ifndef MPA2_H -#define MPA2_H - - -#ifdef BIG_ENDI -static const number -/**/ radix = {{0x41700000, 0x00000000} }, /* 2**24 */ -/**/ radixi = {{0x3e700000, 0x00000000} }, /* 2**-24 */ -/**/ cutter = {{0x44b00000, 0x00000000} }, /* 2**76 */ -/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */ -/**/ one = {{0x3ff00000, 0x00000000} }, /* 1 */ -/**/ mone = {{0xbff00000, 0x00000000} }, /* -1 */ -/**/ two = {{0x40000000, 0x00000000} }, /* 2 */ -/**/ half = {{0x3fe00000, 0x00000000} }, /* 1/2 */ -/**/ two5 = {{0x40400000, 0x00000000} }, /* 2**5 */ -/**/ two10 = {{0x40900000, 0x00000000} }, /* 2**10 */ -/**/ two18 = {{0x41100000, 0x00000000} }, /* 2**18 */ -/**/ two19 = {{0x41200000, 0x00000000} }, /* 2**19 */ -/**/ two23 = {{0x41600000, 0x00000000} }, /* 2**23 */ -/**/ two52 = {{0x43300000, 0x00000000} }, /* 2**52 */ -/**/ two57 = {{0x43800000, 0x00000000} }, /* 2**57 */ -/**/ two71 = {{0x44600000, 0x00000000} }, /* 2**71 */ -/**/ twom1032 = {{0x00000400, 0x00000000} }; /* 2**-1032 */ - -#else -#ifdef LITTLE_ENDI -static const number -/**/ radix = {{0x00000000, 0x41700000} }, /* 2**24 */ -/**/ radixi = {{0x00000000, 0x3e700000} }, /* 2**-24 */ -/**/ cutter = {{0x00000000, 0x44b00000} }, /* 2**76 */ -/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */ -/**/ one = {{0x00000000, 0x3ff00000} }, /* 1 */ -/**/ mone = {{0x00000000, 0xbff00000} }, /* -1 */ -/**/ two = {{0x00000000, 0x40000000} }, /* 2 */ -/**/ half = {{0x00000000, 0x3fe00000} }, /* 1/2 */ -/**/ two5 = {{0x00000000, 0x40400000} }, /* 2**5 */ -/**/ two10 = {{0x00000000, 0x40900000} }, /* 2**10 */ -/**/ two18 = {{0x00000000, 0x41100000} }, /* 2**18 */ -/**/ two19 = {{0x00000000, 0x41200000} }, /* 2**19 */ -/**/ two23 = {{0x00000000, 0x41600000} }, /* 2**23 */ -/**/ two52 = {{0x00000000, 0x43300000} }, /* 2**52 */ -/**/ two57 = {{0x00000000, 0x43800000} }, /* 2**57 */ -/**/ two71 = {{0x00000000, 0x44600000} }, /* 2**71 */ -/**/ twom1032 = {{0x00000000, 0x00000400} }; /* 2**-1032 */ - -#endif -#endif - -#define RADIX radix.d -#define RADIXI radixi.d -#define CUTTER cutter.d -#define ZERO zero.d -#define ONE one.d -#define MONE mone.d -#define TWO two.d -#define HALF half.d -#define TWO5 two5.d -#define TWO10 two10.d -#define TWO18 two18.d -#define TWO19 two19.d -#define TWO23 two23.d -#define TWO52 two52.d -#define TWO57 two57.d -#define TWO71 two71.d -#define TWOM1032 twom1032.d - - -#endif diff --git a/libgcc-math/dbl-64/mpatan.c b/libgcc-math/dbl-64/mpatan.c deleted file mode 100644 index ee21c251381..00000000000 --- a/libgcc-math/dbl-64/mpatan.c +++ /dev/null @@ -1,102 +0,0 @@ - -/* - * IBM Accurate Mathematical Library - * written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/******************************************************************/ -/* */ -/* MODULE_NAME:mpatan.c */ -/* */ -/* FUNCTIONS:mpatan */ -/* */ -/* FILES NEEDED: mpa.h endian.h mpatan.h */ -/* mpa.c */ -/* */ -/* Multi-Precision Atan function subroutine, for precision p >= 4.*/ -/* The relative error of the result is bounded by 34.32*r**(1-p), */ -/* where r=2**24. */ -/******************************************************************/ - -#include "endian.h" -#include "mpa.h" -void __mpsqrt(mp_no *, mp_no *, int); - -void __mpatan(mp_no *x, mp_no *y, int p) { -#include "mpatan.h" - - int i,m,n; - double dx; - mp_no - mpone = {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}}, - mptwo = {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}}, - mptwoim1 = {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}}; - - mp_no mps,mpsm,mpt,mpt1,mpt2,mpt3; - - /* Choose m and initiate mpone, mptwo & mptwoim1 */ - if (EX>0) m=7; - else if (EX<0) m=0; - else { - __mp_dbl(x,&dx,p); dx=ABS(dx); - for (m=6; m>0; m--) - {if (dx>xm[m].d) break;} - } - mpone.e = mptwo.e = mptwoim1.e = 1; - mpone.d[0] = mpone.d[1] = mptwo.d[0] = mptwoim1.d[0] = ONE; - mptwo.d[1] = TWO; - - /* Reduce x m times */ - __mul(x,x,&mpsm,p); - if (m==0) __cpy(x,&mps,p); - else { - for (i=0; i1; i--) { - mptwoim1.d[1] -= TWO; - __dvd(&mpsm,&mptwoim1,&mpt1,p); - __mul(&mpsm,&mpt,&mpt2,p); - __sub(&mpt1,&mpt2,&mpt,p); - } - __mul(&mps,&mpt,&mpt1,p); - __sub(&mps,&mpt1,&mpt,p); - - /* Compute Atan(x) */ - mptwoim1.d[1] = twom[m].d; - __mul(&mptwoim1,&mpt,y,p); - - return; -} diff --git a/libgcc-math/dbl-64/mpatan.h b/libgcc-math/dbl-64/mpatan.h deleted file mode 100644 index d420ff34088..00000000000 --- a/libgcc-math/dbl-64/mpatan.h +++ /dev/null @@ -1,174 +0,0 @@ - -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/******************************************************************/ -/* */ -/* MODULE_NAME:mpatan.h */ -/* */ -/* common data and variables prototype and definition */ -/******************************************************************/ - -#ifndef MPATAN_H -#define MPATAN_H - -#ifdef BIG_ENDI - static const number - xm[8] = { /* x[m] */ -/**/ {{0x00000000, 0x00000000} }, /* 0.0 */ -/**/ {{0x3f8930be, 0x00000000} }, /* 0.0123 */ -/**/ {{0x3f991687, 0x00000000} }, /* 0.0245 */ -/**/ {{0x3fa923a2, 0x00000000} }, /* 0.0491 */ -/**/ {{0x3fb930be, 0x00000000} }, /* 0.0984 */ -/**/ {{0x3fc95810, 0x00000000} }, /* 0.198 */ -/**/ {{0x3fda7ef9, 0x00000000} }, /* 0.414 */ -/**/ {{0x3ff00000, 0x00000000} }, /* 1.0 */ - }; - static const number - twonm1[33] = { /* 2n-1 */ -/**/ {{0x00000000, 0x00000000} }, /* 0 */ -/**/ {{0x00000000, 0x00000000} }, /* 0 */ -/**/ {{0x00000000, 0x00000000} }, /* 0 */ -/**/ {{0x00000000, 0x00000000} }, /* 0 */ -/**/ {{0x40260000, 0x00000000} }, /* 11 */ -/**/ {{0x402e0000, 0x00000000} }, /* 15 */ -/**/ {{0x40330000, 0x00000000} }, /* 19 */ -/**/ {{0x40350000, 0x00000000} }, /* 21 */ -/**/ {{0x40390000, 0x00000000} }, /* 25 */ -/**/ {{0x403d0000, 0x00000000} }, /* 29 */ -/**/ {{0x40408000, 0x00000000} }, /* 33 */ -/**/ {{0x40428000, 0x00000000} }, /* 37 */ -/**/ {{0x40448000, 0x00000000} }, /* 41 */ -/**/ {{0x40468000, 0x00000000} }, /* 45 */ -/**/ {{0x40488000, 0x00000000} }, /* 49 */ -/**/ {{0x404a8000, 0x00000000} }, /* 53 */ -/**/ {{0x404b8000, 0x00000000} }, /* 55 */ -/**/ {{0x404d8000, 0x00000000} }, /* 59 */ -/**/ {{0x404f8000, 0x00000000} }, /* 63 */ -/**/ {{0x4050c000, 0x00000000} }, /* 67 */ -/**/ {{0x4051c000, 0x00000000} }, /* 71 */ -/**/ {{0x4052c000, 0x00000000} }, /* 75 */ -/**/ {{0x4053c000, 0x00000000} }, /* 79 */ -/**/ {{0x4054c000, 0x00000000} }, /* 83 */ -/**/ {{0x40554000, 0x00000000} }, /* 85 */ -/**/ {{0x40564000, 0x00000000} }, /* 89 */ -/**/ {{0x40574000, 0x00000000} }, /* 93 */ -/**/ {{0x40584000, 0x00000000} }, /* 97 */ -/**/ {{0x40594000, 0x00000000} }, /* 101 */ -/**/ {{0x405a4000, 0x00000000} }, /* 105 */ -/**/ {{0x405b4000, 0x00000000} }, /* 109 */ -/**/ {{0x405c4000, 0x00000000} }, /* 113 */ -/**/ {{0x405d4000, 0x00000000} }, /* 117 */ - }; - - static const number - twom[8] = { /* 2**m */ -/**/ {{0x3ff00000, 0x00000000} }, /* 1.0 */ -/**/ {{0x40000000, 0x00000000} }, /* 2.0 */ -/**/ {{0x40100000, 0x00000000} }, /* 4.0 */ -/**/ {{0x40200000, 0x00000000} }, /* 8.0 */ -/**/ {{0x40300000, 0x00000000} }, /* 16.0 */ -/**/ {{0x40400000, 0x00000000} }, /* 32.0 */ -/**/ {{0x40500000, 0x00000000} }, /* 64.0 */ -/**/ {{0x40600000, 0x00000000} }, /* 128.0 */ - }; - - static const number -/**/ one = {{0x3ff00000, 0x00000000} }, /* 1 */ -/**/ two = {{0x40000000, 0x00000000} }; /* 2 */ - -#else -#ifdef LITTLE_ENDI - - static const number - xm[8] = { /* x[m] */ -/**/ {{0x00000000, 0x00000000} }, /* 0.0 */ -/**/ {{0x00000000, 0x3f8930be} }, /* 0.0123 */ -/**/ {{0x00000000, 0x3f991687} }, /* 0.0245 */ -/**/ {{0x00000000, 0x3fa923a2} }, /* 0.0491 */ -/**/ {{0x00000000, 0x3fb930be} }, /* 0.0984 */ -/**/ {{0x00000000, 0x3fc95810} }, /* 0.198 */ -/**/ {{0x00000000, 0x3fda7ef9} }, /* 0.414 */ -/**/ {{0x00000000, 0x3ff00000} }, /* 1.0 */ - }; - static const number - twonm1[33] = { /* 2n-1 */ -/**/ {{0x00000000, 0x00000000} }, /* 0 */ -/**/ {{0x00000000, 0x00000000} }, /* 0 */ -/**/ {{0x00000000, 0x00000000} }, /* 0 */ -/**/ {{0x00000000, 0x00000000} }, /* 0 */ -/**/ {{0x00000000, 0x40260000} }, /* 11 */ -/**/ {{0x00000000, 0x402e0000} }, /* 15 */ -/**/ {{0x00000000, 0x40330000} }, /* 19 */ -/**/ {{0x00000000, 0x40350000} }, /* 21 */ -/**/ {{0x00000000, 0x40390000} }, /* 25 */ -/**/ {{0x00000000, 0x403d0000} }, /* 29 */ -/**/ {{0x00000000, 0x40408000} }, /* 33 */ -/**/ {{0x00000000, 0x40428000} }, /* 37 */ -/**/ {{0x00000000, 0x40448000} }, /* 41 */ -/**/ {{0x00000000, 0x40468000} }, /* 45 */ -/**/ {{0x00000000, 0x40488000} }, /* 49 */ -/**/ {{0x00000000, 0x404a8000} }, /* 53 */ -/**/ {{0x00000000, 0x404b8000} }, /* 55 */ -/**/ {{0x00000000, 0x404d8000} }, /* 59 */ -/**/ {{0x00000000, 0x404f8000} }, /* 63 */ -/**/ {{0x00000000, 0x4050c000} }, /* 67 */ -/**/ {{0x00000000, 0x4051c000} }, /* 71 */ -/**/ {{0x00000000, 0x4052c000} }, /* 75 */ -/**/ {{0x00000000, 0x4053c000} }, /* 79 */ -/**/ {{0x00000000, 0x4054c000} }, /* 83 */ -/**/ {{0x00000000, 0x40554000} }, /* 85 */ -/**/ {{0x00000000, 0x40564000} }, /* 89 */ -/**/ {{0x00000000, 0x40574000} }, /* 93 */ -/**/ {{0x00000000, 0x40584000} }, /* 97 */ -/**/ {{0x00000000, 0x40594000} }, /* 101 */ -/**/ {{0x00000000, 0x405a4000} }, /* 105 */ -/**/ {{0x00000000, 0x405b4000} }, /* 109 */ -/**/ {{0x00000000, 0x405c4000} }, /* 113 */ -/**/ {{0x00000000, 0x405d4000} }, /* 117 */ - }; - - static const number - twom[8] = { /* 2**m */ -/**/ {{0x00000000, 0x3ff00000} }, /* 1.0 */ -/**/ {{0x00000000, 0x40000000} }, /* 2.0 */ -/**/ {{0x00000000, 0x40100000} }, /* 4.0 */ -/**/ {{0x00000000, 0x40200000} }, /* 8.0 */ -/**/ {{0x00000000, 0x40300000} }, /* 16.0 */ -/**/ {{0x00000000, 0x40400000} }, /* 32.0 */ -/**/ {{0x00000000, 0x40500000} }, /* 64.0 */ -/**/ {{0x00000000, 0x40600000} }, /* 128.0 */ - }; - - static const number -/**/ one = {{0x00000000, 0x3ff00000} }, /* 1 */ -/**/ two = {{0x00000000, 0x40000000} }; /* 2 */ - -#endif -#endif - -#define ONE one.d -#define TWO two.d - - static const int - np[33] = { 0, 0, 0, 0, 6, 8,10,11,13,15,17,19,21,23,25,27,28, - 30,32,34,36,38,40,42,43,45,47,49,51,53,55,57,59}; - -#endif diff --git a/libgcc-math/dbl-64/mpatan2.c b/libgcc-math/dbl-64/mpatan2.c deleted file mode 100644 index 91df9205663..00000000000 --- a/libgcc-math/dbl-64/mpatan2.c +++ /dev/null @@ -1,70 +0,0 @@ - -/* - * IBM Accurate Mathematical Library - * written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/******************************************************************/ -/* MODULE_NAME: mpatan2.c */ -/* */ -/* FUNCTIONS:mpatan2 */ -/* */ -/* FILES NEEDED: mpa.h */ -/* mpa.c mpatan.c mpsqrt.c */ -/* */ -/* Multi-Precision Atan2(y,x) function subroutine, */ -/* for precision p >= 4. */ -/* y=0 is not permitted if x<=0. No error messages are given. */ -/* The relative error of the result is bounded by 44.84*r**(1-p) */ -/* if x <= 0, y != 0 and by 37.33*r**(1-p) if x>0. here r=2**24. */ -/* */ -/******************************************************************/ - - - -#include "mpa.h" - -void __mpsqrt(mp_no *, mp_no *, int); -void __mpatan(mp_no *, mp_no *, int); - -/* Multi-Precision Atan2(y,x) function subroutine, for p >= 4. */ -/* y=0 is not permitted if x<=0. No error messages are given. */ -void __mpatan2(mp_no *y, mp_no *x, mp_no *z, int p) { - - static const double Zero = 0.0, One = 1.0; - - mp_no mpone = {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}}; - mp_no mpt1,mpt2,mpt3; - - - if (X[0] <= Zero) { - mpone.e = 1; mpone.d[0] = mpone.d[1] = One; - __dvd(x,y,&mpt1,p); __mul(&mpt1,&mpt1,&mpt2,p); - if (mpt1.d[0] != Zero) mpt1.d[0] = One; - __add(&mpt2,&mpone,&mpt3,p); __mpsqrt(&mpt3,&mpt2,p); - __add(&mpt1,&mpt2,&mpt3,p); mpt3.d[0]=Y[0]; - __mpatan(&mpt3,&mpt1,p); __add(&mpt1,&mpt1,z,p); - } - else - { __dvd(y,x,&mpt1,p); - __mpatan(&mpt1,z,p); - } - - return; -} diff --git a/libgcc-math/dbl-64/mpexp.c b/libgcc-math/dbl-64/mpexp.c deleted file mode 100644 index 6398679dc36..00000000000 --- a/libgcc-math/dbl-64/mpexp.c +++ /dev/null @@ -1,106 +0,0 @@ - -/* - * IBM Accurate Mathematical Library - * written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/*************************************************************************/ -/* MODULE_NAME:mpexp.c */ -/* */ -/* FUNCTIONS: mpexp */ -/* */ -/* FILES NEEDED: mpa.h endian.h mpexp.h */ -/* mpa.c */ -/* */ -/* Multi-Precision exponential function subroutine */ -/* ( for p >= 4, 2**(-55) <= abs(x) <= 1024 ). */ -/*************************************************************************/ - -#include "endian.h" -#include "mpa.h" -#include "mpa2.h" -#include "mpexp.h" - -/* Multi-Precision exponential function subroutine (for p >= 4, */ -/* 2**(-55) <= abs(x) <= 1024). */ -void __mpexp(mp_no *x, mp_no *y, int p) { - - int i,j,k,m,m1,m2,n; - double a,b; - static const int np[33] = {0,0,0,0,3,3,4,4,5,4,4,5,5,5,6,6,6,6,6,6, - 6,6,6,6,7,7,7,7,8,8,8,8,8}; - static const int m1p[33]= {0,0,0,0,17,23,23,28,27,38,42,39,43,47,43,47,50,54, - 57,60,64,67,71,74,68,71,74,77,70,73,76,78,81}; - static const int m1np[7][18] = { - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0,36,48,60,72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0,24,32,40,48,56,64,72, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0,17,23,29,35,41,47,53,59,65, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0,23,28,33,38,42,47,52,57,62,66, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0,27, 0, 0,39,43,47,51,55,59,63}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,43,47,50,54}}; - mp_no mpone = {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}}; - mp_no mpk = {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}}; - mp_no mps,mpak,mpt1,mpt2; - - /* Choose m,n and compute a=2**(-m) */ - n = np[p]; m1 = m1p[p]; a = twomm1[p].d; - for (i=0; iEX; i--) a *= RADIX; - b = X[1]*RADIXI; m2 = 24*EX; - for (; b0; i--,n--) { if (m1np[i][p]+m2>0) break; } - } - - /* Compute s=x*2**(-m). Put result in mps */ - __dbl_mp(a,&mpt1,p); - __mul(x,&mpt1,&mps,p); - - /* Evaluate the polynomial. Put result in mpt2 */ - mpone.e=1; mpone.d[0]=ONE; mpone.d[1]=ONE; - mpk.e = 1; mpk.d[0] = ONE; mpk.d[1]=nn[n].d; - __dvd(&mps,&mpk,&mpt1,p); - __add(&mpone,&mpt1,&mpak,p); - for (k=n-1; k>1; k--) { - __mul(&mps,&mpak,&mpt1,p); - mpk.d[1]=nn[k].d; - __dvd(&mpt1,&mpk,&mpt2,p); - __add(&mpone,&mpt2,&mpak,p); - } - __mul(&mps,&mpak,&mpt1,p); - __add(&mpone,&mpt1,&mpt2,p); - - /* Raise polynomial value to the power of 2**m. Put result in y */ - for (k=0,j=0; k= 4, */ -/* 2**(-1024) < x < 2**1024) and x is outside of the interval */ -/* [1-2**(-54),1+2**(-54)]. Upon entry, x should be set to the */ -/* multi-precision value of the input and y should be set into a multi- */ -/* precision value of an approximation of log(x) with relative error */ -/* bound of at most 2**(-52). The routine improves the accuracy of y. */ -/* */ -/************************************************************************/ -#include "endian.h" -#include "mpa.h" - -void __mpexp(mp_no *, mp_no *, int); - -void __mplog(mp_no *x, mp_no *y, int p) { -#include "mplog.h" - int i,m; -#if 0 - int j,k,m1,m2,n; - double a,b; -#endif - static const int mp[33] = {0,0,0,0,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4}; - mp_no mpone = {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}}; - mp_no mpt1,mpt2; - - /* Choose m and initiate mpone */ - m = mp[p]; mpone.e = 1; mpone.d[0]=mpone.d[1]=ONE; - - /* Perform m newton iterations to solve for y: exp(y)-x=0. */ - /* The iterations formula is: y(n+1)=y(n)+(x*exp(-y(n))-1). */ - __cpy(y,&mpt1,p); - for (i=0; i= 4. */ -/* The relative error is bounded by 3.501*r**(1-p), where r=2**24. */ -/* */ -/****************************************************************************/ -#include "endian.h" -#include "mpa.h" - -/****************************************************************************/ -/* Multi-Precision square root function subroutine for precision p >= 4. */ -/* The relative error is bounded by 3.501*r**(1-p), where r=2**24. */ -/* Routine receives two pointers to Multi Precision numbers: */ -/* x (left argument) and y (next argument). Routine also receives precision */ -/* p as integer. Routine computes sqrt(*x) and stores result in *y */ -/****************************************************************************/ - -double fastiroot(double); - -void __mpsqrt(mp_no *x, mp_no *y, int p) { -#include "mpsqrt.h" - - int i,m,ex,ey; - double dx,dy; - mp_no - mphalf = {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}}, - mp3halfs = {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}}; - mp_no mpxn,mpz,mpu,mpt1,mpt2; - - /* Prepare multi-precision 1/2 and 3/2 */ - mphalf.e =0; mphalf.d[0] =ONE; mphalf.d[1] =HALFRAD; - mp3halfs.e=1; mp3halfs.d[0]=ONE; mp3halfs.d[1]=ONE; mp3halfs.d[2]=HALFRAD; - - ex=EX; ey=EX/2; __cpy(x,&mpxn,p); mpxn.e -= (ey+ey); - __mp_dbl(&mpxn,&dx,p); dy=fastiroot(dx); __dbl_mp(dy,&mpu,p); - __mul(&mpxn,&mphalf,&mpz,p); - - m=mp[p]; - for (i=0; i>1; - z = ((c3*z + c2)*z + c1)*z + c0; /* 2**-7 */ - z = z*(1.5 - 0.5*y*z*z); /* 2**-14 */ - p.d = z*(1.5 - 0.5*y*z*z); /* 2**-28 */ - p.i[HIGH_HALF] -= n; - t = x*p.d; - return p.d*(1.5 - 0.5*p.d*t); -} diff --git a/libgcc-math/dbl-64/mpsqrt.h b/libgcc-math/dbl-64/mpsqrt.h deleted file mode 100644 index 729d57af2ce..00000000000 --- a/libgcc-math/dbl-64/mpsqrt.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/******************************************************************/ -/* */ -/* MODULE_NAME:mpatan.h */ -/* */ -/* common data and variables prototype and definition */ -/******************************************************************/ - -#ifndef MPSQRT_H -#define MPSQRT_H - -#ifdef BIG_ENDI - static const number -/**/ one = {{0x3ff00000, 0x00000000} }, /* 1 */ -/**/ halfrad = {{0x41600000, 0x00000000} }; /* 2**23 */ - -#else -#ifdef LITTLE_ENDI - static const number -/**/ one = {{0x00000000, 0x3ff00000} }, /* 1 */ -/**/ halfrad = {{0x00000000, 0x41600000} }; /* 2**23 */ - -#endif -#endif - -#define ONE one.d -#define HALFRAD halfrad.d - - static const int mp[33] = {0,0,0,0,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4}; - -#endif diff --git a/libgcc-math/dbl-64/mptan.c b/libgcc-math/dbl-64/mptan.c deleted file mode 100644 index ed4c20b44e9..00000000000 --- a/libgcc-math/dbl-64/mptan.c +++ /dev/null @@ -1,60 +0,0 @@ - -/* - * IBM Accurate Mathematical Library - * written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/**********************************************************************/ -/* MODULE_NAME:mptan.c */ -/* */ -/* FUNCTION: mptan */ -/* */ -/* FILES NEEDED: endian.h mpa.h */ -/* mpa.c sincos32.c branred.c */ -/* */ -/* Multi-Precision tan() function subroutine, for p=32. It is based */ -/* on the routines mpranred() and c32(). mpranred() performs range */ -/* reduction of a double number x into a multiple precision number */ -/* y, such that y=x-n*pi/2, abs(y)d[0] *= Mone; - } /* tan is negative in this area */ - else __dvd(&mps,&mpc,mpy,p); - - return; -} diff --git a/libgcc-math/dbl-64/mydefs.h b/libgcc-math/dbl-64/mydefs.h deleted file mode 100644 index a47f2b506ab..00000000000 --- a/libgcc-math/dbl-64/mydefs.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/******************************************************************/ -/* */ -/* MODULE_NAME:mydefs.h */ -/* */ -/* common data and definition */ -/******************************************************************/ - -#ifndef MY_H -#define MY_H - -typedef int int4; -typedef union {int4 i[2]; double x;} mynumber; - -#define ABS(x) (((x)>0)?(x):-(x)) -#define max(x,y) (((y)>(x))?(y):(x)) -#define min(x,y) (((y)<(x))?(y):(x)) - -#endif diff --git a/libgcc-math/dbl-64/powtwo.tbl b/libgcc-math/dbl-64/powtwo.tbl deleted file mode 100644 index 53c49c10f7c..00000000000 --- a/libgcc-math/dbl-64/powtwo.tbl +++ /dev/null @@ -1,32 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/****************************************************************/ -/* TABLES FOR THE upow() FUNCTION */ -/****************************************************************/ - - - -static const double powtwo[] = { 1.0, 2.0, 4.0, - 8.0, 16.0, 32.0, 64.0, 128.0, - 256.0, 512.0, 1024.0, 2048.0, 4096.0, - 8192.0, 16384.0, 32768.0, 65536.0, 131072.0, - 262144.0, 524288.0, 1048576.0, 2097152.0, 4194304.0, - 8388608.0, 16777216.0, 33554432.0, 67108864.0, 134217728.0 }; diff --git a/libgcc-math/dbl-64/root.tbl b/libgcc-math/dbl-64/root.tbl deleted file mode 100644 index 066e588ce7e..00000000000 --- a/libgcc-math/dbl-64/root.tbl +++ /dev/null @@ -1,58 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/****************************************************************/ -/* TABLES FOR THE usqrt() FUNCTION */ -/****************************************************************/ - - -static const double inroot[128] = { - 1.40872145012100, 1.39792649065766, 1.38737595123859, 1.37706074531819, - 1.36697225234682, 1.35710228748795, 1.34744307370643, 1.33798721601135, - 1.32872767765984, 1.31965775814772, 1.31077107283046, 1.30206153403386, - 1.29352333352711, 1.28515092624400, 1.27693901514820, 1.26888253714903, - 1.26097664998256, 1.25321671998073, 1.24559831065844, 1.23811717205462, - 1.23076923076923, 1.22355058064300, 1.21645747403153, 1.20948631362953, - 1.20263364480453, 1.19589614840310, 1.18927063399547, 1.18275403352732, - 1.17634339535009, 1.17003587860341, 1.16382874792529, 1.15771936846787, - 1.15170520119791, 1.14578379846309, 1.13995279980655, 1.13420992801334, - 1.12855298537376, 1.12297985014975, 1.11748847323133, 1.11207687497107, - 1.10674314218572, 1.10148542531442, 1.09630193572405, 1.09119094315276, - 1.08615077328341, 1.08117980543918, 1.07627647039410, 1.07143924829188, - 1.06666666666667, 1.06195729855996, 1.05730976072814, 1.05272271193563, - 1.04819485132867, 1.04372491688551, 1.03931168393861, 1.03495396376504, - 1.03065060224133, 1.02640047855933, 1.02220250399990, 1.01805562076124, - 1.01395880083916, 1.00991104495649, 1.00591138153909, 1.00195886573624, - 0.99611649018350, 0.98848330114434, 0.98102294317595, 0.97372899112030, - 0.96659534932828, 0.95961623024651, 0.95278613468066, 0.94609983358253, - 0.93955235122353, 0.93313894963169, 0.92685511418159, 0.92069654023750, - 0.91465912076005, 0.90873893479530, 0.90293223677296, 0.89723544654727, - 0.89164514012056, 0.88615804099474, 0.88077101210109, 0.87548104826333, - 0.87028526915267, 0.86518091269740, 0.86016532891275, 0.85523597411976, - 0.85039040552437, 0.84562627613070, 0.84094132996422, 0.83633339758291, - 0.83180039185606, 0.82734030399203, 0.82295119979782, 0.81863121615464, - 0.81437855769486, 0.81019149366693, 0.80606835497581, 0.80200753138734, - 0.79800746888611, 0.79406666717674, 0.79018367731967, 0.78635709949278, - 0.78258558087123, 0.77886781361798, 0.77520253297841, 0.77158851547266, - 0.76802457717971, 0.76450957210799, 0.76104239064719, 0.75762195809661, - 0.75424723326565, 0.75091720714229, 0.74763090162560, 0.74438736831878, - 0.74118568737933, 0.73802496642311, 0.73490433947940, 0.73182296599416, - 0.72878002987884, 0.72577473860242, 0.72280632232420, 0.71987403306536, - 0.71697714391715, 0.71411494828392, 0.71128675915902, 0.70849190843208 }; diff --git a/libgcc-math/dbl-64/s_atan.c b/libgcc-math/dbl-64/s_atan.c deleted file mode 100644 index 439bccb29e4..00000000000 --- a/libgcc-math/dbl-64/s_atan.c +++ /dev/null @@ -1,229 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/************************************************************************/ -/* MODULE_NAME: atnat.c */ -/* */ -/* FUNCTIONS: uatan */ -/* atanMp */ -/* signArctan */ -/* */ -/* */ -/* FILES NEEDED: dla.h endian.h mpa.h mydefs.h atnat.h */ -/* mpatan.c mpatan2.c mpsqrt.c */ -/* uatan.tbl */ -/* */ -/* An ultimate atan() routine. Given an IEEE double machine number x */ -/* it computes the correctly rounded (to nearest) value of atan(x). */ -/* */ -/* Assumption: Machine arithmetic operations are performed in */ -/* round to nearest mode of IEEE 754 standard. */ -/* */ -/************************************************************************/ - -#include "dla.h" -#include "mpa.h" -#include "MathLib.h" -#include "uatan.tbl" -#include "atnat.h" - -void __mpatan(mp_no *,mp_no *,int); /* see definition in mpatan.c */ -static double atanMp(double,const int[]); -double __signArctan(double,double); -/* An ultimate atan() routine. Given an IEEE double machine number x, */ -/* routine computes the correctly rounded (to nearest) value of atan(x). */ -double atan(double x) { - - - double cor,s1,ss1,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,u,u2,u3, - v,vv,w,ww,y,yy,z,zz; -#if 0 - double y1,y2; -#endif - int i,ux,dx; -#if 0 - int p; -#endif - static const int pr[M]={6,8,10,32}; - number num; -#if 0 - mp_no mpt1,mpx,mpy,mpy1,mpy2,mperr; -#endif - - num.d = x; ux = num.i[HIGH_HALF]; dx = num.i[LOW_HALF]; - - /* x=NaN */ - if (((ux&0x7ff00000)==0x7ff00000) && (((ux&0x000fffff)|dx)!=0x00000000)) - return x+x; - - /* Regular values of x, including denormals +-0 and +-INF */ - u = (x= 1/2 */ - if ((y=t1+(yy-u3)) == t1+(yy+u3)) return __signArctan(x,y); - - DIV2(ONE,ZERO,u,ZERO,w,ww,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) - t1=w-hij[i][0].d; - EADD(t1,ww,z,zz) - s1=z*(hij[i][11].d+z*(hij[i][12].d+z*(hij[i][13].d+ - z*(hij[i][14].d+z* hij[i][15].d)))); - ADD2(hij[i][9].d,hij[i][10].d,s1,ZERO,s2,ss2,t1,t2) - MUL2(z,zz,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][7].d,hij[i][8].d,s1,ss1,s2,ss2,t1,t2) - MUL2(z,zz,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][5].d,hij[i][6].d,s1,ss1,s2,ss2,t1,t2) - MUL2(z,zz,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][3].d,hij[i][4].d,s1,ss1,s2,ss2,t1,t2) - MUL2(z,zz,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(hij[i][1].d,hij[i][2].d,s1,ss1,s2,ss2,t1,t2) - SUB2(HPI,HPI1,s2,ss2,s1,ss1,t1,t2) - if ((y=s1+(ss1-U7)) == s1+(ss1+U7)) return __signArctan(x,y); - - return atanMp(x,pr); - } - else { - if (u= E */ - if (x>0) return HPI; - else return MHPI; } - } - } - -} - - - /* Fix the sign of y and return */ -double __signArctan(double x,double y){ - - if (x>20)&0x7ff)-0x3ff; - if(j0<20) { - if(j0<0) { /* raise inexact if x != 0 */ - if(huge+x>0.0) {/* return 0*sign(x) if |x|<1 */ - if(i0>=0) {i0=i1=0;} - else if(((i0&0x7fffffff)|i1)!=0) - { i0=0xbff00000;i1=0;} - } - } else { - i = (0x000fffff)>>j0; - if(((i0&i)|i1)==0) return x; /* x is integral */ - if(huge+x>0.0) { /* raise inexact flag */ - if(i0<0) i0 += (0x00100000)>>j0; - i0 &= (~i); i1=0; - } - } - } else if (j0>51) { - if(j0==0x400) return x+x; /* inf or NaN */ - else return x; /* x is integral */ - } else { - i = ((uint32_t)(0xffffffff))>>(j0-20); - if((i1&i)==0) return x; /* x is integral */ - if(huge+x>0.0) { /* raise inexact flag */ - if(i0<0) { - if(j0==20) i0+=1; - else { - j = i1+(1<<(52-j0)); - if(j. - * Changed to return -1 for -Inf by Ulrich Drepper . - * Public domain. - */ - -#if defined(LIBM_SCCS) && !defined(lint) -static char rcsid[] = "$NetBSD: s_isinf.c,v 1.3 1995/05/11 23:20:14 jtc Exp $"; -#endif - -/* - * isinf(x) returns 1 is x is inf, -1 if x is -inf, else 0; - * no branching! - */ - -#include "math_private.h" - -int -__isinf (double x) -{ - int32_t hx,lx; - EXTRACT_WORDS(hx,lx,x); - lx |= (hx & 0x7fffffff) ^ 0x7ff00000; - lx |= -lx; - return ~(lx >> 31) & (hx >> 30); -} -hidden_def (__isinf) -weak_alias (__isinf, isinf) -#ifdef NO_LONG_DOUBLE -strong_alias (__isinf, __isinfl) -weak_alias (__isinf, isinfl) -#endif diff --git a/libgcc-math/dbl-64/s_scalbn.c b/libgcc-math/dbl-64/s_scalbn.c deleted file mode 100644 index 6ad68f9b9d6..00000000000 --- a/libgcc-math/dbl-64/s_scalbn.c +++ /dev/null @@ -1,69 +0,0 @@ -/* @(#)s_scalbn.c 5.1 93/09/24 */ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -#if defined(LIBM_SCCS) && !defined(lint) -static char rcsid[] = "$NetBSD: s_scalbn.c,v 1.8 1995/05/10 20:48:08 jtc Exp $"; -#endif - -/* - * scalbn (double x, int n) - * scalbn(x,n) returns x* 2**n computed by exponent - * manipulation rather than by actually performing an - * exponentiation or a multiplication. - */ - -#include "math_private.h" - -#ifdef __STDC__ -static const double -#else -static double -#endif -two54 = 1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */ -twom54 = 5.55111512312578270212e-17, /* 0x3C900000, 0x00000000 */ -huge = 1.0e+300, -tiny = 1.0e-300; - -#ifdef __STDC__ - double __scalbn (double x, int n) -#else - double __scalbn (x,n) - double x; int n; -#endif -{ - int32_t k,hx,lx; - EXTRACT_WORDS(hx,lx,x); - k = (hx&0x7ff00000)>>20; /* extract exponent */ - if (k==0) { /* 0 or subnormal x */ - if ((lx|(hx&0x7fffffff))==0) return x; /* +-0 */ - x *= two54; - GET_HIGH_WORD(hx,x); - k = ((hx&0x7ff00000)>>20) - 54; - } - if (k==0x7ff) return x+x; /* NaN or Inf */ - k = k+n; - if (n> 50000 || k > 0x7fe) - return huge*__builtin_copysign(huge,x); /* overflow */ - if (n< -50000) return tiny*__builtin_copysign(tiny,x); /*underflow*/ - if (k > 0) /* normal result */ - {SET_HIGH_WORD(x,(hx&0x800fffff)|(k<<20)); return x;} - if (k <= -54) - return tiny*__builtin_copysign(tiny,x); /*underflow*/ - k += 54; /* subnormal result */ - SET_HIGH_WORD(x,(hx&0x800fffff)|(k<<20)); - return x*twom54; -} -weak_alias (__scalbn, scalbn) -#ifdef NO_LONG_DOUBLE -strong_alias (__scalbn, __scalbnl) -weak_alias (__scalbn, scalbnl) -#endif diff --git a/libgcc-math/dbl-64/s_sin.c b/libgcc-math/dbl-64/s_sin.c deleted file mode 100644 index 86e1a6d1216..00000000000 --- a/libgcc-math/dbl-64/s_sin.c +++ /dev/null @@ -1,1129 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/****************************************************************************/ -/* */ -/* MODULE_NAME:usncs.c */ -/* */ -/* FUNCTIONS: usin */ -/* ucos */ -/* slow */ -/* slow1 */ -/* slow2 */ -/* sloww */ -/* sloww1 */ -/* sloww2 */ -/* bsloww */ -/* bsloww1 */ -/* bsloww2 */ -/* cslow2 */ -/* csloww */ -/* csloww1 */ -/* csloww2 */ -/* FILES NEEDED: dla.h endian.h mpa.h mydefs.h usncs.h */ -/* branred.c sincos32.c dosincos.c mpa.c */ -/* sincos.tbl */ -/* */ -/* An ultimate sin and routine. Given an IEEE double machine number x */ -/* it computes the correctly rounded (to nearest) value of sin(x) or cos(x) */ -/* Assumption: Machine arithmetic operations are performed in */ -/* round to nearest mode of IEEE 754 standard. */ -/* */ -/****************************************************************************/ - - -#include "endian.h" -#include "mydefs.h" -#include "usncs.h" -#include "MathLib.h" -#include "sincos.tbl" -#include "math_private.h" - -static const double - sn3 = -1.66666666666664880952546298448555E-01, - sn5 = 8.33333214285722277379541354343671E-03, - cs2 = 4.99999999999999999999950396842453E-01, - cs4 = -4.16666666666664434524222570944589E-02, - cs6 = 1.38888874007937613028114285595617E-03; - -void __dubsin(double x, double dx, double w[]); -void __docos(double x, double dx, double w[]); -double __mpsin(double x, double dx); -double __mpcos(double x, double dx); -double __mpsin1(double x); -double __mpcos1(double x); -static double slow(double x); -static double slow1(double x); -static double slow2(double x); -static double sloww(double x, double dx, double orig); -static double sloww1(double x, double dx, double orig); -static double sloww2(double x, double dx, double orig, int n); -static double bsloww(double x, double dx, double orig, int n); -static double bsloww1(double x, double dx, double orig, int n); -static double bsloww2(double x, double dx, double orig, int n); -int __branred(double x, double *a, double *aa); -static double cslow2(double x); -static double csloww(double x, double dx, double orig); -static double csloww1(double x, double dx, double orig); -static double csloww2(double x, double dx, double orig, int n); -/*******************************************************************/ -/* An ultimate sin routine. Given an IEEE double machine number x */ -/* it computes the correctly rounded (to nearest) value of sin(x) */ -/*******************************************************************/ -double __sin(double x){ - double xx,res,t,cor,y,s,c,sn,ssn,cs,ccs,xn,a,da,db,eps,xn1,xn2; -#if 0 - double w[2]; -#endif - mynumber u,v; - int4 k,m,n; -#if 0 - int4 nn; -#endif - - u.x = x; - m = u.i[HIGH_HALF]; - k = 0x7fffffff&m; /* no sign */ - if (k < 0x3e500000) /* if x->0 =>sin(x)=x */ - return x; - /*---------------------------- 2^-26 < |x|< 0.25 ----------------------*/ - else if (k < 0x3fd00000){ - xx = x*x; - /*Taylor series */ - t = ((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + s1.x)*(xx*x); - res = x+t; - cor = (x-res)+t; - return (res == res + 1.07*cor)? res : slow(x); - } /* else if (k < 0x3fd00000) */ -/*---------------------------- 0.25<|x|< 0.855469---------------------- */ - else if (k < 0x3feb6000) { - u.x=(m>0)?big.x+x:big.x-x; - y=(m>0)?x-(u.x-big.x):x+(u.x-big.x); - xx=y*y; - s = y + y*xx*(sn3 +xx*sn5); - c = xx*(cs2 +xx*(cs4 + xx*cs6)); - k=u.i[LOW_HALF]<<2; - sn=(m>0)?sincos.x[k]:-sincos.x[k]; - ssn=(m>0)?sincos.x[k+1]:-sincos.x[k+1]; - cs=sincos.x[k+2]; - ccs=sincos.x[k+3]; - cor=(ssn+s*ccs-sn*c)+cs*s; - res=sn+cor; - cor=(sn-res)+cor; - return (res==res+1.025*cor)? res : slow1(x); - } /* else if (k < 0x3feb6000) */ - -/*----------------------- 0.855469 <|x|<2.426265 ----------------------*/ - else if (k < 0x400368fd ) { - - y = (m>0)? hp0.x-x:hp0.x+x; - if (y>=0) { - u.x = big.x+y; - y = (y-(u.x-big.x))+hp1.x; - } - else { - u.x = big.x-y; - y = (-hp1.x) - (y+(u.x-big.x)); - } - xx=y*y; - s = y + y*xx*(sn3 +xx*sn5); - c = xx*(cs2 +xx*(cs4 + xx*cs6)); - k=u.i[LOW_HALF]<<2; - sn=sincos.x[k]; - ssn=sincos.x[k+1]; - cs=sincos.x[k+2]; - ccs=sincos.x[k+3]; - cor=(ccs-s*ssn-cs*c)-sn*s; - res=cs+cor; - cor=(cs-res)+cor; - return (res==res+1.020*cor)? ((m>0)?res:-res) : slow2(x); - } /* else if (k < 0x400368fd) */ - -/*-------------------------- 2.426265<|x|< 105414350 ----------------------*/ - else if (k < 0x419921FB ) { - t = (x*hpinv.x + toint.x); - xn = t - toint.x; - v.x = t; - y = (x - xn*mp1.x) - xn*mp2.x; - n =v.i[LOW_HALF]&3; - da = xn*mp3.x; - a=y-da; - da = (y-a)-da; - eps = ABS(x)*1.2e-30; - - switch (n) { /* quarter of unit circle */ - case 0: - case 2: - xx = a*a; - if (n) {a=-a;da=-da;} - if (xx < 0.01588) { - /*Taylor series */ - t = (((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + s1.x)*a - 0.5*da)*xx+da; - res = a+t; - cor = (a-res)+t; - cor = (cor>0)? 1.02*cor+eps : 1.02*cor -eps; - return (res == res + cor)? res : sloww(a,da,x); - } - else { - if (a>0) - {m=1;t=a;db=da;} - else - {m=0;t=-a;db=-da;} - u.x=big.x+t; - y=t-(u.x-big.x); - xx=y*y; - s = y + (db+y*xx*(sn3 +xx*sn5)); - c = y*db+xx*(cs2 +xx*(cs4 + xx*cs6)); - k=u.i[LOW_HALF]<<2; - sn=sincos.x[k]; - ssn=sincos.x[k+1]; - cs=sincos.x[k+2]; - ccs=sincos.x[k+3]; - cor=(ssn+s*ccs-sn*c)+cs*s; - res=sn+cor; - cor=(sn-res)+cor; - cor = (cor>0)? 1.035*cor+eps : 1.035*cor-eps; - return (res==res+cor)? ((m)?res:-res) : sloww1(a,da,x); - } - break; - - case 1: - case 3: - if (a<0) - {a=-a;da=-da;} - u.x=big.x+a; - y=a-(u.x-big.x)+da; - xx=y*y; - k=u.i[LOW_HALF]<<2; - sn=sincos.x[k]; - ssn=sincos.x[k+1]; - cs=sincos.x[k+2]; - ccs=sincos.x[k+3]; - s = y + y*xx*(sn3 +xx*sn5); - c = xx*(cs2 +xx*(cs4 + xx*cs6)); - cor=(ccs-s*ssn-cs*c)-sn*s; - res=cs+cor; - cor=(cs-res)+cor; - cor = (cor>0)? 1.025*cor+eps : 1.025*cor-eps; - return (res==res+cor)? ((n&2)?-res:res) : sloww2(a,da,x,n); - - break; - - } - - } /* else if (k < 0x419921FB ) */ - -/*---------------------105414350 <|x|< 281474976710656 --------------------*/ - else if (k < 0x42F00000 ) { - t = (x*hpinv.x + toint.x); - xn = t - toint.x; - v.x = t; - xn1 = (xn+8.0e22)-8.0e22; - xn2 = xn - xn1; - y = ((((x - xn1*mp1.x) - xn1*mp2.x)-xn2*mp1.x)-xn2*mp2.x); - n =v.i[LOW_HALF]&3; - da = xn1*pp3.x; - t=y-da; - da = (y-t)-da; - da = (da - xn2*pp3.x) -xn*pp4.x; - a = t+da; - da = (t-a)+da; - eps = 1.0e-24; - - switch (n) { - case 0: - case 2: - xx = a*a; - if (n) {a=-a;da=-da;} - if (xx < 0.01588) { - /* Taylor series */ - t = (((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + s1.x)*a - 0.5*da)*xx+da; - res = a+t; - cor = (a-res)+t; - cor = (cor>0)? 1.02*cor+eps : 1.02*cor -eps; - return (res == res + cor)? res : bsloww(a,da,x,n); - } - else { - if (a>0) {m=1;t=a;db=da;} - else {m=0;t=-a;db=-da;} - u.x=big.x+t; - y=t-(u.x-big.x); - xx=y*y; - s = y + (db+y*xx*(sn3 +xx*sn5)); - c = y*db+xx*(cs2 +xx*(cs4 + xx*cs6)); - k=u.i[LOW_HALF]<<2; - sn=sincos.x[k]; - ssn=sincos.x[k+1]; - cs=sincos.x[k+2]; - ccs=sincos.x[k+3]; - cor=(ssn+s*ccs-sn*c)+cs*s; - res=sn+cor; - cor=(sn-res)+cor; - cor = (cor>0)? 1.035*cor+eps : 1.035*cor-eps; - return (res==res+cor)? ((m)?res:-res) : bsloww1(a,da,x,n); - } - break; - - case 1: - case 3: - if (a<0) - {a=-a;da=-da;} - u.x=big.x+a; - y=a-(u.x-big.x)+da; - xx=y*y; - k=u.i[LOW_HALF]<<2; - sn=sincos.x[k]; - ssn=sincos.x[k+1]; - cs=sincos.x[k+2]; - ccs=sincos.x[k+3]; - s = y + y*xx*(sn3 +xx*sn5); - c = xx*(cs2 +xx*(cs4 + xx*cs6)); - cor=(ccs-s*ssn-cs*c)-sn*s; - res=cs+cor; - cor=(cs-res)+cor; - cor = (cor>0)? 1.025*cor+eps : 1.025*cor-eps; - return (res==res+cor)? ((n&2)?-res:res) : bsloww2(a,da,x,n); - - break; - - } - - } /* else if (k < 0x42F00000 ) */ - -/* -----------------281474976710656 <|x| <2^1024----------------------------*/ - else if (k < 0x7ff00000) { - - n = __branred(x,&a,&da); - switch (n) { - case 0: - if (a*a < 0.01588) return bsloww(a,da,x,n); - else return bsloww1(a,da,x,n); - break; - case 2: - if (a*a < 0.01588) return bsloww(-a,-da,x,n); - else return bsloww1(-a,-da,x,n); - break; - - case 1: - case 3: - return bsloww2(a,da,x,n); - break; - } - - } /* else if (k < 0x7ff00000 ) */ - -/*--------------------- |x| > 2^1024 ----------------------------------*/ - else return x / x; - return 0; /* unreachable */ -} - - -/*******************************************************************/ -/* An ultimate cos routine. Given an IEEE double machine number x */ -/* it computes the correctly rounded (to nearest) value of cos(x) */ -/*******************************************************************/ - -double __cos(double x) -{ - double y,xx,res,t,cor,s,c,sn,ssn,cs,ccs,xn,a,da,db,eps,xn1,xn2; - mynumber u,v; - int4 k,m,n; - - u.x = x; - m = u.i[HIGH_HALF]; - k = 0x7fffffff&m; - - if (k < 0x3e400000 ) return 1.0; /* |x|<2^-27 => cos(x)=1 */ - - else if (k < 0x3feb6000 ) {/* 2^-27 < |x| < 0.855469 */ - y=ABS(x); - u.x = big.x+y; - y = y-(u.x-big.x); - xx=y*y; - s = y + y*xx*(sn3 +xx*sn5); - c = xx*(cs2 +xx*(cs4 + xx*cs6)); - k=u.i[LOW_HALF]<<2; - sn=sincos.x[k]; - ssn=sincos.x[k+1]; - cs=sincos.x[k+2]; - ccs=sincos.x[k+3]; - cor=(ccs-s*ssn-cs*c)-sn*s; - res=cs+cor; - cor=(cs-res)+cor; - return (res==res+1.020*cor)? res : cslow2(x); - -} /* else if (k < 0x3feb6000) */ - - else if (k < 0x400368fd ) {/* 0.855469 <|x|<2.426265 */; - y=hp0.x-ABS(x); - a=y+hp1.x; - da=(y-a)+hp1.x; - xx=a*a; - if (xx < 0.01588) { - t = (((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + s1.x)*a - 0.5*da)*xx+da; - res = a+t; - cor = (a-res)+t; - cor = (cor>0)? 1.02*cor+1.0e-31 : 1.02*cor -1.0e-31; - return (res == res + cor)? res : csloww(a,da,x); - } - else { - if (a>0) {m=1;t=a;db=da;} - else {m=0;t=-a;db=-da;} - u.x=big.x+t; - y=t-(u.x-big.x); - xx=y*y; - s = y + (db+y*xx*(sn3 +xx*sn5)); - c = y*db+xx*(cs2 +xx*(cs4 + xx*cs6)); - k=u.i[LOW_HALF]<<2; - sn=sincos.x[k]; - ssn=sincos.x[k+1]; - cs=sincos.x[k+2]; - ccs=sincos.x[k+3]; - cor=(ssn+s*ccs-sn*c)+cs*s; - res=sn+cor; - cor=(sn-res)+cor; - cor = (cor>0)? 1.035*cor+1.0e-31 : 1.035*cor-1.0e-31; - return (res==res+cor)? ((m)?res:-res) : csloww1(a,da,x); -} - -} /* else if (k < 0x400368fd) */ - - - else if (k < 0x419921FB ) {/* 2.426265<|x|< 105414350 */ - t = (x*hpinv.x + toint.x); - xn = t - toint.x; - v.x = t; - y = (x - xn*mp1.x) - xn*mp2.x; - n =v.i[LOW_HALF]&3; - da = xn*mp3.x; - a=y-da; - da = (y-a)-da; - eps = ABS(x)*1.2e-30; - - switch (n) { - case 1: - case 3: - xx = a*a; - if (n == 1) {a=-a;da=-da;} - if (xx < 0.01588) { - t = (((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + s1.x)*a - 0.5*da)*xx+da; - res = a+t; - cor = (a-res)+t; - cor = (cor>0)? 1.02*cor+eps : 1.02*cor -eps; - return (res == res + cor)? res : csloww(a,da,x); - } - else { - if (a>0) {m=1;t=a;db=da;} - else {m=0;t=-a;db=-da;} - u.x=big.x+t; - y=t-(u.x-big.x); - xx=y*y; - s = y + (db+y*xx*(sn3 +xx*sn5)); - c = y*db+xx*(cs2 +xx*(cs4 + xx*cs6)); - k=u.i[LOW_HALF]<<2; - sn=sincos.x[k]; - ssn=sincos.x[k+1]; - cs=sincos.x[k+2]; - ccs=sincos.x[k+3]; - cor=(ssn+s*ccs-sn*c)+cs*s; - res=sn+cor; - cor=(sn-res)+cor; - cor = (cor>0)? 1.035*cor+eps : 1.035*cor-eps; - return (res==res+cor)? ((m)?res:-res) : csloww1(a,da,x); - } - break; - - case 0: - case 2: - if (a<0) {a=-a;da=-da;} - u.x=big.x+a; - y=a-(u.x-big.x)+da; - xx=y*y; - k=u.i[LOW_HALF]<<2; - sn=sincos.x[k]; - ssn=sincos.x[k+1]; - cs=sincos.x[k+2]; - ccs=sincos.x[k+3]; - s = y + y*xx*(sn3 +xx*sn5); - c = xx*(cs2 +xx*(cs4 + xx*cs6)); - cor=(ccs-s*ssn-cs*c)-sn*s; - res=cs+cor; - cor=(cs-res)+cor; - cor = (cor>0)? 1.025*cor+eps : 1.025*cor-eps; - return (res==res+cor)? ((n)?-res:res) : csloww2(a,da,x,n); - - break; - - } - - } /* else if (k < 0x419921FB ) */ - - - else if (k < 0x42F00000 ) { - t = (x*hpinv.x + toint.x); - xn = t - toint.x; - v.x = t; - xn1 = (xn+8.0e22)-8.0e22; - xn2 = xn - xn1; - y = ((((x - xn1*mp1.x) - xn1*mp2.x)-xn2*mp1.x)-xn2*mp2.x); - n =v.i[LOW_HALF]&3; - da = xn1*pp3.x; - t=y-da; - da = (y-t)-da; - da = (da - xn2*pp3.x) -xn*pp4.x; - a = t+da; - da = (t-a)+da; - eps = 1.0e-24; - - switch (n) { - case 1: - case 3: - xx = a*a; - if (n==1) {a=-a;da=-da;} - if (xx < 0.01588) { - t = (((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + s1.x)*a - 0.5*da)*xx+da; - res = a+t; - cor = (a-res)+t; - cor = (cor>0)? 1.02*cor+eps : 1.02*cor -eps; - return (res == res + cor)? res : bsloww(a,da,x,n); - } - else { - if (a>0) {m=1;t=a;db=da;} - else {m=0;t=-a;db=-da;} - u.x=big.x+t; - y=t-(u.x-big.x); - xx=y*y; - s = y + (db+y*xx*(sn3 +xx*sn5)); - c = y*db+xx*(cs2 +xx*(cs4 + xx*cs6)); - k=u.i[LOW_HALF]<<2; - sn=sincos.x[k]; - ssn=sincos.x[k+1]; - cs=sincos.x[k+2]; - ccs=sincos.x[k+3]; - cor=(ssn+s*ccs-sn*c)+cs*s; - res=sn+cor; - cor=(sn-res)+cor; - cor = (cor>0)? 1.035*cor+eps : 1.035*cor-eps; - return (res==res+cor)? ((m)?res:-res) : bsloww1(a,da,x,n); - } - break; - - case 0: - case 2: - if (a<0) {a=-a;da=-da;} - u.x=big.x+a; - y=a-(u.x-big.x)+da; - xx=y*y; - k=u.i[LOW_HALF]<<2; - sn=sincos.x[k]; - ssn=sincos.x[k+1]; - cs=sincos.x[k+2]; - ccs=sincos.x[k+3]; - s = y + y*xx*(sn3 +xx*sn5); - c = xx*(cs2 +xx*(cs4 + xx*cs6)); - cor=(ccs-s*ssn-cs*c)-sn*s; - res=cs+cor; - cor=(cs-res)+cor; - cor = (cor>0)? 1.025*cor+eps : 1.025*cor-eps; - return (res==res+cor)? ((n)?-res:res) : bsloww2(a,da,x,n); - break; - - } - - } /* else if (k < 0x42F00000 ) */ - - else if (k < 0x7ff00000) {/* 281474976710656 <|x| <2^1024 */ - - n = __branred(x,&a,&da); - switch (n) { - case 1: - if (a*a < 0.01588) return bsloww(-a,-da,x,n); - else return bsloww1(-a,-da,x,n); - break; - case 3: - if (a*a < 0.01588) return bsloww(a,da,x,n); - else return bsloww1(a,da,x,n); - break; - - case 0: - case 2: - return bsloww2(a,da,x,n); - break; - } - - } /* else if (k < 0x7ff00000 ) */ - - - - - else return x / x; /* |x| > 2^1024 */ - return 0; - -} - -/************************************************************************/ -/* Routine compute sin(x) for 2^-26 < |x|< 0.25 by Taylor with more */ -/* precision and if still doesn't accurate enough by mpsin or dubsin */ -/************************************************************************/ - -static double slow(double x) { -static const double th2_36 = 206158430208.0; /* 1.5*2**37 */ - double y,x1,x2,xx,r,t,res,cor,w[2]; - x1=(x+th2_36)-th2_36; - y = aa.x*x1*x1*x1; - r=x+y; - x2=x-x1; - xx=x*x; - t = (((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + bb.x)*xx + 3.0*aa.x*x1*x2)*x +aa.x*x2*x2*x2; - t=((x-r)+y)+t; - res=r+t; - cor = (r-res)+t; - if (res == res + 1.0007*cor) return res; - else { - __dubsin(ABS(x),0,w); - if (w[0] == w[0]+1.000000001*w[1]) return (x>0)?w[0]:-w[0]; - else return (x>0)?__mpsin(x,0):-__mpsin(-x,0); - } -} -/*******************************************************************************/ -/* Routine compute sin(x) for 0.25<|x|< 0.855469 by sincos.tbl and Taylor */ -/* and if result still doesn't accurate enough by mpsin or dubsin */ -/*******************************************************************************/ - -static double slow1(double x) { - mynumber u; - double sn,ssn,cs,ccs,s,c,w[2],y,y1,y2,c1,c2,xx,cor,res; - static const double t22 = 6291456.0; - int4 k; - y=ABS(x); - u.x=big.x+y; - y=y-(u.x-big.x); - xx=y*y; - s = y*xx*(sn3 +xx*sn5); - c = xx*(cs2 +xx*(cs4 + xx*cs6)); - k=u.i[LOW_HALF]<<2; - sn=sincos.x[k]; /* Data */ - ssn=sincos.x[k+1]; /* from */ - cs=sincos.x[k+2]; /* tables */ - ccs=sincos.x[k+3]; /* sincos.tbl */ - y1 = (y+t22)-t22; - y2 = y - y1; - c1 = (cs+t22)-t22; - c2=(cs-c1)+ccs; - cor=(ssn+s*ccs+cs*s+c2*y+c1*y2)-sn*c; - y=sn+c1*y1; - cor = cor+((sn-y)+c1*y1); - res=y+cor; - cor=(y-res)+cor; - if (res == res+1.0005*cor) return (x>0)?res:-res; - else { - __dubsin(ABS(x),0,w); - if (w[0] == w[0]+1.000000005*w[1]) return (x>0)?w[0]:-w[0]; - else return (x>0)?__mpsin(x,0):-__mpsin(-x,0); - } -} -/**************************************************************************/ -/* Routine compute sin(x) for 0.855469 <|x|<2.426265 by sincos.tbl */ -/* and if result still doesn't accurate enough by mpsin or dubsin */ -/**************************************************************************/ -static double slow2(double x) { - mynumber u; - double sn,ssn,cs,ccs,s,c,w[2],y,y1,y2,e1,e2,xx,cor,res,del; - static const double t22 = 6291456.0; - int4 k; - y=ABS(x); - y = hp0.x-y; - if (y>=0) { - u.x = big.x+y; - y = y-(u.x-big.x); - del = hp1.x; - } - else { - u.x = big.x-y; - y = -(y+(u.x-big.x)); - del = -hp1.x; - } - xx=y*y; - s = y*xx*(sn3 +xx*sn5); - c = y*del+xx*(cs2 +xx*(cs4 + xx*cs6)); - k=u.i[LOW_HALF]<<2; - sn=sincos.x[k]; - ssn=sincos.x[k+1]; - cs=sincos.x[k+2]; - ccs=sincos.x[k+3]; - y1 = (y+t22)-t22; - y2 = (y - y1)+del; - e1 = (sn+t22)-t22; - e2=(sn-e1)+ssn; - cor=(ccs-cs*c-e1*y2-e2*y)-sn*s; - y=cs-e1*y1; - cor = cor+((cs-y)-e1*y1); - res=y+cor; - cor=(y-res)+cor; - if (res == res+1.0005*cor) return (x>0)?res:-res; - else { - y=ABS(x)-hp0.x; - y1=y-hp1.x; - y2=(y-y1)-hp1.x; - __docos(y1,y2,w); - if (w[0] == w[0]+1.000000005*w[1]) return (x>0)?w[0]:-w[0]; - else return (x>0)?__mpsin(x,0):-__mpsin(-x,0); - } -} -/***************************************************************************/ -/* Routine compute sin(x+dx) (Double-Length number) where x is small enough*/ -/* to use Taylor series around zero and (x+dx) */ -/* in first or third quarter of unit circle.Routine receive also */ -/* (right argument) the original value of x for computing error of */ -/* result.And if result not accurate enough routine calls mpsin1 or dubsin */ -/***************************************************************************/ - -static double sloww(double x,double dx, double orig) { - static const double th2_36 = 206158430208.0; /* 1.5*2**37 */ - double y,x1,x2,xx,r,t,res,cor,w[2],a,da,xn; - union {int4 i[2]; double x;} v; - int4 n; - x1=(x+th2_36)-th2_36; - y = aa.x*x1*x1*x1; - r=x+y; - x2=(x-x1)+dx; - xx=x*x; - t = (((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + bb.x)*xx + 3.0*aa.x*x1*x2)*x +aa.x*x2*x2*x2+dx; - t=((x-r)+y)+t; - res=r+t; - cor = (r-res)+t; - cor = (cor>0)? 1.0005*cor+ABS(orig)*3.1e-30 : 1.0005*cor-ABS(orig)*3.1e-30; - if (res == res + cor) return res; - else { - (x>0)? __dubsin(x,dx,w) : __dubsin(-x,-dx,w); - cor = (w[1]>0)? 1.000000001*w[1] + ABS(orig)*1.1e-30 : 1.000000001*w[1] - ABS(orig)*1.1e-30; - if (w[0] == w[0]+cor) return (x>0)?w[0]:-w[0]; - else { - t = (orig*hpinv.x + toint.x); - xn = t - toint.x; - v.x = t; - y = (orig - xn*mp1.x) - xn*mp2.x; - n =v.i[LOW_HALF]&3; - da = xn*pp3.x; - t=y-da; - da = (y-t)-da; - y = xn*pp4.x; - a = t - y; - da = ((t-a)-y)+da; - if (n&2) {a=-a; da=-da;} - (a>0)? __dubsin(a,da,w) : __dubsin(-a,-da,w); - cor = (w[1]>0)? 1.000000001*w[1] + ABS(orig)*1.1e-40 : 1.000000001*w[1] - ABS(orig)*1.1e-40; - if (w[0] == w[0]+cor) return (a>0)?w[0]:-w[0]; - else return __mpsin1(orig); - } - } -} -/***************************************************************************/ -/* Routine compute sin(x+dx) (Double-Length number) where x in first or */ -/* third quarter of unit circle.Routine receive also (right argument) the */ -/* original value of x for computing error of result.And if result not */ -/* accurate enough routine calls mpsin1 or dubsin */ -/***************************************************************************/ - -static double sloww1(double x, double dx, double orig) { - mynumber u; - double sn,ssn,cs,ccs,s,c,w[2],y,y1,y2,c1,c2,xx,cor,res; - static const double t22 = 6291456.0; - int4 k; - y=ABS(x); - u.x=big.x+y; - y=y-(u.x-big.x); - dx=(x>0)?dx:-dx; - xx=y*y; - s = y*xx*(sn3 +xx*sn5); - c = xx*(cs2 +xx*(cs4 + xx*cs6)); - k=u.i[LOW_HALF]<<2; - sn=sincos.x[k]; - ssn=sincos.x[k+1]; - cs=sincos.x[k+2]; - ccs=sincos.x[k+3]; - y1 = (y+t22)-t22; - y2 = (y - y1)+dx; - c1 = (cs+t22)-t22; - c2=(cs-c1)+ccs; - cor=(ssn+s*ccs+cs*s+c2*y+c1*y2-sn*y*dx)-sn*c; - y=sn+c1*y1; - cor = cor+((sn-y)+c1*y1); - res=y+cor; - cor=(y-res)+cor; - cor = (cor>0)? 1.0005*cor+3.1e-30*ABS(orig) : 1.0005*cor-3.1e-30*ABS(orig); - if (res == res + cor) return (x>0)?res:-res; - else { - __dubsin(ABS(x),dx,w); - cor = (w[1]>0)? 1.000000005*w[1]+1.1e-30*ABS(orig) : 1.000000005*w[1]-1.1e-30*ABS(orig); - if (w[0] == w[0]+cor) return (x>0)?w[0]:-w[0]; - else return __mpsin1(orig); - } -} -/***************************************************************************/ -/* Routine compute sin(x+dx) (Double-Length number) where x in second or */ -/* fourth quarter of unit circle.Routine receive also the original value */ -/* and quarter(n= 1or 3)of x for computing error of result.And if result not*/ -/* accurate enough routine calls mpsin1 or dubsin */ -/***************************************************************************/ - -static double sloww2(double x, double dx, double orig, int n) { - mynumber u; - double sn,ssn,cs,ccs,s,c,w[2],y,y1,y2,e1,e2,xx,cor,res; - static const double t22 = 6291456.0; - int4 k; - y=ABS(x); - u.x=big.x+y; - y=y-(u.x-big.x); - dx=(x>0)?dx:-dx; - xx=y*y; - s = y*xx*(sn3 +xx*sn5); - c = y*dx+xx*(cs2 +xx*(cs4 + xx*cs6)); - k=u.i[LOW_HALF]<<2; - sn=sincos.x[k]; - ssn=sincos.x[k+1]; - cs=sincos.x[k+2]; - ccs=sincos.x[k+3]; - - y1 = (y+t22)-t22; - y2 = (y - y1)+dx; - e1 = (sn+t22)-t22; - e2=(sn-e1)+ssn; - cor=(ccs-cs*c-e1*y2-e2*y)-sn*s; - y=cs-e1*y1; - cor = cor+((cs-y)-e1*y1); - res=y+cor; - cor=(y-res)+cor; - cor = (cor>0)? 1.0005*cor+3.1e-30*ABS(orig) : 1.0005*cor-3.1e-30*ABS(orig); - if (res == res + cor) return (n&2)?-res:res; - else { - __docos(ABS(x),dx,w); - cor = (w[1]>0)? 1.000000005*w[1]+1.1e-30*ABS(orig) : 1.000000005*w[1]-1.1e-30*ABS(orig); - if (w[0] == w[0]+cor) return (n&2)?-w[0]:w[0]; - else return __mpsin1(orig); - } -} -/***************************************************************************/ -/* Routine compute sin(x+dx) or cos(x+dx) (Double-Length number) where x */ -/* is small enough to use Taylor series around zero and (x+dx) */ -/* in first or third quarter of unit circle.Routine receive also */ -/* (right argument) the original value of x for computing error of */ -/* result.And if result not accurate enough routine calls other routines */ -/***************************************************************************/ - -static double bsloww(double x,double dx, double orig,int n) { - static const double th2_36 = 206158430208.0; /* 1.5*2**37 */ - double y,x1,x2,xx,r,t,res,cor,w[2]; -#if 0 - double a,da,xn; - union {int4 i[2]; double x;} v; -#endif - x1=(x+th2_36)-th2_36; - y = aa.x*x1*x1*x1; - r=x+y; - x2=(x-x1)+dx; - xx=x*x; - t = (((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + bb.x)*xx + 3.0*aa.x*x1*x2)*x +aa.x*x2*x2*x2+dx; - t=((x-r)+y)+t; - res=r+t; - cor = (r-res)+t; - cor = (cor>0)? 1.0005*cor+1.1e-24 : 1.0005*cor-1.1e-24; - if (res == res + cor) return res; - else { - (x>0)? __dubsin(x,dx,w) : __dubsin(-x,-dx,w); - cor = (w[1]>0)? 1.000000001*w[1] + 1.1e-24 : 1.000000001*w[1] - 1.1e-24; - if (w[0] == w[0]+cor) return (x>0)?w[0]:-w[0]; - else return (n&1)?__mpcos1(orig):__mpsin1(orig); - } -} - -/***************************************************************************/ -/* Routine compute sin(x+dx) or cos(x+dx) (Double-Length number) where x */ -/* in first or third quarter of unit circle.Routine receive also */ -/* (right argument) the original value of x for computing error of result.*/ -/* And if result not accurate enough routine calls other routines */ -/***************************************************************************/ - -static double bsloww1(double x, double dx, double orig,int n) { -mynumber u; - double sn,ssn,cs,ccs,s,c,w[2],y,y1,y2,c1,c2,xx,cor,res; - static const double t22 = 6291456.0; - int4 k; - y=ABS(x); - u.x=big.x+y; - y=y-(u.x-big.x); - dx=(x>0)?dx:-dx; - xx=y*y; - s = y*xx*(sn3 +xx*sn5); - c = xx*(cs2 +xx*(cs4 + xx*cs6)); - k=u.i[LOW_HALF]<<2; - sn=sincos.x[k]; - ssn=sincos.x[k+1]; - cs=sincos.x[k+2]; - ccs=sincos.x[k+3]; - y1 = (y+t22)-t22; - y2 = (y - y1)+dx; - c1 = (cs+t22)-t22; - c2=(cs-c1)+ccs; - cor=(ssn+s*ccs+cs*s+c2*y+c1*y2-sn*y*dx)-sn*c; - y=sn+c1*y1; - cor = cor+((sn-y)+c1*y1); - res=y+cor; - cor=(y-res)+cor; - cor = (cor>0)? 1.0005*cor+1.1e-24 : 1.0005*cor-1.1e-24; - if (res == res + cor) return (x>0)?res:-res; - else { - __dubsin(ABS(x),dx,w); - cor = (w[1]>0)? 1.000000005*w[1]+1.1e-24: 1.000000005*w[1]-1.1e-24; - if (w[0] == w[0]+cor) return (x>0)?w[0]:-w[0]; - else return (n&1)?__mpcos1(orig):__mpsin1(orig); - } -} - -/***************************************************************************/ -/* Routine compute sin(x+dx) or cos(x+dx) (Double-Length number) where x */ -/* in second or fourth quarter of unit circle.Routine receive also the */ -/* original value and quarter(n= 1or 3)of x for computing error of result. */ -/* And if result not accurate enough routine calls other routines */ -/***************************************************************************/ - -static double bsloww2(double x, double dx, double orig, int n) { -mynumber u; - double sn,ssn,cs,ccs,s,c,w[2],y,y1,y2,e1,e2,xx,cor,res; - static const double t22 = 6291456.0; - int4 k; - y=ABS(x); - u.x=big.x+y; - y=y-(u.x-big.x); - dx=(x>0)?dx:-dx; - xx=y*y; - s = y*xx*(sn3 +xx*sn5); - c = y*dx+xx*(cs2 +xx*(cs4 + xx*cs6)); - k=u.i[LOW_HALF]<<2; - sn=sincos.x[k]; - ssn=sincos.x[k+1]; - cs=sincos.x[k+2]; - ccs=sincos.x[k+3]; - - y1 = (y+t22)-t22; - y2 = (y - y1)+dx; - e1 = (sn+t22)-t22; - e2=(sn-e1)+ssn; - cor=(ccs-cs*c-e1*y2-e2*y)-sn*s; - y=cs-e1*y1; - cor = cor+((cs-y)-e1*y1); - res=y+cor; - cor=(y-res)+cor; - cor = (cor>0)? 1.0005*cor+1.1e-24 : 1.0005*cor-1.1e-24; - if (res == res + cor) return (n&2)?-res:res; - else { - __docos(ABS(x),dx,w); - cor = (w[1]>0)? 1.000000005*w[1]+1.1e-24 : 1.000000005*w[1]-1.1e-24; - if (w[0] == w[0]+cor) return (n&2)?-w[0]:w[0]; - else return (n&1)?__mpsin1(orig):__mpcos1(orig); - } -} - -/************************************************************************/ -/* Routine compute cos(x) for 2^-27 < |x|< 0.25 by Taylor with more */ -/* precision and if still doesn't accurate enough by mpcos or docos */ -/************************************************************************/ - -static double cslow2(double x) { - mynumber u; - double sn,ssn,cs,ccs,s,c,w[2],y,y1,y2,e1,e2,xx,cor,res; - static const double t22 = 6291456.0; - int4 k; - y=ABS(x); - u.x = big.x+y; - y = y-(u.x-big.x); - xx=y*y; - s = y*xx*(sn3 +xx*sn5); - c = xx*(cs2 +xx*(cs4 + xx*cs6)); - k=u.i[LOW_HALF]<<2; - sn=sincos.x[k]; - ssn=sincos.x[k+1]; - cs=sincos.x[k+2]; - ccs=sincos.x[k+3]; - y1 = (y+t22)-t22; - y2 = y - y1; - e1 = (sn+t22)-t22; - e2=(sn-e1)+ssn; - cor=(ccs-cs*c-e1*y2-e2*y)-sn*s; - y=cs-e1*y1; - cor = cor+((cs-y)-e1*y1); - res=y+cor; - cor=(y-res)+cor; - if (res == res+1.0005*cor) - return res; - else { - y=ABS(x); - __docos(y,0,w); - if (w[0] == w[0]+1.000000005*w[1]) return w[0]; - else return __mpcos(x,0); - } -} - -/***************************************************************************/ -/* Routine compute cos(x+dx) (Double-Length number) where x is small enough*/ -/* to use Taylor series around zero and (x+dx) .Routine receive also */ -/* (right argument) the original value of x for computing error of */ -/* result.And if result not accurate enough routine calls other routines */ -/***************************************************************************/ - - -static double csloww(double x,double dx, double orig) { - static const double th2_36 = 206158430208.0; /* 1.5*2**37 */ - double y,x1,x2,xx,r,t,res,cor,w[2],a,da,xn; - union {int4 i[2]; double x;} v; - int4 n; - x1=(x+th2_36)-th2_36; - y = aa.x*x1*x1*x1; - r=x+y; - x2=(x-x1)+dx; - xx=x*x; - /* Taylor series */ - t = (((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + bb.x)*xx + 3.0*aa.x*x1*x2)*x +aa.x*x2*x2*x2+dx; - t=((x-r)+y)+t; - res=r+t; - cor = (r-res)+t; - cor = (cor>0)? 1.0005*cor+ABS(orig)*3.1e-30 : 1.0005*cor-ABS(orig)*3.1e-30; - if (res == res + cor) return res; - else { - (x>0)? __dubsin(x,dx,w) : __dubsin(-x,-dx,w); - cor = (w[1]>0)? 1.000000001*w[1] + ABS(orig)*1.1e-30 : 1.000000001*w[1] - ABS(orig)*1.1e-30; - if (w[0] == w[0]+cor) return (x>0)?w[0]:-w[0]; - else { - t = (orig*hpinv.x + toint.x); - xn = t - toint.x; - v.x = t; - y = (orig - xn*mp1.x) - xn*mp2.x; - n =v.i[LOW_HALF]&3; - da = xn*pp3.x; - t=y-da; - da = (y-t)-da; - y = xn*pp4.x; - a = t - y; - da = ((t-a)-y)+da; - if (n==1) {a=-a; da=-da;} - (a>0)? __dubsin(a,da,w) : __dubsin(-a,-da,w); - cor = (w[1]>0)? 1.000000001*w[1] + ABS(orig)*1.1e-40 : 1.000000001*w[1] - ABS(orig)*1.1e-40; - if (w[0] == w[0]+cor) return (a>0)?w[0]:-w[0]; - else return __mpcos1(orig); - } - } -} - -/***************************************************************************/ -/* Routine compute sin(x+dx) (Double-Length number) where x in first or */ -/* third quarter of unit circle.Routine receive also (right argument) the */ -/* original value of x for computing error of result.And if result not */ -/* accurate enough routine calls other routines */ -/***************************************************************************/ - -static double csloww1(double x, double dx, double orig) { - mynumber u; - double sn,ssn,cs,ccs,s,c,w[2],y,y1,y2,c1,c2,xx,cor,res; - static const double t22 = 6291456.0; - int4 k; - y=ABS(x); - u.x=big.x+y; - y=y-(u.x-big.x); - dx=(x>0)?dx:-dx; - xx=y*y; - s = y*xx*(sn3 +xx*sn5); - c = xx*(cs2 +xx*(cs4 + xx*cs6)); - k=u.i[LOW_HALF]<<2; - sn=sincos.x[k]; - ssn=sincos.x[k+1]; - cs=sincos.x[k+2]; - ccs=sincos.x[k+3]; - y1 = (y+t22)-t22; - y2 = (y - y1)+dx; - c1 = (cs+t22)-t22; - c2=(cs-c1)+ccs; - cor=(ssn+s*ccs+cs*s+c2*y+c1*y2-sn*y*dx)-sn*c; - y=sn+c1*y1; - cor = cor+((sn-y)+c1*y1); - res=y+cor; - cor=(y-res)+cor; - cor = (cor>0)? 1.0005*cor+3.1e-30*ABS(orig) : 1.0005*cor-3.1e-30*ABS(orig); - if (res == res + cor) return (x>0)?res:-res; - else { - __dubsin(ABS(x),dx,w); - cor = (w[1]>0)? 1.000000005*w[1]+1.1e-30*ABS(orig) : 1.000000005*w[1]-1.1e-30*ABS(orig); - if (w[0] == w[0]+cor) return (x>0)?w[0]:-w[0]; - else return __mpcos1(orig); - } -} - - -/***************************************************************************/ -/* Routine compute sin(x+dx) (Double-Length number) where x in second or */ -/* fourth quarter of unit circle.Routine receive also the original value */ -/* and quarter(n= 1or 3)of x for computing error of result.And if result not*/ -/* accurate enough routine calls other routines */ -/***************************************************************************/ - -static double csloww2(double x, double dx, double orig, int n) { - mynumber u; - double sn,ssn,cs,ccs,s,c,w[2],y,y1,y2,e1,e2,xx,cor,res; - static const double t22 = 6291456.0; - int4 k; - y=ABS(x); - u.x=big.x+y; - y=y-(u.x-big.x); - dx=(x>0)?dx:-dx; - xx=y*y; - s = y*xx*(sn3 +xx*sn5); - c = y*dx+xx*(cs2 +xx*(cs4 + xx*cs6)); - k=u.i[LOW_HALF]<<2; - sn=sincos.x[k]; - ssn=sincos.x[k+1]; - cs=sincos.x[k+2]; - ccs=sincos.x[k+3]; - - y1 = (y+t22)-t22; - y2 = (y - y1)+dx; - e1 = (sn+t22)-t22; - e2=(sn-e1)+ssn; - cor=(ccs-cs*c-e1*y2-e2*y)-sn*s; - y=cs-e1*y1; - cor = cor+((cs-y)-e1*y1); - res=y+cor; - cor=(y-res)+cor; - cor = (cor>0)? 1.0005*cor+3.1e-30*ABS(orig) : 1.0005*cor-3.1e-30*ABS(orig); - if (res == res + cor) return (n)?-res:res; - else { - __docos(ABS(x),dx,w); - cor = (w[1]>0)? 1.000000005*w[1]+1.1e-30*ABS(orig) : 1.000000005*w[1]-1.1e-30*ABS(orig); - if (w[0] == w[0]+cor) return (n)?-w[0]:w[0]; - else return __mpcos1(orig); - } -} - -weak_alias (__cos, cos) -weak_alias (__sin, sin) - -#ifdef NO_LONG_DOUBLE -strong_alias (__sin, __sinl) -weak_alias (__sin, sinl) -strong_alias (__cos, __cosl) -weak_alias (__cos, cosl) -#endif diff --git a/libgcc-math/dbl-64/s_tan.c b/libgcc-math/dbl-64/s_tan.c deleted file mode 100644 index 17bac52da03..00000000000 --- a/libgcc-math/dbl-64/s_tan.c +++ /dev/null @@ -1,485 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/*********************************************************************/ -/* MODULE_NAME: utan.c */ -/* */ -/* FUNCTIONS: utan */ -/* tanMp */ -/* */ -/* FILES NEEDED:dla.h endian.h mpa.h mydefs.h utan.h */ -/* branred.c sincos32.c mptan.c */ -/* utan.tbl */ -/* */ -/* An ultimate tan routine. Given an IEEE double machine number x */ -/* it computes the correctly rounded (to nearest) value of tan(x). */ -/* Assumption: Machine arithmetic operations are performed in */ -/* round to nearest mode of IEEE 754 standard. */ -/* */ -/*********************************************************************/ -#include "endian.h" -#include "dla.h" -#include "mpa.h" -#include "MathLib.h" - -static double tanMp(double); -void __mptan(double, mp_no *, int); - -double tan(double x) { -#include "utan.h" -#include "utan.tbl" - - int ux,i,n; - double a,da,a2,b,db,c,dc,c1,cc1,c2,cc2,c3,cc3,fi,ffi,gi,pz,s,sy, - t,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,w,x2,xn,xx2,y,ya,yya,z0,z,zz,z2,zz2; - int p; - number num,v; - mp_no mpa,mpt1,mpt2; -#if 0 - mp_no mpy; -#endif - - int __branred(double, double *, double *); - int __mpranred(double, mp_no *, int); - - /* x=+-INF, x=NaN */ - num.d = x; ux = num.i[HIGH_HALF]; - if ((ux&0x7ff00000)==0x7ff00000) return x-x; - - w=(x1.0;a-=2.0) { - mpk.d[1]=a*(a-1.0); - __mul(&gor,&mpk,&mpt1,p); - __cpy(&mpt1,&gor,p); - __mul(&x2,&sum,&mpt1,p); - __sub(&gor,&mpt1,&sum,p); - } - __mul(x,&sum,y,p); -} - -/**********************************************************************/ -/* Compute Multi-Precision cos() function for given p. Receive Multi */ -/* Precision number x and result stored at y */ -/**********************************************************************/ -static void cc32(mp_no *x, mp_no *y, int p) { - int i; - double a; -#if 0 - double b; - static const mp_no mpone = {1,{1.0,1.0}}; -#endif - mp_no mpt1,x2,gor,sum ,mpk={1,{1.0}}; -#if 0 - mp_no mpt2; -#endif - for (i=1;i<=p;i++) mpk.d[i]=0; - - __mul(x,x,&x2,p); - mpk.d[1]=27.0; - __mul(&oofac27,&mpk,&gor,p); - __cpy(&gor,&sum,p); - for (a=26.0;a>2.0;a-=2.0) { - mpk.d[1]=a*(a-1.0); - __mul(&gor,&mpk,&mpt1,p); - __cpy(&mpt1,&gor,p); - __mul(&x2,&sum,&mpt1,p); - __sub(&gor,&mpt1,&sum,p); - } - __mul(&x2,&sum,y,p); -} - -/***************************************************************************/ -/* c32() computes both sin(x), cos(x) as Multi precision numbers */ -/***************************************************************************/ -void __c32(mp_no *x, mp_no *y, mp_no *z, int p) { - static const mp_no mpt={1,{1.0,2.0}}, one={1,{1.0,1.0}}; - mp_no u,t,t1,t2,c,s; - int i; - __cpy(x,&u,p); - u.e=u.e-1; - cc32(&u,&c,p); - ss32(&u,&s,p); - for (i=0;i<24;i++) { - __mul(&c,&s,&t,p); - __sub(&s,&t,&t1,p); - __add(&t1,&t1,&s,p); - __sub(&mpt,&c,&t1,p); - __mul(&t1,&c,&t2,p); - __add(&t2,&t2,&c,p); - } - __sub(&one,&c,y,p); - __cpy(&s,z,p); -} - -/************************************************************************/ -/*Routine receive double x and two double results of sin(x) and return */ -/*result which is more accurate */ -/*Computing sin(x) with multi precision routine c32 */ -/************************************************************************/ -double __sin32(double x, double res, double res1) { - int p; - mp_no a,b,c; - p=32; - __dbl_mp(res,&a,p); - __dbl_mp(0.5*(res1-res),&b,p); - __add(&a,&b,&c,p); - if (x>0.8) - { __sub(&hp,&c,&a,p); - __c32(&a,&b,&c,p); - } - else __c32(&c,&a,&b,p); /* b=sin(0.5*(res+res1)) */ - __dbl_mp(x,&c,p); /* c = x */ - __sub(&b,&c,&a,p); - /* if a>0 return min(res,res1), otherwise return max(res,res1) */ - if (a.d[0]>0) return (resres1)?res:res1; -} - -/************************************************************************/ -/*Routine receive double x and two double results of cos(x) and return */ -/*result which is more accurate */ -/*Computing cos(x) with multi precision routine c32 */ -/************************************************************************/ -double __cos32(double x, double res, double res1) { - int p; - mp_no a,b,c; - p=32; - __dbl_mp(res,&a,p); - __dbl_mp(0.5*(res1-res),&b,p); - __add(&a,&b,&c,p); - if (x>2.4) - { __sub(&pi,&c,&a,p); - __c32(&a,&b,&c,p); - b.d[0]=-b.d[0]; - } - else if (x>0.8) - { __sub(&hp,&c,&a,p); - __c32(&a,&c,&b,p); - } - else __c32(&c,&b,&a,p); /* b=cos(0.5*(res+res1)) */ - __dbl_mp(x,&c,p); /* c = x */ - __sub(&b,&c,&a,p); - /* if a>0 return max(res,res1), otherwise return min(res,res1) */ - if (a.d[0]>0) return (res>res1)?res:res1; - else return (res0.8) { __sub(&hp,&c,&a,p); __c32(&a,&b,&c,p); } - else __c32(&c,&a,&b,p); /* b = sin(x+dx) */ - __mp_dbl(&b,&y,p); - return y; -} - -/*******************************************************************/ -/* Compute cos()of double-length number (x+dx) as Multi Precision */ -/* number and return result as double */ -/*******************************************************************/ -double __mpcos(double x, double dx) { - int p; - double y; - mp_no a,b,c; - p=32; - __dbl_mp(x,&a,p); - __dbl_mp(dx,&b,p); - __add(&a,&b,&c,p); - if (x>0.8) - { __sub(&hp,&c,&b,p); - __c32(&b,&c,&a,p); - } - else __c32(&c,&a,&b,p); /* a = cos(x+dx) */ - __mp_dbl(&a,&y,p); - return y; -} - -/******************************************************************/ -/* mpranred() performs range reduction of a double number x into */ -/* multi precision number y, such that y=x-n*pi/2, abs(y)= 8388608.0) - { t +=1.0; - __sub(&c,&one,&b,p); - __mul(&b,&hp,y,p); - } - else __mul(&c,&hp,y,p); - n = (int) t; - if (x < 0) { y->d[0] = - y->d[0]; n = -n; } - return (n&3); - } -} - -/*******************************************************************/ -/* Multi-Precision sin() function subroutine, for p=32. It is */ -/* based on the routines mpranred() and c32(). */ -/*******************************************************************/ -double __mpsin1(double x) -{ - int p; - int n; - mp_no u,s,c; - double y; - p=32; - n=__mpranred(x,&u,p); /* n is 0, 1, 2 or 3 */ - __c32(&u,&c,&s,p); - switch (n) { /* in which quarter of unit circle y is*/ - case 0: - __mp_dbl(&s,&y,p); - return y; - break; - - case 2: - __mp_dbl(&s,&y,p); - return -y; - break; - - case 1: - __mp_dbl(&c,&y,p); - return y; - break; - - case 3: - __mp_dbl(&c,&y,p); - return -y; - break; - - } - return 0; /* unreachable, to make the compiler happy */ -} - -/*****************************************************************/ -/* Multi-Precision cos() function subroutine, for p=32. It is */ -/* based on the routines mpranred() and c32(). */ -/*****************************************************************/ - -double __mpcos1(double x) -{ - int p; - int n; - mp_no u,s,c; - double y; - - p=32; - n=__mpranred(x,&u,p); /* n is 0, 1, 2 or 3 */ - __c32(&u,&c,&s,p); - switch (n) { /* in what quarter of unit circle y is*/ - - case 0: - __mp_dbl(&c,&y,p); - return y; - break; - - case 2: - __mp_dbl(&c,&y,p); - return -y; - break; - - case 1: - __mp_dbl(&s,&y,p); - return -y; - break; - - case 3: - __mp_dbl(&s,&y,p); - return y; - break; - - } - return 0; /* unreachable, to make the compiler happy */ -} -/******************************************************************/ diff --git a/libgcc-math/dbl-64/sincos32.h b/libgcc-math/dbl-64/sincos32.h deleted file mode 100644 index ee9d5a4ccfb..00000000000 --- a/libgcc-math/dbl-64/sincos32.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/******************************************************************/ -/* */ -/* MODULE_NAME:sincos32.h */ -/* */ -/* common data and variables prototype and definition */ -/******************************************************************/ - -#ifndef SINCOS32_H -#define SINCCOS32_H - -#ifdef BIG_ENDI -static const number -/**/ hpinv = {{0x3FE45F30, 0x6DC9C883}}, /* 0.63661977236758138 */ -/**/ toint = {{0x43380000, 0x00000000}}; /* 6755399441055744 */ - -#else -#ifdef LITTLE_ENDI -static const number -/**/ hpinv = {{0x6DC9C883, 0x3FE45F30}}, /* 0.63661977236758138 */ -/**/ toint = {{0x00000000, 0x43380000}}; /* 6755399441055744 */ - -#endif -#endif - -static const mp_no - oofac27 = {-3,{1.0,7.0,4631664.0,12006312.0,13118056.0,6538613.0,646354.0, - 8508025.0,9131256.0,7548776.0,2529842.0,8864927.0,660489.0,15595125.0,12777885.0, - 11618489.0,13348664.0,5486686.0,514518.0,11275535.0,4727621.0,3575562.0, - 13579710.0,5829745.0,7531862.0,9507898.0,6915060.0,4079264.0,1907586.0, - 6078398.0,13789314.0,5504104.0,14136.0}}, - pi = {1,{1.0,3.0, - 2375530.0,8947107.0,578323.0,1673774.0,225395.0,4498441.0,3678761.0, - 10432976.0,536314.0,10021966.0,7113029.0,2630118.0,3723283.0,7847508.0, - 6737716.0,15273068.0,12626985.0,12044668.0,5299519.0,8705461.0,11880201.0, - 1544726.0,14014857.0,7994139.0,13709579.0,10918111.0,11906095.0,16610011.0, - 13638367.0,12040417.0,11529578.0,2522774.0}}, - hp = {1,{1.0, 1.0, - 9576373.0,4473553.0,8677769.0,9225495.0,112697.0,10637828.0, - 10227988.0,13605096.0,268157.0,5010983.0,3556514.0,9703667.0, - 1861641.0,12312362.0,3368858.0,7636534.0,6313492.0,14410942.0, - 2649759.0,12741338.0,14328708.0,9160971.0,7007428.0,12385677.0, - 15243397.0,13847663.0,14341655.0,16693613.0,15207791.0,14408816.0, - 14153397.0,1261387.0,6110792.0,2291862.0,4181138.0,5295267.0}}; - -static const double toverp[75] = { - 10680707.0, 7228996.0, 1387004.0, 2578385.0, 16069853.0, - 12639074.0, 9804092.0, 4427841.0, 16666979.0, 11263675.0, - 12935607.0, 2387514.0, 4345298.0, 14681673.0, 3074569.0, - 13734428.0, 16653803.0, 1880361.0, 10960616.0, 8533493.0, - 3062596.0, 8710556.0, 7349940.0, 6258241.0, 3772886.0, - 3769171.0, 3798172.0, 8675211.0, 12450088.0, 3874808.0, - 9961438.0, 366607.0, 15675153.0, 9132554.0, 7151469.0, - 3571407.0, 2607881.0, 12013382.0, 4155038.0, 6285869.0, - 7677882.0, 13102053.0, 15825725.0, 473591.0, 9065106.0, - 15363067.0, 6271263.0, 9264392.0, 5636912.0, 4652155.0, - 7056368.0, 13614112.0, 10155062.0, 1944035.0, 9527646.0, - 15080200.0, 6658437.0, 6231200.0, 6832269.0, 16767104.0, - 5075751.0, 3212806.0, 1398474.0, 7579849.0, 6349435.0, - 12618859.0, 4703257.0, 12806093.0, 14477321.0, 2786137.0, - 12875403.0, 9837734.0, 14528324.0, 13719321.0, 343717.0 }; - -#endif diff --git a/libgcc-math/dbl-64/slowexp.c b/libgcc-math/dbl-64/slowexp.c deleted file mode 100644 index 78c107f7093..00000000000 --- a/libgcc-math/dbl-64/slowexp.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/**************************************************************************/ -/* MODULE_NAME:slowexp.c */ -/* */ -/* FUNCTION:slowexp */ -/* */ -/* FILES NEEDED:mpa.h */ -/* mpa.c mpexp.c */ -/* */ -/*Converting from double precision to Multi-precision and calculating */ -/* e^x */ -/**************************************************************************/ -#include "mpa.h" -#include "math_private.h" - -void __mpexp(mp_no *x, mp_no *y, int p); - -/*Converting from double precision to Multi-precision and calculating e^x */ -double __slowexp(double x) { - double w,z,res,eps=3.0e-26; -#if 0 - double y; -#endif - int p; -#if 0 - int orig,i; -#endif - mp_no mpx, mpy, mpz,mpw,mpeps,mpcor; - - p=6; - __dbl_mp(x,&mpx,p); /* Convert a double precision number x */ - /* into a multiple precision number mpx with prec. p. */ - __mpexp(&mpx, &mpy, p); /* Multi-Precision exponential function */ - __dbl_mp(eps,&mpeps,p); - __mul(&mpeps,&mpy,&mpcor,p); - __add(&mpy,&mpcor,&mpw,p); - __sub(&mpy,&mpcor,&mpz,p); - __mp_dbl(&mpw, &w, p); - __mp_dbl(&mpz, &z, p); - if (w == z) return w; - else { /* if calculating is not exactly */ - p = 32; - __dbl_mp(x,&mpx,p); - __mpexp(&mpx, &mpy, p); - __mp_dbl(&mpy, &res, p); - return res; - } -} diff --git a/libgcc-math/dbl-64/slowpow.c b/libgcc-math/dbl-64/slowpow.c deleted file mode 100644 index e11a532bf86..00000000000 --- a/libgcc-math/dbl-64/slowpow.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/*************************************************************************/ -/* MODULE_NAME:slowpow.c */ -/* */ -/* FUNCTION:slowpow */ -/* */ -/*FILES NEEDED:mpa.h */ -/* mpa.c mpexp.c mplog.c halfulp.c */ -/* */ -/* Given two IEEE double machine numbers y,x , routine computes the */ -/* correctly rounded (to nearest) value of x^y. Result calculated by */ -/* multiplication (in halfulp.c) or if result isn't accurate enough */ -/* then routine converts x and y into multi-precision doubles and */ -/* calls to mpexp routine */ -/*************************************************************************/ - -#include "mpa.h" -#include "math_private.h" - -void __mpexp(mp_no *x, mp_no *y, int p); -void __mplog(mp_no *x, mp_no *y, int p); -double ulog(double); -double __halfulp(double x,double y); - -double __slowpow(double x, double y, double z) { - double res,res1; - mp_no mpx, mpy, mpz,mpw,mpp,mpr,mpr1; - static const mp_no eps = {-3,{1.0,4.0}}; - int p; - - res = __halfulp(x,y); /* halfulp() returns -10 or x^y */ - if (res >= 0) return res; /* if result was really computed by halfulp */ - /* else, if result was not really computed by halfulp */ - p = 10; /* p=precision */ - __dbl_mp(x,&mpx,p); - __dbl_mp(y,&mpy,p); - __dbl_mp(z,&mpz,p); - __mplog(&mpx, &mpz, p); /* log(x) = z */ - __mul(&mpy,&mpz,&mpw,p); /* y * z =w */ - __mpexp(&mpw, &mpp, p); /* e^w =pp */ - __add(&mpp,&eps,&mpr,p); /* pp+eps =r */ - __mp_dbl(&mpr, &res, p); - __sub(&mpp,&eps,&mpr1,p); /* pp -eps =r1 */ - __mp_dbl(&mpr1, &res1, p); /* converting into double precision */ - if (res == res1) return res; - - p = 32; /* if we get here result wasn't calculated exactly, continue */ - __dbl_mp(x,&mpx,p); /* for more exact calculation */ - __dbl_mp(y,&mpy,p); - __dbl_mp(z,&mpz,p); - __mplog(&mpx, &mpz, p); /* log(c)=z */ - __mul(&mpy,&mpz,&mpw,p); /* y*z =w */ - __mpexp(&mpw, &mpp, p); /* e^w=pp */ - __mp_dbl(&mpp, &res, p); /* converting into double precision */ - return res; -} diff --git a/libgcc-math/dbl-64/t_exp.c b/libgcc-math/dbl-64/t_exp.c deleted file mode 100644 index 7a33a9080c1..00000000000 --- a/libgcc-math/dbl-64/t_exp.c +++ /dev/null @@ -1,436 +0,0 @@ -/* Accurate tables for exp(). - Copyright (C) 1998 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Geoffrey Keating - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -/* This table has the property that, for all integers -177 <= i <= 177, - exp(i/512.0 + __exp_deltatable[abs(i)]) == __exp_atable[i+177] + r - for some -2^-64 < r < 2^-64 (abs(r) < 2^-65 if i <= 0); and that - __exp_deltatable[abs(i)] == t * 2^-60 - for integer t so that abs(t) <= 8847927 * 2^8. */ - -#define W52 (2.22044605e-16) -#define W55 (2.77555756e-17) -#define W58 (3.46944695e-18) -#define W59 (1.73472348e-18) -#define W60 (8.67361738e-19) -const float __exp_deltatable[178] = { - 0*W60, 16558714*W60, -10672149*W59, 1441652*W60, - -15787963*W55, 462888*W60, 7291806*W60, 1698880*W60, - -14375103*W58, -2021016*W60, 728829*W60, -3759654*W60, - 3202123*W60, -10916019*W58, -251570*W60, -1043086*W60, - 8207536*W60, -409964*W60, -5993931*W60, -475500*W60, - 2237522*W60, 324170*W60, -244117*W60, 32077*W60, - 123907*W60, -1019734*W60, -143*W60, 813077*W60, - 743345*W60, 462461*W60, 629794*W60, 2125066*W60, - -2339121*W60, -337951*W60, 9922067*W60, -648704*W60, - 149407*W60, -2687209*W60, -631608*W60, 2128280*W60, - -4882082*W60, 2001360*W60, 175074*W60, 2923216*W60, - -538947*W60, -1212193*W60, -1920926*W60, -1080577*W60, - 3690196*W60, 2643367*W60, 2911937*W60, 671455*W60, - -1128674*W60, 593282*W60, -5219347*W60, -1941490*W60, - 11007953*W60, 239609*W60, -2969658*W60, -1183650*W60, - 942998*W60, 699063*W60, 450569*W60, -329250*W60, - -7257875*W60, -312436*W60, 51626*W60, 555877*W60, - -641761*W60, 1565666*W60, 884327*W60, -10960035*W60, - -2004679*W60, -995793*W60, -2229051*W60, -146179*W60, - -510327*W60, 1453482*W60, -3778852*W60, -2238056*W60, - -4895983*W60, 3398883*W60, -252738*W60, 1230155*W60, - 346918*W60, 1109352*W60, 268941*W60, -2930483*W60, - -1036263*W60, -1159280*W60, 1328176*W60, 2937642*W60, - -9371420*W60, -6902650*W60, -1419134*W60, 1442904*W60, - -1319056*W60, -16369*W60, 696555*W60, -279987*W60, - -7919763*W60, 252741*W60, 459711*W60, -1709645*W60, - 354913*W60, 6025867*W60, -421460*W60, -853103*W60, - -338649*W60, 962151*W60, 955965*W60, 784419*W60, - -3633653*W60, 2277133*W60, -8847927*W52, 1223028*W60, - 5907079*W60, 623167*W60, 5142888*W60, 2599099*W60, - 1214280*W60, 4870359*W60, 593349*W60, -57705*W60, - 7761209*W60, -5564097*W60, 2051261*W60, 6216869*W60, - 4692163*W60, 601691*W60, -5264906*W60, 1077872*W60, - -3205949*W60, 1833082*W60, 2081746*W60, -987363*W60, - -1049535*W60, 2015244*W60, 874230*W60, 2168259*W60, - -1740124*W60, -10068269*W60, -18242*W60, -3013583*W60, - 580601*W60, -2547161*W60, -535689*W60, 2220815*W60, - 1285067*W60, 2806933*W60, -983086*W60, -1729097*W60, - -1162985*W60, -2561904*W60, 801988*W60, 244351*W60, - 1441893*W60, -7517981*W60, 271781*W60, -15021588*W60, - -2341588*W60, -919198*W60, 1642232*W60, 4771771*W60, - -1220099*W60, -3062372*W60, 628624*W60, 1278114*W60, - 13083513*W60, -10521925*W60, 3180310*W60, -1659307*W60, - 3543773*W60, 2501203*W60, 4151*W60, -340748*W60, - -2285625*W60, 2495202*W60 -}; - -const double __exp_atable[355] /* __attribute__((mode(DF))) */ = { - 0.707722561055888932371, /* 0x0.b52d4e46605c27ffd */ - 0.709106182438804188967, /* 0x0.b587fb96f75097ffb */ - 0.710492508843861281234, /* 0x0.b5e2d649899167ffd */ - 0.711881545564593931623, /* 0x0.b63dde74d36bdfffe */ - 0.713273297897442870573, /* 0x0.b699142f945f87ffc */ - 0.714667771153751463236, /* 0x0.b6f477909c4ea0001 */ - 0.716064970655995725059, /* 0x0.b75008aec758f8004 */ - 0.717464901723956938193, /* 0x0.b7abc7a0eea7e0002 */ - 0.718867569715736398602, /* 0x0.b807b47e1586c7ff8 */ - 0.720272979947266023271, /* 0x0.b863cf5d10e380003 */ - 0.721681137825144314297, /* 0x0.b8c01855195c37ffb */ - 0.723092048691992950199, /* 0x0.b91c8f7d213740004 */ - 0.724505717938892290800, /* 0x0.b97934ec5002d0007 */ - 0.725922150953176470431, /* 0x0.b9d608b9c92ea7ffc */ - 0.727341353138962865022, /* 0x0.ba330afcc29e98003 */ - 0.728763329918453162104, /* 0x0.ba903bcc8618b7ffc */ - 0.730188086709957051568, /* 0x0.baed9b40591ba0000 */ - 0.731615628948127705309, /* 0x0.bb4b296f931e30002 */ - 0.733045962086486091436, /* 0x0.bba8e671a05617ff9 */ - 0.734479091556371366251, /* 0x0.bc06d25dd49568001 */ - 0.735915022857225542529, /* 0x0.bc64ed4bce8f6fff9 */ - 0.737353761441304711410, /* 0x0.bcc33752f915d7ff9 */ - 0.738795312814142124419, /* 0x0.bd21b08af98e78005 */ - 0.740239682467211168593, /* 0x0.bd80590b65e9a8000 */ - 0.741686875913991849885, /* 0x0.bddf30ebec4a10000 */ - 0.743136898669507939299, /* 0x0.be3e38443c84e0007 */ - 0.744589756269486091620, /* 0x0.be9d6f2c1d32a0002 */ - 0.746045454254026796384, /* 0x0.befcd5bb59baf8004 */ - 0.747503998175051087583, /* 0x0.bf5c6c09ca84c0003 */ - 0.748965393601880857739, /* 0x0.bfbc322f5b18b7ff8 */ - 0.750429646104262104698, /* 0x0.c01c2843f776fffff */ - 0.751896761271877989160, /* 0x0.c07c4e5fa18b88002 */ - 0.753366744698445112140, /* 0x0.c0dca49a5fb18fffd */ - 0.754839601988627206827, /* 0x0.c13d2b0c444db0005 */ - 0.756315338768691947122, /* 0x0.c19de1cd798578006 */ - 0.757793960659406629066, /* 0x0.c1fec8f623723fffd */ - 0.759275473314173443536, /* 0x0.c25fe09e8a0f47ff8 */ - 0.760759882363831851927, /* 0x0.c2c128dedc88f8000 */ - 0.762247193485956486805, /* 0x0.c322a1cf7d6e7fffa */ - 0.763737412354726363781, /* 0x0.c3844b88cb9347ffc */ - 0.765230544649828092739, /* 0x0.c3e626232bd8f7ffc */ - 0.766726596071518051729, /* 0x0.c44831b719bf18002 */ - 0.768225572321911687194, /* 0x0.c4aa6e5d12d078001 */ - 0.769727479119219348810, /* 0x0.c50cdc2da64a37ffb */ - 0.771232322196981678892, /* 0x0.c56f7b41744490001 */ - 0.772740107296721268087, /* 0x0.c5d24bb1259e70004 */ - 0.774250840160724651565, /* 0x0.c6354d95640dd0007 */ - 0.775764526565368872643, /* 0x0.c6988106fec447fff */ - 0.777281172269557396602, /* 0x0.c6fbe61eb1bd0ffff */ - 0.778800783068235302750, /* 0x0.c75f7cf560942fffc */ - 0.780323364758801041312, /* 0x0.c7c345a3f1983fffe */ - 0.781848923151573727006, /* 0x0.c8274043594cb0002 */ - 0.783377464064598849602, /* 0x0.c88b6cec94b3b7ff9 */ - 0.784908993312207869935, /* 0x0.c8efcbb89cba27ffe */ - 0.786443516765346961618, /* 0x0.c9545cc0a88c70003 */ - 0.787981040257604625744, /* 0x0.c9b9201dc643bfffa */ - 0.789521569657452682047, /* 0x0.ca1e15e92a5410007 */ - 0.791065110849462849192, /* 0x0.ca833e3c1ae510005 */ - 0.792611669712891875319, /* 0x0.cae8992fd84667ffd */ - 0.794161252150049179450, /* 0x0.cb4e26ddbc207fff8 */ - 0.795713864077794763584, /* 0x0.cbb3e75f301b60003 */ - 0.797269511407239561694, /* 0x0.cc19dacd978cd8002 */ - 0.798828200086368567220, /* 0x0.cc8001427e55d7ffb */ - 0.800389937624300440456, /* 0x0.cce65ade24d360006 */ - 0.801954725261124767840, /* 0x0.cd4ce7a5de839fffb */ - 0.803522573691593189330, /* 0x0.cdb3a7c79a678fffd */ - 0.805093487311204114563, /* 0x0.ce1a9b563965ffffc */ - 0.806667472122675088819, /* 0x0.ce81c26b838db8000 */ - 0.808244534127439906441, /* 0x0.cee91d213f8428002 */ - 0.809824679342317166307, /* 0x0.cf50ab9144d92fff9 */ - 0.811407913793616542005, /* 0x0.cfb86dd5758c2ffff */ - 0.812994243520784198882, /* 0x0.d0206407c20e20005 */ - 0.814583674571603966162, /* 0x0.d0888e4223facfff9 */ - 0.816176213022088536960, /* 0x0.d0f0ec9eb3f7c8002 */ - 0.817771864936188586101, /* 0x0.d1597f377d6768002 */ - 0.819370636400374108252, /* 0x0.d1c24626a46eafff8 */ - 0.820972533518165570298, /* 0x0.d22b41865ff1e7ff9 */ - 0.822577562404315121269, /* 0x0.d2947170f32ec7ff9 */ - 0.824185729164559344159, /* 0x0.d2fdd60097795fff8 */ - 0.825797039949601741075, /* 0x0.d3676f4fb796d0001 */ - 0.827411500902565544264, /* 0x0.d3d13d78b5f68fffb */ - 0.829029118181348834154, /* 0x0.d43b40960546d8001 */ - 0.830649897953322891022, /* 0x0.d4a578c222a058000 */ - 0.832273846408250750368, /* 0x0.d50fe617a3ba78005 */ - 0.833900969738858188772, /* 0x0.d57a88b1218e90002 */ - 0.835531274148056613016, /* 0x0.d5e560a94048f8006 */ - 0.837164765846411529371, /* 0x0.d6506e1aac8078003 */ - 0.838801451086016225394, /* 0x0.d6bbb1204074e0001 */ - 0.840441336100884561780, /* 0x0.d72729d4c28518004 */ - 0.842084427144139224814, /* 0x0.d792d8530e12b0001 */ - 0.843730730487052604790, /* 0x0.d7febcb61273e7fff */ - 0.845380252404570153833, /* 0x0.d86ad718c308dfff9 */ - 0.847032999194574087728, /* 0x0.d8d727962c69d7fff */ - 0.848688977161248581090, /* 0x0.d943ae49621ce7ffb */ - 0.850348192619261200615, /* 0x0.d9b06b4d832ef8005 */ - 0.852010651900976245816, /* 0x0.da1d5ebdc22220005 */ - 0.853676361342631029337, /* 0x0.da8a88b555baa0006 */ - 0.855345327311054837175, /* 0x0.daf7e94f965f98004 */ - 0.857017556155879489641, /* 0x0.db6580a7c98f7fff8 */ - 0.858693054267390953857, /* 0x0.dbd34ed9617befff8 */ - 0.860371828028939855647, /* 0x0.dc4153ffc8b65fff9 */ - 0.862053883854957292436, /* 0x0.dcaf90368bfca8004 */ - 0.863739228154875360306, /* 0x0.dd1e0399328d87ffe */ - 0.865427867361348468455, /* 0x0.dd8cae435d303fff9 */ - 0.867119807911702289458, /* 0x0.ddfb9050b1cee8006 */ - 0.868815056264353846599, /* 0x0.de6aa9dced8448001 */ - 0.870513618890481399881, /* 0x0.ded9fb03db7320006 */ - 0.872215502247877139094, /* 0x0.df4983e1380657ff8 */ - 0.873920712852848668986, /* 0x0.dfb94490ffff77ffd */ - 0.875629257204025623884, /* 0x0.e0293d2f1cb01fff9 */ - 0.877341141814212965880, /* 0x0.e0996dd786fff0007 */ - 0.879056373217612985183, /* 0x0.e109d6a64f5d57ffc */ - 0.880774957955916648615, /* 0x0.e17a77b78e72a7ffe */ - 0.882496902590150900078, /* 0x0.e1eb5127722cc7ff8 */ - 0.884222213673356738383, /* 0x0.e25c63121fb0c8006 */ - 0.885950897802399772740, /* 0x0.e2cdad93ec5340003 */ - 0.887682961567391237685, /* 0x0.e33f30c925fb97ffb */ - 0.889418411575228162725, /* 0x0.e3b0ecce2d05ffff9 */ - 0.891157254447957902797, /* 0x0.e422e1bf727718006 */ - 0.892899496816652704641, /* 0x0.e4950fb9713fc7ffe */ - 0.894645145323828439008, /* 0x0.e50776d8b0e60fff8 */ - 0.896394206626591749641, /* 0x0.e57a1739c8fadfffc */ - 0.898146687421414902124, /* 0x0.e5ecf0f97c5798007 */ - 0.899902594367530173098, /* 0x0.e660043464e378005 */ - 0.901661934163603406867, /* 0x0.e6d3510747e150006 */ - 0.903424713533971135418, /* 0x0.e746d78f06cd97ffd */ - 0.905190939194458810123, /* 0x0.e7ba97e879c91fffc */ - 0.906960617885092856864, /* 0x0.e82e92309390b0007 */ - 0.908733756358986566306, /* 0x0.e8a2c6845544afffa */ - 0.910510361377119825629, /* 0x0.e9173500c8abc7ff8 */ - 0.912290439722343249336, /* 0x0.e98bddc30f98b0002 */ - 0.914073998177417412765, /* 0x0.ea00c0e84bc4c7fff */ - 0.915861043547953501680, /* 0x0.ea75de8db8094fffe */ - 0.917651582652244779397, /* 0x0.eaeb36d09d3137ffe */ - 0.919445622318405764159, /* 0x0.eb60c9ce4ed3dffff */ - 0.921243169397334638073, /* 0x0.ebd697a43995b0007 */ - 0.923044230737526172328, /* 0x0.ec4ca06fc7768fffa */ - 0.924848813220121135342, /* 0x0.ecc2e44e865b6fffb */ - 0.926656923710931002014, /* 0x0.ed39635df34e70006 */ - 0.928468569126343790092, /* 0x0.edb01dbbc2f5b7ffa */ - 0.930283756368834757725, /* 0x0.ee2713859aab57ffa */ - 0.932102492359406786818, /* 0x0.ee9e44d9342870004 */ - 0.933924784042873379360, /* 0x0.ef15b1d4635438005 */ - 0.935750638358567643520, /* 0x0.ef8d5a94f60f50007 */ - 0.937580062297704630580, /* 0x0.f0053f38f345cffff */ - 0.939413062815381727516, /* 0x0.f07d5fde3a2d98001 */ - 0.941249646905368053689, /* 0x0.f0f5bca2d481a8004 */ - 0.943089821583810716806, /* 0x0.f16e55a4e497d7ffe */ - 0.944933593864477061592, /* 0x0.f1e72b028a2827ffb */ - 0.946780970781518460559, /* 0x0.f2603cd9fb5430001 */ - 0.948631959382661205081, /* 0x0.f2d98b497d2a87ff9 */ - 0.950486566729423554277, /* 0x0.f353166f63e3dffff */ - 0.952344799896018723290, /* 0x0.f3ccde6a11ae37ffe */ - 0.954206665969085765512, /* 0x0.f446e357f66120000 */ - 0.956072172053890279009, /* 0x0.f4c12557964f0fff9 */ - 0.957941325265908139014, /* 0x0.f53ba48781046fffb */ - 0.959814132734539637840, /* 0x0.f5b66106555d07ffa */ - 0.961690601603558903308, /* 0x0.f6315af2c2027fffc */ - 0.963570739036113010927, /* 0x0.f6ac926b8aeb80004 */ - 0.965454552202857141381, /* 0x0.f728078f7c5008002 */ - 0.967342048278315158608, /* 0x0.f7a3ba7d66a908001 */ - 0.969233234469444204768, /* 0x0.f81fab543e1897ffb */ - 0.971128118008140250896, /* 0x0.f89bda33122c78007 */ - 0.973026706099345495256, /* 0x0.f9184738d4cf97ff8 */ - 0.974929006031422851235, /* 0x0.f994f284d3a5c0008 */ - 0.976835024947348973265, /* 0x0.fa11dc35bc7820002 */ - 0.978744770239899142285, /* 0x0.fa8f046b4fb7f8007 */ - 0.980658249138918636210, /* 0x0.fb0c6b449ab1cfff9 */ - 0.982575468959622777535, /* 0x0.fb8a10e1088fb7ffa */ - 0.984496437054508843888, /* 0x0.fc07f5602d79afffc */ - 0.986421160608523028820, /* 0x0.fc8618e0e55e47ffb */ - 0.988349647107594098099, /* 0x0.fd047b83571b1fffa */ - 0.990281903873210800357, /* 0x0.fd831d66f4c018002 */ - 0.992217938695037382475, /* 0x0.fe01fead3320bfff8 */ - 0.994157757657894713987, /* 0x0.fe811f703491e8006 */ - 0.996101369488558541238, /* 0x0.ff007fd5744490005 */ - 0.998048781093141101932, /* 0x0.ff801ffa9b9280007 */ - 1.000000000000000000000, /* 0x1.00000000000000000 */ - 1.001955033605393285965, /* 0x1.0080200565d29ffff */ - 1.003913889319761887310, /* 0x1.0100802aa0e80fff0 */ - 1.005876574715736104818, /* 0x1.01812090377240007 */ - 1.007843096764807100351, /* 0x1.020201541aad7fff6 */ - 1.009813464316352327214, /* 0x1.0283229c4c9820007 */ - 1.011787683565730677817, /* 0x1.030484836910a000e */ - 1.013765762469146736174, /* 0x1.0386272b9c077fffe */ - 1.015747708536026694351, /* 0x1.04080ab526304fff0 */ - 1.017733529475172815584, /* 0x1.048a2f412375ffff0 */ - 1.019723232714418781378, /* 0x1.050c94ef7ad5e000a */ - 1.021716825883923762690, /* 0x1.058f3be0f1c2d0004 */ - 1.023714316605201180057, /* 0x1.06122436442e2000e */ - 1.025715712440059545995, /* 0x1.06954e0fec63afff2 */ - 1.027721021151397406936, /* 0x1.0718b98f41c92fff6 */ - 1.029730250269221158939, /* 0x1.079c66d49bb2ffff1 */ - 1.031743407506447551857, /* 0x1.082056011a9230009 */ - 1.033760500517691527387, /* 0x1.08a487359ebd50002 */ - 1.035781537016238873464, /* 0x1.0928fa93490d4fff3 */ - 1.037806524719013578963, /* 0x1.09adb03b3e5b3000d */ - 1.039835471338248051878, /* 0x1.0a32a84e9e5760004 */ - 1.041868384612101516848, /* 0x1.0ab7e2eea5340ffff */ - 1.043905272300907460835, /* 0x1.0b3d603ca784f0009 */ - 1.045946142174331239262, /* 0x1.0bc3205a042060000 */ - 1.047991002016745332165, /* 0x1.0c4923682a086fffe */ - 1.050039859627715177527, /* 0x1.0ccf698898f3a000d */ - 1.052092722826109660856, /* 0x1.0d55f2dce5d1dfffb */ - 1.054149599440827866881, /* 0x1.0ddcbf86b09a5fff6 */ - 1.056210497317612961855, /* 0x1.0e63cfa7abc97fffd */ - 1.058275424318780855142, /* 0x1.0eeb23619c146fffb */ - 1.060344388322010722446, /* 0x1.0f72bad65714bffff */ - 1.062417397220589476718, /* 0x1.0ffa9627c38d30004 */ - 1.064494458915699715017, /* 0x1.1082b577d0eef0003 */ - 1.066575581342167566880, /* 0x1.110b18e893a90000a */ - 1.068660772440545025953, /* 0x1.1193c09c267610006 */ - 1.070750040138235936705, /* 0x1.121cacb4959befff6 */ - 1.072843392435016474095, /* 0x1.12a5dd543cf36ffff */ - 1.074940837302467588937, /* 0x1.132f529d59552000b */ - 1.077042382749654914030, /* 0x1.13b90cb250d08fff5 */ - 1.079148036789447484528, /* 0x1.14430bb58da3dfff9 */ - 1.081257807444460983297, /* 0x1.14cd4fc984c4a000e */ - 1.083371702785017154417, /* 0x1.1557d910df9c7000e */ - 1.085489730853784307038, /* 0x1.15e2a7ae292d30002 */ - 1.087611899742884524772, /* 0x1.166dbbc422d8c0004 */ - 1.089738217537583819804, /* 0x1.16f9157586772ffff */ - 1.091868692357631731528, /* 0x1.1784b4e533cacfff0 */ - 1.094003332327482702577, /* 0x1.18109a360fc23fff2 */ - 1.096142145591650907149, /* 0x1.189cc58b155a70008 */ - 1.098285140311341168136, /* 0x1.1929370751ea50002 */ - 1.100432324652149906842, /* 0x1.19b5eecdd79cefff0 */ - 1.102583706811727015711, /* 0x1.1a42ed01dbdba000e */ - 1.104739294993289488947, /* 0x1.1ad031c69a2eafff0 */ - 1.106899097422573863281, /* 0x1.1b5dbd3f66e120003 */ - 1.109063122341542140286, /* 0x1.1beb8f8fa8150000b */ - 1.111231377994659874592, /* 0x1.1c79a8dac6ad0fff4 */ - 1.113403872669181282605, /* 0x1.1d0809445a97ffffc */ - 1.115580614653132185460, /* 0x1.1d96b0effc9db000e */ - 1.117761612217810673898, /* 0x1.1e25a001332190000 */ - 1.119946873713312474002, /* 0x1.1eb4d69bdb2a9fff1 */ - 1.122136407473298902480, /* 0x1.1f4454e3bfae00006 */ - 1.124330221845670330058, /* 0x1.1fd41afcbb48bfff8 */ - 1.126528325196519908506, /* 0x1.2064290abc98c0001 */ - 1.128730725913251964394, /* 0x1.20f47f31c9aa7000f */ - 1.130937432396844410880, /* 0x1.21851d95f776dfff0 */ - 1.133148453059692917203, /* 0x1.2216045b6784efffa */ - 1.135363796355857157764, /* 0x1.22a733a6692ae0004 */ - 1.137583470716100553249, /* 0x1.2338ab9b3221a0004 */ - 1.139807484614418608939, /* 0x1.23ca6c5e27aadfff7 */ - 1.142035846532929888057, /* 0x1.245c7613b7f6c0004 */ - 1.144268564977221958089, /* 0x1.24eec8e06b035000c */ - 1.146505648458203463465, /* 0x1.258164e8cea85fff8 */ - 1.148747105501412235671, /* 0x1.26144a5180d380009 */ - 1.150992944689175123667, /* 0x1.26a7793f5de2efffa */ - 1.153243174560058870217, /* 0x1.273af1d712179000d */ - 1.155497803703682491111, /* 0x1.27ceb43d81d42fff1 */ - 1.157756840726344771440, /* 0x1.2862c097a3d29000c */ - 1.160020294239811677834, /* 0x1.28f7170a74cf4fff1 */ - 1.162288172883275239058, /* 0x1.298bb7bb0faed0004 */ - 1.164560485298402170388, /* 0x1.2a20a2ce920dffff4 */ - 1.166837240167474476460, /* 0x1.2ab5d86a4631ffff6 */ - 1.169118446164539637555, /* 0x1.2b4b58b36d5220009 */ - 1.171404112007080167155, /* 0x1.2be123cf786790002 */ - 1.173694246390975415341, /* 0x1.2c7739e3c0aac000d */ - 1.175988858069749065617, /* 0x1.2d0d9b15deb58fff6 */ - 1.178287955789017793514, /* 0x1.2da4478b627040002 */ - 1.180591548323240091978, /* 0x1.2e3b3f69fb794fffc */ - 1.182899644456603782686, /* 0x1.2ed282d76421d0004 */ - 1.185212252993012693694, /* 0x1.2f6a11f96c685fff3 */ - 1.187529382762033236513, /* 0x1.3001ecf60082ffffa */ - 1.189851042595508889847, /* 0x1.309a13f30f28a0004 */ - 1.192177241354644978669, /* 0x1.31328716a758cfff7 */ - 1.194507987909589896687, /* 0x1.31cb4686e1e85fffb */ - 1.196843291137896336843, /* 0x1.32645269dfd04000a */ - 1.199183159977805113226, /* 0x1.32fdaae604c39000f */ - 1.201527603343041317132, /* 0x1.339750219980dfff3 */ - 1.203876630171082595692, /* 0x1.3431424300e480007 */ - 1.206230249419600664189, /* 0x1.34cb8170b3fee000e */ - 1.208588470077065268869, /* 0x1.35660dd14dbd4fffc */ - 1.210951301134513435915, /* 0x1.3600e78b6bdfc0005 */ - 1.213318751604272271958, /* 0x1.369c0ec5c38ebfff2 */ - 1.215690830512196507537, /* 0x1.373783a718d29000f */ - 1.218067546930756250870, /* 0x1.37d3465662f480007 */ - 1.220448909901335365929, /* 0x1.386f56fa770fe0008 */ - 1.222834928513994334780, /* 0x1.390bb5ba5fc540004 */ - 1.225225611877684750397, /* 0x1.39a862bd3c7a8fff3 */ - 1.227620969111500981433, /* 0x1.3a455e2a37bcafffd */ - 1.230021009336254911271, /* 0x1.3ae2a8287dfbefff6 */ - 1.232425741726685064472, /* 0x1.3b8040df76f39fffa */ - 1.234835175450728295084, /* 0x1.3c1e287682e48fff1 */ - 1.237249319699482263931, /* 0x1.3cbc5f151b86bfff8 */ - 1.239668183679933477545, /* 0x1.3d5ae4e2cc0a8000f */ - 1.242091776620540377629, /* 0x1.3df9ba07373bf0006 */ - 1.244520107762172811399, /* 0x1.3e98deaa0d8cafffe */ - 1.246953186383919165383, /* 0x1.3f3852f32973efff0 */ - 1.249391019292643401078, /* 0x1.3fd816ffc72b90001 */ - 1.251833623164381181797, /* 0x1.40782b17863250005 */ - 1.254280999953110153911, /* 0x1.41188f42caf400000 */ - 1.256733161434815393410, /* 0x1.41b943b42945bfffd */ - 1.259190116985283935980, /* 0x1.425a4893e5f10000a */ - 1.261651875958665236542, /* 0x1.42fb9e0a2df4c0009 */ - 1.264118447754797758244, /* 0x1.439d443f608c4fff9 */ - 1.266589841787181258708, /* 0x1.443f3b5bebf850008 */ - 1.269066067469190262045, /* 0x1.44e183883e561fff7 */ - 1.271547134259576328224, /* 0x1.45841cecf7a7a0001 */ - 1.274033051628237434048, /* 0x1.462707b2c43020009 */ - 1.276523829025464573684, /* 0x1.46ca44023aa410007 */ - 1.279019475999373156531, /* 0x1.476dd2045d46ffff0 */ - 1.281520002043128991825, /* 0x1.4811b1e1f1f19000b */ - 1.284025416692967214122, /* 0x1.48b5e3c3edd74fff4 */ - 1.286535729509738823464, /* 0x1.495a67d3613c8fff7 */ - 1.289050950070396384145, /* 0x1.49ff3e396e19d000b */ - 1.291571087985403654081, /* 0x1.4aa4671f5b401fff1 */ - 1.294096152842774794011, /* 0x1.4b49e2ae56d19000d */ - 1.296626154297237043484, /* 0x1.4befb10fd84a3fff4 */ - 1.299161101984141142272, /* 0x1.4c95d26d41d84fff8 */ - 1.301701005575179204100, /* 0x1.4d3c46f01d9f0fff3 */ - 1.304245874766450485904, /* 0x1.4de30ec21097d0003 */ - 1.306795719266019562007, /* 0x1.4e8a2a0ccce3d0002 */ - 1.309350548792467483458, /* 0x1.4f3198fa10346fff5 */ - 1.311910373099227200545, /* 0x1.4fd95bb3be8cffffd */ - 1.314475201942565174546, /* 0x1.50817263bf0e5fffb */ - 1.317045045107389400535, /* 0x1.5129dd3418575000e */ - 1.319619912422941299109, /* 0x1.51d29c4f01c54ffff */ - 1.322199813675649204855, /* 0x1.527bafde83a310009 */ - 1.324784758729532718739, /* 0x1.5325180cfb8b3fffd */ - 1.327374757430096474625, /* 0x1.53ced504b2bd0fff4 */ - 1.329969819671041886272, /* 0x1.5478e6f02775e0001 */ - 1.332569955346704748651, /* 0x1.55234df9d8a59fff8 */ - 1.335175174370685002822, /* 0x1.55ce0a4c5a6a9fff6 */ - 1.337785486688218616860, /* 0x1.56791c1263abefff7 */ - 1.340400902247843806217, /* 0x1.57248376aef21fffa */ - 1.343021431036279800211, /* 0x1.57d040a420c0bfff3 */ - 1.345647083048053138662, /* 0x1.587c53c5a630f0002 */ - 1.348277868295411074918, /* 0x1.5928bd063fd7bfff9 */ - 1.350913796821875845231, /* 0x1.59d57c9110ad60006 */ - 1.353554878672557082439, /* 0x1.5a8292913d68cfffc */ - 1.356201123929036356254, /* 0x1.5b2fff3212db00007 */ - 1.358852542671913132777, /* 0x1.5bddc29edcc06fff3 */ - 1.361509145047255398051, /* 0x1.5c8bdd032ed16000f */ - 1.364170941142184734180, /* 0x1.5d3a4e8a5bf61fff4 */ - 1.366837941171020309735, /* 0x1.5de9176042f1effff */ - 1.369510155261156381121, /* 0x1.5e9837b062f4e0005 */ - 1.372187593620959988833, /* 0x1.5f47afa69436cfff1 */ - 1.374870266463378287715, /* 0x1.5ff77f6eb3f8cfffd */ - 1.377558184010425845733, /* 0x1.60a7a734a9742fff9 */ - 1.380251356531521533853, /* 0x1.6158272490016000c */ - 1.382949794301995272203, /* 0x1.6208ff6a8978a000f */ - 1.385653507605306700170, /* 0x1.62ba3032c0a280004 */ - 1.388362506772382154503, /* 0x1.636bb9a994784000f */ - 1.391076802081129493127, /* 0x1.641d9bfb29a7bfff6 */ - 1.393796403973427855412, /* 0x1.64cfd7545928b0002 */ - 1.396521322756352656542, /* 0x1.65826be167badfff8 */ - 1.399251568859207761660, /* 0x1.663559cf20826000c */ - 1.401987152677323100733, /* 0x1.66e8a14a29486fffc */ - 1.404728084651919228815, /* 0x1.679c427f5a4b6000b */ - 1.407474375243217723560, /* 0x1.68503d9ba0add000f */ - 1.410226034922914983815, /* 0x1.690492cbf6303fff9 */ - 1.412983074197955213304, /* 0x1.69b9423d7b548fff6 */ -}; diff --git a/libgcc-math/dbl-64/t_exp2.h b/libgcc-math/dbl-64/t_exp2.h deleted file mode 100644 index 1fd73338cf3..00000000000 --- a/libgcc-math/dbl-64/t_exp2.h +++ /dev/null @@ -1,585 +0,0 @@ -/* These values are accurate to 52+12 bits when represented as - a double. */ -static const double exp2_accuratetable[512] = { -0.707106781187802013759 /* 0x0.b504f333fb3f80007 */, -0.708064712808760599040 /* 0x0.b543baa0f71b38000 */, -0.709023942160304065938 /* 0x0.b58297d3a8d518002 */, -0.709984470998547667624 /* 0x0.b5c18ad39b4ba0001 */, -0.710946301084324217006 /* 0x0.b60093a85e8d30001 */, -0.711909434180505784637 /* 0x0.b63fb25984e628005 */, -0.712873872052760648733 /* 0x0.b67ee6eea3b5f8003 */, -0.713839616467838999908 /* 0x0.b6be316f518c98001 */, -0.714806669195984345523 /* 0x0.b6fd91e328d148007 */, -0.715775032009894562898 /* 0x0.b73d0851c69e20002 */, -0.716744706683768884058 /* 0x0.b77c94c2c9b3d0003 */, -0.717715694995770148178 /* 0x0.b7bc373dd52eb0003 */, -0.718687998724665488852 /* 0x0.b7fbefca8cd530004 */, -0.719661619652575468291 /* 0x0.b83bbe70981da8001 */, -0.720636559564428180758 /* 0x0.b87ba337a194b0006 */, -0.721612820246623098989 /* 0x0.b8bb9e27556508004 */, -0.722590403488338473025 /* 0x0.b8fbaf4762c798006 */, -0.723569311081411870036 /* 0x0.b93bd69f7be1d0000 */, -0.724549544820974333906 /* 0x0.b97c1437567828007 */, -0.725531106502312561633 /* 0x0.b9bc6816a87ae8002 */, -0.726513997924421062181 /* 0x0.b9fcd2452bee00000 */, -0.727498220889519875430 /* 0x0.ba3d52ca9e6148002 */, -0.728483777200401694265 /* 0x0.ba7de9aebe05c8003 */, -0.729470668664712662563 /* 0x0.babe96f94e62a8002 */, -0.730458897090379144517 /* 0x0.baff5ab2134df0004 */, -0.731448464287988597833 /* 0x0.bb4034e0d38ab0000 */, -0.732439372072965166897 /* 0x0.bb81258d5b2d60001 */, -0.733431622260458326859 /* 0x0.bbc22cbf75fd28001 */, -0.734425216668725511232 /* 0x0.bc034a7ef32c00001 */, -0.735420157118880535324 /* 0x0.bc447ed3a50fe0005 */, -0.736416445434497690674 /* 0x0.bc85c9c560b350001 */, -0.737414083433310718618 /* 0x0.bcc72b5bf4b4e0000 */, -0.738413072966152328496 /* 0x0.bd08a39f5417a8007 */, -0.739413415848264365956 /* 0x0.bd4a32974abcd0002 */, -0.740415113911250699637 /* 0x0.bd8bd84bb68300002 */, -0.741418168994518067562 /* 0x0.bdcd94c47ddd30003 */, -0.742422582936659858376 /* 0x0.be0f6809865968006 */, -0.743428357577745613238 /* 0x0.be515222b72530003 */, -0.744435494762383687126 /* 0x0.be935317fc6ba0002 */, -0.745443996335090397492 /* 0x0.bed56af1423de8001 */, -0.746453864145572798553 /* 0x0.bf1799b67a6248007 */, -0.747465100043933849969 /* 0x0.bf59df6f970e70002 */, -0.748477705883256683178 /* 0x0.bf9c3c248dbee8001 */, -0.749491683518965001732 /* 0x0.bfdeafdd568308000 */, -0.750507034813367890373 /* 0x0.c0213aa1f0fc38004 */, -0.751523761622240105153 /* 0x0.c063dc7a559ca0003 */, -0.752541865811731880422 /* 0x0.c0a6956e883ed8000 */, -0.753561349247157341600 /* 0x0.c0e965868bd220006 */, -0.754582213796583967110 /* 0x0.c12c4cca664cb8002 */, -0.755604461332336940791 /* 0x0.c16f4b42225350006 */, -0.756628093726406381068 /* 0x0.c1b260f5ca2c48002 */, -0.757653112855631305506 /* 0x0.c1f58ded6d72d8001 */, -0.758679520599333412360 /* 0x0.c238d2311e7d08001 */, -0.759707318837184453227 /* 0x0.c27c2dc8f00368005 */, -0.760736509456435783249 /* 0x0.c2bfa0bcfd1400000 */, -0.761767094336480043995 /* 0x0.c3032b155818d0000 */, -0.762799075372231349951 /* 0x0.c346ccda248cc0001 */, -0.763832454453522768941 /* 0x0.c38a8613805488005 */, -0.764867233473625618441 /* 0x0.c3ce56c98d1ca8005 */, -0.765903414329434539816 /* 0x0.c4123f04708d80002 */, -0.766940998920452976510 /* 0x0.c4563ecc532dc0001 */, -0.767979989148100838946 /* 0x0.c49a56295f9f88006 */, -0.769020386915772125040 /* 0x0.c4de8523c2b0a0001 */, -0.770062194131770905170 /* 0x0.c522cbc3ae94e0003 */, -0.771105412703856241146 /* 0x0.c5672a1154e6b8004 */, -0.772150044545352520777 /* 0x0.c5aba014ed5f18003 */, -0.773196091570364285606 /* 0x0.c5f02dd6b09288003 */, -0.774243555696622731700 /* 0x0.c634d35edb1260003 */, -0.775292438842697939641 /* 0x0.c67990b5aa5c18004 */, -0.776342742931542928455 /* 0x0.c6be65e360bed8000 */, -0.777394469888802008854 /* 0x0.c70352f0437f50004 */, -0.778447621641124243320 /* 0x0.c74857e498fd00006 */, -0.779502200118583399303 /* 0x0.c78d74c8ab5b60000 */, -0.780558207255445668515 /* 0x0.c7d2a9a4c959f8000 */, -0.781615644985491186966 /* 0x0.c817f681412f80002 */, -0.782674515247667956808 /* 0x0.c85d5b6666c150006 */, -0.783734819983036512536 /* 0x0.c8a2d85c904760003 */, -0.784796561133562109454 /* 0x0.c8e86d6c14f850002 */, -0.785859740645942328471 /* 0x0.c92e1a9d513ec8002 */, -0.786924360469767103536 /* 0x0.c973dff8a4b390007 */, -0.787990422552312885808 /* 0x0.c9b9bd866c6440007 */, -0.789057928854407064640 /* 0x0.c9ffb34f1444b0001 */, -0.790126881326406182996 /* 0x0.ca45c15afcc570001 */, -0.791197281930050233534 /* 0x0.ca8be7b292db38000 */, -0.792269132620954885659 /* 0x0.cad2265e3cbee8000 */, -0.793342435380726906957 /* 0x0.cb187d667d3d38006 */, -0.794417192158282659010 /* 0x0.cb5eecd3b33158006 */, -0.795493404931386649540 /* 0x0.cba574ae5d2e80001 */, -0.796571075671306805268 /* 0x0.cbec14fef2a348004 */, -0.797650206352955137846 /* 0x0.cc32cdcdef0000000 */, -0.798730798954342069432 /* 0x0.cc799f23d11d18000 */, -0.799812855456121796232 /* 0x0.ccc089091abb28004 */, -0.800896377841454287795 /* 0x0.cd078b86505c18003 */, -0.801981368096190028208 /* 0x0.cd4ea6a3f97720007 */, -0.803067828208752554378 /* 0x0.cd95da6aa057b8007 */, -0.804155760170129796375 /* 0x0.cddd26e2d21b28001 */, -0.805245165974338261710 /* 0x0.ce248c151f3330001 */, -0.806336047619038653883 /* 0x0.ce6c0a0a1c1350001 */, -0.807428407102107836855 /* 0x0.ceb3a0ca5d6be0006 */, -0.808522246427078927792 /* 0x0.cefb505e7e2550007 */, -0.809617567597010201484 /* 0x0.cf4318cf18a268002 */, -0.810714372621179513182 /* 0x0.cf8afa24ce1c98004 */, -0.811812663508675536069 /* 0x0.cfd2f4683f9810005 */, -0.812912442272482604912 /* 0x0.d01b07a2126188003 */, -0.814013710929394895825 /* 0x0.d06333daeff618001 */, -0.815116471495287542325 /* 0x0.d0ab791b80d028006 */, -0.816220725993571205593 /* 0x0.d0f3d76c75b330000 */, -0.817326476447408967199 /* 0x0.d13c4ed67f1cf8000 */, -0.818433724883006474832 /* 0x0.d184df6250e3b0001 */, -0.819542473330909460055 /* 0x0.d1cd8918a3a328004 */, -0.820652723822034690935 /* 0x0.d2164c02305fa0002 */, -0.821764478391968422618 /* 0x0.d25f2827b53fb0005 */, -0.822877739077315761840 /* 0x0.d2a81d91f188b8000 */, -0.823992507918612782109 /* 0x0.d2f12c49a8d290005 */, -0.825108786960634610365 /* 0x0.d33a5457a35e40003 */, -0.826226578247117093869 /* 0x0.d38395c4a84848007 */, -0.827345883828319528258 /* 0x0.d3ccf09985d958004 */, -0.828466705754248966560 /* 0x0.d41664df0a1320005 */, -0.829589046080638992111 /* 0x0.d45ff29e094330000 */, -0.830712906863802391671 /* 0x0.d4a999df585a20005 */, -0.831838290163696481037 /* 0x0.d4f35aabd04a60006 */, -0.832965198041969556729 /* 0x0.d53d350c4be258002 */, -0.834093632565442222342 /* 0x0.d5872909aba050007 */, -0.835223595802037643865 /* 0x0.d5d136acd138e8006 */, -0.836355089820669306292 /* 0x0.d61b5dfe9f7780004 */, -0.837488116698010487424 /* 0x0.d6659f0801afa8005 */, -0.838622678508982644113 /* 0x0.d6aff9d1e147d8004 */, -0.839758777333464490056 /* 0x0.d6fa6e652d19e0000 */, -0.840896415254110962690 /* 0x0.d744fccad70d00003 */, -0.842035594355151628676 /* 0x0.d78fa50bd2c3b0000 */, -0.843176316724478125433 /* 0x0.d7da673117e730007 */, -0.844318584453106590905 /* 0x0.d8254343a19038003 */, -0.845462399634695271912 /* 0x0.d870394c6dbf30003 */, -0.846607764365415071965 /* 0x0.d8bb49547d37c0004 */, -0.847754680744707056494 /* 0x0.d9067364d45608003 */, -0.848903150873708822763 /* 0x0.d951b7867953b0006 */, -0.850053176859071113491 /* 0x0.d99d15c2787a30006 */, -0.851204760807439786431 /* 0x0.d9e88e21de11a0003 */, -0.852357904828824897169 /* 0x0.da3420adba1508003 */, -0.853512611037803181642 /* 0x0.da7fcd6f2184d8005 */, -0.854668881550406100980 /* 0x0.dacb946f2afaf8000 */, -0.855826718478671755185 /* 0x0.db1775b6e8ad48000 */, -0.856986123964844970247 /* 0x0.db63714f8e0818006 */, -0.858147100114499461478 /* 0x0.dbaf87422625b8000 */, -0.859309649060962410524 /* 0x0.dbfbb797daa460002 */, -0.860473772936213743282 /* 0x0.dc480259d3a710001 */, -0.861639473872910177676 /* 0x0.dc9467913a0f48006 */, -0.862806754008130227807 /* 0x0.dce0e7473b9b28003 */, -0.863975615481124226159 /* 0x0.dd2d8185086c20006 */, -0.865146060433749419813 /* 0x0.dd7a3653d38168005 */, -0.866318091005120138881 /* 0x0.ddc705bcccd628000 */, -0.867491709362415264210 /* 0x0.de13efc9434100004 */, -0.868666917636779056818 /* 0x0.de60f4825df9b8005 */, -0.869843717989716047624 /* 0x0.deae13f16599c0003 */, -0.871022112578215268471 /* 0x0.defb4e1f9dc388002 */, -0.872202103559697183859 /* 0x0.df48a3164a92f0001 */, -0.873383693097737778847 /* 0x0.df9612deb6e878007 */, -0.874566883362160263365 /* 0x0.dfe39d82348310001 */, -0.875751676517234511901 /* 0x0.e031430a0f0688000 */, -0.876938074732511840819 /* 0x0.e07f037f97e548001 */, -0.878126080186539592654 /* 0x0.e0ccdeec2a75e0006 */, -0.879315695055312818168 /* 0x0.e11ad5591f4078001 */, -0.880506921518618312932 /* 0x0.e168e6cfd2f880004 */, -0.881699761760385225541 /* 0x0.e1b71359a6df60003 */, -0.882894217964411143207 /* 0x0.e2055afffc1178000 */, -0.884090292325693805080 /* 0x0.e253bdcc3ffbb8001 */, -0.885287987031581180559 /* 0x0.e2a23bc7d7a1d8002 */, -0.886487304278189114386 /* 0x0.e2f0d4fc31ab80004 */, -0.887688246263368285778 /* 0x0.e33f8972bea8a8005 */, -0.888890815189881999840 /* 0x0.e38e5934f49010007 */, -0.890095013257492739835 /* 0x0.e3dd444c460bd0007 */, -0.891300842677948068626 /* 0x0.e42c4ac232f380000 */, -0.892508305659222567226 /* 0x0.e47b6ca036f8b8005 */, -0.893717404414979710310 /* 0x0.e4caa9efd40e58002 */, -0.894928141160697743242 /* 0x0.e51a02ba8e2610007 */, -0.896140518115016826430 /* 0x0.e5697709ecab90000 */, -0.897354537501434679237 /* 0x0.e5b906e77c61d0006 */, -0.898570201543732793877 /* 0x0.e608b25cca5ba8005 */, -0.899787512470129891014 /* 0x0.e6587973688ce8002 */, -0.901006472512270728537 /* 0x0.e6a85c34ecadb8000 */, -0.902227083902570559127 /* 0x0.e6f85aaaed4f20006 */, -0.903449348881299796343 /* 0x0.e74874df09a530003 */, -0.904673269686823378091 /* 0x0.e798aadadecba0007 */, -0.905898848559668845585 /* 0x0.e7e8fca80c3ee0001 */, -0.907126087750156795426 /* 0x0.e8396a503c3fe0005 */, -0.908354989505901100354 /* 0x0.e889f3dd1615b0002 */, -0.909585556079328783087 /* 0x0.e8da9958465228007 */, -0.910817789726044213523 /* 0x0.e92b5acb7d0578001 */, -0.912051692703457872481 /* 0x0.e97c38406c3c30003 */, -0.913287267274154990210 /* 0x0.e9cd31c0cbb370001 */, -0.914524515702244578108 /* 0x0.ea1e475654d540000 */, -0.915763440256158633982 /* 0x0.ea6f790ac5cc78001 */, -0.917004043205012497909 /* 0x0.eac0c6e7dd8448007 */, -0.918246326823137892807 /* 0x0.eb1230f760a428007 */, -0.919490293387826285200 /* 0x0.eb63b7431714a8007 */, -0.920735945178816406225 /* 0x0.ebb559d4cb6f30007 */, -0.921983284479243714322 /* 0x0.ec0718b64c0940002 */, -0.923232313574974705626 /* 0x0.ec58f3f16a3910002 */, -0.924483034755387955725 /* 0x0.ecaaeb8ffb3168005 */, -0.925735450311948926408 /* 0x0.ecfcff9bd67078000 */, -0.926989562542820610982 /* 0x0.ed4f301edad1a0007 */, -0.928245373740515189457 /* 0x0.eda17d22e0f9b0001 */, -0.929502886213858126045 /* 0x0.edf3e6b1d37d40001 */, -0.930762102264245716494 /* 0x0.ee466cd594c5c8005 */, -0.932023024199046146183 /* 0x0.ee990f980dcdb0005 */, -0.933285654329454095216 /* 0x0.eeebcf032bc470007 */, -0.934549994971191289044 /* 0x0.ef3eab20e0d3c0001 */, -0.935816048439005676599 /* 0x0.ef91a3fb1e1340004 */, -0.937083817055075818404 /* 0x0.efe4b99bdcc618006 */, -0.938353303143720007819 /* 0x0.f037ec0d1889b8000 */, -0.939624509028518128972 /* 0x0.f08b3b58cc2bb8006 */, -0.940897437041863904384 /* 0x0.f0dea788fc2a90000 */, -0.942172089516254085427 /* 0x0.f13230a7ad21b8003 */, -0.943448468787511540534 /* 0x0.f185d6bee754e0006 */, -0.944726577195256100890 /* 0x0.f1d999d8b73478005 */, -0.946006417082291717338 /* 0x0.f22d79ff2cb130000 */, -0.947287990793413858827 /* 0x0.f281773c59ec48007 */, -0.948571300678290207925 /* 0x0.f2d5919a566268001 */, -0.949856349088629370320 /* 0x0.f329c9233bceb0001 */, -0.951143138379053731954 /* 0x0.f37e1de1272068002 */, -0.952431670908847949364 /* 0x0.f3d28fde3a6728006 */, -0.953721949039916472305 /* 0x0.f4271f249a93f0001 */, -0.955013975135367898520 /* 0x0.f47bcbbe6deab0001 */, -0.956307751564417496418 /* 0x0.f4d095b5e16638004 */, -0.957603280698967163097 /* 0x0.f5257d1524f590006 */, -0.958900564911197350604 /* 0x0.f57a81e668d628000 */, -0.960199606581278120057 /* 0x0.f5cfa433e60e50007 */, -0.961500408088936442422 /* 0x0.f624e407d527a0007 */, -0.962802971817578789903 /* 0x0.f67a416c72b760006 */, -0.964107300155846558292 /* 0x0.f6cfbc6c011458004 */, -0.965413395493874504368 /* 0x0.f7255510c439a8002 */, -0.966721260225105960572 /* 0x0.f77b0b6503c5b8006 */, -0.968030896745834645873 /* 0x0.f7d0df730a7940005 */, -0.969342307458006424716 /* 0x0.f826d145294be8003 */, -0.970655494764855020231 /* 0x0.f87ce0e5b29fd8000 */, -0.971970461071268720958 /* 0x0.f8d30e5efaa8f0004 */, -0.973287208789983648852 /* 0x0.f92959bb5e3c08001 */, -0.974605740331924708124 /* 0x0.f97fc305383028004 */, -0.975926058115625383329 /* 0x0.f9d64a46ebb9f8004 */, -0.977248164559556209435 /* 0x0.fa2cef8adbfc68004 */, -0.978572062087848637573 /* 0x0.fa83b2db7253d0007 */, -0.979897753126343307191 /* 0x0.fada944319fda0005 */, -0.981225240104636631254 /* 0x0.fb3193cc425870002 */, -0.982554525455618277276 /* 0x0.fb88b1815e61d0003 */, -0.983885611617111077747 /* 0x0.fbdfed6ce683e0007 */, -0.985218501026348891812 /* 0x0.fc3747995282f8006 */, -0.986553196127724962867 /* 0x0.fc8ec0112202a0005 */, -0.987889699367056062238 /* 0x0.fce656ded63710002 */, -0.989228013193998778636 /* 0x0.fd3e0c0cf48d50005 */, -0.990568140061241164686 /* 0x0.fd95dfa605c7b0003 */, -0.991910082424819927754 /* 0x0.fdedd1b4965710004 */, -0.993253842749249660216 /* 0x0.fe45e2433bfea0000 */, -0.994599423484053835071 /* 0x0.fe9e115c7c05f0005 */, -0.995946827107488830167 /* 0x0.fef65f0afb4c28006 */, -0.997296056085008264529 /* 0x0.ff4ecb59509cc8001 */, -0.998647112892057764479 /* 0x0.ffa756521dbfd0007 */, -1.000000000000000000000 /* 0x1.00000000000000000 */, -1.001354719891689004659 /* 0x1.0058c86da14aa0005 */, -1.002711275050312211844 /* 0x1.00b1afa5abead0003 */, -1.004069667960743483835 /* 0x1.010ab5b2cc0660009 */, -1.005429901112333324093 /* 0x1.0163da9fb2af30008 */, -1.006791976999887428009 /* 0x1.01bd1e7716f6a0008 */, -1.008155898118476168101 /* 0x1.02168143b03890006 */, -1.009521666967782227439 /* 0x1.027003103ae320002 */, -1.010889286051850133326 /* 0x1.02c9a3e7783030002 */, -1.012258757875921233497 /* 0x1.032363d42aaa8000e */, -1.013630084952214405194 /* 0x1.037d42e11c88d0000 */, -1.015003269791313389451 /* 0x1.03d741191635a0001 */, -1.016378314911229763267 /* 0x1.04315e86e84630008 */, -1.017755222831652872635 /* 0x1.048b9b35652800002 */, -1.019133996077934645224 /* 0x1.04e5f72f65827000b */, -1.020514637175266248212 /* 0x1.0540727fc1cfa0006 */, -1.021897148653734488385 /* 0x1.059b0d3157ebb0002 */, -1.023281533050062419584 /* 0x1.05f5c74f0cfeb0002 */, -1.024667792897328677539 /* 0x1.0650a0e3c22ee0003 */, -1.026055930738840826806 /* 0x1.06ab99fa63e1b0008 */, -1.027445949118511947550 /* 0x1.0706b29ddf2700009 */, -1.028837850584049418178 /* 0x1.0761ead9253ab0009 */, -1.030231637685799839262 /* 0x1.07bd42b72a3f80008 */, -1.031627312979383592802 /* 0x1.0818ba42e824a000c */, -1.033024879021186448496 /* 0x1.0874518759b0b0008 */, -1.034424338374263729911 /* 0x1.08d0088f80ffa0006 */, -1.035825693601787333992 /* 0x1.092bdf66604e30005 */, -1.037228947273990842283 /* 0x1.0987d617019cd000a */, -1.038634101961269928846 /* 0x1.09e3ecac6f199000f */, -1.040041160239590700707 /* 0x1.0a402331b91270002 */, -1.041450124688240164200 /* 0x1.0a9c79b1f37c3000b */, -1.042860997889083929381 /* 0x1.0af8f038352160000 */, -1.044273782427270314011 /* 0x1.0b5586cf986890006 */, -1.045688480893644856116 /* 0x1.0bb23d833dfbf0006 */, -1.047105095879385272564 /* 0x1.0c0f145e46e330007 */, -1.048523629981608529302 /* 0x1.0c6c0b6bdaadc000f */, -1.049944085800634585634 /* 0x1.0cc922b72470a000f */, -1.051366465939483019223 /* 0x1.0d265a4b5238b0007 */, -1.052790773004648849929 /* 0x1.0d83b23395e510002 */, -1.054217009607077093512 /* 0x1.0de12a7b263970006 */, -1.055645178360430591625 /* 0x1.0e3ec32d3cf680000 */, -1.057075281882416506511 /* 0x1.0e9c7c55184f5000e */, -1.058507322794714378170 /* 0x1.0efa55fdfad51000a */, -1.059941303721639416236 /* 0x1.0f58503329fed0003 */, -1.061377227289284297385 /* 0x1.0fb66affed37f0000 */, -1.062815096132297298980 /* 0x1.1014a66f95540000c */, -1.064254912884593951029 /* 0x1.1073028d725850007 */, -1.065696680185205469411 /* 0x1.10d17f64d9ea2000b */, -1.067140400676658718053 /* 0x1.11301d012586a0007 */, -1.068586077004890055886 /* 0x1.118edb6db26ab0003 */, -1.070033711820396415998 /* 0x1.11edbab5e2d6e000b */, -1.071483307775789262099 /* 0x1.124cbae51b5ef0001 */, -1.072934867526001312439 /* 0x1.12abdc06c3240000c */, -1.074388393734249103080 /* 0x1.130b1e264a62e0005 */, -1.075843889063253344684 /* 0x1.136a814f20ccd0003 */, -1.077301356179926061823 /* 0x1.13ca058cbaaed000b */, -1.078760797756675327056 /* 0x1.1429aaea9260e000e */, -1.080222216468626150775 /* 0x1.148971742537c0009 */, -1.081685614993597610617 /* 0x1.14e95934f37e8000b */, -1.083150996013011013776 /* 0x1.1549623881762000d */, -1.084618362213087383633 /* 0x1.15a98c8a58a6a000b */, -1.086087716284427351384 /* 0x1.1609d8360768c0008 */, -1.087559060917626885283 /* 0x1.166a45471c13f0008 */, -1.089032398810997337465 /* 0x1.16cad3c92d7b50009 */, -1.090507732647478578212 /* 0x1.172b83c7c18b5000f */, -1.091985065182095926460 /* 0x1.178c554ead72a000c */, -1.093464399073070136880 /* 0x1.17ed48695befe000c */, -1.094945737045367906172 /* 0x1.184e5d23812500007 */, -1.096429081816546080591 /* 0x1.18af9388c90e40005 */, -1.097914436104650892651 /* 0x1.1910eba4e031a0001 */, -1.099401802629782043408 /* 0x1.19726583755720003 */, -1.100891184121537858001 /* 0x1.19d4013041b860007 */, -1.102382583308144647940 /* 0x1.1a35beb6fd0cd0007 */, -1.103876002922312915544 /* 0x1.1a979e2363fa10000 */, -1.105371445702084232160 /* 0x1.1af99f8139025000e */, -1.106868914387219016199 /* 0x1.1b5bc2dc408b9000e */, -1.108368411723785085252 /* 0x1.1bbe084045eb30002 */, -1.109869940458469095340 /* 0x1.1c206fb91524c000e */, -1.111373503344554869449 /* 0x1.1c82f952817cc0001 */, -1.112879103137133007859 /* 0x1.1ce5a51860344000f */, -1.114386742595953938610 /* 0x1.1d4873168babf000e */, -1.115896424484008608911 /* 0x1.1dab6358e1d4a000f */, -1.117408151567338414664 /* 0x1.1e0e75eb43f9c000c */, -1.118921926613465345265 /* 0x1.1e71aad995078000f */, -1.120437752409564780022 /* 0x1.1ed5022fcd8600003 */, -1.121955631720569668277 /* 0x1.1f387bf9cd88b0000 */, -1.123475567332998359439 /* 0x1.1f9c18438cdec000a */, -1.124997562033035469759 /* 0x1.1fffd71902f970002 */, -1.126521618608448571713 /* 0x1.2063b88629079000e */, -1.128047739853580200284 /* 0x1.20c7bc96ff72a0002 */, -1.129575928566289189112 /* 0x1.212be3578a81e0006 */, -1.131106187546149888259 /* 0x1.21902cd3d05f70007 */, -1.132638519598779369743 /* 0x1.21f49917ddda5000c */, -1.134172927531616359481 /* 0x1.2259282fc1c24000e */, -1.135709414157753949251 /* 0x1.22bdda27911e90007 */, -1.137247982292643566662 /* 0x1.2322af0b638e60007 */, -1.138788634756517259562 /* 0x1.2387a6e755f270000 */, -1.140331374372893558110 /* 0x1.23ecc1c788c890006 */, -1.141876203969685699176 /* 0x1.2451ffb821639000c */, -1.143423126377846266197 /* 0x1.24b760c5486dc0009 */, -1.144972144431494420774 /* 0x1.251ce4fb2a0cc0005 */, -1.146523260971646252006 /* 0x1.25828c65f9fb8000d */, -1.148076478839068270690 /* 0x1.25e85711ebaeb0000 */, -1.149631800883562204903 /* 0x1.264e450b3c8a30008 */, -1.151189229953253789786 /* 0x1.26b4565e281a20003 */, -1.152748768902654319399 /* 0x1.271a8b16f0f000002 */, -1.154310420590433317050 /* 0x1.2780e341de2fc0001 */, -1.155874187878668246681 /* 0x1.27e75eeb3abc90007 */, -1.157440073633736243899 /* 0x1.284dfe1f5633e000a */, -1.159008080725518974322 /* 0x1.28b4c0ea840d90001 */, -1.160578212048386514965 /* 0x1.291ba75932ae60000 */, -1.162150470417516290340 /* 0x1.2982b177796850008 */, -1.163724858777502646494 /* 0x1.29e9df51fdd900001 */, -1.165301379991388053320 /* 0x1.2a5130f50bf34000e */, -1.166880036952526289469 /* 0x1.2ab8a66d10fdc0008 */, -1.168460832550151540268 /* 0x1.2b203fc675b7a000a */, -1.170043769683112966389 /* 0x1.2b87fd0dad7260008 */, -1.171628851252754177681 /* 0x1.2befde4f2e3da000d */, -1.173216080163546060084 /* 0x1.2c57e397719940002 */, -1.174805459325657830448 /* 0x1.2cc00cf2f7491000c */, -1.176396991650083379037 /* 0x1.2d285a6e3ff90000b */, -1.177990680055698513602 /* 0x1.2d90cc15d4ff90005 */, -1.179586527463262646306 /* 0x1.2df961f641c57000c */, -1.181184536796979545103 /* 0x1.2e621c1c157cd000d */, -1.182784710984701836994 /* 0x1.2ecafa93e35af0004 */, -1.184387052960675701386 /* 0x1.2f33fd6a459cb0000 */, -1.185991565661414393112 /* 0x1.2f9d24abd8fd1000e */, -1.187598252026902612178 /* 0x1.300670653e083000a */, -1.189207115003001469262 /* 0x1.306fe0a31bc040008 */, -1.190818157535919796833 /* 0x1.30d9757219895000e */, -1.192431382587621380206 /* 0x1.31432edef01a1000f */, -1.194046793097208292195 /* 0x1.31ad0cf63f0630008 */, -1.195664392040319823392 /* 0x1.32170fc4ce0db000c */, -1.197284182375793593084 /* 0x1.32813757527750005 */, -1.198906167074650808198 /* 0x1.32eb83ba8eef3000f */, -1.200530349107333139048 /* 0x1.3355f4fb457e5000d */, -1.202156731453099647353 /* 0x1.33c08b2641df9000c */, -1.203785317090505513368 /* 0x1.342b46484f07b0005 */, -1.205416109005122526928 /* 0x1.3496266e3fa270005 */, -1.207049110184904572310 /* 0x1.35012ba4e8fa10000 */, -1.208684323627194912036 /* 0x1.356c55f92aabb0004 */, -1.210321752322854882437 /* 0x1.35d7a577dd33f0004 */, -1.211961399276747286580 /* 0x1.36431a2de8748000d */, -1.213603267492579629347 /* 0x1.36aeb4283309e000c */, -1.215247359985374142610 /* 0x1.371a7373b00160000 */, -1.216893679753690671322 /* 0x1.3786581d404e90000 */, -1.218542229828181611183 /* 0x1.37f26231e82e4000c */, -1.220193013225231215567 /* 0x1.385e91be9c2d20002 */, -1.221846032973555429280 /* 0x1.38cae6d05e66f0000 */, -1.223501292099485437962 /* 0x1.393761742e5830001 */, -1.225158793636904830441 /* 0x1.39a401b713cb3000e */, -1.226818540625497444577 /* 0x1.3a10c7a61ceae0007 */, -1.228480536107136034131 /* 0x1.3a7db34e5a4a50003 */, -1.230144783126481566885 /* 0x1.3aeac4bcdf8d60001 */, -1.231811284734168454619 /* 0x1.3b57fbfec6e950008 */, -1.233480043984379381835 /* 0x1.3bc559212e7a2000f */, -1.235151063936380300149 /* 0x1.3c32dc3139f2a0004 */, -1.236824347652524913647 /* 0x1.3ca0853c106ac000e */, -1.238499898199571624970 /* 0x1.3d0e544eddd240003 */, -1.240177718649636107175 /* 0x1.3d7c4976d3fcd0000 */, -1.241857812073360767273 /* 0x1.3dea64c1231f70004 */, -1.243540181554270152039 /* 0x1.3e58a63b099920005 */, -1.245224830175077013244 /* 0x1.3ec70df1c4e46000e */, -1.246911761022835740725 /* 0x1.3f359bf29741c000e */, -1.248600977188942806639 /* 0x1.3fa4504ac7b800009 */, -1.250292481770148400634 /* 0x1.40132b07a330d000a */, -1.251986277866492969263 /* 0x1.40822c367a340000b */, -1.253682368581898742876 /* 0x1.40f153e4a18e0000d */, -1.255380757024939564249 /* 0x1.4160a21f73289000d */, -1.257081446308726757662 /* 0x1.41d016f44deaa000c */, -1.258784439550028944083 /* 0x1.423fb27094c090008 */, -1.260489739869405489991 /* 0x1.42af74a1aec1c0006 */, -1.262197350394008266193 /* 0x1.431f5d950a453000c */, -1.263907274252603851764 /* 0x1.438f6d58176860004 */, -1.265619514578811388761 /* 0x1.43ffa3f84b9eb000d */, -1.267334074511444086425 /* 0x1.44700183221180008 */, -1.269050957191869555296 /* 0x1.44e0860618b930006 */, -1.270770165768063009230 /* 0x1.4551318eb4d20000e */, -1.272491703389059036805 /* 0x1.45c2042a7cc26000b */, -1.274215573211836316547 /* 0x1.4632fde6ffacd000d */, -1.275941778396075143580 /* 0x1.46a41ed1cfac40001 */, -1.277670322103555911043 /* 0x1.471566f8812ac0000 */, -1.279401207505722393185 /* 0x1.4786d668b33260005 */, -1.281134437771823675369 /* 0x1.47f86d3002637000a */, -1.282870016078732078362 /* 0x1.486a2b5c13c00000e */, -1.284607945607987078432 /* 0x1.48dc10fa916bd0004 */, -1.286348229545787758022 /* 0x1.494e1e192aaa30007 */, -1.288090871080605159846 /* 0x1.49c052c5913df000c */, -1.289835873406902644341 /* 0x1.4a32af0d7d8090002 */, -1.291583239722392528754 /* 0x1.4aa532feab5e10002 */, -1.293332973229098792374 /* 0x1.4b17dea6db8010008 */, -1.295085077135345708087 /* 0x1.4b8ab213d57d9000d */, -1.296839554650994097442 /* 0x1.4bfdad53629e10003 */, -1.298596408992440220988 /* 0x1.4c70d0735358a000d */, -1.300355643380135983739 /* 0x1.4ce41b817c99e0001 */, -1.302117261036232376282 /* 0x1.4d578e8bb52cb0003 */, -1.303881265192249561154 /* 0x1.4dcb299fde2920008 */, -1.305647659079073541490 /* 0x1.4e3eeccbd7f4c0003 */, -1.307416445934474813521 /* 0x1.4eb2d81d8a86f000b */, -1.309187629001237640529 /* 0x1.4f26eba2e35a5000e */, -1.310961211525240921493 /* 0x1.4f9b2769d35090009 */, -1.312737196755087820678 /* 0x1.500f8b804e4a30000 */, -1.314515587949291131086 /* 0x1.508417f4530d00009 */, -1.316296388365203462468 /* 0x1.50f8ccd3df1840003 */, -1.318079601265708777911 /* 0x1.516daa2cf60020002 */, -1.319865229921343141607 /* 0x1.51e2b00da3c2b0007 */, -1.321653277603506371251 /* 0x1.5257de83f5512000d */, -1.323443747588034513690 /* 0x1.52cd359dfc7d5000e */, -1.325236643161341820781 /* 0x1.5342b569d6baa000f */, -1.327031967602244177939 /* 0x1.53b85df59921b0000 */, -1.328829724206201046165 /* 0x1.542e2f4f6b17e0006 */, -1.330629916266568235675 /* 0x1.54a4298571b27000e */, -1.332432547083447937938 /* 0x1.551a4ca5d97190009 */, -1.334237619959296017340 /* 0x1.559098bed16bf0008 */, -1.336045138203900251029 /* 0x1.56070dde90c800000 */, -1.337855105129210686631 /* 0x1.567dac13510cd0009 */, -1.339667524053662184301 /* 0x1.56f4736b52e2c000c */, -1.341482398296830025383 /* 0x1.576b63f4d8333000f */, -1.343299731186792467254 /* 0x1.57e27dbe2c40e0003 */, -1.345119526053918823702 /* 0x1.5859c0d59cd37000f */, -1.346941786233264881662 /* 0x1.58d12d497cd9a0005 */, -1.348766515064854010261 /* 0x1.5948c32824b87000c */, -1.350593715891792223641 /* 0x1.59c0827ff03890007 */, -1.352423392064920459908 /* 0x1.5a386b5f43a3e0006 */, -1.354255546937278120764 /* 0x1.5ab07dd485af1000c */, -1.356090183865519494030 /* 0x1.5b28b9ee21085000f */, -1.357927306213322804534 /* 0x1.5ba11fba8816e000b */, -1.359766917346459269620 /* 0x1.5c19af482f8f2000f */, -1.361609020638567812980 /* 0x1.5c9268a594cc00004 */, -1.363453619463660171403 /* 0x1.5d0b4be135916000c */, -1.365300717204201985683 /* 0x1.5d84590998eeb0005 */, -1.367150317245710233754 /* 0x1.5dfd902d494e40001 */, -1.369002422974674892971 /* 0x1.5e76f15ad22c40008 */, -1.370857037789471544224 /* 0x1.5ef07ca0cc166000b */, -1.372714165088220639199 /* 0x1.5f6a320dcf5280006 */, -1.374573808273481745378 /* 0x1.5fe411b0790800009 */, -1.376435970755022220096 /* 0x1.605e1b976e4b1000e */, -1.378300655944092456600 /* 0x1.60d84fd155d15000e */, -1.380167867259843417228 /* 0x1.6152ae6cdf0030003 */, -1.382037608124419003675 /* 0x1.61cd3778bc879000d */, -1.383909881963391264069 /* 0x1.6247eb03a4dc40009 */, -1.385784692209972801544 /* 0x1.62c2c91c56d9b0002 */, -1.387662042298923203992 /* 0x1.633dd1d1930ec0001 */, -1.389541935670444372533 /* 0x1.63b90532200630004 */, -1.391424375772021271329 /* 0x1.6434634ccc4cc0007 */, -1.393309366052102982208 /* 0x1.64afec30677e90008 */, -1.395196909966106124701 /* 0x1.652b9febc8e0f000d */, -1.397087010973788290271 /* 0x1.65a77e8dcc7f10004 */, -1.398979672539331309267 /* 0x1.66238825534170000 */, -1.400874898129892187656 /* 0x1.669fbcc1415600008 */, -1.402772691220124823310 /* 0x1.671c1c708328e000a */, -1.404673055288671035301 /* 0x1.6798a7420988b000d */, -1.406575993818903302975 /* 0x1.68155d44ca77a000f */, -1.408481510297352468121 /* 0x1.68923e87bf70e000a */, -1.410389608216942924956 /* 0x1.690f4b19e8f74000c */, -1.412300291075172076232 /* 0x1.698c830a4c94c0008 */ -}; -#define S (1.0/4503599627370496.0) /* 2^-52 */ -static const float exp2_deltatable[512] = { - 11527*S, -963*S, 884*S, -781*S, -2363*S, -3441*S, 123*S, 526*S, - -6*S, 1254*S, -1138*S, 1519*S, 1576*S, -65*S, 1040*S, 793*S, - -1662*S, -5063*S, -387*S, 968*S, -941*S, 984*S, -2856*S, -545*S, - 495*S, -5246*S, -2109*S, 1281*S, 2075*S, 909*S, -1642*S,-78233*S, --31653*S, -265*S, 130*S, 430*S, 2482*S, -742*S, 1616*S, -2213*S, - -519*S, 20*S, -3134*S,-13981*S, 1343*S, -1740*S, 247*S, 1679*S, - -1097*S, 3131*S, 871*S, -1480*S, 1936*S, -1827*S, 17325*S, 528*S, - -322*S, 1404*S, -152*S, -1845*S, -212*S, 2639*S, -476*S, 2960*S, - -962*S, -1012*S, -1231*S, 3030*S, 1659*S, -486*S, 2154*S, 1728*S, - -2793*S, 699*S, -1560*S, -2125*S, 2156*S, 142*S, -1888*S, 4426*S, --13443*S, 1970*S, -50*S, 1771*S,-43399*S, 4979*S, -2448*S, -370*S, - 1414*S, 1075*S, 232*S, 206*S, 873*S, 2141*S, 2970*S, 1279*S, - -2331*S, 336*S, -2595*S, 753*S, -3384*S, -616*S, 89*S, -818*S, - 5755*S, -241*S, -528*S, -661*S, -3777*S, -354*S, 250*S, 3881*S, - 2632*S, -2131*S, 2565*S, -316*S, 1746*S, -2541*S, -1324*S, -50*S, - 2564*S, -782*S, 1176*S, 6452*S, -1002*S, 1288*S, 336*S, -185*S, - 3063*S, 3784*S, 2169*S, 686*S, 328*S, -400*S, 312*S, -4517*S, - -1457*S, 1046*S, -1530*S, -685*S, 1328*S,-49815*S, -895*S, 1063*S, - -2091*S, -672*S, -1710*S, -665*S, 1545*S, 1819*S,-45265*S, 3548*S, - -554*S, -568*S, 4752*S, -1907*S,-13738*S, 675*S, 9611*S, -1115*S, - -815*S, 408*S, -1281*S, -937*S,-16376*S, -4772*S, -1440*S, 992*S, - 788*S, 10364*S, -1602*S, -661*S, -1783*S, -265*S, -20*S, -3781*S, - -861*S, -345*S, -994*S, 1364*S, -5339*S, 1620*S, 9390*S, -1066*S, - -305*S, -170*S, 175*S, 2461*S, -490*S, -769*S, -1450*S, 3315*S, - 2418*S, -45*S, -852*S, -1295*S, -488*S, -96*S, 1142*S, -2639*S, - 7905*S, -9306*S, -3859*S, 760*S, 1057*S, -1570*S, 3977*S, 209*S, - -514*S, 7151*S, 1646*S, 627*S, 599*S, -774*S, -1468*S, 633*S, - -473*S, 851*S, 2406*S, 143*S, 74*S, 4260*S, 1177*S, -913*S, - 2670*S, -3298*S, -1662*S, -120*S, -3264*S, -2148*S, 410*S, 2078*S, - -2098*S, -926*S, 3580*S, -1289*S, 2450*S, -1158*S, 907*S, -590*S, - 986*S, 1801*S, 1145*S, -1677*S, 3455*S, 956*S, 710*S, 144*S, - 153*S, -255*S, -1898*S, 28102*S, 2748*S, 1194*S, -3009*S, 7076*S, - 0*S, -2720*S, 711*S, 1225*S, -3034*S, -473*S, 378*S, -1046*S, - 962*S, -2006*S, 4647*S, 3206*S, 1769*S, -2665*S, 1254*S, 2025*S, - -2430*S, 6193*S, 1224*S, -856*S, -1592*S, -325*S, -1521*S, 1827*S, - -264*S, 2403*S, -1065*S, 967*S, -681*S, -2106*S, -474*S, 1333*S, - -893*S, 2296*S, 592*S, -1220*S, -326*S, 990*S, 139*S, 206*S, - -779*S, -1683*S, 1238*S, 6098*S, 136*S, 1197*S, 790*S, -107*S, - -1004*S, -2449*S, 939*S, 5568*S, 156*S, 1812*S, 2792*S, -1094*S, - -2677*S, -251*S, 2297*S, 943*S, -1329*S, 2883*S, -853*S, -2626*S, --105929*S, -6552*S, 1095*S, -1508*S, 1003*S, 5039*S, -2600*S, -749*S, - 1790*S, 890*S, 2016*S, -1073*S, 624*S, -2084*S, -1536*S, -1330*S, - 358*S, 2444*S, -179*S,-25759*S, -243*S, -552*S, -124*S, 3766*S, - 1192*S, -1614*S, 6*S, -1227*S, 345*S, -981*S, -295*S, -1006*S, - -995*S, -1195*S, 706*S, 2512*S, -1758*S, -734*S, -6286*S, -922*S, - 1530*S, 1542*S, 1223*S, 61*S, -83*S, 522*S,116937*S, -914*S, - -418*S, -7339*S, 249*S, -520*S, -762*S, 426*S, -505*S, 2664*S, - -1093*S, -1035*S, 2130*S, 4878*S, 1982*S, 1551*S, 2304*S, 193*S, - 1532*S, -7268*S, 24357*S, 531*S, 2676*S, -1170*S, 1465*S, -1917*S, - 2143*S, 1466*S, -7*S, -7300*S, 3297*S, -1197*S, -289*S, -1548*S, - 26226*S, 4401*S, 4123*S, -1588*S, 4243*S, 4069*S, -1276*S, -2010*S, - 1407*S, 1478*S, 488*S, -2366*S, -2909*S, -2534*S, -1285*S, 7095*S, - -645*S, -2089*S, -944*S, -40*S, -1363*S, -833*S, 917*S, 1609*S, - 1286*S, 1677*S, 1613*S, -2295*S, -1248*S, 40*S, 26*S, 2038*S, - 698*S, 2675*S, -1755*S, -3522*S, -1614*S, -6111*S, 270*S, 1822*S, - -234*S, -2844*S, -1201*S, -830*S, 1193*S, 2354*S, 47*S, 1522*S, - -78*S, -640*S, 2425*S, -1596*S, 1563*S, 1169*S, -1006*S, -83*S, - 2362*S, -3521*S, -314*S, 1814*S, -1751*S, 305*S, 1715*S, -3741*S, - 7847*S, 1291*S, 1206*S, 36*S, 1397*S, -1419*S, -1194*S, -2014*S, - 1742*S, -578*S, -207*S, 875*S, 1539*S, 2826*S, -1165*S, -909*S, - 1849*S, 927*S, 2018*S, -981*S, 1637*S, -463*S, 905*S, 6618*S, - 400*S, 630*S, 2614*S, 900*S, 2323*S, -1094*S, -1858*S, -212*S, - -2069*S, 747*S, 1845*S, -1450*S, 444*S, -213*S, -438*S, 1158*S, - 4738*S, 2497*S, -370*S, -2016*S, -518*S, -1160*S, -1510*S, 123*S -}; -/* Maximum magnitude in above table: 116937 */ -#undef S diff --git a/libgcc-math/dbl-64/uasncs.h b/libgcc-math/dbl-64/uasncs.h deleted file mode 100644 index 69fbb58a50f..00000000000 --- a/libgcc-math/dbl-64/uasncs.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/******************************************************************/ -/* */ -/* MODULE_NAME:uasncs.h */ -/* */ -/* common data and variables prototype and definition */ -/******************************************************************/ - -#ifndef UANSNCS_H -#define UANSNCS_H - -#ifdef BIG_ENDI - static const mynumber -/**/ a1 = {{0x3FC55580, 0x00000000 }}, /* 0.1666717529296875 */ -/**/ a2 = {{0xBED55555, 0x55552330 }}, /* -5.0862630208224597e-06 */ -/**/ hp0 = {{0x3FF921FB, 0x54442D18 }}, /* 1.5707963267948966 */ -/**/ hp1 = {{0x3C91A626, 0x33145C07 }}; /* 6.123233995736766e-17 */ - -#else -#ifdef LITTLE_ENDI - static const mynumber -/**/ a1 = {{0x00000000, 0x3FC55580 }}, /* 0.1666717529296875 */ -/**/ a2 = {{0x55552330, 0xBED55555 }}, /* -5.0862630208224597e-06 */ -/**/ hp0 = {{0x54442D18, 0x3FF921FB }}, /* 1.5707963267948966 */ -/**/ hp1 = {{0x33145C07, 0x3C91A626 }}; /* 6.123233995736766e-17 */ - -#endif -#endif - -static const double - f1 = 1.66666666666664110590506577996662E-01, - f2 = 7.50000000026122686814431784722623E-02, - f3 = 4.46428561421059750978517350006940E-02, - f4 = 3.03821268582119319911193410625235E-02, - f5 = 2.23551211026525610742786300334557E-02, - f6 = 1.81382903404565056280372531963613E-02; -static const double - c2 = 0.74999999999985410757087492918602258E-01, - c3 = 0.44642857150311968932423372477866076E-01, - c4 = 0.30381942574778615766200591683810471E-01, - c5 = 0.22372413472984868331447708777000650E-01, - c6 = 0.17333630246451830686009693735025490E-01, - c7 = 0.14710362893628210269950864741085777E-01; - -static const double big = 103079215104.0, t24 = 16777216.0, t27 = 134217728.0; -static const double - rt0 = 9.99999999859990725855365213134618E-01, - rt1 = 4.99999999495955425917856814202739E-01, - rt2 = 3.75017500867345182581453026130850E-01, - rt3 = 3.12523626554518656309172508769531E-01; -#endif diff --git a/libgcc-math/dbl-64/uatan.tbl b/libgcc-math/dbl-64/uatan.tbl deleted file mode 100644 index 5b4b5f27ae7..00000000000 --- a/libgcc-math/dbl-64/uatan.tbl +++ /dev/null @@ -1,11135 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/****************************************************************/ -/* TABLES FOR THE uatan() FUNCTION */ -/****************************************************************/ - -#include "endian.h" - -#ifdef BIG_ENDI - - static const number - cij[241][7] = { /* x0,cij for (1/16,1) */ -/**/ {{{0X3FB04006, 0X65E0244E} }, -/**/ {{0X3FB03A73, 0X7B53DD20} }, -/**/ {{0X3FEFDF1F, 0XCF5CFB72} }, -/**/ {{0XBFB01EB3, 0XCE2AE4C2} }, -/**/ {{0XBFD4D29E, 0XDD58A40D} }, -/**/ {{0X3FAFDA4A, 0XD907A18A} }, -/**/ {{0X3FC814DF, 0X4DF65B18} } }, -/**/ {{{0X3FB0FFFD, 0XB9B88CD8} }, -/**/ {{0X3FB0F99C, 0X63645300} }, -/**/ {{0X3FEFDC08, 0XA3DED30F} }, -/**/ {{0XBFB0D9DC, 0X669C1AED} }, -/**/ {{0XBFD4C669, 0XF7138DE2} }, -/**/ {{0X3FB0A12F, 0X29D085A7} }, -/**/ {{0X3FC7F0EE, 0XCFD48D20} } }, -/**/ {{{0X3FB1FFF1, 0X5A73D4F1} }, -/**/ {{0X3FB1F85F, 0X2BEE2040} }, -/**/ {{0X3FEFD7B3, 0X42B56D31} }, -/**/ {{0XBFB1D2B7, 0XB69DEA40} }, -/**/ {{0XBFD4B552, 0X3922ECC9} }, -/**/ {{0X3FB18F93, 0X522B1A04} }, -/**/ {{0X3FC7BEAD, 0X5660F061} } }, -/**/ {{{0X3FB2FFFD, 0XB2524AA2} }, -/**/ {{0X3FB2F716, 0XE71790A0} }, -/**/ {{0X3FEFD31F, 0X53B496A4} }, -/**/ {{0XBFB2CAD8, 0X4AAB7374} }, -/**/ {{0XBFD4A34B, 0X58DD2FB2} }, -/**/ {{0X3FB27C0A, 0XD0CECC18} }, -/**/ {{0X3FC789D2, 0X5D2743D7} } }, -/**/ {{{0X3FB3FFFE, 0X0573F3AC} }, -/**/ {{0X3FB3F59D, 0X1702F6A0} }, -/**/ {{0X3FEFCE4D, 0XB071ACC2} }, -/**/ {{0XBFB3C20F, 0X64DB3686} }, -/**/ {{0XBFD49059, 0XEB3BFE93} }, -/**/ {{0X3FB36659, 0XCAF74FED} }, -/**/ {{0X3FC75269, 0X1C011FB0} } }, -/**/ {{{0X3FB4FFEF, 0X894384D6} }, -/**/ {{0X3FB4F3ED, 0X0CE204C0} }, -/**/ {{0X3FEFC93E, 0XA8EA5A01} }, -/**/ {{0XBFB4B84F, 0X7B5457C9} }, -/**/ {{0XBFD47C80, 0X7401F2F9} }, -/**/ {{0X3FB44E64, 0XB4F67209} }, -/**/ {{0X3FC7187D, 0X4C540B77} } }, -/**/ {{{0X3FB5FFF8, 0XDF406528} }, -/**/ {{0X3FB5F22B, 0X3C73D820} }, -/**/ {{0X3FEFC3F1, 0XB1F60F13} }, -/**/ {{0XBFB5ADB2, 0XCB7FA73B} }, -/**/ {{0XBFD467BE, 0X2B1EB555} }, -/**/ {{0X3FB53435, 0X99EDC463} }, -/**/ {{0X3FC6DC1B, 0X238F5059} } }, -/**/ {{{0X3FB7000F, 0X8C4F0D56} }, -/**/ {{0X3FB6F04B, 0X495A2FA0} }, -/**/ {{0X3FEFBE67, 0X340DCE97} }, -/**/ {{0XBFB6A224, 0X4D98E1AD} }, -/**/ {{0XBFD45216, 0X14064DF1} }, -/**/ {{0X3FB617AA, 0X2BA78A66} }, -/**/ {{0X3FC69D4F, 0X50A3D7AC} } }, -/**/ {{{0X3FB8000F, 0XBB4057CF} }, -/**/ {{0X3FB7EE27, 0XBE2CD3A0} }, -/**/ {{0X3FEFB8A0, 0X39EC9246} }, -/**/ {{0XBFB79577, 0X31D9C773} }, -/**/ {{0XBFD43B8D, 0XB6DC7D72} }, -/**/ {{0X3FB6F88A, 0XD69547DF} }, -/**/ {{0X3FC65C26, 0XF633CE8C} } }, -/**/ {{{0X3FB8FFF2, 0X39CF2B7F} }, -/**/ {{0X3FB8EBB7, 0X9F979E80} }, -/**/ {{0X3FEFB29D, 0X435506E1} }, -/**/ {{0XBFB8879A, 0X69B9CDB5} }, -/**/ {{0XBFD42428, 0X85FEAFA9} }, -/**/ {{0X3FB7D6BA, 0XB6191A0E} }, -/**/ {{0X3FC618AF, 0XA7CB8BB5} } }, -/**/ {{{0X3FB9FFF9, 0X6E2F0772} }, -/**/ {{0X3FB9E93A, 0XD32A9480} }, -/**/ {{0X3FEFAC5D, 0X04A3EC40} }, -/**/ {{0XBFB978C2, 0X53F6EA97} }, -/**/ {{0XBFD40BE3, 0X089C36F6} }, -/**/ {{0X3FB8B25C, 0X885AEB77} }, -/**/ {{0X3FC5D2F7, 0X63CADCE1} } }, -/**/ {{{0X3FBB0002, 0X6316B097} }, -/**/ {{0X3FBAE68C, 0XCE24CC00} }, -/**/ {{0X3FEFA5E0, 0X938C5C66} }, -/**/ {{0XBFBA68C3, 0X76F14E4B} }, -/**/ {{0XBFD3F2C3, 0X1696CD7C} }, -/**/ {{0X3FB98B3B, 0X722A2CB4} }, -/**/ {{0X3FC58B0C, 0X9067AD62} } }, -/**/ {{{0X3FBC0008, 0X604F58B1} }, -/**/ {{0X3FBBE3A7, 0X05650780} }, -/**/ {{0X3FEF9F28, 0X5A7A2773} }, -/**/ {{0XBFBB578F, 0X3D5AC0A4} }, -/**/ {{0XBFD3D8CB, 0XF767119F} }, -/**/ {{0X3FBA613D, 0XC7E31B88} }, -/**/ {{0X3FC540FD, 0XF5594565} } }, -/**/ {{{0X3FBD0002, 0X6CCA4EBA} }, -/**/ {{0X3FBCE07E, 0XC1298A80} }, -/**/ {{0X3FEF9834, 0XE8D36C4A} }, -/**/ {{0XBFBC4513, 0X5BCAC5FE} }, -/**/ {{0XBFD3BE01, 0X8B5236F1} }, -/**/ {{0X3FBB3447, 0X2E991970} }, -/**/ {{0X3FC4F4DA, 0XB8ADB373} } }, -/**/ {{{0X3FBDFFF4, 0XB2B47FCA} }, -/**/ {{0X3FBDDD16, 0X4A051D80} }, -/**/ {{0X3FEF9106, 0X78DCC895} }, -/**/ {{0XBFBD3149, 0XF0966844} }, -/**/ {{0XBFD3A266, 0X744F9A5F} }, -/**/ {{0X3FBC0446, 0XEDB7F27A} }, -/**/ {{0X3FC4A6B2, 0X583F9ECA} } }, -/**/ {{{0X3FBF000A, 0XA9A05BE0} }, -/**/ {{0X3FBED996, 0XA3BDA540} }, -/**/ {{0X3FEF899C, 0X1B8BA97F} }, -/**/ {{0XBFBE1C51, 0X2287A677} }, -/**/ {{0XBFD385F8, 0XEDC130BB} }, -/**/ {{0X3FBCD14B, 0XF306FF50} }, -/**/ {{0X3FC45694, 0XA667A72B} } }, -/**/ {{{0X3FBFFFFA, 0XBA8F63DE} }, -/**/ {{0X3FBFD5B5, 0X69FE4780} }, -/**/ {{0X3FEF81F8, 0X4863DC7D} }, -/**/ {{0XBFBF05DB, 0XD1518706} }, -/**/ {{0XBFD368C4, 0X4687A69C} }, -/**/ {{0X3FBD9B08, 0X1B3868DA} }, -/**/ {{0X3FC40491, 0XC345ADFC} } }, -/**/ {{{0X3FC07FFA, 0X6ECCADA8} }, -/**/ {{0X3FC068D0, 0X0A396400} }, -/**/ {{0X3FEF7A19, 0XF1FCFC6B} }, -/**/ {{0XBFBFEE0C, 0X861DF0DF} }, -/**/ {{0XBFD34AC6, 0X5A586C0C} }, -/**/ {{0X3FBE618F, 0X189D637A} }, -/**/ {{0X3FC3B0BA, 0X195779D4} } }, -/**/ {{{0X3FC10003, 0X33432713} }, -/**/ {{0X3FC0E6B0, 0XF203D1A0} }, -/**/ {{0X3FEF7200, 0XFE0EB463} }, -/**/ {{0XBFC06A72, 0XE15CB19A} }, -/**/ {{0XBFD32C00, 0XB8DB761E} }, -/**/ {{0X3FBF24D8, 0XA11F5E3E} }, -/**/ {{0X3FC35B1E, 0X569E85DD} } }, -/**/ {{{0X3FC17FFC, 0XDA1C4811} }, -/**/ {{0X3FC16462, 0X29EBDA00} }, -/**/ {{0X3FEF69AF, 0X7D558737} }, -/**/ {{0XBFC0DD17, 0X0B33969B} }, -/**/ {{0XBFD30C7D, 0X33AC50D1} }, -/**/ {{0X3FBFE4AA, 0X9BE43F0F} }, -/**/ {{0X3FC303CF, 0X692539CB} } }, -/**/ {{{0X3FC1FFFF, 0X3CCA418D} }, -/**/ {{0X3FC1E1FA, 0X3B978EA0} }, -/**/ {{0X3FEF6124, 0X45D421A9} }, -/**/ {{0XBFC14F03, 0XACAC8AA8} }, -/**/ {{0XBFD2EC39, 0X62E675A3} }, -/**/ {{0X3FC0508C, 0X2FA6B426} }, -/**/ {{0X3FC2AADE, 0X780A6467} } }, -/**/ {{{0X3FC27FF7, 0XD9C78922} }, -/**/ {{0X3FC25F66, 0X1B91E640} }, -/**/ {{0X3FEF5860, 0XF52E192C} }, -/**/ {{0XBFC1C023, 0XE5DE2394} }, -/**/ {{0XBFD2CB3D, 0X6BEE0ABD} }, -/**/ {{0X3FC0ACFB, 0X5E075C1A} }, -/**/ {{0X3FC2505C, 0XDFFE453A} } }, -/**/ {{{0X3FC2FFF7, 0XA1FC1AAA} }, -/**/ {{0X3FC2DCB5, 0X83257C40} }, -/**/ {{0X3FEF4F64, 0XC719B6FB} }, -/**/ {{0XBFC23082, 0X61514083} }, -/**/ {{0XBFD2A988, 0X7F7B72D5} }, -/**/ {{0X3FC107A7, 0X7C887402} }, -/**/ {{0X3FC1F45C, 0X2C3CD6D1} } }, -/**/ {{{0X3FC38005, 0X9D78E15E} }, -/**/ {{0X3FC359EE, 0X6AC98EE0} }, -/**/ {{0X3FEF462F, 0X944CEC16} }, -/**/ {{0XBFC2A020, 0XD85B87A9} }, -/**/ {{0XBFD2871C, 0X2E4AB369} }, -/**/ {{0X3FC1608D, 0XC31A65D9} }, -/**/ {{0X3FC196EE, 0X130BBE50} } }, -/**/ {{{0X3FC40004, 0X9F431B1A} }, -/**/ {{0X3FC3D6F3, 0X6BD65360} }, -/**/ {{0X3FEF3CC3, 0XDD99B68A} }, -/**/ {{0XBFC30EE1, 0XB3DD00ED} }, -/**/ {{0XBFD26403, 0XF8482664} }, -/**/ {{0X3FC1B792, 0XFE136626} }, -/**/ {{0X3FC13824, 0X6EAC7440} } }, -/**/ {{{0X3FC48004, 0XE01D95A1} }, -/**/ {{0X3FC453D3, 0X86F00CC0} }, -/**/ {{0X3FEF3320, 0XE3970539} }, -/**/ {{0XBFC37CCF, 0X0A5279AA} }, -/**/ {{0XBFD2403F, 0X3B151D5D} }, -/**/ {{0X3FC20CBB, 0XE331C9E6} }, -/**/ {{0X3FC0D811, 0X39E3F097} } }, -/**/ {{{0X3FC4FFF7, 0XAA9382DD} }, -/**/ {{0X3FC4D07F, 0X8C590A80} }, -/**/ {{0X3FEF2948, 0X34DF28E0} }, -/**/ {{0XBFC3E9D8, 0X5B43915C} }, -/**/ {{0XBFD21BD5, 0XEB8845A2} }, -/**/ {{0X3FC25FF8, 0XAC6AC8AD} }, -/**/ {{0X3FC076C6, 0X88ED96CA} } }, -/**/ {{{0X3FC58006, 0X352408BE} }, -/**/ {{0X3FC54D1E, 0XC39A73E0} }, -/**/ {{0X3FEF1F37, 0X09AE009C} }, -/**/ {{0XBFC4561C, 0XB9BE8550} }, -/**/ {{0XBFD1F6C0, 0X0053F52E} }, -/**/ {{0X3FC2B15D, 0XEF783BE9} }, -/**/ {{0X3FC01456, 0X8615239B} } }, -/**/ {{{0X3FC5FFFF, 0X2B193F81} }, -/**/ {{0X3FC5C980, 0X4F73E000} }, -/**/ {{0X3FEF14F1, 0XAE110E29} }, -/**/ {{0XBFC4C16E, 0X9098B3D2} }, -/**/ {{0XBFD1D10F, 0X8F058241} }, -/**/ {{0X3FC300C6, 0XA14FA897} }, -/**/ {{0X3FBF61A6, 0XD56607C0} } }, -/**/ {{{0X3FC68008, 0X4460E6E1} }, -/**/ {{0X3FC645C8, 0X04A55E20} }, -/**/ {{0X3FEF0A75, 0X8FA36EC5} }, -/**/ {{0XBFC52BE9, 0XD62FA883} }, -/**/ {{0XBFD1AABD, 0X69A74048} }, -/**/ {{0X3FC34E45, 0X1679EB02} }, -/**/ {{0X3FBE989E, 0XF7C14C3D} } }, -/**/ {{{0X3FC6FFFB, 0X9E99A846} }, -/**/ {{0X3FC6C1D0, 0X4B35FD40} }, -/**/ {{0X3FEEFFC6, 0X3EF8EF95} }, -/**/ {{0XBFC5956B, 0X76A2FE63} }, -/**/ {{0XBFD183D8, 0XDDC78DDF} }, -/**/ {{0X3FC399BD, 0XAC606D66} }, -/**/ {{0X3FBDCDBA, 0X070D286A} } }, -/**/ {{{0X3FC78008, 0X0FFCD490} }, -/**/ {{0X3FC73DC5, 0XB55758E0} }, -/**/ {{0X3FEEF4E0, 0X457E2065} }, -/**/ {{0XBFC5FE16, 0X7D6FF9BC} }, -/**/ {{0XBFD15C57, 0X9FADD384} }, -/**/ {{0X3FC3E347, 0X73E52D32} }, -/**/ {{0X3FBD011C, 0X9A65AE4B} } }, -/**/ {{{0X3FC80006, 0X148E79C1} }, -/**/ {{0X3FC7B981, 0X2B7F8CA0} }, -/**/ {{0X3FEEE9C7, 0X701687ED} }, -/**/ {{0XBFC665C7, 0X0E1EF36D} }, -/**/ {{0XBFD13449, 0XCCBCBDAB} }, -/**/ {{0X3FC42AC7, 0X5C71B3E8} }, -/**/ {{0X3FBC32EB, 0X3E81980E} } }, -/**/ {{{0X3FC88006, 0X0F487C17} }, -/**/ {{0X3FC83511, 0XBC0E3640} }, -/**/ {{0X3FEEDE7A, 0XD2D55329} }, -/**/ {{0XBFC6CC87, 0X37E644BA} }, -/**/ {{0XBFD10BAE, 0X60597557} }, -/**/ {{0X3FC47043, 0X13E26FBE} }, -/**/ {{0X3FBB634A, 0X6FB18BF4} } }, -/**/ {{{0X3FC90004, 0XD3518D76} }, -/**/ {{0X3FC8B073, 0X8874C100} }, -/**/ {{0X3FEED2FB, 0X2ED6673B} }, -/**/ {{0XBFC73251, 0X2A6EBAC3} }, -/**/ {{0XBFD0E28A, 0X6924232F} }, -/**/ {{0X3FC4B3B5, 0X73BCC03F} }, -/**/ {{0X3FBA925E, 0X8C72507F} } }, -/**/ {{{0X3FC97FFF, 0XD2F20D5C} }, -/**/ {{0X3FC92BA3, 0X51AF5920} }, -/**/ {{0X3FEEC749, 0X3D32449F} }, -/**/ {{0XBFC7971F, 0XC308255F} }, -/**/ {{0XBFD0B8E2, 0XD572D28F} }, -/**/ {{0X3FC4F51A, 0X337448FE} }, -/**/ {{0X3FB9C04B, 0XCFCBC620} } }, -/**/ {{{0X3FCA0005, 0XBF80F060} }, -/**/ {{0X3FC9A6AE, 0X6E9E8960} }, -/**/ {{0X3FEEBB64, 0X1EF200E7} }, -/**/ {{0XBFC7FAFB, 0X6E96E5C1} }, -/**/ {{0XBFD08EB6, 0XEC6AD647} }, -/**/ {{0X3FC53475, 0XF53D0BA6} }, -/**/ {{0X3FB8ED36, 0X4433C20E} } }, -/**/ {{{0X3FCA7FF7, 0XDEECA8E4} }, -/**/ {{0X3FCA2176, 0X948578E0} }, -/**/ {{0X3FEEAF4F, 0X328FF98B} }, -/**/ {{0XBFC85DC9, 0X58149B1C} }, -/**/ {{0XBFD06414, 0XF933A1AB} }, -/**/ {{0X3FC571B7, 0X60C45A8F} }, -/**/ {{0X3FB81941, 0XBE58C308} } }, -/**/ {{{0X3FCAFFFF, 0X7DEFD553} }, -/**/ {{0X3FCA9C22, 0X9EBA6B80} }, -/**/ {{0X3FEEA307, 0X10A85E10} }, -/**/ {{0XBFC8BFA6, 0X7F9DEA61} }, -/**/ {{0XBFD038F3, 0X5A474E8F} }, -/**/ {{0X3FC5ACF0, 0X30C225D2} }, -/**/ {{0X3FB74491, 0XD062812F} } }, -/**/ {{{0X3FCB7FFE, 0X669932A5} }, -/**/ {{0X3FCB1694, 0XCFF6DFE0} }, -/**/ {{0X3FEE968F, 0X1921D387} }, -/**/ {{0XBFC92078, 0XE075D95A} }, -/**/ {{0XBFD00D60, 0X526793C4} }, -/**/ {{0X3FC5E610, 0X73842A52} }, -/**/ {{0X3FB66F49, 0XC5331D5A} } }, -/**/ {{{0X3FCBFFF9, 0XB44759F3} }, -/**/ {{0X3FCB90D1, 0X5073A2A0} }, -/**/ {{0X3FEE89E7, 0X56598313} }, -/**/ {{0XBFC98041, 0XCFB9203D} }, -/**/ {{0XBFCFC2BC, 0XBED91B37} }, -/**/ {{0X3FC61D19, 0X6D4FC2FC} }, -/**/ {{0X3FB5998C, 0X9411537E} } }, -/**/ {{{0X3FCC8007, 0X5568F3EC} }, -/**/ {{0X3FCC0AEC, 0X4A31DBE0} }, -/**/ {{0X3FEE7D0E, 0X18F270A8} }, -/**/ {{0XBFC9DF0E, 0XF522B132} }, -/**/ {{0XBFCF69D4, 0X2179C242} }, -/**/ {{0X3FC65213, 0X36646FCD} }, -/**/ {{0X3FB4C37C, 0XDC699095} } }, -/**/ {{{0X3FCCFFF8, 0X601A799F} }, -/**/ {{0X3FCC84B8, 0X49DB66A0} }, -/**/ {{0X3FEE7008, 0XA0EE780E} }, -/**/ {{0XBFCA3CBB, 0X3A403934} }, -/**/ {{0XBFCF102F, 0XD490BE32} }, -/**/ {{0X3FC684EA, 0X037D4137} }, -/**/ {{0X3FB3ED3C, 0XD9EC855A} } }, -/**/ {{{0X3FCD7FF9, 0X7BBF1497} }, -/**/ {{0X3FCCFE5F, 0X1E008CE0} }, -/**/ {{0X3FEE62D2, 0XF04615C7} }, -/**/ {{0XBFCA9965, 0X15AADE2C} }, -/**/ {{0XBFCEB5B9, 0X0B44B682} }, -/**/ {{0X3FC6B5AF, 0X92EC8D57} }, -/**/ {{0X3FB316EE, 0X60D831AE} } }, -/**/ {{{0X3FCE0008, 0X40209B20} }, -/**/ {{0X3FCD77DD, 0XB145A760} }, -/**/ {{0X3FEE556D, 0XBE1DFDF1} }, -/**/ {{0XBFCAF508, 0X2186AF0F} }, -/**/ {{0XBFCE5A79, 0X9420489D} }, -/**/ {{0X3FC6E462, 0X454FEB2C} }, -/**/ {{0X3FB240B2, 0XD2945A8C} } }, -/**/ {{{0X3FCE8000, 0XC0AE943C} }, -/**/ {{0X3FCDF111, 0X3CA10100} }, -/**/ {{0X3FEE47DD, 0X59E7308B} }, -/**/ {{0XBFCB4F88, 0X9439F69F} }, -/**/ {{0XBFCDFE93, 0X798DE600} }, -/**/ {{0X3FC710F5, 0X8F267389} }, -/**/ {{0X3FB16AAB, 0X1A8A373E} } }, -/**/ {{{0X3FCF0003, 0X6D532803} }, -/**/ {{0X3FCE6A17, 0XCB4E5C80} }, -/**/ {{0X3FEE3A1E, 0XE3D0F6C2} }, -/**/ {{0XBFCBA8FB, 0X6E31F768} }, -/**/ {{0XBFCDA1F7, 0XE6A382E3} }, -/**/ {{0X3FC73B75, 0XB36AC4C0} }, -/**/ {{0X3FB094F7, 0XA3470B0A} } }, -/**/ {{{0X3FCF7FFA, 0X48B8AFC3} }, -/**/ {{0X3FCEE2DB, 0XE1654560} }, -/**/ {{0X3FEE2C35, 0X43F2AB37} }, -/**/ {{0XBFCC014F, 0X598207D6} }, -/**/ {{0XBFCD44BF, 0X1EFE809A} }, -/**/ {{0X3FC763DC, 0X698A561E} }, -/**/ {{0X3FAF7F70, 0XA7CF78A3} } }, -/**/ {{{0X3FD00002, 0XEB334FAE} }, -/**/ {{0X3FCF5B7B, 0X77AB25E0} }, -/**/ {{0X3FEE1E1D, 0X78A5C127} }, -/**/ {{0XBFCC5898, 0XC555D571} }, -/**/ {{0XBFCCE6D9, 0XB706CF86} }, -/**/ {{0X3FC78A35, 0X0823F643} }, -/**/ {{0X3FADD619, 0X0B9118E8} } }, -/**/ {{{0X3FD03FFC, 0XA8AF86FE} }, -/**/ {{0X3FCFD3CB, 0XB53A0C00} }, -/**/ {{0X3FEE0FDC, 0XFDCBAC8B} }, -/**/ {{0XBFCCAEB7, 0X6C3246FF} }, -/**/ {{0XBFCC8870, 0XD6E19AD3} }, -/**/ {{0X3FC7AE73, 0XD2C48E91} }, -/**/ {{0X3FAC2E26, 0X0510FDB0} } }, -/**/ {{{0X3FD07FFC, 0XD38984B7} }, -/**/ {{0X3FD025F7, 0X5732D4A0} }, -/**/ {{0X3FEE0170, 0X49C17AB3} }, -/**/ {{0XBFCD03C2, 0X9AFE5028} }, -/**/ {{0XBFCC2971, 0X9A2C1833} }, -/**/ {{0X3FC7D0A5, 0X69041DCF} }, -/**/ {{0X3FAA87D3, 0XF497C653} } }, -/**/ {{{0X3FD0BFFF, 0X1ED2ADD7} }, -/**/ {{0X3FD061ED, 0XCD7F7420} }, -/**/ {{0X3FEDF2D8, 0XDA96B750} }, -/**/ {{0XBFCD57B2, 0XC777881E} }, -/**/ {{0XBFCBC9EA, 0X8692B503} }, -/**/ {{0X3FC7F0C9, 0X42ABF9E7} }, -/**/ {{0X3FA8E35E, 0X04B42BB4} } }, -/**/ {{{0X3FD10003, 0XA8515CDA} }, -/**/ {{0X3FD09DC9, 0X027416A0} }, -/**/ {{0X3FEDE417, 0X34899950} }, -/**/ {{0XBFCDAA86, 0X7983EDE4} }, -/**/ {{0XBFCB69E3, 0X999706B6} }, -/**/ {{0X3FC80EE1, 0XB0F126DB} }, -/**/ {{0X3FA740FE, 0X17EE9BAB} } }, -/**/ {{{0X3FD14001, 0XF3AF9CC5} }, -/**/ {{0X3FD0D980, 0XB6E1ABA0} }, -/**/ {{0X3FEDD52D, 0XE0412681} }, -/**/ {{0XBFCDFC31, 0X6863B28B} }, -/**/ {{0XBFCB0971, 0XC55B8D5A} }, -/**/ {{0X3FC82AED, 0XA6731AAC} }, -/**/ {{0X3FA5A0EC, 0XC73BD8F0} } }, -/**/ {{{0X3FD18003, 0XB6122509} }, -/**/ {{0X3FD1151D, 0XAA1E67A0} }, -/**/ {{0X3FEDC61B, 0X2E0C1F32} }, -/**/ {{0XBFCE4CBE, 0XB9BA6B7E} }, -/**/ {{0XBFCAA88E, 0X90C2431C} }, -/**/ {{0X3FC844F4, 0X8BCBDA5E} }, -/**/ {{0X3FA40361, 0X50E585FF} } }, -/**/ {{{0X3FD1BFFF, 0XA6A2A153} }, -/**/ {{0X3FD15096, 0XE7A18DC0} }, -/**/ {{0X3FEDB6E1, 0XE1218F3F} }, -/**/ {{0XBFCE9C21, 0X9621D6A2} }, -/**/ {{0XBFCA4750, 0X22627B04} }, -/**/ {{0X3FC85CF5, 0XFF8B908E} }, -/**/ {{0X3FA26891, 0X9833C0D6} } }, -/**/ {{{0X3FD1FFFD, 0X2D345AAF} }, -/**/ {{0X3FD18BF3, 0X053BF760} }, -/**/ {{0X3FEDA780, 0XCC3ACB29} }, -/**/ {{0XBFCEEA62, 0X2AA756AE} }, -/**/ {{0XBFC9E5B3, 0X47ED9793} }, -/**/ {{0X3FC872F8, 0X87AB542A} }, -/**/ {{0X3FA0D0B2, 0X158E9E9A} } }, -/**/ {{{0X3FD23FFC, 0XF14CF05A} }, -/**/ {{0X3FD1C732, 0X4D568460} }, -/**/ {{0X3FED97F8, 0X55F32D3D} }, -/**/ {{0XBFCF3780, 0X21D457C8} }, -/**/ {{0XBFC983BE, 0XF065B845} }, -/**/ {{0X3FC886FF, 0XFBA70CD8} }, -/**/ {{0X3F9E77EB, 0XAEB85CCC} } }, -/**/ {{{0X3FD27FFE, 0X0BAE6FC9} }, -/**/ {{0X3FD20253, 0X9A27C160} }, -/**/ {{0X3FED8849, 0X4619176E} }, -/**/ {{0XBFCF8379, 0X5C0AC9EC} }, -/**/ {{0XBFC9217C, 0X5E645195} }, -/**/ {{0X3FC8990F, 0XF4264515} }, -/**/ {{0X3F9B551C, 0XE6B92E65} } }, -/**/ {{{0X3FD2C001, 0XA297A7DE} }, -/**/ {{0X3FD23D57, 0XACB927C0} }, -/**/ {{0X3FED7873, 0XE4958FB6} }, -/**/ {{0XBFCFCE4E, 0X43572249} }, -/**/ {{0XBFC8BEF1, 0X9F3560F3} }, -/**/ {{0X3FC8A92C, 0XDF7F0E5B} }, -/**/ {{0X3F983958, 0X116F3B19} } }, -/**/ {{{0X3FD2FFFE, 0X7267616A} }, -/**/ {{0X3FD27835, 0XB2F378C0} }, -/**/ {{0X3FED687B, 0X13906586} }, -/**/ {{0XBFD00BF9, 0XAFDA1A0F} }, -/**/ {{0XBFC85C34, 0XC197AD7D} }, -/**/ {{0X3FC8B759, 0X1E99F0A7} }, -/**/ {{0X3F9524FA, 0X6525C365} } }, -/**/ {{{0X3FD33FFE, 0X48153B20} }, -/**/ {{0X3FD2B2F6, 0X6A2FDCC0} }, -/**/ {{0X3FED585C, 0XF827FBE4} }, -/**/ {{0XBFD03039, 0XB45A6918} }, -/**/ {{0XBFC7F93E, 0X5DFC3F72} }, -/**/ {{0X3FC8C39B, 0XC5210022} }, -/**/ {{0X3F92185E, 0X168FB62E} } }, -/**/ {{{0X3FD38003, 0X8122579A} }, -/**/ {{0X3FD2ED9B, 0XAF6EC1E0} }, -/**/ {{0X3FED4819, 0X872F20D3} }, -/**/ {{0XBFD053E8, 0X1F4C1031} }, -/**/ {{0XBFC79612, 0X621FFD79} }, -/**/ {{0X3FC8CDF9, 0XDB9D9DFC} }, -/**/ {{0X3F8E27B4, 0X80C6852F} } }, -/**/ {{{0X3FD3C003, 0X3EF39141} }, -/**/ {{0X3FD3281B, 0X4668C700} }, -/**/ {{0X3FED37B4, 0X18590D1A} }, -/**/ {{0XBFD076FE, 0XA3EF2560} }, -/**/ {{0XBFC732C9, 0X3033287A} }, -/**/ {{0X3FC8D676, 0XCA2E5458} }, -/**/ {{0X3F882F85, 0XD80944B1} } }, -/**/ {{{0X3FD40001, 0X63FA0E31} }, -/**/ {{0X3FD36278, 0X7B565000} }, -/**/ {{0X3FED272C, 0X47A813DA} }, -/**/ {{0XBFD0997F, 0X493B9D88} }, -/**/ {{0XBFC6CF64, 0X3DA9FE3C} }, -/**/ {{0X3FC8DD18, 0XC1CD3331} }, -/**/ {{0X3F8248D1, 0XF70F6E07} } }, -/**/ {{{0X3FD44003, 0X74071092} }, -/**/ {{0X3FD39CB8, 0X0F0A4000} }, -/**/ {{0X3FED1681, 0X3BA47A6B} }, -/**/ {{0XBFD0BB6C, 0XD8788947} }, -/**/ {{0XBFC66BE2, 0X589596A6} }, -/**/ {{0X3FC8E1E5, 0XC9B3EC1E} }, -/**/ {{0X3F78E868, 0XD20FAB86} } }, -/**/ {{{0X3FD48000, 0XC880F200} }, -/**/ {{0X3FD3D6D1, 0XDEFFB460} }, -/**/ {{0X3FED05B5, 0XCADC576C} }, -/**/ {{0XBFD0DCC2, 0XA1D352C2} }, -/**/ {{0XBFC60858, 0X3D7D2574} }, -/**/ {{0X3FC8E4E3, 0X03208BC0} }, -/**/ {{0X3F6AC909, 0X6379E732} } }, -/**/ {{{0X3FD4C000, 0X4D97D2CB} }, -/**/ {{0X3FD410CB, 0XF3A2E220} }, -/**/ {{0X3FECF4C8, 0XBB7ED511} }, -/**/ {{0XBFD0FD84, 0X37766A49} }, -/**/ {{0XBFC5A4C2, 0X5AABC13C} }, -/**/ {{0X3FC8E616, 0XC80DAC4B} }, -/**/ {{0X3F4038AA, 0XB04695C2} } }, -/**/ {{{0X3FD4FFFD, 0X9397539F} }, -/**/ {{0X3FD44AA2, 0X06A7DEC0} }, -/**/ {{0X3FECE3BB, 0XCF479DDE} }, -/**/ {{0XBFD11DAF, 0X4D122984} }, -/**/ {{0XBFC5412E, 0XB1024DF0} }, -/**/ {{0X3FC8E587, 0X1B2C560D} }, -/**/ {{0XBF625DA8, 0X951C088D} } }, -/**/ {{{0X3FD53FFF, 0XF304715F} }, -/**/ {{0X3FD4845A, 0X791F3900} }, -/**/ {{0X3FECD28D, 0XA45E0FD8} }, -/**/ {{0XBFD13D47, 0X8D61F221} }, -/**/ {{0XBFC4DD98, 0XD3E9BB99} }, -/**/ {{0X3FC8E33A, 0X0F181507} }, -/**/ {{0XBF743C33, 0XD08BD25C} } }, -/**/ {{{0X3FD58002, 0XE88EA386} }, -/**/ {{0X3FD4BDF0, 0XF575D6C0} }, -/**/ {{0X3FECC140, 0X02035609} }, -/**/ {{0XBFD15C4A, 0XB808071E} }, -/**/ {{0XBFC47A0E, 0XB2945FCF} }, -/**/ {{0X3FC8DF35, 0XFC056447} }, -/**/ {{0XBF7F2011, 0XB00A45CD} } }, -/**/ {{{0X3FD5BFFD, 0X70F4D590} }, -/**/ {{0X3FD4F75D, 0X284D7AE0} }, -/**/ {{0X3FECAFD5, 0XF2DE98B6} }, -/**/ {{0XBFD17AB4, 0XA2B42F42} }, -/**/ {{0XBFC416A5, 0X1C285A92} }, -/**/ {{0X3FC8D982, 0X511D6C5A} }, -/**/ {{0XBF84ECC1, 0X77008605} } }, -/**/ {{{0X3FD5FFFD, 0XB70D6E53} }, -/**/ {{0X3FD530AB, 0X8E2FF500} }, -/**/ {{0X3FEC9E4C, 0X32D2429D} }, -/**/ {{0XBFD1988C, 0X35190681} }, -/**/ {{0XBFC3B34C, 0XBF748319} }, -/**/ {{0X3FC8D224, 0X98D3A613} }, -/**/ {{0XBF8A33D4, 0XAA295F9F} } }, -/**/ {{{0X3FD63FFC, 0X5C7399E2} }, -/**/ {{0X3FD569D5, 0X4F022E80} }, -/**/ {{0X3FEC8CA5, 0X58DD180F} }, -/**/ {{0XBFD1B5CE, 0X1D701DE4} }, -/**/ {{0XBFC35017, 0XA7806A5A} }, -/**/ {{0X3FC8C924, 0X56C01CF9} }, -/**/ {{0XBF8F64D9, 0X942059E1} } }, -/**/ {{{0X3FD67FFD, 0X9A1AC7D2} }, -/**/ {{0X3FD5A2DD, 0XF50031E0} }, -/**/ {{0X3FEC7AE0, 0XCEFF6DEB} }, -/**/ {{0XBFD1D27C, 0X7C8C245B} }, -/**/ {{0XBFC2ED05, 0XC6AA933F} }, -/**/ {{0X3FC8BE87, 0XDDC5CF1F} }, -/**/ {{0XBF923FB6, 0XD594386F} } }, -/**/ {{{0X3FD6BFFD, 0X6F7B9353} }, -/**/ {{0X3FD5DBC1, 0XB4E066C0} }, -/**/ {{0X3FEC6900, 0X456B591A} }, -/**/ {{0XBFD1EE95, 0XC2D6D0AA} }, -/**/ {{0XBFC28A23, 0XB11086F7} }, -/**/ {{0X3FC8B256, 0XDDE22D5A} }, -/**/ {{0XBF94C19A, 0X489D85A4} } }, -/**/ {{{0X3FD6FFFB, 0XF02A83E4} }, -/**/ {{0X3FD61480, 0X6A237DC0} }, -/**/ {{0X3FEC5704, 0X4CC81773} }, -/**/ {{0XBFD20A1A, 0X4B9029CA} }, -/**/ {{0XBFC22777, 0X89F5FB1C} }, -/**/ {{0X3FC8A498, 0X9B09E911} }, -/**/ {{0XBF9737EC, 0X130D419A} } }, -/**/ {{{0X3FD73FFE, 0X128C213A} }, -/**/ {{0X3FD64D1E, 0X42499480} }, -/**/ {{0X3FEC44EC, 0X129C0D30} }, -/**/ {{0XBFD2250C, 0X83787259} }, -/**/ {{0XBFC1C4FF, 0XD55BE4FC} }, -/**/ {{0X3FC89553, 0X36B2D603} }, -/**/ {{0XBF99A284, 0X2E43DF46} } }, -/**/ {{{0X3FD77FFB, 0XEA0CDC7A} }, -/**/ {{0X3FD68594, 0X05B0E220} }, -/**/ {{0X3FEC32BA, 0X687132C0} }, -/**/ {{0XBFD23F69, 0X7273497E} }, -/**/ {{0XBFC162CE, 0XCD39B037} }, -/**/ {{0X3FC8848F, 0XFA930AAF} }, -/**/ {{0XBF9C013D, 0XA4554412} } }, -/**/ {{{0X3FD7C003, 0XF18EDAB8} }, -/**/ {{0X3FD6BDEE, 0X4127BEE0} }, -/**/ {{0X3FEC206B, 0XC01607BD} }, -/**/ {{0XBFD25937, 0X5FEE2F42} }, -/**/ {{0XBFC100D4, 0X307761E1} }, -/**/ {{0X3FC87252, 0X5DFEC556} }, -/**/ {{0XBF9E53F6, 0X7958F973} } }, -/**/ {{{0X3FD7FFFD, 0X41F35C4C} }, -/**/ {{0X3FD6F616, 0XDA6607A0} }, -/**/ {{0X3FEC0E07, 0XCDDC8437} }, -/**/ {{0XBFD2726C, 0XBFB4DAEA} }, -/**/ {{0XBFC09F3B, 0XE0DB1472} }, -/**/ {{0X3FC85EA9, 0X2A95AA1B} }, -/**/ {{0XBFA04D47, 0XD872CFA2} } }, -/**/ {{{0X3FD84003, 0X26C7C46B} }, -/**/ {{0X3FD72E25, 0X96B8BE00} }, -/**/ {{0X3FEBFB87, 0X4CDEDF38} }, -/**/ {{0XBFD28B14, 0XD09404F3} }, -/**/ {{0XBFC03DE1, 0XE7FB61F2} }, -/**/ {{0X3FC84993, 0XACB33BE9} }, -/**/ {{0XBFA16A76, 0X9B1DE607} } }, -/**/ {{{0X3FD88003, 0XCA90B179} }, -/**/ {{0X3FD7660A, 0XA104A220} }, -/**/ {{0X3FEBE8EF, 0XF236E2F6} }, -/**/ {{0XBFD2A329, 0X19A94DDF} }, -/**/ {{0XBFBFB9CE, 0X0856A081} }, -/**/ {{0X3FC8331F, 0X33F70280} }, -/**/ {{0XBFA2817A, 0XF01308CC} } }, -/**/ {{{0X3FD8C003, 0XE9692FD5} }, -/**/ {{0X3FD79DC9, 0XF0B2CB00} }, -/**/ {{0X3FEBD640, 0XF2966495} }, -/**/ {{0XBFD2BAAB, 0XFD6EC2EA} }, -/**/ {{0XBFBEF892, 0XE08E9C2D} }, -/**/ {{0X3FC81B52, 0X031873E3} }, -/**/ {{0XBFA39249, 0XAC12113D} } }, -/**/ {{{0X3FD8FFFE, 0X35BE5C5F} }, -/**/ {{0X3FD7D55E, 0XBDCCDFC0} }, -/**/ {{0X3FEBC37C, 0X6EABCF77} }, -/**/ {{0XBFD2D19C, 0X2D74F445} }, -/**/ {{0XBFBE382C, 0XE63F2CDB} }, -/**/ {{0X3FC80236, 0X0E6FE2AE} }, -/**/ {{0XBFA49CD9, 0X0E66AB41} } }, -/**/ {{{0X3FD94002, 0XAA8974CD} }, -/**/ {{0X3FD80CD6, 0XB8AFD880} }, -/**/ {{0X3FEBB09E, 0X4468CCBA} }, -/**/ {{0XBFD2E7FF, 0XEC84E686} }, -/**/ {{0XBFBD7876, 0X88C659E8} }, -/**/ {{0X3FC7E7CC, 0XC2F15460} }, -/**/ {{0XBFA5A120, 0XB410D3ED} } }, -/**/ {{{0X3FD98002, 0XE08EFDEA} }, -/**/ {{0X3FD84425, 0X34856920} }, -/**/ {{0X3FEB9DAB, 0X3F290478} }, -/**/ {{0XBFD2FDD2, 0XBB81EDEF} }, -/**/ {{0XBFBCB9A5, 0X31E68398} }, -/**/ {{0X3FC7CC23, 0XC2DBB11B} }, -/**/ {{0XBFA69F19, 0X98467E78} } }, -/**/ {{{0X3FD9C002, 0X75294B6B} }, -/**/ {{0X3FD87B4D, 0X299F6200} }, -/**/ {{0X3FEB8AA2, 0XDE96CF1F} }, -/**/ {{0XBFD31316, 0X8C4D45D2} }, -/**/ {{0XBFBBFBB7, 0XEDCE4DBA} }, -/**/ {{0X3FC7AF41, 0X8907FEC9} }, -/**/ {{0XBFA796BE, 0X07419F55} } }, -/**/ {{{0X3FDA0002, 0XF3E490EC} }, -/**/ {{0X3FD8B24F, 0XC21A4500} }, -/**/ {{0X3FEB7785, 0X3B5EF7DD} }, -/**/ {{0XBFD327CC, 0X8EAE70CD} }, -/**/ {{0XBFBB3EB3, 0XD49E40DA} }, -/**/ {{0X3FC7912D, 0X4D93F7EA} }, -/**/ {{0XBFA88809, 0X9E21606A} } }, -/**/ {{{0X3FDA3FFF, 0X458461B6} }, -/**/ {{0X3FD8E928, 0X7754D2C0} }, -/**/ {{0X3FEB6454, 0X6A0DAF0E} }, -/**/ {{0XBFD33BF3, 0XDC2A9A3F} }, -/**/ {{0XBFBA82B1, 0X4917D003} }, -/**/ {{0X3FC771F1, 0X7C7566CF} }, -/**/ {{0XBFA972F9, 0X3D700DD8} } }, -/**/ {{{0X3FDA8002, 0X87E12AAE} }, -/**/ {{0X3FD91FE0, 0XA5DFD000} }, -/**/ {{0X3FEB510D, 0XA0D82E05} }, -/**/ {{0XBFD34F90, 0XA76AD312} }, -/**/ {{0XBFB9C798, 0XDEEC35AD} }, -/**/ {{0X3FC75190, 0X8A0EF43E} }, -/**/ {{0XBFAA578B, 0X0872EFC8} } }, -/**/ {{{0X3FDAC001, 0X49A86C84} }, -/**/ {{0X3FD9566E, 0X5C4516E0} }, -/**/ {{0X3FEB3DB4, 0XDD03F6B6} }, -/**/ {{0XBFD362A0, 0X291C1F82} }, -/**/ {{0XBFB90D95, 0X03F6DF60} }, -/**/ {{0X3FC73018, 0X25091E92} }, -/**/ {{0XBFAB35BE, 0X577A022B} } }, -/**/ {{{0X3FDAFFFF, 0X2F4CC2E1} }, -/**/ {{0X3FD98CD4, 0X94226540} }, -/**/ {{0X3FEB2A49, 0X9297200A} }, -/**/ {{0XBFD37524, 0X5153FD01} }, -/**/ {{0XBFB854A3, 0XAE3DE27E} }, -/**/ {{0X3FC70D8E, 0X7EB3F331} }, -/**/ {{0XBFAC0D93, 0XB6AD570E} } }, -/**/ {{{0X3FDB4000, 0XC2F3711E} }, -/**/ {{0X3FD9C317, 0X01CDC4C0} }, -/**/ {{0X3FEB16CA, 0XEA63781B} }, -/**/ {{0XBFD3871F, 0X3665B649} }, -/**/ {{0XBFB79CC0, 0X3F70FBC6} }, -/**/ {{0X3FC6E9F9, 0X061DFC2E} }, -/**/ {{0XBFACDF0C, 0XD837F9C3} } }, -/**/ {{{0X3FDB8000, 0XA777E180} }, -/**/ {{0X3FD9F930, 0XF3748F20} }, -/**/ {{0X3FEB033B, 0X0FB0162A} }, -/**/ {{0XBFD39890, 0X25978CAB} }, -/**/ {{0XBFB6E602, 0X5C765AAB} }, -/**/ {{0X3FC6C562, 0X9C16D678} }, -/**/ {{0XBFADAA2C, 0X92A16EBF} } }, -/**/ {{{0X3FDBBFFD, 0X087E14ED} }, -/**/ {{0X3FDA2F20, 0XBF0DDB00} }, -/**/ {{0X3FEAEF9B, 0X1CCE6E94} }, -/**/ {{0XBFD3A977, 0X8B73E3C3} }, -/**/ {{0XBFB63077, 0X09EFD1CC} }, -/**/ {{0X3FC69FD4, 0X58408D3A} }, -/**/ {{0XBFAE6EF6, 0XD2E48013} } }, -/**/ {{{0X3FDC0000, 0XF0086783} }, -/**/ {{0X3FDA64EF, 0X8D448080} }, -/**/ {{0X3FEADBE8, 0X35990B5A} }, -/**/ {{0XBFD3B9D9, 0X27241B86} }, -/**/ {{0XBFB57C06, 0XC20E4001} }, -/**/ {{0X3FC6794F, 0X90E6C8AB} }, -/**/ {{0XBFAF2D70, 0X9A630A27} } }, -/**/ {{{0X3FDC4001, 0X863E58F8} }, -/**/ {{0X3FDA9A94, 0X1C3A1BA0} }, -/**/ {{0X3FEAC826, 0X35ED7DD2} }, -/**/ {{0XBFD3C9B3, 0X0C075B50} }, -/**/ {{0XBFB4C8D7, 0XA429793C} }, -/**/ {{0X3FC651E2, 0X95903C22} }, -/**/ {{0XBFAFE59F, 0XF0F8B649} } }, -/**/ {{{0X3FDC7FFC, 0X6C62C3BF} }, -/**/ {{0X3FDAD00C, 0X580A5840} }, -/**/ {{0X3FEAB456, 0X62D1D808} }, -/**/ {{0XBFD3D905, 0XACBB06EC} }, -/**/ {{0XBFB416F7, 0X421E42DC} }, -/**/ {{0X3FC62996, 0XE5608EFD} }, -/**/ {{0XBFB04BC5, 0XF14B649A} } }, -/**/ {{{0X3FDCC002, 0X34B2A209} }, -/**/ {{0X3FDB0565, 0XF68F3B40} }, -/**/ {{0X3FEAA074, 0X1E3DC946} }, -/**/ {{0XBFD3E7D5, 0XE2DB674E} }, -/**/ {{0XBFB3663E, 0XA4833FFE} }, -/**/ {{0X3FC60069, 0XC4F0392B} }, -/**/ {{0XBFB0A19E, 0X38B10201} } }, -/**/ {{{0X3FDCFFFC, 0XAAC5F9F9} }, -/**/ {{0X3FDB3A8E, 0X59C45CC0} }, -/**/ {{0X3FEA8C86, 0XD2389C24} }, -/**/ {{0XBFD3F61F, 0X8362B2CB} }, -/**/ {{0XBFB2B6F1, 0XC6C746A6} }, -/**/ {{0X3FC5D671, 0X426D2946} }, -/**/ {{0XBFB0F45D, 0X4981CE75} } }, -/**/ {{{0X3FDD4004, 0X0D800C64} }, -/**/ {{0X3FDB6F99, 0X88AF6580} }, -/**/ {{0X3FEA7887, 0X7498CED2} }, -/**/ {{0XBFD403E8, 0XEF8975C0} }, -/**/ {{0XBFB208D4, 0XBEA81E2B} }, -/**/ {{0X3FC5ABA5, 0X283FFA4E} }, -/**/ {{0XBFB14408, 0X11705130} } }, -/**/ {{{0X3FDD7FFE, 0XB0E64500} }, -/**/ {{0X3FDBA472, 0X2324E140} }, -/**/ {{0X3FEA647E, 0X8C5AD680} }, -/**/ {{0XBFD4112D, 0XA03F042D} }, -/**/ {{0XBFB15C33, 0X9580389C} }, -/**/ {{0X3FC5801E, 0X49D9889E} }, -/**/ {{0XBFB190A3, 0XEF96554F} } }, -/**/ {{{0X3FDDBFFE, 0X2DFCF4EB} }, -/**/ {{0X3FDBD926, 0X9F1D27A0} }, -/**/ {{0X3FEA5067, 0X1AC286CA} }, -/**/ {{0XBFD41DF2, 0X590A4DE1} }, -/**/ {{0XBFB0B0E4, 0X8BD1EFA5} }, -/**/ {{0X3FC553D8, 0X702506D0} }, -/**/ {{0XBFB1DA36, 0XADA415A6} } }, -/**/ {{{0X3FDDFFFD, 0X8A34BBC2} }, -/**/ {{0X3FDC0DB2, 0XC4F7A2C0} }, -/**/ {{0X3FEA3C43, 0X2EF70BB3} }, -/**/ {{0XBFD42A37, 0X16EE647C} }, -/**/ {{0XBFB006FA, 0XDB6270BB} }, -/**/ {{0X3FC526DE, 0X86F08DE6} }, -/**/ {{0XBFB220C6, 0X7E5061FB} } }, -/**/ {{{0X3FDE3FFD, 0XD26415C0} }, -/**/ {{0X3FDC4217, 0X58282940} }, -/**/ {{0X3FEA2812, 0XF391DDCB} }, -/**/ {{0XBFD435FD, 0X18EDDF0A} }, -/**/ {{0XBFAEBCF2, 0X88A589AF} }, -/**/ {{0X3FC4F937, 0X4CF96163} }, -/**/ {{0XBFB26459, 0XF6A18481} } }, -/**/ {{{0X3FDE7FFF, 0X37F72672} }, -/**/ {{0X3FDC7654, 0X67AA3DC0} }, -/**/ {{0X3FEA13D6, 0XD6CE86B3} }, -/**/ {{0XBFD44145, 0X74037E91} }, -/**/ {{0XBFAD6EC9, 0X3B2CC445} }, -/**/ {{0X3FC4CAEA, 0X0564F101} }, -/**/ {{0XBFB2A4F8, 0X0C49CD64} } }, -/**/ {{{0X3FDEBFFD, 0XA11BC00F} }, -/**/ {{0X3FDCAA66, 0X85E23660} }, -/**/ {{0X3FE9FF90, 0XA25C2396} }, -/**/ {{0XBFD44C10, 0X8A64724F} }, -/**/ {{0XBFAC2399, 0X2F871E82} }, -/**/ {{0X3FC49C01, 0X0AFBFB85} }, -/**/ {{0XBFB2E2A8, 0X0F0FF3FE} } }, -/**/ {{{0X3FDEFFFF, 0X3313756D} }, -/**/ {{0X3FDCDE52, 0X9D30CC20} }, -/**/ {{0X3FE9EB3E, 0XDFF9491F} }, -/**/ {{0XBFD45660, 0X7E6ABAAE} }, -/**/ {{0XBFAADB4C, 0X3E8AA98D} }, -/**/ {{0X3FC46C7F, 0X25D8FF7D} }, -/**/ {{0XBFB31D71, 0XA71D448D} } }, -/**/ {{{0X3FDF4001, 0X914B856E} }, -/**/ {{0X3FDD1216, 0XAAC1BB20} }, -/**/ {{0X3FE9D6E2, 0XC9BC4315} }, -/**/ {{0XBFD46036, 0X004E7E91} }, -/**/ {{0XBFA995F7, 0XFB901F89} }, -/**/ {{0X3FC43C6D, 0X3F5BE04A} }, -/**/ {{0XBFB3555C, 0XCE8ABF92} } }, -/**/ {{{0X3FDF8003, 0XCD144428} }, -/**/ {{0X3FDD45B1, 0XD93E9640} }, -/**/ {{0X3FE9C27D, 0X256FDFEB} }, -/**/ {{0XBFD46992, 0X09F7C145} }, -/**/ {{0XBFA853A9, 0XED521174} }, -/**/ {{0X3FC40BD3, 0X2B27751F} }, -/**/ {{0XBFB38A71, 0XCFA5C5F2} } }, -/**/ {{{0X3FDFC002, 0X00545BD9} }, -/**/ {{0X3FDD7920, 0XF536D960} }, -/**/ {{0X3FE9AE0F, 0XAAE99EA5} }, -/**/ {{0XBFD47275, 0X38DD66F4} }, -/**/ {{0XBFA7147D, 0XB5484F74} }, -/**/ {{0X3FC3DABA, 0XF8EFC373} }, -/**/ {{0XBFB3BCB9, 0X3EA6B864} } }, -/**/ {{{0X3FDFFFFB, 0XDA6F2AA8} }, -/**/ {{0X3FDDAC63, 0XB420FAA0} }, -/**/ {{0X3FE9999A, 0XED4D0CAB} }, -/**/ {{0XBFD47AE0, 0XBFCC6072} }, -/**/ {{0XBFA5D87C, 0X25BF7A4A} }, -/**/ {{0X3FC3A92B, 0XF5999EE5} }, -/**/ {{0XBFB3EC3B, 0XF7F09D08} } }, -/**/ {{{0X3FE01FFF, 0XA65118C8} }, -/**/ {{0X3FDDDF85, 0X2BF70C00} }, -/**/ {{0X3FE9851A, 0XECD72AE5} }, -/**/ {{0XBFD482D7, 0X8F5794C5} }, -/**/ {{0XBFA49F68, 0X2E4A020B} }, -/**/ {{0X3FC37722, 0X25A156DA} }, -/**/ {{0XBFB41903, 0X19F58064} } }, -/**/ {{{0X3FE04001, 0X9C0B0556} }, -/**/ {{0X3FDE127D, 0XFA2BA200} }, -/**/ {{0X3FE97093, 0X08C17A55} }, -/**/ {{0XBFD48A59, 0X957A7EFD} }, -/**/ {{0XBFA36976, 0X2648F2BB} }, -/**/ {{0X3FC344AB, 0X592569B1} }, -/**/ {{0XBFB44318, 0X03752DDB} } }, -/**/ {{{0X3FE05FFF, 0XC24501DB} }, -/**/ {{0X3FDE4547, 0XA495BCC0} }, -/**/ {{0X3FE95C06, 0X4F225B79} }, -/**/ {{0XBFD49167, 0X2163F5B8} }, -/**/ {{0XBFA236D3, 0X4B79B89F} }, -/**/ {{0X3FC311D4, 0XB530B7BE} }, -/**/ {{0XBFB46A84, 0X4D931476} } }, -/**/ {{{0X3FE07FFE, 0X865125FC} }, -/**/ {{0X3FDE77E9, 0X2A5FAD60} }, -/**/ {{0X3FE94772, 0X5C13B0EA} }, -/**/ {{0XBFD49802, 0X6F33ABCA} }, -/**/ {{0XBFA1075A, 0XDE947C6B} }, -/**/ {{0X3FC2DE9D, 0XD8D5E01B} }, -/**/ {{0XBFB48F51, 0XCA17CA60} } }, -/**/ {{{0X3FE0A002, 0X107EAC25} }, -/**/ {{0X3FDEAA69, 0X08243180} }, -/**/ {{0X3FE932D4, 0XF339824B} }, -/**/ {{0XBFD49E2D, 0X7145F475} }, -/**/ {{0XBF9FB5D8, 0X00571424} }, -/**/ {{0X3FC2AB06, 0X85D1CF84} }, -/**/ {{0XBFB4B18A, 0X7DBBBABE} } }, -/**/ {{{0X3FE0BFFF, 0X7376E5D4} }, -/**/ {{0X3FDEDCB5, 0XF79FF560} }, -/**/ {{0X3FE91E35, 0X8EE1B492} }, -/**/ {{0XBFD4A3E7, 0X49498453} }, -/**/ {{0XBF9D63E4, 0XBE685C6F} }, -/**/ {{0X3FC27726, 0XC4B1F032} }, -/**/ {{0XBFB4D138, 0X9E6ECC3A} } }, -/**/ {{{0X3FE0DFFE, 0X1715EE2E} }, -/**/ {{0X3FDF0EDB, 0X9BE1BB80} }, -/**/ {{0X3FE9098F, 0XD993BD60} }, -/**/ {{0XBFD4A932, 0X9B84E907} }, -/**/ {{0XBF9B185A, 0XE07DBA5E} }, -/**/ {{0X3FC242F8, 0XF2D7A804} }, -/**/ {{0XBFB4EE66, 0X8DDAA340} } }, -/**/ {{{0X3FE10001, 0X7F3D776C} }, -/**/ {{0X3FDF40DF, 0X6119E100} }, -/**/ {{0X3FE8F4E1, 0XFB44BCFB} }, -/**/ {{0XBFD4AE11, 0X16E3467E} }, -/**/ {{0XBF98D304, 0XCF368422} }, -/**/ {{0X3FC20E7D, 0X736708AE} }, -/**/ {{0XBFB5091E, 0XD7B3658D} } }, -/**/ {{{0X3FE11FFE, 0XFD8C7B65} }, -/**/ {{0X3FDF72B0, 0X8FD21560} }, -/**/ {{0X3FE8E033, 0X4770FB0A} }, -/**/ {{0XBFD4B282, 0X5C0F6783} }, -/**/ {{0XBF9694AC, 0X7FFE0364} }, -/**/ {{0X3FC1D9CB, 0XE529BF4C} }, -/**/ {{0XBFB5216C, 0X2C73E5F0} } }, -/**/ {{{0X3FE14000, 0XAFA3EE71} }, -/**/ {{0X3FDFA45E, 0XE3324D60} }, -/**/ {{0X3FE8CB7D, 0X9FF684DF} }, -/**/ {{0XBFD4B689, 0X17ADD34D} }, -/**/ {{0XBF945CA3, 0X67276E70} }, -/**/ {{0X3FC1A4D9, 0XA1FBF3B1} }, -/**/ {{0XBFB53759, 0X5FBA2374} } }, -/**/ {{{0X3FE15FFF, 0X73336187} }, -/**/ {{0X3FDFD5DF, 0X3DE48D00} }, -/**/ {{0X3FE8B6C6, 0X0CBE3546} }, -/**/ {{0XBFD4BA25, 0X9B291BCB} }, -/**/ {{0XBF922B6F, 0X5FB712CC} }, -/**/ {{0X3FC16FB8, 0X55E28B0B} }, -/**/ {{0XBFB54AF1, 0X633F423C} } }, -/**/ {{{0X3FE17FFF, 0X6C447B82} }, -/**/ {{0X3FE0039C, 0X0208ECC0} }, -/**/ {{0X3FE8A20A, 0X48F15926} }, -/**/ {{0XBFD4BD59, 0XA5808AC3} }, -/**/ {{0XBF9000CD, 0X5EEF6F2A} }, -/**/ {{0X3FC13A66, 0XEBE54AA7} }, -/**/ {{0XBFB55C3F, 0X45420CE4} } }, -/**/ {{{0X3FE19FFF, 0XAE932B61} }, -/**/ {{0X3FE01C33, 0XE0091BC0} }, -/**/ {{0X3FE88D4B, 0X55664E00} }, -/**/ {{0XBFD4C026, 0X579F5ABB} }, -/**/ {{0XBF8BB9A6, 0X8797C32A} }, -/**/ {{0X3FC104EC, 0X95D4F64E} }, -/**/ {{0XBFB56B4E, 0X2BBC325E} } }, -/**/ {{{0X3FE1BFFF, 0XBA12AE50} }, -/**/ {{0X3FE034B6, 0XD3ABA020} }, -/**/ {{0X3FE87889, 0XEBDCCF04} }, -/**/ {{0XBFD4C28C, 0XE6D463C1} }, -/**/ {{0XBF877F1C, 0XB36211FC} }, -/**/ {{0X3FC0CF4F, 0XB90B11E7} }, -/**/ {{0XBFB57829, 0X52DCBE1A} } }, -/**/ {{{0X3FE1E001, 0X4B459E41} }, -/**/ {{0X3FE04D26, 0X2DC05800} }, -/**/ {{0X3FE863C5, 0X51625B6A} }, -/**/ {{0XBFD4C48E, 0XAFFDD399} }, -/**/ {{0XBF8351CB, 0X603059CA} }, -/**/ {{0X3FC09992, 0XDE65D0D9} }, -/**/ {{0XBFB582DC, 0X087BB367} } }, -/**/ {{{0X3FE20000, 0X32306F33} }, -/**/ {{0X3FE0657E, 0XBAFB6CE0} }, -/**/ {{0X3FE84F00, 0XA1E2EEC3} }, -/**/ {{0XBFD4C62C, 0XB79EC8C6} }, -/**/ {{0XBF7E6488, 0XD95DE8D1} }, -/**/ {{0X3FC063C2, 0X661DF241} }, -/**/ {{0XBFB58B71, 0XAAA63BAD} } }, -/**/ {{{0X3FE22000, 0XD30A486C} }, -/**/ {{0X3FE07DC3, 0XD2165080} }, -/**/ {{0X3FE83A39, 0X66B3E5BF} }, -/**/ {{0XBFD4C768, 0X7DE04DEE} }, -/**/ {{0XBF763FF7, 0X800F052F} }, -/**/ {{0X3FC02DDC, 0X28F35EDD} }, -/**/ {{0XBFB591F5, 0XA351CF91} } }, -/**/ {{{0X3FE23FFE, 0X215E03FC} }, -/**/ {{0X3FE095F1, 0X9F380A00} }, -/**/ {{0X3FE82573, 0X48BE5F3F} }, -/**/ {{0XBFD4C843, 0X1B793F77} }, -/**/ {{0XBF6C6E63, 0X625993B8} }, -/**/ {{0X3FBFEFDB, 0X8C5E4B3B} }, -/**/ {{0XBFB59673, 0X66FE9CA7} } }, -/**/ {{{0X3FE26000, 0X6833D65D} }, -/**/ {{0X3FE0AE0E, 0X6496A8C0} }, -/**/ {{0X3FE810A9, 0X45B44AA3} }, -/**/ {{0XBFD4C8BE, 0X055B407A} }, -/**/ {{0XBF5920A7, 0XAE83F0A4} }, -/**/ {{0X3FBF83DC, 0X860A6A5E} }, -/**/ {{0XBFB598F6, 0X70D98EE7} } }, -/**/ {{{0X3FE28000, 0XE82D4D50} }, -/**/ {{0X3FE0C615, 0X095F5300} }, -/**/ {{0X3FE7FBE0, 0X1E9337B7} }, -/**/ {{0XBFD4C8DA, 0X573C6F6A} }, -/**/ {{0X3F38B6C7, 0XC50F565D} }, -/**/ {{0X3FBF17DB, 0XC9C4B6CA} }, -/**/ {{0XBFB5998A, 0X45D6DAE0} } }, -/**/ {{{0X3FE29FFF, 0X203B6A0B} }, -/**/ {{0X3FE0DE05, 0X30852720} }, -/**/ {{0X3FE7E718, 0X8520538D} }, -/**/ {{0XBFD4C899, 0X668C6963} }, -/**/ {{0X3F6286EC, 0XBECA8AB0} }, -/**/ {{0X3FBEABE4, 0X9B6AC5BD} }, -/**/ {{0XBFB5983A, 0X575A9684} } }, -/**/ {{{0X3FE2C001, 0XE91A9D93} }, -/**/ {{0X3FE0F5E3, 0XF7817A20} }, -/**/ {{0X3FE7D24E, 0X63A45D97} }, -/**/ {{0XBFD4C7FC, 0X5F83C46D} }, -/**/ {{0X3F70E199, 0X5D9C800A} }, -/**/ {{0X3FBE3FE9, 0X3721A8E0} }, -/**/ {{0XBFB59512, 0X377DA840} } }, -/**/ {{{0X3FE2DFFF, 0XC6FB4948} }, -/**/ {{0X3FE10DAA, 0X4CE36040} }, -/**/ {{0X3FE7BD88, 0X3E39011F} }, -/**/ {{0XBFD4C704, 0XB5EAE11F} }, -/**/ {{0X3F786398, 0X192C622B} }, -/**/ {{0X3FBDD412, 0XB62BA357} }, -/**/ {{0XBFB5901D, 0X5F0E020E} } }, -/**/ {{{0X3FE2FFFF, 0X39CB4EED} }, -/**/ {{0X3FE1255D, 0X0970AD60} }, -/**/ {{0X3FE7A8C2, 0X365B7A9B} }, -/**/ {{0XBFD4C5B3, 0X8925F532} }, -/**/ {{0X3F7FCB03, 0X785E3070} }, -/**/ {{0X3FBD6854, 0X0EEDF3B3} }, -/**/ {{0XBFB58967, 0X479C252A} } }, -/**/ {{{0X3FE31FFE, 0X002E31CB} }, -/**/ {{0X3FE13CFA, 0X81FD3780} }, -/**/ {{0X3FE793FE, 0X1BBE9667} }, -/**/ {{0XBFD4C40A, 0X3046F4C7} }, -/**/ {{0X3F838BAE, 0X8F5E6BF1} }, -/**/ {{0X3FBCFCBD, 0X83775C98} }, -/**/ {{0XBFB580FB, 0X62E887AB} } }, -/**/ {{{0X3FE34000, 0XEDC7BFFD} }, -/**/ {{0X3FE15486, 0X44D05200} }, -/**/ {{0X3FE77F39, 0X244A1DA5} }, -/**/ {{0XBFD4C209, 0X9FB764C1} }, -/**/ {{0X3F8724E2, 0X851B0BE5} }, -/**/ {{0X3FBC9147, 0X507C76E0} }, -/**/ {{0XBFB576E5, 0X19C7F0AB} } }, -/**/ {{{0X3FE36001, 0XCE042830} }, -/**/ {{0X3FE16BFB, 0XC1656AE0} }, -/**/ {{0X3FE76A77, 0XAD3B2B77} }, -/**/ {{0XBFD4BFB3, 0X74AAC296} }, -/**/ {{0X3F8AB070, 0X05B229C2} }, -/**/ {{0X3FBC260E, 0X87DCA54B} }, -/**/ {{0XBFB56B2F, 0XC90DF763} } }, -/**/ {{{0X3FE37FFE, 0X89B8FC54} }, -/**/ {{0X3FE18359, 0X77D0BA80} }, -/**/ {{0X3FE755BB, 0X660CAA3D} }, -/**/ {{0XBFD4BD09, 0X308BB975} }, -/**/ {{0X3F8E2E26, 0XFE0A1240} }, -/**/ {{0X3FBBBB22, 0X18790F26} }, -/**/ {{0XBFB55DE6, 0XC094F3DA} } }, -/**/ {{{0X3FE3A001, 0X9B4DA842} }, -/**/ {{0X3FE19AA7, 0X100CD140} }, -/**/ {{0X3FE740FD, 0XD801F889} }, -/**/ {{0XBFD4BA0B, 0X2C32C656} }, -/**/ {{0X3F90CF99, 0X8ECA44A2} }, -/**/ {{0X3FBB5066, 0XC9863443} }, -/**/ {{0XBFB54F15, 0X406672B5} } }, -/**/ {{{0X3FE3C000, 0XCE6B63E8} }, -/**/ {{0X3FE1B1DD, 0X1D0B0AE0} }, -/**/ {{0X3FE72C45, 0XF28670E6} }, -/**/ {{0XBFD4B6BB, 0X92422E2E} }, -/**/ {{0X3F928141, 0XA0D32146} }, -/**/ {{0X3FBAE606, 0X37452321} }, -/**/ {{0XBFB53EC6, 0X77D91F56} } }, -/**/ {{{0X3FE3DFFF, 0X114A2607} }, -/**/ {{0X3FE1C8FD, 0XC6FF6F20} }, -/**/ {{0X3FE71792, 0X206847A7} }, -/**/ {{0XBFD4B31B, 0X669BD306} }, -/**/ {{0X3F942C3A, 0X04FFD28A} }, -/**/ {{0X3FBA7BFD, 0XE7FC0825} }, -/**/ {{0XBFB52D05, 0X82F471BA} } }, -/**/ {{{0X3FE3FFFF, 0XC1DA9B7D} }, -/**/ {{0X3FE1E00B, 0X7F2E8840} }, -/**/ {{0X3FE702E0, 0X84371133} }, -/**/ {{0XBFD4AF2B, 0X8012FBE4} }, -/**/ {{0X3F95D0B4, 0XBFC47F4B} }, -/**/ {{0X3FBA1249, 0XD80AB6C5} }, -/**/ {{0XBFB519DD, 0X69A4108D} } }, -/**/ {{{0X3FE41FFE, 0XE11D9C33} }, -/**/ {{0X3FE1F703, 0X67C3EC20} }, -/**/ {{0X3FE6EE34, 0X026A76A0} }, -/**/ {{0XBFD4AAED, 0X96514B12} }, -/**/ {{0X3F976E83, 0X07BA2905} }, -/**/ {{0X3FB9A8FE, 0X261A1221} }, -/**/ {{0XBFB50559, 0X1D552BA0} } }, -/**/ {{{0X3FE43FFF, 0XFA174676} }, -/**/ {{0X3FE20DE8, 0X0FAFF860} }, -/**/ {{0X3FE6D98A, 0X9EA6D162} }, -/**/ {{0XBFD4A662, 0X6B927B3B} }, -/**/ {{0X3F9905D8, 0XF84ADBB0} }, -/**/ {{0X3FB94015, 0XDD484DB5} }, -/**/ {{0XBFB4EF83, 0X783EEF44} } }, -/**/ {{{0X3FE45FFF, 0X0D457FA4} }, -/**/ {{0X3FE224B6, 0X9F675300} }, -/**/ {{0X3FE6C4E7, 0X3A093351} }, -/**/ {{0XBFD4A18B, 0XCBF2BFF8} }, -/**/ {{0X3F9A968A, 0X84BB8C16} }, -/**/ {{0X3FB8D7A4, 0X93FBB975} }, -/**/ {{0XBFB4D867, 0X3B37E4FB} } }, -/**/ {{{0X3FE47FFE, 0X8F910E57} }, -/**/ {{0X3FE23B70, 0XDD92B840} }, -/**/ {{0X3FE6B048, 0X89B04359} }, -/**/ {{0XBFD49C6A, 0X974B07FF} }, -/**/ {{0X3F9C20BE, 0X25F20251} }, -/**/ {{0X3FB86FA8, 0X82E9673D} }, -/**/ {{0XBFB4C00F, 0X0D12F550} } }, -/**/ {{{0X3FE4A001, 0X7323FC6B} }, -/**/ {{0X3FE25218, 0XE34E3420} }, -/**/ {{0X3FE69BAC, 0XF277FE27} }, -/**/ {{0XBFD496FF, 0X7F856ABA} }, -/**/ {{0X3F9DA49E, 0X9928150C} }, -/**/ {{0X3FB8081E, 0X3EB66A26} }, -/**/ {{0XBFB4A685, 0X78AB06C5} } }, -/**/ {{{0X3FE4C000, 0XB1BF0500} }, -/**/ {{0X3FE268A9, 0XBD8B2C80} }, -/**/ {{0X3FE68719, 0X42ABBD42} }, -/**/ {{0XBFD4914C, 0XEC74E64A} }, -/**/ {{0X3F9F21DE, 0XD0C3EEEC} }, -/**/ {{0X3FB7A122, 0X5B30AA05} }, -/**/ {{0XBFB48BD4, 0XEC53EF43} } }, -/**/ {{{0X3FE4E001, 0X1D07207B} }, -/**/ {{0X3FE27F26, 0XDA64F7A0} }, -/**/ {{0X3FE6728A, 0XA7CFBEB2} }, -/**/ {{0XBFD48B53, 0X3FCBB247} }, -/**/ {{0X3FA04C60, 0XA7354A41} }, -/**/ {{0X3FB73AAA, 0XEFF6F27A} }, -/**/ {{0XBFB47007, 0XB81A6BB2} } }, -/**/ {{{0X3FE4FFFE, 0X5F36EB46} }, -/**/ {{0X3FE2958D, 0X35DDD180} }, -/**/ {{0X3FE65E04, 0X307B6AF3} }, -/**/ {{0XBFD48514, 0X828BB6E6} }, -/**/ {{0X3FA1048E, 0X48993ED9} }, -/**/ {{0X3FB6D4CB, 0X468D7C59} }, -/**/ {{0XBFB45328, 0X0D484989} } }, -/**/ {{{0X3FE52001, 0X2AFDF759} }, -/**/ {{0X3FE2ABE2, 0XEB1C3280} }, -/**/ {{0X3FE64980, 0X8DC5DAAD} }, -/**/ {{0XBFD47E90, 0X2C11E3B7} }, -/**/ {{0X3FA1B9AE, 0X88E1B343} }, -/**/ {{0X3FB66F6C, 0XFF4501BF} }, -/**/ {{0XBFB4353F, 0XFCD6B8DE} } }, -/**/ {{{0X3FE54001, 0XDFDB2423} }, -/**/ {{0X3FE2C222, 0XAB0402C0} }, -/**/ {{0X3FE63504, 0XE7E657FB} }, -/**/ {{0XBFD477C8, 0XEEE53FA9} }, -/**/ {{0X3FA26B9A, 0X696CD845} }, -/**/ {{0X3FB60AAD, 0X6A3AA6EF} }, -/**/ {{0XBFB41659, 0X7704E1F4} } }, -/**/ {{{0X3FE55FFE, 0X72D2A74F} }, -/**/ {{0X3FE2D84B, 0X16BE7240} }, -/**/ {{0X3FE62092, 0XCE54AEDE} }, -/**/ {{0XBFD470C0, 0X7B764156} }, -/**/ {{0X3FA31A4C, 0X4D9ABEE7} }, -/**/ {{0X3FB5A697, 0XA899A63D} }, -/**/ {{0XBFB3F67E, 0X49FA7FB1} } }, -/**/ {{{0X3FE58000, 0XEE716C33} }, -/**/ {{0X3FE2EE63, 0X284F3FE0} }, -/**/ {{0X3FE60C24, 0X181C5720} }, -/**/ {{0XBFD46975, 0XC383B0C1} }, -/**/ {{0X3FA3C5FF, 0XC40A1A5A} }, -/**/ {{0X3FB54311, 0X0B7B3B72} }, -/**/ {{0XBFB3D5B8, 0X21700401} } }, -/**/ {{{0X3FE59FFF, 0X9825CD2A} }, -/**/ {{0X3FE30464, 0X2DEFCF40} }, -/**/ {{0X3FE5F7BF, 0X3C14A317} }, -/**/ {{0XBFD461EC, 0X227A4CDE} }, -/**/ {{0X3FA46E85, 0X6DA8D837} }, -/**/ {{0X3FB4E03C, 0X6162F4C8} }, -/**/ {{0XBFB3B410, 0X857F5976} } }, -/**/ {{{0X3FE5BFFD, 0XFE2A42CD} }, -/**/ {{0X3FE31A50, 0XA5110DC0} }, -/**/ {{0X3FE5E362, 0X33CF1268} }, -/**/ {{0XBFD45A23, 0XF68B7DBC} }, -/**/ {{0X3FA513F5, 0XDE40F0E9} }, -/**/ {{0X3FB47E12, 0XDE05901E} }, -/**/ {{0XBFB39190, 0XDA5CABB5} } }, -/**/ {{{0X3FE5E000, 0X57330799} }, -/**/ {{0X3FE3302B, 0X75253480} }, -/**/ {{0X3FE5CF0A, 0X901DA45A} }, -/**/ {{0XBFD4521D, 0X552754CF} }, -/**/ {{0X3FA5B66B, 0XBBF000BB} }, -/**/ {{0X3FB41C8B, 0XD2BAF7B2} }, -/**/ {{0XBFB36E42, 0X5F53241A} } }, -/**/ {{{0X3FE60001, 0X4D6055DA} }, -/**/ {{0X3FE345F0, 0XFF2EDA60} }, -/**/ {{0X3FE5BABB, 0XF2EA5900} }, -/**/ {{0XBFD449DA, 0XB2008754} }, -/**/ {{0X3FA655D1, 0X18F56FBB} }, -/**/ {{0X3FB3BBBB, 0X89A0C1B2} }, -/**/ {{0XBFB34A2E, 0X2E8D60FC} } }, -/**/ {{{0X3FE62001, 0X2C3809CB} }, -/**/ {{0X3FE35BA1, 0X812D5040} }, -/**/ {{0X3FE5A676, 0X671E49E9} }, -/**/ {{0XBFD4415D, 0X230E6216} }, -/**/ {{0X3FA6F22D, 0X6B05C7F7} }, -/**/ {{0X3FB35BA4, 0XCFE6B72B} }, -/**/ {{0XBFB3255D, 0X3C3BFA3B} } }, -/**/ {{{0X3FE64000, 0X87B47ECC} }, -/**/ {{0X3FE3713D, 0X69715580} }, -/**/ {{0X3FE59239, 0XC8FB0E69} }, -/**/ {{0XBFD438A5, 0XA5BD1F6E} }, -/**/ {{0X3FA78B89, 0X7F9B13CF} }, -/**/ {{0X3FB2FC49, 0X74F57C8F} }, -/**/ {{0XBFB2FFD8, 0X566CAACA} } }, -/**/ {{{0X3FE66000, 0XA746397F} }, -/**/ {{0X3FE386C5, 0X9D968940} }, -/**/ {{0X3FE57E05, 0X83073C58} }, -/**/ {{0XBFD42FB4, 0XFE3D0083} }, -/**/ {{0X3FA821F1, 0X4B9E1EEB} }, -/**/ {{0X3FB29DA9, 0X1952EE82} }, -/**/ {{0XBFB2D9A8, 0X245866A8} } }, -/**/ {{{0X3FE68000, 0XE4E3094B} }, -/**/ {{0X3FE39C39, 0XB5FE3900} }, -/**/ {{0X3FE569DA, 0X36DD131E} }, -/**/ {{0XBFD4268C, 0X74778FE0} }, -/**/ {{0X3FA8B567, 0X9AB0310F} }, -/**/ {{0X3FB23FC8, 0XF2E43205} }, -/**/ {{0XBFB2B2D5, 0X26483573} } }, -/**/ {{{0X3FE6A001, 0XE2E37787} }, -/**/ {{0X3FE3B19A, 0X27D52620} }, -/**/ {{0X3FE555B7, 0XB5D865CD} }, -/**/ {{0XBFD41D2C, 0XF1600CD3} }, -/**/ {{0X3FA945F5, 0X4B79E859} }, -/**/ {{0X3FB1E2AA, 0X46A0B02D} }, -/**/ {{0XBFB28B67, 0XB508A35B} } }, -/**/ {{{0X3FE6BFFE, 0X0DF4BBFB} }, -/**/ {{0X3FE3C6E3, 0X46F2B6E0} }, -/**/ {{0X3FE541A1, 0XB658AFBE} }, -/**/ {{0XBFD41399, 0X388DA137} }, -/**/ {{0X3FA9D387, 0XE5B3C2BA} }, -/**/ {{0X3FB18660, 0X173397F9} }, -/**/ {{0XBFB26368, 0X01DB4945} } }, -/**/ {{{0X3FE6DFFF, 0XEA406CEA} }, -/**/ {{0X3FE3DC1C, 0X1BB3D400} }, -/**/ {{0X3FE52D91, 0XD33FFE8E} }, -/**/ {{0XBFD409CF, 0X36BCFFE9} }, -/**/ {{0X3FAA5E54, 0X174405AF} }, -/**/ {{0X3FB12ACE, 0XDC041806} }, -/**/ {{0XBFB23ADE, 0X160D6557} } }, -/**/ {{{0X3FE70000, 0XED01EA65} }, -/**/ {{0X3FE3F140, 0X54E51400} }, -/**/ {{0X3FE5198C, 0X5C8B9119} }, -/**/ {{0XBFD3FFD1, 0XF2EA4FF7} }, -/**/ {{0X3FAAE643, 0X308C81CD} }, -/**/ {{0X3FB0D00C, 0X1960AAF7} }, -/**/ {{0XBFB211D1, 0XD2F50D25} } }, -/**/ {{{0X3FE72002, 0X00D515EB} }, -/**/ {{0X3FE40650, 0X983BB3E0} }, -/**/ {{0X3FE50590, 0XF2175C71} }, -/**/ {{0XBFD3F5A2, 0X361BB15C} }, -/**/ {{0X3FAB6B5F, 0X9B536AFC} }, -/**/ {{0X3FB07617, 0XA731624D} }, -/**/ {{0XBFB1E84A, 0XF1A8C054} } }, -/**/ {{{0X3FE74001, 0X1323DE6D} }, -/**/ {{0X3FE41B4B, 0X9483E720} }, -/**/ {{0X3FE4F1A1, 0X1027BA01} }, -/**/ {{0XBFD3EB41, 0XBB978C8F} }, -/**/ {{0X3FABEDA7, 0X7765626A} }, -/**/ {{0X3FB01CF9, 0X97F58C8A} }, -/**/ {{0XBFB1BE51, 0X03074348} } }, -/**/ {{{0X3FE75FFF, 0X25CAB4CA} }, -/**/ {{0X3FE43032, 0X0001D5C0} }, -/**/ {{0X3FE4DDBC, 0X4573FB6C} }, -/**/ {{0XBFD3E0B1, 0X41F21D2A} }, -/**/ {{0X3FAC6D25, 0XD1BDA00F} }, -/**/ {{0X3FAF8962, 0X5935EE68} }, -/**/ {{0XBFB193EB, 0X6F8E0689} } }, -/**/ {{{0X3FE77FFE, 0X90921F76} }, -/**/ {{0X3FE44505, 0X6CC6AF00} }, -/**/ {{0X3FE4C9E1, 0X4CFFBDAE} }, -/**/ {{0XBFD3D5F1, 0X0B247EC4} }, -/**/ {{0X3FACE9EA, 0X943F4516} }, -/**/ {{0X3FAEDA73, 0XF24A8AF1} }, -/**/ {{0XBFB16921, 0X776AAC42} } }, -/**/ {{{0X3FE79FFE, 0X47B2F83B} }, -/**/ {{0X3FE459C5, 0X35C19F20} }, -/**/ {{0X3FE4B610, 0XFC8F20BD} }, -/**/ {{0XBFD3CB02, 0X73DF2A0D} }, -/**/ {{0X3FAD63F8, 0X23C5D6DE} }, -/**/ {{0X3FAE2D31, 0X9C5116AB} }, -/**/ {{0XBFB13DFA, 0X326E2972} } }, -/**/ {{{0X3FE7BFFF, 0X2F1E79A9} }, -/**/ {{0X3FE46E71, 0XF84DF5C0} }, -/**/ {{0X3FE4A24A, 0XF586B1BD} }, -/**/ {{0XBFD3BFE6, 0X2EF81E5B} }, -/**/ {{0X3FADDB58, 0X738896F0} }, -/**/ {{0X3FAD819A, 0X2515DE78} }, -/**/ {{0XBFB1127C, 0X9026FDD0} } }, -/**/ {{{0X3FE7E001, 0X973C8D05} }, -/**/ {{0X3FE4830B, 0XF0FB9580} }, -/**/ {{0X3FE48E8F, 0X3466B08E} }, -/**/ {{0XBFD3B49D, 0X1C53A01A} }, -/**/ {{0X3FAE5013, 0X25103EED} }, -/**/ {{0X3FACD7AF, 0X5290F4AF} }, -/**/ {{0XBFB0E6AF, 0X57EF003B} } }, -/**/ {{{0X3FE7FFFF, 0X69EFC092} }, -/**/ {{0X3FE4978F, 0X431C3800} }, -/**/ {{0X3FE47AE1, 0XA3E1064A} }, -/**/ {{0XBFD3A92A, 0X666C50C4} }, -/**/ {{0X3FAEC219, 0X4098A4BE} }, -/**/ {{0X3FAC2F94, 0X2EEE57E0} }, -/**/ {{0XBFB0BA99, 0X290D5730} } }, -/**/ {{{0X3FE82001, 0XC52B5232} }, -/**/ {{0X3FE4AC01, 0XD2B83340} }, -/**/ {{0X3FE4673C, 0XD31B7CF5} }, -/**/ {{0XBFD39D8B, 0XC67D05F0} }, -/**/ {{0X3FAF3192, 0X2A81B5D5} }, -/**/ {{0X3FAB891B, 0X8AA20E90} }, -/**/ {{0XBFB08E40, 0X7ADCEFD6} } }, -/**/ {{{0X3FE84000, 0XBD4D4E3F} }, -/**/ {{0X3FE4C05E, 0X9B1DBC60} }, -/**/ {{0X3FE453A5, 0XC8D629F7} }, -/**/ {{0XBFD391C5, 0X13E9EF47} }, -/**/ {{0X3FAF9E69, 0X17383D6B} }, -/**/ {{0X3FAAE471, 0X278E21B9} }, -/**/ {{0XBFB061AB, 0X9CF54D10} } }, -/**/ {{{0X3FE86001, 0X8C869CBD} }, -/**/ {{0X3FE4D4A8, 0XFD2285A0} }, -/**/ {{0X3FE44019, 0X79B82471} }, -/**/ {{0XBFD385D5, 0X5C3E2929} }, -/**/ {{0X3FB0045B, 0X7B2C8FF2} }, -/**/ {{0X3FAA417C, 0X39D7CA4F} }, -/**/ {{0XBFB034E0, 0XB767B7D4} } }, -/**/ {{{0X3FE87FFE, 0XB5DB3710} }, -/**/ {{0X3FE4E8DD, 0X8B93BCA0} }, -/**/ {{0X3FE42C9B, 0X66C6E6BF} }, -/**/ {{0XBFD379BF, 0XA32EE2A1} }, -/**/ {{0X3FB03838, 0X6187FE0F} }, -/**/ {{0X3FA9A05A, 0X8B3A0B33} }, -/**/ {{0XBFB007E5, 0XCAEE03A9} } }, -/**/ {{{0X3FE8A000, 0X863C77E3} }, -/**/ {{0X3FE4FD01, 0X8FCD1E80} }, -/**/ {{0X3FE41926, 0XA8A8093F} }, -/**/ {{0XBFD36D81, 0XB5EE344D} }, -/**/ {{0X3FB06ADC, 0X2841F292} }, -/**/ {{0X3FA900E4, 0X2484560B} }, -/**/ {{0XBFAFB581, 0X62792F0A} } }, -/**/ {{{0X3FE8BFFF, 0X0ED982AF} }, -/**/ {{0X3FE51110, 0X16E28AC0} }, -/**/ {{0X3FE405C0, 0X389112EE} }, -/**/ {{0XBFD3611F, 0X89D38DC7} }, -/**/ {{0X3FB09C3D, 0XB450B9F7} }, -/**/ {{0X3FA86342, 0X312D0C4A} }, -/**/ {{0XBFAF5AEE, 0X3A6CA012} } }, -/**/ {{{0X3FE8E000, 0X02C3AEAE} }, -/**/ {{0X3FE5250C, 0XC0AB0A40} }, -/**/ {{0X3FE3F264, 0XC65593C5} }, -/**/ {{0XBFD35497, 0XD82BE900} }, -/**/ {{0X3FB0CC69, 0X68546D39} }, -/**/ {{0X3FA7C759, 0XDB8499FD} }, -/**/ {{0XBFAF001D, 0X36A32337} } }, -/**/ {{{0X3FE90000, 0XECBFA97B} }, -/**/ {{0X3FE538F6, 0X0E8D4EE0} }, -/**/ {{0X3FE3DF15, 0XF4119333} }, -/**/ {{0XBFD347EC, 0X7D2149F4} }, -/**/ {{0X3FB0FB5E, 0XFA921D3C} }, -/**/ {{0X3FA72D38, 0X69693E89} }, -/**/ {{0XBFAEA519, 0X23A0F5F3} } }, -/**/ {{{0X3FE91FFF, 0XD251C01C} }, -/**/ {{0X3FE54CCA, 0XD3F3BD20} }, -/**/ {{0X3FE3CBD5, 0X1554DD15} }, -/**/ {{0XBFD33B1F, 0X2BC94245} }, -/**/ {{0X3FB1291F, 0X2FC4C3F6} }, -/**/ {{0X3FA694E8, 0X1B7A765C} }, -/**/ {{0XBFAE49EC, 0X826E86F6} } }, -/**/ {{{0X3FE94001, 0XD90AF4E6} }, -/**/ {{0X3FE5608E, 0X4D4EC640} }, -/**/ {{0X3FE3B89F, 0X3445EF72} }, -/**/ {{0XBFD32E2E, 0XB7BBD79A} }, -/**/ {{0X3FB155B4, 0XE401D071} }, -/**/ {{0X3FA5FE51, 0X3A256F1C} }, -/**/ {{0XBFADEEA1, 0X890FF662} } }, -/**/ {{{0X3FE96001, 0X04FD6C17} }, -/**/ {{0X3FE5743C, 0XD5673C20} }, -/**/ {{0X3FE3A578, 0X09EBC6E2} }, -/**/ {{0XBFD3211E, 0X6DA5039C} }, -/**/ {{0X3FB1811B, 0X4E62286B} }, -/**/ {{0X3FA56990, 0X71BECE9D} }, -/**/ {{0XBFAD9342, 0X23911641} } }, -/**/ {{{0X3FE98000, 0X2D214B82} }, -/**/ {{0X3FE587D8, 0X3B0D6120} }, -/**/ {{0X3FE3925E, 0X01EAAC3E} }, -/**/ {{0XBFD313EE, 0X08425504} }, -/**/ {{0X3FB1AB5A, 0X02BDB571} }, -/**/ {{0X3FA4D698, 0X9EBD70B8} }, -/**/ {{0XBFAD37D7, 0XF482965A} } }, -/**/ {{{0X3FE99FFD, 0XEB980651} }, -/**/ {{0X3FE59B5F, 0XB16BA7A0} }, -/**/ {{0X3FE37F52, 0X10B1AB7A} }, -/**/ {{0XBFD3069E, 0XF993D676} }, -/**/ {{0X3FB1D472, 0XCDED25A8} }, -/**/ {{0X3FA44570, 0X2D0ABD9A} }, -/**/ {{0XBFACDC6C, 0X56221AA1} } }, -/**/ {{{0X3FE9BFFF, 0XE5504053} }, -/**/ {{0X3FE5AED6, 0XB55DE6A0} }, -/**/ {{0X3FE36C50, 0XFA91C51E} }, -/**/ {{0XBFD2F92F, 0XBE311E56} }, -/**/ {{0X3FB1FC70, 0X5BE3AF05} }, -/**/ {{0X3FA3B5FD, 0XACD5CDC7} }, -/**/ {{0XBFAC8108, 0X5ADBB9B8} } }, -/**/ {{{0X3FE9E001, 0X6E60A234} }, -/**/ {{0X3FE5C23A, 0X79ACD480} }, -/**/ {{0X3FE3595D, 0XA5FAB2EA} }, -/**/ {{0XBFD2EBA3, 0X1DDECEEA} }, -/**/ {{0X3FB22350, 0X35736518} }, -/**/ {{0X3FA32856, 0X22F9FD28} }, -/**/ {{0XBFAC25B4, 0XCE8B2259} } }, -/**/ {{{0X3FE9FFFF, 0XB685741B} }, -/**/ {{0X3FE5D589, 0X5AD40460} }, -/**/ {{0X3FE34679, 0XD832B8D3} }, -/**/ {{0XBFD2DDFB, 0X230EDA41} }, -/**/ {{0X3FB24912, 0XB23C0BA2} }, -/**/ {{0X3FA29C85, 0X4C4E86DA} }, -/**/ {{0XBFABCA7A, 0X37002A55} } }, -/**/ {{{0X3FEA2001, 0X9D59B943} }, -/**/ {{0X3FE5E8C7, 0X8C187EA0} }, -/**/ {{0X3FE333A1, 0X9EDE2183} }, -/**/ {{0XBFD2D035, 0XB0043779} }, -/**/ {{0X3FB26DC3, 0X7AB9110C} }, -/**/ {{0X3FA2126C, 0X959CFC0E} }, -/**/ {{0XBFAB6F60, 0XD556233E} } }, -/**/ {{{0X3FEA3FFF, 0XBE9E153F} }, -/**/ {{0X3FE5FBF0, 0XA9C08AE0} }, -/**/ {{0X3FE320D9, 0X6F7861AA} }, -/**/ {{0XBFD2C256, 0XC2200F18} }, -/**/ {{0X3FB2915D, 0XA6795293} }, -/**/ {{0X3FA18A2B, 0X256A8FDE} }, -/**/ {{0XBFAB1470, 0XA67A4E89} } }, -/**/ {{{0X3FEA5FFE, 0X7A23A1CE} }, -/**/ {{0X3FE60F07, 0X63200600} }, -/**/ {{0X3FE30E1E, 0XD13D395E} }, -/**/ {{0XBFD2B45D, 0X44403932} }, -/**/ {{0X3FB2B3E9, 0XC967F013} }, -/**/ {{0X3FA103AD, 0X35D002B8} }, -/**/ {{0XBFAAB9B1, 0X6496A8F1} } }, -/**/ {{{0X3FEA8001, 0X57F250B8} }, -/**/ {{0X3FE6220D, 0XDD6453A0} }, -/**/ {{0X3FE2FB6F, 0XCFFFCC1E} }, -/**/ {{0XBFD2A648, 0X6F8D8291} }, -/**/ {{0X3FB2D56F, 0X03654CC3} }, -/**/ {{0X3FA07EE3, 0X4BB6E7A6} }, -/**/ {{0XBFAA5F2A, 0X87992F03} } }, -/**/ {{{0X3FEAA000, 0XDD839D49} }, -/**/ {{0X3FE634FF, 0XB412C9A0} }, -/**/ {{0X3FE2E8D0, 0XE2D59E01} }, -/**/ {{0XBFD2981C, 0X5467CFDD} }, -/**/ {{0X3FB2F5E8, 0XFF1FADB5} }, -/**/ {{0X3F9FF7D6, 0XA3BA803C} }, -/**/ {{0XBFAA04E3, 0X46AF8DB7} } }, -/**/ {{{0X3FEAC000, 0X770DF220} }, -/**/ {{0X3FE647DE, 0XFEF70020} }, -/**/ {{0X3FE2D640, 0X220AFF7F} }, -/**/ {{0XBFD289D8, 0X36F9E74F} }, -/**/ {{0X3FB3155E, 0XE509140A} }, -/**/ {{0X3F9EF56B, 0X61AB0B7F} }, -/**/ {{0XBFA9AAE2, 0X98CE391F} } }, -/**/ {{{0X3FEAE001, 0X125BBE48} }, -/**/ {{0X3FE65AAC, 0X57A24D20} }, -/**/ {{0X3FE2C3BD, 0X1BFB3559} }, -/**/ {{0XBFD27B7C, 0X6DDE55DD} }, -/**/ {{0X3FB333D5, 0X15C4C270} }, -/**/ {{0X3F9DF67A, 0X9BAC4ECF} }, -/**/ {{0XBFA9512F, 0X363A972B} } }, -/**/ {{{0X3FEAFFFE, 0X7C321839} }, -/**/ {{0X3FE66D65, 0X569B83C0} }, -/**/ {{0X3FE2B14A, 0X53FBF8D9} }, -/**/ {{0XBFD26D0B, 0X9CFA03CE} }, -/**/ {{0X3FB3514B, 0X2CAA2E0C} }, -/**/ {{0X3F9CFB22, 0X4597BE9A} }, -/**/ {{0XBFA8F7CF, 0X99110022} } }, -/**/ {{{0X3FEB1FFE, 0X75486924} }, -/**/ {{0X3FE6800D, 0X68CEFB40} }, -/**/ {{0X3FE29EE4, 0X8E6AA814} }, -/**/ {{0XBFD25E83, 0XE8AFA7EB} }, -/**/ {{0X3FB36DC9, 0XFB0E8AC8} }, -/**/ {{0X3F9C0331, 0XAD5D66CA} }, -/**/ {{0XBFA89EC9, 0XFEDB1E8B} } }, -/**/ {{{0X3FEB4001, 0X5FB8DEB8} }, -/**/ {{0X3FE692A4, 0XD137C500} }, -/**/ {{0X3FE28C8B, 0XABFF668E} }, -/**/ {{0XBFD24FE5, 0XD8E71E0A} }, -/**/ {{0X3FB38955, 0X1297317A} }, -/**/ {{0X3F9B0EA3, 0X1D844655} }, -/**/ {{0XBFA84624, 0X6914067D} } }, -/**/ {{{0X3FEB6000, 0X386C27B9} }, -/**/ {{0X3FE6A527, 0X8CDF6FC0} }, -/**/ {{0X3FE27A43, 0XC5758DB8} }, -/**/ {{0XBFD24135, 0X59CADCE0} }, -/**/ {{0X3FB3A3E9, 0XEE34AE91} }, -/**/ {{0X3F9A1DA8, 0X1C5FFF05} }, -/**/ {{0XBFA7EDE4, 0X9EC8AAC6} } }, -/**/ {{{0X3FEB8000, 0XD1EFDDB3} }, -/**/ {{0X3FE6B799, 0X0ACCB660} }, -/**/ {{0X3FE26809, 0X9983AAB2} }, -/**/ {{0XBFD23270, 0X76047E08} }, -/**/ {{0X3FB3BD90, 0XF132139B} }, -/**/ {{0X3F993010, 0X58DEB3E1} }, -/**/ {{0XBFA79610, 0X2D194CE9} } }, -/**/ {{{0X3FEB9FFE, 0X42CC4047} }, -/**/ {{0X3FE6C9F6, 0X86445E60} }, -/**/ {{0X3FE255E0, 0X069F871F} }, -/**/ {{0XBFD2239A, 0X25461639} }, -/**/ {{0X3FB3D649, 0XA926C127} }, -/**/ {{0X3F9845FB, 0XC5A21F70} }, -/**/ {{0XBFA73EAC, 0X68E20BE6} } }, -/**/ {{{0X3FEBC001, 0X951AEAAD} }, -/**/ {{0X3FE6DC45, 0X3C4E45A0} }, -/**/ {{0X3FE243C1, 0XFF6573B0} }, -/**/ {{0XBFD214AE, 0XE38FA7E7} }, -/**/ {{0X3FB3EE1E, 0X5EA1330F} }, -/**/ {{0X3F975F24, 0X2BCCE6DF} }, -/**/ {{0XBFA6E7BE, 0X6F3902C5} } }, -/**/ {{{0X3FEBDFFE, 0X6616FE11} }, -/**/ {{0X3FE6EE7E, 0X27106FE0} }, -/**/ {{0X3FE231B6, 0X97B587F0} }, -/**/ {{0XBFD205B5, 0X240FEF32} }, -/**/ {{0X3FB40509, 0X44EB818C} }, -/**/ {{0X3F967BDE, 0X108160F9} }, -/**/ {{0XBFA6914B, 0X271D18AD} } }, -/**/ {{{0X3FEBFFFF, 0X54511C72} }, -/**/ {{0X3FE700A7, 0X643BBB40} }, -/**/ {{0X3FE21FB7, 0XE1823C8B} }, -/**/ {{0XBFD1F6A8, 0X9A854F7A} }, -/**/ {{0X3FB41B15, 0X71F04837} }, -/**/ {{0X3F959BD8, 0XBBD10F7C} }, -/**/ {{0XBFA63B57, 0X41F03711} } }, -/**/ {{{0X3FEC2000, 0XC537593E} }, -/**/ {{0X3FE712BE, 0XF36D6400} }, -/**/ {{0X3FE20DC7, 0XF754B2D5} }, -/**/ {{0XBFD1E78B, 0X9D24DBED} }, -/**/ {{0X3FB43043, 0X94F485E0} }, -/**/ {{0X3F94BF29, 0X122A6884} }, -/**/ {{0XBFA5E5E7, 0X3D2AA4E9} } }, -/**/ {{{0X3FEC4000, 0XDDD35719} }, -/**/ {{0X3FE724C3, 0XD7FA3000} }, -/**/ {{0X3FE1FBE7, 0XF2A8B1BF} }, -/**/ {{0XBFD1D85F, 0XB25DDDF6} }, -/**/ {{0X3FB44495, 0XD2E3B20F} }, -/**/ {{0X3F93E5D6, 0X7FCC1B30} }, -/**/ {{0XBFA590FF, 0X62D0D00F} } }, -/**/ {{{0X3FEC6000, 0X402375B6} }, -/**/ {{0X3FE736B6, 0X7DFF3720} }, -/**/ {{0X3FE1EA17, 0X86C92387} }, -/**/ {{0XBFD1C925, 0X31DDFC58} }, -/**/ {{0X3FB4580F, 0XF8B6CBC2} }, -/**/ {{0X3F930FD7, 0X00CE998E} }, -/**/ {{0XBFA53CA3, 0XCB299E5F} } }, -/**/ {{{0X3FEC7FFF, 0X19904FE4} }, -/**/ {{0X3FE74897, 0X0F395860} }, -/**/ {{0X3FE1D856, 0XA825BA33} }, -/**/ {{0XBFD1B9DC, 0XA75E0FC5} }, -/**/ {{0X3FB46AB5, 0X79F8FD7D} }, -/**/ {{0X3F923D23, 0XA5A90AFE} }, -/**/ {{0XBFA4E8D8, 0X5D2F574B} } }, -/**/ {{{0X3FEC9FFE, 0XF9E2409D} }, -/**/ {{0X3FE75A66, 0X79E7F1C0} }, -/**/ {{0X3FE1C6A4, 0X8740D2E9} }, -/**/ {{0XBFD1AA85, 0XF198392C} }, -/**/ {{0X3FB47C8A, 0X808C583A} }, -/**/ {{0X3F916DAC, 0X857F2526} }, -/**/ {{0XBFA495A0, 0XD0477576} } }, -/**/ {{{0X3FECC001, 0XE038EF72} }, -/**/ {{0X3FE76C25, 0XE6815140} }, -/**/ {{0X3FE1B500, 0X19BDADF8} }, -/**/ {{0XBFD19B20, 0XB4A469AE} }, -/**/ {{0X3FB48D93, 0X42387EA2} }, -/**/ {{0X3F90A15F, 0X7305BAF5} }, -/**/ {{0XBFA44300, 0XACAE4E17} } }, -/**/ {{{0X3FECDFFE, 0XEB72037F} }, -/**/ {{0X3FE77DD0, 0X7A7A4AA0} }, -/**/ {{0X3FE1A36E, 0X4F1F6702} }, -/**/ {{0XBFD18BB1, 0XD0992CF8} }, -/**/ {{0X3FB49DCE, 0X5AA4990D} }, -/**/ {{0X3F8FB0DD, 0X63759665} }, -/**/ {{0XBFA3F0FB, 0X4D2F0C0F} } }, -/**/ {{{0X3FECFFFF, 0XEA4839ED} }, -/**/ {{0X3FE78F6B, 0XB17088C0} }, -/**/ {{0X3FE191E9, 0XCF32122F} }, -/**/ {{0XBFD17C35, 0X220400AC} }, -/**/ {{0X3FB4AD44, 0X0A159641} }, -/**/ {{0X3F8E252C, 0X80894CA9} }, -/**/ {{0XBFA39F93, 0XDF89C265} } }, -/**/ {{{0X3FED1FFD, 0XEC3EC8B2} }, -/**/ {{0X3FE7A0F3, 0XC8C6C880} }, -/**/ {{0X3FE18076, 0X729F01D6} }, -/**/ {{0XBFD16CAE, 0X98515540} }, -/**/ {{0X3FB4BBF4, 0X1B0933FF} }, -/**/ {{0X3F8C9FF5, 0XE09A60CD} }, -/**/ {{0XBFA34ECD, 0X662A5704} } }, -/**/ {{{0X3FED3FFF, 0X7084EDD4} }, -/**/ {{0X3FE7B26C, 0X5F02F220} }, -/**/ {{0X3FE16F10, 0XB9973206} }, -/**/ {{0XBFD15D1B, 0X9E1E0A54} }, -/**/ {{0X3FB4C9E4, 0XAC2C9A30} }, -/**/ {{0X3F8B20DD, 0XEFCE76CC} }, -/**/ {{0XBFA2FEAA, 0XB888BC37} } }, -/**/ {{{0X3FED5FFE, 0X8D728E7C} }, -/**/ {{0X3FE7C3D2, 0X488D7E80} }, -/**/ {{0X3FE15DBB, 0XE622A5A7} }, -/**/ {{0XBFD14D7F, 0XA305CEB2} }, -/**/ {{0X3FB4D716, 0X417BF1C7} }, -/**/ {{0X3F89A81E, 0XE19FE239} }, -/**/ {{0XBFA2AF2E, 0X84DDAD07} } }, -/**/ {{{0X3FED7FFF, 0X70AA3B03} }, -/**/ {{0X3FE7D527, 0XDB239580} }, -/**/ {{0X3FE14C75, 0XBE4FEA01} }, -/**/ {{0XBFD13DD9, 0X2AD706AA} }, -/**/ {{0X3FB4E38D, 0XB49D32AA} }, -/**/ {{0X3F88357A, 0X37DF2B6D} }, -/**/ {{0XBFA2605B, 0X507CD77B} } }, -/**/ {{{0X3FED9FFF, 0X1434FBA3} }, -/**/ {{0X3FE7E66B, 0X82C8A720} }, -/**/ {{0X3FE13B3F, 0XED9B7FED} }, -/**/ {{0XBFD12E2A, 0X3AC9D646} }, -/**/ {{0X3FB4EF4C, 0XE7B01CF5} }, -/**/ {{0X3F86C905, 0XD25FD52D} }, -/**/ {{0XBFA21233, 0X798666EF} } }, -/**/ {{{0X3FEDBFFE, 0XA8C8DE8C} }, -/**/ {{0X3FE7F79D, 0XF4A0A520} }, -/**/ {{0X3FE12A19, 0XD7FC2119} }, -/**/ {{0XBFD11E72, 0XC6BE19DF} }, -/**/ {{0X3FB4FA57, 0X634E1B91} }, -/**/ {{0X3F8562A6, 0X47F96DF5} }, -/**/ {{0XBFA1C4B9, 0X373AF599} } }, -/**/ {{{0X3FEDE000, 0X26573DF5} }, -/**/ {{0X3FE808C0, 0X4DBCB960} }, -/**/ {{0X3FE11902, 0X7903E4B9} }, -/**/ {{0XBFD10EB2, 0X5CDFED06} }, -/**/ {{0X3FB504B0, 0XCCA681FA} }, -/**/ {{0X3F840238, 0X6F3CDE09} }, -/**/ {{0XBFA177EE, 0X9BA8FA6A} } }, -/**/ {{{0X3FEDFFFE, 0X35009B66} }, -/**/ {{0X3FE819CF, 0XC2CB5340} }, -/**/ {{0X3FE107FC, 0XB1C942B5} }, -/**/ {{0XBFD0FEEC, 0X230D7D92} }, -/**/ {{0X3FB50E5A, 0X75C5B4F1} }, -/**/ {{0X3F82A7E8, 0XE3C139D8} }, -/**/ {{0XBFA12BD5, 0X93FA642B} } }, -/**/ {{{0X3FEE2000, 0X492D4C68} }, -/**/ {{0X3FE82AD0, 0X5CCB8680} }, -/**/ {{0X3FE0F704, 0X928E55DF} }, -/**/ {{0XBFD0EF1C, 0XEE0B0721} }, -/**/ {{0X3FB51759, 0X937BFB74} }, -/**/ {{0X3F815359, 0X2BC9FDDB} }, -/**/ {{0XBFA0E06F, 0XEA1D1824} } }, -/**/ {{{0X3FEE4000, 0X9412BB65} }, -/**/ {{0X3FE83BBF, 0X14001A60} }, -/**/ {{0X3FE0E61D, 0X37F485DA} }, -/**/ {{0XBFD0DF48, 0X1B2BD37D} }, -/**/ {{0X3FB51FAF, 0X64024D14} }, -/**/ {{0X3F8004B9, 0X9B849698} }, -/**/ {{0XBFA095BF, 0X450A2434} } }, -/**/ {{{0X3FEE5FFF, 0X4758EF2F} }, -/**/ {{0X3FE84C9C, 0X1531C180} }, -/**/ {{0X3FE0D546, 0X8B7FECE7} }, -/**/ {{0XBFD0CF6E, 0X105BFE1E} }, -/**/ {{0X3FB5275E, 0XF9C5E03A} }, -/**/ {{0X3F7D77F2, 0X17AA1137} }, -/**/ {{0XBFA04BC5, 0X2A6891E1} } }, -/**/ {{{0X3FEE8000, 0X380F819F} }, -/**/ {{0X3FE85D69, 0X74CCC060} }, -/**/ {{0X3FE0C47E, 0X8F1DA5B5} }, -/**/ {{0XBFD0BF8D, 0X62AD700F} }, -/**/ {{0X3FB52E6C, 0X1F3FBC2B} }, -/**/ {{0X3F7AF1C3, 0XEE24AD7D} }, -/**/ {{0XBFA00282, 0XFECE26C9} } }, -/**/ {{{0X3FEEA000, 0XA6D8CB7B} }, -/**/ {{0X3FE86E25, 0XD00E3A60} }, -/**/ {{0X3FE0B3C6, 0XBA314D62} }, -/**/ {{0XBFD0AFA7, 0XE7CB2D84} }, -/**/ {{0X3FB534D9, 0X08E9071F} }, -/**/ {{0X3F787704, 0X4CE5E5C9} }, -/**/ {{0XBF9F73F4, 0X0EB7C9D5} } }, -/**/ {{{0X3FEEC000, 0X5A13BA60} }, -/**/ {{0X3FE87ED1, 0X19B163E0} }, -/**/ {{0X3FE0A31F, 0X2EBB7AD7} }, -/**/ {{0XBFD09FBE, 0X33A3FCE1} }, -/**/ {{0X3FB53AA8, 0X89D9AF5D} }, -/**/ {{0X3F760799, 0XF7F7040B} }, -/**/ {{0XBF9EE456, 0XD3F0B3FB} } }, -/**/ {{{0X3FEEDFFF, 0X58F8DD18} }, -/**/ {{0X3FE88F6B, 0X6681CA80} }, -/**/ {{0X3FE09287, 0XEC4360B3} }, -/**/ {{0XBFD08FD0, 0XB7CE07E5} }, -/**/ {{0X3FB53FDD, 0X7BDEDD3F} }, -/**/ {{0X3F73A366, 0X70C52E66} }, -/**/ {{0XBF9E5630, 0X5DCA7315} } }, -/**/ {{{0X3FEEFFFF, 0XBE033400} }, -/**/ {{0X3FE89FF5, 0XDD4D7960} }, -/**/ {{0X3FE081FF, 0XDFFE15BD} }, -/**/ {{0XBFD07FDE, 0XDAE56C0F} }, -/**/ {{0X3FB5447A, 0XF84D6F5D} }, -/**/ {{0X3F714A24, 0X7982941E} }, -/**/ {{0XBF9DC982, 0X81E68835} } }, -/**/ {{{0X3FEF2001, 0XE6B5125D} }, -/**/ {{0X3FE8B070, 0XBBE88160} }, -/**/ {{0X3FE07186, 0XDF7122E2} }, -/**/ {{0XBFD06FE8, 0XDE905325} }, -/**/ {{0X3FB54883, 0XB5DEEC7A} }, -/**/ {{0X3F6DF762, 0XB4A186D5} }, -/**/ {{0XBF9D3E4E, 0XDE20F495} } }, -/**/ {{{0X3FEF3FFD, 0XF770E0DB} }, -/**/ {{0X3FE8C0D8, 0X09E96380} }, -/**/ {{0X3FE06120, 0XF5A576A9} }, -/**/ {{0XBFD05FF3, 0X1D2912FF} }, -/**/ {{0X3FB54BF9, 0X8CD1001F} }, -/**/ {{0X3F6970FC, 0X6E90DC16} }, -/**/ {{0XBF9CB496, 0XD8EB587E} } }, -/**/ {{{0X3FEF5FFE, 0X4E16DA33} }, -/**/ {{0X3FE8D131, 0X29BCCDC0} }, -/**/ {{0X3FE050C8, 0XD33BA4E9} }, -/**/ {{0XBFD04FF8, 0XD74C83D2} }, -/**/ {{0X3FB54EE0, 0X592BB252} }, -/**/ {{0X3F64FF61, 0X7193EEB5} }, -/**/ {{0XBF9C2C5B, 0XA459AC86} } }, -/**/ {{{0X3FEF8000, 0X4576FF2E} }, -/**/ {{0X3FE8E17A, 0XCCE443A0} }, -/**/ {{0X3FE0407F, 0XD8A97B6C} }, -/**/ {{0XBFD03FFB, 0XC91B3E55} }, -/**/ {{0X3FB5513A, 0X5F3357F7} }, -/**/ {{0X3F60A2BA, 0X14C92B53} }, -/**/ {{0XBF9BA59E, 0X3E70DF71} } }, -/**/ {{{0X3FEF9FFF, 0X39B6A330} }, -/**/ {{0X3FE8F1B2, 0XA7F515A0} }, -/**/ {{0X3FE03048, 0X63064158} }, -/**/ {{0XBFD02FFE, 0XACBAADA8} }, -/**/ {{0X3FB55309, 0XF27448C0} }, -/**/ {{0X3F58B6D6, 0X4850006B} }, -/**/ {{0XBF9B205F, 0X742323DF} } }, -/**/ {{{0X3FEFC001, 0XAA76C0B9} }, -/**/ {{0X3FE901DC, 0X15D66D80} }, -/**/ {{0X3FE0201F, 0X28D9B4AA} }, -/**/ {{0XBFD01FFE, 0XA98D4C38} }, -/**/ {{0X3FB55452, 0X089780F8} }, -/**/ {{0X3F5050B5, 0X7F35C5BB} }, -/**/ {{0XBF9A9C9F, 0XE19247AF} } }, -/**/ {{{0X3FEFDFFE, 0X39A592CA} }, -/**/ {{0X3FE911F2, 0X6D88A780} }, -/**/ {{0X3FE01008, 0XE40C6538} }, -/**/ {{0XBFD01000, 0XD31688DE} }, -/**/ {{0X3FB55514, 0XE32F1816} }, -/**/ {{0X3F402A15, 0X4E1628D2} }, -/**/ {{0XBF9A1A5F, 0XF4FAF5A0} } }, -/**/ {{{0X3FEFF801, 0X8E92D1B0} }, -/**/ {{0X3FE91DFB, 0X9BB4BF00} }, -/**/ {{0X3FE003FF, 0XB884C5A9} }, -/**/ {{0XBFD003FF, 0X3876A954} }, -/**/ {{0X3FB55551, 0X5539DDFB} }, -/**/ {{0X3F2007E7, 0X7B95E6C2} }, -/**/ {{0XBF99B9A7, 0X18A3BA58} } }, - }; - - static const number - hij[241][16] = { /* x0,hij for (1/16,1) */ -/**/ {{{0x3fb04000, 0x00000000} }, -/**/ {{0x3fb03a6d, 0x1c06693d} }, -/**/ {{0xbc428a02, 0xd4e7f128} }, -/**/ {{0x3fefdf1f, 0xe92592ae} }, -/**/ {{0x3c88bfc0, 0xb5490162} }, -/**/ {{0xbfb01ead, 0x8f7e4151} }, -/**/ {{0xbc5395e8, 0x0b64d205} }, -/**/ {{0xbfd4d29f, 0x433dd49b} }, -/**/ {{0xbc75b19d, 0x4aa42633} }, -/**/ {{0x3fafda41, 0xce35961d} }, -/**/ {{0x3c4e6a5f, 0x425d7696} }, -/**/ {{0x3fc814dd, 0x6c1bb5e2} }, -/**/ {{0xbfaf4cb7, 0x2b33739f} }, -/**/ {{0xbfc048b2, 0xc267d8ec} }, -/**/ {{0x3fae9649, 0xe8ababc6} }, -/**/ {{0x3fb78293, 0xfe802692} } }, -/**/ {{{0x3fb10000, 0x00000000} }, -/**/ {{0x3fb0f99e, 0xa71d52a7} }, -/**/ {{0xbc22069f, 0xeec3624f} }, -/**/ {{0x3fefdc08, 0x9a49d2a9} }, -/**/ {{0x3c7780f7, 0x68b2ce25} }, -/**/ {{0xbfb0d9de, 0x9da73e1d} }, -/**/ {{0x3c4ebf46, 0xa1a487bf} }, -/**/ {{0xbfd4c669, 0xd13ea108} }, -/**/ {{0x3c7354bc, 0xebb4528c} }, -/**/ {{0x3fb0a137, 0x789374c1} }, -/**/ {{0xbc56c223, 0xc3f2c5c2} }, -/**/ {{0x3fc7f0e7, 0x79c60cda} }, -/**/ {{0xbfb05062, 0xcdcc7b81} }, -/**/ {{0xbfc019e4, 0xc5266783} }, -/**/ {{0x3fafd0b2, 0xf2540289} }, -/**/ {{0x3fb71107, 0xf6d3cd8a} } }, -/**/ {{{0x3fb20000, 0x00000000} }, -/**/ {{0x3fb1f86d, 0xbf082d59} }, -/**/ {{0xbc4095dc, 0x7732ef81} }, -/**/ {{0x3fefd7b3, 0x01722b81} }, -/**/ {{0xbc5e618c, 0x8a212e02} }, -/**/ {{0xbfb1d2c5, 0xee4e9cfa} }, -/**/ {{0x3c426273, 0x29abece0} }, -/**/ {{0xbfd4b551, 0x37eb7f46} }, -/**/ {{0x3c73b360, 0x01d8bf12} }, -/**/ {{0x3fb18fa7, 0x6adb6a7c} }, -/**/ {{0xbc5c00d8, 0x398999ad} }, -/**/ {{0x3fc7bea5, 0xf4a7cff3} }, -/**/ {{0xbfb13008, 0x61f84829} }, -/**/ {{0xbfbfb14f, 0xa8e135a1} }, -/**/ {{0x3fb0b532, 0x4324f177} }, -/**/ {{0x3fb6734a, 0x3498dd9d} } }, -/**/ {{{0x3fb30000, 0x00000000} }, -/**/ {{0x3fb2f719, 0x318a4a9a} }, -/**/ {{0x3c03fd17, 0x79b9801f} }, -/**/ {{0x3fefd31f, 0x48e238fe} }, -/**/ {{0xbc876a7a, 0xd8c45327} }, -/**/ {{0xbfb2cada, 0x852096e2} }, -/**/ {{0x3c460860, 0x11efd787} }, -/**/ {{0xbfd4a34b, 0x2e476a39} }, -/**/ {{0x3c7254f2, 0xeb11ee51} }, -/**/ {{0x3fb27c13, 0xc54ae225} }, -/**/ {{0x3c513096, 0x4ae66f0c} }, -/**/ {{0x3fc789ca, 0xef0d59d0} }, -/**/ {{0xbfb20c06, 0x6d9aaa8c} }, -/**/ {{0xbfbf2885, 0x846ba912} }, -/**/ {{0x3fb17c5f, 0xc697ef5e} }, -/**/ {{0x3fb5ce93, 0xcad31e6e} } }, -/**/ {{{0x3fb40000, 0x00000000} }, -/**/ {{0x3fb3f59f, 0x0e7c559d} }, -/**/ {{0x3c5ac4ce, 0x285df847} }, -/**/ {{0x3fefce4d, 0xa6ab93e9} }, -/**/ {{0xbc6be46b, 0x18a97736} }, -/**/ {{0xbfb3c211, 0x4d22b635} }, -/**/ {{0x3c42033c, 0x6950679f} }, -/**/ {{0xbfd49059, 0xc4d74033} }, -/**/ {{0x3c57dd7c, 0xd7e376aa} }, -/**/ {{0x3fb36662, 0xc0896a7c} }, -/**/ {{0xbc36cf6a, 0xd79232cf} }, -/**/ {{0x3fc75261, 0xa13a97a2} }, -/**/ {{0xbfb2e431, 0x5fdd1509} }, -/**/ {{0xbfbe9999, 0x6e52db32} }, -/**/ {{0x3fb23da4, 0xb0a71e9f} }, -/**/ {{0x3fb52335, 0xe3bc8178} } }, -/**/ {{{0x3fb50000, 0x00000000} }, -/**/ {{0x3fb4f3fd, 0x677292fb} }, -/**/ {{0x3c4008d3, 0x6264979e} }, -/**/ {{0x3fefc93e, 0x53a1ee0d} }, -/**/ {{0xbc64421a, 0x20fd2bdf} }, -/**/ {{0xbfb4b85f, 0x4aba88e3} }, -/**/ {{0x3c54f184, 0x3c9d1e89} }, -/**/ {{0xbfd47c7f, 0x25ae4668} }, -/**/ {{0xbc7d7581, 0x816630d1} }, -/**/ {{0x3fb44e7b, 0x07f85056} }, -/**/ {{0x3c56d63c, 0x910bdf4f} }, -/**/ {{0x3fc71875, 0xc439029c} }, -/**/ {{0xbfb3b85e, 0xf2bcfa10} }, -/**/ {{0xbfbe04bb, 0x9707b205} }, -/**/ {{0x3fb2f8c6, 0x95e3e0cc} }, -/**/ {{0x3fb47184, 0x8093431b} } }, -/**/ {{{0x3fb60000, 0x00000000} }, -/**/ {{0x3fb5f232, 0x4fd2d7b2} }, -/**/ {{0x3c58a8da, 0x4401318e} }, -/**/ {{0x3fefc3f1, 0x8b549418} }, -/**/ {{0x3c34d896, 0x836f8130} }, -/**/ {{0xbfb5adb9, 0x9cdd92e7} }, -/**/ {{0x3c4d4161, 0xeb397cc3} }, -/**/ {{0xbfd467bd, 0x93f8f1dc} }, -/**/ {{0xbc609d7b, 0xffc760ad} }, -/**/ {{0x3fb53443, 0xbea6b2fe} }, -/**/ {{0x3c5eb03c, 0x4b24f5db} }, -/**/ {{0x3fc6dc13, 0x8de3d005} }, -/**/ {{0xbfb48866, 0x37d2d99d} }, -/**/ {{0xbfbd6a1d, 0xf6663fcb} }, -/**/ {{0x3fb3ad8e, 0x0adff464} }, -/**/ {{0x3fb3b9d6, 0x4159c223} } }, -/**/ {{{0x3fb70000, 0x00000000} }, -/**/ {{0x3fb6f03b, 0xdcea4b0d} }, -/**/ {{0xbc33f00e, 0x512fa17d} }, -/**/ {{0x3fefbe67, 0x8c07a436} }, -/**/ {{0xbc84baaa, 0x46250d6f} }, -/**/ {{0xbfb6a215, 0x7e3ba4c7} }, -/**/ {{0xbc3504e7, 0x54503f8d} }, -/**/ {{0xbfd45217, 0x6b82d03a} }, -/**/ {{0x3c7d1f0d, 0xbebdd1db} }, -/**/ {{0x3fb617a4, 0x841d5604} }, -/**/ {{0xbc47168b, 0x6681c436} }, -/**/ {{0x3fc69d47, 0xaccec6ce} }, -/**/ {{0xbfb5541f, 0xa4715800} }, -/**/ {{0xbfbcc9f4, 0x335a1c1b} }, -/**/ {{0x3fb45bc6, 0xbac0061f} }, -/**/ {{0x3fb2fc84, 0x2b3853b6} } }, -/**/ {{{0x3fb80000, 0x00000000} }, -/**/ {{0x3fb7ee18, 0x2602f10f} }, -/**/ {{0xbc5cfb65, 0x4c0c3d98} }, -/**/ {{0x3fefb8a0, 0x96acfacc} }, -/**/ {{0xbc82962e, 0x18495af3} }, -/**/ {{0xbfb79568, 0x46635c89} }, -/**/ {{0x3c5ac468, 0xa6bfd498} }, -/**/ {{0xbfd43b8f, 0x2037b997} }, -/**/ {{0xbc72ad53, 0xe2f12373} }, -/**/ {{0x3fb6f885, 0x7900c4ee} }, -/**/ {{0x3c53145d, 0x0aef1f9d} }, -/**/ {{0x3fc65c1f, 0x4409ba0e} }, -/**/ {{0xbfb61b65, 0x1d176e0c} }, -/**/ {{0xbfbc2473, 0x8ad65152} }, -/**/ {{0x3fb5033f, 0x7bc246c1} }, -/**/ {{0x3fb239e9, 0x6db30b46} } }, -/**/ {{{0x3fb90000, 0x00000000} }, -/**/ {{0x3fb8ebc5, 0x4478fb28} }, -/**/ {{0x3c473288, 0x0cad24cc} }, -/**/ {{0x3fefb29c, 0xeedcd6d7} }, -/**/ {{0x3c8efa9e, 0x23ea50f0} }, -/**/ {{0xbfb887a7, 0x6ae09982} }, -/**/ {{0x3c5b2275, 0x53801511} }, -/**/ {{0xbfd42427, 0x3da0757c} }, -/**/ {{0xbc7199e5, 0x311c7ac8} }, -/**/ {{0x3fb7d6cf, 0x4388717b} }, -/**/ {{0xbc5c4eb2, 0x3dd070b4} }, -/**/ {{0x3fc618a7, 0xe6c2b5f3} }, -/**/ {{0xbfb6de12, 0x00313569} }, -/**/ {{0xbfbb79d2, 0xb6316619} }, -/**/ {{0x3fb5a3ca, 0x61af5c21} }, -/**/ {{0x3fb17263, 0x26e60289} } }, -/**/ {{{0x3fba0000, 0x00000000} }, -/**/ {{0x3fb9e941, 0x53cfdcf1} }, -/**/ {{0x3c5a332e, 0x1d69c47e} }, -/**/ {{0x3fefac5c, 0xdace3776} }, -/**/ {{0xbc8c9a78, 0x1ad91ab5} }, -/**/ {{0xbfb978c8, 0x8054ad75} }, -/**/ {{0xbc5e35b8, 0x8ed66c17} }, -/**/ {{0xbfd40be2, 0x665afed1} }, -/**/ {{0x3c62eeef, 0x08ef10fb} }, -/**/ {{0x3fb8b26b, 0x13c989d2} }, -/**/ {{0x3c329f11, 0xbfeab3ba} }, -/**/ {{0x3fc5d2ef, 0x93c8f97c} }, -/**/ {{0xbfb79c03, 0x30234881} }, -/**/ {{0xbfbaca49, 0xd0f650c8} }, -/**/ {{0x3fb63d3c, 0xce2dcccc} }, -/**/ {{0x3fb0a650, 0x26fb0af2} } }, -/**/ {{{0x3fbb0000, 0x00000000} }, -/**/ {{0x3fbae68a, 0x71c722b8} }, -/**/ {{0x3c4c014e, 0x6910b9db} }, -/**/ {{0x3fefa5e0, 0xa34ef42b} }, -/**/ {{0xbc836583, 0xeb56d5b9} }, -/**/ {{0xbfba68c1, 0x3b881779} }, -/**/ {{0xbc473a0d, 0x13a09314} }, -/**/ {{0xbfd3f2c3, 0x538e939c} }, -/**/ {{0xbc68ed49, 0xee53e648} }, -/**/ {{0x3fb98b42, 0xa7d45973} }, -/**/ {{0xbc523943, 0x461ca7c4} }, -/**/ {{0x3fc58b04, 0xb0f2e2bb} }, -/**/ {{0xbfb85517, 0x1c9d23dc} }, -/**/ {{0xbfba1612, 0x3e3b5a66} }, -/**/ {{0x3fb6cf6f, 0x7ef1d0b9} }, -/**/ {{0x3fafac21, 0x6617b315} } }, -/**/ {{{0x3fbc0000, 0x00000000} }, -/**/ {{0x3fbbe39e, 0xbe6f07c3} }, -/**/ {{0x3c5f7b8f, 0x29a05987} }, -/**/ {{0x3fef9f28, 0x93bb9192} }, -/**/ {{0x3c78260b, 0x7cd1bdab} }, -/**/ {{0xbfbb5787, 0x72759741} }, -/**/ {{0x3c52f93f, 0xa6767247} }, -/**/ {{0xbfd3d8cc, 0xd45bbe91} }, -/**/ {{0x3c664839, 0x2edc0762} }, -/**/ {{0x3fba6140, 0x4fa31d26} }, -/**/ {{0x3c400647, 0x97891510} }, -/**/ {{0x3fc540f6, 0x0668fd66} }, -/**/ {{0xbfb9092d, 0xcb2f6e8f} }, -/**/ {{0xbfb95d66, 0x8d902073} }, -/**/ {{0x3fb75a3e, 0x99c53d16} }, -/**/ {{0x3fae040c, 0x8f475e61} } }, -/**/ {{{0x3fbd0000, 0x00000000} }, -/**/ {{0x3fbce07c, 0x5c3cca32} }, -/**/ {{0x3c4138e6, 0x425918a7} }, -/**/ {{0x3fef9834, 0xf9f6d421} }, -/**/ {{0x3c6f3089, 0x8c22a239} }, -/**/ {{0xbfbc4511, 0x1d4e69a5} }, -/**/ {{0x3c254c0f, 0xd2083ce8} }, -/**/ {{0xbfd3be01, 0xcd488978} }, -/**/ {{0x3c5612db, 0x6362ec0f} }, -/**/ {{0x3fbb344e, 0xf0d94873} }, -/**/ {{0xbc182beb, 0xfdf7db72} }, -/**/ {{0x3fc4f4d2, 0xb9d86c04} }, -/**/ {{0xbfb9b828, 0xdf238807} }, -/**/ {{0xbfb8a082, 0x5f93ffd6} }, -/**/ {{0x3fb7dd89, 0xb6650b0c} }, -/**/ {{0x3fac5526, 0xb62676ef} } }, -/**/ {{{0x3fbe0000, 0x00000000} }, -/**/ {{0x3fbddd21, 0x701eba6e} }, -/**/ {{0x3c594eff, 0xcd76fe58} }, -/**/ {{0x3fef9106, 0x266112ba} }, -/**/ {{0x3c74c302, 0x6b7e18b1} }, -/**/ {{0xbfbd3154, 0x5777816c} }, -/**/ {{0x3c5dc7e4, 0x1f9dbddd} }, -/**/ {{0xbfd3a265, 0x37a90881} }, -/**/ {{0xbc75bd61, 0xeb7ba840} }, -/**/ {{0x3fbc045a, 0x0a52514b} }, -/**/ {{0xbc35ca88, 0xcff49a99} }, -/**/ {{0x3fc4a6aa, 0x498eeb56} }, -/**/ {{0xbfba61eb, 0xa09232cf} }, -/**/ {{0xbfb7dfa2, 0x4a464027} }, -/**/ {{0x3fb85933, 0xe633c053} }, -/**/ {{0x3faaa036, 0x3f920107} } }, -/**/ {{{0x3fbf0000, 0x00000000} }, -/**/ {{0x3fbed98c, 0x2190043b} }, -/**/ {{0xbc23a598, 0x592c7b13} }, -/**/ {{0x3fef899c, 0x6bcf4ad8} }, -/**/ {{0x3c55fd73, 0x912c09b0} }, -/**/ {{0xbfbe1c47, 0x607f91a0} }, -/**/ {{0x3c576677, 0x5b5db022} }, -/**/ {{0xbfd385fa, 0x21046f5f} }, -/**/ {{0x3c7f01c3, 0x4487f4b8} }, -/**/ {{0x3fbcd14d, 0xb77f2d51} }, -/**/ {{0x3c57a86d, 0x30a2ccfe} }, -/**/ {{0x3fc4568c, 0x8782b530} }, -/**/ {{0xbfbb065b, 0x02b7ad2d} }, -/**/ {{0xbfb71b03, 0xbd215555} }, -/**/ {{0x3fb8cd23, 0xb9c1c1de} }, -/**/ {{0x3fa8e602, 0x8dbfa69b} } }, -/**/ {{{0x3fc00000, 0x00000000} }, -/**/ {{0x3fbfd5ba, 0x9aac2f6e} }, -/**/ {{0xbc4cd376, 0x86760c17} }, -/**/ {{0x3fef81f8, 0x1f81f820} }, -/**/ {{0xbc8f81f8, 0x1f81f820} }, -/**/ {{0xbfbf05e0, 0x9d0dc11b} }, -/**/ {{0xbc35a199, 0x1d821725} }, -/**/ {{0xbfd368c3, 0xaa76e1d7} }, -/**/ {{0xbc672d4c, 0xc796f8cd} }, -/**/ {{0x3fbd9b16, 0xb391c2e3} }, -/**/ {{0x3c58051b, 0x8086c51d} }, -/**/ {{0x3fc40489, 0x94488c86} }, -/**/ {{0xbfbba55d, 0xa98401c8} }, -/**/ {{0xbfb652e4, 0xe5127e64} }, -/**/ {{0x3fb93943, 0x442e53ae} }, -/**/ {{0x3fa72753, 0x86286f75} } }, -/**/ {{{0x3fc08000, 0x00000000} }, -/**/ {{0x3fc068d5, 0x84212b3e} }, -/**/ {{0xbc69e2d2, 0x83019bfd} }, -/**/ {{0x3fef7a19, 0x991bb133} }, -/**/ {{0x3c7a956a, 0x66627723} }, -/**/ {{0xbfbfee16, 0x97c8e137} }, -/**/ {{0x3c4d9399, 0x66dbe7af} }, -/**/ {{0xbfd34ac5, 0x0810323a} }, -/**/ {{0x3c6a1a57, 0x6bc6c512} }, -/**/ {{0x3fbe61a2, 0x5c75a6f9} }, -/**/ {{0xbc492b99, 0xd75c8f85} }, -/**/ {{0x3fc3b0b1, 0xd9fa3f20} }, -/**/ {{0xbfbc3edb, 0xee66d309} }, -/**/ {{0xbfb58784, 0x905eeb33} }, -/**/ {{0x3fb99d80, 0x1c65bb14} }, -/**/ {{0x3fa564f1, 0x18a09884} } }, -/**/ {{{0x3fc10000, 0x00000000} }, -/**/ {{0x3fc0e6ad, 0xccf40882} }, -/**/ {{0xbc6d71a3, 0x1bb98d0d} }, -/**/ {{0x3fef7201, 0x32978bad} }, -/**/ {{0x3c816476, 0x599381e9} }, -/**/ {{0xbfc06a70, 0x011b81fd} }, -/**/ {{0xbc422f5d, 0x9ba697ca} }, -/**/ {{0xbfd32c01, 0x802fc0a5} }, -/**/ {{0x3c7d8e47, 0x08a20868} }, -/**/ {{0x3fbf24de, 0xb59597fe} }, -/**/ {{0xbc43288f, 0x410d31eb} }, -/**/ {{0x3fc35b16, 0x070feb24} }, -/**/ {{0xbfbcd2bf, 0xe4565b78} }, -/**/ {{0xbfb4b922, 0x128768c6} }, -/**/ {{0x3fb9f9cb, 0x5c42a097} }, -/**/ {{0x3fa39fa2, 0xc7f97f2e} } }, -/**/ {{{0x3fc18000, 0x00000000} }, -/**/ {{0x3fc16465, 0x41060850} }, -/**/ {{0x3c66bcee, 0x8ae7ea92} }, -/**/ {{0x3fef69af, 0x483f492b} }, -/**/ {{0xbc6e3280, 0x57db963e} }, -/**/ {{0xbfc0dd19, 0xdacaa844} }, -/**/ {{0xbc6133c7, 0xad7fc21e} }, -/**/ {{0xbfd30c7c, 0x6addaea8} }, -/**/ {{0xbc71443d, 0x89161c76} }, -/**/ {{0x3fbfe4ba, 0x6a6d3cd2} }, -/**/ {{0x3c50d4b8, 0x423ee67a} }, -/**/ {{0x3fc303c7, 0x092e569a} }, -/**/ {{0xbfbd60f5, 0x5b11d3b6} }, -/**/ {{0xbfb3e7fd, 0x283b5c55} }, -/**/ {{0x3fba4e19, 0x9d9a6ab7} }, -/**/ {{0x3fa1d82f, 0x3487cc29} } }, -/**/ {{{0x3fc20000, 0x00000000} }, -/**/ {{0x3fc1e1fa, 0xfb043727} }, -/**/ {{0xbc4b4859, 0x14dacf8c} }, -/**/ {{0x3fef6124, 0x38a14f5e} }, -/**/ {{0x3c798e9e, 0x001f6124} }, -/**/ {{0xbfc14f04, 0x59d3fb7c} }, -/**/ {{0x3c531efa, 0x4cc99cb2} }, -/**/ {{0xbfd2ec39, 0x31219b34} }, -/**/ {{0xbc618697, 0x6e004611} }, -/**/ {{0x3fc05092, 0x68736312} }, -/**/ {{0x3c67aad4, 0x8a06e4b5} }, -/**/ {{0x3fc2aad6, 0x07eca5ec} }, -/**/ {{0xbfbde969, 0xe19fe31c} }, -/**/ {{0xbfb31455, 0xdb6b9127} }, -/**/ {{0x3fba9a62, 0xf53dd9ee} }, -/**/ {{0x3fa00f5b, 0xa8e4ede0} } }, -/**/ {{{0x3fc28000, 0x00000000} }, -/**/ {{0x3fc25f6e, 0x171a535c} }, -/**/ {{0x3c67c6d7, 0xbde1a310} }, -/**/ {{0x3fef5860, 0x64866d22} }, -/**/ {{0x3c88c6ff, 0xd1f6326c} }, -/**/ {{0xbfc1c02b, 0x13c11396} }, -/**/ {{0xbc51b469, 0xffeb1a0f} }, -/**/ {{0xbfd2cb3b, 0x4c571b0f} }, -/**/ {{0x3c6e4f76, 0x2fb0b163} }, -/**/ {{0x3fc0ad06, 0xf5c213ab} }, -/**/ {{0x3c625bf2, 0xabea9e66} }, -/**/ {{0x3fc25054, 0x5f93bbb2} }, -/**/ {{0xbfbe6c0c, 0xc80a32c8} }, -/**/ {{0xbfb23e6c, 0x678d0d1e} }, -/**/ {{0x3fbadea2, 0xebf8ae4b} }, -/**/ {{0x3f9c8bd7, 0x527f133b} } }, -/**/ {{{0x3fc30000, 0x00000000} }, -/**/ {{0x3fc2dcbd, 0xb2fba1ff} }, -/**/ {{0x3c58f287, 0x05561534} }, -/**/ {{0x3fef4f64, 0x2ee76e94} }, -/**/ {{0x3c80ec89, 0xc6da5865} }, -/**/ {{0xbfc23089, 0xb322f867} }, -/**/ {{0x3c4c2b54, 0x5fcd0d6f} }, -/**/ {{0xbfd2a986, 0x45802261} }, -/**/ {{0xbc79a132, 0x5ae78b8a} }, -/**/ {{0x3fc107b3, 0x35a9d974} }, -/**/ {{0x3c5ef22d, 0xb725e335} }, -/**/ {{0x3fc1f453, 0x9bd98832} }, -/**/ {{0xbfbee8cf, 0x2057aad4} }, -/**/ {{0xbfb16681, 0x1e1bc3a1} }, -/**/ {{0x3fbb1ad8, 0x759c8f58} }, -/**/ {{0x3f98f941, 0x0b15b4aa} } }, -/**/ {{{0x3fc38000, 0x00000000} }, -/**/ {{0x3fc359e8, 0xedeb99a4} }, -/**/ {{0xbc6a5fd7, 0x4e4604c6} }, -/**/ {{0x3fef462f, 0xfce28238} }, -/**/ {{0x3c83dc01, 0xd90595d1} }, -/**/ {{0xbfc2a01b, 0xf7edfa6d} }, -/**/ {{0xbc6b11fb, 0x4a3b5c9a} }, -/**/ {{0xbfd2871d, 0xb4959402} }, -/**/ {{0xbc4a3702, 0x2fcf7ea3} }, -/**/ {{0x3fc1608f, 0xd8d7fe8c} }, -/**/ {{0x3c61ac60, 0xf8f1d41c} }, -/**/ {{0x3fc196e5, 0x729a89ca} }, -/**/ {{0xbfbf5fa3, 0xbec74f31} }, -/**/ {{0xbfb08cd4, 0x4b6c9767} }, -/**/ {{0x3fbb4f05, 0xe624ce15} }, -/**/ {{0x3f956871, 0xddb2020c} } }, -/**/ {{{0x3fc40000, 0x00000000} }, -/**/ {{0x3fc3d6ee, 0xe8c6626c} }, -/**/ {{0x3c661a3b, 0x0ce9281b} }, -/**/ {{0x3fef3cc4, 0x35b0713c} }, -/**/ {{0x3c81d0a7, 0xe69ea094} }, -/**/ {{0xbfc30edd, 0xb7d169f0} }, -/**/ {{0x3c6b3394, 0xae999b97} }, -/**/ {{0xbfd26405, 0x3fd62b3c} }, -/**/ {{0x3c73e339, 0xc0736df9} }, -/**/ {{0x3fc1b795, 0xe8e57ee3} }, -/**/ {{0xbc6130dc, 0x0a42c7f6} }, -/**/ {{0x3fc1381b, 0xbe93b8e5} }, -/**/ {{0xbfbfd07f, 0x394e1bf7} }, -/**/ {{0xbfaf634c, 0x37bb5315} }, -/**/ {{0x3fbb7b30, 0xe501e57b} }, -/**/ {{0x3f91dae1, 0x20503792} } }, -/**/ {{{0x3fc48000, 0x00000000} }, -/**/ {{0x3fc453ce, 0xc6092a9e} }, -/**/ {{0x3c61f653, 0xb3a5a78b} }, -/**/ {{0x3fef3321, 0x4299ace8} }, -/**/ {{0xbc87414c, 0x3a742b30} }, -/**/ {{0xbfc37cca, 0xde8b2323} }, -/**/ {{0x3c649378, 0x7b50aedf} }, -/**/ {{0xbfd24040, 0x9b13f4d0} }, -/**/ {{0x3c7e271f, 0xb7dc85c0} }, -/**/ {{0x3fc20cbe, 0xc9024068} }, -/**/ {{0x3c50921f, 0x88ef3da7} }, -/**/ {{0x3fc0d808, 0x7a1f1270} }, -/**/ {{0xbfc01dab, 0xf32d5436} }, -/**/ {{0xbfadaa6d, 0x02e6f09c} }, -/**/ {{0x3fbb9f62, 0x5e9cd766} }, -/**/ {{0x3f8ca3fe, 0xab964c04} } }, -/**/ {{{0x3fc50000, 0x00000000} }, -/**/ {{0x3fc4d087, 0xa9da4f17} }, -/**/ {{0x3c61f323, 0xf1adf158} }, -/**/ {{0x3fef2947, 0x8eeb3352} }, -/**/ {{0x3c871eb0, 0x8799a164} }, -/**/ {{0xbfc3e9df, 0x6e36e75c} }, -/**/ {{0x3c541555, 0x4e37666f} }, -/**/ {{0xbfd21bd3, 0x87008bd0} }, -/**/ {{0xbc609e14, 0xc24ff75f} }, -/**/ {{0x3fc26004, 0x36860504} }, -/**/ {{0xbc58f8ca, 0x1ebc8c40} }, -/**/ {{0x3fc076bd, 0xb9f4ead3} }, -/**/ {{0xbfc05012, 0xed70ddd5} }, -/**/ {{0xbfabef8a, 0x33e194b1} }, -/**/ {{0x3fbbbba6, 0x7423a91f} }, -/**/ {{0x3f859e6a, 0xdd99da12} } }, -/**/ {{{0x3fc58000, 0x00000000} }, -/**/ {{0x3fc54d18, 0xba11570a} }, -/**/ {{0x3c618282, 0xf2884073} }, -/**/ {{0x3fef1f37, 0x87eb4d7d} }, -/**/ {{0x3c8476f0, 0xedda13e6} }, -/**/ {{0xbfc45617, 0x7f997c7c} }, -/**/ {{0xbc46bf5b, 0x6423ceda} }, -/**/ {{0xbfd1f6c1, 0xd0784ec7} }, -/**/ {{0xbc74ec12, 0xd106a8e0} }, -/**/ {{0x3fc2b160, 0x4967338d} }, -/**/ {{0x3c5309c0, 0x61339c25} }, -/**/ {{0x3fc0144d, 0xa7f42962} }, -/**/ {{0xbfc07f71, 0x73dbaeec} }, -/**/ {{0xbfaa3322, 0x2aeda9a4} }, -/**/ {{0x3fbbd00c, 0x69b152b3} }, -/**/ {{0x3f7d4f90, 0x4c782821} } }, -/**/ {{{0x3fc60000, 0x00000000} }, -/**/ {{0x3fc5c981, 0x1e3ec26a} }, -/**/ {{0xbc5054ab, 0x2c010f3d} }, -/**/ {{0x3fef14f1, 0x9cce28eb} }, -/**/ {{0xbc8b7c25, 0x2708cd6e} }, -/**/ {{0xbfc4c16f, 0x42678d07} }, -/**/ {{0x3c5f55ba, 0xc1560017} }, -/**/ {{0xbfd1d10f, 0x4fccc153} }, -/**/ {{0x3c529588, 0x1bcc361d} }, -/**/ {{0x3fc300cd, 0x74979f8c} }, -/**/ {{0xbc6b1da5, 0x0bc1e891} }, -/**/ {{0x3fbf6194, 0xfbe70208} }, -/**/ {{0xbfc0abc5, 0x4b1c266f} }, -/**/ {{0xbfa875b2, 0x3b74e858} }, -/**/ {{0x3fbbdca6, 0x92e46f11} }, -/**/ {{0x3f6f0b17, 0x9de94aef} } }, -/**/ {{{0x3fc68000, 0x00000000} }, -/**/ {{0x3fc645bf, 0xffb3aa74} }, -/**/ {{0xbc3f536b, 0x677c2cb4} }, -/**/ {{0x3fef0a76, 0x3eaa4ed6} }, -/**/ {{0x3c888c52, 0x0b06c761} }, -/**/ {{0xbfc52be2, 0xfd884489} }, -/**/ {{0x3c67ec59, 0xbe5c728a} }, -/**/ {{0xbfd1aabf, 0xe80e4e0a} }, -/**/ {{0xbc71320e, 0xe90c909e} }, -/**/ {{0x3fc34e46, 0x864781ca} }, -/**/ {{0x3c42fcb3, 0x126138ee} }, -/**/ {{0x3fbe988d, 0x013b5d4f} }, -/**/ {{0xbfc0d50d, 0x122409a2} }, -/**/ {{0xbfa6b7b6, 0x7bb562c1} }, -/**/ {{0x3fbbe18a, 0x3df8dee8} }, -/**/ {{0x3f3e4009, 0x8809e1ef} } }, -/**/ {{{0x3fc70000, 0x00000000} }, -/**/ {{0x3fc6c1d4, 0x898933d9} }, -/**/ {{0xbc52954a, 0x7603c427} }, -/**/ {{0x3feeffc5, 0xe06cfb34} }, -/**/ {{0xbc85c037, 0x379877c2} }, -/**/ {{0xbfc5956f, 0x0f53a52c} }, -/**/ {{0x3c4d46a2, 0xe566376c} }, -/**/ {{0xbfd183d7, 0x86559c11} }, -/**/ {{0x3c7d2520, 0x64734c7f} }, -/**/ {{0x3fc399c6, 0xa80eddd5} }, -/**/ {{0x3c616c26, 0x40fbef6f} }, -/**/ {{0x3fbdcda7, 0xf4b571a7} }, -/**/ {{0xbfc0fb48, 0x3fd42996} }, -/**/ {{0xbfa4f9a9, 0x95c85118} }, -/**/ {{0x3fbbdecf, 0x9d795df4} }, -/**/ {{0xbf672003, 0xb85bf719} } }, -/**/ {{{0x3fc78000, 0x00000000} }, -/**/ {{0x3fc73dbd, 0xe8a7d202} }, -/**/ {{0xbc55ad0f, 0x6d4a665d} }, -/**/ {{0x3feef4e0, 0xf6ce5590} }, -/**/ {{0xbc833df6, 0x556900ef} }, -/**/ {{0xbfc5fe0f, 0xedcc9488} }, -/**/ {{0x3c5078de, 0xd2b9e35c} }, -/**/ {{0xbfd15c5a, 0x210cab36} }, -/**/ {{0x3c67fa93, 0xf55e532a} }, -/**/ {{0x3fc3e349, 0x5efd9a41} }, -/**/ {{0xbc6cf709, 0xc8573a12} }, -/**/ {{0x3fbd010a, 0x6c903aef} }, -/**/ {{0xbfc11e77, 0x20571328} }, -/**/ {{0xbfa33c04, 0x9a1875dd} }, -/**/ {{0x3fbbd491, 0xb09ec0ce} }, -/**/ {{0xbf78d197, 0x35537a65} } }, -/**/ {{{0x3fc80000, 0x00000000} }, -/**/ {{0x3fc7b97b, 0x4bce5b02} }, -/**/ {{0x3c5347b0, 0xb4f881ca} }, -/**/ {{0x3feee9c7, 0xf8458e02} }, -/**/ {{0xbc616380, 0x7ba71fe1} }, -/**/ {{0xbfc665c2, 0x26d69eeb} }, -/**/ {{0xbc572a33, 0xfdb5eea8} }, -/**/ {{0xbfd1344b, 0xb737e8f3} }, -/**/ {{0xbc757b70, 0x62badf41} }, -/**/ {{0x3fc42aca, 0x8b929b0b} }, -/**/ {{0x3c43cdb5, 0x7a8b7d91} }, -/**/ {{0x3fbc32d8, 0xf683981c} }, -/**/ {{0xbfc13e9a, 0xd22d5ecc} }, -/**/ {{0xbfa17f3e, 0xd35c8c33} }, -/**/ {{0x3fbbc2ee, 0x2a73307e} }, -/**/ {{0xbf82ee04, 0x2bddc834} } }, -/**/ {{{0x3fc88000, 0x00000000} }, -/**/ {{0x3fc8350b, 0xe398ebc8} }, -/**/ {{0xbc55a913, 0x32b9c90d} }, -/**/ {{0x3feede7b, 0x5cfce04c} }, -/**/ {{0x3c8507c2, 0x3b51a72f} }, -/**/ {{0xbfc6cc82, 0x6067718b} }, -/**/ {{0x3c6d00ca, 0xdbfc430f} }, -/**/ {{0xbfd10bb0, 0x4fbf6fe8} }, -/**/ {{0x3c321748, 0x53749c72} }, -/**/ {{0x3fc47046, 0x699a36ad} }, -/**/ {{0xbc63924c, 0x3994d40c} }, -/**/ {{0x3fbb6338, 0x0dfb7483} }, -/**/ {{0xbfc15bb5, 0x42ee5820} }, -/**/ {{0xbf9f879b, 0x385194fc} }, -/**/ {{0x3fbbaa05, 0x57d040e9} }, -/**/ {{0xbf895566, 0xada71ca0} } }, -/**/ {{{0x3fc90000, 0x00000000} }, -/**/ {{0x3fc8b06e, 0xe2879c29} }, -/**/ {{0xbc6118cd, 0x30308c4f} }, -/**/ {{0x3feed2fb, 0x9ec57f51} }, -/**/ {{0xbc83fdc5, 0xc0d106ba} }, -/**/ {{0xbfc7324d, 0x58b40d27} }, -/**/ {{0x3c68e240, 0xfc062163} }, -/**/ {{0xbfd0e28b, 0xf8b8a2bf} }, -/**/ {{0xbc7b8d8a, 0x64c55b39} }, -/**/ {{0x3fc4b3b9, 0x8ff46730} }, -/**/ {{0xbc5af146, 0x988563da} }, -/**/ {{0x3fba924c, 0x1277a10d} }, -/**/ {{0xbfc175c9, 0x2bbfd54d} }, -/**/ {{0xbf9c1448, 0x6c522340} }, -/**/ {{0x3fbb89fa, 0x044f2f6b} }, -/**/ {{0xbf8f9cc7, 0xaaecc742} } }, -/**/ {{{0x3fc98000, 0x00000000} }, -/**/ {{0x3fc92ba3, 0x7d050272} }, -/**/ {{0xbc60d3de, 0xd0ff4764} }, -/**/ {{0x3feec749, 0x390b6afe} }, -/**/ {{0xbc5c3d17, 0x4e3659ca} }, -/**/ {{0xbfc7971f, 0xe659b3de} }, -/**/ {{0x3c4cab11, 0x373f554d} }, -/**/ {{0xbfd0b8e2, 0xc6b052a4} }, -/**/ {{0x3c7da014, 0x6f3b74bc} }, -/**/ {{0x3fc4f520, 0xf0432146} }, -/**/ {{0xbc6769ad, 0xa8027290} }, -/**/ {{0x3fb9c039, 0x3e17b570} }, -/**/ {{0xbfc18cda, 0x0d8833a4} }, -/**/ {{0xbf98a567, 0x4627d340} }, -/**/ {{0x3fbb62f1, 0x5e42eff7} }, -/**/ {{0xbf92e10a, 0x7ee3bed3} } }, -/**/ {{{0x3fca0000, 0x00000000} }, -/**/ {{0x3fc9a6a8, 0xe96c8626} }, -/**/ {{0x3c4cf601, 0xe7b4348e} }, -/**/ {{0x3feebb64, 0xa8c932d7} }, -/**/ {{0x3c20538d, 0x79aae302} }, -/**/ {{0xbfc7faf6, 0xf88295fe} }, -/**/ {{0xbc687a81, 0x932909e9} }, -/**/ {{0xbfd08eb8, 0xd3f5a07b} }, -/**/ {{0xbc620a05, 0xfb7d6aaa} }, -/**/ {{0x3fc53479, 0xd6814372} }, -/**/ {{0xbc53c682, 0x0a0c6620} }, -/**/ {{0x3fb8ed23, 0x9c562d77} }, -/**/ {{0xbfc1a0ec, 0x2cdd89fd} }, -/**/ {{0xbf953bd4, 0xfec9df82} }, -/**/ {{0x3fbb3512, 0xd9d3f0f6} }, -/**/ {{0xbf95e1ab, 0x4534ccf5} } }, -/**/ {{{0x3fca8000, 0x00000000} }, -/**/ {{0x3fca217e, 0x601081a6} }, -/**/ {{0xbc60def8, 0xa60af374} }, -/**/ {{0x3feeaf4e, 0x6c7ba732} }, -/**/ {{0x3c89fa72, 0xe91fffe1} }, -/**/ {{0xbfc85dcf, 0x970642c3} }, -/**/ {{0xbc5732c2, 0x5b7f0ad0} }, -/**/ {{0xbfd06412, 0x3fe5c74d} }, -/**/ {{0xbc7d0053, 0x4a82f9b1} }, -/**/ {{0x3fc571c1, 0xe882973d} }, -/**/ {{0x3c59d9a3, 0x9090f12c} }, -/**/ {{0x3fb8192f, 0x00f5d0e0} }, -/**/ {{0xbfc1b204, 0x8db53983} }, -/**/ {{0xbf91d869, 0xbdd7b47e} }, -/**/ {{0x3fbb0088, 0x1355a903} }, -/**/ {{0xbf98cf57, 0x724a2ad9} } }, -/**/ {{{0x3fcb0000, 0x00000000} }, -/**/ {{0x3fca9c23, 0x1b403279} }, -/**/ {{0x3c60e8bb, 0xe89cca85} }, -/**/ {{0x3feea307, 0x04157b4f} }, -/**/ {{0x3c8ad743, 0xfd8bf1f0} }, -/**/ {{0xbfc8bfa6, 0xe285e2fd} }, -/**/ {{0xbc6ce765, 0x9c834c8f} }, -/**/ {{0xbfd038f3, 0x2e38fd26} }, -/**/ {{0x3c6a42ec, 0xef212a80} }, -/**/ {{0x3fc5acf7, 0x255d65d5} }, -/**/ {{0xbc619fba, 0xbe486771} }, -/**/ {{0x3fb7447e, 0xff244e15} }, -/**/ {{0xbfc1c028, 0xeed71b69} }, -/**/ {{0xbf8cf7f0, 0xaceecf68} }, -/**/ {{0x3fbac57c, 0xb0ee161b} }, -/**/ {{0xbf9ba92d, 0xefc8f53e} } }, -/**/ {{{0x3fcb8000, 0x00000000} }, -/**/ {{0x3fcb1696, 0x574d780c} }, -/**/ {{0xbc585ab8, 0xfc15a673} }, -/**/ {{0x3fee968e, 0xf0f2da5a} }, -/**/ {{0xbc6fffe1, 0x69710f0d} }, -/**/ {{0xbfc9207a, 0x148444b5} }, -/**/ {{0xbc66661a, 0x1802fa91} }, -/**/ {{0xbfd00d5f, 0xc65096ca} }, -/**/ {{0x3c7f2a2e, 0x8920e744} }, -/**/ {{0x3fc5e617, 0xe4be288d} }, -/**/ {{0x3c67fa48, 0x99be934f} }, -/**/ {{0x3fb66f36, 0xe0d4c87a} }, -/**/ {{0xbfc1cb5f, 0xc5179ce8} }, -/**/ {{0xbf864e9c, 0x1011bb6c} }, -/**/ {{0x3fba841e, 0x43a75476} }, -/**/ {{0xbf9e6e5b, 0x845fc859} } }, -/**/ {{{0x3fcc0000, 0x00000000} }, -/**/ {{0x3fcb90d7, 0x529260a2} }, -/**/ {{0x3c217b10, 0xd2e0e5ab} }, -/**/ {{0x3fee89e6, 0xb5ccf172} }, -/**/ {{0x3c820357, 0x153be26a} }, -/**/ {{0xbfc98046, 0x7f79bfd6} }, -/**/ {{0xbc0799ee, 0xf5d60955} }, -/**/ {{0xbfcfc2b8, 0x650d32f4} }, -/**/ {{0xbc6b59de, 0x4d01b49e} }, -/**/ {{0x3fc61d22, 0xd625e475} }, -/**/ {{0xbc68013f, 0xe23c6105} }, -/**/ {{0x3fb59979, 0x9e54f300} }, -/**/ {{0xbfc1d3b0, 0x365c2b85} }, -/**/ {{0xbf7f6cc9, 0x0afb6b97} }, -/**/ {{0x3fba3c9c, 0x28035c12} }, -/**/ {{0xbfa08f0d, 0x8331488a} } }, -/**/ {{{0x3fcc8000, 0x00000000} }, -/**/ {{0x3fcc0ae5, 0x4d768467} }, -/**/ {{0xbc604cdb, 0xf55f26dc} }, -/**/ {{0x3fee7d0e, 0xd6ad70cb} }, -/**/ {{0x3c8e6761, 0xee20d17d} }, -/**/ {{0xbfc9df09, 0x8ee3fcf8} }, -/**/ {{0x3c62daa3, 0xed723e81} }, -/**/ {{0xbfcf69d9, 0x3efdc9b4} }, -/**/ {{0x3c6c7b6f, 0x85a20110} }, -/**/ {{0x3fc65217, 0x0013c661} }, -/**/ {{0xbc678a0c, 0xab1387be} }, -/**/ {{0x3fb4c369, 0xd61f268e} }, -/**/ {{0xbfc1d922, 0x146d6110} }, -/**/ {{0xbf726199, 0xc0b0ed0a} }, -/**/ {{0x3fb9ef27, 0x6629c856} }, -/**/ {{0xbfa1dbda, 0xc1ea955d} } }, -/**/ {{{0x3fcd0000, 0x00000000} }, -/**/ {{0x3fcc84bf, 0x8a742e6e} }, -/**/ {{0xbc595bdd, 0x0682ea26} }, -/**/ {{0x3fee7007, 0xd8e205ea} }, -/**/ {{0x3c816199, 0x7b2991c1} }, -/**/ {{0xbfca3cc0, 0xc751a854} }, -/**/ {{0xbc66a2fd, 0x4efbc78c} }, -/**/ {{0xbfcf102a, 0x76f43baa} }, -/**/ {{0x3c6cfc38, 0x38d996b1} }, -/**/ {{0x3fc684f3, 0xbf1a9ad6} }, -/**/ {{0x3c52eaf7, 0x7c3b6690} }, -/**/ {{0x3fb3ed29, 0xc4ebba84} }, -/**/ {{0xbfc1dbbd, 0xd79a6a53} }, -/**/ {{0xbf55fa5b, 0xfd09510e} }, -/**/ {{0x3fb99bf2, 0x91c74d50} }, -/**/ {{0xbfa31d41, 0x3002c38b} } }, -/**/ {{{0x3fcd8000, 0x00000000} }, -/**/ {{0x3fccfe65, 0x4e1d5395} }, -/**/ {{0x3c647b9a, 0x3f71eafb} }, -/**/ {{0x3fee62d2, 0x42efd10e} }, -/**/ {{0x3c850a65, 0xa021973e} }, -/**/ {{0xbfca9969, 0xc66a1be4} }, -/**/ {{0x3c326164, 0x3753f036} }, -/**/ {{0xbfceb5b4, 0x6b550477} }, -/**/ {{0xbc64cacb, 0xa3ef610f} }, -/**/ {{0x3fc6b5b8, 0xc4e2c295} }, -/**/ {{0x3c66b228, 0x98b2ac7f} }, -/**/ {{0x3fb316db, 0x3e03bb80} }, -/**/ {{0xbfc1db8c, 0x99312ba1} }, -/**/ {{0x3f5ce5b0, 0x8536556f} }, -/**/ {{0x3fb94331, 0xa9b62abf} }, -/**/ {{0xbfa452f3, 0xb36f42fc} } }, -/**/ {{{0x3fce0000, 0x00000000} }, -/**/ {{0x3fcd77d5, 0xdf205736} }, -/**/ {{0x3c6c648d, 0x1534597e} }, -/**/ {{0x3fee556e, 0x9c86d7c6} }, -/**/ {{0xbc830c25, 0x34c9abfd} }, -/**/ {{0xbfcaf502, 0x42f10c89} }, -/**/ {{0xbc411261, 0xf8576d95} }, -/**/ {{0xbfce5a7f, 0x7b1596d9} }, -/**/ {{0x3c574baa, 0x78f7ae18} }, -/**/ {{0x3fc6e466, 0x171949b1} }, -/**/ {{0xbc6ff86b, 0x52f9c399} }, -/**/ {{0x3fb2409f, 0xa3d6f244} }, -/**/ {{0xbfc1d898, 0x0dceacbf} }, -/**/ {{0x3f73c3b6, 0xdc715080} }, -/**/ {{0x3fb8e519, 0xf78687ab} }, -/**/ {{0xbfa57cac, 0x6b1251ec} } }, -/**/ {{{0x3fce8000, 0x00000000} }, -/**/ {{0x3fcdf110, 0x864c9d9e} }, -/**/ {{0xbc35818b, 0x53bf4781} }, -/**/ {{0x3fee47dd, 0x6e7576a6} }, -/**/ {{0x3c89d322, 0x24b84595} }, -/**/ {{0xbfcb4f88, 0x0cc64717} }, -/**/ {{0xbc624035, 0x44bb97a3} }, -/**/ {{0xbfcdfe94, 0x046e8a3b} }, -/**/ {{0xbc6078ee, 0xd278da00} }, -/**/ {{0x3fc710fc, 0x0e4ccbb7} }, -/**/ {{0xbc58c89c, 0x1da51f71} }, -/**/ {{0x3fb16a97, 0xe0d7022a} }, -/**/ {{0xbfc1d2ea, 0x7f8b58f8} }, -/**/ {{0x3f800ed5, 0xaf259d18} }, -/**/ {{0x3fb881e1, 0xeefd29c7} }, -/**/ {{0xbfa69a2c, 0xae6aa0c1} } }, -/**/ {{{0x3fcf0000, 0x00000000} }, -/**/ {{0x3fce6a14, 0x8e96ec4d} }, -/**/ {{0x3c6866b2, 0x2029f765} }, -/**/ {{0x3fee3a1f, 0x429bd423} }, -/**/ {{0xbc86174a, 0x48961291} }, -/**/ {{0xbfcba8f9, 0x0ce18ad9} }, -/**/ {{0x3c62e3e9, 0xb50eb15d} }, -/**/ {{0xbfcda1fa, 0x63927806} }, -/**/ {{0xbbed7b15, 0x8073bacf} }, -/**/ {{0x3fc73b7b, 0x54b8d3bb} }, -/**/ {{0x3c602afb, 0x74869c1c} }, -/**/ {{0x3fb094e4, 0x60993bd6} }, -/**/ {{0xbfc1ca8e, 0xc806a157} }, -/**/ {{0x3f862263, 0xa854d278} }, -/**/ {{0x3fb819c1, 0x0d9e7452} }, -/**/ {{0xbfa7ab3d, 0x08743869} } }, -/**/ {{{0x3fcf8000, 0x00000000} }, -/**/ {{0x3fcee2e1, 0x451d980d} }, -/**/ {{0xbc59a770, 0x8c46ba91} }, -/**/ {{0x3fee2c34, 0xa3df5666} }, -/**/ {{0xbc8ef949, 0x19a92865} }, -/**/ {{0xbfcc0153, 0x454a9009} }, -/**/ {{0x3c5572bf, 0xda1123ca} }, -/**/ {{0xbfcd44ba, 0xf169cd42} }, -/**/ {{0xbc6db0f2, 0xf1052e0a} }, -/**/ {{0x3fc763e4, 0xe5006ad1} }, -/**/ {{0x3c66e21a, 0x3e902796} }, -/**/ {{0x3faf7f4a, 0x12812c7d} }, -/**/ {{0xbfc1bf90, 0x4a558d9d} }, -/**/ {{0x3f8c1b52, 0x2be7fbfd} }, -/**/ {{0x3fb7acef, 0xba5b0263} }, -/**/ {{0xbfa8afad, 0x2dddf4e5} } }, -/**/ {{{0x3fd00000, 0x00000000} }, -/**/ {{0x3fcf5b75, 0xf92c80dd} }, -/**/ {{0x3c68ab6e, 0x3cf7afbd} }, -/**/ {{0x3fee1e1e, 0x1e1e1e1e} }, -/**/ {{0x3c6e1e1e, 0x1e1e1e1e} }, -/**/ {{0xbfcc5894, 0xd10d4986} }, -/**/ {{0x3c5f00e2, 0xc4a6886a} }, -/**/ {{0xbfcce6de, 0x0253d27e} }, -/**/ {{0xbc65d764, 0x3c5fce89} }, -/**/ {{0x3fc78a3a, 0x08d88b02} }, -/**/ {{0x3c4fc5d6, 0x32bd57e4} }, -/**/ {{0x3fadd5f2, 0x6a622b44} }, -/**/ {{0xbfc1b1fa, 0xecd7c4e0} }, -/**/ {{0x3f90fc3e, 0x1fc8b549} }, -/**/ {{0x3fb73ba7, 0x25728acf} }, -/**/ {{0xbfa9a753, 0xeeba051f} } }, -/**/ {{{0x3fd04000, 0x00000000} }, -/**/ {{0x3fcfd3d1, 0xfc40dbe4} }, -/**/ {{0x3c437146, 0xf3a1c5ea} }, -/**/ {{0x3fee0fdc, 0x3e228818} }, -/**/ {{0xbc62e075, 0x8c042ef5} }, -/**/ {{0xbfccaebb, 0xe42a71b9} }, -/**/ {{0xbc69fa0a, 0x8025fd1d} }, -/**/ {{0xbfcc886b, 0xe4ed28e5} }, -/**/ {{0xbc59ccc3, 0x7604b95a} }, -/**/ {{0x3fc7ae7c, 0x57a32fb9} }, -/**/ {{0x3c67393b, 0xe36848c2} }, -/**/ {{0x3fac2dff, 0x5a1b7b6f} }, -/**/ {{0xbfc1a1db, 0x12f690d4} }, -/**/ {{0x3f93dc65, 0xa575dc1d} }, -/**/ {{0x3fb6c621, 0x28a107f6} }, -/**/ {{0xbfaa920f, 0x23d2c35f} } }, -/**/ {{{0x3fd08000, 0x00000000} }, -/**/ {{0x3fd025fa, 0x510665b6} }, -/**/ {{0xbc7672df, 0x6832fa48} }, -/**/ {{0x3fee016f, 0x9196b776} }, -/**/ {{0x3c81da3a, 0xb14efc08} }, -/**/ {{0xbfcd03c6, 0xcb847375} }, -/**/ {{0xbc6819f2, 0xfc4c6f52} }, -/**/ {{0xbfcc296c, 0xe0dbf8a5} }, -/**/ {{0xbc55cc84, 0x27fb1c17} }, -/**/ {{0x3fc7d0ad, 0xb4fbbf40} }, -/**/ {{0x3c6378b3, 0x41b71641} }, -/**/ {{0x3faa87ad, 0x440404cd} }, -/**/ {{0xbfc18f3d, 0x96d156a8} }, -/**/ {{0x3f96ad9b, 0x9ef40490} }, -/**/ {{0x3fb64c98, 0x27a95e14} }, -/**/ {{0xbfab6fc3, 0x97cfdce0} } }, -/**/ {{{0x3fd0c000, 0x00000000} }, -/**/ {{0x3fd061ee, 0xa03d6291} }, -/**/ {{0xbc45f760, 0xdb154301} }, -/**/ {{0x3fedf2d8, 0xa6f82a61} }, -/**/ {{0xbc6cedbb, 0x560866af} }, -/**/ {{0xbfcd57b3, 0xecc8c02c} }, -/**/ {{0x3c641512, 0x85b9541c} }, -/**/ {{0xbfcbc9e9, 0x35a209c0} }, -/**/ {{0x3c65bfd8, 0x4914a5d1} }, -/**/ {{0x3fc7f0d0, 0x4f358b07} }, -/**/ {{0xbc60dc70, 0x3f47a5cc} }, -/**/ {{0x3fa8e337, 0x50af01c1} }, -/**/ {{0xbfc17a2f, 0xc2daf61b} }, -/**/ {{0x3f996f63, 0x57b649f0} }, -/**/ {{0x3fb5cf46, 0xf14fef28} }, -/**/ {{0xbfac405c, 0xec5a22c2} } }, -/**/ {{{0x3fd10000, 0x00000000} }, -/**/ {{0x3fd09dc5, 0x97d86362} }, -/**/ {{0x3c762e47, 0x390cb865} }, -/**/ {{0x3fede418, 0x0d8b5ae6} }, -/**/ {{0x3c719298, 0x23f66cf0} }, -/**/ {{0xbfcdaa81, 0xc655a596} }, -/**/ {{0x3c666d0d, 0x6a90480b} }, -/**/ {{0xbfcb69e9, 0x1974fd6c} }, -/**/ {{0xbc68e199, 0xec28723f} }, -/**/ {{0x3fc80ee6, 0x9dcd2641} }, -/**/ {{0x3c37ccfe, 0x45b4bb82} }, -/**/ {{0x3fa740d7, 0x64b143be} }, -/**/ {{0xbfc162bf, 0x4b6b7330} }, -/**/ {{0x3f9c2147, 0x7a20d203} }, -/**/ {{0x3fb54e68, 0xa0d6b625} }, -/**/ {{0xbfad03cd, 0x7b6e81ad} } }, -/**/ {{{0x3fd14000, 0x00000000} }, -/**/ {{0x3fd0d97e, 0xe509acb3} }, -/**/ {{0x3c747c31, 0x7bd5a3eb} }, -/**/ {{0x3fedd52e, 0x554f6dcf} }, -/**/ {{0xbc75c686, 0xddcd060b} }, -/**/ {{0xbfcdfc2e, 0xef1cb578} }, -/**/ {{0xbc46ae20, 0xd1677d50} }, -/**/ {{0xbfcb0974, 0xb81cdb34} }, -/**/ {{0x3c36ed8e, 0xda61c86c} }, -/**/ {{0x3fc82af3, 0x5fcd53c1} }, -/**/ {{0xbc424fe5, 0x57b559e7} }, -/**/ {{0x3fa5a0c6, 0x17013aef} }, -/**/ {{0xbfc148fa, 0x484940dd} }, -/**/ {{0x3f9ec2da, 0x1737ca6d} }, -/**/ {{0x3fb4ca38, 0x800ba495} }, -/**/ {{0xbfadba0e, 0x35128042} } }, -/**/ {{{0x3fd18000, 0x00000000} }, -/**/ {{0x3fd1151a, 0x362431ca} }, -/**/ {{0xbc74dc8d, 0xc9077b9f} }, -/**/ {{0x3fedc61c, 0x0ef1f116} }, -/**/ {{0xbc8fe39f, 0x2d41c166} }, -/**/ {{0xbfce4cba, 0x1681d2c9} }, -/**/ {{0x3c340fb4, 0x369a3c18} }, -/**/ {{0xbfcaa894, 0x31d921e2} }, -/**/ {{0x3c6bf59e, 0x64c48da4} }, -/**/ {{0x3fc844f9, 0x9a284cea} }, -/**/ {{0xbc563be0, 0x629cfeb8} }, -/**/ {{0x3fa4033a, 0xa7f26285} }, -/**/ {{0xbfc12cef, 0x2e2d72ea} }, -/**/ {{0x3fa0a9da, 0x554d151d} }, -/**/ {{0x3fb442f1, 0xe9f9174f} }, -/**/ {{0xbfae631e, 0x799e467c} } }, -/**/ {{{0x3fd1c000, 0x00000000} }, -/**/ {{0x3fd15097, 0x3a9ce547} }, -/**/ {{0xbc7796ba, 0x7f9ca328} }, -/**/ {{0x3fedb6e1, 0xcbc2abaa} }, -/**/ {{0xbc823b7a, 0xc39a4e7c} }, -/**/ {{0xbfce9c22, 0x0436f806} }, -/**/ {{0xbc64a5ec, 0x885803cb} }, -/**/ {{0xbfca474f, 0x9a4c8963} }, -/**/ {{0x3c671cf3, 0x6793b663} }, -/**/ {{0x3fc85cfc, 0x9606243b} }, -/**/ {{0x3c5fd2b2, 0x1dcd45ed} }, -/**/ {{0x3fa2686a, 0xf8cc655f} }, -/**/ {{0xbfc10eac, 0xc8460b94} }, -/**/ {{0x3fa1e9bc, 0x0d6eb5ba} }, -/**/ {{0x3fb3b8d0, 0x2e4749c2} }, -/**/ {{0xbfaeff03, 0xf0d19201} } }, -/**/ {{{0x3fd20000, 0x00000000} }, -/**/ {{0x3fd18bf5, 0xa30bf178} }, -/**/ {{0x3c630ca4, 0x748b1bf9} }, -/**/ {{0x3feda780, 0x1da7801e} }, -/**/ {{0xbc861ff8, 0x961ff896} }, -/**/ {{0xbfceea65, 0x9814cb11} }, -/**/ {{0xbc5f9845, 0x34cb01ca} }, -/**/ {{0xbfc9e5ae, 0xf76f9fa1} }, -/**/ {{0x3c688b7a, 0xa3ee6a86} }, -/**/ {{0x3fc872ff, 0xdf090624} }, -/**/ {{0x3c31016f, 0x6fbad4bb} }, -/**/ {{0x3fa0d08b, 0x83fe02bc} }, -/**/ {{0xbfc0ee42, 0x31b98637} }, -/**/ {{0x3fa320e6, 0x5b309f28} }, -/**/ {{0x3fb32c0e, 0x755cbc43} }, -/**/ {{0xbfaf8dca, 0x5dea1ddb} } }, -/**/ {{{0x3fd24000, 0x00000000} }, -/**/ {{0x3fd1c735, 0x212dd884} }, -/**/ {{0xbc67d9ac, 0x78cb2f2e} }, -/**/ {{0x3fed97f7, 0x971063d2} }, -/**/ {{0x3c67a20b, 0xc8b326b7} }, -/**/ {{0xbfcf3783, 0xc9f01359} }, -/**/ {{0x3c4a8b96, 0xd0a651ad} }, -/**/ {{0xbfc983ba, 0x408a6757} }, -/**/ {{0x3c6dfff9, 0xe6424f06} }, -/**/ {{0x3fc88707, 0x41881aad} }, -/**/ {{0xbc63baf9, 0x2204fd29} }, -/**/ {{0x3f9e779e, 0xabd6e10d} }, -/**/ {{0xbfc0cbbe, 0xcf2eab41} }, -/**/ {{0x3fa44f31, 0x1659f377} }, -/**/ {{0x3fb29ce7, 0xa54a8a94} }, -/**/ {{0xbfb007c1, 0xb87973d7} } }, -/**/ {{{0x3fd28000, 0x00000000} }, -/**/ {{0x3fd20255, 0x67e47c96} }, -/**/ {{0xbc618323, 0x28f4290e} }, -/**/ {{0x3fed8848, 0xcaeb6c2a} }, -/**/ {{0x3c81e70d, 0xa08296a2} }, -/**/ {{0xbfcf837b, 0xa96c2792} }, -/**/ {{0xbc6ab5ce, 0xc6884369} }, -/**/ {{0xbfc92179, 0x5d351cdb} }, -/**/ {{0x3c617000, 0x68719d81} }, -/**/ {{0x3fc89916, 0xc8c1ca07} }, -/**/ {{0xbc6a3339, 0x18b0f81b} }, -/**/ {{0x3f9b54d0, 0x0caf6121} }, -/**/ {{0xbfc0a732, 0x485ba392} }, -/**/ {{0x3fa57477, 0xc250c31e} }, -/**/ {{0x3fb20b96, 0x4790b4a8} }, -/**/ {{0xbfb04223, 0x4ac23178} } }, -/**/ {{{0x3fd2c000, 0x00000000} }, -/**/ {{0x3fd23d56, 0x2b381042} }, -/**/ {{0xbc5c5317, 0x16200088} }, -/**/ {{0x3fed7874, 0x4c98f347} }, -/**/ {{0xbc8a7dac, 0x9a72647e} }, -/**/ {{0xbfcfce4c, 0x5dca68a2} }, -/**/ {{0x3c6433de, 0x8fb9ffdd} }, -/**/ {{0xbfc8bef4, 0x246041ce} }, -/**/ {{0xbc66c620, 0x1fb39160} }, -/**/ {{0x3fc8a932, 0xbd062535} }, -/**/ {{0xbc6e24c7, 0xfbc3a86c} }, -/**/ {{0x3f98390b, 0x64d0109d} }, -/**/ {{0xbfc080ac, 0x819f2998} }, -/**/ {{0x3fa69099, 0x8784ffb8} }, -/**/ {{0x3fb17854, 0x6fc55e9b} }, -/**/ {{0xbfb07618, 0x5f970a81} } }, -/**/ {{{0x3fd30000, 0x00000000} }, -/**/ {{0x3fd27837, 0x2057ef46} }, -/**/ {{0xbc7077cd, 0xd36dfc81} }, -/**/ {{0x3fed687a, 0xafdfd5ba} }, -/**/ {{0xbc782e68, 0xe19d8d3d} }, -/**/ {{0xbfd00bfa, 0x92db6fdb} }, -/**/ {{0x3c7854cd, 0xc0af523f} }, -/**/ {{0xbfc85c32, 0x5b640da2} }, -/**/ {{0x3c5d5bdd, 0x5e6f23d6} }, -/**/ {{0x3fc8b75f, 0xa1da32d2} }, -/**/ {{0x3c2788df, 0x29860bfe} }, -/**/ {{0x3f9524ad, 0xee810d60} }, -/**/ {{0xbfc0583d, 0x95a69dea} }, -/**/ {{0x3fa7a379, 0x2b4d3dec} }, -/**/ {{0x3fb0e35b, 0xa3290dfe} }, -/**/ {{0xbfb0a3b2, 0x19e12287} } }, -/**/ {{{0x3fd34000, 0x00000000} }, -/**/ {{0x3fd2b2f7, 0xfd9b5fe2} }, -/**/ {{0x3c2423cf, 0xc1c2d443} }, -/**/ {{0x3fed585c, 0x88e1caa2} }, -/**/ {{0xbc2c8af2, 0x01239e18} }, -/**/ {{0xbfd0303a, 0xab890af7} }, -/**/ {{0x3c7d42bf, 0x726290e6} }, -/**/ {{0xbfc7f93b, 0xb5175de0} }, -/**/ {{0x3c5d5d4b, 0xe0ddc367} }, -/**/ {{0x3fc8c3a2, 0x3414de7c} }, -/**/ {{0x3c5ade9b, 0xba92bfce} }, -/**/ {{0x3f921811, 0xda70853d} }, -/**/ {{0xbfc02df5, 0xcf23aaf0} }, -/**/ {{0x3fa8acfd, 0x06445ff8} }, -/**/ {{0x3fb04ce4, 0xc130eba4} }, -/**/ {{0xbfb0cb04, 0x29de3135} } }, -/**/ {{{0x3fd38000, 0x00000000} }, -/**/ {{0x3fd2ed98, 0x7a823cfe} }, -/**/ {{0x3c6b9125, 0x8ea012ca} }, -/**/ {{0x3fed481a, 0x6c0fd782} }, -/**/ {{0x3c82dda4, 0x85ff74ea} }, -/**/ {{0xbfd053e6, 0x2f5c1e18} }, -/**/ {{0xbc679cf2, 0x8ec637b8} }, -/**/ {{0xbfc79617, 0xd0ee3e3b} }, -/**/ {{0xbc4e91e0, 0x732049a6} }, -/**/ {{0x3fc8cdff, 0x67f6478d} }, -/**/ {{0xbc5cb659, 0xf5079e63} }, -/**/ {{0x3f8e271c, 0x8e8ef686} }, -/**/ {{0xbfc001e5, 0xa2940881} }, -/**/ {{0x3fa9ad0e, 0xf937caae} }, -/**/ {{0x3faf6a4f, 0xda1e257f} }, -/**/ {{0xbfb0ec24, 0xb07d42be} } }, -/**/ {{{0x3fd3c000, 0x00000000} }, -/**/ {{0x3fd32818, 0x4fb58952} }, -/**/ {{0xbc7a95f0, 0xa9939f2f} }, -/**/ {{0x3fed37b4, 0xee1ee130} }, -/**/ {{0x3c747541, 0x6fbb1f2d} }, -/**/ {{0xbfd076fc, 0xe022dd0d} }, -/**/ {{0x3c6d8659, 0x5534523a} }, -/**/ {{0xbfc732ce, 0x3a201d6b} }, -/**/ {{0xbc56a551, 0xc98a3a62} }, -/**/ {{0x3fc8d67c, 0x673a29b8} }, -/**/ {{0xbc54ae9d, 0xff95efe6} }, -/**/ {{0x3f882eee, 0x74ce6814} }, -/**/ {{0xbfbfa83b, 0x503ba8f4} }, -/**/ {{0x3faaa39c, 0x60b63f75} }, -/**/ {{0x3fae38b8, 0xf07ff274} }, -/**/ {{0xbfb1072c, 0x2200fe4d} } }, -/**/ {{{0x3fd40000, 0x00000000} }, -/**/ {{0x3fd36277, 0x3707ebcc} }, -/**/ {{0xbc6963a5, 0x44b672d8} }, -/**/ {{0x3fed272c, 0xa3fc5b1a} }, -/**/ {{0x3c8ae01d, 0x272ca3fc} }, -/**/ {{0xbfd0997e, 0x8aec9d8e} }, -/**/ {{0x3c74aeda, 0x72595f36} }, -/**/ {{0xbfc6cf66, 0x66d5c0ff} }, -/**/ {{0x3c410e2a, 0x3ca66cc1} }, -/**/ {{0x3fc8dd1e, 0x8f2617b5} }, -/**/ {{0xbc6d173e, 0x4facfb67} }, -/**/ {{0x3f82483b, 0x33966883} }, -/**/ {{0xbfbf495d, 0x2b05b16b} }, -/**/ {{0x3fab9096, 0x074fdeaf} }, -/**/ {{0x3fad0571, 0x9c4605c9} }, -/**/ {{0xbfb11c35, 0x280318fd} } }, -/**/ {{{0x3fd44000, 0x00000000} }, -/**/ {{0x3fd39cb4, 0xeb76157c} }, -/**/ {{0xbc72f4da, 0x5a214713} }, -/**/ {{0x3fed1682, 0x22c31625} }, -/**/ {{0x3c8ac111, 0xd5e51b41} }, -/**/ {{0xbfd0bb6b, 0x07e9a89a} }, -/**/ {{0x3c76fb53, 0x7faa1dda} }, -/**/ {{0xbfc66be7, 0xb75f0772} }, -/**/ {{0xbc69a77d, 0xee6d618b} }, -/**/ {{0x3fc8e1eb, 0x6e943d69} }, -/**/ {{0xbc6982c4, 0xc5ec9ebe} }, -/**/ {{0x3f78e73c, 0x9c2d3c0c} }, -/**/ {{0xbfbee752, 0x7059f387} }, -/**/ {{0x3fac73f0, 0x16982f58} }, -/**/ {{0x3fabd0e4, 0xc146b407} }, -/**/ {{0xbfb12b5c, 0x82f43254} } }, -/**/ {{{0x3fd48000, 0x00000000} }, -/**/ {{0x3fd3d6d1, 0x29271134} }, -/**/ {{0x3c7137ca, 0x41cc958a} }, -/**/ {{0x3fed05b5, 0xffb0304c} }, -/**/ {{0xbc8fc921, 0x33e896e5} }, -/**/ {{0xbfd0dcc2, 0x3a49e254} }, -/**/ {{0x3c704578, 0x925cb599} }, -/**/ {{0xbfc60859, 0x75708502} }, -/**/ {{0xbc5f88bc, 0x9feebe6c} }, -/**/ {{0x3fc8e4e8, 0xc3fb5c1c} }, -/**/ {{0x3c6de114, 0xd6b77a05} }, -/**/ {{0x3f6ac6b3, 0xdbc6c857} }, -/**/ {{0xbfbe823c, 0xdeabd793} }, -/**/ {{0x3fad4da2, 0x06fb52a7} }, -/**/ {{0x3faa9b7b, 0x2bea698c} }, -/**/ {{0xbfb134c0, 0xeb32d745} } }, -/**/ {{{0x3fd4c000, 0x00000000} }, -/**/ {{0x3fd410cb, 0xad6c7d33} }, -/**/ {{0xbc7b0c8b, 0xae13b512} }, -/**/ {{0x3fecf4c8, 0xd0182625} }, -/**/ {{0x3c8e6308, 0xf4103798} }, -/**/ {{0xbfd0fd84, 0x101a5438} }, -/**/ {{0x3c425fcd, 0x7d2e3e34} }, -/**/ {{0xbfc5a4c2, 0xd36904f6} }, -/**/ {{0x3c5d3583, 0x54f27bb6} }, -/**/ {{0x3fc8e61c, 0x7b74b00c} }, -/**/ {{0x3c32f7ad, 0xefe568b6} }, -/**/ {{0x3f402f60, 0xaa3667f2} }, -/**/ {{0xbfbe1a3e, 0x4c9859c0} }, -/**/ {{0x3fae1da6, 0x8e77c589} }, -/**/ {{0x3fa9659b, 0x6ed5823e} }, -/**/ {{0xbfb13882, 0xf1d3d420} } }, -/**/ {{{0x3fd50000, 0x00000000} }, -/**/ {{0x3fd44aa4, 0x36c2af0a} }, -/**/ {{0xbc75d5e4, 0x3c55b3ba} }, -/**/ {{0x3fece3bb, 0x295c0773} }, -/**/ {{0xbc826fd5, 0x91851b41} }, -/**/ {{0xbfd11db0, 0x8221a582} }, -/**/ {{0x3c7e9654, 0xa9f31d11} }, -/**/ {{0xbfc5412a, 0xeb9ef661} }, -/**/ {{0x3c573faf, 0x5e60433c} }, -/**/ {{0x3fc8e58c, 0xacc06b3a} }, -/**/ {{0xbc5dba9a, 0x64dd81ed} }, -/**/ {{0xbf625ff7, 0xcfe3f01e} }, -/**/ {{0xbfbdaf78, 0x9dae4b1c} }, -/**/ {{0x3faee3fb, 0x8e4e3e16} }, -/**/ {{0x3fa82fa9, 0xc2c60fed} }, -/**/ {{0xbfb136c4, 0xe13555d9} } }, -/**/ {{{0x3fd54000, 0x00000000} }, -/**/ {{0x3fd4845a, 0x84d0c21b} }, -/**/ {{0x3c71e28a, 0x7563c6a6} }, -/**/ {{0x3fecd28d, 0xa0decfad} }, -/**/ {{0xbc72b2c8, 0x49610c12} }, -/**/ {{0xbfd13d47, 0x93bb8da8} }, -/**/ {{0x3c5df07a, 0x1b48d912} }, -/**/ {{0xbfc4dd98, 0xbfb5c8b7} }, -/**/ {{0x3c58a9ff, 0x39a108d7} }, -/**/ {{0x3fc8e33f, 0x99496dc4} }, -/**/ {{0x3c380d8b, 0x19d3995c} }, -/**/ {{0xbf743d59, 0xba1bc2d2} }, -/**/ {{0xbfbd420d, 0xb77862a1} }, -/**/ {{0x3fafa0a1, 0xffb9511c} }, -/**/ {{0x3fa6fa07, 0xe8a86cad} }, -/**/ {{0xbfb12faa, 0x9d75a109} } }, -/**/ {{{0x3fd58000, 0x00000000} }, -/**/ {{0x3fd4bdee, 0x586890e7} }, -/**/ {{0xbc6e4dc7, 0x7c22a757} }, -/**/ {{0x3fecc140, 0xcbfae3a7} }, -/**/ {{0xbc41045d, 0xd8b6f9b9} }, -/**/ {{0xbfd15c49, 0x52b34cdc} }, -/**/ {{0x3c729992, 0x2daa60ac} }, -/**/ {{0xbfc47a13, 0x37fb39ef} }, -/**/ {{0x3c5cb3b2, 0x3482d371} }, -/**/ {{0x3fc8df3b, 0xaa28e022} }, -/**/ {{0xbc61a8ab, 0x969a5447} }, -/**/ {{0xbf7f2135, 0xc651ecb4} }, -/**/ {{0xbfbcd21f, 0x76cc63f7} }, -/**/ {{0x3fb029ce, 0xefdf4de1} }, -/**/ {{0x3fa5c515, 0x0de3bf96} }, -/**/ {{0xbfb12359, 0x84e55ab4} } }, -/**/ {{{0x3fd5c000, 0x00000000} }, -/**/ {{0x3fd4f75f, 0x73869979} }, -/**/ {{0xbc595a1c, 0xf7ff1108} }, -/**/ {{0x3fecafd5, 0x3ff7b52c} }, -/**/ {{0x3c86e099, 0x684b6314} }, -/**/ {{0xbfd17ab5, 0xd71d366e} }, -/**/ {{0x3c602f2c, 0xae2f7b71} }, -/**/ {{0xbfc416a1, 0x22cc956f} }, -/**/ {{0x3c61d29e, 0xe98c24c1} }, -/**/ {{0x3fc8d987, 0x6e2a4f9f} }, -/**/ {{0xbc60de73, 0x4a6a7880} }, -/**/ {{0xbf84ed52, 0x909e42ec} }, -/**/ {{0xbfbc5fcf, 0xa56263a8} }, -/**/ {{0x3fb07e7b, 0x0d159803} }, -/**/ {{0x3fa4912d, 0xb2ddf20b} }, -/**/ {{0xbfb111f8, 0x508c8585} } }, -/**/ {{{0x3fd60000, 0x00000000} }, -/**/ {{0x3fd530ad, 0x9951cd4a} }, -/**/ {{0xbc625664, 0x80884082} }, -/**/ {{0x3fec9e4b, 0x91ff8d87} }, -/**/ {{0xbc7723ff, 0x1b0da370} }, -/**/ {{0xbfd1988d, 0x432f5908} }, -/**/ {{0x3c7d065e, 0xf8714cda} }, -/**/ {{0xbfc3b349, 0x3403e07c} }, -/**/ {{0x3c6b571d, 0x2717fbb0} }, -/**/ {{0x3fc8d229, 0x97d0e938} }, -/**/ {{0x3c66b228, 0xb08a0625} }, -/**/ {{0xbf8a3464, 0xc2fe9cde} }, -/**/ {{0xbfbbeb3f, 0xefb6f244} }, -/**/ {{0x3fb0ce5a, 0x39e67c0b} }, -/**/ {{0x3fa35eab, 0x93b4fb73} }, -/**/ {{0xbfb0fbae, 0xf4d86f78} } }, -/**/ {{{0x3fd64000, 0x00000000} }, -/**/ {{0x3fd569d8, 0x8e1b4cd8} }, -/**/ {{0xbc6fec61, 0xe713cfe2} }, -/**/ {{0x3fec8ca4, 0x57157fc9} }, -/**/ {{0x3c70da14, 0x515734ba} }, -/**/ {{0xbfd1b5cf, 0xc3195094} }, -/**/ {{0x3c740cce, 0xa9537e45} }, -/**/ {{0xbfc35012, 0x046cee83} }, -/**/ {{0xbc651b6c, 0xe446fd10} }, -/**/ {{0x3fc8c928, 0xfb5e6a95} }, -/**/ {{0x3c656cd2, 0x82469bf3} }, -/**/ {{0xbf8f6568, 0xa4afbb1b} }, -/**/ {{0xbfbb7491, 0xdb3aba50} }, -/**/ {{0x3fb11972, 0xb9fd56ec} }, -/**/ {{0x3fa22de5, 0x9329e15e} }, -/**/ {{0xbfb0e0a6, 0x8287d93d} } }, -/**/ {{{0x3fd68000, 0x00000000} }, -/**/ {{0x3fd5a2e0, 0x175e0f4e} }, -/**/ {{0x3c713b7a, 0x8f82e457} }, -/**/ {{0x3fec7ae0, 0x240b83ae} }, -/**/ {{0xbc885b56, 0x10d398ed} }, -/**/ {{0xbfd1d27d, 0x8cdb4db0} }, -/**/ {{0x3c11d95f, 0x2db0447f} }, -/**/ {{0xbfc2ed02, 0x11425541} }, -/**/ {{0xbc11d124, 0x6b2cbaa3} }, -/**/ {{0x3fc8be8c, 0x8cdc5c4d} }, -/**/ {{0xbc542511, 0x794444b0} }, -/**/ {{0xbf923ffd, 0xd25a5415} }, -/**/ {{0xbfbafbe6, 0xbcd1df44} }, -/**/ {{0x3fb15fcc, 0x26bdf05c} }, -/**/ {{0x3fa0ff2f, 0xa7b853e6} }, -/**/ {{0xbfb0c109, 0x07e9a35f} } }, -/**/ {{{0x3fd6c000, 0x00000000} }, -/**/ {{0x3fd5dbc3, 0xfbbe768d} }, -/**/ {{0x3c6ea0ec, 0x1b76f7da} }, -/**/ {{0x3fec68ff, 0x8d78b9ce} }, -/**/ {{0xbc83ab41, 0x4cb5a0c3} }, -/**/ {{0xbfd1ee96, 0xe01c5e6e} }, -/**/ {{0x3c73922c, 0xfb76d8dd} }, -/**/ {{0xbfc28a1f, 0xbbb23677} }, -/**/ {{0x3c6e592a, 0x288601f2} }, -/**/ {{0x3fc8b25b, 0x5e282403} }, -/**/ {{0xbbef7d58, 0x707e09fa} }, -/**/ {{0xbf94c1e0, 0xb65add31} }, -/**/ {{0xbfba815f, 0xafa52f1b} }, -/**/ {{0x3fb1a16f, 0x63712acc} }, -/**/ {{0x3f9fa5b5, 0x95a8d3ad} }, -/**/ {{0xbfb09d01, 0x72814750} } }, -/**/ {{{0x3fd70000, 0x00000000} }, -/**/ {{0x3fd61484, 0x0309cfe2} }, -/**/ {{0xbc7a7257, 0x15711f00} }, -/**/ {{0x3fec5703, 0x27afd9eb} }, -/**/ {{0x3c63c2ab, 0xb32c1d72} }, -/**/ {{0xbfd20a1c, 0x06000419} }, -/**/ {{0xbc7b5fe7, 0xf51a3a28} }, -/**/ {{0xbfc22771, 0x486ad2c8} }, -/**/ {{0xbc499ab5, 0xf84a7eae} }, -/**/ {{0x3fc8a49c, 0x9d027817} }, -/**/ {{0xbc53fcab, 0x2e376ecc} }, -/**/ {{0xbf973831, 0xeaabcb23} }, -/**/ {{0xbfba051d, 0x8c46fbce} }, -/**/ {{0x3fb1de66, 0x9132e9cc} }, -/**/ {{0x3f9d5269, 0xd48d5d65} }, -/**/ {{0xbfb074bb, 0x712354a4} } }, -/**/ {{{0x3fd74000, 0x00000000} }, -/**/ {{0x3fd64d1f, 0xf635c1c6} }, -/**/ {{0xbc7fa403, 0xe7c0fdbe} }, -/**/ {{0x3fec44eb, 0x86b5cbf8} }, -/**/ {{0xbc6a4101, 0xbc5b562d} }, -/**/ {{0xbfd2250d, 0x50fb21ad} }, -/**/ {{0xbc750066, 0xa39bdc1a} }, -/**/ {{0xbfc1c4fc, 0xdf2ed728} }, -/**/ {{0x3c6a87bb, 0x006772e9} }, -/**/ {{0x3fc89557, 0x9122b9b7} }, -/**/ {{0xbc05454e, 0x45b04f75} }, -/**/ {{0xbf99a2c9, 0x6c7888f1} }, -/**/ {{0xbfb98740, 0xe02d36ad} }, -/**/ {{0x3fb216bd, 0x02a99665} }, -/**/ {{0x3f9b0511, 0xb73aeccb} }, -/**/ {{0xbfb04863, 0x569b1738} } }, -/**/ {{{0x3fd78000, 0x00000000} }, -/**/ {{0x3fd68597, 0x9f5fa6fe} }, -/**/ {{0xbc425781, 0x4d1ada9c} }, -/**/ {{0x3fec32b9, 0x3e386c7f} }, -/**/ {{0x3c756033, 0x8cbaa5bf} }, -/**/ {{0xbfd23f6b, 0x1ca84e79} }, -/**/ {{0x3c604cc0, 0xf123d574} }, -/**/ {{0xbfc162c8, 0x8a715435} }, -/**/ {{0x3c5cf6db, 0x454fb8fd} }, -/**/ {{0x3fc88493, 0x9a4eb534} }, -/**/ {{0xbc668a5c, 0x42b959b0} }, -/**/ {{0xbf9c0182, 0x42580bb5} }, -/**/ {{0xbfb907e9, 0xe5822d56} }, -/**/ {{0x3fb24a7f, 0x2f8f8273} }, -/**/ {{0x3f98be3c, 0xa3527f46} }, -/**/ {{0xbfb01825, 0xfce97270} } }, -/**/ {{{0x3fd7c000, 0x00000000} }, -/**/ {{0x3fd6bdea, 0xc9cbd76d} }, -/**/ {{0xbc5a5c56, 0x3e6de828} }, -/**/ {{0x3fec206c, 0xe1857d04} }, -/**/ {{0xbc80439f, 0xf5c83872} }, -/**/ {{0xbfd25935, 0xcd9b9870} }, -/**/ {{0x3c6aaf98, 0xf1ec7306} }, -/**/ {{0xbfc100da, 0x36f94d02} }, -/**/ {{0xbc6e72ca, 0xd96d84ff} }, -/**/ {{0x3fc87258, 0x2e774351} }, -/**/ {{0x3c6c50a2, 0xb8860ef0} }, -/**/ {{0xbf9e543a, 0x741ef0ec} }, -/**/ {{0xbfb88738, 0x7b4d0ec2} }, -/**/ {{0x3fb279ba, 0xa8164103} }, -/**/ {{0x3f967e73, 0xa7f1ae35} }, -/**/ {{0xbfafc861, 0x5257c3de} } }, -/**/ {{{0x3fd80000, 0x00000000} }, -/**/ {{0x3fd6f619, 0x41e4def1} }, -/**/ {{0xbc7c63aa, 0xe6f6e918} }, -/**/ {{0x3fec0e07, 0x0381c0e0} }, -/**/ {{0x3c8c0e07, 0x0381c0e0} }, -/**/ {{0xbfd2726d, 0xd135c174} }, -/**/ {{0xbc2d352d, 0xe0951cf8} }, -/**/ {{0xbfc09f37, 0xb38cc8cf} }, -/**/ {{0xbc69db81, 0xae75327f} }, -/**/ {{0x3fc85eac, 0xd7da413c} }, -/**/ {{0x3c5b1a89, 0x6ebae2bc} }, -/**/ {{0xbfa04d69, 0x80fcc815} }, -/**/ {{0xbfb8054c, 0x1df326f9} }, -/**/ {{0x3fb2a47e, 0x082bda60} }, -/**/ {{0x3f944639, 0x7091d5a4} }, -/**/ {{0xbfaf5961, 0xe072e48c} } }, -/**/ {{{0x3fd84000, 0x00000000} }, -/**/ {{0x3fd72e22, 0xd53aa2aa} }, -/**/ {{0xbc7d9c93, 0x4e79f27c} }, -/**/ {{0x3febfb88, 0x36a04729} }, -/**/ {{0xbc872745, 0x9ac2ea21} }, -/**/ {{0xbfd28b13, 0x9d7702cf} }, -/**/ {{0x3c7819b9, 0x4be8bff6} }, -/**/ {{0xbfc03de6, 0xb0a35176} }, -/**/ {{0x3c5dbfb0, 0xc83347af} }, -/**/ {{0x3fc84999, 0x332a4f86} }, -/**/ {{0x3c5d304e, 0x0a22d12d} }, -/**/ {{0xbfa16a97, 0xed6b2d30} }, -/**/ {{0xbfb78243, 0xe0128950} }, -/**/ {{0x3fb2cad8, 0xeaa98f57} }, -/**/ {{0x3f92160a, 0x3bb39c5b} }, -/**/ {{0xbfaee3a9, 0x3804caa3} } }, -/**/ {{{0x3fd88000, 0x00000000} }, -/**/ {{0x3fd76607, 0x52817502} }, -/**/ {{0xbc4dd117, 0x91cc7600} }, -/**/ {{0x3febe8f1, 0x0cd9e1fe} }, -/**/ {{0xbc7a9688, 0xa21e102a} }, -/**/ {{0xbfd2a327, 0xb0d161e9} }, -/**/ {{0xbc60a2a9, 0x14b44140} }, -/**/ {{0xbfbfb9d9, 0x803f8d3b} }, -/**/ {{0x3c5e5779, 0x2a5c4097} }, -/**/ {{0x3fc83324, 0xedbcc363} }, -/**/ {{0x3c651fbc, 0xa0442744} }, -/**/ {{0xbfa2819b, 0xe91477c3} }, -/**/ {{0xbfb6fe3e, 0x63b6abf0} }, -/**/ {{0x3fb2ecdb, 0xdc73a89a} }, -/**/ {{0x3f8fdcb7, 0xaa755298} }, -/**/ {{0xbfae6793, 0x237c2f3d} } }, -/**/ {{{0x3fd8c000, 0x00000000} }, -/**/ {{0x3fd79dc6, 0x899118d1} }, -/**/ {{0x3c2b7413, 0xa0ef606d} }, -/**/ {{0x3febd642, 0x17a4cbc3} }, -/**/ {{0xbc55ee5d, 0x3200a548} }, -/**/ {{0xbfd2baaa, 0x91faa133} }, -/**/ {{0xbc6bd391, 0xfaf41548} }, -/**/ {{0xbfbef89e, 0xaa22d832} }, -/**/ {{0x3c413b3b, 0xc874fdb9} }, -/**/ {{0x3fc81b57, 0xc3be300a} }, -/**/ {{0x3c6baf9b, 0xc01a615f} }, -/**/ {{0xbfa3926a, 0x4a872ec7} }, -/**/ {{0xbfb67959, 0xd3e743cd} }, -/**/ {{0x3fb30a98, 0x4f919505} }, -/**/ {{0x3f8b9f3b, 0x28b78b08} }, -/**/ {{0xbfade57b, 0x71e33e9d} } }, -/**/ {{{0x3fd90000, 0x00000000} }, -/**/ {{0x3fd7d560, 0x4b63b3f7} }, -/**/ {{0x3c769c88, 0x5c2b249a} }, -/**/ {{0x3febc37b, 0xe7ec7a8d} }, -/**/ {{0xbc6f1246, 0x2b0e2727} }, -/**/ {{0xbfd2d19c, 0xcfbdd7fa} }, -/**/ {{0x3c7d0b11, 0x5e00c582} }, -/**/ {{0xbfbe3827, 0x86f8309b} }, -/**/ {{0x3c5d64e9, 0xfa6c56a7} }, -/**/ {{0x3fc80239, 0x7e6de8de} }, -/**/ {{0x3c68d62f, 0x7776e849} }, -/**/ {{0xbfa49cf9, 0x4f6d8017} }, -/**/ {{0xbfb5f3b3, 0xde917e27} }, -/**/ {{0x3fb32420, 0x8e455cc2} }, -/**/ {{0x3f877470, 0xb9fc88fe} }, -/**/ {{0xbfad5dbd, 0xc6b10536} } }, -/**/ {{{0x3fd94000, 0x00000000} }, -/**/ {{0x3fd80cd4, 0x6a14b1d1} }, -/**/ {{0xbc7e79f9, 0x9684fa19} }, -/**/ {{0x3febb09f, 0x0e09a222} }, -/**/ {{0x3c85748e, 0x7e047edd} }, -/**/ {{0xbfd2e7ff, 0x00ccbbc8} }, -/**/ {{0xbc78eb0a, 0x96875561} }, -/**/ {{0xbfbd787e, 0x804ecc06} }, -/**/ {{0xbc27263b, 0x2e4351f8} }, -/**/ {{0x3fc7e7d1, 0xf260d7b4} }, -/**/ {{0xbc430525, 0x8ed258e3} }, -/**/ {{0xbfa5a140, 0x968d3d02} }, -/**/ {{0xbfb56d69, 0xaecb845e} }, -/**/ {{0x3fb33987, 0xae292f95} }, -/**/ {{0x3f835d1d, 0x48e09ecd} }, -/**/ {{0xbfacd0b5, 0x6b6f9aca} } }, -/**/ {{{0x3fd98000, 0x00000000} }, -/**/ {{0x3fd84422, 0xb8df95d7} }, -/**/ {{0x3c7d76a0, 0x299b41b6} }, -/**/ {{0x3feb9dac, 0x19ba64d6} }, -/**/ {{0xbc4f643a, 0xa13ee09f} }, -/**/ {{0xbfd2fdd1, 0xc390a5c9} }, -/**/ {{0x3c575152, 0xaa856fcc} }, -/**/ {{0xbfbcb9ad, 0xc0e99751} }, -/**/ {{0x3c4e2d44, 0x1347a357} }, -/**/ {{0x3fc7cc28, 0xfdcbfd40} }, -/**/ {{0x3c60dc32, 0xe516db08} }, -/**/ {{0xbfa69f39, 0x19851d86} }, -/**/ {{0xbfb4e697, 0xe772087d} }, -/**/ {{0x3fb34ae1, 0x835992de} }, -/**/ {{0x3f7eb3f1, 0xe5326389} }, -/**/ {{0xbfac3ebd, 0x234575e8} } }, -/**/ {{{0x3fd9c000, 0x00000000} }, -/**/ {{0x3fd87b4b, 0x0c1ebedc} }, -/**/ {{0xbc76dcfa, 0xa2fa470f} }, -/**/ {{0x3feb8aa3, 0x9a1ab378} }, -/**/ {{0x3c8efdb0, 0xb797ab93} }, -/**/ {{0xbfd31315, 0xbdfb5e5a} }, -/**/ {{0x3c5813a8, 0x862f0c0d} }, -/**/ {{0xbfbbfbbf, 0x3478f169} }, -/**/ {{0xbc51e810, 0xd9e52582} }, -/**/ {{0x3fc7af46, 0x86d6ec76} }, -/**/ {{0xbc6336de, 0x3c13b159} }, -/**/ {{0xbfa796dd, 0x264b8050} }, -/**/ {{0xbfb45f5a, 0x9e1f6bef} }, -/**/ {{0x3fb35842, 0x93b26fc1} }, -/**/ {{0x3f76d75e, 0x39bc3abf} }, -/**/ {{0xbfaba82f, 0x006e38b2} } }, -/**/ {{{0x3fda0000, 0x00000000} }, -/**/ {{0x3fd8b24d, 0x394a1b25} }, -/**/ {{0x3c7b6d0b, 0xa3748fa8} }, -/**/ {{0x3feb7786, 0x1d9cdc98} }, -/**/ {{0xbc62e22c, 0x345bd7a8} }, -/**/ {{0xbfd327cb, 0x9d57b8f5} }, -/**/ {{0xbc135343, 0x753cc4f1} }, -/**/ {{0xbfbb3ebc, 0x8761b154} }, -/**/ {{0x3c5abeec, 0x8c168fdd} }, -/**/ {{0x3fc79132, 0x79f68c54} }, -/**/ {{0xbc658ab9, 0xd8d15eda} }, -/**/ {{0xbfa88828, 0x5872d73c} }, -/**/ {{0xbfb3d7cd, 0x567be750} }, -/**/ {{0x3fb361c0, 0x0a24fc71} }, -/**/ {{0x3f6e4b7a, 0x46aa98b6} }, -/**/ {{0xbfab0d64, 0x3bad3a76} } }, -/**/ {{{0x3fda4000, 0x00000000} }, -/**/ {{0x3fd8e929, 0x16f5cde8} }, -/**/ {{0x3c74c0a7, 0xe12bfafb} }, -/**/ {{0x3feb6454, 0x32024b37} }, -/**/ {{0xbc7987f7, 0x69cc9b53} }, -/**/ {{0xbfd33bf4, 0x161a0a40} }, -/**/ {{0x3c7a2321, 0x83ff46db} }, -/**/ {{0xbfba82af, 0x26913418} }, -/**/ {{0x3c3c4c62, 0x10a559fe} }, -/**/ {{0x3fc771f4, 0xc8506679} }, -/**/ {{0xbc54aaed, 0x63c7ccc3} }, -/**/ {{0xbfa97317, 0x9237e7ff} }, -/**/ {{0xbfb3500a, 0xfde5f112} }, -/**/ {{0x3fb3676f, 0xaa2c3459} }, -/**/ {{0x3f5e80cd, 0x04721907} }, -/**/ {{0xbfaa6eb5, 0x0dc212a5} } }, -/**/ {{{0x3fda8000, 0x00000000} }, -/**/ {{0x3fd91fde, 0x7cd0c662} }, -/**/ {{0x3c710741, 0x88054b53} }, -/**/ {{0x3feb510e, 0x6454751c} }, -/**/ {{0xbc199bfd, 0x7e0f2dca} }, -/**/ {{0xbfd34f8f, 0xe3b081f4} }, -/**/ {{0x3c7d7209, 0x3e2c0515} }, -/**/ {{0xbfb9c7a0, 0x3f5e2d2f} }, -/**/ {{0xbc20b02e, 0xea3bd312} }, -/**/ {{0x3fc75195, 0x6626c39a} }, -/**/ {{0x3c6f30d2, 0xb4219a8a} }, -/**/ {{0xbfaa57a8, 0xf55dfea5} }, -/**/ {{0xbfb2c82d, 0xe771fa17} }, -/**/ {{0x3fb36967, 0xc3654ab4} }, -/**/ {{0x3f11f322, 0xa23eb6eb} }, -/**/ {{0xbfa9cc78, 0x8ae579b1} } }, -/**/ {{{0x3fdac000, 0x00000000} }, -/**/ {{0x3fd9566d, 0x43a34907} }, -/**/ {{0x3c69b015, 0x37e0af2b} }, -/**/ {{0x3feb3db5, 0x40ddf8d3} }, -/**/ {{0xbc616f46, 0x793c10b8} }, -/**/ {{0xbfd3629f, 0xc8537217} }, -/**/ {{0x3c505738, 0x38143614} }, -/**/ {{0xbfb90d98, 0xbf75f20a} }, -/**/ {{0x3c4dc715, 0x6b842647} }, -/**/ {{0x3fc7301c, 0x494dd1e6} }, -/**/ {{0x3c5ec3d6, 0xf49f85b4} }, -/**/ {{0xbfab35db, 0xdbdd23b1} }, -/**/ {{0xbfb2404f, 0xc8407216} }, -/**/ {{0x3fb367bf, 0x255139f9} }, -/**/ {{0xbf5b8a0d, 0x65acd6da} }, -/**/ {{0xbfa92704, 0x8052f51d} } }, -/**/ {{{0x3fdb0000, 0x00000000} }, -/**/ {{0x3fd98cd5, 0x454d6b18} }, -/**/ {{0x3c79e6c9, 0x88fd0a77} }, -/**/ {{0x3feb2a49, 0x5323eb6a} }, -/**/ {{0xbc572202, 0x70cc9678} }, -/**/ {{0xbfd37524, 0x8cd58cc4} }, -/**/ {{0x3c6978a3, 0xda42aa4e} }, -/**/ {{0xbfb854a1, 0x54d5f784} }, -/**/ {{0xbc5e9a15, 0xb33b3d0d} }, -/**/ {{0x3fc70d91, 0x67aa0c46} }, -/**/ {{0xbc6aa72f, 0xa4ac9df8} }, -/**/ {{0xbfac0db0, 0xd0665a46} }, -/**/ {{0xbfb1b889, 0xb428e30d} }, -/**/ {{0x3fb3628d, 0x134448b0} }, -/**/ {{0xbf6bbbc1, 0x67619c9c} }, -/**/ {{0xbfa87ead, 0x53e1f653} } }, -/**/ {{{0x3fdb4000, 0x00000000} }, -/**/ {{0x3fd9c316, 0x5cc58107} }, -/**/ {{0x3c4b6696, 0x02250cfb} }, -/**/ {{0x3feb16cb, 0x25df55f4} }, -/**/ {{0xbc653abc, 0xf48e26bc} }, -/**/ {{0xbfd3871f, 0x00742189} }, -/**/ {{0xbc725ae2, 0xc05df451} }, -/**/ {{0xbfb79cc2, 0x6dd13675} }, -/**/ {{0x3be1d4e0, 0x991905e4} }, -/**/ {{0x3fc6e9fc, 0xb5b8147e} }, -/**/ {{0x3c46463b, 0xa57d4eca} }, -/**/ {{0xbfacdf29, 0x86c1db89} }, -/**/ {{0xbfb130f4, 0x1ab8d1c4} }, -/**/ {{0x3fb359e9, 0x38881228} }, -/**/ {{0xbf74a987, 0x53bec2ff} }, -/**/ {{0xbfa7d3c5, 0xe5af58b6} } }, -/**/ {{{0x3fdb8000, 0x00000000} }, -/**/ {{0x3fd9f930, 0x66168002} }, -/**/ {{0xbc7c8270, 0x47c9439a} }, -/**/ {{0x3feb033b, 0x42f6e2c9} }, -/**/ {{0xbc6eb80c, 0xc48702a7} }, -/**/ {{0xbfd3988f, 0xf8a76337} }, -/**/ {{0xbc636968, 0x5b1bb38a} }, -/**/ {{0xbfb6e604, 0x39212b04} }, -/**/ {{0xbc3c2e20, 0xba255e71} }, -/**/ {{0x3fc6c566, 0x251e2d41} }, -/**/ {{0x3c230ab3, 0x47236369} }, -/**/ {{0xbfadaa48, 0xd40b3417} }, -/**/ {{0xbfb0a9a6, 0xc484f2cc} }, -/**/ {{0x3fb34deb, 0x9cb4573e} }, -/**/ {{0xbf7b44ca, 0x1def6f17} }, -/**/ {{0xbfa7269f, 0x73d683b8} } }, -/**/ {{{0x3fdbc000, 0x00000000} }, -/**/ {{0x3fda2f23, 0x3e5e530b} }, -/**/ {{0x3c5814d5, 0xf797086b} }, -/**/ {{0x3feaef9a, 0x3378ba79} }, -/**/ {{0x3c7da16a, 0x4476e241} }, -/**/ {{0xbfd3a978, 0x50f2beab} }, -/**/ {{0x3c7b7e7f, 0xad5a31ea} }, -/**/ {{0xbfb6306e, 0xa602212f} }, -/**/ {{0xbc31ec15, 0x9ec38d55} }, -/**/ {{0x3fc69fd5, 0xa3477c6a} }, -/**/ {{0x3c571f2f, 0xb2996038} }, -/**/ {{0xbfae6f12, 0xa6cf162d} }, -/**/ {{0xbfb022b8, 0xd0cb2655} }, -/**/ {{0x3fb33eac, 0x9842912f} }, -/**/ {{0xbf80d789, 0x4919e78d} }, -/**/ {{0xbfa67789, 0x8037e242} } }, -/**/ {{{0x3fdc0000, 0x00000000} }, -/**/ {{0x3fda64ee, 0xc3cc23fd} }, -/**/ {{0xbc724dec, 0x1b50b7ff} }, -/**/ {{0x3feadbe8, 0x7f94905e} }, -/**/ {{0x3c2adbe8, 0x7f94905e} }, -/**/ {{0xbfd3b9d8, 0xeab54af9} }, -/**/ {{0x3c75b97d, 0x54fd0941} }, -/**/ {{0xbfb57c09, 0x645a7f9e} }, -/**/ {{0xbc5e79f6, 0x09320811} }, -/**/ {{0x3fc67953, 0x180938f2} }, -/**/ {{0x3c6246f2, 0xe7aee726} }, -/**/ {{0xbfaf2d8b, 0xff0ea012} }, -/**/ {{0xbfaf3881, 0x66c7250c} }, -/**/ {{0x3fb32c44, 0xc95ff694} }, -/**/ {{0xbf83f3f0, 0x25d7ff49} }, -/**/ {{0xbfa5c6d1, 0xb848e1d1} } }, -/**/ {{{0x3fdc4000, 0x00000000} }, -/**/ {{0x3fda9a92, 0xd59e98cf} }, -/**/ {{0x3c42e42d, 0xff75d817} }, -/**/ {{0x3feac826, 0xae95dea9} }, -/**/ {{0xbc534eec, 0x633dec57} }, -/**/ {{0xbfd3c9b2, 0xacfa5b18} }, -/**/ {{0x3c7a7e0c, 0x6c4d8d27} }, -/**/ {{0xbfb4c8db, 0xe4ecc0f6} }, -/**/ {{0xbc534990, 0xc0c32772} }, -/**/ {{0x3fc651e6, 0x6451e377} }, -/**/ {{0xbc6ea814, 0x2a9bb1f1} }, -/**/ {{0xbfafe5ba, 0xe62bc1b2} }, -/**/ {{0xbfae2ca8, 0x65fe3642} }, -/**/ {{0x3fb316cd, 0x09015968} }, -/**/ {{0xbf86f764, 0x3ce97a26} }, -/**/ {{0xbfa514c3, 0xdee8421b} } }, -/**/ {{{0x3fdc8000, 0x00000000} }, -/**/ {{0x3fdad00f, 0x5422058b} }, -/**/ {{0x3c7fc4c3, 0x3891d2e8} }, -/**/ {{0x3feab455, 0x46de51cf} }, -/**/ {{0xbc5b834a, 0xdbc38cc9} }, -/**/ {{0xbfd3d906, 0x844a38eb} }, -/**/ {{0x3c6198e5, 0xbc44eee8} }, -/**/ {{0xbfb416ed, 0x5993cade} }, -/**/ {{0xbc235ccb, 0xfa289b6c} }, -/**/ {{0x3fc62997, 0x60e2a3af} }, -/**/ {{0xbc69a660, 0xcf7bda0e} }, -/**/ {{0xbfb04bd3, 0x33612b72} }, -/**/ {{0xbfad2210, 0xcf62bcd9} }, -/**/ {{0x3fb2fe5e, 0x603bfc37} }, -/**/ {{0xbf89e1ba, 0xa9bce7ec} }, -/**/ {{0xbfa461a9, 0xb83029d5} } }, -/**/ {{{0x3fdcc000, 0x00000000} }, -/**/ {{0x3fdb0564, 0x20ae9344} }, -/**/ {{0xbc793139, 0x46363455} }, -/**/ {{0x3feaa074, 0xcde0631f} }, -/**/ {{0x3c84b49a, 0x143fe6d4} }, -/**/ {{0xbfd3e7d5, 0x627b115b} }, -/**/ {{0x3c77a502, 0x332989c0} }, -/**/ {{0xbfb36644, 0xb589513f} }, -/**/ {{0x3c3abdc9, 0x105eec96} }, -/**/ {{0x3fc6006d, 0xdd12e0be} }, -/**/ {{0xbc4f0281, 0x5d67cb35} }, -/**/ {{0xbfb0a1ab, 0x4238ba83} }, -/**/ {{0xbfac18e3, 0x73889526} }, -/**/ {{0x3fb2e311, 0xfde6351a} }, -/**/ {{0xbf8cb2d2, 0xc256833f} }, -/**/ {{0xbfa3adca, 0xf73e36f0} } }, -/**/ {{{0x3fdd0000, 0x00000000} }, -/**/ {{0x3fdb3a91, 0x1da65c6c} }, -/**/ {{0x3c7ae187, 0xb1ca5040} }, -/**/ {{0x3fea8c85, 0xc81a2254} }, -/**/ {{0xbc83c191, 0x8d67728b} }, -/**/ {{0xbfd3f620, 0x3e8218e0} }, -/**/ {{0xbc72bf32, 0x52bd43ef} }, -/**/ {{0xbfb2b6e8, 0xadb5f398} }, -/**/ {{0x3c340287, 0x6b74d451} }, -/**/ {{0x3fc5d671, 0x9d9e25fc} }, -/**/ {{0x3c639669, 0x518d7a71} }, -/**/ {{0xbfb0f46a, 0x19cc29a0} }, -/**/ {{0xbfab1147, 0xc1a69750} }, -/**/ {{0x3fb2c501, 0x2c826e6b} }, -/**/ {{0xbf8f6a95, 0xcbc1b186} }, -/**/ {{0xbfa2f96d, 0x2de89811} } }, -/**/ {{{0x3fdd4000, 0x00000000} }, -/**/ {{0x3fdb6f96, 0x2e737efc} }, -/**/ {{0xbc5ca534, 0x64981e71} }, -/**/ {{0x3fea7888, 0xb9102ddc} }, -/**/ {{0xbc7791b2, 0x3c46d7d5} }, -/**/ {{0xbfd403e8, 0x1444efb5} }, -/**/ {{0xbc6047c5, 0x4f3d22a6} }, -/**/ {{0xbfb208df, 0xb90ac1cc} }, -/**/ {{0x3c4078b1, 0x2d2115d8} }, -/**/ {{0x3fc5abaa, 0x5b7c61a2} }, -/**/ {{0x3c3eef6a, 0x2bd2d19a} }, -/**/ {{0xbfb14414, 0xa8850e1a} }, -/**/ {{0xbfaa0b63, 0xc6580343} }, -/**/ {{0x3fb2a445, 0x4876cfdf} }, -/**/ {{0xbf91047b, 0x562d0829} }, -/**/ {{0xbfa244d3, 0xbe562a83} } }, -/**/ {{{0x3fdd8000, 0x00000000} }, -/**/ {{0x3fdba473, 0x378624a5} }, -/**/ {{0x3c7519a1, 0xb46e4aff} }, -/**/ {{0x3fea647e, 0x2348d9a3} }, -/**/ {{0xbc84f6c2, 0x9156e59f} }, -/**/ {{0xbfd4112d, 0xe46b4c91} }, -/**/ {{0xbc78c11d, 0x110fe0b7} }, -/**/ {{0xbfb15c30, 0x10e3d572} }, -/**/ {{0x3c53b45b, 0x4427c00b} }, -/**/ {{0x3fc5801f, 0xc2c486ae} }, -/**/ {{0xbc49bb5e, 0xc20ced8b} }, -/**/ {{0xbfb190b0, 0x4cddef65} }, -/**/ {{0xbfa9075c, 0x2ae4bcd0} }, -/**/ {{0x3fb280f7, 0xb69396b9} }, -/**/ {{0xbf9246f8, 0xce179ccb} }, -/**/ {{0xbfa1903f, 0xce6e9b2b} } }, -/**/ {{{0x3fddc000, 0x00000000} }, -/**/ {{0x3fdbd928, 0x1e528192} }, -/**/ {{0xbc74b154, 0x39af6b66} }, -/**/ {{0x3fea5066, 0x88478403} }, -/**/ {{0xbc85c7e8, 0xbe71620f} }, -/**/ {{0xbfd41df2, 0xb430f4ac} }, -/**/ {{0xbc55db82, 0xe79c7595} }, -/**/ {{0xbfb0b0df, 0xb173ac76} }, -/**/ {{0x3c57f440, 0xe4738d25} }, -/**/ {{0x3fc553d9, 0x7199976b} }, -/**/ {{0x3c54990c, 0x2a872a12} }, -/**/ {{0xbfb1da42, 0xd137dd01} }, -/**/ {{0xbfa80554, 0x350bfdb5} }, -/**/ {{0x3fb25b31, 0xdae9e17f} }, -/**/ {{0xbf937cc5, 0xe9e265b4} }, -/**/ {{0xbfa0dbf0, 0x3d16a202} } }, -/**/ {{{0x3fde0000, 0x00000000} }, -/**/ {{0x3fdc0db4, 0xc94ec9f0} }, -/**/ {{0xbc7cc1ce, 0x70934c34} }, -/**/ {{0x3fea3c42, 0x68881898} }, -/**/ {{0x3c8f907f, 0xe5c3bd97} }, -/**/ {{0xbfd42a37, 0x8d38076d} }, -/**/ {{0xbc6b8354, 0x7e19d62d} }, -/**/ {{0xbfb006f4, 0x5a36f1bd} }, -/**/ {{0xbc41701e, 0xca398c09} }, -/**/ {{0x3fc526de, 0xf7221a2a} }, -/**/ {{0xbc211868, 0x8041247e} }, -/**/ {{0xbfb220d2, 0x67b0229a} }, -/**/ {{0xbfa7056d, 0xc74d0c66} }, -/**/ {{0x3fb2330d, 0x0ff472e2} }, -/**/ {{0xbf94a5e9, 0x9cb74216} }, -/**/ {{0xbfa02821, 0x992b9e1f} } }, -/**/ {{{0x3fde4000, 0x00000000} }, -/**/ {{0x3fdc4219, 0x1ff11eb7} }, -/**/ {{0xbc7b17df, 0x434b3eee} }, -/**/ {{0x3fea2812, 0x437ac09e} }, -/**/ {{0xbc540368, 0xf9618c21} }, -/**/ {{0xbfd435fd, 0x7d5ba406} }, -/**/ {{0x3c75605b, 0x5e0a732a} }, -/**/ {{0xbfaebce7, 0x1ce0c104} }, -/**/ {{0xbc446d02, 0xd4eb3297} }, -/**/ {{0x3fc4f937, 0xd289f60b} }, -/**/ {{0x3c5b88b7, 0xe736fa8b} }, -/**/ {{0xbfb26465, 0xa5f78db4} }, -/**/ {{0xbfa607c9, 0x61a972db} }, -/**/ {{0x3fb208a2, 0x9e13b088} }, -/**/ {{0xbf95c26f, 0x06c33653} }, -/**/ {{0xbf9eea1c, 0x346237b1} } }, -/**/ {{{0x3fde8000, 0x00000000} }, -/**/ {{0x3fdc7655, 0x0aad71f9} }, -/**/ {{0xbc774b8b, 0xff7043e4} }, -/**/ {{0x3fea13d6, 0x977fc070} }, -/**/ {{0xbc86c451, 0xd9440881} }, -/**/ {{0xbfd44145, 0x9682eee2} }, -/**/ {{0x3c74156f, 0xb13901b4} }, -/**/ {{0xbfad6ec5, 0x2b58de73} }, -/**/ {{0x3c2ced26, 0xdf653988} }, -/**/ {{0x3fc4caeb, 0x720eb232} }, -/**/ {{0x3c614246, 0x92f3f809} }, -/**/ {{0xbfb2a503, 0x812caa81} }, -/**/ {{0xbfa50c86, 0x22dc20a7} }, -/**/ {{0x3fb1dc0b, 0xb35de59d} }, -/**/ {{0xbf96d265, 0x4adc8c38} }, -/**/ {{0xbf9d85db, 0x35444e0c} } }, -/**/ {{{0x3fdec000, 0x00000000} }, -/**/ {{0x3fdcaa68, 0x72f3631b} }, -/**/ {{0x3c295067, 0x81636f48} }, -/**/ {{0x3fe9ff8f, 0xe1e381db} }, -/**/ {{0xbc6fffe6, 0x00701e1c} }, -/**/ {{0xbfd44c10, 0xee747cac} }, -/**/ {{0xbc7a7f22, 0xced401ad} }, -/**/ {{0xbfac238c, 0xf898de26} }, -/**/ {{0x3c1eb191, 0xdaa7d32f} }, -/**/ {{0x3fc49c01, 0x32160e42} }, -/**/ {{0x3c649f02, 0x03d0023c} }, -/**/ {{0xbfb2e2b3, 0x49ba4fb7} }, -/**/ {{0xbfa413c1, 0xca00d6c7} }, -/**/ {{0x3fb1ad61, 0x5bc495cf} }, -/**/ {{0xbf97d5df, 0x63d0ff69} }, -/**/ {{0xbf9c23eb, 0x27af7010} } }, -/**/ {{{0x3fdf0000, 0x00000000} }, -/**/ {{0x3fdcde53, 0x432c1351} }, -/**/ {{0xbc7a2cfa, 0x4418f1ad} }, -/**/ {{0x3fe9eb3e, 0x9edacacc} }, -/**/ {{0xbc8942c5, 0x87d23ca5} }, -/**/ {{0xbfd45660, 0x9eaa285d} }, -/**/ {{0x3c4fe8e6, 0x52cf85b4} }, -/**/ {{0xbfaadb48, 0x28319af3} }, -/**/ {{0xbc207b46, 0x31b456b0} }, -/**/ {{0x3fc46c80, 0x5c4ee7c2} }, -/**/ {{0x3c4bdfc1, 0xb4443c76} }, -/**/ {{0xbfb31d7c, 0xa73bc33f} }, -/**/ {{0xbfa31d98, 0xb8a731f5} }, -/**/ {{0x3fb17cbc, 0x798f7481} }, -/**/ {{0xbf98ccf3, 0xf977e9ca} }, -/**/ {{0xbf9ac4b2, 0x36ea1578} } }, -/**/ {{{0x3fdf4000, 0x00000000} }, -/**/ {{0x3fdd1215, 0x66b7f2ad} }, -/**/ {{0x3c7be678, 0x35886c30} }, -/**/ {{0x3fe9d6e3, 0x497f1fed} }, -/**/ {{0xbc8ec056, 0x9a35c454} }, -/**/ {{0xbfd46035, 0xc4255988} }, -/**/ {{0x3c7ddb7b, 0x7144427c} }, -/**/ {{0xbfa995ff, 0xe9b44acd} }, -/**/ {{0x3c3c9d56, 0xb529cf65} }, -/**/ {{0x3fc43c70, 0x26dc5cda} }, -/**/ {{0x3c6d6ee6, 0xfde6cd82} }, -/**/ {{0xbfb35567, 0x9467b39a} }, -/**/ {{0xbfa22a25, 0xf54ca1ba} }, -/**/ {{0x3fb14a35, 0xbe2d5d2d} }, -/**/ {{0xbf99b7bd, 0x35a34e74} }, -/**/ {{0xbf996891, 0xc4948489} } }, -/**/ {{{0x3fdf8000, 0x00000000} }, -/**/ {{0x3fdd45ae, 0xc9ec862b} }, -/**/ {{0x3c689421, 0x163ef92d} }, -/**/ {{0x3fe9c27e, 0x5bcb52c7} }, -/**/ {{0xbc892d91, 0xf148a350} }, -/**/ {{0xbfd46991, 0x7f43bff0} }, -/**/ {{0xbc738b23, 0x8da13c27} }, -/**/ {{0xbfa853bc, 0xf9f19dcd} }, -/**/ {{0x3c2ea7a9, 0x2433c5cf} }, -/**/ {{0x3fc40bd7, 0xb38b19e0} }, -/**/ {{0xbc5d466e, 0x1c2a2863} }, -/**/ {{0xbfb38a7c, 0x5b0333a7} }, -/**/ {{0xbfa13983, 0x2e3896d7} }, -/**/ {{0x3fb115e5, 0xa35b7545} }, -/**/ {{0xbf9a9658, 0x99098556} }, -/**/ {{0xbf980fe6, 0x693ac59e} } }, -/**/ {{{0x3fdfc000, 0x00000000} }, -/**/ {{0x3fdd791f, 0x5a1226f5} }, -/**/ {{0xbc64017e, 0xa5b64a76} }, -/**/ {{0x3fe9ae10, 0x4e983ae9} }, -/**/ {{0xbc8d45ed, 0x52b783d7} }, -/**/ {{0xbfd47274, 0xf394891f} }, -/**/ {{0xbc7cd478, 0x22e08713} }, -/**/ {{0xbfa71487, 0xa445379d} }, -/**/ {{0x3c1569aa, 0x831d87b7} }, -/**/ {{0x3fc3dabe, 0x0f10bc36} }, -/**/ {{0x3bd8df2b, 0x1cb9bbe6} }, -/**/ {{0xbfb3bcc3, 0x8fddd862} }, -/**/ {{0xbfa04bc8, 0xbcb632d9} }, -/**/ {{0x3fb0dfe4, 0x64a26d77} }, -/**/ {{0xbf9b68e6, 0xd04027d1} }, -/**/ {{0xbf96bb07, 0xf792c5d9} } }, -/**/ {{{0x3fe00000, 0x00000000} }, -/**/ {{0x3fddac67, 0x0561bb4f} }, -/**/ {{0x3c7a2b7f, 0x222f65e2} }, -/**/ {{0x3fe99999, 0x9999999a} }, -/**/ {{0xbc899999, 0x9999999a} }, -/**/ {{0xbfd47ae1, 0x47ae147b} }, -/**/ {{0x3c5eb851, 0xeb851eb8} }, -/**/ {{0xbfa5d867, 0xc3ece2a5} }, -/**/ {{0xbc3a485c, 0xd7b900af} }, -/**/ {{0x3fc3a92a, 0x30553261} }, -/**/ {{0x3c6f06f6, 0x94467382} }, -/**/ {{0xbfb3ec46, 0x0ed80a18} }, -/**/ {{0xbf9ec21b, 0x514d88d8} }, -/**/ {{0x3fb0a849, 0xf929a833} }, -/**/ {{0xbf9c2f8b, 0x88dfb80c} }, -/**/ {{0xbf956a49, 0x8245bf09} } }, -/**/ {{{0x3fe02000, 0x00000000} }, -/**/ {{0x3fdddf85, 0xbb026974} }, -/**/ {{0x3c643bbb, 0x0c0a1226} }, -/**/ {{0x3fe9851a, 0xb35b2797} }, -/**/ {{0x3c89cd14, 0x18a8fead} }, -/**/ {{0xbfd482d7, 0xa5042a2d} }, -/**/ {{0x3c0dbc04, 0xa8224d16} }, -/**/ {{0xbfa49f64, 0xc56ade02} }, -/**/ {{0x3c451e52, 0x47da7eea} }, -/**/ {{0x3fc37722, 0xf7c5fe7d} }, -/**/ {{0xbc5165be, 0xd22c4b5c} }, -/**/ {{0xbfb4190c, 0xf6f48c5d} }, -/**/ {{0xbf9cf2cf, 0x58d0c132} }, -/**/ {{0x3fb06f2e, 0x0ddfdd74} }, -/**/ {{0xbf9cea6d, 0x46e65336} }, -/**/ {{0xbf941df9, 0x6423af3b} } }, -/**/ {{{0x3fe04000, 0x00000000} }, -/**/ {{0x3fde127b, 0x6b0744b0} }, -/**/ {{0xbc52b098, 0x6398d4ab} }, -/**/ {{0x3fe97094, 0x113dcc5a} }, -/**/ {{0xbc842780, 0x4de8c575} }, -/**/ {{0xbfd48a59, 0x37beb8e5} }, -/**/ {{0xbc601dd2, 0x9dc7541e} }, -/**/ {{0xbfa36985, 0xa7f2a8fe} }, -/**/ {{0xbc45e414, 0x7437d42d} }, -/**/ {{0x3fc344af, 0x2eb33dd6} }, -/**/ {{0xbc6d66e9, 0xe3a3193c} }, -/**/ {{0xbfb44321, 0xa6763232} }, -/**/ {{0xbf9b29d6, 0x7217dfc9} }, -/**/ {{0x3fb034a7, 0xfff8a866} }, -/**/ {{0xbf9d99b5, 0x3a6e931d} }, -/**/ {{0xbf92d661, 0x4a9f7e19} } }, -/**/ {{{0x3fe06000, 0x00000000} }, -/**/ {{0x3fde4548, 0x066cf51a} }, -/**/ {{0x3c43a3aa, 0x12ce98f2} }, -/**/ {{0x3fe95c06, 0x2774fe53} }, -/**/ {{0x3c810dfd, 0x3b851412} }, -/**/ {{0xbfd49167, 0x2e911e43} }, -/**/ {{0xbc7f6506, 0x09466fcd} }, -/**/ {{0xbfa236d0, 0xfedfb0c1} }, -/**/ {{0xbc3f6870, 0x79cb63a9} }, -/**/ {{0x3fc311d5, 0x86b6561c} }, -/**/ {{0x3c561982, 0x9543fc9a} }, -/**/ {{0xbfb46a8d, 0xb70aa5a7} }, -/**/ {{0xbf996756, 0xf5ac1efc} }, -/**/ {{0x3faff19d, 0xaf7c84b3} }, -/**/ {{0xbf9e3d8f, 0x15ce96b8} }, -/**/ {{0xbf9193c6, 0x42726021} } }, -/**/ {{{0x3fe08000, 0x00000000} }, -/**/ {{0x3fde77eb, 0x7f175a34} }, -/**/ {{0x3c70e53d, 0xc1bf3435} }, -/**/ {{0x3fe94771, 0x69044ba4} }, -/**/ {{0xbc7d53e2, 0x92d5fbc1} }, -/**/ {{0xbfd49802, 0xba91fd89} }, -/**/ {{0x3c71963e, 0xc3c8c4f3} }, -/**/ {{0xbfa1074c, 0xf33546d5} }, -/**/ {{0x3c4bc296, 0xc71ad288} }, -/**/ {{0x3fc2de9c, 0x99222665} }, -/**/ {{0x3c6e4a10, 0x28dadb64} }, -/**/ {{0xbfb48f5a, 0xfa031cb1} }, -/**/ {{0xbf97ab74, 0xbc0c6420} }, -/**/ {{0x3faf7772, 0x876d0f75} }, -/**/ {{0xbf9ed628, 0xe431fc96} }, -/**/ {{0xbf905668, 0xc64515ec} } }, -/**/ {{{0x3fe0a000, 0x00000000} }, -/**/ {{0x3fdeaa65, 0xc7cf28c4} }, -/**/ {{0x3c62fb2c, 0xeca3bf05} }, -/**/ {{0x3fe932d6, 0x47bd0aaa} }, -/**/ {{0x3c6bdfec, 0x697b6e3c} }, -/**/ {{0xbfd49e2d, 0x0f13a7e8} }, -/**/ {{0x3c6198c5, 0x20412940} }, -/**/ {{0xbf9fb5fe, 0x8a4e92df} }, -/**/ {{0xbc3cbb58, 0x6309a51a} }, -/**/ {{0x3fc2ab0a, 0xe67c9829} }, -/**/ {{0xbc647643, 0x06a4c4ef} }, -/**/ {{0xbfb4b193, 0x749bc711} }, -/**/ {{0xbf95f651, 0x27bef265} }, -/**/ {{0x3faefafb, 0x28347ebf} }, -/**/ {{0xbf9f63b2, 0xe0c06e2f} }, -/**/ {{0xbf8e3d09, 0x9e7b9dd7} } }, -/**/ {{{0x3fe0c000, 0x00000000} }, -/**/ {{0x3fdedcb6, 0xd43f8435} }, -/**/ {{0xbc5fc976, 0x330884e4} }, -/**/ {{0x3fe91e35, 0x343c31e5} }, -/**/ {{0xbc8fd46f, 0x9bb96799} }, -/**/ {{0xbfd4a3e7, 0x617d19a1} }, -/**/ {{0xbc7d7303, 0xea58b250} }, -/**/ {{0xbf9d63da, 0x9b55d156} }, -/**/ {{0xbc14bf72, 0xd5b4cc6c} }, -/**/ {{0x3fc27726, 0xd6016a7c} }, -/**/ {{0x3c4eba22, 0x435ec4b4} }, -/**/ {{0xbfb4d141, 0x5c52b3c6} }, -/**/ {{0xbf94480b, 0x2fdd9fbd} }, -/**/ {{0x3fae7c63, 0x6d3af4b6} }, -/**/ {{0xbf9fe65f, 0x4e61315b} }, -/**/ {{0xbf8bd8a3, 0xcea37283} } }, -/**/ {{{0x3fe0e000, 0x00000000} }, -/**/ {{0x3fdf0ede, 0x98f393d0} }, -/**/ {{0xbc72f40a, 0x87cb1894} }, -/**/ {{0x3fe9098e, 0x9de85688} }, -/**/ {{0xbc7c2de1, 0xa3791e64} }, -/**/ {{0xbfd4a932, 0xe9238ed7} }, -/**/ {{0xbc67a1bb, 0x28864386} }, -/**/ {{0xbf9b1838, 0x001dec68} }, -/**/ {{0xbc33ee0e, 0x8f0ffbdd} }, -/**/ {{0x3fc242f6, 0xb52e1005} }, -/**/ {{0xbc5476eb, 0x371fd2c1} }, -/**/ {{0xbfb4ee6f, 0x134edf2d} }, -/**/ {{0xbf92a0bf, 0x6b13becc} }, -/**/ {{0x3fadfbd6, 0x650f859c} }, -/**/ {{0xbfa02f31, 0x281586f4} }, -/**/ {{0xbf898006, 0x7a73449e} } }, -/**/ {{{0x3fe10000, 0x00000000} }, -/**/ {{0x3fdf40dd, 0x0b541418} }, -/**/ {{0xbc6a3992, 0xdc382a23} }, -/**/ {{0x3fe8f4e2, 0xf2efd135} }, -/**/ {{0xbc74c3c0, 0xd4218911} }, -/**/ {{0xbfd4ae10, 0xdf24b2d1} }, -/**/ {{0x3c713b12, 0x79d0ac37} }, -/**/ {{0xbf98d31f, 0xd7365f3f} }, -/**/ {{0xbc18bf3b, 0x62531dc5} }, -/**/ {{0x3fc20e80, 0xb7567664} }, -/**/ {{0xbc54a699, 0xd450197f} }, -/**/ {{0xbfb50927, 0x24d80ddd} }, -/**/ {{0xbf910088, 0x1b0516ab} }, -/**/ {{0x3fad797e, 0x4a356567} }, -/**/ {{0xbfa065f8, 0xe14758ed} }, -/**/ {{0xbf87338f, 0x73d2f6bb} } }, -/**/ {{{0x3fe12000, 0x00000000} }, -/**/ {{0x3fdf72b2, 0x21a4e495} }, -/**/ {{0x3c5489c2, 0x0f7eb740} }, -/**/ {{0x3fe8e032, 0xa0470831} }, -/**/ {{0xbc8c154a, 0xe75570cd} }, -/**/ {{0xbfd4b282, 0x7e416c35} }, -/**/ {{0xbc7f1837, 0x60646afd} }, -/**/ {{0xbf96949a, 0x7a6bec27} }, -/**/ {{0x3c38238f, 0xe6b77ba9} }, -/**/ {{0x3fc1d9ca, 0xf5428c61} }, -/**/ {{0x3c6a968d, 0xcd7881aa} }, -/**/ {{0xbfb52174, 0x41e00b6e} }, -/**/ {{0xbf8ecefa, 0x702ad3de} }, -/**/ {{0x3facf584, 0x7c8ae0dc} }, -/**/ {{0xbfa097a2, 0x8aa44fa8} }, -/**/ {{0xbf84f394, 0x2ed63408} } }, -/**/ {{{0x3fe14000, 0x00000000} }, -/**/ {{0x3fdfa45d, 0xd3029259} }, -/**/ {{0xbc7ca563, 0xdc28d8b5} }, -/**/ {{0x3fe8cb7e, 0x11a6de80} }, -/**/ {{0x3c610be6, 0xac22b8f8} }, -/**/ {{0xbfd4b689, 0x02b9488a} }, -/**/ {{0x3c5ea0bd, 0xaf91d442} }, -/**/ {{0xbf945caf, 0x821fd17e} }, -/**/ {{0x3c38e464, 0x0e51a049} }, -/**/ {{0x3fc1a4db, 0x6cd45aad} }, -/**/ {{0x3c2288e0, 0xf4200d5e} }, -/**/ {{0xbfb53761, 0x3d9dd7c4} }, -/**/ {{0xbf8bab68, 0xfb107457} }, -/**/ {{0x3fac7011, 0x7b46ebd1} }, -/**/ {{0xbfa0c44a, 0x93134a8f} }, -/**/ {{0xbf82c061, 0xf1fa4589} } }, -/**/ {{{0x3fe16000, 0x00000000} }, -/**/ {{0x3fdfd5e0, 0x175fdf83} }, -/**/ {{0x3c63a87b, 0x1ec49b15} }, -/**/ {{0x3fe8b6c5, 0xb18b4749} }, -/**/ {{0xbc5fabb8, 0xb7d58c0a} }, -/**/ {{0xbfd4ba25, 0xaa26890c} }, -/**/ {{0x3c50e395, 0x0ef9b688} }, -/**/ {{0xbf922b65, 0xc8a9b4c0} }, -/**/ {{0x3c2835ee, 0xd319146f} }, -/**/ {{0x3fc16fb8, 0x00b681bd} }, -/**/ {{0x3c1df633, 0x279133b0} }, -/**/ {{0xbfb54af9, 0x0a3b410c} }, -/**/ {{0xbf889682, 0xebe14682} }, -/**/ {{0x3fabe94c, 0xdf89e086} }, -/**/ {{0xbfa0ec0e, 0x0e55a6f8} }, -/**/ {{0xbf809a3e, 0x08af68f3} } }, -/**/ {{{0x3fe18000, 0x00000000} }, -/**/ {{0x3fe0039c, 0x73c1a40c} }, -/**/ {{0xbc8b32c9, 0x49c9d593} }, -/**/ {{0x3fe8a209, 0xe931fcd3} }, -/**/ {{0x3c6cb8f0, 0x8e68c94c} }, -/**/ {{0xbfd4bd59, 0xb35ad2d8} }, -/**/ {{0xbc61ac1a, 0xcaa606b4} }, -/**/ {{0xbf9000c3, 0x6dc339ef} }, -/**/ {{0x3c2c62e2, 0xaeaeaa73} }, -/**/ {{0x3fc13a66, 0x7812ee2d} }, -/**/ {{0x3c6a8cc2, 0x948ffe5b} }, -/**/ {{0xbfb55c46, 0xb5955c9c} }, -/**/ {{0xbf85906b, 0x0fd2b503} }, -/**/ {{0x3fab615d, 0x577de2da} }, -/**/ {{0xbfa10f0a, 0xa34d31ec} }, -/**/ {{0xbf7d02cb, 0xefe48ad0} } }, -/**/ {{{0x3fe1a000, 0x00000000} }, -/**/ {{0x3fe01c34, 0x1e82422d} }, -/**/ {{0x3c83db44, 0xfcca90ee} }, -/**/ {{0x3fe88d4b, 0x20995a88} }, -/**/ {{0x3c802777, 0x1e42e681} }, -/**/ {{0xbfd4c026, 0x5e3c840f} }, -/**/ {{0x3c7d7c65, 0x3800420d} }, -/**/ {{0xbf8bb99b, 0xb3f88703} }, -/**/ {{0x3c1f62ec, 0x4bf63e82} }, -/**/ {{0x3fc104ec, 0x7e5193ee} }, -/**/ {{0xbc27771e, 0xbae4e07d} }, -/**/ {{0xbfb56b55, 0x66104515} }, -/**/ {{0xbf829940, 0x061a20d1} }, -/**/ {{0x3faad868, 0xa20334d9} }, -/**/ {{0xbfa12d5e, 0x7aba8ee6} }, -/**/ {{0xbf78ec1f, 0x69774b8d} } }, -/**/ {{{0x3fe1c000, 0x00000000} }, -/**/ {{0x3fe034b7, 0x09250488} }, -/**/ {{0x3c78f9b3, 0x8d855410} }, -/**/ {{0x3fe87889, 0xbe7f594b} }, -/**/ {{0xbc7530e1, 0xc826e7a3} }, -/**/ {{0xbfd4c28c, 0xeba4af80} }, -/**/ {{0x3c7104a9, 0xe6a95faa} }, -/**/ {{0xbf877f13, 0x846dba10} }, -/**/ {{0x3c2bc924, 0x4abd0010} }, -/**/ {{0x3fc0cf4f, 0xa2deff9f} }, -/**/ {{0xbc67d17e, 0xa013c015} }, -/**/ {{0xbfb57830, 0x577e7899} }, -/**/ {{0xbf7f6238, 0xb49ea16d} }, -/**/ {{0x3faa4e93, 0x8ae4a926} }, -/**/ {{0xbfa14728, 0x2e77f633} }, -/**/ {{0xbf74f0d3, 0xb81c893e} } }, -/**/ {{{0x3fe1e000, 0x00000000} }, -/**/ {{0x3fe04d25, 0x314342e6} }, -/**/ {{0xbc81c863, 0x6442c767} }, -/**/ {{0x3fe863c6, 0x2860ad7e} }, -/**/ {{0xbc81dcb2, 0x137a2d8f} }, -/**/ {{0xbfd4c48e, 0x9d3dc03a} }, -/**/ {{0xbc7d92af, 0x197b1db9} }, -/**/ {{0xbf8351f6, 0x5653b1a7} }, -/**/ {{0xbbe368b4, 0x2127dea7} }, -/**/ {{0x3fc09995, 0x58fa8ca4} }, -/**/ {{0xbc446391, 0x530429e5} }, -/**/ {{0xbfb582e2, 0xd81c26eb} }, -/**/ {{0xbf79b02d, 0x3e63c109} }, -/**/ {{0x3fa9c401, 0xe7904294} }, -/**/ {{0xbfa15c86, 0xb933b0f3} }, -/**/ {{0xbf711137, 0xd8d860e1} } }, -/**/ {{{0x3fe20000, 0x00000000} }, -/**/ {{0x3fe0657e, 0x94db30d0} }, -/**/ {{0xbc7d5b49, 0x5f6349e6} }, -/**/ {{0x3fe84f00, 0xc2780614} }, -/**/ {{0xbc7fe7b0, 0xff3d87fa} }, -/**/ {{0xbfd4c62c, 0xb562c625} }, -/**/ {{0x3c77b2c3, 0xa78e848c} }, -/**/ {{0xbf7e6495, 0xb3a4bcb7} }, -/**/ {{0x3c14eb89, 0xe3f2b0a5} }, -/**/ {{0x3fc063c2, 0xf78c0dc4} }, -/**/ {{0xbc6badf0, 0x7539dc13} }, -/**/ {{0xbfb58b78, 0x459eb443} }, -/**/ {{0xbf741c83, 0x1386e6b4} }, -/**/ {{0x3fa938d6, 0x944ff706} }, -/**/ {{0xbfa16d99, 0x66ad4037} }, -/**/ {{0xbf6a9b1a, 0x01fc736a} } }, -/**/ {{{0x3fe22000, 0x00000000} }, -/**/ {{0x3fe07dc3, 0x324e9b38} }, -/**/ {{0x3c7b70c9, 0xe04450ac} }, -/**/ {{0x3fe83a39, 0xefbd6bfe} }, -/**/ {{0xbc7b2885, 0x21f5de26} }, -/**/ {{0xbfd4c768, 0x76ff6c9e} }, -/**/ {{0x3c56a2c0, 0xdebc1603} }, -/**/ {{0xbf76402c, 0xd9cccfd7} }, -/**/ {{0xbc1b39c0, 0x4e9786c1} }, -/**/ {{0x3fc02ddd, 0xb900b57a} }, -/**/ {{0x3c45d916, 0xea88a215} }, -/**/ {{0xbfb591fc, 0x0a58ab40} }, -/**/ {{0xbf6d4eb0, 0x32a37ac9} }, -/**/ {{0x3fa8ad33, 0x71fe75f8} }, -/**/ {{0xbfa17a7f, 0xc477a855} }, -/**/ {{0xbf634c0e, 0x2b035011} } }, -/**/ {{{0x3fe24000, 0x00000000} }, -/**/ {{0x3fe095f3, 0x0861a590} }, -/**/ {{0xbc7121b2, 0x0a15a9f3} }, -/**/ {{0x3fe82572, 0x11e5c14d} }, -/**/ {{0xbc7df9fc, 0xacd80b09} }, -/**/ {{0xbfd4c843, 0x25709bff} }, -/**/ {{0x3c7a9ef6, 0x1790f484} }, -/**/ {{0xbf6c6d74, 0x8a0def34} }, -/**/ {{0xbc051e57, 0x2a8142d7} }, -/**/ {{0x3fbfefd5, 0x765e156b} }, -/**/ {{0xbc3e6048, 0xf0e29c9e} }, -/**/ {{0xbfb59679, 0x9a724e28} }, -/**/ {{0xbf62a185, 0xcf13e192} }, -/**/ {{0x3fa82139, 0x6433c13f} }, -/**/ {{0xbfa18359, 0x9342e95d} }, -/**/ {{0xbf586b34, 0x8f974107} } }, -/**/ {{{0x3fe26000, 0x00000000} }, -/**/ {{0x3fe0ae0e, 0x1639866c} }, -/**/ {{0x3c7075ab, 0xf2de445a} }, -/**/ {{0x3fe810a9, 0x89625f5d} }, -/**/ {{0xbc8e4bea, 0x0fcf7262} }, -/**/ {{0xbfd4c8be, 0x0465c69b} }, -/**/ {{0x3c462ef4, 0xd7f7f89c} }, -/**/ {{0xbf59210e, 0x4de612d5} }, -/**/ {{0xbbf43659, 0xba53898d} }, -/**/ {{0x3fbf83dd, 0xfe836c69} }, -/**/ {{0xbc36cb56, 0x27f5499a} }, -/**/ {{0xbfb598fc, 0x7136edda} }, -/**/ {{0xbf50634c, 0x00013fb7} }, -/**/ {{0x3fa79508, 0x4fe557c2} }, -/**/ {{0xbfa18846, 0xb8ae41dc} }, -/**/ {{0xbf455fce, 0xe36bd239} } }, -/**/ {{{0x3fe28000, 0x00000000} }, -/**/ {{0x3fe0c614, 0x5b5b43da} }, -/**/ {{0x3c5974fa, 0x13b5404f} }, -/**/ {{0x3fe7fbe0, 0xb560d35c} }, -/**/ {{0xbc84f066, 0xae5a0887} }, -/**/ {{0xbfd4c8da, 0x57c2e1cb} }, -/**/ {{0x3c73de0e, 0xe0a3774c} }, -/**/ {{0x3f38b341, 0x61c69f3c} }, -/**/ {{0x3bd7b2e2, 0x7b200371} }, -/**/ {{0x3fbf17de, 0xd351e8ed} }, -/**/ {{0x3c5bce38, 0x650c5a9c} }, -/**/ {{0xbfb59990, 0x0e77234c} }, -/**/ {{0x3f3006ef, 0x99f594ee} }, -/**/ {{0x3fa708bf, 0x1a75a6cc} }, -/**/ {{0xbfa18967, 0x31a471d5} }, -/**/ {{0x3f24cc7e, 0x59bf0521} } }, -/**/ {{{0x3fe2a000, 0x00000000} }, -/**/ {{0x3fe0de05, 0xd7aa6f7d} }, -/**/ {{0xbc783684, 0xb1c529ab} }, -/**/ {{0x3fe7e717, 0xf3cab884} }, -/**/ {{0x3c7e1b21, 0x3b1fa4c7} }, -/**/ {{0xbfd4c899, 0x63830b4b} }, -/**/ {{0xbc7b6e32, 0xae3ffeff} }, -/**/ {{0x3f628757, 0xfc06cc4f} }, -/**/ {{0xbbb4c155, 0x56f01f66} }, -/**/ {{0x3fbeabe1, 0x8424efd8} }, -/**/ {{0x3bdf5129, 0x6e5604ea} }, -/**/ {{0xbfb5983f, 0xf3ffff64} }, -/**/ {{0x3f57ec04, 0x1f564189} }, -/**/ {{0x3fa67c7b, 0xa92e6e68} }, -/**/ {{0xbfa186db, 0x0542d0ff} }, -/**/ {{0x3f4ee247, 0x11a37bde} } }, -/**/ {{{0x3fe2c000, 0x00000000} }, -/**/ {{0x3fe0f5e2, 0x8b67e295} }, -/**/ {{0x3be311b1, 0x7ec990d0} }, -/**/ {{0x3fe7d24f, 0xa145af59} }, -/**/ {{0xbc83c6d1, 0xabdb623b} }, -/**/ {{0xbfd4c7fc, 0x6b9bdb30} }, -/**/ {{0x3c7c2fae, 0xd3bbb84b} }, -/**/ {{0x3f70e125, 0xc729b366} }, -/**/ {{0x3c1291fb, 0x7a19993c} }, -/**/ {{0x3fbe3fef, 0x66cf0dd8} }, -/**/ {{0xbc5428b7, 0xcd5e7640} }, -/**/ {{0xbfb59517, 0xa3273c21} }, -/**/ {{0x3f65adcf, 0x36891acb} }, -/**/ {{0x3fa5f05a, 0xe121c017} }, -/**/ {{0xbfa180c2, 0x384bad65} }, -/**/ {{0x3f5bd6f1, 0xd31e02a7} } }, -/**/ {{{0x3fe2e000, 0x00000000} }, -/**/ {{0x3fe10daa, 0x77307a0d} }, -/**/ {{0x3c869c33, 0xd44c7b05} }, -/**/ {{0x3fe7bd88, 0x19337139} }, -/**/ {{0xbc7fd248, 0x00e777ef} }, -/**/ {{0xbfd4c704, 0xb3e16264} }, -/**/ {{0xbc7ed720, 0xd46ed4e3} }, -/**/ {{0x3f7863a5, 0x62c1daf7} }, -/**/ {{0x3c155e73, 0x30cc82d1} }, -/**/ {{0x3fbdd411, 0x97a241da} }, -/**/ {{0x3c27a15a, 0x9ac44edd} }, -/**/ {{0xbfb59022, 0x9a6c71a6} }, -/**/ {{0x3f6f285a, 0xb5534ebe} }, -/**/ {{0x3fa56478, 0xa76d3cf7} }, -/**/ {{0xbfa1773c, 0xc1240db6} }, -/**/ {{0x3f63e5a1, 0x3891a70c} } }, -/**/ {{{0x3fe30000, 0x00000000} }, -/**/ {{0x3fe1255d, 0x9bfbd2a9} }, -/**/ {{0xbc52bdae, 0xe1c0ee35} }, -/**/ {{0x3fe7a8c1, 0xb5b1ffa1} }, -/**/ {{0x3c873e4a, 0x4e005ea3} }, -/**/ {{0xbfd4c5b3, 0x7fead5b8} }, -/**/ {{0x3c77958e, 0x55abc25a} }, -/**/ {{0x3f7fcb31, 0x01e4c970} }, -/**/ {{0xbc1ad968, 0xc5337fda} }, -/**/ {{0x3fbd6850, 0xf983ecf1} }, -/**/ {{0xbc3e45e6, 0x02ed6910} }, -/**/ {{0xbfb5896c, 0x532f49b6} }, -/**/ {{0x3f7432e2, 0xeaefcf7f} }, -/**/ {{0x3fa4d8ef, 0xe1db38f0} }, -/**/ {{0xbfa16a6a, 0x7c5c9def} }, -/**/ {{0x3f69a742, 0x7b6fe5d0} } }, -/**/ {{{0x3fe32000, 0x00000000} }, -/**/ {{0x3fe13cfb, 0xfb1b056e} }, -/**/ {{0x3c83110e, 0x6fc3ed38} }, -/**/ {{0x3fe793fc, 0xcf9bee6c} }, -/**/ {{0xbc8dc7d2, 0xd8d91b6c} }, -/**/ {{0xbfd4c40a, 0x12f7e51f} }, -/**/ {{0x3c7d1e10, 0x0d5d686d} }, -/**/ {{0x3f838be8, 0x839d28fa} }, -/**/ {{0x3c13427a, 0x52131640} }, -/**/ {{0x3fbcfcb6, 0x360bfed5} }, -/**/ {{0xbc5e3cb4, 0xa36f599f} }, -/**/ {{0xbfb58100, 0x3f7aa463} }, -/**/ {{0x3f78b31e, 0xb76f2bc0} }, -/**/ {{0x3fa44dda, 0x77dd6b80} }, -/**/ {{0xbfa15a6b, 0x21c53ca9} }, -/**/ {{0x3f6f30a7, 0x6cd99ed4} } }, -/**/ {{{0x3fe34000, 0x00000000} }, -/**/ {{0x3fe15485, 0x9637646a} }, -/**/ {{0xbc84ba7c, 0x548bf3c3} }, -/**/ {{0x3fe77f39, 0xbe88c85e} }, -/**/ {{0xbc6a983f, 0x9b6750c8} }, -/**/ {{0xbfd4c209, 0xafd6bee5} }, -/**/ {{0x3c7d21ef, 0x5e73e93a} }, -/**/ {{0x3f8724c7, 0xfc556ca7} }, -/**/ {{0xbc23cef2, 0x42e5673e} }, -/**/ {{0x3fbc9149, 0xbdaef67d} }, -/**/ {{0xbc1e549c, 0x3f04fcdc} }, -/**/ {{0xbfb576e9, 0xc7e4996a} }, -/**/ {{0x3f7d14fc, 0xba6ceedb} }, -/**/ {{0x3fa3c351, 0x53dcdc4a} }, -/**/ {{0xbfa1475e, 0x3a0a53a1} }, -/**/ {{0x3f724116, 0x62102619} } }, -/**/ {{{0x3fe36000, 0x00000000} }, -/**/ {{0x3fe16bfa, 0x6f5137e1} }, -/**/ {{0x3c79606f, 0xe141bd35} }, -/**/ {{0x3fe76a78, 0xd8cd8d65} }, -/**/ {{0x3c854a99, 0xddf1f71f} }, -/**/ {{0xbfd4bfb3, 0x98cabe40} }, -/**/ {{0xbc61e24d, 0x9ef99598} }, -/**/ {{0x3f8ab03d, 0x388e6864} }, -/**/ {{0x3c210541, 0xc340d113} }, -/**/ {{0x3fbc2613, 0xc7f24ec4} }, -/**/ {{0x3c54042a, 0x0a59af31} }, -/**/ {{0xbfb56b34, 0x49833ac1} }, -/**/ {{0x3f80ac4f, 0x22f6cd28} }, -/**/ {{0x3fa3396c, 0x64dac153} }, -/**/ {{0xbfa13163, 0x14dadf32} }, -/**/ {{0x3f74ce20, 0x21aeee27} } }, -/**/ {{{0x3fe38000, 0x00000000} }, -/**/ {{0x3fe1835a, 0x88be7c13} }, -/**/ {{0x3c8c621c, 0xec00c301} }, -/**/ {{0x3fe755ba, 0x737d49ca} }, -/**/ {{0xbc8abaf3, 0xd4cb44c6} }, -/**/ {{0xbfd4bd09, 0x0f73c4b3} }, -/**/ {{0x3c3e9ebf, 0xa9936e0b} }, -/**/ {{0x3f8e2e4f, 0x8920477f} }, -/**/ {{0xbc0889e3, 0x0360e009} }, -/**/ {{0x3fbbbb1c, 0x53aaefa0} }, -/**/ {{0xbc5edb26, 0xa1007b7f} }, -/**/ {{0xbfb55deb, 0x13f5f619} }, -/**/ {{0x3f82bf14, 0xe675741e} }, -/**/ {{0x3fa2b042, 0xa05e0ebf} }, -/**/ {{0xbfa11898, 0xbf95c5c1} }, -/**/ {{0x3f773faf, 0xe421ee51} } }, -/**/ {{{0x3fe3a000, 0x00000000} }, -/**/ {{0x3fe19aa5, 0xe5299f9a} }, -/**/ {{0xbc8a606c, 0x2c58f835} }, -/**/ {{0x3fe740fe, 0xe269c5b3} }, -/**/ {{0x3c873eff, 0x4c82509c} }, -/**/ {{0xbfd4ba0b, 0x54b63d79} }, -/**/ {{0xbc51d68a, 0x75bceeff} }, -/**/ {{0x3f90cf83, 0x9d9b3eb0} }, -/**/ {{0xbc107399, 0x68a7ca2f} }, -/**/ {{0x3fbb506b, 0x27453d35} }, -/**/ {{0x3c326b36, 0x00bdfedd} }, -/**/ {{0xbfb54f19, 0x67836cef} }, -/**/ {{0x3f84c2e5, 0x567ed6e8} }, -/**/ {{0x3fa227ea, 0x04a983e8} }, -/**/ {{0xbfa0fd1d, 0xfc7ce22f} }, -/**/ {{0x3f79960c, 0x2ffea71d} } }, -/**/ {{{0x3fe3c000, 0x00000000} }, -/**/ {{0x3fe1b1dc, 0x87904285} }, -/**/ {{0xbc621e8c, 0x8aef8f29} }, -/**/ {{0x3fe72c46, 0x78244c5a} }, -/**/ {{0x3c888c36, 0xe664f3a2} }, -/**/ {{0xbfd4b6bb, 0xa8a3ca2f} }, -/**/ {{0xbc778793, 0x1e1f3e19} }, -/**/ {{0x3f928136, 0xc8a3d8bb} }, -/**/ {{0x3c3dc4d8, 0x140daf1c} }, -/**/ {{0x3fbae607, 0xd1165ef3} }, -/**/ {{0xbc5fbfaa, 0x6305876c} }, -/**/ {{0xbfb53eca, 0x734b94bd} }, -/**/ {{0x3f86b7d8, 0x7c458eb1} }, -/**/ {{0x3fa1a077, 0x9b360f57} }, -/**/ {{0xbfa0df11, 0x3a6beabd} }, -/**/ {{0x3f7bd182, 0xaf42dc87} } }, -/**/ {{{0x3fe3e000, 0x00000000} }, -/**/ {{0x3fe1c8fe, 0x7341f64f} }, -/**/ {{0x3c728bbc, 0x9d5e792a} }, -/**/ {{0x3fe71791, 0x85fe8a32} }, -/**/ {{0x3c8f15bd, 0xe8bbb0d0} }, -/**/ {{0xbfd4b31b, 0x4a6497be} }, -/**/ {{0x3c737223, 0x782968f7} }, -/**/ {{0x3f942c46, 0x5e0c3122} }, -/**/ {{0xbc33e26a, 0x86422b13} }, -/**/ {{0x3fba7bf9, 0xa7b659b8} }, -/**/ {{0xbc3cdf63, 0x25381986} }, -/**/ {{0xbfb52d09, 0x538deb45} }, -/**/ {{0x3f889e08, 0xa0c1f425} }, -/**/ {{0x3fa119ff, 0x7b6d72e6} }, -/**/ {{0xbfa0be90, 0x8d11287b} }, -/**/ {{0x3f7df267, 0xbce83ad4} } }, -/**/ {{{0x3fe40000, 0x00000000} }, -/**/ {{0x3fe1e00b, 0xabdefeb4} }, -/**/ {{0xbc5928df, 0x287a668f} }, -/**/ {{0x3fe702e0, 0x5c0b8170} }, -/**/ {{0x3c7702e0, 0x5c0b8170} }, -/**/ {{0xbfd4af2b, 0x78215a76} }, -/**/ {{0xbc581c2e, 0xab3a13d8} }, -/**/ {{0x3f95d0b7, 0xe9e4a9d0} }, -/**/ {{0xbc3aa02a, 0xebf91fc7} }, -/**/ {{0x3fba1247, 0xca629942} }, -/**/ {{0xbc46961a, 0xc245db83} }, -/**/ {{0xbfb519e1, 0x100385b4} }, -/**/ {{0x3f8a7592, 0x32616ed8} }, -/**/ {{0x3fa09494, 0xcda1223a} }, -/**/ {{0xbfa09bb9, 0xa5a5c251} }, -/**/ {{0x3f7ff915, 0xf489d8ba} } }, -/**/ {{{0x3fe42000, 0x00000000} }, -/**/ {{0x3fe1f704, 0x3557138a} }, -/**/ {{0x3c76c659, 0xf6d7dd47} }, -/**/ {{0x3fe6ee33, 0x4920943e} }, -/**/ {{0xbc62723e, 0x61a3a541} }, -/**/ {{0xbfd4aaed, 0x6eedf042} }, -/**/ {{0x3c5b337a, 0xe7561ed4} }, -/**/ {{0x3f976e91, 0x68796803} }, -/**/ {{0xbc0e806f, 0x44d1db93} }, -/**/ {{0x3fb9a8f9, 0x21688625} }, -/**/ {{0x3c540185, 0xb1ec0554} }, -/**/ {{0xbfb5055c, 0x9a4cbc61} }, -/**/ {{0x3f8c3e93, 0xab0be204} }, -/**/ {{0x3fa01049, 0xce3968a1} }, -/**/ {{0xbfa076a9, 0xcc2331ba} }, -/**/ {{0x3f80f2f6, 0xe220db7e} } }, -/**/ {{{0x3fe44000, 0x00000000} }, -/**/ {{0x3fe20de8, 0x13e823b2} }, -/**/ {{0xbc8791d7, 0x53ebb744} }, -/**/ {{0x3fe6d98a, 0x9ad6a3fd} }, -/**/ {{0xbc808110, 0xc4e69862} }, -/**/ {{0xbfd4a662, 0x6ab4a79d} }, -/**/ {{0x3c52ed25, 0x9fc1cc2b} }, -/**/ {{0x3f9905d9, 0x42e6dc28} }, -/**/ {{0xbc228c79, 0xe39b7707} }, -/**/ {{0x3fb94014, 0x5e97c6f4} }, -/**/ {{0xbc52b822, 0xf8779202} }, -/**/ {{0xbfb4ef86, 0xcc723054} }, -/**/ {{0x3f8df92d, 0x76852811} }, -/**/ {{0x3f9f1a5f, 0xa231ee3f} }, -/**/ {{0xbfa04f7d, 0xd8f34e77} }, -/**/ {{0x3f81dcaa, 0x80706a34} } }, -/**/ {{{0x3fe46000, 0x00000000} }, -/**/ {{0x3fe224b7, 0x4c1d192a} }, -/**/ {{0x3c8d6d3d, 0xf88a60c4} }, -/**/ {{0x3fe6c4e6, 0x9d8b44ec} }, -/**/ {{0xbc589d5c, 0x4ed04ec2} }, -/**/ {{0xbfd4a18b, 0xa6222a08} }, -/**/ {{0xbc66c919, 0xd3867dbd} }, -/**/ {{0x3f9a9696, 0x4bb5a8a0} }, -/**/ {{0x3c36698e, 0x927bb5bd} }, -/**/ {{0x3fb8d79f, 0xfdbbcc76} }, -/**/ {{0x3c2578bd, 0x4efb71a1} }, -/**/ {{0xbfb4d86a, 0x6778e363} }, -/**/ {{0x3f8fa581, 0xd930230d} }, -/**/ {{0x3f9e16ae, 0x8a6221aa} }, -/**/ {{0xbfa02652, 0x2f183972} }, -/**/ {{0x3f82b9db, 0x3e507f4f} } }, -/**/ {{{0x3fe48000, 0x00000000} }, -/**/ {{0x3fe23b71, 0xe2cc9e6a} }, -/**/ {{0x3c6c421c, 0x9f38224e} }, -/**/ {{0x3fe6b047, 0x9c620595} }, -/**/ {{0x3c8867df, 0x07d7f0c2} }, -/**/ {{0xbfd49c6a, 0x5a920887} }, -/**/ {{0xbc764547, 0x37bcc433} }, -/**/ {{0x3f9c20cf, 0xbb7e5931} }, -/**/ {{0xbc3d86f5, 0x4db6bef2} }, -/**/ {{0x3fb86fa2, 0x451c4a5d} }, -/**/ {{0xbc475142, 0x15afb52c} }, -/**/ {{0xbfb4c012, 0x120917da} }, -/**/ {{0x3f90a1da, 0x6b9c3fad} }, -/**/ {{0x3f9d159f, 0x708543e5} }, -/**/ {{0xbf9ff685, 0x6d929bce} }, -/**/ {{0x3f838ac0, 0xd0361a66} } }, -/**/ {{{0x3fe4a000, 0x00000000} }, -/**/ {{0x3fe25217, 0xdd17e501} }, -/**/ {{0x3c856aa8, 0x8c1b679c} }, -/**/ {{0x3fe69bad, 0xe145c95d} }, -/**/ {{0xbc873257, 0x5605046d} }, -/**/ {{0xbfd496ff, 0xbffbe8a8} }, -/**/ {{0x3c36a5c5, 0xc7b45e6f} }, -/**/ {{0x3f9da48d, 0x2d9556eb} }, -/**/ {{0x3c3ff0e8, 0x1871a19d} }, -/**/ {{0x3fb80821, 0x46043f42} }, -/**/ {{0x3c550eec, 0xe660cfa1} }, -/**/ {{0xbfb4a688, 0x5727a8cb} }, -/**/ {{0x3f9169f6, 0x0e13efbc} }, -/**/ {{0x3f9c174f, 0xb59149dd} }, -/**/ {{0xbf9f9cd5, 0xb10444dd} }, -/**/ {{0x3f844f95, 0x03e91dd9} } }, -/**/ {{{0x3fe4c000, 0x00000000} }, -/**/ {{0x3fe268a9, 0x40696da6} }, -/**/ {{0x3c5d1348, 0xa04c73cc} }, -/**/ {{0x3fe68719, 0xb4ea3592} }, -/**/ {{0xbc7ecf86, 0x088ed284} }, -/**/ {{0xbfd4914d, 0x0ce1507d} }, -/**/ {{0xbc6410ef, 0x4dff2946} }, -/**/ {{0x3f9f21d6, 0x9cbf7eb7} }, -/**/ {{0x3c39bc22, 0xeaaad7e2} }, -/**/ {{0x3fb7a122, 0xdd4f3070} }, -/**/ {{0x3c50d950, 0x1cfe44af} }, -/**/ {{0xbfb48bd7, 0xa50188df} }, -/**/ {{0x3f922b27, 0x71756204} }, -/**/ {{0x3f9b1bdb, 0x0810a33a} }, -/**/ {{0xbf9f3fca, 0xf1011313} }, -/**/ {{0x3f850893, 0x8fe0f49b} } }, -/**/ {{{0x3fe4e000, 0x00000000} }, -/**/ {{0x3fe27f26, 0x1273d1b3} }, -/**/ {{0x3c843bf3, 0x6151dd9f} }, -/**/ {{0x3fe6728b, 0x5ecd3069} }, -/**/ {{0x3c67417b, 0x539f23ff} }, -/**/ {{0xbfd48b53, 0x763c0fe8} }, -/**/ {{0xbc677a1a, 0x6027975c} }, -/**/ {{0x3fa04c5a, 0x2ff7dd6a} }, -/**/ {{0xbc40808e, 0x496202e8} }, -/**/ {{0x3fb73aac, 0xb3fc3f7c} }, -/**/ {{0x3c4b58cb, 0x86b114ff} }, -/**/ {{0xbfb4700a, 0x4bc91249} }, -/**/ {{0x3f92e582, 0xef2490f8} }, -/**/ {{0x3f9a235b, 0x6c875580} }, -/**/ {{0xbf9edf99, 0xe55cd596} }, -/**/ {{0x3f85b5f9, 0xe40c5a18} } }, -/**/ {{{0x3fe50000, 0x00000000} }, -/**/ {{0x3fe2958e, 0x59308e31} }, -/**/ {{0xbc709e73, 0xb0c6c087} }, -/**/ {{0x3fe65e03, 0x2538713c} }, -/**/ {{0xbc601392, 0x42c09163} }, -/**/ {{0xbfd48514, 0x2f6d4575} }, -/**/ {{0xbc356341, 0x4568af3f} }, -/**/ {{0x3fa10497, 0x9386fd1d} }, -/**/ {{0xbc4a756a, 0x230a452f} }, -/**/ {{0x3fb6d4c4, 0x3fc6c180} }, -/**/ {{0x3c5ab2b9, 0xdb3fe137} }, -/**/ {{0xbfb4532a, 0x7ca4cfd0} }, -/**/ {{0x3f93991d, 0x90eb1d30} }, -/**/ {{0x3f992de9, 0x46163051} }, -/**/ {{0xbf9e7c76, 0x2de874ff} }, -/**/ {{0x3f865806, 0xfc0c1cb2} } }, -/**/ {{{0x3fe52000, 0x00000000} }, -/**/ {{0x3fe2abe2, 0x1aded073} }, -/**/ {{0x3c8c28c0, 0x01ad022e} }, -/**/ {{0x3fe64981, 0x4d432177} }, -/**/ {{0x3c83f41b, 0x055e240c} }, -/**/ {{0xbfd47e90, 0x6a2cfd01} }, -/**/ {{0x3c628585, 0xf152d080} }, -/**/ {{0x3fa1b9a7, 0xfbe3ed9e} }, -/**/ {{0xbc18a085, 0xf259fe04} }, -/**/ {{0x3fb66f6e, 0xc3c40175} }, -/**/ {{0x3c41d80a, 0xb0fda762} }, -/**/ {{0xbfb43542, 0x48af643a} }, -/**/ {{0x3f94460d, 0x05ad7652} }, -/**/ {{0x3f983b9b, 0x5f55ab26} }, -/**/ {{0xbf9e1692, 0x4be18b23} }, -/**/ {{0x3f86eefb, 0x32e755a3} } }, -/**/ {{{0x3fe54000, 0x00000000} }, -/**/ {{0x3fe2c221, 0x5e024466} }, -/**/ {{0xbc44b810, 0xda3a4be1} }, -/**/ {{0x3fe63506, 0x1ad38da0} }, -/**/ {{0xbc67f12a, 0x94ec14b0} }, -/**/ {{0xbfd477c9, 0x567a6652} }, -/**/ {{0x3c7be71c, 0xbbb9df88} }, -/**/ {{0x3fa26b90, 0x1535acb9} }, -/**/ {{0xbc30ff6c, 0xff041454} }, -/**/ {{0x3fb60ab1, 0x5105d8fa} }, -/**/ {{0x3c535a89, 0x3f2d6492} }, -/**/ {{0xbfb4165b, 0xa0083319} }, -/**/ {{0x3f94ec67, 0x965eb0a7} }, -/**/ {{0x3f974c86, 0xf36231e5} }, -/**/ {{0xbf9dae1f, 0x9c25f4a4} }, -/**/ {{0x3f877b18, 0x183e42dc} } }, -/**/ {{{0x3fe56000, 0x00000000} }, -/**/ {{0x3fe2d84c, 0x2961e48c} }, -/**/ {{0xbc7f2542, 0x0a36e506} }, -/**/ {{0x3fe62091, 0xd0a0e5d4} }, -/**/ {{0x3c82a27d, 0xcccb008e} }, -/**/ {{0xbfd470c0, 0x228ca1b6} }, -/**/ {{0xbc788e9b, 0x32884415} }, -/**/ {{0x3fa31a54, 0xb365e4d9} }, -/**/ {{0x3c3e6e70, 0xda0f99ae} }, -/**/ {{0x3fb5a690, 0xc741ccb7} }, -/**/ {{0xbc383905, 0x6508ffe1} }, -/**/ {{0xbfb3f680, 0x50f46c17} }, -/**/ {{0x3f958c44, 0x1b344c30} }, -/**/ {{0x3f9660bf, 0xb713db8a} }, -/**/ {{0xbf9d434e, 0x5224992a} }, -/**/ {{0x3f87fca0, 0x46ffb16e} } }, -/**/ {{{0x3fe58000, 0x00000000} }, -/**/ {{0x3fe2ee62, 0x8406cbca} }, -/**/ {{0x3c8c5d5e, 0x9ff0cf8d} }, -/**/ {{0x3fe60c24, 0xb0350d38} }, -/**/ {{0x3c81ffe9, 0xf3db4fcb} }, -/**/ {{0xbfd46975, 0xfac420bd} }, -/**/ {{0x3c7e6994, 0x850528a0} }, -/**/ {{0x3fa3c5fa, 0xd098b4ee} }, -/**/ {{0x3c353c41, 0xaa6a6874} }, -/**/ {{0x3fb54311, 0xd57c5b53} }, -/**/ {{0x3c50d02e, 0x72d146e0} }, -/**/ {{0xbfb3d5ba, 0x071017e0} }, -/**/ {{0x3f9625b9, 0xf11b08a7} }, -/**/ {{0x3f957857, 0xe25bbc6f} }, -/**/ {{0xbf9cd64d, 0x7384981f} }, -/**/ {{0x3f8873d7, 0x3da3b8d5} } }, -/**/ {{{0x3fe5a000, 0x00000000} }, -/**/ {{0x3fe30464, 0x753b090b} }, -/**/ {{0xbc73e712, 0x61da18f3} }, -/**/ {{0x3fe5f7be, 0xf9ee77b6} }, -/**/ {{0x3c8949f7, 0x854f9928} }, -/**/ {{0xbfd461ec, 0x099c98f6} }, -/**/ {{0x3c5da491, 0x3eafe889} }, -/**/ {{0x3fa46e87, 0x8ba9e286} }, -/**/ {{0x3c42573a, 0x5377a1a9} }, -/**/ {{0x3fb4e038, 0xfab82ffb} }, -/**/ {{0xbc414e45, 0x402ef939} }, -/**/ {{0xbfb3b412, 0x4a8ec478} }, -/**/ {{0x3f96b8e0, 0xef6dba07} }, -/**/ {{0x3f949360, 0x39c13c6e} }, -/**/ {{0xbf9c674a, 0xd47bfddb} }, -/**/ {{0x3f88e101, 0x37ed6935} } }, -/**/ {{{0x3fe5c000, 0x00000000} }, -/**/ {{0x3fe31a52, 0x048874be} }, -/**/ {{0x3c840cab, 0x87a7ac24} }, -/**/ {{0x3fe5e360, 0xed021586} }, -/**/ {{0x3c86a444, 0xb32ab7e4} }, -/**/ {{0xbfd45a23, 0x779f86c4} }, -/**/ {{0xbc75b9dc, 0x6b782501} }, -/**/ {{0x3fa51400, 0x26af940c} }, -/**/ {{0x3c4f700e, 0xf9ce64e2} }, -/**/ {{0x3fb47e0a, 0x86a8eb42} }, -/**/ {{0xbc5a4df9, 0x36377584} }, -/**/ {{0xbfb39192, 0x7f8b6d42} }, -/**/ {{0x3f9745d1, 0x5deeeabc} }, -/**/ {{0x3f93b1e8, 0x17fa1033} }, -/**/ {{0xbf9bf673, 0x14cf2061} }, -/**/ {{0x3f894463, 0x0a340016} } }, -/**/ {{{0x3fe5e000, 0x00000000} }, -/**/ {{0x3fe3302b, 0x39b78856} }, -/**/ {{0x3c85dd2e, 0xd87ba82b} }, -/**/ {{0x3fe5cf0a, 0xc77d4bea} }, -/**/ {{0xbc8684ab, 0x0d42ab66} }, -/**/ {{0xbfd4521d, 0x6b573e11} }, -/**/ {{0xbc7601b9, 0xb90c9c27} }, -/**/ {{0x3fa5b66a, 0x0582aeaa} }, -/**/ {{0x3c281575, 0x8cc985ad} }, -/**/ {{0x3fb41c8a, 0x9a69373d} }, -/**/ {{0xbc33df07, 0x25ea8f67} }, -/**/ {{0xbfb36e43, 0xe5673a18} }, -/**/ {{0x3f97cca3, 0xeb05f3bc} }, -/**/ {{0x3f92d3fd, 0x7797abe9} }, -/**/ {{0xbf9b83f1, 0x9d71c254} }, -/**/ {{0x3f899e41, 0xfe333861} } }, -/**/ {{{0x3fe60000, 0x00000000} }, -/**/ {{0x3fe345f0, 0x1cce37bb} }, -/**/ {{0x3c810211, 0x37c71102} }, -/**/ {{0x3fe5babc, 0xc647fa91} }, -/**/ {{0x3c84339b, 0x8056eaf3} }, -/**/ {{0xbfd449db, 0x094286d0} }, -/**/ {{0x3c75e178, 0x512b1c7b} }, -/**/ {{0x3fa655ca, 0xac4cf102} }, -/**/ {{0xbc27a1e4, 0x61e8206a} }, -/**/ {{0x3fb3bbbd, 0x2933dd9c} }, -/**/ {{0xbc517633, 0xbd42c006} }, -/**/ {{0xbfb34a2f, 0x9636afc9} }, -/**/ {{0x3f984d71, 0xa2400f6f} }, -/**/ {{0x3f91f9ac, 0xfcc53cab} }, -/**/ {{0xbf9b0ff0, 0x9ec31ef1} }, -/**/ {{0x3f89eee3, 0xb1615b05} } }, -/**/ {{{0x3fe62000, 0x00000000} }, -/**/ {{0x3fe35ba0, 0xb60eccce} }, -/**/ {{0x3c8e3ba1, 0x9b9368b9} }, -/**/ {{0x3fe5a677, 0x25268d22} }, -/**/ {{0x3c7bc76e, 0xaf72cee6} }, -/**/ {{0xbfd4415d, 0x73c8c31c} }, -/**/ {{0xbc3e5b3c, 0xe00e5645} }, -/**/ {{0x3fa6f227, 0xbe1ce1b6} }, -/**/ {{0xbc04a922, 0xe699fcac} }, -/**/ {{0x3fb35ba5, 0xf91f9885} }, -/**/ {{0xbc43f8be, 0x418827b3} }, -/**/ {{0xbfb3255e, 0x863cebc9} }, -/**/ {{0x3f98c853, 0xe315ca66} }, -/**/ {{0x3f912301, 0xff116cac} }, -/**/ {{0xbf9a9a99, 0x0f5e09c2} }, -/**/ {{0x3f8a368d, 0xf4c8d587} } }, -/**/ {{{0x3fe64000, 0x00000000} }, -/**/ {{0x3fe3713d, 0x0df6c504} }, -/**/ {{0xbc54f789, 0xe031606d} }, -/**/ {{0x3fe5923a, 0x1ebc184f} }, -/**/ {{0x3c829fe8, 0xbe5956dd} }, -/**/ {{0xbfd438a5, 0xcb2e9cc9} }, -/**/ {{0xbc7c1839, 0x7d6ce3eb} }, -/**/ {{0x3fa78b86, 0xfb7fa678} }, -/**/ {{0x3befb53e, 0xd082025e} }, -/**/ {{0x3fb2fc48, 0xa3dd5905} }, -/**/ {{0x3c5fd567, 0x06b78682} }, -/**/ {{0xbfb2ffd9, 0x8374843c} }, -/**/ {{0x3f993d64, 0x57f51471} }, -/**/ {{0x3f905006, 0x933f6cc5} }, -/**/ {{0xbf9a2412, 0xab7658df} }, -/**/ {{0x3f8a7586, 0xae624ab4} } }, -/**/ {{{0x3fe66000, 0x00000000} }, -/**/ {{0x3fe386c5, 0x2d3db11f} }, -/**/ {{0xbc8b78e1, 0xcbebe6a0} }, -/**/ {{0x3fe57e05, 0xec8c8203} }, -/**/ {{0x3c8ea585, 0x5e7f92dc} }, -/**/ {{0xbfd42fb5, 0x2d8b381e} }, -/**/ {{0xbc63afe6, 0x5cff451e} }, -/**/ {{0x3fa821ee, 0x4120d643} }, -/**/ {{0xbc3e664f, 0xcbc4d2dc} }, -/**/ {{0x3fb29da8, 0x9778bfdb} }, -/**/ {{0x3c3760dd, 0x7c2057a5} }, -/**/ {{0xbfb2d9a9, 0x3525a55a} }, -/**/ {{0x3f99acbc, 0xed9015c8} }, -/**/ {{0x3f8f0187, 0x2a35e7d2} }, -/**/ {{0xbf99ac83, 0xf4bcdfc7} }, -/**/ {{0x3f8aac13, 0xbbeb4f11} } }, -/**/ {{{0x3fe68000, 0x00000000} }, -/**/ {{0x3fe39c39, 0x1cd4171a} }, -/**/ {{0xbc823043, 0x31d8bf46} }, -/**/ {{0x3fe569da, 0xc6feb417} }, -/**/ {{0x3c803ce5, 0x0625e450} }, -/**/ {{0xbfd4268c, 0xb6bde980} }, -/**/ {{0xbc6e8f76, 0xe8258561} }, -/**/ {{0x3fa8b563, 0x86705749} }, -/**/ {{0x3c418e14, 0xe6172281} }, -/**/ {{0x3fb23fc9, 0x171a8768} }, -/**/ {{0xbc562184, 0x3225d825} }, -/**/ {{0xbfb2b2d6, 0x1b8904fd} }, -/**/ {{0x3f9a1677, 0xca70ce88} }, -/**/ {{0x3f8d6a81, 0x62963581} }, -/**/ {{0xbf993412, 0x32c353bb} }, -/**/ {{0x3f8ada7a, 0xd7354ec0} } }, -/**/ {{{0x3fe6a000, 0x00000000} }, -/**/ {{0x3fe3b198, 0xe5e2564b} }, -/**/ {{0xbc72f922, 0x1f0752ac} }, -/**/ {{0x3fe555b8, 0xe55ed910} }, -/**/ {{0xbc5615bc, 0x656f2eb2} }, -/**/ {{0xbfd41d2d, 0x80646bca} }, -/**/ {{0xbc75d1d6, 0x1ff3506f} }, -/**/ {{0x3fa945ec, 0xdc4e5727} }, -/**/ {{0x3c213c8e, 0x18968922} }, -/**/ {{0x3fb1e2ad, 0x3bcc9fa4} }, -/**/ {{0x3c2b899c, 0x0a43c591} }, -/**/ {{0xbfb28b68, 0x8f774533} }, -/**/ {{0x3f9a7aaf, 0x46d16acc} }, -/**/ {{0x3f8bdb08, 0xde405cc6} }, -/**/ {{0xbf98bae1, 0x73d9884b} }, -/**/ {{0x3f8b0101, 0x7be7742a} } }, -/**/ {{{0x3fe6c000, 0x00000000} }, -/**/ {{0x3fe3c6e4, 0x91c78dc5} }, -/**/ {{0xbc8e1450, 0x94fd0ba7} }, -/**/ {{0x3fe541a0, 0x7de0a269} }, -/**/ {{0x3c8b9072, 0x163b639c} }, -/**/ {{0xbfd41398, 0xa1d194fc} }, -/**/ {{0xbc7ef191, 0x8629402d} }, -/**/ {{0x3fa9d390, 0x6bbd69eb} }, -/**/ {{0x3c488aec, 0xd2c4a6a5} }, -/**/ {{0x3fb18657, 0xf53fbee6} }, -/**/ {{0x3c54e6aa, 0x0104d1dd} }, -/**/ {{0xbfb26368, 0xc2245ee6} }, -/**/ {{0x3f9ad97d, 0xe4b91b16} }, -/**/ {{0x3f8a5328, 0x74b192c7} }, -/**/ {{0xbf984114, 0x8e5d8b31} }, -/**/ {{0x3f8b1fec, 0xceadce82} } }, -/**/ {{{0x3fe6e000, 0x00000000} }, -/**/ {{0x3fe3dc1c, 0x2a188504} }, -/**/ {{0x3c82ce63, 0x70f4e971} }, -/**/ {{0x3fe52d91, 0xc5a197ed} }, -/**/ {{0xbc804b92, 0x1baab820} }, -/**/ {{0xbfd409cf, 0x300486f8} }, -/**/ {{0xbc6d3bb8, 0xae804189} }, -/**/ {{0x3faa5e54, 0x749adab8} }, -/**/ {{0x3c20b0d5, 0xc631cfd3} }, -/**/ {{0x3fb12acc, 0x0a922c54} }, -/**/ {{0x3c521a06, 0x7cbc4417} }, -/**/ {{0xbfb23ade, 0xbce6ae05} }, -/**/ {{0x3f9b32fe, 0x485d279b} }, -/**/ {{0x3f88d2e8, 0xd9b56b96} }, -/**/ {{0xbf97c6cd, 0x227841f4} }, -/**/ {{0x3f8b3781, 0x85cf6ba0} } }, -/**/ {{{0x3fe70000, 0x00000000} }, -/**/ {{0x3fe3f13f, 0xb89e96f4} }, -/**/ {{0x3c7ecf8b, 0x492644f0} }, -/**/ {{0x3fe5198c, 0xf0ab6f99} }, -/**/ {{0x3c71b875, 0x5e1ffaba} }, -/**/ {{0xbfd3ffd2, 0x3da059f4} }, -/**/ {{0x3c5bba8e, 0x77eee53d} }, -/**/ {{0x3faae63f, 0x4c5d36dc} }, -/**/ {{0xbc4e6e4e, 0x2a3994d6} }, -/**/ {{0x3fb0d00c, 0x1b178ada} }, -/**/ {{0x3c4b94c3, 0xb3e710cc} }, -/**/ {{0xbfb211d2, 0x61093929} }, -/**/ {{0x3f9b874b, 0x30c5dd59} }, -/**/ {{0x3f875a50, 0xb0b899ed} }, -/**/ {{0xbf974c2b, 0x9c404912} }, -/**/ {{0x3f8b4803, 0xd3249a4d} } }, -/**/ {{{0x3fe72000, 0x00000000} }, -/**/ {{0x3fe4064f, 0x47569f49} }, -/**/ {{0xbc8aad88, 0xf91bf2b2} }, -/**/ {{0x3fe50592, 0x31f66da7} }, -/**/ {{0xbc8837f1, 0x134b7507} }, -/**/ {{0xbfd3f5a2, 0xdae43e4d} }, -/**/ {{0xbc7f29b0, 0xdc59e382} }, -/**/ {{0x3fab6b57, 0x5cd91a8c} }, -/**/ {{0xbc225bf7, 0xd6ab0dfc} }, -/**/ {{0x3fb0761a, 0x9f216d7a} }, -/**/ {{0x3c577818, 0xe546203e} }, -/**/ {{0xbfb1e84b, 0x67a8cf31} }, -/**/ {{0x3f9bd67f, 0x70b6dd6f} }, -/**/ {{0x3f85e964, 0x9ff677e5} }, -/**/ {{0xbf96d14f, 0x363cf426} }, -/**/ {{0x3f8b51b7, 0x4f6617de} } }, -/**/ {{{0x3fe74000, 0x00000000} }, -/**/ {{0x3fe41b4a, 0xe06fea41} }, -/**/ {{0x3c63d60a, 0x53277652} }, -/**/ {{0x3fe4f1a1, 0xbb6bcc2c} }, -/**/ {{0x3c5c8d69, 0x7c81f558} }, -/**/ {{0xbfd3eb42, 0x15a41364} }, -/**/ {{0x3c728a9c, 0x617c316a} }, -/**/ {{0x3fabeda3, 0x230c44b8} }, -/**/ {{0x3c41fa15, 0x50d9e9da} }, -/**/ {{0x3fb01cf9, 0xe8c87fc3} }, -/**/ {{0x3c410990, 0xa175df34} }, -/**/ {{0xbfb1be51, 0x619b963c} }, -/**/ {{0x3f9c20b5, 0xe7da421c} }, -/**/ {{0x3f848027, 0x637b86b0} }, -/**/ {{0xbf965655, 0xfc436ff1} }, -/**/ {{0x3f8b54de, 0xe6cd859f} } }, -/**/ {{{0x3fe76000, 0x00000000} }, -/**/ {{0x3fe43032, 0x8e4b26d6} }, -/**/ {{0xbc813159, 0x1070b99f} }, -/**/ {{0x3fe4ddbb, 0xbde829f5} }, -/**/ {{0xbc735ff2, 0xb6d17615} }, -/**/ {{0xbfd3e0b0, 0xf941711a} }, -/**/ {{0x3c7d3454, 0xe9027227} }, -/**/ {{0x3fac6d29, 0x2deef5c2} }, -/**/ {{0x3c476533, 0x0ba13bb6} }, -/**/ {{0x3faf8958, 0x496c1e5e} }, -/**/ {{0x3c49ebf2, 0xe1abdf2f} }, -/**/ {{0xbfb193eb, 0xb762a82c} }, -/**/ {{0x3f9c6609, 0x7c2df93f} }, -/**/ {{0x3f831e99, 0xdff7724a} }, -/**/ {{0xbf95db5c, 0xcea82a5a} }, -/**/ {{0x3f8b51bc, 0xc6ff27bb} } }, -/**/ {{{0x3fe78000, 0x00000000} }, -/**/ {{0x3fe44506, 0x5b795b56} }, -/**/ {{0xbc7f76d0, 0x163f79c8} }, -/**/ {{0x3fe4c9e0, 0x693e0015} }, -/**/ {{0xbc7b0fcb, 0x60fff59b} }, -/**/ {{0xbfd3d5f0, 0x8ea521a8} }, -/**/ {{0x3c561573, 0xb5bcc402} }, -/**/ {{0x3face9f0, 0x1d4b9b62} }, -/**/ {{0x3c481226, 0xf2c93cfb} }, -/**/ {{0x3faeda66, 0xb5db8847} }, -/**/ {{0xbc44ec99, 0x3a386670} }, -/**/ {{0xbfb16921, 0xa92559e3} }, -/**/ {{0x3f9ca695, 0x13b2a17d} }, -/**/ {{0x3f81c4bb, 0x355982b3} }, -/**/ {{0xbf95607f, 0x65bec936} }, -/**/ {{0x3f8b4892, 0x4e349f67} } }, -/**/ {{{0x3fe7a000, 0x00000000} }, -/**/ {{0x3fe459c6, 0x52badc7f} }, -/**/ {{0x3c819969, 0x8e8e135c} }, -/**/ {{0x3fe4b60f, 0xec381dcb} }, -/**/ {{0xbc6b9874, 0x4724e4f2} }, -/**/ {{0xbfd3cb01, 0xdc390960} }, -/**/ {{0xbc7243b1, 0x7ba1320c} }, -/**/ {{0x3fad63fe, 0xa09cca72} }, -/**/ {{0x3c48308c, 0xe5ab8d04} }, -/**/ {{0x3fae2d22, 0xdf2eb652} }, -/**/ {{0xbc4988a3, 0x4eb29ad3} }, -/**/ {{0xbfb13dfa, 0x4eb5cb96} }, -/**/ {{0x3f9ce273, 0x8e5b2657} }, -/**/ {{0x3f807288, 0xd132be74} }, -/**/ {{0xbf94e5d8, 0x55a31e9e} }, -/**/ {{0x3f8b399f, 0xfba00cb2} } }, -/**/ {{{0x3fe7c000, 0x00000000} }, -/**/ {{0x3fe46e72, 0x7efe4716} }, -/**/ {{0xbc639b9b, 0x1b844cc9} }, -/**/ {{0x3fe4a24a, 0x749c2a47} }, -/**/ {{0xbc8f9d05, 0x82d8a2e5} }, -/**/ {{0xbfd3bfe5, 0xe5e27a03} }, -/**/ {{0xbc5047da, 0xb30f6d58} }, -/**/ {{0x3faddb5b, 0x75f185ec} }, -/**/ {{0x3c43b680, 0x23d5084a} }, -/**/ {{0x3fad8190, 0x479061d2} }, -/**/ {{0xbbf4565c, 0x602d3547} }, -/**/ {{0xbfb1127c, 0x979e619e} }, -/**/ {{0x3f9d19bf, 0xc03c4720} }, -/**/ {{0x3f7e4ffd, 0x01b2b45f} }, -/**/ {{0xbf946b81, 0x1245b0bb} }, -/**/ {{0x3f8b2525, 0x60fec8ec} } }, -/**/ {{{0x3fe7e000, 0x00000000} }, -/**/ {{0x3fe4830a, 0xeb5f7bfe} }, -/**/ {{0xbc5a2656, 0x66764a73} }, -/**/ {{0x3fe48e90, 0x2f2d2be4} }, -/**/ {{0x3c810a8e, 0x969bba3b} }, -/**/ {{0xbfd3b49d, 0xacfcef4d} }, -/**/ {{0xbc6a4f98, 0xb7a61548} }, -/**/ {{0x3fae500d, 0x68d7d101} }, -/**/ {{0xbc305c3e, 0x04860c21} }, -/**/ {{0x3facd7b2, 0x2c98ea9c} }, -/**/ {{0x3c48692b, 0xd46adca0} }, -/**/ {{0xbfb0e6af, 0x4b37c6a5} }, -/**/ {{0x3f9d4c94, 0x6bfb2662} }, -/**/ {{0x3f7bca2d, 0x0692cc75} }, -/**/ {{0xbf93f191, 0xf3b69312} }, -/**/ {{0x3f8b0b61, 0x1552b8ee} } }, -/**/ {{{0x3fe80000, 0x00000000} }, -/**/ {{0x3fe4978f, 0xa3269ee1} }, -/**/ {{0x3c72419a, 0x87f2a458} }, -/**/ {{0x3fe47ae1, 0x47ae147b} }, -/**/ {{0xbc6eb851, 0xeb851eb8} }, -/**/ {{0xbfd3a92a, 0x30553261} }, -/**/ {{0xbc7f06f6, 0x94467382} }, -/**/ {{0x3faec21b, 0x514d88d8} }, -/**/ {{0x3c3cd061, 0xf45873a6} }, -/**/ {{0x3fac2f8b, 0x88dfb80c} }, -/**/ {{0xbc14fcbc, 0x53add20b} }, -/**/ {{0xbfb0ba99, 0x08c71945} }, -/**/ {{0x3f9d7b0c, 0x3d79f13f} }, -/**/ {{0x3f795393, 0x357dfc67} }, -/**/ {{0xbf937822, 0x3aa97829} }, -/**/ {{0x3f8aec90, 0xa8b90db0} } }, -/**/ {{{0x3fe82000, 0x00000000} }, -/**/ {{0x3fe4ac00, 0xb1c71762} }, -/**/ {{0x3c8b20e7, 0x2382b900} }, -/**/ {{0x3fe4673d, 0xe8e45252} }, -/**/ {{0x3c57d208, 0x67458f9c} }, -/**/ {{0xbfd39d8c, 0x6c24e1b3} }, -/**/ {{0xbc7830c5, 0x973c6d15} }, -/**/ {{0x3faf318c, 0x12b78147} }, -/**/ {{0xbc4fa440, 0xd318184c} }, -/**/ {{0x3fab891f, 0x158b44e7} }, -/**/ {{0x3c4d5f9f, 0x45d7f1f3} }, -/**/ {{0xbfb08e40, 0x47a3e8ba} }, -/**/ {{0x3f9da541, 0xc4c1a21a} }, -/**/ {{0x3f76ec1e, 0x3c0d1d71} }, -/**/ {{0xbf92ff48, 0x152e0bfc} }, -/**/ {{0x3f8ac8f0, 0x9955298f} } }, -/**/ {{{0x3fe84000, 0x00000000} }, -/**/ {{0x3fe4c05e, 0x22de94e5} }, -/**/ {{0xbc8c0ac1, 0xf09f2edf} }, -/**/ {{0x3fe453a6, 0x3c9a6560} }, -/**/ {{0x3c77a95f, 0x828bba02} }, -/**/ {{0xbfd391c5, 0x5a0e5b1c} }, -/**/ {{0x3c7d553d, 0xcd3f76d2} }, -/**/ {{0x3faf9e66, 0x9adede86} }, -/**/ {{0xbc225e54, 0xd6d2bac0} }, -/**/ {{0x3faae46f, 0x4bdf89d7} }, -/**/ {{0x3c39c98c, 0x2b25b8d9} }, -/**/ {{0xbfb061ab, 0x5765a5c1} }, -/**/ {{0x3f9dcb4f, 0x7127d649} }, -/**/ {{0x3f7493ba, 0x13002646} }, -/**/ {{0xbf928718, 0xa397d1a6} }, -/**/ {{0x3f8aa0bc, 0x494648b5} } }, -/**/ {{{0x3fe86000, 0x00000000} }, -/**/ {{0x3fe4d4a8, 0x023414e8} }, -/**/ {{0x3c6e3a89, 0x1daa88b0} }, -/**/ {{0x3fe4401a, 0x6ba2786e} }, -/**/ {{0xbc4b8213, 0xe3b5f317} }, -/**/ {{0xbfd385d5, 0xf11905c0} }, -/**/ {{0xbc72a1e9, 0xa2f42dd1} }, -/**/ {{0x3fb00458, 0xf07a526f} }, -/**/ {{0xbc14f965, 0xac5fd817} }, -/**/ {{0x3faa417e, 0x66ca7da2} }, -/**/ {{0x3c4b1e1a, 0xa050b433} }, -/**/ {{0xbfb034e0, 0x60182e4f} }, -/**/ {{0x3f9ded4f, 0x8cafa41b} }, -/**/ {{0x3f724a50, 0x1fa4f037} }, -/**/ {{0xbf920fa7, 0xfd90e915} }, -/**/ {{0x3f8a742d, 0xf59e7acf} } }, -/**/ {{{0x3fe88000, 0x00000000} }, -/**/ {{0x3fe4e8de, 0x5bb6ec04} }, -/**/ {{0x3c84a33d, 0xbeb3796c} }, -/**/ {{0x3fe42c9a, 0x9dd8fdc1} }, -/**/ {{0x3c5192da, 0xaf80050b} }, -/**/ {{0xbfd379bf, 0x25adf97f} }, -/**/ {{0xbc774019, 0x20cd3651} }, -/**/ {{0x3fb0383a, 0x724dbb01} }, -/**/ {{0x3c5c4e67, 0xeb93e538} }, -/**/ {{0x3fa9a04e, 0x646e65df} }, -/**/ {{0x3c21a7cb, 0x894a6b77} }, -/**/ {{0xbfb007e5, 0x62771c79} }, -/**/ {{0x3f9e0b5c, 0x37a45544} }, -/**/ {{0x3f700fc7, 0x54993092} }, -/**/ {{0xbf919909, 0x37534c25} }, -/**/ {{0x3f8a437e, 0xae51732a} } }, -/**/ {{{0x3fe8a000, 0x00000000} }, -/**/ {{0x3fe4fd01, 0x3b7dd17e} }, -/**/ {{0x3c7d513f, 0x3e7c24b5} }, -/**/ {{0x3fe41926, 0xfa274ef1} }, -/**/ {{0x3c8ad830, 0x4d72ecb3} }, -/**/ {{0xbfd36d81, 0xe995018a} }, -/**/ {{0x3c7e7ec5, 0x6fd6094d} }, -/**/ {{0x3fb06adb, 0x567bb975} }, -/**/ {{0x3c5212c1, 0xf0d7364f} }, -/**/ {{0x3fa900e1, 0x07a9b624} }, -/**/ {{0xbc4e5b5b, 0xc16bcc85} }, -/**/ {{0xbfafb580, 0x705f052b} }, -/**/ {{0x3f9e258f, 0x646ce12e} }, -/**/ {{0x3f6bc808, 0xa3c63841} }, -/**/ {{0xbf91234e, 0x67043d41} }, -/**/ {{0x3f8a0ee6, 0x4f11b221} } }, -/**/ {{{0x3fe8c000, 0x00000000} }, -/**/ {{0x3fe51110, 0xadc5ed81} }, -/**/ {{0x3c723dcd, 0x6832a63e} }, -/**/ {{0x3fe405bf, 0xa6864f90} }, -/**/ {{0xbc7419c5, 0x662cd5df} }, -/**/ {{0xbfd3611f, 0x2bf1f7e4} }, -/**/ {{0xbc6e94dd, 0x65483b78} }, -/**/ {{0x3fb09c3f, 0x23e21be9} }, -/**/ {{0x3c22db63, 0xcaca858d} }, -/**/ {{0x3fa86337, 0xd99c3f1d} }, -/**/ {{0x3c034382, 0xdc0a6dfc} }, -/**/ {{0xbfaf5aed, 0x284f8093} }, -/**/ {{0x3f9e3c02, 0xd396fb43} }, -/**/ {{0x3f678dd3, 0x08b96150} }, -/**/ {{0xbf90ae88, 0xaa2dcc3a} }, -/**/ {{0x3f89d69b, 0x79128ee7} } }, -/**/ {{{0x3fe8e000, 0x00000000} }, -/**/ {{0x3fe5250c, 0xbef1e9fb} }, -/**/ {{0xbc5539b7, 0xa3228870} }, -/**/ {{0x3fe3f264, 0xc8011245} }, -/**/ {{0xbc6641f1, 0x44cc720b} }, -/**/ {{0xbfd35497, 0xd942778a} }, -/**/ {{0x3c750a5a, 0x9bd7dbd6} }, -/**/ {{0x3fb0cc69, 0x6438739e} }, -/**/ {{0x3bf5d933, 0x435f798d} }, -/**/ {{0x3fa7c754, 0x2b29722f} }, -/**/ {{0xbbe736fe, 0x5b3af27b} }, -/**/ {{0xbfaf001c, 0x059a3c24} }, -/**/ {{0x3f9e4ed0, 0x101882b0} }, -/**/ {{0x3f6370ae, 0x88dc4269} }, -/**/ {{0xbf903ac8, 0x2b5280b6} }, -/**/ {{0x3f899ad3, 0x8da5b2ad} } }, -/**/ {{{0x3fe90000, 0x00000000} }, -/**/ {{0x3fe538f5, 0x7b89061f} }, -/**/ {{0xbc81bb74, 0xabda520c} }, -/**/ {{0x3fe3df16, 0x82b78014} }, -/**/ {{0xbc7074be, 0xa43ff610} }, -/**/ {{0xbfd347ec, 0xdb5be2e4} }, -/**/ {{0x3c7848c8, 0x8a0e9303} }, -/**/ {{0x3fb0fb5d, 0xa3a11be4} }, -/**/ {{0x3c3d68f2, 0x09dd0d69} }, -/**/ {{0x3fa72d37, 0x16778170} }, -/**/ {{0xbc4ea85d, 0x2200d1d4} }, -/**/ {{0xbfaea517, 0xd4cdbd49} }, -/**/ {{0x3f9e5e10, 0x6bc61b6f} }, -/**/ {{0x3f5ee0af, 0xd0517524} }, -/**/ {{0xbf8f9038, 0x4f2ec799} }, -/**/ {{0x3f895bc2, 0xa9aaa5bb} } }, -/**/ {{{0x3fe92000, 0x00000000} }, -/**/ {{0x3fe54cca, 0xf0362c8f} }, -/**/ {{0x3c88a324, 0x7f8f43c1} }, -/**/ {{0x3fe3cbd4, 0xf9e1016e} }, -/**/ {{0xbc88dea6, 0x431b67e7} }, -/**/ {{0xbfd33b1f, 0x1969bc63} }, -/**/ {{0x3c6ef16e, 0x5f3d8fd8} }, -/**/ {{0x3fb1291f, 0x703d3bf6} }, -/**/ {{0xbc566e82, 0xb04e0672} }, -/**/ {{0x3fa694e1, 0x806b26f2} }, -/**/ {{0x3c302819, 0xafcee740} }, -/**/ {{0xbfae49eb, 0x16dcee96} }, -/**/ {{0x3f9e69dc, 0xfbfdb35f} }, -/**/ {{0x3f571910, 0x70c48510} }, -/**/ {{0xbf8ead25, 0xe90198c8} }, -/**/ {{0x3f89199b, 0xa1c723cb} } }, -/**/ {{{0x3fe94000, 0x00000000} }, -/**/ {{0x3fe5608d, 0x29c70c34} }, -/**/ {{0x3c89939c, 0xf0de8088} }, -/**/ {{0x3fe3b8a0, 0x4fcf28c3} }, -/**/ {{0xbc469c2b, 0xcb80013c} }, -/**/ {{0xbfd32e2f, 0x77ec4ef9} }, -/**/ {{0x3c7f9d06, 0xc61f7341} }, -/**/ {{0x3fb155b2, 0x59c3bcdf} }, -/**/ {{0xbc2d692e, 0x3583c01b} }, -/**/ {{0x3fa5fe54, 0x1a1fe15d} }, -/**/ {{0x3c430dc5, 0x5d9bad81} }, -/**/ {{0xbfadeea0, 0x01d944a8} }, -/**/ {{0x3f9e724e, 0x9683b244} }, -/**/ {{0x3f4f13d4, 0x491379ef} }, -/**/ {{0xbf8dcc74, 0x0b7cf74b} }, -/**/ {{0x3f88d48f, 0xff5f0625} } }, -/**/ {{{0x3fe96000, 0x00000000} }, -/**/ {{0x3fe5743c, 0x352b33ba} }, -/**/ {{0xbc8ea00d, 0x34c87ea6} }, -/**/ {{0x3fe3a578, 0xa5f05e48} }, -/**/ {{0xbc8ba1ec, 0x00e4639b} }, -/**/ {{0xbfd3211e, 0xd8b7a43f} }, -/**/ {{0xbc6d4b54, 0x676e23a8} }, -/**/ {{0x3fb18119, 0xf11b2c2d} }, -/**/ {{0x3c34855b, 0x3a3bf5fa} }, -/**/ {{0x3fa5698f, 0x625c76bf} }, -/**/ {{0xbc2f758a, 0xbedb0264} }, -/**/ {{0xbfad9340, 0x81b60103} }, -/**/ {{0x3f9e777d, 0xce91900f} }, -/**/ {{0x3f406543, 0x34fddb2f} }, -/**/ {{0xbf8cee3b, 0xe6077f81} }, -/**/ {{0x3f888ccf, 0xfe42afde} } }, -/**/ {{{0x3fe98000, 0x00000000} }, -/**/ {{0x3fe587d8, 0x1f732fbb} }, -/**/ {{0xbc75e5c9, 0xd8c5a950} }, -/**/ {{0x3fe3925e, 0x1cd28c98} }, -/**/ {{0x3c8c8443, 0x1ffec6da} }, -/**/ {{0xbfd313ee, 0x1af2c622} }, -/**/ {{0x3c0a0e9b, 0xbc3f7ac8} }, -/**/ {{0x3fb1ab59, 0xc7f683c3} }, -/**/ {{0x3c5eaf17, 0x12c04500} }, -/**/ {{0x3fa4d693, 0xa7039179} }, -/**/ {{0xbc4c8d74, 0xa4ce58a2} }, -/**/ {{0xbfad37d6, 0x391400b3} }, -/**/ {{0x3f9e7982, 0xf2148a36} }, -/**/ {{0x3f112956, 0xb6df63ca} }, -/**/ {{0xbf8c1294, 0xfbd0f7ee} }, -/**/ {{0x3f88428a, 0x8b0b0a0e} } }, -/**/ {{{0x3fe9a000, 0x00000000} }, -/**/ {{0x3fe59b60, 0xf5cfab9e} }, -/**/ {{0xbc81b04c, 0x41026bc5} }, -/**/ {{0x3fe37f50, 0xd425cdfc} }, -/**/ {{0x3c865633, 0x518aef64} }, -/**/ {{0xbfd3069e, 0x1b1749db} }, -/**/ {{0xbc311c20, 0xa119d9bc} }, -/**/ {{0x3fb1d475, 0x7074cee3} }, -/**/ {{0xbc5102e0, 0x4ff61e2c} }, -/**/ {{0x3fa44561, 0x06804def} }, -/**/ {{0x3c4e829f, 0xc3865804} }, -/**/ {{0xbfacdc6a, 0x82158836} }, -/**/ {{0x3f9e7876, 0x071b2eec} }, -/**/ {{0xbf375b85, 0xf17c4beb} }, -/**/ {{0xbf8b3995, 0x2fa03971} }, -/**/ {{0x3f87f5ed, 0x421a433b} } }, -/**/ {{{0x3fe9c000, 0x00000000} }, -/**/ {{0x3fe5aed6, 0xc5909517} }, -/**/ {{0x3c87312f, 0x714a9436} }, -/**/ {{0x3fe36c50, 0xeabf19f5} }, -/**/ {{0x3c70d1dc, 0x52485cca} }, -/**/ {{0xbfd2f92f, 0xb2f12226} }, -/**/ {{0x3c5400ba, 0x3e5d3d61} }, -/**/ {{0x3fb1fc70, 0x7cc3a41b} }, -/**/ {{0x3c4b58e7, 0x8819ff5b} }, -/**/ {{0x3fa3b5f7, 0x712e9269} }, -/**/ {{0xbc4e436a, 0x7879d8ab} }, -/**/ {{0xbfac8106, 0x6f398221} }, -/**/ {{0x3f9e746e, 0xc97073c7} }, -/**/ {{0xbf4914de, 0xecfc2d6a} }, -/**/ {{0xbf8a6350, 0xcfa74bd5} }, -/**/ {{0x3f87a724, 0x6f38ad9e} } }, -/**/ {{{0x3fe9e000, 0x00000000} }, -/**/ {{0x3fe5c239, 0x9c244261} }, -/**/ {{0xbc831bd4, 0xe9e56b35} }, -/**/ {{0x3fe3595e, 0x7e9af2dc} }, -/**/ {{0x3c81ef2d, 0x9dc90e6a} }, -/**/ {{0xbfd2eba3, 0xb99eb689} }, -/**/ {{0xbc7b12ef, 0x6a2f2701} }, -/**/ {{0x3fb2234e, 0x7ec46b9b} }, -/**/ {{0x3c59f30c, 0x8d415d66} }, -/**/ {{0x3fa32856, 0xaabf0d26} }, -/**/ {{0xbc122571, 0x3f33d7ea} }, -/**/ {{0xbfac25b2, 0xcc3da9ce} }, -/**/ {{0x3f9e6d84, 0xa8630cad} }, -/**/ {{0xbf5308c5, 0xbeba707a} }, -/**/ {{0xbf898fda, 0xa1585fd1} }, -/**/ {{0x3f87565b, 0x0dc54356} } }, -/**/ {{{0x3fea0000, 0x00000000} }, -/**/ {{0x3fe5d589, 0x87169b18} }, -/**/ {{0x3c60028e, 0x4bc5e7ca} }, -/**/ {{0x3fe34679, 0xace01346} }, -/**/ {{0x3c8e6b38, 0x04d19e6b} }, -/**/ {{0xbfd2ddfb, 0x03913da2} }, -/**/ {{0xbc763ec8, 0x9a19adbd} }, -/**/ {{0x3fb24913, 0x07b46905} }, -/**/ {{0xbc4e7be8, 0xd6f0307f} }, -/**/ {{0x3fa29c7e, 0x4b96b773} }, -/**/ {{0xbc24c2cd, 0x9182d783} }, -/**/ {{0xbfabca78, 0x1f071f44} }, -/**/ {{0x3f9e63ce, 0xc4b7b7c4} }, -/**/ {{0xbf59529a, 0x125f35b0} }, -/**/ {{0xbf88bf43, 0xed369b2b} }, -/**/ {{0x3f8703ba, 0xc97185cd} } }, -/**/ {{{0x3fea2000, 0x00000000} }, -/**/ {{0x3fe5e8c6, 0x941043d0} }, -/**/ {{0xbc70bf75, 0xbe451e70} }, -/**/ {{0x3fe333a2, 0x91e21aec} }, -/**/ {{0x3c7ae035, 0x7acfc84f} }, -/**/ {{0xbfd2d036, 0x628d5861} }, -/**/ {{0x3c67c5fb, 0xe463d006} }, -/**/ {{0x3fb26dc1, 0xa7d77fb2} }, -/**/ {{0xbc5432bd, 0xc47ba861} }, -/**/ {{0x3fa2126d, 0xc229bece} }, -/**/ {{0xbc4be1bf, 0x1da8ed9e} }, -/**/ {{0xbfab6f5e, 0xa890e568} }, -/**/ {{0x3f9e5763, 0xeec5339a} }, -/**/ {{0xbf5f68a6, 0x5274aa52} }, -/**/ {{0xbf87f19c, 0x8a9df558} }, -/**/ {{0x3f86af6b, 0xff809dc5} } }, -/**/ {{{0x3fea4000, 0x00000000} }, -/**/ {{0x3fe5fbf0, 0xd0d5cc4a} }, -/**/ {{0xbc5b4cfd, 0x000b7158} }, -/**/ {{0x3fe320d9, 0x49243ad8} }, -/**/ {{0xbc8ce5e0, 0x433f7be5} }, -/**/ {{0xbfd2c256, 0xa5abec2f} }, -/**/ {{0xbc68785b, 0x04494dc1} }, -/**/ {{0x3fb2915d, 0xee25a81c} }, -/**/ {{0x3c3e7045, 0x68b37e8b} }, -/**/ {{0x3fa18a24, 0x5451b7d2} }, -/**/ {{0xbc3b2d29, 0x79d21dd5} }, -/**/ {{0xbfab146e, 0x65dfcf66} }, -/**/ {{0x3f9e485a, 0xa4b895b9} }, -/**/ {{0xbf62a5d4, 0x14770b65} }, -/**/ {{0xbf8726f2, 0xeb7dab0f} }, -/**/ {{0x3f865995, 0xc081d40d} } }, -/**/ {{{0x3fea6000, 0x00000000} }, -/**/ {{0x3fe60f08, 0x4b46e05f} }, -/**/ {{0xbc8dbb86, 0x99945193} }, -/**/ {{0x3fe30e1d, 0xed5be099} }, -/**/ {{0x3c6c6e78, 0x373fae45} }, -/**/ {{0xbfd2b45c, 0x995b3a02} }, -/**/ {{0x3c7cb97b, 0xe7cea2ad} }, -/**/ {{0x3fb2b3eb, 0x67fb0cde} }, -/**/ {{0xbc402927, 0x4920d50b} }, -/**/ {{0x3fa103a1, 0x209f00e4} }, -/**/ {{0xbc36fb57, 0xecac275a} }, -/**/ {{0xbfaab9af, 0x10fb6629} }, -/**/ {{0x3f9e36c9, 0x1100b94a} }, -/**/ {{0xbf657e30, 0x58620e6c} }, -/**/ {{0xbf865f54, 0x2801158e} }, -/**/ {{0x3f86025d, 0xd27eaf07} } }, -/**/ {{{0x3fea8000, 0x00000000} }, -/**/ {{0x3fe6220d, 0x115d7b8e} }, -/**/ {{0xbc62b785, 0x350ee8c1} }, -/**/ {{0x3fe2fb70, 0x98736048} }, -/**/ {{0x3c87a751, 0x4df7c4fa} }, -/**/ {{0xbfd2a649, 0x07603054} }, -/**/ {{0x3c7c41eb, 0xf564247c} }, -/**/ {{0x3fb2d56d, 0xa0cac592} }, -/**/ {{0x3c333138, 0x4e757ddf} }, -/**/ {{0x3fa07ee3, 0x1fa53ce5} }, -/**/ {{0xbc41bd0c, 0x28113a76} }, -/**/ {{0xbfaa5f28, 0x21eb5271} }, -/**/ {{0x3f9e22c5, 0x08df7f4f} }, -/**/ {{0xbf683dca, 0x107b528f} }, -/**/ {{0xbf859acc, 0x0a22f693} }, -/**/ {{0x3f85a9e8, 0xb39536ba} } }, -/**/ {{{0x3feaa000, 0x00000000} }, -/**/ {{0x3fe634ff, 0x312d1f3b} }, -/**/ {{0x3c89d2f3, 0x15f2b598} }, -/**/ {{0x3fe2e8d1, 0x638c9d15} }, -/**/ {{0x3c831ae5, 0xfe1a437d} }, -/**/ {{0xbfd2981c, 0xb6d7f622} }, -/**/ {{0xbc53da87, 0x86e9fe4d} }, -/**/ {{0x3fb2f5e8, 0x21d425b2} }, -/**/ {{0xbc186482, 0xae2616cb} }, -/**/ {{0x3f9ff7d2, 0x4a85a0e4} }, -/**/ {{0xbc294288, 0xe2d9205b} }, -/**/ {{0xbfaa04e0, 0xcfb8dc09} }, -/**/ {{0x3f9e0c64, 0x0b1f9c73} }, -/**/ {{0xbf6ae504, 0xbd3845d8} }, -/**/ {{0xbf84d965, 0x19278cae} }, -/**/ {{0x3f855059, 0x9cf7183b} } }, -/**/ {{{0x3feac000, 0x00000000} }, -/**/ {{0x3fe647de, 0xb8e20b90} }, -/**/ {{0xbc5eca04, 0x023a51cf} }, -/**/ {{0x3fe2d640, 0x6703b033} }, -/**/ {{0x3c870ae6, 0x38039b02} }, -/**/ {{0xbfd289d8, 0x6c39acf5} }, -/**/ {{0xbc71f038, 0x0238a7ee} }, -/**/ {{0x3fb3155e, 0x71da955f} }, -/**/ {{0xbc5faa02, 0xd41f84df} }, -/**/ {{0x3f9ef563, 0xc3c69caa} }, -/**/ {{0x3c331d29, 0x75403dbd} }, -/**/ {{0xbfa9aae0, 0x1174124f} }, -/**/ {{0x3f9df3bb, 0x3eedb30b} }, -/**/ {{0xbf6d7445, 0x1c632765} }, -/**/ {{0xbf841b28, 0xa4fa03e7} }, -/**/ {{0x3f84f5d2, 0x8646990d} } }, -/**/ {{{0x3feae000, 0x00000000} }, -/**/ {{0x3fe65aab, 0xb6c07b03} }, -/**/ {{0xbc67939b, 0x3af32729} }, -/**/ {{0x3fe2c3bd, 0xba718de8} }, -/**/ {{0xbc82d2fc, 0xc4990a2b} }, -/**/ {{0xbfd27b7c, 0xe9586818} }, -/**/ {{0x3c780d5e, 0x880839ca} }, -/**/ {{0x3fb333d4, 0x14dfe9e3} }, -/**/ {{0x3c536469, 0xbce74cae} }, -/**/ {{0x3f9df677, 0xc77983b8} }, -/**/ {{0x3c373272, 0xb42f53aa} }, -/**/ {{0xbfa9512c, 0x9f3c360e} }, -/**/ {{0x3f9dd8df, 0x72d37b24} }, -/**/ {{0xbf6febf1, 0x02e417f5} }, -/**/ {{0xbf83601e, 0xd16a1579} }, -/**/ {{0x3f849a74, 0x294a83e4} } }, -/**/ {{{0x3feb0000, 0x00000000} }, -/**/ {{0x3fe66d66, 0x3923e087} }, -/**/ {{0xbc76ea6f, 0xebe8bbba} }, -/**/ {{0x3fe2b149, 0x74aea886} }, -/**/ {{0x3c868ffd, 0xa9d6d16a} }, -/**/ {{0xbfd26d0a, 0xed65571e} }, -/**/ {{0x3c6cf972, 0x476fb5f2} }, -/**/ {{0x3fb3514c, 0x8be1339f} }, -/**/ {{0x3c5c8c0f, 0x3f722216} }, -/**/ {{0x3f9cfb0b, 0x300f8f9b} }, -/**/ {{0xbc0edd81, 0x38d1c932} }, -/**/ {{0xbfa8f7cc, 0xf34b004f} }, -/**/ {{0x3f9dbbe5, 0x1bd3bde0} }, -/**/ {{0xbf712637, 0x9bf7dceb} }, -/**/ {{0xbf82a84e, 0xa146e5b2} }, -/**/ {{0x3f843e5e, 0x05f2718e} } }, -/**/ {{{0x3feb2000, 0x00000000} }, -/**/ {{0x3fe6800e, 0x4e7e2858} }, -/**/ {{0xbc58ea6a, 0x1b3e90f0} }, -/**/ {{0x3fe29ee3, 0xabd5912c} }, -/**/ {{0xbc61b3cd, 0xb17c28e3} }, -/**/ {{0xbfd25e83, 0x34f221eb} }, -/**/ {{0xbc74c483, 0xfa300585} }, -/**/ {{0x3fb36dcb, 0x5495f6e3} }, -/**/ {{0x3c59b55b, 0x311973fe} }, -/**/ {{0x3f9c031a, 0x9864d139} }, -/**/ {{0x3c28fdf3, 0xbd00e171} }, -/**/ {{0xbfa89ec7, 0x4b026585} }, -/**/ {{0x3f9d9ce0, 0x54a5ed3d} }, -/**/ {{0xbf724b13, 0xa8cb6dfc} }, -/**/ {{0xbf81f3be, 0x015469a9} }, -/**/ {{0x3f83e1ae, 0x66a50a89} } }, -/**/ {{{0x3feb4000, 0x00000000} }, -/**/ {{0x3fe692a4, 0x0556fb6a} }, -/**/ {{0x3c8d94b9, 0x5a8ea2cc} }, -/**/ {{0x3fe28c8c, 0x75459603} }, -/**/ {{0x3c8b1c3b, 0x2945fc08} }, -/**/ {{0xbfd24fe6, 0x79f37468} }, -/**/ {{0xbc4e3751, 0x0ec1ef94} }, -/**/ {{0x3fb38953, 0xe931c53b} }, -/**/ {{0xbc3b108d, 0x16d80688} }, -/**/ {{0x3f9b0ea2, 0x5e1b50b5} }, -/**/ {{0x3c0074c0, 0x63fd1067} }, -/**/ {{0xbfa84621, 0xa7fc7800} }, -/**/ {{0x3f9d7be4, 0xdd10256e} }, -/**/ {{0xbf7364c0, 0xc9592c5e} }, -/**/ {{0xbf814271, 0xd318d707} }, -/**/ {{0x3f838482, 0x64d217b8} } }, -/**/ {{{0x3feb6000, 0x00000000} }, -/**/ {{0x3fe6a527, 0x6c4b0576} }, -/**/ {{0xbc8f6b65, 0x9c46a69e} }, -/**/ {{0x3fe27a43, 0xe5a55de9} }, -/**/ {{0x3c66846e, 0xedc25d49} }, -/**/ {{0xbfd24135, 0x73c3b821} }, -/**/ {{0xbc79202a, 0x56ab5808} }, -/**/ {{0x3fb3a3e9, 0xc0282c84} }, -/**/ {{0x3c4057ca, 0x03d25dab} }, -/**/ {{0x3f9a1d9e, 0xa3eb854d} }, -/**/ {{0xbc3775ed, 0xf03e2fb1} }, -/**/ {{0xbfa7ede1, 0xd11d1043} }, -/**/ {{0x3f9d5906, 0x195e6961} }, -/**/ {{0xbf747373, 0x65130256} }, -/**/ {{0xbf80946d, 0xf77fd664} }, -/**/ {{0x3f8326f5, 0xedc272c2} } }, -/**/ {{{0x3feb8000, 0x00000000} }, -/**/ {{0x3fe6b798, 0x920b3d99} }, -/**/ {{0xbc8a8038, 0x6188c50e} }, -/**/ {{0x3fe2680a, 0x10e5813e} }, -/**/ {{0xbc8f5497, 0x2242a6bc} }, -/**/ {{0xbfd23270, 0xd725fa1c} }, -/**/ {{0x3c757282, 0x5c781b14} }, -/**/ {{0x3fb3bd90, 0x4bf2f124} }, -/**/ {{0x3c31ae9c, 0x6a14ed74} }, -/**/ {{0x3f99300b, 0x53ea1533} }, -/**/ {{0x3c2a8d88, 0x68f98d7e} }, -/**/ {{0xbfa7960d, 0x53a4e537} }, -/**/ {{0x3f9d3457, 0x11f5f086} }, -/**/ {{0xbf757760, 0x19baa1da} }, -/**/ {{0xbf7fd36a, 0xb2a2ca7e} }, -/**/ {{0x3f82c923, 0xc7a02081} } }, -/**/ {{{0x3feba000, 0x00000000} }, -/**/ {{0x3fe6c9f7, 0x855c3198} }, -/**/ {{0x3c7c09de, 0x29bd280d} }, -/**/ {{0x3fe255df, 0x0a431fbd} }, -/**/ {{0x3c8d9866, 0xf09a745d} }, -/**/ {{0xbfd22399, 0x5648fb1f} }, -/**/ {{0x3c412100, 0xb4df0b3e} }, -/**/ {{0x3fb3d64a, 0xfada8899} }, -/**/ {{0x3c3dd891, 0x659c4346} }, -/**/ {{0x3f9845e4, 0x21c2d0a1} }, -/**/ {{0x3c28c6b1, 0xf397827c} }, -/**/ {{0xbfa73ea9, 0x8445c1cc} }, -/**/ {{0x3f9d0dea, 0x730360f8} }, -/**/ {{0xbf7670bb, 0xac51ce30} }, -/**/ {{0xbf7e8493, 0xeef50deb} }, -/**/ {{0x3f826b25, 0x96b119a9} } }, -/**/ {{{0x3febc000, 0x00000000} }, -/**/ {{0x3fe6dc44, 0x551553af} }, -/**/ {{0xbc5bf886, 0x3573828e} }, -/**/ {{0x3fe243c2, 0xe44a7335} }, -/**/ {{0xbc667287, 0x65d1ffd7} }, -/**/ {{0xbfd214af, 0xa0ca68d3} }, -/**/ {{0xbc71296c, 0x88820895} }, -/**/ {{0x3fb3ee1d, 0x36c0c9a2} }, -/**/ {{0x3c540bf6, 0x831dfabe} }, -/**/ {{0x3f975f24, 0x8ce8de84} }, -/**/ {{0xbc125368, 0x43eb5853} }, -/**/ {{0xbfa6e7bb, 0x803788f8} }, -/**/ {{0x3f9ce5d2, 0x8c42d5f9} }, -/**/ {{0xbf775fba, 0xfaadb3ab} }, -/**/ {{0xbf7d3c59, 0xde4c28da} }, -/**/ {{0x3f820d13, 0xe2bf7ef5} } }, -/**/ {{{0x3febe000, 0x00000000} }, -/**/ {{0x3fe6ee7f, 0x10204aef} }, -/**/ {{0x3c8692ee, 0xa3066272} }, -/**/ {{0x3fe231b5, 0xb0d95ee5} }, -/**/ {{0x3c7aae7e, 0x1eb505b6} }, -/**/ {{0xbfd205b4, 0x63ba3e08} }, -/**/ {{0x3c71c6d1, 0xb975517d} }, -/**/ {{0x3fb4050a, 0x64edc729} }, -/**/ {{0x3c4960ed, 0x715db809} }, -/**/ {{0x3f967bc7, 0xe2bc143b} }, -/**/ {{0xbc2cbf17, 0xf0823143} }, -/**/ {{0xbfa69148, 0x2e4dbc47} }, -/**/ {{0x3f9cbc21, 0x50e0982e} }, -/**/ {{0xbf784492, 0xedaa432a} }, -/**/ {{0xbf7bfabd, 0x0b4850f3} }, -/**/ {{0x3f81af06, 0x1caa2f2c} } }, -/**/ {{{0x3fec0000, 0x00000000} }, -/**/ {{0x3fe700a7, 0xc5784634} }, -/**/ {{0xbc78c34d, 0x25aadef6} }, -/**/ {{0x3fe21fb7, 0x8121fb78} }, -/**/ {{0x3c621fb7, 0x8121fb78} }, -/**/ {{0xbfd1f6a8, 0x499e4889} }, -/**/ {{0xbc60e934, 0x6d4e0249} }, -/**/ {{0x3fb41b15, 0xe5decb17} }, -/**/ {{0x3c5194f4, 0xab3541e6} }, -/**/ {{0x3f959bc9, 0x40a374b5} }, -/**/ {{0xbc39dc6e, 0x54be0e10} }, -/**/ {{0xbfa63b54, 0x400d3c9a} }, -/**/ {{0x3f9c90e8, 0x57717232} }, -/**/ {{0xbf791f78, 0x6bfa704e} }, -/**/ {{0xbf7abfbc, 0x643da6dd} }, -/**/ {{0x3f815112, 0xa418ed31} } }, -/**/ {{{0x3fec2000, 0x00000000} }, -/**/ {{0x3fe712be, 0x84295198} }, -/**/ {{0x3c85cd90, 0x337d8881} }, -/**/ {{0x3fe20dc8, 0x65ad1f5b} }, -/**/ {{0xbc88102a, 0xd7b50d48} }, -/**/ {{0xbfd1e78b, 0xfa75d2f4} }, -/**/ {{0x3c723734, 0x619624d2} }, -/**/ {{0x3fb43043, 0x1517663e} }, -/**/ {{0xbc4af8a4, 0xe5e1ddf1} }, -/**/ {{0x3f94bf23, 0x961cd605} }, -/**/ {{0xbc26e86e, 0x5ca14507} }, -/**/ {{0xbfa5e5e4, 0x32c1ffd7} }, -/**/ {{0x3f9c6438, 0xda0191cd} }, -/**/ {{0xbf79f0a0, 0x4d921d2b} }, -/**/ {{0xbf798b55, 0x4e35d54e} }, -/**/ {{0x3f80f34e, 0xcd4f7bfd} } }, -/**/ {{{0x3fec4000, 0x00000000} }, -/**/ {{0x3fe724c3, 0x5b4fae7b} }, -/**/ {{0x3c5948b3, 0x2db3499b} }, -/**/ {{0x3fe1fbe8, 0x6e5ce35d} }, -/**/ {{0x3c8101d1, 0x561e27a3} }, -/**/ {{0xbfd1d860, 0x1bbd70f4} }, -/**/ {{0xbc7b4c97, 0xfa32c4d1} }, -/**/ {{0x3fb44495, 0x48f48a77} }, -/**/ {{0xbc2ccfed, 0xb47fdf89} }, -/**/ {{0x3f93e5d1, 0xa6c1af2c} }, -/**/ {{0xbc14af58, 0xc3b5a19b} }, -/**/ {{0xbfa590fc, 0x5094795f} }, -/**/ {{0x3f9c3623, 0xb638ebc2} }, -/**/ {{0xbf7ab83f, 0x4fa66d0e} }, -/**/ {{0xbf785d83, 0xb787e297} }, -/**/ {{0x3f8095ce, 0xe71b4cea} } }, -/**/ {{{0x3fec6000, 0x00000000} }, -/**/ {{0x3fe736b6, 0x5a172dff} }, -/**/ {{0x3c7775fd, 0x06a892d1} }, -/**/ {{0x3fe1ea17, 0xaa6f2377} }, -/**/ {{0xbc8395a8, 0xcb44ec07} }, -/**/ {{0xbfd1c925, 0x5072ec76} }, -/**/ {{0xbc6e11b3, 0xf650d5de} }, -/**/ {{0x3fb4580f, 0xd281a42b} }, -/**/ {{0xbc55bbce, 0xf63226cb} }, -/**/ {{0x3f930fce, 0x0c411254} }, -/**/ {{0x3c3a4412, 0xc9852726} }, -/**/ {{0xbfa53ca0, 0xb19e766e} }, -/**/ {{0x3f9c06b9, 0x6d941dd5} }, -/**/ {{0xbf7b768a, 0x094128b2} }, -/**/ {{0xbf773642, 0x2a047c42} }, -/**/ {{0x3f8038a6, 0x40d7925f} } }, -/**/ {{{0x3fec8000, 0x00000000} }, -/**/ {{0x3fe74897, 0x8fba8e0f} }, -/**/ {{0x3c47b2a6, 0x165884a1} }, -/**/ {{0x3fe1d856, 0x287ffb8a} }, -/**/ {{0xbc658a1f, 0xfee27a9d} }, -/**/ {{0xbfd1b9dc, 0x39195240} }, -/**/ {{0x3c604646, 0x551dc6bf} }, -/**/ {{0x3fb46ab5, 0xfd4fa866} }, -/**/ {{0x3c5f62a7, 0xc2febe43} }, -/**/ {{0x3f923d13, 0x384eda2c} }, -/**/ {{0x3c3b9a7c, 0x1dfd9f34} }, -/**/ {{0xbfa4e8d5, 0x3cff324c} }, -/**/ {{0x3f9bd60a, 0x25b0d0ad} }, -/**/ {{0xbf7c2bb4, 0xe063d1e6} }, -/**/ {{0xbf761589, 0xdcb54dd5} }, -/**/ {{0x3f7fb7ce, 0x61077b85} } }, -/**/ {{{0x3feca000, 0x00000000} }, -/**/ {{0x3fe75a67, 0x0b82d8d8} }, -/**/ {{0x3c8ee4ac, 0x4c729087} }, -/**/ {{0x3fe1c6a3, 0xf68c4011} }, -/**/ {{0xbc8e54e4, 0x32671c29} }, -/**/ {{0xbfd1aa85, 0x73bd1c8f} }, -/**/ {{0x3c7525ad, 0x41d7bd80} }, -/**/ {{0x3fb47c8b, 0x0f4e0cc0} }, -/**/ {{0x3c2efdd1, 0xd854875c} }, -/**/ {{0x3f916d9b, 0x7688134d} }, -/**/ {{0xbc1abef6, 0x42a6f922} }, -/**/ {{0xbfa4959d, 0xa9ee694e} }, -/**/ {{0x3f9ba425, 0xa8aca118} }, -/**/ {{0xbf7cd7f3, 0xffb6fa1f} }, -/**/ {{0xbf74fb52, 0xc52e395a} }, -/**/ {{0x3f7eff46, 0x31d14661} } }, -/**/ {{{0x3fecc000, 0x00000000} }, -/**/ {{0x3fe76c24, 0xdcc6c6c0} }, -/**/ {{0x3c819525, 0x51adc83d} }, -/**/ {{0x3fe1b501, 0x21f3f28c} }, -/**/ {{0xbc45712f, 0x5f1d67b6} }, -/**/ {{0xbfd19b21, 0x9bf87a43} }, -/**/ {{0xbc64520a, 0xb2071e48} }, -/**/ {{0x3fb48d92, 0x48a59e43} }, -/**/ {{0x3c5f8e56, 0x42014b8b} }, -/**/ {{0x3f90a160, 0xee4caccb} }, -/**/ {{0x3c2bd92b, 0x7b6daa67} }, -/**/ {{0xbfa442fd, 0x80ce3489} }, -/**/ {{0x3f9b711b, 0x65959e45} }, -/**/ {{0xbf7d7b7b, 0x4cc2673a} }, -/**/ {{0xbf73e793, 0xa86f8a8e} }, -/**/ {{0x3f7e47d4, 0xdf91602d} } }, -/**/ {{{0x3fece000, 0x00000000} }, -/**/ {{0x3fe77dd1, 0x12ea22c7} }, -/**/ {{0x3c873260, 0x8fc10d3d} }, -/**/ {{0x3fe1a36d, 0xb77cb1a2} }, -/**/ {{0xbc42c20d, 0x6e625be9} }, -/**/ {{0xbfd18bb1, 0x4af7b13c} }, -/**/ {{0xbc68446b, 0xbc063e5a} }, -/**/ {{0x3fb49dce, 0xe3952cbb} }, -/**/ {{0x3c588e60, 0x58cf9123} }, -/**/ {{0x3f8fb0bb, 0x491cfa44} }, -/**/ {{0x3c1534fc, 0x0e3f2a43} }, -/**/ {{0xbfa3f0f8, 0x1c3b7aca} }, -/**/ {{0x3f9b3cfa, 0x70eb708a} }, -/**/ {{0xbf7e167e, 0x5eaa8b7f} }, -/**/ {{0xbf72da42, 0x2b587c04} }, -/**/ {{0x3f7d9199, 0x882fa65b} } }, -/**/ {{{0x3fed0000, 0x00000000} }, -/**/ {{0x3fe78f6b, 0xbd5d315e} }, -/**/ {{0x3c8406a0, 0x89803740} }, -/**/ {{0x3fe191e9, 0xc35424ca} }, -/**/ {{0xbc8fa3c1, 0xf4be863f} }, -/**/ {{0xbfd17c35, 0x177d9a85} }, -/**/ {{0xbc717b81, 0x6a99d546} }, -/**/ {{0x3fb4ad44, 0x144fffae} }, -/**/ {{0x3c3538b3, 0xdccca2a3} }, -/**/ {{0x3f8e2516, 0xfb2b5523} }, -/**/ {{0x3c0f7c11, 0x60181bd9} }, -/**/ {{0xbfa39f90, 0xaa1cc641} }, -/**/ {{0x3f9b07d1, 0x85304289} }, -/**/ {{0xbf7ea930, 0x756fd193} }, -/**/ {{0xbf71d352, 0xe2a9a0de} }, -/**/ {{0x3f7cdcb1, 0x886fc912} } }, -/**/ {{{0x3fed2000, 0x00000000} }, -/**/ {{0x3fe7a0f4, 0xeb9c19a2} }, -/**/ {{0x3c613c67, 0xcd815f57} }, -/**/ {{0x3fe18075, 0x5112636f} }, -/**/ {{0x3c80a172, 0x7a335b20} }, -/**/ {{0xbfd16cad, 0x95e83705} }, -/**/ {{0x3c62a94b, 0x7b21d5e1} }, -/**/ {{0x3fb4bbf5, 0x08de0a7c} }, -/**/ {{0x3c3570d0, 0x057457a0} }, -/**/ {{0x3f8c9fc8, 0x7d750fdf} }, -/**/ {{0x3c2900a7, 0xfe4cff3c} }, -/**/ {{0xbfa34eca, 0x2caf50ea} }, -/**/ {{0x3f9ad1af, 0x03888c77} }, -/**/ {{0xbf7f33c4, 0x71ac3a86} }, -/**/ {{0xbf70d2b9, 0x6296fd58} }, -/**/ {{0x3f7c2938, 0x886d16b8} } }, -/**/ {{{0x3fed4000, 0x00000000} }, -/**/ {{0x3fe7b26c, 0xad2e50fe} }, -/**/ {{0xbc8ce80d, 0xf30411fb} }, -/**/ {{0x3fe16f10, 0x6bbc577a} }, -/**/ {{0xbc7d0db6, 0xbd8abf47} }, -/**/ {{0xbfd15d1b, 0x58355b5f} }, -/**/ {{0xbc5b5457, 0xbcc70038} }, -/**/ {{0x3fb4c9e4, 0xe8fdd51d} }, -/**/ {{0x3c462959, 0x28ac9383} }, -/**/ {{0x3f8b20c3, 0x2029f143} }, -/**/ {{0xbc2f8a44, 0x2b420400} }, -/**/ {{0xbfa2fea7, 0x7b921c49} }, -/**/ {{0x3f9a9aa0, 0xf468e79e} }, -/**/ {{0xbf7fb66c, 0xcccbcb4f} }, -/**/ {{0xbf6fb0d0, 0x9bd39a5f} }, -/**/ {{0x3f7b7748, 0x8813998f} } }, -/**/ {{{0x3fed6000, 0x00000000} }, -/**/ {{0x3fe7c3d3, 0x11a6092b} }, -/**/ {{0x3c8bb3cb, 0x2d303288} }, -/**/ {{0x3fe15dbb, 0x1dc61b17} }, -/**/ {{0xbc8f0487, 0xbb77dc56} }, -/**/ {{0xbfd14d7e, 0xee0771ca} }, -/**/ {{0x3c72d38b, 0xdc2fcbd0} }, -/**/ {{0x3fb4d716, 0xd6080f0e} }, -/**/ {{0xbc5cb5bc, 0xa9fbc2c3} }, -/**/ {{0x3f89a7f9, 0xfc42e02f} }, -/**/ {{0xbc201eec, 0x857be8a4} }, -/**/ {{0xbfa2af2b, 0x44ceebb3} }, -/**/ {{0x3f9a62b5, 0x08511639} }, -/**/ {{0xbf8018ad, 0xc8de23de} }, -/**/ {{0xbf6dc8a2, 0xc964501a} }, -/**/ {{0x3f7ac6f9, 0xeb913697} } }, -/**/ {{{0x3fed8000, 0x00000000} }, -/**/ {{0x3fe7d528, 0x289fa093} }, -/**/ {{0x3c856082, 0x1e2f3aa9} }, -/**/ {{0x3fe14c75, 0x711551bb} }, -/**/ {{0xbc80c88e, 0x71970f2c} }, -/**/ {{0xbfd13dd8, 0xe4aa5095} }, -/**/ {{0x3c66dd31, 0xb4b7ae12} }, -/**/ {{0x3fb4e38d, 0xead4c211} }, -/**/ {{0x3c513fb0, 0xe392a31e} }, -/**/ {{0x3f88355f, 0xf6b74576} }, -/**/ {{0x3ba8cb44, 0xf3561ab7} }, -/**/ {{0xbfa26058, 0x0de0faaa} }, -/**/ {{0x3f9a29f8, 0x989371f0} }, -/**/ {{0xbf805261, 0x2b085d9a} }, -/**/ {{0xbf6beccb, 0x2511c555} }, -/**/ {{0x3f7a1863, 0x87b9d333} } }, -/**/ {{{0x3feda000, 0x00000000} }, -/**/ {{0x3fe7e66c, 0x01c114fe} }, -/**/ {{0xbc8c82b8, 0x8b760b8d} }, -/**/ {{0x3fe13b3f, 0x6f037c44} }, -/**/ {{0xbc635393, 0x8562c8c0} }, -/**/ {{0xbfd12e29, 0xc7182435} }, -/**/ {{0xbc73da80, 0x0d0fda95} }, -/**/ {{0x3fb4ef4d, 0x3ba21a8b} }, -/**/ {{0xbc17c450, 0x9aa41146} }, -/**/ {{0x3f86c8e7, 0xc39dff46} }, -/**/ {{0x3c1ddd70, 0x800ba9ae} }, -/**/ {{0xbfa21230, 0x34b94b56} }, -/**/ {{0x3f99f078, 0xa827f95a} }, -/**/ {{0xbf808869, 0x19caa997} }, -/**/ {{0xbf6a1d29, 0xf8c46d26} }, -/**/ {{0x3f796b9a, 0xae59da17} } }, -/**/ {{{0x3fedc000, 0x00000000} }, -/**/ {{0x3fe7f79e, 0xacb97898} }, -/**/ {{0x3c8fd5ca, 0x80ead221} }, -/**/ {{0x3fe12a19, 0x20604825} }, -/**/ {{0xbc5cc7d6, 0xa18970f8} }, -/**/ {{0xbfd11e72, 0x1dfe6ba4} }, -/**/ {{0x3c706717, 0x9d653d1c} }, -/**/ {{0x3fb4fa57, 0xd5fcbb3b} }, -/**/ {{0x3c1922c8, 0x5f50bc06} }, -/**/ {{0x3f856283, 0xe93a179f} }, -/**/ {{0xbc01c2ec, 0x5ea7135a} }, -/**/ {{0xbfa1c4b5, 0xf0c06b4f} }, -/**/ {{0x3f99b641, 0xe48a3b04} }, -/**/ {{0xbf80badd, 0xe1280a21} }, -/**/ {{0xbf68599e, 0x1be3c5dd} }, -/**/ {{0x3f78c0b3, 0x3a72c8e6} } }, -/**/ {{{0x3fede000, 0x00000000} }, -/**/ {{0x3fe808c0, 0x3940694b} }, -/**/ {{0xbc800f32, 0x7715f6a5} }, -/**/ {{0x3fe11902, 0x8d73d98e} }, -/**/ {{0x3c71d158, 0x30f8e290} }, -/**/ {{0xbfd10eb2, 0x6fc305eb} }, -/**/ {{0xbc7fd2e3, 0x3858c4b7} }, -/**/ {{0x3fb504b0, 0xc0a99255} }, -/**/ {{0x3c55c054, 0x142e134f} }, -/**/ {{0x3f840226, 0xc2f371cf} }, -/**/ {{0xbbfc85b0, 0xfc7d6225} }, -/**/ {{0xbfa177eb, 0x53d58f53} }, -/**/ {{0x3f997b60, 0xa6a1627d} }, -/**/ {{0xbf80e9d7, 0x89757c78} }, -/**/ {{0xbf66a205, 0x0d433cd6} }, -/**/ {{0x3f7817bf, 0x9c5dbd9f} } }, -/**/ {{{0x3fee0000, 0x00000000} }, -/**/ {{0x3fe819d0, 0xb7158a4d} }, -/**/ {{0xbc7bf762, 0x29d3b917} }, -/**/ {{0x3fe107fb, 0xbe011080} }, -/**/ {{0xbc8107fb, 0xbe011080} }, -/**/ {{0xbfd0feeb, 0x40894fcd} }, -/**/ {{0x3c76fbb9, 0xc155af9a} }, -/**/ {{0x3fb50e5a, 0xfb9125f7} }, -/**/ {{0x3c357762, 0x2f3313b0} }, -/**/ {{0x3f82a7c2, 0x843ba55a} }, -/**/ {{0x3c1f4994, 0x3fc197b7} }, -/**/ {{0xbfa12bd2, 0x4b4ae875} }, -/**/ {{0x3f993fe0, 0xf3b1b1ee} }, -/**/ {{0xbf81156d, 0xd4c2083b} }, -/**/ {{0xbf64f63b, 0x0c35aa9c} }, -/**/ {{0x3f7770d0, 0xe5d0462f} } }, -/**/ {{{0x3fee2000, 0x00000000} }, -/**/ {{0x3fe82ad0, 0x36000005} }, -/**/ {{0x3c74592f, 0xce924d24} }, -/**/ {{0x3fe0f704, 0xb947c8b7} }, -/**/ {{0x3c436cd7, 0x48a651b3} }, -/**/ {{0xbfd0ef1d, 0x1237505b} }, -/**/ {{0x3c69239b, 0x1b86b9d1} }, -/**/ {{0x3fb51759, 0x7fac4e21} }, -/**/ {{0xbc42a8cc, 0xbfce0e36} }, -/**/ {{0x3f815349, 0x3b5f3edd} }, -/**/ {{0xbc25e1f1, 0x88c702d9} }, -/**/ {{0xbfa0e06c, 0xa0df17a9} }, -/**/ {{0x3f9903ce, 0x7e56b8b1} }, -/**/ {{0xbf813db8, 0x3c701e30} }, -/**/ {{0xbf63561b, 0x30c99e47} }, -/**/ {{0x3f76cbf6, 0xd5bffce0} } }, -/**/ {{{0x3fee4000, 0x00000000} }, -/**/ {{0x3fe83bbe, 0xc5cdee22} }, -/**/ {{0x3c631071, 0x04ffc6c3} }, -/**/ {{0x3fe0e61d, 0x86071468} }, -/**/ {{0xbc70ccc4, 0x59be09c9} }, -/**/ {{0xbfd0df48, 0x647af38b} }, -/**/ {{0x3c7dd47c, 0x427c295b} }, -/**/ {{0x3fb51faf, 0x3ef25277} }, -/**/ {{0x3bdf056a, 0xa81026a7} }, -/**/ {{0x3f8004ac, 0xd443a18b} }, -/**/ {{0x3c027610, 0x8178f329} }, -/**/ {{0xbfa095bb, 0xfbb3a658} }, -/**/ {{0x3f98c734, 0xa7859d46} }, -/**/ {{0xbf8162cd, 0xeefe9a81} }, -/**/ {{0xbf61c17f, 0x8330eac0} }, -/**/ {{0x3f76293f, 0xe421c20a} } }, -/**/ {{{0x3fee6000, 0x00000000} }, -/**/ {{0x3fe84c9c, 0x7653f7eb} }, -/**/ {{0xbc383611, 0xfe0a3e8f} }, -/**/ {{0x3fe0d546, 0x2a7f71b5} }, -/**/ {{0x3c757061, 0x596848c6} }, -/**/ {{0xbfd0cf6d, 0xb4cf51a6} }, -/**/ {{0x3c4c99ab, 0x5b18bb8c} }, -/**/ {{0x3fb5275f, 0x24486227} }, -/**/ {{0x3c5b4a59, 0xbb1f4f56} }, -/**/ {{0x3f7d77be, 0x36238bb2} }, -/**/ {{0x3c1ddbd1, 0xcaec6ba2} }, -/**/ {{0xbfa04bc1, 0xe1406cd0} }, -/**/ {{0x3f988a1e, 0x7f96d6ca} }, -/**/ {{0xbf8184c5, 0xcdffc380} }, -/**/ {{0xbf603841, 0x12561f8b} }, -/**/ {{0x3f7588b9, 0x4d81a668} } }, -/**/ {{{0x3fee8000, 0x00000000} }, -/**/ {{0x3fe85d69, 0x576cc2c5} }, -/**/ {{0x3c66b66e, 0x7fc8b8c3} }, -/**/ {{0x3fe0c47e, 0xac74fadc} }, -/**/ {{0xbc8035f8, 0x77bb1887} }, -/**/ {{0xbfd0bf8d, 0x7e8202a9} }, -/**/ {{0x3c798048, 0x1f4d2357} }, -/**/ {{0x3fb52e6c, 0x13725c73} }, -/**/ {{0xbc34c3af, 0xf5b19ded} }, -/**/ {{0x3f7af1a3, 0x7d9c2711} }, -/**/ {{0x3bea7ec7, 0x1af1098d} }, -/**/ {{0xbfa0027f, 0xb643d11f} }, -/**/ {{0x3f984c96, 0xc756b7d7} }, -/**/ {{0xbf81a3b6, 0x6c3ca3ae} }, -/**/ {{0xbf5d7470, 0x13459246} }, -/**/ {{0x3f74ea6f, 0x1e70d9a4} } }, -/**/ {{{0x3feea000, 0x00000000} }, -/**/ {{0x3fe86e25, 0x78f87ae5} }, -/**/ {{0x3c8022b1, 0x375cfe34} }, -/**/ {{0x3fe0b3c7, 0x11319104} }, -/**/ {{0x3c8ac394, 0x25152519} }, -/**/ {{0xbfd0afa8, 0x3ab87c8a} }, -/**/ {{0x3c724f26, 0x27b31384} }, -/**/ {{0x3fb534d8, 0xe904e078} }, -/**/ {{0xbc55bfde, 0xf8948323} }, -/**/ {{0x3f7876ec, 0xa7bb2dfb} }, -/**/ {{0xbc197116, 0x8a87be50} }, -/**/ {{0xbf9f73ed, 0x7f5f95b4} }, -/**/ {{0x3f980ea7, 0xf11c3266} }, -/**/ {{0xbf81bfb6, 0x0c032389} }, -/**/ {{0xbf5a8e77, 0x8bf305a1} }, -/**/ {{0x3f744e6c, 0x3ec72e6d} } }, -/**/ {{{0x3feec000, 0x00000000} }, -/**/ {{0x3fe87ed0, 0xeadc5a2a} }, -/**/ {{0x3c70af5a, 0xd957f4bc} }, -/**/ {{0x3fe0a31f, 0x5d8701b3} }, -/**/ {{0xbc869b25, 0x263ce937} }, -/**/ {{0xbfd09fbe, 0x60757b83} }, -/**/ {{0x3c767aff, 0xa96db9ef} }, -/**/ {{0x3fb53aa8, 0x7a589afb} }, -/**/ {{0xbc4b7e8e, 0x0844ff86} }, -/**/ {{0x3f76077c, 0xacf1a65c} }, -/**/ {{0xbc19a3b2, 0xb13331a9} }, -/**/ {{0xbf9ee450, 0x472733eb} }, -/**/ {{0x3f97d05c, 0x21e541d7} }, -/**/ {{0xbf81d8da, 0x9d9d4dfc} }, -/**/ {{0xbf57be45, 0xd3ce1b4a} }, -/**/ {{0x3f73b4ba, 0x7cb60047} } }, -/**/ {{{0x3feee000, 0x00000000} }, -/**/ {{0x3fe88f6b, 0xbd023119} }, -/**/ {{0xbc532d1d, 0x25aba660} }, -/**/ {{0x3fe09287, 0x95d126c6} }, -/**/ {{0x3c85aad3, 0xeccc37a6} }, -/**/ {{0xbfd08fd0, 0x649e7367} }, -/**/ {{0x3c71e96c, 0xed21a127} }, -/**/ {{0x3fb53fdd, 0x957ec910} }, -/**/ {{0xbc339c23, 0xaf97a601} }, -/**/ {{0x3f73a336, 0x5a18e5a2} }, -/**/ {{0xbc1f7225, 0x477571de} }, -/**/ {{0xbf9e5629, 0xd4044135} }, -/**/ {{0x3f9791bd, 0x32786dc4} }, -/**/ {{0xbf81ef39, 0xbdf030c4} }, -/**/ {{0xbf550386, 0xe21b8bcb} }, -/**/ {{0x3f731d62, 0x97aa7fb2} } }, -/**/ {{{0x3fef0000, 0x00000000} }, -/**/ {{0x3fe89ff5, 0xff57f1f8} }, -/**/ {{0xbc855b9a, 0x5e177a1b} }, -/**/ {{0x3fe081ff, 0xbdf80108} }, -/**/ {{0x3c6ffbdf, 0x80108200} }, -/**/ {{0xbfd07fde, 0xba010928} }, -/**/ {{0x3c38d37f, 0x7bae0295} }, -/**/ {{0x3fb5447b, 0x0136e69f} }, -/**/ {{0x3c50316a, 0x0dda278d} }, -/**/ {{0x3f7149fc, 0x55103947} }, -/**/ {{0x3c176e96, 0x849e505f} }, -/**/ {{0xbf9dc97b, 0xfbe9a2ee} }, -/**/ {{0x3f9752d4, 0xb08adda9} }, -/**/ {{0xbf8202e8, 0xb540d106} }, -/**/ {{0xbf525de5, 0x859de3e9} }, -/**/ {{0x3f72886c, 0x4afd9f21} } }, -/**/ {{{0x3fef2000, 0x00000000} }, -/**/ {{0x3fe8b06f, 0xc1cf3dff} }, -/**/ {{0xbc80fb31, 0x2656db6d} }, -/**/ {{0x3fe07187, 0xd971cd38} }, -/**/ {{0x3c89baa4, 0x202c20ac} }, -/**/ {{0xbfd06fe9, 0xd15893ab} }, -/**/ {{0xbc7a864b, 0xdc0cb586} }, -/**/ {{0x3fb54883, 0x7ce57fed} }, -/**/ {{0xbc49498e, 0x294f4b18} }, -/**/ {{0x3f6df762, 0x426ebecc} }, -/**/ {{0xbc022f08, 0xf28644c0} }, -/**/ {{0xbf9d3e48, 0x5c564b44} }, -/**/ {{0x3f9713ab, 0xdfea7acf} }, -/**/ {{0xbf8213fc, 0x761db35c} }, -/**/ {{0xbf4f9a17, 0x10d60f49} }, -/**/ {{0x3f71f5de, 0x58700e9b} } }, -/**/ {{{0x3fef4000, 0x00000000} }, -/**/ {{0x3fe8c0d9, 0x145cf49d} }, -/**/ {{0x3c8bea40, 0x76dc4333} }, -/**/ {{0x3fe0611f, 0xeb45139a} }, -/**/ {{0x3c7e4998, 0x65aadb1f} }, -/**/ {{0xbfd05ff2, 0x1953a316} }, -/**/ {{0x3c759922, 0xa1b67b0f} }, -/**/ {{0x3fb54bf9, 0xc08c1d66} }, -/**/ {{0x3c5b9353, 0xd220330c} }, -/**/ {{0x3f69706e, 0x478cb604} }, -/**/ {{0xbbfdb6d3, 0xa22fd45a} }, -/**/ {{0xbf9cb490, 0x5c0d1d38} }, -/**/ {{0x3f96d44b, 0xbbaba2f2} }, -/**/ {{0xbf822289, 0x9c6b7de1} }, -/**/ {{0xbf4aa143, 0xa49803b6} }, -/**/ {{0x3f7165be, 0x9270e49e} } }, -/**/ {{{0x3fef6000, 0x00000000} }, -/**/ {{0x3fe8d132, 0x06f8c4cb} }, -/**/ {{0xbc7b018c, 0xbaa89a8b} }, -/**/ {{0x3fe050c7, 0xf60ab1f4} }, -/**/ {{0x3c63f8e2, 0xc6cf5796} }, -/**/ {{0xbfd04ff7, 0xfe998dc0} }, -/**/ {{0x3c77873c, 0x7dc56419} }, -/**/ {{0x3fb54ee0, 0x7cc24121} }, -/**/ {{0x3c313117, 0x8e5c84c5} }, -/**/ {{0x3f64fee1, 0x50066301} }, -/**/ {{0x3c043698, 0x017261a1} }, -/**/ {{0xbf9c2c55, 0x2cc5b4f1} }, -/**/ {{0x3f9694bc, 0xf759f369} }, -/**/ {{0xbf822ea4, 0x6c93426a} }, -/**/ {{0xbf45d0a1, 0x135d6c51} }, -/**/ {{0x3f70d811, 0xe62dc18f} } }, -/**/ {{{0x3fef8000, 0x00000000} }, -/**/ {{0x3fe8e17a, 0xa99cc05e} }, -/**/ {{0xbc7ec182, 0xab042f61} }, -/**/ {{0x3fe0407f, 0xfbefe001} }, -/**/ {{0x3c401ffe, 0xfbf80041} }, -/**/ {{0xbfd03ffb, 0xebd00209} }, -/**/ {{0xbc53ff3c, 0xb9004112} }, -/**/ {{0x3fb5513a, 0x5aaf6d91} }, -/**/ {{0x3c54a20d, 0xc0516ddb} }, -/**/ {{0x3f60a27f, 0xc6ac4038} }, -/**/ {{0x3bf06bee, 0x2a340912} }, -/**/ {{0xbf9ba597, 0xccd6032a} }, -/**/ {{0x3f965508, 0x002bb974} }, -/**/ {{0xbf823860, 0xd2d1068b} }, -/**/ {{0xbf41277e, 0x666265bc} }, -/**/ {{0x3f704cdc, 0x656b66ea} } }, -/**/ {{{0x3fefa000, 0x00000000} }, -/**/ {{0x3fe8f1b3, 0x0c44f167} }, -/**/ {{0x3c6dd1ca, 0xb93933fd} }, -/**/ {{0x3fe03047, 0xfeb82e4e} }, -/**/ {{0x3c69ee56, 0x5272e5ac} }, -/**/ {{0xbfd02ffe, 0x49a09c45} }, -/**/ {{0xbc700a59, 0xb26267bb} }, -/**/ {{0x3fb55309, 0xfc062d2f} }, -/**/ {{0x3c5dba48, 0xb11938e0} }, -/**/ {{0x3f58b61b, 0xe4f365be} }, -/**/ {{0x3bf8b585, 0xa79ad31a} }, -/**/ {{0xbf9b2059, 0x08d4ad17} }, -/**/ {{0x3f961534, 0xfe379940} }, -/**/ {{0xbf823fd2, 0x62a1270e} }, -/**/ {{0xbf394a53, 0x3f3a0aec} }, -/**/ {{0x3f6f8842, 0xa04bcae2} } }, -/**/ {{{0x3fefc000, 0x00000000} }, -/**/ {{0x3fe901db, 0x3eeef187} }, -/**/ {{0x3c868665, 0xe5603c8f} }, -/**/ {{0x3fe0201f, 0xffbf7f80} }, -/**/ {{0x3c20201f, 0xffbf7f80} }, -/**/ {{0xbfd01fff, 0x7ebe8004} }, -/**/ {{0xbc4213ff, 0xcf979001} }, -/**/ {{0x3fb55451, 0xfb0012db} }, -/**/ {{0xbc395606, 0xf73aa59f} }, -/**/ {{0x3f50509f, 0xfc757100} }, -/**/ {{0x3bebc7da, 0xfee554d0} }, -/**/ {{0xbf9a9c99, 0x7d3424d0} }, -/**/ {{0x3f95d54b, 0xd5ac0217} }, -/**/ {{0xbf82450c, 0x564b3c49} }, -/**/ {{0xbf3091df, 0xe6d3e986} }, -/**/ {{0x3f6e7bc6, 0x3bef5a22} } }, -/**/ {{{0x3fefe000, 0x00000000} }, -/**/ {{0x3fe911f3, 0x5199833b} }, -/**/ {{0x3c63ae8a, 0x0edbf522} }, -/**/ {{0x3fe01007, 0xfffbfbfe} }, -/**/ {{0x3ba01007, 0xfffbfbfe} }, -/**/ {{0xbfd00fff, 0xefebf400} }, -/**/ {{0xbc401209, 0xfff9f97d} }, -/**/ {{0x3fb55514, 0xea5aaaf6} }, -/**/ {{0xbc529baa, 0xb5b7b240} }, -/**/ {{0x3f402827, 0xffc7abc4} }, -/**/ {{0x3b5ba3d6, 0xbfee6ab3} }, -/**/ {{0xbf9a1a59, 0x97d67093} }, -/**/ {{0x3f959554, 0x28080aaf} }, -/**/ {{0xbf824821, 0x8e892ce2} }, -/**/ {{0xbf204877, 0xfe70a2a6} }, -/**/ {{0x3f6d7447, 0x0e8ddd67} } }, -/**/ {{{0x3feff800, 0x00000000} }, -/**/ {{0x3fe91dfa, 0xd439826e} }, -/**/ {{0xbc786a19, 0x6df48d55} }, -/**/ {{0x3fe00400, 0x7ffffbff} }, -/**/ {{0xbbeffffe, 0xffbff800} }, -/**/ {{0xbfd003ff, 0xffbfebfd} }, -/**/ {{0xbb600480, 0x9ffff9fe} }, -/**/ {{0x3fb55551, 0x53aa5aab} }, -/**/ {{0xbc542a4a, 0x9baaab5b} }, -/**/ {{0x3f200a02, 0x7fffc7eb} }, -/**/ {{0xbb7dfffe, 0x4770e940} }, -/**/ {{0xbf99b9a5, 0x9997d8d0} }, -/**/ {{0x3f956555, 0x50a80a03} }, -/**/ {{0xbf824914, 0x86456493} }, -/**/ {{0xbf001207, 0x7ffe7329} }, -/**/ {{0x3f6cb1ef, 0x1c63fe2a} } }, - }; - -#else -#ifdef LITTLE_ENDI - - static const number - cij[241][7] = { /* x0,cij for (1/16,1) */ -/**/ {{{0X65E0244E, 0X3FB04006} }, -/**/ {{0X7B53DD20, 0X3FB03A73} }, -/**/ {{0XCF5CFB72, 0X3FEFDF1F} }, -/**/ {{0XCE2AE4C2, 0XBFB01EB3} }, -/**/ {{0XDD58A40D, 0XBFD4D29E} }, -/**/ {{0XD907A18A, 0X3FAFDA4A} }, -/**/ {{0X4DF65B18, 0X3FC814DF} } }, -/**/ {{{0XB9B88CD8, 0X3FB0FFFD} }, -/**/ {{0X63645300, 0X3FB0F99C} }, -/**/ {{0XA3DED30F, 0X3FEFDC08} }, -/**/ {{0X669C1AED, 0XBFB0D9DC} }, -/**/ {{0XF7138DE2, 0XBFD4C669} }, -/**/ {{0X29D085A7, 0X3FB0A12F} }, -/**/ {{0XCFD48D20, 0X3FC7F0EE} } }, -/**/ {{{0X5A73D4F1, 0X3FB1FFF1} }, -/**/ {{0X2BEE2040, 0X3FB1F85F} }, -/**/ {{0X42B56D31, 0X3FEFD7B3} }, -/**/ {{0XB69DEA40, 0XBFB1D2B7} }, -/**/ {{0X3922ECC9, 0XBFD4B552} }, -/**/ {{0X522B1A04, 0X3FB18F93} }, -/**/ {{0X5660F061, 0X3FC7BEAD} } }, -/**/ {{{0XB2524AA2, 0X3FB2FFFD} }, -/**/ {{0XE71790A0, 0X3FB2F716} }, -/**/ {{0X53B496A4, 0X3FEFD31F} }, -/**/ {{0X4AAB7374, 0XBFB2CAD8} }, -/**/ {{0X58DD2FB2, 0XBFD4A34B} }, -/**/ {{0XD0CECC18, 0X3FB27C0A} }, -/**/ {{0X5D2743D7, 0X3FC789D2} } }, -/**/ {{{0X0573F3AC, 0X3FB3FFFE} }, -/**/ {{0X1702F6A0, 0X3FB3F59D} }, -/**/ {{0XB071ACC2, 0X3FEFCE4D} }, -/**/ {{0X64DB3686, 0XBFB3C20F} }, -/**/ {{0XEB3BFE93, 0XBFD49059} }, -/**/ {{0XCAF74FED, 0X3FB36659} }, -/**/ {{0X1C011FB0, 0X3FC75269} } }, -/**/ {{{0X894384D6, 0X3FB4FFEF} }, -/**/ {{0X0CE204C0, 0X3FB4F3ED} }, -/**/ {{0XA8EA5A01, 0X3FEFC93E} }, -/**/ {{0X7B5457C9, 0XBFB4B84F} }, -/**/ {{0X7401F2F9, 0XBFD47C80} }, -/**/ {{0XB4F67209, 0X3FB44E64} }, -/**/ {{0X4C540B77, 0X3FC7187D} } }, -/**/ {{{0XDF406528, 0X3FB5FFF8} }, -/**/ {{0X3C73D820, 0X3FB5F22B} }, -/**/ {{0XB1F60F13, 0X3FEFC3F1} }, -/**/ {{0XCB7FA73B, 0XBFB5ADB2} }, -/**/ {{0X2B1EB555, 0XBFD467BE} }, -/**/ {{0X99EDC463, 0X3FB53435} }, -/**/ {{0X238F5059, 0X3FC6DC1B} } }, -/**/ {{{0X8C4F0D56, 0X3FB7000F} }, -/**/ {{0X495A2FA0, 0X3FB6F04B} }, -/**/ {{0X340DCE97, 0X3FEFBE67} }, -/**/ {{0X4D98E1AD, 0XBFB6A224} }, -/**/ {{0X14064DF1, 0XBFD45216} }, -/**/ {{0X2BA78A66, 0X3FB617AA} }, -/**/ {{0X50A3D7AC, 0X3FC69D4F} } }, -/**/ {{{0XBB4057CF, 0X3FB8000F} }, -/**/ {{0XBE2CD3A0, 0X3FB7EE27} }, -/**/ {{0X39EC9246, 0X3FEFB8A0} }, -/**/ {{0X31D9C773, 0XBFB79577} }, -/**/ {{0XB6DC7D72, 0XBFD43B8D} }, -/**/ {{0XD69547DF, 0X3FB6F88A} }, -/**/ {{0XF633CE8C, 0X3FC65C26} } }, -/**/ {{{0X39CF2B7F, 0X3FB8FFF2} }, -/**/ {{0X9F979E80, 0X3FB8EBB7} }, -/**/ {{0X435506E1, 0X3FEFB29D} }, -/**/ {{0X69B9CDB5, 0XBFB8879A} }, -/**/ {{0X85FEAFA9, 0XBFD42428} }, -/**/ {{0XB6191A0E, 0X3FB7D6BA} }, -/**/ {{0XA7CB8BB5, 0X3FC618AF} } }, -/**/ {{{0X6E2F0772, 0X3FB9FFF9} }, -/**/ {{0XD32A9480, 0X3FB9E93A} }, -/**/ {{0X04A3EC40, 0X3FEFAC5D} }, -/**/ {{0X53F6EA97, 0XBFB978C2} }, -/**/ {{0X089C36F6, 0XBFD40BE3} }, -/**/ {{0X885AEB77, 0X3FB8B25C} }, -/**/ {{0X63CADCE1, 0X3FC5D2F7} } }, -/**/ {{{0X6316B097, 0X3FBB0002} }, -/**/ {{0XCE24CC00, 0X3FBAE68C} }, -/**/ {{0X938C5C66, 0X3FEFA5E0} }, -/**/ {{0X76F14E4B, 0XBFBA68C3} }, -/**/ {{0X1696CD7C, 0XBFD3F2C3} }, -/**/ {{0X722A2CB4, 0X3FB98B3B} }, -/**/ {{0X9067AD62, 0X3FC58B0C} } }, -/**/ {{{0X604F58B1, 0X3FBC0008} }, -/**/ {{0X05650780, 0X3FBBE3A7} }, -/**/ {{0X5A7A2773, 0X3FEF9F28} }, -/**/ {{0X3D5AC0A4, 0XBFBB578F} }, -/**/ {{0XF767119F, 0XBFD3D8CB} }, -/**/ {{0XC7E31B88, 0X3FBA613D} }, -/**/ {{0XF5594565, 0X3FC540FD} } }, -/**/ {{{0X6CCA4EBA, 0X3FBD0002} }, -/**/ {{0XC1298A80, 0X3FBCE07E} }, -/**/ {{0XE8D36C4A, 0X3FEF9834} }, -/**/ {{0X5BCAC5FE, 0XBFBC4513} }, -/**/ {{0X8B5236F1, 0XBFD3BE01} }, -/**/ {{0X2E991970, 0X3FBB3447} }, -/**/ {{0XB8ADB373, 0X3FC4F4DA} } }, -/**/ {{{0XB2B47FCA, 0X3FBDFFF4} }, -/**/ {{0X4A051D80, 0X3FBDDD16} }, -/**/ {{0X78DCC895, 0X3FEF9106} }, -/**/ {{0XF0966844, 0XBFBD3149} }, -/**/ {{0X744F9A5F, 0XBFD3A266} }, -/**/ {{0XEDB7F27A, 0X3FBC0446} }, -/**/ {{0X583F9ECA, 0X3FC4A6B2} } }, -/**/ {{{0XA9A05BE0, 0X3FBF000A} }, -/**/ {{0XA3BDA540, 0X3FBED996} }, -/**/ {{0X1B8BA97F, 0X3FEF899C} }, -/**/ {{0X2287A677, 0XBFBE1C51} }, -/**/ {{0XEDC130BB, 0XBFD385F8} }, -/**/ {{0XF306FF50, 0X3FBCD14B} }, -/**/ {{0XA667A72B, 0X3FC45694} } }, -/**/ {{{0XBA8F63DE, 0X3FBFFFFA} }, -/**/ {{0X69FE4780, 0X3FBFD5B5} }, -/**/ {{0X4863DC7D, 0X3FEF81F8} }, -/**/ {{0XD1518706, 0XBFBF05DB} }, -/**/ {{0X4687A69C, 0XBFD368C4} }, -/**/ {{0X1B3868DA, 0X3FBD9B08} }, -/**/ {{0XC345ADFC, 0X3FC40491} } }, -/**/ {{{0X6ECCADA8, 0X3FC07FFA} }, -/**/ {{0X0A396400, 0X3FC068D0} }, -/**/ {{0XF1FCFC6B, 0X3FEF7A19} }, -/**/ {{0X861DF0DF, 0XBFBFEE0C} }, -/**/ {{0X5A586C0C, 0XBFD34AC6} }, -/**/ {{0X189D637A, 0X3FBE618F} }, -/**/ {{0X195779D4, 0X3FC3B0BA} } }, -/**/ {{{0X33432713, 0X3FC10003} }, -/**/ {{0XF203D1A0, 0X3FC0E6B0} }, -/**/ {{0XFE0EB463, 0X3FEF7200} }, -/**/ {{0XE15CB19A, 0XBFC06A72} }, -/**/ {{0XB8DB761E, 0XBFD32C00} }, -/**/ {{0XA11F5E3E, 0X3FBF24D8} }, -/**/ {{0X569E85DD, 0X3FC35B1E} } }, -/**/ {{{0XDA1C4811, 0X3FC17FFC} }, -/**/ {{0X29EBDA00, 0X3FC16462} }, -/**/ {{0X7D558737, 0X3FEF69AF} }, -/**/ {{0X0B33969B, 0XBFC0DD17} }, -/**/ {{0X33AC50D1, 0XBFD30C7D} }, -/**/ {{0X9BE43F0F, 0X3FBFE4AA} }, -/**/ {{0X692539CB, 0X3FC303CF} } }, -/**/ {{{0X3CCA418D, 0X3FC1FFFF} }, -/**/ {{0X3B978EA0, 0X3FC1E1FA} }, -/**/ {{0X45D421A9, 0X3FEF6124} }, -/**/ {{0XACAC8AA8, 0XBFC14F03} }, -/**/ {{0X62E675A3, 0XBFD2EC39} }, -/**/ {{0X2FA6B426, 0X3FC0508C} }, -/**/ {{0X780A6467, 0X3FC2AADE} } }, -/**/ {{{0XD9C78922, 0X3FC27FF7} }, -/**/ {{0X1B91E640, 0X3FC25F66} }, -/**/ {{0XF52E192C, 0X3FEF5860} }, -/**/ {{0XE5DE2394, 0XBFC1C023} }, -/**/ {{0X6BEE0ABD, 0XBFD2CB3D} }, -/**/ {{0X5E075C1A, 0X3FC0ACFB} }, -/**/ {{0XDFFE453A, 0X3FC2505C} } }, -/**/ {{{0XA1FC1AAA, 0X3FC2FFF7} }, -/**/ {{0X83257C40, 0X3FC2DCB5} }, -/**/ {{0XC719B6FB, 0X3FEF4F64} }, -/**/ {{0X61514083, 0XBFC23082} }, -/**/ {{0X7F7B72D5, 0XBFD2A988} }, -/**/ {{0X7C887402, 0X3FC107A7} }, -/**/ {{0X2C3CD6D1, 0X3FC1F45C} } }, -/**/ {{{0X9D78E15E, 0X3FC38005} }, -/**/ {{0X6AC98EE0, 0X3FC359EE} }, -/**/ {{0X944CEC16, 0X3FEF462F} }, -/**/ {{0XD85B87A9, 0XBFC2A020} }, -/**/ {{0X2E4AB369, 0XBFD2871C} }, -/**/ {{0XC31A65D9, 0X3FC1608D} }, -/**/ {{0X130BBE50, 0X3FC196EE} } }, -/**/ {{{0X9F431B1A, 0X3FC40004} }, -/**/ {{0X6BD65360, 0X3FC3D6F3} }, -/**/ {{0XDD99B68A, 0X3FEF3CC3} }, -/**/ {{0XB3DD00ED, 0XBFC30EE1} }, -/**/ {{0XF8482664, 0XBFD26403} }, -/**/ {{0XFE136626, 0X3FC1B792} }, -/**/ {{0X6EAC7440, 0X3FC13824} } }, -/**/ {{{0XE01D95A1, 0X3FC48004} }, -/**/ {{0X86F00CC0, 0X3FC453D3} }, -/**/ {{0XE3970539, 0X3FEF3320} }, -/**/ {{0X0A5279AA, 0XBFC37CCF} }, -/**/ {{0X3B151D5D, 0XBFD2403F} }, -/**/ {{0XE331C9E6, 0X3FC20CBB} }, -/**/ {{0X39E3F097, 0X3FC0D811} } }, -/**/ {{{0XAA9382DD, 0X3FC4FFF7} }, -/**/ {{0X8C590A80, 0X3FC4D07F} }, -/**/ {{0X34DF28E0, 0X3FEF2948} }, -/**/ {{0X5B43915C, 0XBFC3E9D8} }, -/**/ {{0XEB8845A2, 0XBFD21BD5} }, -/**/ {{0XAC6AC8AD, 0X3FC25FF8} }, -/**/ {{0X88ED96CA, 0X3FC076C6} } }, -/**/ {{{0X352408BE, 0X3FC58006} }, -/**/ {{0XC39A73E0, 0X3FC54D1E} }, -/**/ {{0X09AE009C, 0X3FEF1F37} }, -/**/ {{0XB9BE8550, 0XBFC4561C} }, -/**/ {{0X0053F52E, 0XBFD1F6C0} }, -/**/ {{0XEF783BE9, 0X3FC2B15D} }, -/**/ {{0X8615239B, 0X3FC01456} } }, -/**/ {{{0X2B193F81, 0X3FC5FFFF} }, -/**/ {{0X4F73E000, 0X3FC5C980} }, -/**/ {{0XAE110E29, 0X3FEF14F1} }, -/**/ {{0X9098B3D2, 0XBFC4C16E} }, -/**/ {{0X8F058241, 0XBFD1D10F} }, -/**/ {{0XA14FA897, 0X3FC300C6} }, -/**/ {{0XD56607C0, 0X3FBF61A6} } }, -/**/ {{{0X4460E6E1, 0X3FC68008} }, -/**/ {{0X04A55E20, 0X3FC645C8} }, -/**/ {{0X8FA36EC5, 0X3FEF0A75} }, -/**/ {{0XD62FA883, 0XBFC52BE9} }, -/**/ {{0X69A74048, 0XBFD1AABD} }, -/**/ {{0X1679EB02, 0X3FC34E45} }, -/**/ {{0XF7C14C3D, 0X3FBE989E} } }, -/**/ {{{0X9E99A846, 0X3FC6FFFB} }, -/**/ {{0X4B35FD40, 0X3FC6C1D0} }, -/**/ {{0X3EF8EF95, 0X3FEEFFC6} }, -/**/ {{0X76A2FE63, 0XBFC5956B} }, -/**/ {{0XDDC78DDF, 0XBFD183D8} }, -/**/ {{0XAC606D66, 0X3FC399BD} }, -/**/ {{0X070D286A, 0X3FBDCDBA} } }, -/**/ {{{0X0FFCD490, 0X3FC78008} }, -/**/ {{0XB55758E0, 0X3FC73DC5} }, -/**/ {{0X457E2065, 0X3FEEF4E0} }, -/**/ {{0X7D6FF9BC, 0XBFC5FE16} }, -/**/ {{0X9FADD384, 0XBFD15C57} }, -/**/ {{0X73E52D32, 0X3FC3E347} }, -/**/ {{0X9A65AE4B, 0X3FBD011C} } }, -/**/ {{{0X148E79C1, 0X3FC80006} }, -/**/ {{0X2B7F8CA0, 0X3FC7B981} }, -/**/ {{0X701687ED, 0X3FEEE9C7} }, -/**/ {{0X0E1EF36D, 0XBFC665C7} }, -/**/ {{0XCCBCBDAB, 0XBFD13449} }, -/**/ {{0X5C71B3E8, 0X3FC42AC7} }, -/**/ {{0X3E81980E, 0X3FBC32EB} } }, -/**/ {{{0X0F487C17, 0X3FC88006} }, -/**/ {{0XBC0E3640, 0X3FC83511} }, -/**/ {{0XD2D55329, 0X3FEEDE7A} }, -/**/ {{0X37E644BA, 0XBFC6CC87} }, -/**/ {{0X60597557, 0XBFD10BAE} }, -/**/ {{0X13E26FBE, 0X3FC47043} }, -/**/ {{0X6FB18BF4, 0X3FBB634A} } }, -/**/ {{{0XD3518D76, 0X3FC90004} }, -/**/ {{0X8874C100, 0X3FC8B073} }, -/**/ {{0X2ED6673B, 0X3FEED2FB} }, -/**/ {{0X2A6EBAC3, 0XBFC73251} }, -/**/ {{0X6924232F, 0XBFD0E28A} }, -/**/ {{0X73BCC03F, 0X3FC4B3B5} }, -/**/ {{0X8C72507F, 0X3FBA925E} } }, -/**/ {{{0XD2F20D5C, 0X3FC97FFF} }, -/**/ {{0X51AF5920, 0X3FC92BA3} }, -/**/ {{0X3D32449F, 0X3FEEC749} }, -/**/ {{0XC308255F, 0XBFC7971F} }, -/**/ {{0XD572D28F, 0XBFD0B8E2} }, -/**/ {{0X337448FE, 0X3FC4F51A} }, -/**/ {{0XCFCBC620, 0X3FB9C04B} } }, -/**/ {{{0XBF80F060, 0X3FCA0005} }, -/**/ {{0X6E9E8960, 0X3FC9A6AE} }, -/**/ {{0X1EF200E7, 0X3FEEBB64} }, -/**/ {{0X6E96E5C1, 0XBFC7FAFB} }, -/**/ {{0XEC6AD647, 0XBFD08EB6} }, -/**/ {{0XF53D0BA6, 0X3FC53475} }, -/**/ {{0X4433C20E, 0X3FB8ED36} } }, -/**/ {{{0XDEECA8E4, 0X3FCA7FF7} }, -/**/ {{0X948578E0, 0X3FCA2176} }, -/**/ {{0X328FF98B, 0X3FEEAF4F} }, -/**/ {{0X58149B1C, 0XBFC85DC9} }, -/**/ {{0XF933A1AB, 0XBFD06414} }, -/**/ {{0X60C45A8F, 0X3FC571B7} }, -/**/ {{0XBE58C308, 0X3FB81941} } }, -/**/ {{{0X7DEFD553, 0X3FCAFFFF} }, -/**/ {{0X9EBA6B80, 0X3FCA9C22} }, -/**/ {{0X10A85E10, 0X3FEEA307} }, -/**/ {{0X7F9DEA61, 0XBFC8BFA6} }, -/**/ {{0X5A474E8F, 0XBFD038F3} }, -/**/ {{0X30C225D2, 0X3FC5ACF0} }, -/**/ {{0XD062812F, 0X3FB74491} } }, -/**/ {{{0X669932A5, 0X3FCB7FFE} }, -/**/ {{0XCFF6DFE0, 0X3FCB1694} }, -/**/ {{0X1921D387, 0X3FEE968F} }, -/**/ {{0XE075D95A, 0XBFC92078} }, -/**/ {{0X526793C4, 0XBFD00D60} }, -/**/ {{0X73842A52, 0X3FC5E610} }, -/**/ {{0XC5331D5A, 0X3FB66F49} } }, -/**/ {{{0XB44759F3, 0X3FCBFFF9} }, -/**/ {{0X5073A2A0, 0X3FCB90D1} }, -/**/ {{0X56598313, 0X3FEE89E7} }, -/**/ {{0XCFB9203D, 0XBFC98041} }, -/**/ {{0XBED91B37, 0XBFCFC2BC} }, -/**/ {{0X6D4FC2FC, 0X3FC61D19} }, -/**/ {{0X9411537E, 0X3FB5998C} } }, -/**/ {{{0X5568F3EC, 0X3FCC8007} }, -/**/ {{0X4A31DBE0, 0X3FCC0AEC} }, -/**/ {{0X18F270A8, 0X3FEE7D0E} }, -/**/ {{0XF522B132, 0XBFC9DF0E} }, -/**/ {{0X2179C242, 0XBFCF69D4} }, -/**/ {{0X36646FCD, 0X3FC65213} }, -/**/ {{0XDC699095, 0X3FB4C37C} } }, -/**/ {{{0X601A799F, 0X3FCCFFF8} }, -/**/ {{0X49DB66A0, 0X3FCC84B8} }, -/**/ {{0XA0EE780E, 0X3FEE7008} }, -/**/ {{0X3A403934, 0XBFCA3CBB} }, -/**/ {{0XD490BE32, 0XBFCF102F} }, -/**/ {{0X037D4137, 0X3FC684EA} }, -/**/ {{0XD9EC855A, 0X3FB3ED3C} } }, -/**/ {{{0X7BBF1497, 0X3FCD7FF9} }, -/**/ {{0X1E008CE0, 0X3FCCFE5F} }, -/**/ {{0XF04615C7, 0X3FEE62D2} }, -/**/ {{0X15AADE2C, 0XBFCA9965} }, -/**/ {{0X0B44B682, 0XBFCEB5B9} }, -/**/ {{0X92EC8D57, 0X3FC6B5AF} }, -/**/ {{0X60D831AE, 0X3FB316EE} } }, -/**/ {{{0X40209B20, 0X3FCE0008} }, -/**/ {{0XB145A760, 0X3FCD77DD} }, -/**/ {{0XBE1DFDF1, 0X3FEE556D} }, -/**/ {{0X2186AF0F, 0XBFCAF508} }, -/**/ {{0X9420489D, 0XBFCE5A79} }, -/**/ {{0X454FEB2C, 0X3FC6E462} }, -/**/ {{0XD2945A8C, 0X3FB240B2} } }, -/**/ {{{0XC0AE943C, 0X3FCE8000} }, -/**/ {{0X3CA10100, 0X3FCDF111} }, -/**/ {{0X59E7308B, 0X3FEE47DD} }, -/**/ {{0X9439F69F, 0XBFCB4F88} }, -/**/ {{0X798DE600, 0XBFCDFE93} }, -/**/ {{0X8F267389, 0X3FC710F5} }, -/**/ {{0X1A8A373E, 0X3FB16AAB} } }, -/**/ {{{0X6D532803, 0X3FCF0003} }, -/**/ {{0XCB4E5C80, 0X3FCE6A17} }, -/**/ {{0XE3D0F6C2, 0X3FEE3A1E} }, -/**/ {{0X6E31F768, 0XBFCBA8FB} }, -/**/ {{0XE6A382E3, 0XBFCDA1F7} }, -/**/ {{0XB36AC4C0, 0X3FC73B75} }, -/**/ {{0XA3470B0A, 0X3FB094F7} } }, -/**/ {{{0X48B8AFC3, 0X3FCF7FFA} }, -/**/ {{0XE1654560, 0X3FCEE2DB} }, -/**/ {{0X43F2AB37, 0X3FEE2C35} }, -/**/ {{0X598207D6, 0XBFCC014F} }, -/**/ {{0X1EFE809A, 0XBFCD44BF} }, -/**/ {{0X698A561E, 0X3FC763DC} }, -/**/ {{0XA7CF78A3, 0X3FAF7F70} } }, -/**/ {{{0XEB334FAE, 0X3FD00002} }, -/**/ {{0X77AB25E0, 0X3FCF5B7B} }, -/**/ {{0X78A5C127, 0X3FEE1E1D} }, -/**/ {{0XC555D571, 0XBFCC5898} }, -/**/ {{0XB706CF86, 0XBFCCE6D9} }, -/**/ {{0X0823F643, 0X3FC78A35} }, -/**/ {{0X0B9118E8, 0X3FADD619} } }, -/**/ {{{0XA8AF86FE, 0X3FD03FFC} }, -/**/ {{0XB53A0C00, 0X3FCFD3CB} }, -/**/ {{0XFDCBAC8B, 0X3FEE0FDC} }, -/**/ {{0X6C3246FF, 0XBFCCAEB7} }, -/**/ {{0XD6E19AD3, 0XBFCC8870} }, -/**/ {{0XD2C48E91, 0X3FC7AE73} }, -/**/ {{0X0510FDB0, 0X3FAC2E26} } }, -/**/ {{{0XD38984B7, 0X3FD07FFC} }, -/**/ {{0X5732D4A0, 0X3FD025F7} }, -/**/ {{0X49C17AB3, 0X3FEE0170} }, -/**/ {{0X9AFE5028, 0XBFCD03C2} }, -/**/ {{0X9A2C1833, 0XBFCC2971} }, -/**/ {{0X69041DCF, 0X3FC7D0A5} }, -/**/ {{0XF497C653, 0X3FAA87D3} } }, -/**/ {{{0X1ED2ADD7, 0X3FD0BFFF} }, -/**/ {{0XCD7F7420, 0X3FD061ED} }, -/**/ {{0XDA96B750, 0X3FEDF2D8} }, -/**/ {{0XC777881E, 0XBFCD57B2} }, -/**/ {{0X8692B503, 0XBFCBC9EA} }, -/**/ {{0X42ABF9E7, 0X3FC7F0C9} }, -/**/ {{0X04B42BB4, 0X3FA8E35E} } }, -/**/ {{{0XA8515CDA, 0X3FD10003} }, -/**/ {{0X027416A0, 0X3FD09DC9} }, -/**/ {{0X34899950, 0X3FEDE417} }, -/**/ {{0X7983EDE4, 0XBFCDAA86} }, -/**/ {{0X999706B6, 0XBFCB69E3} }, -/**/ {{0XB0F126DB, 0X3FC80EE1} }, -/**/ {{0X17EE9BAB, 0X3FA740FE} } }, -/**/ {{{0XF3AF9CC5, 0X3FD14001} }, -/**/ {{0XB6E1ABA0, 0X3FD0D980} }, -/**/ {{0XE0412681, 0X3FEDD52D} }, -/**/ {{0X6863B28B, 0XBFCDFC31} }, -/**/ {{0XC55B8D5A, 0XBFCB0971} }, -/**/ {{0XA6731AAC, 0X3FC82AED} }, -/**/ {{0XC73BD8F0, 0X3FA5A0EC} } }, -/**/ {{{0XB6122509, 0X3FD18003} }, -/**/ {{0XAA1E67A0, 0X3FD1151D} }, -/**/ {{0X2E0C1F32, 0X3FEDC61B} }, -/**/ {{0XB9BA6B7E, 0XBFCE4CBE} }, -/**/ {{0X90C2431C, 0XBFCAA88E} }, -/**/ {{0X8BCBDA5E, 0X3FC844F4} }, -/**/ {{0X50E585FF, 0X3FA40361} } }, -/**/ {{{0XA6A2A153, 0X3FD1BFFF} }, -/**/ {{0XE7A18DC0, 0X3FD15096} }, -/**/ {{0XE1218F3F, 0X3FEDB6E1} }, -/**/ {{0X9621D6A2, 0XBFCE9C21} }, -/**/ {{0X22627B04, 0XBFCA4750} }, -/**/ {{0XFF8B908E, 0X3FC85CF5} }, -/**/ {{0X9833C0D6, 0X3FA26891} } }, -/**/ {{{0X2D345AAF, 0X3FD1FFFD} }, -/**/ {{0X053BF760, 0X3FD18BF3} }, -/**/ {{0XCC3ACB29, 0X3FEDA780} }, -/**/ {{0X2AA756AE, 0XBFCEEA62} }, -/**/ {{0X47ED9793, 0XBFC9E5B3} }, -/**/ {{0X87AB542A, 0X3FC872F8} }, -/**/ {{0X158E9E9A, 0X3FA0D0B2} } }, -/**/ {{{0XF14CF05A, 0X3FD23FFC} }, -/**/ {{0X4D568460, 0X3FD1C732} }, -/**/ {{0X55F32D3D, 0X3FED97F8} }, -/**/ {{0X21D457C8, 0XBFCF3780} }, -/**/ {{0XF065B845, 0XBFC983BE} }, -/**/ {{0XFBA70CD8, 0X3FC886FF} }, -/**/ {{0XAEB85CCC, 0X3F9E77EB} } }, -/**/ {{{0X0BAE6FC9, 0X3FD27FFE} }, -/**/ {{0X9A27C160, 0X3FD20253} }, -/**/ {{0X4619176E, 0X3FED8849} }, -/**/ {{0X5C0AC9EC, 0XBFCF8379} }, -/**/ {{0X5E645195, 0XBFC9217C} }, -/**/ {{0XF4264515, 0X3FC8990F} }, -/**/ {{0XE6B92E65, 0X3F9B551C} } }, -/**/ {{{0XA297A7DE, 0X3FD2C001} }, -/**/ {{0XACB927C0, 0X3FD23D57} }, -/**/ {{0XE4958FB6, 0X3FED7873} }, -/**/ {{0X43572249, 0XBFCFCE4E} }, -/**/ {{0X9F3560F3, 0XBFC8BEF1} }, -/**/ {{0XDF7F0E5B, 0X3FC8A92C} }, -/**/ {{0X116F3B19, 0X3F983958} } }, -/**/ {{{0X7267616A, 0X3FD2FFFE} }, -/**/ {{0XB2F378C0, 0X3FD27835} }, -/**/ {{0X13906586, 0X3FED687B} }, -/**/ {{0XAFDA1A0F, 0XBFD00BF9} }, -/**/ {{0XC197AD7D, 0XBFC85C34} }, -/**/ {{0X1E99F0A7, 0X3FC8B759} }, -/**/ {{0X6525C365, 0X3F9524FA} } }, -/**/ {{{0X48153B20, 0X3FD33FFE} }, -/**/ {{0X6A2FDCC0, 0X3FD2B2F6} }, -/**/ {{0XF827FBE4, 0X3FED585C} }, -/**/ {{0XB45A6918, 0XBFD03039} }, -/**/ {{0X5DFC3F72, 0XBFC7F93E} }, -/**/ {{0XC5210022, 0X3FC8C39B} }, -/**/ {{0X168FB62E, 0X3F92185E} } }, -/**/ {{{0X8122579A, 0X3FD38003} }, -/**/ {{0XAF6EC1E0, 0X3FD2ED9B} }, -/**/ {{0X872F20D3, 0X3FED4819} }, -/**/ {{0X1F4C1031, 0XBFD053E8} }, -/**/ {{0X621FFD79, 0XBFC79612} }, -/**/ {{0XDB9D9DFC, 0X3FC8CDF9} }, -/**/ {{0X80C6852F, 0X3F8E27B4} } }, -/**/ {{{0X3EF39141, 0X3FD3C003} }, -/**/ {{0X4668C700, 0X3FD3281B} }, -/**/ {{0X18590D1A, 0X3FED37B4} }, -/**/ {{0XA3EF2560, 0XBFD076FE} }, -/**/ {{0X3033287A, 0XBFC732C9} }, -/**/ {{0XCA2E5458, 0X3FC8D676} }, -/**/ {{0XD80944B1, 0X3F882F85} } }, -/**/ {{{0X63FA0E31, 0X3FD40001} }, -/**/ {{0X7B565000, 0X3FD36278} }, -/**/ {{0X47A813DA, 0X3FED272C} }, -/**/ {{0X493B9D88, 0XBFD0997F} }, -/**/ {{0X3DA9FE3C, 0XBFC6CF64} }, -/**/ {{0XC1CD3331, 0X3FC8DD18} }, -/**/ {{0XF70F6E07, 0X3F8248D1} } }, -/**/ {{{0X74071092, 0X3FD44003} }, -/**/ {{0X0F0A4000, 0X3FD39CB8} }, -/**/ {{0X3BA47A6B, 0X3FED1681} }, -/**/ {{0XD8788947, 0XBFD0BB6C} }, -/**/ {{0X589596A6, 0XBFC66BE2} }, -/**/ {{0XC9B3EC1E, 0X3FC8E1E5} }, -/**/ {{0XD20FAB86, 0X3F78E868} } }, -/**/ {{{0XC880F200, 0X3FD48000} }, -/**/ {{0XDEFFB460, 0X3FD3D6D1} }, -/**/ {{0XCADC576C, 0X3FED05B5} }, -/**/ {{0XA1D352C2, 0XBFD0DCC2} }, -/**/ {{0X3D7D2574, 0XBFC60858} }, -/**/ {{0X03208BC0, 0X3FC8E4E3} }, -/**/ {{0X6379E732, 0X3F6AC909} } }, -/**/ {{{0X4D97D2CB, 0X3FD4C000} }, -/**/ {{0XF3A2E220, 0X3FD410CB} }, -/**/ {{0XBB7ED511, 0X3FECF4C8} }, -/**/ {{0X37766A49, 0XBFD0FD84} }, -/**/ {{0X5AABC13C, 0XBFC5A4C2} }, -/**/ {{0XC80DAC4B, 0X3FC8E616} }, -/**/ {{0XB04695C2, 0X3F4038AA} } }, -/**/ {{{0X9397539F, 0X3FD4FFFD} }, -/**/ {{0X06A7DEC0, 0X3FD44AA2} }, -/**/ {{0XCF479DDE, 0X3FECE3BB} }, -/**/ {{0X4D122984, 0XBFD11DAF} }, -/**/ {{0XB1024DF0, 0XBFC5412E} }, -/**/ {{0X1B2C560D, 0X3FC8E587} }, -/**/ {{0X951C088D, 0XBF625DA8} } }, -/**/ {{{0XF304715F, 0X3FD53FFF} }, -/**/ {{0X791F3900, 0X3FD4845A} }, -/**/ {{0XA45E0FD8, 0X3FECD28D} }, -/**/ {{0X8D61F221, 0XBFD13D47} }, -/**/ {{0XD3E9BB99, 0XBFC4DD98} }, -/**/ {{0X0F181507, 0X3FC8E33A} }, -/**/ {{0XD08BD25C, 0XBF743C33} } }, -/**/ {{{0XE88EA386, 0X3FD58002} }, -/**/ {{0XF575D6C0, 0X3FD4BDF0} }, -/**/ {{0X02035609, 0X3FECC140} }, -/**/ {{0XB808071E, 0XBFD15C4A} }, -/**/ {{0XB2945FCF, 0XBFC47A0E} }, -/**/ {{0XFC056447, 0X3FC8DF35} }, -/**/ {{0XB00A45CD, 0XBF7F2011} } }, -/**/ {{{0X70F4D590, 0X3FD5BFFD} }, -/**/ {{0X284D7AE0, 0X3FD4F75D} }, -/**/ {{0XF2DE98B6, 0X3FECAFD5} }, -/**/ {{0XA2B42F42, 0XBFD17AB4} }, -/**/ {{0X1C285A92, 0XBFC416A5} }, -/**/ {{0X511D6C5A, 0X3FC8D982} }, -/**/ {{0X77008605, 0XBF84ECC1} } }, -/**/ {{{0XB70D6E53, 0X3FD5FFFD} }, -/**/ {{0X8E2FF500, 0X3FD530AB} }, -/**/ {{0X32D2429D, 0X3FEC9E4C} }, -/**/ {{0X35190681, 0XBFD1988C} }, -/**/ {{0XBF748319, 0XBFC3B34C} }, -/**/ {{0X98D3A613, 0X3FC8D224} }, -/**/ {{0XAA295F9F, 0XBF8A33D4} } }, -/**/ {{{0X5C7399E2, 0X3FD63FFC} }, -/**/ {{0X4F022E80, 0X3FD569D5} }, -/**/ {{0X58DD180F, 0X3FEC8CA5} }, -/**/ {{0X1D701DE4, 0XBFD1B5CE} }, -/**/ {{0XA7806A5A, 0XBFC35017} }, -/**/ {{0X56C01CF9, 0X3FC8C924} }, -/**/ {{0X942059E1, 0XBF8F64D9} } }, -/**/ {{{0X9A1AC7D2, 0X3FD67FFD} }, -/**/ {{0XF50031E0, 0X3FD5A2DD} }, -/**/ {{0XCEFF6DEB, 0X3FEC7AE0} }, -/**/ {{0X7C8C245B, 0XBFD1D27C} }, -/**/ {{0XC6AA933F, 0XBFC2ED05} }, -/**/ {{0XDDC5CF1F, 0X3FC8BE87} }, -/**/ {{0XD594386F, 0XBF923FB6} } }, -/**/ {{{0X6F7B9353, 0X3FD6BFFD} }, -/**/ {{0XB4E066C0, 0X3FD5DBC1} }, -/**/ {{0X456B591A, 0X3FEC6900} }, -/**/ {{0XC2D6D0AA, 0XBFD1EE95} }, -/**/ {{0XB11086F7, 0XBFC28A23} }, -/**/ {{0XDDE22D5A, 0X3FC8B256} }, -/**/ {{0X489D85A4, 0XBF94C19A} } }, -/**/ {{{0XF02A83E4, 0X3FD6FFFB} }, -/**/ {{0X6A237DC0, 0X3FD61480} }, -/**/ {{0X4CC81773, 0X3FEC5704} }, -/**/ {{0X4B9029CA, 0XBFD20A1A} }, -/**/ {{0X89F5FB1C, 0XBFC22777} }, -/**/ {{0X9B09E911, 0X3FC8A498} }, -/**/ {{0X130D419A, 0XBF9737EC} } }, -/**/ {{{0X128C213A, 0X3FD73FFE} }, -/**/ {{0X42499480, 0X3FD64D1E} }, -/**/ {{0X129C0D30, 0X3FEC44EC} }, -/**/ {{0X83787259, 0XBFD2250C} }, -/**/ {{0XD55BE4FC, 0XBFC1C4FF} }, -/**/ {{0X36B2D603, 0X3FC89553} }, -/**/ {{0X2E43DF46, 0XBF99A284} } }, -/**/ {{{0XEA0CDC7A, 0X3FD77FFB} }, -/**/ {{0X05B0E220, 0X3FD68594} }, -/**/ {{0X687132C0, 0X3FEC32BA} }, -/**/ {{0X7273497E, 0XBFD23F69} }, -/**/ {{0XCD39B037, 0XBFC162CE} }, -/**/ {{0XFA930AAF, 0X3FC8848F} }, -/**/ {{0XA4554412, 0XBF9C013D} } }, -/**/ {{{0XF18EDAB8, 0X3FD7C003} }, -/**/ {{0X4127BEE0, 0X3FD6BDEE} }, -/**/ {{0XC01607BD, 0X3FEC206B} }, -/**/ {{0X5FEE2F42, 0XBFD25937} }, -/**/ {{0X307761E1, 0XBFC100D4} }, -/**/ {{0X5DFEC556, 0X3FC87252} }, -/**/ {{0X7958F973, 0XBF9E53F6} } }, -/**/ {{{0X41F35C4C, 0X3FD7FFFD} }, -/**/ {{0XDA6607A0, 0X3FD6F616} }, -/**/ {{0XCDDC8437, 0X3FEC0E07} }, -/**/ {{0XBFB4DAEA, 0XBFD2726C} }, -/**/ {{0XE0DB1472, 0XBFC09F3B} }, -/**/ {{0X2A95AA1B, 0X3FC85EA9} }, -/**/ {{0XD872CFA2, 0XBFA04D47} } }, -/**/ {{{0X26C7C46B, 0X3FD84003} }, -/**/ {{0X96B8BE00, 0X3FD72E25} }, -/**/ {{0X4CDEDF38, 0X3FEBFB87} }, -/**/ {{0XD09404F3, 0XBFD28B14} }, -/**/ {{0XE7FB61F2, 0XBFC03DE1} }, -/**/ {{0XACB33BE9, 0X3FC84993} }, -/**/ {{0X9B1DE607, 0XBFA16A76} } }, -/**/ {{{0XCA90B179, 0X3FD88003} }, -/**/ {{0XA104A220, 0X3FD7660A} }, -/**/ {{0XF236E2F6, 0X3FEBE8EF} }, -/**/ {{0X19A94DDF, 0XBFD2A329} }, -/**/ {{0X0856A081, 0XBFBFB9CE} }, -/**/ {{0X33F70280, 0X3FC8331F} }, -/**/ {{0XF01308CC, 0XBFA2817A} } }, -/**/ {{{0XE9692FD5, 0X3FD8C003} }, -/**/ {{0XF0B2CB00, 0X3FD79DC9} }, -/**/ {{0XF2966495, 0X3FEBD640} }, -/**/ {{0XFD6EC2EA, 0XBFD2BAAB} }, -/**/ {{0XE08E9C2D, 0XBFBEF892} }, -/**/ {{0X031873E3, 0X3FC81B52} }, -/**/ {{0XAC12113D, 0XBFA39249} } }, -/**/ {{{0X35BE5C5F, 0X3FD8FFFE} }, -/**/ {{0XBDCCDFC0, 0X3FD7D55E} }, -/**/ {{0X6EABCF77, 0X3FEBC37C} }, -/**/ {{0X2D74F445, 0XBFD2D19C} }, -/**/ {{0XE63F2CDB, 0XBFBE382C} }, -/**/ {{0X0E6FE2AE, 0X3FC80236} }, -/**/ {{0X0E66AB41, 0XBFA49CD9} } }, -/**/ {{{0XAA8974CD, 0X3FD94002} }, -/**/ {{0XB8AFD880, 0X3FD80CD6} }, -/**/ {{0X4468CCBA, 0X3FEBB09E} }, -/**/ {{0XEC84E686, 0XBFD2E7FF} }, -/**/ {{0X88C659E8, 0XBFBD7876} }, -/**/ {{0XC2F15460, 0X3FC7E7CC} }, -/**/ {{0XB410D3ED, 0XBFA5A120} } }, -/**/ {{{0XE08EFDEA, 0X3FD98002} }, -/**/ {{0X34856920, 0X3FD84425} }, -/**/ {{0X3F290478, 0X3FEB9DAB} }, -/**/ {{0XBB81EDEF, 0XBFD2FDD2} }, -/**/ {{0X31E68398, 0XBFBCB9A5} }, -/**/ {{0XC2DBB11B, 0X3FC7CC23} }, -/**/ {{0X98467E78, 0XBFA69F19} } }, -/**/ {{{0X75294B6B, 0X3FD9C002} }, -/**/ {{0X299F6200, 0X3FD87B4D} }, -/**/ {{0XDE96CF1F, 0X3FEB8AA2} }, -/**/ {{0X8C4D45D2, 0XBFD31316} }, -/**/ {{0XEDCE4DBA, 0XBFBBFBB7} }, -/**/ {{0X8907FEC9, 0X3FC7AF41} }, -/**/ {{0X07419F55, 0XBFA796BE} } }, -/**/ {{{0XF3E490EC, 0X3FDA0002} }, -/**/ {{0XC21A4500, 0X3FD8B24F} }, -/**/ {{0X3B5EF7DD, 0X3FEB7785} }, -/**/ {{0X8EAE70CD, 0XBFD327CC} }, -/**/ {{0XD49E40DA, 0XBFBB3EB3} }, -/**/ {{0X4D93F7EA, 0X3FC7912D} }, -/**/ {{0X9E21606A, 0XBFA88809} } }, -/**/ {{{0X458461B6, 0X3FDA3FFF} }, -/**/ {{0X7754D2C0, 0X3FD8E928} }, -/**/ {{0X6A0DAF0E, 0X3FEB6454} }, -/**/ {{0XDC2A9A3F, 0XBFD33BF3} }, -/**/ {{0X4917D003, 0XBFBA82B1} }, -/**/ {{0X7C7566CF, 0X3FC771F1} }, -/**/ {{0X3D700DD8, 0XBFA972F9} } }, -/**/ {{{0X87E12AAE, 0X3FDA8002} }, -/**/ {{0XA5DFD000, 0X3FD91FE0} }, -/**/ {{0XA0D82E05, 0X3FEB510D} }, -/**/ {{0XA76AD312, 0XBFD34F90} }, -/**/ {{0XDEEC35AD, 0XBFB9C798} }, -/**/ {{0X8A0EF43E, 0X3FC75190} }, -/**/ {{0X0872EFC8, 0XBFAA578B} } }, -/**/ {{{0X49A86C84, 0X3FDAC001} }, -/**/ {{0X5C4516E0, 0X3FD9566E} }, -/**/ {{0XDD03F6B6, 0X3FEB3DB4} }, -/**/ {{0X291C1F82, 0XBFD362A0} }, -/**/ {{0X03F6DF60, 0XBFB90D95} }, -/**/ {{0X25091E92, 0X3FC73018} }, -/**/ {{0X577A022B, 0XBFAB35BE} } }, -/**/ {{{0X2F4CC2E1, 0X3FDAFFFF} }, -/**/ {{0X94226540, 0X3FD98CD4} }, -/**/ {{0X9297200A, 0X3FEB2A49} }, -/**/ {{0X5153FD01, 0XBFD37524} }, -/**/ {{0XAE3DE27E, 0XBFB854A3} }, -/**/ {{0X7EB3F331, 0X3FC70D8E} }, -/**/ {{0XB6AD570E, 0XBFAC0D93} } }, -/**/ {{{0XC2F3711E, 0X3FDB4000} }, -/**/ {{0X01CDC4C0, 0X3FD9C317} }, -/**/ {{0XEA63781B, 0X3FEB16CA} }, -/**/ {{0X3665B649, 0XBFD3871F} }, -/**/ {{0X3F70FBC6, 0XBFB79CC0} }, -/**/ {{0X061DFC2E, 0X3FC6E9F9} }, -/**/ {{0XD837F9C3, 0XBFACDF0C} } }, -/**/ {{{0XA777E180, 0X3FDB8000} }, -/**/ {{0XF3748F20, 0X3FD9F930} }, -/**/ {{0X0FB0162A, 0X3FEB033B} }, -/**/ {{0X25978CAB, 0XBFD39890} }, -/**/ {{0X5C765AAB, 0XBFB6E602} }, -/**/ {{0X9C16D678, 0X3FC6C562} }, -/**/ {{0X92A16EBF, 0XBFADAA2C} } }, -/**/ {{{0X087E14ED, 0X3FDBBFFD} }, -/**/ {{0XBF0DDB00, 0X3FDA2F20} }, -/**/ {{0X1CCE6E94, 0X3FEAEF9B} }, -/**/ {{0X8B73E3C3, 0XBFD3A977} }, -/**/ {{0X09EFD1CC, 0XBFB63077} }, -/**/ {{0X58408D3A, 0X3FC69FD4} }, -/**/ {{0XD2E48013, 0XBFAE6EF6} } }, -/**/ {{{0XF0086783, 0X3FDC0000} }, -/**/ {{0X8D448080, 0X3FDA64EF} }, -/**/ {{0X35990B5A, 0X3FEADBE8} }, -/**/ {{0X27241B86, 0XBFD3B9D9} }, -/**/ {{0XC20E4001, 0XBFB57C06} }, -/**/ {{0X90E6C8AB, 0X3FC6794F} }, -/**/ {{0X9A630A27, 0XBFAF2D70} } }, -/**/ {{{0X863E58F8, 0X3FDC4001} }, -/**/ {{0X1C3A1BA0, 0X3FDA9A94} }, -/**/ {{0X35ED7DD2, 0X3FEAC826} }, -/**/ {{0X0C075B50, 0XBFD3C9B3} }, -/**/ {{0XA429793C, 0XBFB4C8D7} }, -/**/ {{0X95903C22, 0X3FC651E2} }, -/**/ {{0XF0F8B649, 0XBFAFE59F} } }, -/**/ {{{0X6C62C3BF, 0X3FDC7FFC} }, -/**/ {{0X580A5840, 0X3FDAD00C} }, -/**/ {{0X62D1D808, 0X3FEAB456} }, -/**/ {{0XACBB06EC, 0XBFD3D905} }, -/**/ {{0X421E42DC, 0XBFB416F7} }, -/**/ {{0XE5608EFD, 0X3FC62996} }, -/**/ {{0XF14B649A, 0XBFB04BC5} } }, -/**/ {{{0X34B2A209, 0X3FDCC002} }, -/**/ {{0XF68F3B40, 0X3FDB0565} }, -/**/ {{0X1E3DC946, 0X3FEAA074} }, -/**/ {{0XE2DB674E, 0XBFD3E7D5} }, -/**/ {{0XA4833FFE, 0XBFB3663E} }, -/**/ {{0XC4F0392B, 0X3FC60069} }, -/**/ {{0X38B10201, 0XBFB0A19E} } }, -/**/ {{{0XAAC5F9F9, 0X3FDCFFFC} }, -/**/ {{0X59C45CC0, 0X3FDB3A8E} }, -/**/ {{0XD2389C24, 0X3FEA8C86} }, -/**/ {{0X8362B2CB, 0XBFD3F61F} }, -/**/ {{0XC6C746A6, 0XBFB2B6F1} }, -/**/ {{0X426D2946, 0X3FC5D671} }, -/**/ {{0X4981CE75, 0XBFB0F45D} } }, -/**/ {{{0X0D800C64, 0X3FDD4004} }, -/**/ {{0X88AF6580, 0X3FDB6F99} }, -/**/ {{0X7498CED2, 0X3FEA7887} }, -/**/ {{0XEF8975C0, 0XBFD403E8} }, -/**/ {{0XBEA81E2B, 0XBFB208D4} }, -/**/ {{0X283FFA4E, 0X3FC5ABA5} }, -/**/ {{0X11705130, 0XBFB14408} } }, -/**/ {{{0XB0E64500, 0X3FDD7FFE} }, -/**/ {{0X2324E140, 0X3FDBA472} }, -/**/ {{0X8C5AD680, 0X3FEA647E} }, -/**/ {{0XA03F042D, 0XBFD4112D} }, -/**/ {{0X9580389C, 0XBFB15C33} }, -/**/ {{0X49D9889E, 0X3FC5801E} }, -/**/ {{0XEF96554F, 0XBFB190A3} } }, -/**/ {{{0X2DFCF4EB, 0X3FDDBFFE} }, -/**/ {{0X9F1D27A0, 0X3FDBD926} }, -/**/ {{0X1AC286CA, 0X3FEA5067} }, -/**/ {{0X590A4DE1, 0XBFD41DF2} }, -/**/ {{0X8BD1EFA5, 0XBFB0B0E4} }, -/**/ {{0X702506D0, 0X3FC553D8} }, -/**/ {{0XADA415A6, 0XBFB1DA36} } }, -/**/ {{{0X8A34BBC2, 0X3FDDFFFD} }, -/**/ {{0XC4F7A2C0, 0X3FDC0DB2} }, -/**/ {{0X2EF70BB3, 0X3FEA3C43} }, -/**/ {{0X16EE647C, 0XBFD42A37} }, -/**/ {{0XDB6270BB, 0XBFB006FA} }, -/**/ {{0X86F08DE6, 0X3FC526DE} }, -/**/ {{0X7E5061FB, 0XBFB220C6} } }, -/**/ {{{0XD26415C0, 0X3FDE3FFD} }, -/**/ {{0X58282940, 0X3FDC4217} }, -/**/ {{0XF391DDCB, 0X3FEA2812} }, -/**/ {{0X18EDDF0A, 0XBFD435FD} }, -/**/ {{0X88A589AF, 0XBFAEBCF2} }, -/**/ {{0X4CF96163, 0X3FC4F937} }, -/**/ {{0XF6A18481, 0XBFB26459} } }, -/**/ {{{0X37F72672, 0X3FDE7FFF} }, -/**/ {{0X67AA3DC0, 0X3FDC7654} }, -/**/ {{0XD6CE86B3, 0X3FEA13D6} }, -/**/ {{0X74037E91, 0XBFD44145} }, -/**/ {{0X3B2CC445, 0XBFAD6EC9} }, -/**/ {{0X0564F101, 0X3FC4CAEA} }, -/**/ {{0X0C49CD64, 0XBFB2A4F8} } }, -/**/ {{{0XA11BC00F, 0X3FDEBFFD} }, -/**/ {{0X85E23660, 0X3FDCAA66} }, -/**/ {{0XA25C2396, 0X3FE9FF90} }, -/**/ {{0X8A64724F, 0XBFD44C10} }, -/**/ {{0X2F871E82, 0XBFAC2399} }, -/**/ {{0X0AFBFB85, 0X3FC49C01} }, -/**/ {{0X0F0FF3FE, 0XBFB2E2A8} } }, -/**/ {{{0X3313756D, 0X3FDEFFFF} }, -/**/ {{0X9D30CC20, 0X3FDCDE52} }, -/**/ {{0XDFF9491F, 0X3FE9EB3E} }, -/**/ {{0X7E6ABAAE, 0XBFD45660} }, -/**/ {{0X3E8AA98D, 0XBFAADB4C} }, -/**/ {{0X25D8FF7D, 0X3FC46C7F} }, -/**/ {{0XA71D448D, 0XBFB31D71} } }, -/**/ {{{0X914B856E, 0X3FDF4001} }, -/**/ {{0XAAC1BB20, 0X3FDD1216} }, -/**/ {{0XC9BC4315, 0X3FE9D6E2} }, -/**/ {{0X004E7E91, 0XBFD46036} }, -/**/ {{0XFB901F89, 0XBFA995F7} }, -/**/ {{0X3F5BE04A, 0X3FC43C6D} }, -/**/ {{0XCE8ABF92, 0XBFB3555C} } }, -/**/ {{{0XCD144428, 0X3FDF8003} }, -/**/ {{0XD93E9640, 0X3FDD45B1} }, -/**/ {{0X256FDFEB, 0X3FE9C27D} }, -/**/ {{0X09F7C145, 0XBFD46992} }, -/**/ {{0XED521174, 0XBFA853A9} }, -/**/ {{0X2B27751F, 0X3FC40BD3} }, -/**/ {{0XCFA5C5F2, 0XBFB38A71} } }, -/**/ {{{0X00545BD9, 0X3FDFC002} }, -/**/ {{0XF536D960, 0X3FDD7920} }, -/**/ {{0XAAE99EA5, 0X3FE9AE0F} }, -/**/ {{0X38DD66F4, 0XBFD47275} }, -/**/ {{0XB5484F74, 0XBFA7147D} }, -/**/ {{0XF8EFC373, 0X3FC3DABA} }, -/**/ {{0X3EA6B864, 0XBFB3BCB9} } }, -/**/ {{{0XDA6F2AA8, 0X3FDFFFFB} }, -/**/ {{0XB420FAA0, 0X3FDDAC63} }, -/**/ {{0XED4D0CAB, 0X3FE9999A} }, -/**/ {{0XBFCC6072, 0XBFD47AE0} }, -/**/ {{0X25BF7A4A, 0XBFA5D87C} }, -/**/ {{0XF5999EE5, 0X3FC3A92B} }, -/**/ {{0XF7F09D08, 0XBFB3EC3B} } }, -/**/ {{{0XA65118C8, 0X3FE01FFF} }, -/**/ {{0X2BF70C00, 0X3FDDDF85} }, -/**/ {{0XECD72AE5, 0X3FE9851A} }, -/**/ {{0X8F5794C5, 0XBFD482D7} }, -/**/ {{0X2E4A020B, 0XBFA49F68} }, -/**/ {{0X25A156DA, 0X3FC37722} }, -/**/ {{0X19F58064, 0XBFB41903} } }, -/**/ {{{0X9C0B0556, 0X3FE04001} }, -/**/ {{0XFA2BA200, 0X3FDE127D} }, -/**/ {{0X08C17A55, 0X3FE97093} }, -/**/ {{0X957A7EFD, 0XBFD48A59} }, -/**/ {{0X2648F2BB, 0XBFA36976} }, -/**/ {{0X592569B1, 0X3FC344AB} }, -/**/ {{0X03752DDB, 0XBFB44318} } }, -/**/ {{{0XC24501DB, 0X3FE05FFF} }, -/**/ {{0XA495BCC0, 0X3FDE4547} }, -/**/ {{0X4F225B79, 0X3FE95C06} }, -/**/ {{0X2163F5B8, 0XBFD49167} }, -/**/ {{0X4B79B89F, 0XBFA236D3} }, -/**/ {{0XB530B7BE, 0X3FC311D4} }, -/**/ {{0X4D931476, 0XBFB46A84} } }, -/**/ {{{0X865125FC, 0X3FE07FFE} }, -/**/ {{0X2A5FAD60, 0X3FDE77E9} }, -/**/ {{0X5C13B0EA, 0X3FE94772} }, -/**/ {{0X6F33ABCA, 0XBFD49802} }, -/**/ {{0XDE947C6B, 0XBFA1075A} }, -/**/ {{0XD8D5E01B, 0X3FC2DE9D} }, -/**/ {{0XCA17CA60, 0XBFB48F51} } }, -/**/ {{{0X107EAC25, 0X3FE0A002} }, -/**/ {{0X08243180, 0X3FDEAA69} }, -/**/ {{0XF339824B, 0X3FE932D4} }, -/**/ {{0X7145F475, 0XBFD49E2D} }, -/**/ {{0X00571424, 0XBF9FB5D8} }, -/**/ {{0X85D1CF84, 0X3FC2AB06} }, -/**/ {{0X7DBBBABE, 0XBFB4B18A} } }, -/**/ {{{0X7376E5D4, 0X3FE0BFFF} }, -/**/ {{0XF79FF560, 0X3FDEDCB5} }, -/**/ {{0X8EE1B492, 0X3FE91E35} }, -/**/ {{0X49498453, 0XBFD4A3E7} }, -/**/ {{0XBE685C6F, 0XBF9D63E4} }, -/**/ {{0XC4B1F032, 0X3FC27726} }, -/**/ {{0X9E6ECC3A, 0XBFB4D138} } }, -/**/ {{{0X1715EE2E, 0X3FE0DFFE} }, -/**/ {{0X9BE1BB80, 0X3FDF0EDB} }, -/**/ {{0XD993BD60, 0X3FE9098F} }, -/**/ {{0X9B84E907, 0XBFD4A932} }, -/**/ {{0XE07DBA5E, 0XBF9B185A} }, -/**/ {{0XF2D7A804, 0X3FC242F8} }, -/**/ {{0X8DDAA340, 0XBFB4EE66} } }, -/**/ {{{0X7F3D776C, 0X3FE10001} }, -/**/ {{0X6119E100, 0X3FDF40DF} }, -/**/ {{0XFB44BCFB, 0X3FE8F4E1} }, -/**/ {{0X16E3467E, 0XBFD4AE11} }, -/**/ {{0XCF368422, 0XBF98D304} }, -/**/ {{0X736708AE, 0X3FC20E7D} }, -/**/ {{0XD7B3658D, 0XBFB5091E} } }, -/**/ {{{0XFD8C7B65, 0X3FE11FFE} }, -/**/ {{0X8FD21560, 0X3FDF72B0} }, -/**/ {{0X4770FB0A, 0X3FE8E033} }, -/**/ {{0X5C0F6783, 0XBFD4B282} }, -/**/ {{0X7FFE0364, 0XBF9694AC} }, -/**/ {{0XE529BF4C, 0X3FC1D9CB} }, -/**/ {{0X2C73E5F0, 0XBFB5216C} } }, -/**/ {{{0XAFA3EE71, 0X3FE14000} }, -/**/ {{0XE3324D60, 0X3FDFA45E} }, -/**/ {{0X9FF684DF, 0X3FE8CB7D} }, -/**/ {{0X17ADD34D, 0XBFD4B689} }, -/**/ {{0X67276E70, 0XBF945CA3} }, -/**/ {{0XA1FBF3B1, 0X3FC1A4D9} }, -/**/ {{0X5FBA2374, 0XBFB53759} } }, -/**/ {{{0X73336187, 0X3FE15FFF} }, -/**/ {{0X3DE48D00, 0X3FDFD5DF} }, -/**/ {{0X0CBE3546, 0X3FE8B6C6} }, -/**/ {{0X9B291BCB, 0XBFD4BA25} }, -/**/ {{0X5FB712CC, 0XBF922B6F} }, -/**/ {{0X55E28B0B, 0X3FC16FB8} }, -/**/ {{0X633F423C, 0XBFB54AF1} } }, -/**/ {{{0X6C447B82, 0X3FE17FFF} }, -/**/ {{0X0208ECC0, 0X3FE0039C} }, -/**/ {{0X48F15926, 0X3FE8A20A} }, -/**/ {{0XA5808AC3, 0XBFD4BD59} }, -/**/ {{0X5EEF6F2A, 0XBF9000CD} }, -/**/ {{0XEBE54AA7, 0X3FC13A66} }, -/**/ {{0X45420CE4, 0XBFB55C3F} } }, -/**/ {{{0XAE932B61, 0X3FE19FFF} }, -/**/ {{0XE0091BC0, 0X3FE01C33} }, -/**/ {{0X55664E00, 0X3FE88D4B} }, -/**/ {{0X579F5ABB, 0XBFD4C026} }, -/**/ {{0X8797C32A, 0XBF8BB9A6} }, -/**/ {{0X95D4F64E, 0X3FC104EC} }, -/**/ {{0X2BBC325E, 0XBFB56B4E} } }, -/**/ {{{0XBA12AE50, 0X3FE1BFFF} }, -/**/ {{0XD3ABA020, 0X3FE034B6} }, -/**/ {{0XEBDCCF04, 0X3FE87889} }, -/**/ {{0XE6D463C1, 0XBFD4C28C} }, -/**/ {{0XB36211FC, 0XBF877F1C} }, -/**/ {{0XB90B11E7, 0X3FC0CF4F} }, -/**/ {{0X52DCBE1A, 0XBFB57829} } }, -/**/ {{{0X4B459E41, 0X3FE1E001} }, -/**/ {{0X2DC05800, 0X3FE04D26} }, -/**/ {{0X51625B6A, 0X3FE863C5} }, -/**/ {{0XAFFDD399, 0XBFD4C48E} }, -/**/ {{0X603059CA, 0XBF8351CB} }, -/**/ {{0XDE65D0D9, 0X3FC09992} }, -/**/ {{0X087BB367, 0XBFB582DC} } }, -/**/ {{{0X32306F33, 0X3FE20000} }, -/**/ {{0XBAFB6CE0, 0X3FE0657E} }, -/**/ {{0XA1E2EEC3, 0X3FE84F00} }, -/**/ {{0XB79EC8C6, 0XBFD4C62C} }, -/**/ {{0XD95DE8D1, 0XBF7E6488} }, -/**/ {{0X661DF241, 0X3FC063C2} }, -/**/ {{0XAAA63BAD, 0XBFB58B71} } }, -/**/ {{{0XD30A486C, 0X3FE22000} }, -/**/ {{0XD2165080, 0X3FE07DC3} }, -/**/ {{0X66B3E5BF, 0X3FE83A39} }, -/**/ {{0X7DE04DEE, 0XBFD4C768} }, -/**/ {{0X800F052F, 0XBF763FF7} }, -/**/ {{0X28F35EDD, 0X3FC02DDC} }, -/**/ {{0XA351CF91, 0XBFB591F5} } }, -/**/ {{{0X215E03FC, 0X3FE23FFE} }, -/**/ {{0X9F380A00, 0X3FE095F1} }, -/**/ {{0X48BE5F3F, 0X3FE82573} }, -/**/ {{0X1B793F77, 0XBFD4C843} }, -/**/ {{0X625993B8, 0XBF6C6E63} }, -/**/ {{0X8C5E4B3B, 0X3FBFEFDB} }, -/**/ {{0X66FE9CA7, 0XBFB59673} } }, -/**/ {{{0X6833D65D, 0X3FE26000} }, -/**/ {{0X6496A8C0, 0X3FE0AE0E} }, -/**/ {{0X45B44AA3, 0X3FE810A9} }, -/**/ {{0X055B407A, 0XBFD4C8BE} }, -/**/ {{0XAE83F0A4, 0XBF5920A7} }, -/**/ {{0X860A6A5E, 0X3FBF83DC} }, -/**/ {{0X70D98EE7, 0XBFB598F6} } }, -/**/ {{{0XE82D4D50, 0X3FE28000} }, -/**/ {{0X095F5300, 0X3FE0C615} }, -/**/ {{0X1E9337B7, 0X3FE7FBE0} }, -/**/ {{0X573C6F6A, 0XBFD4C8DA} }, -/**/ {{0XC50F565D, 0X3F38B6C7} }, -/**/ {{0XC9C4B6CA, 0X3FBF17DB} }, -/**/ {{0X45D6DAE0, 0XBFB5998A} } }, -/**/ {{{0X203B6A0B, 0X3FE29FFF} }, -/**/ {{0X30852720, 0X3FE0DE05} }, -/**/ {{0X8520538D, 0X3FE7E718} }, -/**/ {{0X668C6963, 0XBFD4C899} }, -/**/ {{0XBECA8AB0, 0X3F6286EC} }, -/**/ {{0X9B6AC5BD, 0X3FBEABE4} }, -/**/ {{0X575A9684, 0XBFB5983A} } }, -/**/ {{{0XE91A9D93, 0X3FE2C001} }, -/**/ {{0XF7817A20, 0X3FE0F5E3} }, -/**/ {{0X63A45D97, 0X3FE7D24E} }, -/**/ {{0X5F83C46D, 0XBFD4C7FC} }, -/**/ {{0X5D9C800A, 0X3F70E199} }, -/**/ {{0X3721A8E0, 0X3FBE3FE9} }, -/**/ {{0X377DA840, 0XBFB59512} } }, -/**/ {{{0XC6FB4948, 0X3FE2DFFF} }, -/**/ {{0X4CE36040, 0X3FE10DAA} }, -/**/ {{0X3E39011F, 0X3FE7BD88} }, -/**/ {{0XB5EAE11F, 0XBFD4C704} }, -/**/ {{0X192C622B, 0X3F786398} }, -/**/ {{0XB62BA357, 0X3FBDD412} }, -/**/ {{0X5F0E020E, 0XBFB5901D} } }, -/**/ {{{0X39CB4EED, 0X3FE2FFFF} }, -/**/ {{0X0970AD60, 0X3FE1255D} }, -/**/ {{0X365B7A9B, 0X3FE7A8C2} }, -/**/ {{0X8925F532, 0XBFD4C5B3} }, -/**/ {{0X785E3070, 0X3F7FCB03} }, -/**/ {{0X0EEDF3B3, 0X3FBD6854} }, -/**/ {{0X479C252A, 0XBFB58967} } }, -/**/ {{{0X002E31CB, 0X3FE31FFE} }, -/**/ {{0X81FD3780, 0X3FE13CFA} }, -/**/ {{0X1BBE9667, 0X3FE793FE} }, -/**/ {{0X3046F4C7, 0XBFD4C40A} }, -/**/ {{0X8F5E6BF1, 0X3F838BAE} }, -/**/ {{0X83775C98, 0X3FBCFCBD} }, -/**/ {{0X62E887AB, 0XBFB580FB} } }, -/**/ {{{0XEDC7BFFD, 0X3FE34000} }, -/**/ {{0X44D05200, 0X3FE15486} }, -/**/ {{0X244A1DA5, 0X3FE77F39} }, -/**/ {{0X9FB764C1, 0XBFD4C209} }, -/**/ {{0X851B0BE5, 0X3F8724E2} }, -/**/ {{0X507C76E0, 0X3FBC9147} }, -/**/ {{0X19C7F0AB, 0XBFB576E5} } }, -/**/ {{{0XCE042830, 0X3FE36001} }, -/**/ {{0XC1656AE0, 0X3FE16BFB} }, -/**/ {{0XAD3B2B77, 0X3FE76A77} }, -/**/ {{0X74AAC296, 0XBFD4BFB3} }, -/**/ {{0X05B229C2, 0X3F8AB070} }, -/**/ {{0X87DCA54B, 0X3FBC260E} }, -/**/ {{0XC90DF763, 0XBFB56B2F} } }, -/**/ {{{0X89B8FC54, 0X3FE37FFE} }, -/**/ {{0X77D0BA80, 0X3FE18359} }, -/**/ {{0X660CAA3D, 0X3FE755BB} }, -/**/ {{0X308BB975, 0XBFD4BD09} }, -/**/ {{0XFE0A1240, 0X3F8E2E26} }, -/**/ {{0X18790F26, 0X3FBBBB22} }, -/**/ {{0XC094F3DA, 0XBFB55DE6} } }, -/**/ {{{0X9B4DA842, 0X3FE3A001} }, -/**/ {{0X100CD140, 0X3FE19AA7} }, -/**/ {{0XD801F889, 0X3FE740FD} }, -/**/ {{0X2C32C656, 0XBFD4BA0B} }, -/**/ {{0X8ECA44A2, 0X3F90CF99} }, -/**/ {{0XC9863443, 0X3FBB5066} }, -/**/ {{0X406672B5, 0XBFB54F15} } }, -/**/ {{{0XCE6B63E8, 0X3FE3C000} }, -/**/ {{0X1D0B0AE0, 0X3FE1B1DD} }, -/**/ {{0XF28670E6, 0X3FE72C45} }, -/**/ {{0X92422E2E, 0XBFD4B6BB} }, -/**/ {{0XA0D32146, 0X3F928141} }, -/**/ {{0X37452321, 0X3FBAE606} }, -/**/ {{0X77D91F56, 0XBFB53EC6} } }, -/**/ {{{0X114A2607, 0X3FE3DFFF} }, -/**/ {{0XC6FF6F20, 0X3FE1C8FD} }, -/**/ {{0X206847A7, 0X3FE71792} }, -/**/ {{0X669BD306, 0XBFD4B31B} }, -/**/ {{0X04FFD28A, 0X3F942C3A} }, -/**/ {{0XE7FC0825, 0X3FBA7BFD} }, -/**/ {{0X82F471BA, 0XBFB52D05} } }, -/**/ {{{0XC1DA9B7D, 0X3FE3FFFF} }, -/**/ {{0X7F2E8840, 0X3FE1E00B} }, -/**/ {{0X84371133, 0X3FE702E0} }, -/**/ {{0X8012FBE4, 0XBFD4AF2B} }, -/**/ {{0XBFC47F4B, 0X3F95D0B4} }, -/**/ {{0XD80AB6C5, 0X3FBA1249} }, -/**/ {{0X69A4108D, 0XBFB519DD} } }, -/**/ {{{0XE11D9C33, 0X3FE41FFE} }, -/**/ {{0X67C3EC20, 0X3FE1F703} }, -/**/ {{0X026A76A0, 0X3FE6EE34} }, -/**/ {{0X96514B12, 0XBFD4AAED} }, -/**/ {{0X07BA2905, 0X3F976E83} }, -/**/ {{0X261A1221, 0X3FB9A8FE} }, -/**/ {{0X1D552BA0, 0XBFB50559} } }, -/**/ {{{0XFA174676, 0X3FE43FFF} }, -/**/ {{0X0FAFF860, 0X3FE20DE8} }, -/**/ {{0X9EA6D162, 0X3FE6D98A} }, -/**/ {{0X6B927B3B, 0XBFD4A662} }, -/**/ {{0XF84ADBB0, 0X3F9905D8} }, -/**/ {{0XDD484DB5, 0X3FB94015} }, -/**/ {{0X783EEF44, 0XBFB4EF83} } }, -/**/ {{{0X0D457FA4, 0X3FE45FFF} }, -/**/ {{0X9F675300, 0X3FE224B6} }, -/**/ {{0X3A093351, 0X3FE6C4E7} }, -/**/ {{0XCBF2BFF8, 0XBFD4A18B} }, -/**/ {{0X84BB8C16, 0X3F9A968A} }, -/**/ {{0X93FBB975, 0X3FB8D7A4} }, -/**/ {{0X3B37E4FB, 0XBFB4D867} } }, -/**/ {{{0X8F910E57, 0X3FE47FFE} }, -/**/ {{0XDD92B840, 0X3FE23B70} }, -/**/ {{0X89B04359, 0X3FE6B048} }, -/**/ {{0X974B07FF, 0XBFD49C6A} }, -/**/ {{0X25F20251, 0X3F9C20BE} }, -/**/ {{0X82E9673D, 0X3FB86FA8} }, -/**/ {{0X0D12F550, 0XBFB4C00F} } }, -/**/ {{{0X7323FC6B, 0X3FE4A001} }, -/**/ {{0XE34E3420, 0X3FE25218} }, -/**/ {{0XF277FE27, 0X3FE69BAC} }, -/**/ {{0X7F856ABA, 0XBFD496FF} }, -/**/ {{0X9928150C, 0X3F9DA49E} }, -/**/ {{0X3EB66A26, 0X3FB8081E} }, -/**/ {{0X78AB06C5, 0XBFB4A685} } }, -/**/ {{{0XB1BF0500, 0X3FE4C000} }, -/**/ {{0XBD8B2C80, 0X3FE268A9} }, -/**/ {{0X42ABBD42, 0X3FE68719} }, -/**/ {{0XEC74E64A, 0XBFD4914C} }, -/**/ {{0XD0C3EEEC, 0X3F9F21DE} }, -/**/ {{0X5B30AA05, 0X3FB7A122} }, -/**/ {{0XEC53EF43, 0XBFB48BD4} } }, -/**/ {{{0X1D07207B, 0X3FE4E001} }, -/**/ {{0XDA64F7A0, 0X3FE27F26} }, -/**/ {{0XA7CFBEB2, 0X3FE6728A} }, -/**/ {{0X3FCBB247, 0XBFD48B53} }, -/**/ {{0XA7354A41, 0X3FA04C60} }, -/**/ {{0XEFF6F27A, 0X3FB73AAA} }, -/**/ {{0XB81A6BB2, 0XBFB47007} } }, -/**/ {{{0X5F36EB46, 0X3FE4FFFE} }, -/**/ {{0X35DDD180, 0X3FE2958D} }, -/**/ {{0X307B6AF3, 0X3FE65E04} }, -/**/ {{0X828BB6E6, 0XBFD48514} }, -/**/ {{0X48993ED9, 0X3FA1048E} }, -/**/ {{0X468D7C59, 0X3FB6D4CB} }, -/**/ {{0X0D484989, 0XBFB45328} } }, -/**/ {{{0X2AFDF759, 0X3FE52001} }, -/**/ {{0XEB1C3280, 0X3FE2ABE2} }, -/**/ {{0X8DC5DAAD, 0X3FE64980} }, -/**/ {{0X2C11E3B7, 0XBFD47E90} }, -/**/ {{0X88E1B343, 0X3FA1B9AE} }, -/**/ {{0XFF4501BF, 0X3FB66F6C} }, -/**/ {{0XFCD6B8DE, 0XBFB4353F} } }, -/**/ {{{0XDFDB2423, 0X3FE54001} }, -/**/ {{0XAB0402C0, 0X3FE2C222} }, -/**/ {{0XE7E657FB, 0X3FE63504} }, -/**/ {{0XEEE53FA9, 0XBFD477C8} }, -/**/ {{0X696CD845, 0X3FA26B9A} }, -/**/ {{0X6A3AA6EF, 0X3FB60AAD} }, -/**/ {{0X7704E1F4, 0XBFB41659} } }, -/**/ {{{0X72D2A74F, 0X3FE55FFE} }, -/**/ {{0X16BE7240, 0X3FE2D84B} }, -/**/ {{0XCE54AEDE, 0X3FE62092} }, -/**/ {{0X7B764156, 0XBFD470C0} }, -/**/ {{0X4D9ABEE7, 0X3FA31A4C} }, -/**/ {{0XA899A63D, 0X3FB5A697} }, -/**/ {{0X49FA7FB1, 0XBFB3F67E} } }, -/**/ {{{0XEE716C33, 0X3FE58000} }, -/**/ {{0X284F3FE0, 0X3FE2EE63} }, -/**/ {{0X181C5720, 0X3FE60C24} }, -/**/ {{0XC383B0C1, 0XBFD46975} }, -/**/ {{0XC40A1A5A, 0X3FA3C5FF} }, -/**/ {{0X0B7B3B72, 0X3FB54311} }, -/**/ {{0X21700401, 0XBFB3D5B8} } }, -/**/ {{{0X9825CD2A, 0X3FE59FFF} }, -/**/ {{0X2DEFCF40, 0X3FE30464} }, -/**/ {{0X3C14A317, 0X3FE5F7BF} }, -/**/ {{0X227A4CDE, 0XBFD461EC} }, -/**/ {{0X6DA8D837, 0X3FA46E85} }, -/**/ {{0X6162F4C8, 0X3FB4E03C} }, -/**/ {{0X857F5976, 0XBFB3B410} } }, -/**/ {{{0XFE2A42CD, 0X3FE5BFFD} }, -/**/ {{0XA5110DC0, 0X3FE31A50} }, -/**/ {{0X33CF1268, 0X3FE5E362} }, -/**/ {{0XF68B7DBC, 0XBFD45A23} }, -/**/ {{0XDE40F0E9, 0X3FA513F5} }, -/**/ {{0XDE05901E, 0X3FB47E12} }, -/**/ {{0XDA5CABB5, 0XBFB39190} } }, -/**/ {{{0X57330799, 0X3FE5E000} }, -/**/ {{0X75253480, 0X3FE3302B} }, -/**/ {{0X901DA45A, 0X3FE5CF0A} }, -/**/ {{0X552754CF, 0XBFD4521D} }, -/**/ {{0XBBF000BB, 0X3FA5B66B} }, -/**/ {{0XD2BAF7B2, 0X3FB41C8B} }, -/**/ {{0X5F53241A, 0XBFB36E42} } }, -/**/ {{{0X4D6055DA, 0X3FE60001} }, -/**/ {{0XFF2EDA60, 0X3FE345F0} }, -/**/ {{0XF2EA5900, 0X3FE5BABB} }, -/**/ {{0XB2008754, 0XBFD449DA} }, -/**/ {{0X18F56FBB, 0X3FA655D1} }, -/**/ {{0X89A0C1B2, 0X3FB3BBBB} }, -/**/ {{0X2E8D60FC, 0XBFB34A2E} } }, -/**/ {{{0X2C3809CB, 0X3FE62001} }, -/**/ {{0X812D5040, 0X3FE35BA1} }, -/**/ {{0X671E49E9, 0X3FE5A676} }, -/**/ {{0X230E6216, 0XBFD4415D} }, -/**/ {{0X6B05C7F7, 0X3FA6F22D} }, -/**/ {{0XCFE6B72B, 0X3FB35BA4} }, -/**/ {{0X3C3BFA3B, 0XBFB3255D} } }, -/**/ {{{0X87B47ECC, 0X3FE64000} }, -/**/ {{0X69715580, 0X3FE3713D} }, -/**/ {{0XC8FB0E69, 0X3FE59239} }, -/**/ {{0XA5BD1F6E, 0XBFD438A5} }, -/**/ {{0X7F9B13CF, 0X3FA78B89} }, -/**/ {{0X74F57C8F, 0X3FB2FC49} }, -/**/ {{0X566CAACA, 0XBFB2FFD8} } }, -/**/ {{{0XA746397F, 0X3FE66000} }, -/**/ {{0X9D968940, 0X3FE386C5} }, -/**/ {{0X83073C58, 0X3FE57E05} }, -/**/ {{0XFE3D0083, 0XBFD42FB4} }, -/**/ {{0X4B9E1EEB, 0X3FA821F1} }, -/**/ {{0X1952EE82, 0X3FB29DA9} }, -/**/ {{0X245866A8, 0XBFB2D9A8} } }, -/**/ {{{0XE4E3094B, 0X3FE68000} }, -/**/ {{0XB5FE3900, 0X3FE39C39} }, -/**/ {{0X36DD131E, 0X3FE569DA} }, -/**/ {{0X74778FE0, 0XBFD4268C} }, -/**/ {{0X9AB0310F, 0X3FA8B567} }, -/**/ {{0XF2E43205, 0X3FB23FC8} }, -/**/ {{0X26483573, 0XBFB2B2D5} } }, -/**/ {{{0XE2E37787, 0X3FE6A001} }, -/**/ {{0X27D52620, 0X3FE3B19A} }, -/**/ {{0XB5D865CD, 0X3FE555B7} }, -/**/ {{0XF1600CD3, 0XBFD41D2C} }, -/**/ {{0X4B79E859, 0X3FA945F5} }, -/**/ {{0X46A0B02D, 0X3FB1E2AA} }, -/**/ {{0XB508A35B, 0XBFB28B67} } }, -/**/ {{{0X0DF4BBFB, 0X3FE6BFFE} }, -/**/ {{0X46F2B6E0, 0X3FE3C6E3} }, -/**/ {{0XB658AFBE, 0X3FE541A1} }, -/**/ {{0X388DA137, 0XBFD41399} }, -/**/ {{0XE5B3C2BA, 0X3FA9D387} }, -/**/ {{0X173397F9, 0X3FB18660} }, -/**/ {{0X01DB4945, 0XBFB26368} } }, -/**/ {{{0XEA406CEA, 0X3FE6DFFF} }, -/**/ {{0X1BB3D400, 0X3FE3DC1C} }, -/**/ {{0XD33FFE8E, 0X3FE52D91} }, -/**/ {{0X36BCFFE9, 0XBFD409CF} }, -/**/ {{0X174405AF, 0X3FAA5E54} }, -/**/ {{0XDC041806, 0X3FB12ACE} }, -/**/ {{0X160D6557, 0XBFB23ADE} } }, -/**/ {{{0XED01EA65, 0X3FE70000} }, -/**/ {{0X54E51400, 0X3FE3F140} }, -/**/ {{0X5C8B9119, 0X3FE5198C} }, -/**/ {{0XF2EA4FF7, 0XBFD3FFD1} }, -/**/ {{0X308C81CD, 0X3FAAE643} }, -/**/ {{0X1960AAF7, 0X3FB0D00C} }, -/**/ {{0XD2F50D25, 0XBFB211D1} } }, -/**/ {{{0X00D515EB, 0X3FE72002} }, -/**/ {{0X983BB3E0, 0X3FE40650} }, -/**/ {{0XF2175C71, 0X3FE50590} }, -/**/ {{0X361BB15C, 0XBFD3F5A2} }, -/**/ {{0X9B536AFC, 0X3FAB6B5F} }, -/**/ {{0XA731624D, 0X3FB07617} }, -/**/ {{0XF1A8C054, 0XBFB1E84A} } }, -/**/ {{{0X1323DE6D, 0X3FE74001} }, -/**/ {{0X9483E720, 0X3FE41B4B} }, -/**/ {{0X1027BA01, 0X3FE4F1A1} }, -/**/ {{0XBB978C8F, 0XBFD3EB41} }, -/**/ {{0X7765626A, 0X3FABEDA7} }, -/**/ {{0X97F58C8A, 0X3FB01CF9} }, -/**/ {{0X03074348, 0XBFB1BE51} } }, -/**/ {{{0X25CAB4CA, 0X3FE75FFF} }, -/**/ {{0X0001D5C0, 0X3FE43032} }, -/**/ {{0X4573FB6C, 0X3FE4DDBC} }, -/**/ {{0X41F21D2A, 0XBFD3E0B1} }, -/**/ {{0XD1BDA00F, 0X3FAC6D25} }, -/**/ {{0X5935EE68, 0X3FAF8962} }, -/**/ {{0X6F8E0689, 0XBFB193EB} } }, -/**/ {{{0X90921F76, 0X3FE77FFE} }, -/**/ {{0X6CC6AF00, 0X3FE44505} }, -/**/ {{0X4CFFBDAE, 0X3FE4C9E1} }, -/**/ {{0X0B247EC4, 0XBFD3D5F1} }, -/**/ {{0X943F4516, 0X3FACE9EA} }, -/**/ {{0XF24A8AF1, 0X3FAEDA73} }, -/**/ {{0X776AAC42, 0XBFB16921} } }, -/**/ {{{0X47B2F83B, 0X3FE79FFE} }, -/**/ {{0X35C19F20, 0X3FE459C5} }, -/**/ {{0XFC8F20BD, 0X3FE4B610} }, -/**/ {{0X73DF2A0D, 0XBFD3CB02} }, -/**/ {{0X23C5D6DE, 0X3FAD63F8} }, -/**/ {{0X9C5116AB, 0X3FAE2D31} }, -/**/ {{0X326E2972, 0XBFB13DFA} } }, -/**/ {{{0X2F1E79A9, 0X3FE7BFFF} }, -/**/ {{0XF84DF5C0, 0X3FE46E71} }, -/**/ {{0XF586B1BD, 0X3FE4A24A} }, -/**/ {{0X2EF81E5B, 0XBFD3BFE6} }, -/**/ {{0X738896F0, 0X3FADDB58} }, -/**/ {{0X2515DE78, 0X3FAD819A} }, -/**/ {{0X9026FDD0, 0XBFB1127C} } }, -/**/ {{{0X973C8D05, 0X3FE7E001} }, -/**/ {{0XF0FB9580, 0X3FE4830B} }, -/**/ {{0X3466B08E, 0X3FE48E8F} }, -/**/ {{0X1C53A01A, 0XBFD3B49D} }, -/**/ {{0X25103EED, 0X3FAE5013} }, -/**/ {{0X5290F4AF, 0X3FACD7AF} }, -/**/ {{0X57EF003B, 0XBFB0E6AF} } }, -/**/ {{{0X69EFC092, 0X3FE7FFFF} }, -/**/ {{0X431C3800, 0X3FE4978F} }, -/**/ {{0XA3E1064A, 0X3FE47AE1} }, -/**/ {{0X666C50C4, 0XBFD3A92A} }, -/**/ {{0X4098A4BE, 0X3FAEC219} }, -/**/ {{0X2EEE57E0, 0X3FAC2F94} }, -/**/ {{0X290D5730, 0XBFB0BA99} } }, -/**/ {{{0XC52B5232, 0X3FE82001} }, -/**/ {{0XD2B83340, 0X3FE4AC01} }, -/**/ {{0XD31B7CF5, 0X3FE4673C} }, -/**/ {{0XC67D05F0, 0XBFD39D8B} }, -/**/ {{0X2A81B5D5, 0X3FAF3192} }, -/**/ {{0X8AA20E90, 0X3FAB891B} }, -/**/ {{0X7ADCEFD6, 0XBFB08E40} } }, -/**/ {{{0XBD4D4E3F, 0X3FE84000} }, -/**/ {{0X9B1DBC60, 0X3FE4C05E} }, -/**/ {{0XC8D629F7, 0X3FE453A5} }, -/**/ {{0X13E9EF47, 0XBFD391C5} }, -/**/ {{0X17383D6B, 0X3FAF9E69} }, -/**/ {{0X278E21B9, 0X3FAAE471} }, -/**/ {{0X9CF54D10, 0XBFB061AB} } }, -/**/ {{{0X8C869CBD, 0X3FE86001} }, -/**/ {{0XFD2285A0, 0X3FE4D4A8} }, -/**/ {{0X79B82471, 0X3FE44019} }, -/**/ {{0X5C3E2929, 0XBFD385D5} }, -/**/ {{0X7B2C8FF2, 0X3FB0045B} }, -/**/ {{0X39D7CA4F, 0X3FAA417C} }, -/**/ {{0XB767B7D4, 0XBFB034E0} } }, -/**/ {{{0XB5DB3710, 0X3FE87FFE} }, -/**/ {{0X8B93BCA0, 0X3FE4E8DD} }, -/**/ {{0X66C6E6BF, 0X3FE42C9B} }, -/**/ {{0XA32EE2A1, 0XBFD379BF} }, -/**/ {{0X6187FE0F, 0X3FB03838} }, -/**/ {{0X8B3A0B33, 0X3FA9A05A} }, -/**/ {{0XCAEE03A9, 0XBFB007E5} } }, -/**/ {{{0X863C77E3, 0X3FE8A000} }, -/**/ {{0X8FCD1E80, 0X3FE4FD01} }, -/**/ {{0XA8A8093F, 0X3FE41926} }, -/**/ {{0XB5EE344D, 0XBFD36D81} }, -/**/ {{0X2841F292, 0X3FB06ADC} }, -/**/ {{0X2484560B, 0X3FA900E4} }, -/**/ {{0X62792F0A, 0XBFAFB581} } }, -/**/ {{{0X0ED982AF, 0X3FE8BFFF} }, -/**/ {{0X16E28AC0, 0X3FE51110} }, -/**/ {{0X389112EE, 0X3FE405C0} }, -/**/ {{0X89D38DC7, 0XBFD3611F} }, -/**/ {{0XB450B9F7, 0X3FB09C3D} }, -/**/ {{0X312D0C4A, 0X3FA86342} }, -/**/ {{0X3A6CA012, 0XBFAF5AEE} } }, -/**/ {{{0X02C3AEAE, 0X3FE8E000} }, -/**/ {{0XC0AB0A40, 0X3FE5250C} }, -/**/ {{0XC65593C5, 0X3FE3F264} }, -/**/ {{0XD82BE900, 0XBFD35497} }, -/**/ {{0X68546D39, 0X3FB0CC69} }, -/**/ {{0XDB8499FD, 0X3FA7C759} }, -/**/ {{0X36A32337, 0XBFAF001D} } }, -/**/ {{{0XECBFA97B, 0X3FE90000} }, -/**/ {{0X0E8D4EE0, 0X3FE538F6} }, -/**/ {{0XF4119333, 0X3FE3DF15} }, -/**/ {{0X7D2149F4, 0XBFD347EC} }, -/**/ {{0XFA921D3C, 0X3FB0FB5E} }, -/**/ {{0X69693E89, 0X3FA72D38} }, -/**/ {{0X23A0F5F3, 0XBFAEA519} } }, -/**/ {{{0XD251C01C, 0X3FE91FFF} }, -/**/ {{0XD3F3BD20, 0X3FE54CCA} }, -/**/ {{0X1554DD15, 0X3FE3CBD5} }, -/**/ {{0X2BC94245, 0XBFD33B1F} }, -/**/ {{0X2FC4C3F6, 0X3FB1291F} }, -/**/ {{0X1B7A765C, 0X3FA694E8} }, -/**/ {{0X826E86F6, 0XBFAE49EC} } }, -/**/ {{{0XD90AF4E6, 0X3FE94001} }, -/**/ {{0X4D4EC640, 0X3FE5608E} }, -/**/ {{0X3445EF72, 0X3FE3B89F} }, -/**/ {{0XB7BBD79A, 0XBFD32E2E} }, -/**/ {{0XE401D071, 0X3FB155B4} }, -/**/ {{0X3A256F1C, 0X3FA5FE51} }, -/**/ {{0X890FF662, 0XBFADEEA1} } }, -/**/ {{{0X04FD6C17, 0X3FE96001} }, -/**/ {{0XD5673C20, 0X3FE5743C} }, -/**/ {{0X09EBC6E2, 0X3FE3A578} }, -/**/ {{0X6DA5039C, 0XBFD3211E} }, -/**/ {{0X4E62286B, 0X3FB1811B} }, -/**/ {{0X71BECE9D, 0X3FA56990} }, -/**/ {{0X23911641, 0XBFAD9342} } }, -/**/ {{{0X2D214B82, 0X3FE98000} }, -/**/ {{0X3B0D6120, 0X3FE587D8} }, -/**/ {{0X01EAAC3E, 0X3FE3925E} }, -/**/ {{0X08425504, 0XBFD313EE} }, -/**/ {{0X02BDB571, 0X3FB1AB5A} }, -/**/ {{0X9EBD70B8, 0X3FA4D698} }, -/**/ {{0XF482965A, 0XBFAD37D7} } }, -/**/ {{{0XEB980651, 0X3FE99FFD} }, -/**/ {{0XB16BA7A0, 0X3FE59B5F} }, -/**/ {{0X10B1AB7A, 0X3FE37F52} }, -/**/ {{0XF993D676, 0XBFD3069E} }, -/**/ {{0XCDED25A8, 0X3FB1D472} }, -/**/ {{0X2D0ABD9A, 0X3FA44570} }, -/**/ {{0X56221AA1, 0XBFACDC6C} } }, -/**/ {{{0XE5504053, 0X3FE9BFFF} }, -/**/ {{0XB55DE6A0, 0X3FE5AED6} }, -/**/ {{0XFA91C51E, 0X3FE36C50} }, -/**/ {{0XBE311E56, 0XBFD2F92F} }, -/**/ {{0X5BE3AF05, 0X3FB1FC70} }, -/**/ {{0XACD5CDC7, 0X3FA3B5FD} }, -/**/ {{0X5ADBB9B8, 0XBFAC8108} } }, -/**/ {{{0X6E60A234, 0X3FE9E001} }, -/**/ {{0X79ACD480, 0X3FE5C23A} }, -/**/ {{0XA5FAB2EA, 0X3FE3595D} }, -/**/ {{0X1DDECEEA, 0XBFD2EBA3} }, -/**/ {{0X35736518, 0X3FB22350} }, -/**/ {{0X22F9FD28, 0X3FA32856} }, -/**/ {{0XCE8B2259, 0XBFAC25B4} } }, -/**/ {{{0XB685741B, 0X3FE9FFFF} }, -/**/ {{0X5AD40460, 0X3FE5D589} }, -/**/ {{0XD832B8D3, 0X3FE34679} }, -/**/ {{0X230EDA41, 0XBFD2DDFB} }, -/**/ {{0XB23C0BA2, 0X3FB24912} }, -/**/ {{0X4C4E86DA, 0X3FA29C85} }, -/**/ {{0X37002A55, 0XBFABCA7A} } }, -/**/ {{{0X9D59B943, 0X3FEA2001} }, -/**/ {{0X8C187EA0, 0X3FE5E8C7} }, -/**/ {{0X9EDE2183, 0X3FE333A1} }, -/**/ {{0XB0043779, 0XBFD2D035} }, -/**/ {{0X7AB9110C, 0X3FB26DC3} }, -/**/ {{0X959CFC0E, 0X3FA2126C} }, -/**/ {{0XD556233E, 0XBFAB6F60} } }, -/**/ {{{0XBE9E153F, 0X3FEA3FFF} }, -/**/ {{0XA9C08AE0, 0X3FE5FBF0} }, -/**/ {{0X6F7861AA, 0X3FE320D9} }, -/**/ {{0XC2200F18, 0XBFD2C256} }, -/**/ {{0XA6795293, 0X3FB2915D} }, -/**/ {{0X256A8FDE, 0X3FA18A2B} }, -/**/ {{0XA67A4E89, 0XBFAB1470} } }, -/**/ {{{0X7A23A1CE, 0X3FEA5FFE} }, -/**/ {{0X63200600, 0X3FE60F07} }, -/**/ {{0XD13D395E, 0X3FE30E1E} }, -/**/ {{0X44403932, 0XBFD2B45D} }, -/**/ {{0XC967F013, 0X3FB2B3E9} }, -/**/ {{0X35D002B8, 0X3FA103AD} }, -/**/ {{0X6496A8F1, 0XBFAAB9B1} } }, -/**/ {{{0X57F250B8, 0X3FEA8001} }, -/**/ {{0XDD6453A0, 0X3FE6220D} }, -/**/ {{0XCFFFCC1E, 0X3FE2FB6F} }, -/**/ {{0X6F8D8291, 0XBFD2A648} }, -/**/ {{0X03654CC3, 0X3FB2D56F} }, -/**/ {{0X4BB6E7A6, 0X3FA07EE3} }, -/**/ {{0X87992F03, 0XBFAA5F2A} } }, -/**/ {{{0XDD839D49, 0X3FEAA000} }, -/**/ {{0XB412C9A0, 0X3FE634FF} }, -/**/ {{0XE2D59E01, 0X3FE2E8D0} }, -/**/ {{0X5467CFDD, 0XBFD2981C} }, -/**/ {{0XFF1FADB5, 0X3FB2F5E8} }, -/**/ {{0XA3BA803C, 0X3F9FF7D6} }, -/**/ {{0X46AF8DB7, 0XBFAA04E3} } }, -/**/ {{{0X770DF220, 0X3FEAC000} }, -/**/ {{0XFEF70020, 0X3FE647DE} }, -/**/ {{0X220AFF7F, 0X3FE2D640} }, -/**/ {{0X36F9E74F, 0XBFD289D8} }, -/**/ {{0XE509140A, 0X3FB3155E} }, -/**/ {{0X61AB0B7F, 0X3F9EF56B} }, -/**/ {{0X98CE391F, 0XBFA9AAE2} } }, -/**/ {{{0X125BBE48, 0X3FEAE001} }, -/**/ {{0X57A24D20, 0X3FE65AAC} }, -/**/ {{0X1BFB3559, 0X3FE2C3BD} }, -/**/ {{0X6DDE55DD, 0XBFD27B7C} }, -/**/ {{0X15C4C270, 0X3FB333D5} }, -/**/ {{0X9BAC4ECF, 0X3F9DF67A} }, -/**/ {{0X363A972B, 0XBFA9512F} } }, -/**/ {{{0X7C321839, 0X3FEAFFFE} }, -/**/ {{0X569B83C0, 0X3FE66D65} }, -/**/ {{0X53FBF8D9, 0X3FE2B14A} }, -/**/ {{0X9CFA03CE, 0XBFD26D0B} }, -/**/ {{0X2CAA2E0C, 0X3FB3514B} }, -/**/ {{0X4597BE9A, 0X3F9CFB22} }, -/**/ {{0X99110022, 0XBFA8F7CF} } }, -/**/ {{{0X75486924, 0X3FEB1FFE} }, -/**/ {{0X68CEFB40, 0X3FE6800D} }, -/**/ {{0X8E6AA814, 0X3FE29EE4} }, -/**/ {{0XE8AFA7EB, 0XBFD25E83} }, -/**/ {{0XFB0E8AC8, 0X3FB36DC9} }, -/**/ {{0XAD5D66CA, 0X3F9C0331} }, -/**/ {{0XFEDB1E8B, 0XBFA89EC9} } }, -/**/ {{{0X5FB8DEB8, 0X3FEB4001} }, -/**/ {{0XD137C500, 0X3FE692A4} }, -/**/ {{0XABFF668E, 0X3FE28C8B} }, -/**/ {{0XD8E71E0A, 0XBFD24FE5} }, -/**/ {{0X1297317A, 0X3FB38955} }, -/**/ {{0X1D844655, 0X3F9B0EA3} }, -/**/ {{0X6914067D, 0XBFA84624} } }, -/**/ {{{0X386C27B9, 0X3FEB6000} }, -/**/ {{0X8CDF6FC0, 0X3FE6A527} }, -/**/ {{0XC5758DB8, 0X3FE27A43} }, -/**/ {{0X59CADCE0, 0XBFD24135} }, -/**/ {{0XEE34AE91, 0X3FB3A3E9} }, -/**/ {{0X1C5FFF05, 0X3F9A1DA8} }, -/**/ {{0X9EC8AAC6, 0XBFA7EDE4} } }, -/**/ {{{0XD1EFDDB3, 0X3FEB8000} }, -/**/ {{0X0ACCB660, 0X3FE6B799} }, -/**/ {{0X9983AAB2, 0X3FE26809} }, -/**/ {{0X76047E08, 0XBFD23270} }, -/**/ {{0XF132139B, 0X3FB3BD90} }, -/**/ {{0X58DEB3E1, 0X3F993010} }, -/**/ {{0X2D194CE9, 0XBFA79610} } }, -/**/ {{{0X42CC4047, 0X3FEB9FFE} }, -/**/ {{0X86445E60, 0X3FE6C9F6} }, -/**/ {{0X069F871F, 0X3FE255E0} }, -/**/ {{0X25461639, 0XBFD2239A} }, -/**/ {{0XA926C127, 0X3FB3D649} }, -/**/ {{0XC5A21F70, 0X3F9845FB} }, -/**/ {{0X68E20BE6, 0XBFA73EAC} } }, -/**/ {{{0X951AEAAD, 0X3FEBC001} }, -/**/ {{0X3C4E45A0, 0X3FE6DC45} }, -/**/ {{0XFF6573B0, 0X3FE243C1} }, -/**/ {{0XE38FA7E7, 0XBFD214AE} }, -/**/ {{0X5EA1330F, 0X3FB3EE1E} }, -/**/ {{0X2BCCE6DF, 0X3F975F24} }, -/**/ {{0X6F3902C5, 0XBFA6E7BE} } }, -/**/ {{{0X6616FE11, 0X3FEBDFFE} }, -/**/ {{0X27106FE0, 0X3FE6EE7E} }, -/**/ {{0X97B587F0, 0X3FE231B6} }, -/**/ {{0X240FEF32, 0XBFD205B5} }, -/**/ {{0X44EB818C, 0X3FB40509} }, -/**/ {{0X108160F9, 0X3F967BDE} }, -/**/ {{0X271D18AD, 0XBFA6914B} } }, -/**/ {{{0X54511C72, 0X3FEBFFFF} }, -/**/ {{0X643BBB40, 0X3FE700A7} }, -/**/ {{0XE1823C8B, 0X3FE21FB7} }, -/**/ {{0X9A854F7A, 0XBFD1F6A8} }, -/**/ {{0X71F04837, 0X3FB41B15} }, -/**/ {{0XBBD10F7C, 0X3F959BD8} }, -/**/ {{0X41F03711, 0XBFA63B57} } }, -/**/ {{{0XC537593E, 0X3FEC2000} }, -/**/ {{0XF36D6400, 0X3FE712BE} }, -/**/ {{0XF754B2D5, 0X3FE20DC7} }, -/**/ {{0X9D24DBED, 0XBFD1E78B} }, -/**/ {{0X94F485E0, 0X3FB43043} }, -/**/ {{0X122A6884, 0X3F94BF29} }, -/**/ {{0X3D2AA4E9, 0XBFA5E5E7} } }, -/**/ {{{0XDDD35719, 0X3FEC4000} }, -/**/ {{0XD7FA3000, 0X3FE724C3} }, -/**/ {{0XF2A8B1BF, 0X3FE1FBE7} }, -/**/ {{0XB25DDDF6, 0XBFD1D85F} }, -/**/ {{0XD2E3B20F, 0X3FB44495} }, -/**/ {{0X7FCC1B30, 0X3F93E5D6} }, -/**/ {{0X62D0D00F, 0XBFA590FF} } }, -/**/ {{{0X402375B6, 0X3FEC6000} }, -/**/ {{0X7DFF3720, 0X3FE736B6} }, -/**/ {{0X86C92387, 0X3FE1EA17} }, -/**/ {{0X31DDFC58, 0XBFD1C925} }, -/**/ {{0XF8B6CBC2, 0X3FB4580F} }, -/**/ {{0X00CE998E, 0X3F930FD7} }, -/**/ {{0XCB299E5F, 0XBFA53CA3} } }, -/**/ {{{0X19904FE4, 0X3FEC7FFF} }, -/**/ {{0X0F395860, 0X3FE74897} }, -/**/ {{0XA825BA33, 0X3FE1D856} }, -/**/ {{0XA75E0FC5, 0XBFD1B9DC} }, -/**/ {{0X79F8FD7D, 0X3FB46AB5} }, -/**/ {{0XA5A90AFE, 0X3F923D23} }, -/**/ {{0X5D2F574B, 0XBFA4E8D8} } }, -/**/ {{{0XF9E2409D, 0X3FEC9FFE} }, -/**/ {{0X79E7F1C0, 0X3FE75A66} }, -/**/ {{0X8740D2E9, 0X3FE1C6A4} }, -/**/ {{0XF198392C, 0XBFD1AA85} }, -/**/ {{0X808C583A, 0X3FB47C8A} }, -/**/ {{0X857F2526, 0X3F916DAC} }, -/**/ {{0XD0477576, 0XBFA495A0} } }, -/**/ {{{0XE038EF72, 0X3FECC001} }, -/**/ {{0XE6815140, 0X3FE76C25} }, -/**/ {{0X19BDADF8, 0X3FE1B500} }, -/**/ {{0XB4A469AE, 0XBFD19B20} }, -/**/ {{0X42387EA2, 0X3FB48D93} }, -/**/ {{0X7305BAF5, 0X3F90A15F} }, -/**/ {{0XACAE4E17, 0XBFA44300} } }, -/**/ {{{0XEB72037F, 0X3FECDFFE} }, -/**/ {{0X7A7A4AA0, 0X3FE77DD0} }, -/**/ {{0X4F1F6702, 0X3FE1A36E} }, -/**/ {{0XD0992CF8, 0XBFD18BB1} }, -/**/ {{0X5AA4990D, 0X3FB49DCE} }, -/**/ {{0X63759665, 0X3F8FB0DD} }, -/**/ {{0X4D2F0C0F, 0XBFA3F0FB} } }, -/**/ {{{0XEA4839ED, 0X3FECFFFF} }, -/**/ {{0XB17088C0, 0X3FE78F6B} }, -/**/ {{0XCF32122F, 0X3FE191E9} }, -/**/ {{0X220400AC, 0XBFD17C35} }, -/**/ {{0X0A159641, 0X3FB4AD44} }, -/**/ {{0X80894CA9, 0X3F8E252C} }, -/**/ {{0XDF89C265, 0XBFA39F93} } }, -/**/ {{{0XEC3EC8B2, 0X3FED1FFD} }, -/**/ {{0XC8C6C880, 0X3FE7A0F3} }, -/**/ {{0X729F01D6, 0X3FE18076} }, -/**/ {{0X98515540, 0XBFD16CAE} }, -/**/ {{0X1B0933FF, 0X3FB4BBF4} }, -/**/ {{0XE09A60CD, 0X3F8C9FF5} }, -/**/ {{0X662A5704, 0XBFA34ECD} } }, -/**/ {{{0X7084EDD4, 0X3FED3FFF} }, -/**/ {{0X5F02F220, 0X3FE7B26C} }, -/**/ {{0XB9973206, 0X3FE16F10} }, -/**/ {{0X9E1E0A54, 0XBFD15D1B} }, -/**/ {{0XAC2C9A30, 0X3FB4C9E4} }, -/**/ {{0XEFCE76CC, 0X3F8B20DD} }, -/**/ {{0XB888BC37, 0XBFA2FEAA} } }, -/**/ {{{0X8D728E7C, 0X3FED5FFE} }, -/**/ {{0X488D7E80, 0X3FE7C3D2} }, -/**/ {{0XE622A5A7, 0X3FE15DBB} }, -/**/ {{0XA305CEB2, 0XBFD14D7F} }, -/**/ {{0X417BF1C7, 0X3FB4D716} }, -/**/ {{0XE19FE239, 0X3F89A81E} }, -/**/ {{0X84DDAD07, 0XBFA2AF2E} } }, -/**/ {{{0X70AA3B03, 0X3FED7FFF} }, -/**/ {{0XDB239580, 0X3FE7D527} }, -/**/ {{0XBE4FEA01, 0X3FE14C75} }, -/**/ {{0X2AD706AA, 0XBFD13DD9} }, -/**/ {{0XB49D32AA, 0X3FB4E38D} }, -/**/ {{0X37DF2B6D, 0X3F88357A} }, -/**/ {{0X507CD77B, 0XBFA2605B} } }, -/**/ {{{0X1434FBA3, 0X3FED9FFF} }, -/**/ {{0X82C8A720, 0X3FE7E66B} }, -/**/ {{0XED9B7FED, 0X3FE13B3F} }, -/**/ {{0X3AC9D646, 0XBFD12E2A} }, -/**/ {{0XE7B01CF5, 0X3FB4EF4C} }, -/**/ {{0XD25FD52D, 0X3F86C905} }, -/**/ {{0X798666EF, 0XBFA21233} } }, -/**/ {{{0XA8C8DE8C, 0X3FEDBFFE} }, -/**/ {{0XF4A0A520, 0X3FE7F79D} }, -/**/ {{0XD7FC2119, 0X3FE12A19} }, -/**/ {{0XC6BE19DF, 0XBFD11E72} }, -/**/ {{0X634E1B91, 0X3FB4FA57} }, -/**/ {{0X47F96DF5, 0X3F8562A6} }, -/**/ {{0X373AF599, 0XBFA1C4B9} } }, -/**/ {{{0X26573DF5, 0X3FEDE000} }, -/**/ {{0X4DBCB960, 0X3FE808C0} }, -/**/ {{0X7903E4B9, 0X3FE11902} }, -/**/ {{0X5CDFED06, 0XBFD10EB2} }, -/**/ {{0XCCA681FA, 0X3FB504B0} }, -/**/ {{0X6F3CDE09, 0X3F840238} }, -/**/ {{0X9BA8FA6A, 0XBFA177EE} } }, -/**/ {{{0X35009B66, 0X3FEDFFFE} }, -/**/ {{0XC2CB5340, 0X3FE819CF} }, -/**/ {{0XB1C942B5, 0X3FE107FC} }, -/**/ {{0X230D7D92, 0XBFD0FEEC} }, -/**/ {{0X75C5B4F1, 0X3FB50E5A} }, -/**/ {{0XE3C139D8, 0X3F82A7E8} }, -/**/ {{0X93FA642B, 0XBFA12BD5} } }, -/**/ {{{0X492D4C68, 0X3FEE2000} }, -/**/ {{0X5CCB8680, 0X3FE82AD0} }, -/**/ {{0X928E55DF, 0X3FE0F704} }, -/**/ {{0XEE0B0721, 0XBFD0EF1C} }, -/**/ {{0X937BFB74, 0X3FB51759} }, -/**/ {{0X2BC9FDDB, 0X3F815359} }, -/**/ {{0XEA1D1824, 0XBFA0E06F} } }, -/**/ {{{0X9412BB65, 0X3FEE4000} }, -/**/ {{0X14001A60, 0X3FE83BBF} }, -/**/ {{0X37F485DA, 0X3FE0E61D} }, -/**/ {{0X1B2BD37D, 0XBFD0DF48} }, -/**/ {{0X64024D14, 0X3FB51FAF} }, -/**/ {{0X9B849698, 0X3F8004B9} }, -/**/ {{0X450A2434, 0XBFA095BF} } }, -/**/ {{{0X4758EF2F, 0X3FEE5FFF} }, -/**/ {{0X1531C180, 0X3FE84C9C} }, -/**/ {{0X8B7FECE7, 0X3FE0D546} }, -/**/ {{0X105BFE1E, 0XBFD0CF6E} }, -/**/ {{0XF9C5E03A, 0X3FB5275E} }, -/**/ {{0X17AA1137, 0X3F7D77F2} }, -/**/ {{0X2A6891E1, 0XBFA04BC5} } }, -/**/ {{{0X380F819F, 0X3FEE8000} }, -/**/ {{0X74CCC060, 0X3FE85D69} }, -/**/ {{0X8F1DA5B5, 0X3FE0C47E} }, -/**/ {{0X62AD700F, 0XBFD0BF8D} }, -/**/ {{0X1F3FBC2B, 0X3FB52E6C} }, -/**/ {{0XEE24AD7D, 0X3F7AF1C3} }, -/**/ {{0XFECE26C9, 0XBFA00282} } }, -/**/ {{{0XA6D8CB7B, 0X3FEEA000} }, -/**/ {{0XD00E3A60, 0X3FE86E25} }, -/**/ {{0XBA314D62, 0X3FE0B3C6} }, -/**/ {{0XE7CB2D84, 0XBFD0AFA7} }, -/**/ {{0X08E9071F, 0X3FB534D9} }, -/**/ {{0X4CE5E5C9, 0X3F787704} }, -/**/ {{0X0EB7C9D5, 0XBF9F73F4} } }, -/**/ {{{0X5A13BA60, 0X3FEEC000} }, -/**/ {{0X19B163E0, 0X3FE87ED1} }, -/**/ {{0X2EBB7AD7, 0X3FE0A31F} }, -/**/ {{0X33A3FCE1, 0XBFD09FBE} }, -/**/ {{0X89D9AF5D, 0X3FB53AA8} }, -/**/ {{0XF7F7040B, 0X3F760799} }, -/**/ {{0XD3F0B3FB, 0XBF9EE456} } }, -/**/ {{{0X58F8DD18, 0X3FEEDFFF} }, -/**/ {{0X6681CA80, 0X3FE88F6B} }, -/**/ {{0XEC4360B3, 0X3FE09287} }, -/**/ {{0XB7CE07E5, 0XBFD08FD0} }, -/**/ {{0X7BDEDD3F, 0X3FB53FDD} }, -/**/ {{0X70C52E66, 0X3F73A366} }, -/**/ {{0X5DCA7315, 0XBF9E5630} } }, -/**/ {{{0XBE033400, 0X3FEEFFFF} }, -/**/ {{0XDD4D7960, 0X3FE89FF5} }, -/**/ {{0XDFFE15BD, 0X3FE081FF} }, -/**/ {{0XDAE56C0F, 0XBFD07FDE} }, -/**/ {{0XF84D6F5D, 0X3FB5447A} }, -/**/ {{0X7982941E, 0X3F714A24} }, -/**/ {{0X81E68835, 0XBF9DC982} } }, -/**/ {{{0XE6B5125D, 0X3FEF2001} }, -/**/ {{0XBBE88160, 0X3FE8B070} }, -/**/ {{0XDF7122E2, 0X3FE07186} }, -/**/ {{0XDE905325, 0XBFD06FE8} }, -/**/ {{0XB5DEEC7A, 0X3FB54883} }, -/**/ {{0XB4A186D5, 0X3F6DF762} }, -/**/ {{0XDE20F495, 0XBF9D3E4E} } }, -/**/ {{{0XF770E0DB, 0X3FEF3FFD} }, -/**/ {{0X09E96380, 0X3FE8C0D8} }, -/**/ {{0XF5A576A9, 0X3FE06120} }, -/**/ {{0X1D2912FF, 0XBFD05FF3} }, -/**/ {{0X8CD1001F, 0X3FB54BF9} }, -/**/ {{0X6E90DC16, 0X3F6970FC} }, -/**/ {{0XD8EB587E, 0XBF9CB496} } }, -/**/ {{{0X4E16DA33, 0X3FEF5FFE} }, -/**/ {{0X29BCCDC0, 0X3FE8D131} }, -/**/ {{0XD33BA4E9, 0X3FE050C8} }, -/**/ {{0XD74C83D2, 0XBFD04FF8} }, -/**/ {{0X592BB252, 0X3FB54EE0} }, -/**/ {{0X7193EEB5, 0X3F64FF61} }, -/**/ {{0XA459AC86, 0XBF9C2C5B} } }, -/**/ {{{0X4576FF2E, 0X3FEF8000} }, -/**/ {{0XCCE443A0, 0X3FE8E17A} }, -/**/ {{0XD8A97B6C, 0X3FE0407F} }, -/**/ {{0XC91B3E55, 0XBFD03FFB} }, -/**/ {{0X5F3357F7, 0X3FB5513A} }, -/**/ {{0X14C92B53, 0X3F60A2BA} }, -/**/ {{0X3E70DF71, 0XBF9BA59E} } }, -/**/ {{{0X39B6A330, 0X3FEF9FFF} }, -/**/ {{0XA7F515A0, 0X3FE8F1B2} }, -/**/ {{0X63064158, 0X3FE03048} }, -/**/ {{0XACBAADA8, 0XBFD02FFE} }, -/**/ {{0XF27448C0, 0X3FB55309} }, -/**/ {{0X4850006B, 0X3F58B6D6} }, -/**/ {{0X742323DF, 0XBF9B205F} } }, -/**/ {{{0XAA76C0B9, 0X3FEFC001} }, -/**/ {{0X15D66D80, 0X3FE901DC} }, -/**/ {{0X28D9B4AA, 0X3FE0201F} }, -/**/ {{0XA98D4C38, 0XBFD01FFE} }, -/**/ {{0X089780F8, 0X3FB55452} }, -/**/ {{0X7F35C5BB, 0X3F5050B5} }, -/**/ {{0XE19247AF, 0XBF9A9C9F} } }, -/**/ {{{0X39A592CA, 0X3FEFDFFE} }, -/**/ {{0X6D88A780, 0X3FE911F2} }, -/**/ {{0XE40C6538, 0X3FE01008} }, -/**/ {{0XD31688DE, 0XBFD01000} }, -/**/ {{0XE32F1816, 0X3FB55514} }, -/**/ {{0X4E1628D2, 0X3F402A15} }, -/**/ {{0XF4FAF5A0, 0XBF9A1A5F} } }, -/**/ {{{0X8E92D1B0, 0X3FEFF801} }, -/**/ {{0X9BB4BF00, 0X3FE91DFB} }, -/**/ {{0XB884C5A9, 0X3FE003FF} }, -/**/ {{0X3876A954, 0XBFD003FF} }, -/**/ {{0X5539DDFB, 0X3FB55551} }, -/**/ {{0X7B95E6C2, 0X3F2007E7} }, -/**/ {{0X18A3BA58, 0XBF99B9A7} } }, - }; - - static const number - hij[241][16] = { /* x0,hij for (1/16,1) */ -/**/ {{{0x00000000, 0x3fb04000} }, -/**/ {{0x1c06693d, 0x3fb03a6d} }, -/**/ {{0xd4e7f128, 0xbc428a02} }, -/**/ {{0xe92592ae, 0x3fefdf1f} }, -/**/ {{0xb5490162, 0x3c88bfc0} }, -/**/ {{0x8f7e4151, 0xbfb01ead} }, -/**/ {{0x0b64d205, 0xbc5395e8} }, -/**/ {{0x433dd49b, 0xbfd4d29f} }, -/**/ {{0x4aa42633, 0xbc75b19d} }, -/**/ {{0xce35961d, 0x3fafda41} }, -/**/ {{0x425d7696, 0x3c4e6a5f} }, -/**/ {{0x6c1bb5e2, 0x3fc814dd} }, -/**/ {{0x2b33739f, 0xbfaf4cb7} }, -/**/ {{0xc267d8ec, 0xbfc048b2} }, -/**/ {{0xe8ababc6, 0x3fae9649} }, -/**/ {{0xfe802692, 0x3fb78293} } }, -/**/ {{{0x00000000, 0x3fb10000} }, -/**/ {{0xa71d52a7, 0x3fb0f99e} }, -/**/ {{0xeec3624f, 0xbc22069f} }, -/**/ {{0x9a49d2a9, 0x3fefdc08} }, -/**/ {{0x68b2ce25, 0x3c7780f7} }, -/**/ {{0x9da73e1d, 0xbfb0d9de} }, -/**/ {{0xa1a487bf, 0x3c4ebf46} }, -/**/ {{0xd13ea108, 0xbfd4c669} }, -/**/ {{0xebb4528c, 0x3c7354bc} }, -/**/ {{0x789374c1, 0x3fb0a137} }, -/**/ {{0xc3f2c5c2, 0xbc56c223} }, -/**/ {{0x79c60cda, 0x3fc7f0e7} }, -/**/ {{0xcdcc7b81, 0xbfb05062} }, -/**/ {{0xc5266783, 0xbfc019e4} }, -/**/ {{0xf2540289, 0x3fafd0b2} }, -/**/ {{0xf6d3cd8a, 0x3fb71107} } }, -/**/ {{{0x00000000, 0x3fb20000} }, -/**/ {{0xbf082d59, 0x3fb1f86d} }, -/**/ {{0x7732ef81, 0xbc4095dc} }, -/**/ {{0x01722b81, 0x3fefd7b3} }, -/**/ {{0x8a212e02, 0xbc5e618c} }, -/**/ {{0xee4e9cfa, 0xbfb1d2c5} }, -/**/ {{0x29abece0, 0x3c426273} }, -/**/ {{0x37eb7f46, 0xbfd4b551} }, -/**/ {{0x01d8bf12, 0x3c73b360} }, -/**/ {{0x6adb6a7c, 0x3fb18fa7} }, -/**/ {{0x398999ad, 0xbc5c00d8} }, -/**/ {{0xf4a7cff3, 0x3fc7bea5} }, -/**/ {{0x61f84829, 0xbfb13008} }, -/**/ {{0xa8e135a1, 0xbfbfb14f} }, -/**/ {{0x4324f177, 0x3fb0b532} }, -/**/ {{0x3498dd9d, 0x3fb6734a} } }, -/**/ {{{0x00000000, 0x3fb30000} }, -/**/ {{0x318a4a9a, 0x3fb2f719} }, -/**/ {{0x79b9801f, 0x3c03fd17} }, -/**/ {{0x48e238fe, 0x3fefd31f} }, -/**/ {{0xd8c45327, 0xbc876a7a} }, -/**/ {{0x852096e2, 0xbfb2cada} }, -/**/ {{0x11efd787, 0x3c460860} }, -/**/ {{0x2e476a39, 0xbfd4a34b} }, -/**/ {{0xeb11ee51, 0x3c7254f2} }, -/**/ {{0xc54ae225, 0x3fb27c13} }, -/**/ {{0x4ae66f0c, 0x3c513096} }, -/**/ {{0xef0d59d0, 0x3fc789ca} }, -/**/ {{0x6d9aaa8c, 0xbfb20c06} }, -/**/ {{0x846ba912, 0xbfbf2885} }, -/**/ {{0xc697ef5e, 0x3fb17c5f} }, -/**/ {{0xcad31e6e, 0x3fb5ce93} } }, -/**/ {{{0x00000000, 0x3fb40000} }, -/**/ {{0x0e7c559d, 0x3fb3f59f} }, -/**/ {{0x285df847, 0x3c5ac4ce} }, -/**/ {{0xa6ab93e9, 0x3fefce4d} }, -/**/ {{0x18a97736, 0xbc6be46b} }, -/**/ {{0x4d22b635, 0xbfb3c211} }, -/**/ {{0x6950679f, 0x3c42033c} }, -/**/ {{0xc4d74033, 0xbfd49059} }, -/**/ {{0xd7e376aa, 0x3c57dd7c} }, -/**/ {{0xc0896a7c, 0x3fb36662} }, -/**/ {{0xd79232cf, 0xbc36cf6a} }, -/**/ {{0xa13a97a2, 0x3fc75261} }, -/**/ {{0x5fdd1509, 0xbfb2e431} }, -/**/ {{0x6e52db32, 0xbfbe9999} }, -/**/ {{0xb0a71e9f, 0x3fb23da4} }, -/**/ {{0xe3bc8178, 0x3fb52335} } }, -/**/ {{{0x00000000, 0x3fb50000} }, -/**/ {{0x677292fb, 0x3fb4f3fd} }, -/**/ {{0x6264979e, 0x3c4008d3} }, -/**/ {{0x53a1ee0d, 0x3fefc93e} }, -/**/ {{0x20fd2bdf, 0xbc64421a} }, -/**/ {{0x4aba88e3, 0xbfb4b85f} }, -/**/ {{0x3c9d1e89, 0x3c54f184} }, -/**/ {{0x25ae4668, 0xbfd47c7f} }, -/**/ {{0x816630d1, 0xbc7d7581} }, -/**/ {{0x07f85056, 0x3fb44e7b} }, -/**/ {{0x910bdf4f, 0x3c56d63c} }, -/**/ {{0xc439029c, 0x3fc71875} }, -/**/ {{0xf2bcfa10, 0xbfb3b85e} }, -/**/ {{0x9707b205, 0xbfbe04bb} }, -/**/ {{0x95e3e0cc, 0x3fb2f8c6} }, -/**/ {{0x8093431b, 0x3fb47184} } }, -/**/ {{{0x00000000, 0x3fb60000} }, -/**/ {{0x4fd2d7b2, 0x3fb5f232} }, -/**/ {{0x4401318e, 0x3c58a8da} }, -/**/ {{0x8b549418, 0x3fefc3f1} }, -/**/ {{0x836f8130, 0x3c34d896} }, -/**/ {{0x9cdd92e7, 0xbfb5adb9} }, -/**/ {{0xeb397cc3, 0x3c4d4161} }, -/**/ {{0x93f8f1dc, 0xbfd467bd} }, -/**/ {{0xffc760ad, 0xbc609d7b} }, -/**/ {{0xbea6b2fe, 0x3fb53443} }, -/**/ {{0x4b24f5db, 0x3c5eb03c} }, -/**/ {{0x8de3d005, 0x3fc6dc13} }, -/**/ {{0x37d2d99d, 0xbfb48866} }, -/**/ {{0xf6663fcb, 0xbfbd6a1d} }, -/**/ {{0x0adff464, 0x3fb3ad8e} }, -/**/ {{0x4159c223, 0x3fb3b9d6} } }, -/**/ {{{0x00000000, 0x3fb70000} }, -/**/ {{0xdcea4b0d, 0x3fb6f03b} }, -/**/ {{0x512fa17d, 0xbc33f00e} }, -/**/ {{0x8c07a436, 0x3fefbe67} }, -/**/ {{0x46250d6f, 0xbc84baaa} }, -/**/ {{0x7e3ba4c7, 0xbfb6a215} }, -/**/ {{0x54503f8d, 0xbc3504e7} }, -/**/ {{0x6b82d03a, 0xbfd45217} }, -/**/ {{0xbebdd1db, 0x3c7d1f0d} }, -/**/ {{0x841d5604, 0x3fb617a4} }, -/**/ {{0x6681c436, 0xbc47168b} }, -/**/ {{0xaccec6ce, 0x3fc69d47} }, -/**/ {{0xa4715800, 0xbfb5541f} }, -/**/ {{0x335a1c1b, 0xbfbcc9f4} }, -/**/ {{0xbac0061f, 0x3fb45bc6} }, -/**/ {{0x2b3853b6, 0x3fb2fc84} } }, -/**/ {{{0x00000000, 0x3fb80000} }, -/**/ {{0x2602f10f, 0x3fb7ee18} }, -/**/ {{0x4c0c3d98, 0xbc5cfb65} }, -/**/ {{0x96acfacc, 0x3fefb8a0} }, -/**/ {{0x18495af3, 0xbc82962e} }, -/**/ {{0x46635c89, 0xbfb79568} }, -/**/ {{0xa6bfd498, 0x3c5ac468} }, -/**/ {{0x2037b997, 0xbfd43b8f} }, -/**/ {{0xe2f12373, 0xbc72ad53} }, -/**/ {{0x7900c4ee, 0x3fb6f885} }, -/**/ {{0x0aef1f9d, 0x3c53145d} }, -/**/ {{0x4409ba0e, 0x3fc65c1f} }, -/**/ {{0x1d176e0c, 0xbfb61b65} }, -/**/ {{0x8ad65152, 0xbfbc2473} }, -/**/ {{0x7bc246c1, 0x3fb5033f} }, -/**/ {{0x6db30b46, 0x3fb239e9} } }, -/**/ {{{0x00000000, 0x3fb90000} }, -/**/ {{0x4478fb28, 0x3fb8ebc5} }, -/**/ {{0x0cad24cc, 0x3c473288} }, -/**/ {{0xeedcd6d7, 0x3fefb29c} }, -/**/ {{0x23ea50f0, 0x3c8efa9e} }, -/**/ {{0x6ae09982, 0xbfb887a7} }, -/**/ {{0x53801511, 0x3c5b2275} }, -/**/ {{0x3da0757c, 0xbfd42427} }, -/**/ {{0x311c7ac8, 0xbc7199e5} }, -/**/ {{0x4388717b, 0x3fb7d6cf} }, -/**/ {{0x3dd070b4, 0xbc5c4eb2} }, -/**/ {{0xe6c2b5f3, 0x3fc618a7} }, -/**/ {{0x00313569, 0xbfb6de12} }, -/**/ {{0xb6316619, 0xbfbb79d2} }, -/**/ {{0x61af5c21, 0x3fb5a3ca} }, -/**/ {{0x26e60289, 0x3fb17263} } }, -/**/ {{{0x00000000, 0x3fba0000} }, -/**/ {{0x53cfdcf1, 0x3fb9e941} }, -/**/ {{0x1d69c47e, 0x3c5a332e} }, -/**/ {{0xdace3776, 0x3fefac5c} }, -/**/ {{0x1ad91ab5, 0xbc8c9a78} }, -/**/ {{0x8054ad75, 0xbfb978c8} }, -/**/ {{0x8ed66c17, 0xbc5e35b8} }, -/**/ {{0x665afed1, 0xbfd40be2} }, -/**/ {{0x08ef10fb, 0x3c62eeef} }, -/**/ {{0x13c989d2, 0x3fb8b26b} }, -/**/ {{0xbfeab3ba, 0x3c329f11} }, -/**/ {{0x93c8f97c, 0x3fc5d2ef} }, -/**/ {{0x30234881, 0xbfb79c03} }, -/**/ {{0xd0f650c8, 0xbfbaca49} }, -/**/ {{0xce2dcccc, 0x3fb63d3c} }, -/**/ {{0x26fb0af2, 0x3fb0a650} } }, -/**/ {{{0x00000000, 0x3fbb0000} }, -/**/ {{0x71c722b8, 0x3fbae68a} }, -/**/ {{0x6910b9db, 0x3c4c014e} }, -/**/ {{0xa34ef42b, 0x3fefa5e0} }, -/**/ {{0xeb56d5b9, 0xbc836583} }, -/**/ {{0x3b881779, 0xbfba68c1} }, -/**/ {{0x13a09314, 0xbc473a0d} }, -/**/ {{0x538e939c, 0xbfd3f2c3} }, -/**/ {{0xee53e648, 0xbc68ed49} }, -/**/ {{0xa7d45973, 0x3fb98b42} }, -/**/ {{0x461ca7c4, 0xbc523943} }, -/**/ {{0xb0f2e2bb, 0x3fc58b04} }, -/**/ {{0x1c9d23dc, 0xbfb85517} }, -/**/ {{0x3e3b5a66, 0xbfba1612} }, -/**/ {{0x7ef1d0b9, 0x3fb6cf6f} }, -/**/ {{0x6617b315, 0x3fafac21} } }, -/**/ {{{0x00000000, 0x3fbc0000} }, -/**/ {{0xbe6f07c3, 0x3fbbe39e} }, -/**/ {{0x29a05987, 0x3c5f7b8f} }, -/**/ {{0x93bb9192, 0x3fef9f28} }, -/**/ {{0x7cd1bdab, 0x3c78260b} }, -/**/ {{0x72759741, 0xbfbb5787} }, -/**/ {{0xa6767247, 0x3c52f93f} }, -/**/ {{0xd45bbe91, 0xbfd3d8cc} }, -/**/ {{0x2edc0762, 0x3c664839} }, -/**/ {{0x4fa31d26, 0x3fba6140} }, -/**/ {{0x97891510, 0x3c400647} }, -/**/ {{0x0668fd66, 0x3fc540f6} }, -/**/ {{0xcb2f6e8f, 0xbfb9092d} }, -/**/ {{0x8d902073, 0xbfb95d66} }, -/**/ {{0x99c53d16, 0x3fb75a3e} }, -/**/ {{0x8f475e61, 0x3fae040c} } }, -/**/ {{{0x00000000, 0x3fbd0000} }, -/**/ {{0x5c3cca32, 0x3fbce07c} }, -/**/ {{0x425918a7, 0x3c4138e6} }, -/**/ {{0xf9f6d421, 0x3fef9834} }, -/**/ {{0x8c22a239, 0x3c6f3089} }, -/**/ {{0x1d4e69a5, 0xbfbc4511} }, -/**/ {{0xd2083ce8, 0x3c254c0f} }, -/**/ {{0xcd488978, 0xbfd3be01} }, -/**/ {{0x6362ec0f, 0x3c5612db} }, -/**/ {{0xf0d94873, 0x3fbb344e} }, -/**/ {{0xfdf7db72, 0xbc182beb} }, -/**/ {{0xb9d86c04, 0x3fc4f4d2} }, -/**/ {{0xdf238807, 0xbfb9b828} }, -/**/ {{0x5f93ffd6, 0xbfb8a082} }, -/**/ {{0xb6650b0c, 0x3fb7dd89} }, -/**/ {{0xb62676ef, 0x3fac5526} } }, -/**/ {{{0x00000000, 0x3fbe0000} }, -/**/ {{0x701eba6e, 0x3fbddd21} }, -/**/ {{0xcd76fe58, 0x3c594eff} }, -/**/ {{0x266112ba, 0x3fef9106} }, -/**/ {{0x6b7e18b1, 0x3c74c302} }, -/**/ {{0x5777816c, 0xbfbd3154} }, -/**/ {{0x1f9dbddd, 0x3c5dc7e4} }, -/**/ {{0x37a90881, 0xbfd3a265} }, -/**/ {{0xeb7ba840, 0xbc75bd61} }, -/**/ {{0x0a52514b, 0x3fbc045a} }, -/**/ {{0xcff49a99, 0xbc35ca88} }, -/**/ {{0x498eeb56, 0x3fc4a6aa} }, -/**/ {{0xa09232cf, 0xbfba61eb} }, -/**/ {{0x4a464027, 0xbfb7dfa2} }, -/**/ {{0xe633c053, 0x3fb85933} }, -/**/ {{0x3f920107, 0x3faaa036} } }, -/**/ {{{0x00000000, 0x3fbf0000} }, -/**/ {{0x2190043b, 0x3fbed98c} }, -/**/ {{0x592c7b13, 0xbc23a598} }, -/**/ {{0x6bcf4ad8, 0x3fef899c} }, -/**/ {{0x912c09b0, 0x3c55fd73} }, -/**/ {{0x607f91a0, 0xbfbe1c47} }, -/**/ {{0x5b5db022, 0x3c576677} }, -/**/ {{0x21046f5f, 0xbfd385fa} }, -/**/ {{0x4487f4b8, 0x3c7f01c3} }, -/**/ {{0xb77f2d51, 0x3fbcd14d} }, -/**/ {{0x30a2ccfe, 0x3c57a86d} }, -/**/ {{0x8782b530, 0x3fc4568c} }, -/**/ {{0x02b7ad2d, 0xbfbb065b} }, -/**/ {{0xbd215555, 0xbfb71b03} }, -/**/ {{0xb9c1c1de, 0x3fb8cd23} }, -/**/ {{0x8dbfa69b, 0x3fa8e602} } }, -/**/ {{{0x00000000, 0x3fc00000} }, -/**/ {{0x9aac2f6e, 0x3fbfd5ba} }, -/**/ {{0x86760c17, 0xbc4cd376} }, -/**/ {{0x1f81f820, 0x3fef81f8} }, -/**/ {{0x1f81f820, 0xbc8f81f8} }, -/**/ {{0x9d0dc11b, 0xbfbf05e0} }, -/**/ {{0x1d821725, 0xbc35a199} }, -/**/ {{0xaa76e1d7, 0xbfd368c3} }, -/**/ {{0xc796f8cd, 0xbc672d4c} }, -/**/ {{0xb391c2e3, 0x3fbd9b16} }, -/**/ {{0x8086c51d, 0x3c58051b} }, -/**/ {{0x94488c86, 0x3fc40489} }, -/**/ {{0xa98401c8, 0xbfbba55d} }, -/**/ {{0xe5127e64, 0xbfb652e4} }, -/**/ {{0x442e53ae, 0x3fb93943} }, -/**/ {{0x86286f75, 0x3fa72753} } }, -/**/ {{{0x00000000, 0x3fc08000} }, -/**/ {{0x84212b3e, 0x3fc068d5} }, -/**/ {{0x83019bfd, 0xbc69e2d2} }, -/**/ {{0x991bb133, 0x3fef7a19} }, -/**/ {{0x66627723, 0x3c7a956a} }, -/**/ {{0x97c8e137, 0xbfbfee16} }, -/**/ {{0x66dbe7af, 0x3c4d9399} }, -/**/ {{0x0810323a, 0xbfd34ac5} }, -/**/ {{0x6bc6c512, 0x3c6a1a57} }, -/**/ {{0x5c75a6f9, 0x3fbe61a2} }, -/**/ {{0xd75c8f85, 0xbc492b99} }, -/**/ {{0xd9fa3f20, 0x3fc3b0b1} }, -/**/ {{0xee66d309, 0xbfbc3edb} }, -/**/ {{0x905eeb33, 0xbfb58784} }, -/**/ {{0x1c65bb14, 0x3fb99d80} }, -/**/ {{0x18a09884, 0x3fa564f1} } }, -/**/ {{{0x00000000, 0x3fc10000} }, -/**/ {{0xccf40882, 0x3fc0e6ad} }, -/**/ {{0x1bb98d0d, 0xbc6d71a3} }, -/**/ {{0x32978bad, 0x3fef7201} }, -/**/ {{0x599381e9, 0x3c816476} }, -/**/ {{0x011b81fd, 0xbfc06a70} }, -/**/ {{0x9ba697ca, 0xbc422f5d} }, -/**/ {{0x802fc0a5, 0xbfd32c01} }, -/**/ {{0x08a20868, 0x3c7d8e47} }, -/**/ {{0xb59597fe, 0x3fbf24de} }, -/**/ {{0x410d31eb, 0xbc43288f} }, -/**/ {{0x070feb24, 0x3fc35b16} }, -/**/ {{0xe4565b78, 0xbfbcd2bf} }, -/**/ {{0x128768c6, 0xbfb4b922} }, -/**/ {{0x5c42a097, 0x3fb9f9cb} }, -/**/ {{0xc7f97f2e, 0x3fa39fa2} } }, -/**/ {{{0x00000000, 0x3fc18000} }, -/**/ {{0x41060850, 0x3fc16465} }, -/**/ {{0x8ae7ea92, 0x3c66bcee} }, -/**/ {{0x483f492b, 0x3fef69af} }, -/**/ {{0x57db963e, 0xbc6e3280} }, -/**/ {{0xdacaa844, 0xbfc0dd19} }, -/**/ {{0xad7fc21e, 0xbc6133c7} }, -/**/ {{0x6addaea8, 0xbfd30c7c} }, -/**/ {{0x89161c76, 0xbc71443d} }, -/**/ {{0x6a6d3cd2, 0x3fbfe4ba} }, -/**/ {{0x423ee67a, 0x3c50d4b8} }, -/**/ {{0x092e569a, 0x3fc303c7} }, -/**/ {{0x5b11d3b6, 0xbfbd60f5} }, -/**/ {{0x283b5c55, 0xbfb3e7fd} }, -/**/ {{0x9d9a6ab7, 0x3fba4e19} }, -/**/ {{0x3487cc29, 0x3fa1d82f} } }, -/**/ {{{0x00000000, 0x3fc20000} }, -/**/ {{0xfb043727, 0x3fc1e1fa} }, -/**/ {{0x14dacf8c, 0xbc4b4859} }, -/**/ {{0x38a14f5e, 0x3fef6124} }, -/**/ {{0x001f6124, 0x3c798e9e} }, -/**/ {{0x59d3fb7c, 0xbfc14f04} }, -/**/ {{0x4cc99cb2, 0x3c531efa} }, -/**/ {{0x31219b34, 0xbfd2ec39} }, -/**/ {{0x6e004611, 0xbc618697} }, -/**/ {{0x68736312, 0x3fc05092} }, -/**/ {{0x8a06e4b5, 0x3c67aad4} }, -/**/ {{0x07eca5ec, 0x3fc2aad6} }, -/**/ {{0xe19fe31c, 0xbfbde969} }, -/**/ {{0xdb6b9127, 0xbfb31455} }, -/**/ {{0xf53dd9ee, 0x3fba9a62} }, -/**/ {{0xa8e4ede0, 0x3fa00f5b} } }, -/**/ {{{0x00000000, 0x3fc28000} }, -/**/ {{0x171a535c, 0x3fc25f6e} }, -/**/ {{0xbde1a310, 0x3c67c6d7} }, -/**/ {{0x64866d22, 0x3fef5860} }, -/**/ {{0xd1f6326c, 0x3c88c6ff} }, -/**/ {{0x13c11396, 0xbfc1c02b} }, -/**/ {{0xffeb1a0f, 0xbc51b469} }, -/**/ {{0x4c571b0f, 0xbfd2cb3b} }, -/**/ {{0x2fb0b163, 0x3c6e4f76} }, -/**/ {{0xf5c213ab, 0x3fc0ad06} }, -/**/ {{0xabea9e66, 0x3c625bf2} }, -/**/ {{0x5f93bbb2, 0x3fc25054} }, -/**/ {{0xc80a32c8, 0xbfbe6c0c} }, -/**/ {{0x678d0d1e, 0xbfb23e6c} }, -/**/ {{0xebf8ae4b, 0x3fbadea2} }, -/**/ {{0x527f133b, 0x3f9c8bd7} } }, -/**/ {{{0x00000000, 0x3fc30000} }, -/**/ {{0xb2fba1ff, 0x3fc2dcbd} }, -/**/ {{0x05561534, 0x3c58f287} }, -/**/ {{0x2ee76e94, 0x3fef4f64} }, -/**/ {{0xc6da5865, 0x3c80ec89} }, -/**/ {{0xb322f867, 0xbfc23089} }, -/**/ {{0x5fcd0d6f, 0x3c4c2b54} }, -/**/ {{0x45802261, 0xbfd2a986} }, -/**/ {{0x5ae78b8a, 0xbc79a132} }, -/**/ {{0x35a9d974, 0x3fc107b3} }, -/**/ {{0xb725e335, 0x3c5ef22d} }, -/**/ {{0x9bd98832, 0x3fc1f453} }, -/**/ {{0x2057aad4, 0xbfbee8cf} }, -/**/ {{0x1e1bc3a1, 0xbfb16681} }, -/**/ {{0x759c8f58, 0x3fbb1ad8} }, -/**/ {{0x0b15b4aa, 0x3f98f941} } }, -/**/ {{{0x00000000, 0x3fc38000} }, -/**/ {{0xedeb99a4, 0x3fc359e8} }, -/**/ {{0x4e4604c6, 0xbc6a5fd7} }, -/**/ {{0xfce28238, 0x3fef462f} }, -/**/ {{0xd90595d1, 0x3c83dc01} }, -/**/ {{0xf7edfa6d, 0xbfc2a01b} }, -/**/ {{0x4a3b5c9a, 0xbc6b11fb} }, -/**/ {{0xb4959402, 0xbfd2871d} }, -/**/ {{0x2fcf7ea3, 0xbc4a3702} }, -/**/ {{0xd8d7fe8c, 0x3fc1608f} }, -/**/ {{0xf8f1d41c, 0x3c61ac60} }, -/**/ {{0x729a89ca, 0x3fc196e5} }, -/**/ {{0xbec74f31, 0xbfbf5fa3} }, -/**/ {{0x4b6c9767, 0xbfb08cd4} }, -/**/ {{0xe624ce15, 0x3fbb4f05} }, -/**/ {{0xddb2020c, 0x3f956871} } }, -/**/ {{{0x00000000, 0x3fc40000} }, -/**/ {{0xe8c6626c, 0x3fc3d6ee} }, -/**/ {{0x0ce9281b, 0x3c661a3b} }, -/**/ {{0x35b0713c, 0x3fef3cc4} }, -/**/ {{0xe69ea094, 0x3c81d0a7} }, -/**/ {{0xb7d169f0, 0xbfc30edd} }, -/**/ {{0xae999b97, 0x3c6b3394} }, -/**/ {{0x3fd62b3c, 0xbfd26405} }, -/**/ {{0xc0736df9, 0x3c73e339} }, -/**/ {{0xe8e57ee3, 0x3fc1b795} }, -/**/ {{0x0a42c7f6, 0xbc6130dc} }, -/**/ {{0xbe93b8e5, 0x3fc1381b} }, -/**/ {{0x394e1bf7, 0xbfbfd07f} }, -/**/ {{0x37bb5315, 0xbfaf634c} }, -/**/ {{0xe501e57b, 0x3fbb7b30} }, -/**/ {{0x20503792, 0x3f91dae1} } }, -/**/ {{{0x00000000, 0x3fc48000} }, -/**/ {{0xc6092a9e, 0x3fc453ce} }, -/**/ {{0xb3a5a78b, 0x3c61f653} }, -/**/ {{0x4299ace8, 0x3fef3321} }, -/**/ {{0x3a742b30, 0xbc87414c} }, -/**/ {{0xde8b2323, 0xbfc37cca} }, -/**/ {{0x7b50aedf, 0x3c649378} }, -/**/ {{0x9b13f4d0, 0xbfd24040} }, -/**/ {{0xb7dc85c0, 0x3c7e271f} }, -/**/ {{0xc9024068, 0x3fc20cbe} }, -/**/ {{0x88ef3da7, 0x3c50921f} }, -/**/ {{0x7a1f1270, 0x3fc0d808} }, -/**/ {{0xf32d5436, 0xbfc01dab} }, -/**/ {{0x02e6f09c, 0xbfadaa6d} }, -/**/ {{0x5e9cd766, 0x3fbb9f62} }, -/**/ {{0xab964c04, 0x3f8ca3fe} } }, -/**/ {{{0x00000000, 0x3fc50000} }, -/**/ {{0xa9da4f17, 0x3fc4d087} }, -/**/ {{0xf1adf158, 0x3c61f323} }, -/**/ {{0x8eeb3352, 0x3fef2947} }, -/**/ {{0x8799a164, 0x3c871eb0} }, -/**/ {{0x6e36e75c, 0xbfc3e9df} }, -/**/ {{0x4e37666f, 0x3c541555} }, -/**/ {{0x87008bd0, 0xbfd21bd3} }, -/**/ {{0xc24ff75f, 0xbc609e14} }, -/**/ {{0x36860504, 0x3fc26004} }, -/**/ {{0x1ebc8c40, 0xbc58f8ca} }, -/**/ {{0xb9f4ead3, 0x3fc076bd} }, -/**/ {{0xed70ddd5, 0xbfc05012} }, -/**/ {{0x33e194b1, 0xbfabef8a} }, -/**/ {{0x7423a91f, 0x3fbbbba6} }, -/**/ {{0xdd99da12, 0x3f859e6a} } }, -/**/ {{{0x00000000, 0x3fc58000} }, -/**/ {{0xba11570a, 0x3fc54d18} }, -/**/ {{0xf2884073, 0x3c618282} }, -/**/ {{0x87eb4d7d, 0x3fef1f37} }, -/**/ {{0xedda13e6, 0x3c8476f0} }, -/**/ {{0x7f997c7c, 0xbfc45617} }, -/**/ {{0x6423ceda, 0xbc46bf5b} }, -/**/ {{0xd0784ec7, 0xbfd1f6c1} }, -/**/ {{0xd106a8e0, 0xbc74ec12} }, -/**/ {{0x4967338d, 0x3fc2b160} }, -/**/ {{0x61339c25, 0x3c5309c0} }, -/**/ {{0xa7f42962, 0x3fc0144d} }, -/**/ {{0x73dbaeec, 0xbfc07f71} }, -/**/ {{0x2aeda9a4, 0xbfaa3322} }, -/**/ {{0x69b152b3, 0x3fbbd00c} }, -/**/ {{0x4c782821, 0x3f7d4f90} } }, -/**/ {{{0x00000000, 0x3fc60000} }, -/**/ {{0x1e3ec26a, 0x3fc5c981} }, -/**/ {{0x2c010f3d, 0xbc5054ab} }, -/**/ {{0x9cce28eb, 0x3fef14f1} }, -/**/ {{0x2708cd6e, 0xbc8b7c25} }, -/**/ {{0x42678d07, 0xbfc4c16f} }, -/**/ {{0xc1560017, 0x3c5f55ba} }, -/**/ {{0x4fccc153, 0xbfd1d10f} }, -/**/ {{0x1bcc361d, 0x3c529588} }, -/**/ {{0x74979f8c, 0x3fc300cd} }, -/**/ {{0x0bc1e891, 0xbc6b1da5} }, -/**/ {{0xfbe70208, 0x3fbf6194} }, -/**/ {{0x4b1c266f, 0xbfc0abc5} }, -/**/ {{0x3b74e858, 0xbfa875b2} }, -/**/ {{0x92e46f11, 0x3fbbdca6} }, -/**/ {{0x9de94aef, 0x3f6f0b17} } }, -/**/ {{{0x00000000, 0x3fc68000} }, -/**/ {{0xffb3aa74, 0x3fc645bf} }, -/**/ {{0x677c2cb4, 0xbc3f536b} }, -/**/ {{0x3eaa4ed6, 0x3fef0a76} }, -/**/ {{0x0b06c761, 0x3c888c52} }, -/**/ {{0xfd884489, 0xbfc52be2} }, -/**/ {{0xbe5c728a, 0x3c67ec59} }, -/**/ {{0xe80e4e0a, 0xbfd1aabf} }, -/**/ {{0xe90c909e, 0xbc71320e} }, -/**/ {{0x864781ca, 0x3fc34e46} }, -/**/ {{0x126138ee, 0x3c42fcb3} }, -/**/ {{0x013b5d4f, 0x3fbe988d} }, -/**/ {{0x122409a2, 0xbfc0d50d} }, -/**/ {{0x7bb562c1, 0xbfa6b7b6} }, -/**/ {{0x3df8dee8, 0x3fbbe18a} }, -/**/ {{0x8809e1ef, 0x3f3e4009} } }, -/**/ {{{0x00000000, 0x3fc70000} }, -/**/ {{0x898933d9, 0x3fc6c1d4} }, -/**/ {{0x7603c427, 0xbc52954a} }, -/**/ {{0xe06cfb34, 0x3feeffc5} }, -/**/ {{0x379877c2, 0xbc85c037} }, -/**/ {{0x0f53a52c, 0xbfc5956f} }, -/**/ {{0xe566376c, 0x3c4d46a2} }, -/**/ {{0x86559c11, 0xbfd183d7} }, -/**/ {{0x64734c7f, 0x3c7d2520} }, -/**/ {{0xa80eddd5, 0x3fc399c6} }, -/**/ {{0x40fbef6f, 0x3c616c26} }, -/**/ {{0xf4b571a7, 0x3fbdcda7} }, -/**/ {{0x3fd42996, 0xbfc0fb48} }, -/**/ {{0x95c85118, 0xbfa4f9a9} }, -/**/ {{0x9d795df4, 0x3fbbdecf} }, -/**/ {{0xb85bf719, 0xbf672003} } }, -/**/ {{{0x00000000, 0x3fc78000} }, -/**/ {{0xe8a7d202, 0x3fc73dbd} }, -/**/ {{0x6d4a665d, 0xbc55ad0f} }, -/**/ {{0xf6ce5590, 0x3feef4e0} }, -/**/ {{0x556900ef, 0xbc833df6} }, -/**/ {{0xedcc9488, 0xbfc5fe0f} }, -/**/ {{0xd2b9e35c, 0x3c5078de} }, -/**/ {{0x210cab36, 0xbfd15c5a} }, -/**/ {{0xf55e532a, 0x3c67fa93} }, -/**/ {{0x5efd9a41, 0x3fc3e349} }, -/**/ {{0xc8573a12, 0xbc6cf709} }, -/**/ {{0x6c903aef, 0x3fbd010a} }, -/**/ {{0x20571328, 0xbfc11e77} }, -/**/ {{0x9a1875dd, 0xbfa33c04} }, -/**/ {{0xb09ec0ce, 0x3fbbd491} }, -/**/ {{0x35537a65, 0xbf78d197} } }, -/**/ {{{0x00000000, 0x3fc80000} }, -/**/ {{0x4bce5b02, 0x3fc7b97b} }, -/**/ {{0xb4f881ca, 0x3c5347b0} }, -/**/ {{0xf8458e02, 0x3feee9c7} }, -/**/ {{0x7ba71fe1, 0xbc616380} }, -/**/ {{0x26d69eeb, 0xbfc665c2} }, -/**/ {{0xfdb5eea8, 0xbc572a33} }, -/**/ {{0xb737e8f3, 0xbfd1344b} }, -/**/ {{0x62badf41, 0xbc757b70} }, -/**/ {{0x8b929b0b, 0x3fc42aca} }, -/**/ {{0x7a8b7d91, 0x3c43cdb5} }, -/**/ {{0xf683981c, 0x3fbc32d8} }, -/**/ {{0xd22d5ecc, 0xbfc13e9a} }, -/**/ {{0xd35c8c33, 0xbfa17f3e} }, -/**/ {{0x2a73307e, 0x3fbbc2ee} }, -/**/ {{0x2bddc834, 0xbf82ee04} } }, -/**/ {{{0x00000000, 0x3fc88000} }, -/**/ {{0xe398ebc8, 0x3fc8350b} }, -/**/ {{0x32b9c90d, 0xbc55a913} }, -/**/ {{0x5cfce04c, 0x3feede7b} }, -/**/ {{0x3b51a72f, 0x3c8507c2} }, -/**/ {{0x6067718b, 0xbfc6cc82} }, -/**/ {{0xdbfc430f, 0x3c6d00ca} }, -/**/ {{0x4fbf6fe8, 0xbfd10bb0} }, -/**/ {{0x53749c72, 0x3c321748} }, -/**/ {{0x699a36ad, 0x3fc47046} }, -/**/ {{0x3994d40c, 0xbc63924c} }, -/**/ {{0x0dfb7483, 0x3fbb6338} }, -/**/ {{0x42ee5820, 0xbfc15bb5} }, -/**/ {{0x385194fc, 0xbf9f879b} }, -/**/ {{0x57d040e9, 0x3fbbaa05} }, -/**/ {{0xada71ca0, 0xbf895566} } }, -/**/ {{{0x00000000, 0x3fc90000} }, -/**/ {{0xe2879c29, 0x3fc8b06e} }, -/**/ {{0x30308c4f, 0xbc6118cd} }, -/**/ {{0x9ec57f51, 0x3feed2fb} }, -/**/ {{0xc0d106ba, 0xbc83fdc5} }, -/**/ {{0x58b40d27, 0xbfc7324d} }, -/**/ {{0xfc062163, 0x3c68e240} }, -/**/ {{0xf8b8a2bf, 0xbfd0e28b} }, -/**/ {{0x64c55b39, 0xbc7b8d8a} }, -/**/ {{0x8ff46730, 0x3fc4b3b9} }, -/**/ {{0x988563da, 0xbc5af146} }, -/**/ {{0x1277a10d, 0x3fba924c} }, -/**/ {{0x2bbfd54d, 0xbfc175c9} }, -/**/ {{0x6c522340, 0xbf9c1448} }, -/**/ {{0x044f2f6b, 0x3fbb89fa} }, -/**/ {{0xaaecc742, 0xbf8f9cc7} } }, -/**/ {{{0x00000000, 0x3fc98000} }, -/**/ {{0x7d050272, 0x3fc92ba3} }, -/**/ {{0xd0ff4764, 0xbc60d3de} }, -/**/ {{0x390b6afe, 0x3feec749} }, -/**/ {{0x4e3659ca, 0xbc5c3d17} }, -/**/ {{0xe659b3de, 0xbfc7971f} }, -/**/ {{0x373f554d, 0x3c4cab11} }, -/**/ {{0xc6b052a4, 0xbfd0b8e2} }, -/**/ {{0x6f3b74bc, 0x3c7da014} }, -/**/ {{0xf0432146, 0x3fc4f520} }, -/**/ {{0xa8027290, 0xbc6769ad} }, -/**/ {{0x3e17b570, 0x3fb9c039} }, -/**/ {{0x0d8833a4, 0xbfc18cda} }, -/**/ {{0x4627d340, 0xbf98a567} }, -/**/ {{0x5e42eff7, 0x3fbb62f1} }, -/**/ {{0x7ee3bed3, 0xbf92e10a} } }, -/**/ {{{0x00000000, 0x3fca0000} }, -/**/ {{0xe96c8626, 0x3fc9a6a8} }, -/**/ {{0xe7b4348e, 0x3c4cf601} }, -/**/ {{0xa8c932d7, 0x3feebb64} }, -/**/ {{0x79aae302, 0x3c20538d} }, -/**/ {{0xf88295fe, 0xbfc7faf6} }, -/**/ {{0x932909e9, 0xbc687a81} }, -/**/ {{0xd3f5a07b, 0xbfd08eb8} }, -/**/ {{0xfb7d6aaa, 0xbc620a05} }, -/**/ {{0xd6814372, 0x3fc53479} }, -/**/ {{0x0a0c6620, 0xbc53c682} }, -/**/ {{0x9c562d77, 0x3fb8ed23} }, -/**/ {{0x2cdd89fd, 0xbfc1a0ec} }, -/**/ {{0xfec9df82, 0xbf953bd4} }, -/**/ {{0xd9d3f0f6, 0x3fbb3512} }, -/**/ {{0x4534ccf5, 0xbf95e1ab} } }, -/**/ {{{0x00000000, 0x3fca8000} }, -/**/ {{0x601081a6, 0x3fca217e} }, -/**/ {{0xa60af374, 0xbc60def8} }, -/**/ {{0x6c7ba732, 0x3feeaf4e} }, -/**/ {{0xe91fffe1, 0x3c89fa72} }, -/**/ {{0x970642c3, 0xbfc85dcf} }, -/**/ {{0x5b7f0ad0, 0xbc5732c2} }, -/**/ {{0x3fe5c74d, 0xbfd06412} }, -/**/ {{0x4a82f9b1, 0xbc7d0053} }, -/**/ {{0xe882973d, 0x3fc571c1} }, -/**/ {{0x9090f12c, 0x3c59d9a3} }, -/**/ {{0x00f5d0e0, 0x3fb8192f} }, -/**/ {{0x8db53983, 0xbfc1b204} }, -/**/ {{0xbdd7b47e, 0xbf91d869} }, -/**/ {{0x1355a903, 0x3fbb0088} }, -/**/ {{0x724a2ad9, 0xbf98cf57} } }, -/**/ {{{0x00000000, 0x3fcb0000} }, -/**/ {{0x1b403279, 0x3fca9c23} }, -/**/ {{0xe89cca85, 0x3c60e8bb} }, -/**/ {{0x04157b4f, 0x3feea307} }, -/**/ {{0xfd8bf1f0, 0x3c8ad743} }, -/**/ {{0xe285e2fd, 0xbfc8bfa6} }, -/**/ {{0x9c834c8f, 0xbc6ce765} }, -/**/ {{0x2e38fd26, 0xbfd038f3} }, -/**/ {{0xef212a80, 0x3c6a42ec} }, -/**/ {{0x255d65d5, 0x3fc5acf7} }, -/**/ {{0xbe486771, 0xbc619fba} }, -/**/ {{0xff244e15, 0x3fb7447e} }, -/**/ {{0xeed71b69, 0xbfc1c028} }, -/**/ {{0xaceecf68, 0xbf8cf7f0} }, -/**/ {{0xb0ee161b, 0x3fbac57c} }, -/**/ {{0xefc8f53e, 0xbf9ba92d} } }, -/**/ {{{0x00000000, 0x3fcb8000} }, -/**/ {{0x574d780c, 0x3fcb1696} }, -/**/ {{0xfc15a673, 0xbc585ab8} }, -/**/ {{0xf0f2da5a, 0x3fee968e} }, -/**/ {{0x69710f0d, 0xbc6fffe1} }, -/**/ {{0x148444b5, 0xbfc9207a} }, -/**/ {{0x1802fa91, 0xbc66661a} }, -/**/ {{0xc65096ca, 0xbfd00d5f} }, -/**/ {{0x8920e744, 0x3c7f2a2e} }, -/**/ {{0xe4be288d, 0x3fc5e617} }, -/**/ {{0x99be934f, 0x3c67fa48} }, -/**/ {{0xe0d4c87a, 0x3fb66f36} }, -/**/ {{0xc5179ce8, 0xbfc1cb5f} }, -/**/ {{0x1011bb6c, 0xbf864e9c} }, -/**/ {{0x43a75476, 0x3fba841e} }, -/**/ {{0x845fc859, 0xbf9e6e5b} } }, -/**/ {{{0x00000000, 0x3fcc0000} }, -/**/ {{0x529260a2, 0x3fcb90d7} }, -/**/ {{0xd2e0e5ab, 0x3c217b10} }, -/**/ {{0xb5ccf172, 0x3fee89e6} }, -/**/ {{0x153be26a, 0x3c820357} }, -/**/ {{0x7f79bfd6, 0xbfc98046} }, -/**/ {{0xf5d60955, 0xbc0799ee} }, -/**/ {{0x650d32f4, 0xbfcfc2b8} }, -/**/ {{0x4d01b49e, 0xbc6b59de} }, -/**/ {{0xd625e475, 0x3fc61d22} }, -/**/ {{0xe23c6105, 0xbc68013f} }, -/**/ {{0x9e54f300, 0x3fb59979} }, -/**/ {{0x365c2b85, 0xbfc1d3b0} }, -/**/ {{0x0afb6b97, 0xbf7f6cc9} }, -/**/ {{0x28035c12, 0x3fba3c9c} }, -/**/ {{0x8331488a, 0xbfa08f0d} } }, -/**/ {{{0x00000000, 0x3fcc8000} }, -/**/ {{0x4d768467, 0x3fcc0ae5} }, -/**/ {{0xf55f26dc, 0xbc604cdb} }, -/**/ {{0xd6ad70cb, 0x3fee7d0e} }, -/**/ {{0xee20d17d, 0x3c8e6761} }, -/**/ {{0x8ee3fcf8, 0xbfc9df09} }, -/**/ {{0xed723e81, 0x3c62daa3} }, -/**/ {{0x3efdc9b4, 0xbfcf69d9} }, -/**/ {{0x85a20110, 0x3c6c7b6f} }, -/**/ {{0x0013c661, 0x3fc65217} }, -/**/ {{0xab1387be, 0xbc678a0c} }, -/**/ {{0xd61f268e, 0x3fb4c369} }, -/**/ {{0x146d6110, 0xbfc1d922} }, -/**/ {{0xc0b0ed0a, 0xbf726199} }, -/**/ {{0x6629c856, 0x3fb9ef27} }, -/**/ {{0xc1ea955d, 0xbfa1dbda} } }, -/**/ {{{0x00000000, 0x3fcd0000} }, -/**/ {{0x8a742e6e, 0x3fcc84bf} }, -/**/ {{0x0682ea26, 0xbc595bdd} }, -/**/ {{0xd8e205ea, 0x3fee7007} }, -/**/ {{0x7b2991c1, 0x3c816199} }, -/**/ {{0xc751a854, 0xbfca3cc0} }, -/**/ {{0x4efbc78c, 0xbc66a2fd} }, -/**/ {{0x76f43baa, 0xbfcf102a} }, -/**/ {{0x38d996b1, 0x3c6cfc38} }, -/**/ {{0xbf1a9ad6, 0x3fc684f3} }, -/**/ {{0x7c3b6690, 0x3c52eaf7} }, -/**/ {{0xc4ebba84, 0x3fb3ed29} }, -/**/ {{0xd79a6a53, 0xbfc1dbbd} }, -/**/ {{0xfd09510e, 0xbf55fa5b} }, -/**/ {{0x91c74d50, 0x3fb99bf2} }, -/**/ {{0x3002c38b, 0xbfa31d41} } }, -/**/ {{{0x00000000, 0x3fcd8000} }, -/**/ {{0x4e1d5395, 0x3fccfe65} }, -/**/ {{0x3f71eafb, 0x3c647b9a} }, -/**/ {{0x42efd10e, 0x3fee62d2} }, -/**/ {{0xa021973e, 0x3c850a65} }, -/**/ {{0xc66a1be4, 0xbfca9969} }, -/**/ {{0x3753f036, 0x3c326164} }, -/**/ {{0x6b550477, 0xbfceb5b4} }, -/**/ {{0xa3ef610f, 0xbc64cacb} }, -/**/ {{0xc4e2c295, 0x3fc6b5b8} }, -/**/ {{0x98b2ac7f, 0x3c66b228} }, -/**/ {{0x3e03bb80, 0x3fb316db} }, -/**/ {{0x99312ba1, 0xbfc1db8c} }, -/**/ {{0x8536556f, 0x3f5ce5b0} }, -/**/ {{0xa9b62abf, 0x3fb94331} }, -/**/ {{0xb36f42fc, 0xbfa452f3} } }, -/**/ {{{0x00000000, 0x3fce0000} }, -/**/ {{0xdf205736, 0x3fcd77d5} }, -/**/ {{0x1534597e, 0x3c6c648d} }, -/**/ {{0x9c86d7c6, 0x3fee556e} }, -/**/ {{0x34c9abfd, 0xbc830c25} }, -/**/ {{0x42f10c89, 0xbfcaf502} }, -/**/ {{0xf8576d95, 0xbc411261} }, -/**/ {{0x7b1596d9, 0xbfce5a7f} }, -/**/ {{0x78f7ae18, 0x3c574baa} }, -/**/ {{0x171949b1, 0x3fc6e466} }, -/**/ {{0x52f9c399, 0xbc6ff86b} }, -/**/ {{0xa3d6f244, 0x3fb2409f} }, -/**/ {{0x0dceacbf, 0xbfc1d898} }, -/**/ {{0xdc715080, 0x3f73c3b6} }, -/**/ {{0xf78687ab, 0x3fb8e519} }, -/**/ {{0x6b1251ec, 0xbfa57cac} } }, -/**/ {{{0x00000000, 0x3fce8000} }, -/**/ {{0x864c9d9e, 0x3fcdf110} }, -/**/ {{0x53bf4781, 0xbc35818b} }, -/**/ {{0x6e7576a6, 0x3fee47dd} }, -/**/ {{0x24b84595, 0x3c89d322} }, -/**/ {{0x0cc64717, 0xbfcb4f88} }, -/**/ {{0x44bb97a3, 0xbc624035} }, -/**/ {{0x046e8a3b, 0xbfcdfe94} }, -/**/ {{0xd278da00, 0xbc6078ee} }, -/**/ {{0x0e4ccbb7, 0x3fc710fc} }, -/**/ {{0x1da51f71, 0xbc58c89c} }, -/**/ {{0xe0d7022a, 0x3fb16a97} }, -/**/ {{0x7f8b58f8, 0xbfc1d2ea} }, -/**/ {{0xaf259d18, 0x3f800ed5} }, -/**/ {{0xeefd29c7, 0x3fb881e1} }, -/**/ {{0xae6aa0c1, 0xbfa69a2c} } }, -/**/ {{{0x00000000, 0x3fcf0000} }, -/**/ {{0x8e96ec4d, 0x3fce6a14} }, -/**/ {{0x2029f765, 0x3c6866b2} }, -/**/ {{0x429bd423, 0x3fee3a1f} }, -/**/ {{0x48961291, 0xbc86174a} }, -/**/ {{0x0ce18ad9, 0xbfcba8f9} }, -/**/ {{0xb50eb15d, 0x3c62e3e9} }, -/**/ {{0x63927806, 0xbfcda1fa} }, -/**/ {{0x8073bacf, 0xbbed7b15} }, -/**/ {{0x54b8d3bb, 0x3fc73b7b} }, -/**/ {{0x74869c1c, 0x3c602afb} }, -/**/ {{0x60993bd6, 0x3fb094e4} }, -/**/ {{0xc806a157, 0xbfc1ca8e} }, -/**/ {{0xa854d278, 0x3f862263} }, -/**/ {{0x0d9e7452, 0x3fb819c1} }, -/**/ {{0x08743869, 0xbfa7ab3d} } }, -/**/ {{{0x00000000, 0x3fcf8000} }, -/**/ {{0x451d980d, 0x3fcee2e1} }, -/**/ {{0x8c46ba91, 0xbc59a770} }, -/**/ {{0xa3df5666, 0x3fee2c34} }, -/**/ {{0x19a92865, 0xbc8ef949} }, -/**/ {{0x454a9009, 0xbfcc0153} }, -/**/ {{0xda1123ca, 0x3c5572bf} }, -/**/ {{0xf169cd42, 0xbfcd44ba} }, -/**/ {{0xf1052e0a, 0xbc6db0f2} }, -/**/ {{0xe5006ad1, 0x3fc763e4} }, -/**/ {{0x3e902796, 0x3c66e21a} }, -/**/ {{0x12812c7d, 0x3faf7f4a} }, -/**/ {{0x4a558d9d, 0xbfc1bf90} }, -/**/ {{0x2be7fbfd, 0x3f8c1b52} }, -/**/ {{0xba5b0263, 0x3fb7acef} }, -/**/ {{0x2dddf4e5, 0xbfa8afad} } }, -/**/ {{{0x00000000, 0x3fd00000} }, -/**/ {{0xf92c80dd, 0x3fcf5b75} }, -/**/ {{0x3cf7afbd, 0x3c68ab6e} }, -/**/ {{0x1e1e1e1e, 0x3fee1e1e} }, -/**/ {{0x1e1e1e1e, 0x3c6e1e1e} }, -/**/ {{0xd10d4986, 0xbfcc5894} }, -/**/ {{0xc4a6886a, 0x3c5f00e2} }, -/**/ {{0x0253d27e, 0xbfcce6de} }, -/**/ {{0x3c5fce89, 0xbc65d764} }, -/**/ {{0x08d88b02, 0x3fc78a3a} }, -/**/ {{0x32bd57e4, 0x3c4fc5d6} }, -/**/ {{0x6a622b44, 0x3fadd5f2} }, -/**/ {{0xecd7c4e0, 0xbfc1b1fa} }, -/**/ {{0x1fc8b549, 0x3f90fc3e} }, -/**/ {{0x25728acf, 0x3fb73ba7} }, -/**/ {{0xeeba051f, 0xbfa9a753} } }, -/**/ {{{0x00000000, 0x3fd04000} }, -/**/ {{0xfc40dbe4, 0x3fcfd3d1} }, -/**/ {{0xf3a1c5ea, 0x3c437146} }, -/**/ {{0x3e228818, 0x3fee0fdc} }, -/**/ {{0x8c042ef5, 0xbc62e075} }, -/**/ {{0xe42a71b9, 0xbfccaebb} }, -/**/ {{0x8025fd1d, 0xbc69fa0a} }, -/**/ {{0xe4ed28e5, 0xbfcc886b} }, -/**/ {{0x7604b95a, 0xbc59ccc3} }, -/**/ {{0x57a32fb9, 0x3fc7ae7c} }, -/**/ {{0xe36848c2, 0x3c67393b} }, -/**/ {{0x5a1b7b6f, 0x3fac2dff} }, -/**/ {{0x12f690d4, 0xbfc1a1db} }, -/**/ {{0xa575dc1d, 0x3f93dc65} }, -/**/ {{0x28a107f6, 0x3fb6c621} }, -/**/ {{0x23d2c35f, 0xbfaa920f} } }, -/**/ {{{0x00000000, 0x3fd08000} }, -/**/ {{0x510665b6, 0x3fd025fa} }, -/**/ {{0x6832fa48, 0xbc7672df} }, -/**/ {{0x9196b776, 0x3fee016f} }, -/**/ {{0xb14efc08, 0x3c81da3a} }, -/**/ {{0xcb847375, 0xbfcd03c6} }, -/**/ {{0xfc4c6f52, 0xbc6819f2} }, -/**/ {{0xe0dbf8a5, 0xbfcc296c} }, -/**/ {{0x27fb1c17, 0xbc55cc84} }, -/**/ {{0xb4fbbf40, 0x3fc7d0ad} }, -/**/ {{0x41b71641, 0x3c6378b3} }, -/**/ {{0x440404cd, 0x3faa87ad} }, -/**/ {{0x96d156a8, 0xbfc18f3d} }, -/**/ {{0x9ef40490, 0x3f96ad9b} }, -/**/ {{0x27a95e14, 0x3fb64c98} }, -/**/ {{0x97cfdce0, 0xbfab6fc3} } }, -/**/ {{{0x00000000, 0x3fd0c000} }, -/**/ {{0xa03d6291, 0x3fd061ee} }, -/**/ {{0xdb154301, 0xbc45f760} }, -/**/ {{0xa6f82a61, 0x3fedf2d8} }, -/**/ {{0x560866af, 0xbc6cedbb} }, -/**/ {{0xecc8c02c, 0xbfcd57b3} }, -/**/ {{0x85b9541c, 0x3c641512} }, -/**/ {{0x35a209c0, 0xbfcbc9e9} }, -/**/ {{0x4914a5d1, 0x3c65bfd8} }, -/**/ {{0x4f358b07, 0x3fc7f0d0} }, -/**/ {{0x3f47a5cc, 0xbc60dc70} }, -/**/ {{0x50af01c1, 0x3fa8e337} }, -/**/ {{0xc2daf61b, 0xbfc17a2f} }, -/**/ {{0x57b649f0, 0x3f996f63} }, -/**/ {{0xf14fef28, 0x3fb5cf46} }, -/**/ {{0xec5a22c2, 0xbfac405c} } }, -/**/ {{{0x00000000, 0x3fd10000} }, -/**/ {{0x97d86362, 0x3fd09dc5} }, -/**/ {{0x390cb865, 0x3c762e47} }, -/**/ {{0x0d8b5ae6, 0x3fede418} }, -/**/ {{0x23f66cf0, 0x3c719298} }, -/**/ {{0xc655a596, 0xbfcdaa81} }, -/**/ {{0x6a90480b, 0x3c666d0d} }, -/**/ {{0x1974fd6c, 0xbfcb69e9} }, -/**/ {{0xec28723f, 0xbc68e199} }, -/**/ {{0x9dcd2641, 0x3fc80ee6} }, -/**/ {{0x45b4bb82, 0x3c37ccfe} }, -/**/ {{0x64b143be, 0x3fa740d7} }, -/**/ {{0x4b6b7330, 0xbfc162bf} }, -/**/ {{0x7a20d203, 0x3f9c2147} }, -/**/ {{0xa0d6b625, 0x3fb54e68} }, -/**/ {{0x7b6e81ad, 0xbfad03cd} } }, -/**/ {{{0x00000000, 0x3fd14000} }, -/**/ {{0xe509acb3, 0x3fd0d97e} }, -/**/ {{0x7bd5a3eb, 0x3c747c31} }, -/**/ {{0x554f6dcf, 0x3fedd52e} }, -/**/ {{0xddcd060b, 0xbc75c686} }, -/**/ {{0xef1cb578, 0xbfcdfc2e} }, -/**/ {{0xd1677d50, 0xbc46ae20} }, -/**/ {{0xb81cdb34, 0xbfcb0974} }, -/**/ {{0xda61c86c, 0x3c36ed8e} }, -/**/ {{0x5fcd53c1, 0x3fc82af3} }, -/**/ {{0x57b559e7, 0xbc424fe5} }, -/**/ {{0x17013aef, 0x3fa5a0c6} }, -/**/ {{0x484940dd, 0xbfc148fa} }, -/**/ {{0x1737ca6d, 0x3f9ec2da} }, -/**/ {{0x800ba495, 0x3fb4ca38} }, -/**/ {{0x35128042, 0xbfadba0e} } }, -/**/ {{{0x00000000, 0x3fd18000} }, -/**/ {{0x362431ca, 0x3fd1151a} }, -/**/ {{0xc9077b9f, 0xbc74dc8d} }, -/**/ {{0x0ef1f116, 0x3fedc61c} }, -/**/ {{0x2d41c166, 0xbc8fe39f} }, -/**/ {{0x1681d2c9, 0xbfce4cba} }, -/**/ {{0x369a3c18, 0x3c340fb4} }, -/**/ {{0x31d921e2, 0xbfcaa894} }, -/**/ {{0x64c48da4, 0x3c6bf59e} }, -/**/ {{0x9a284cea, 0x3fc844f9} }, -/**/ {{0x629cfeb8, 0xbc563be0} }, -/**/ {{0xa7f26285, 0x3fa4033a} }, -/**/ {{0x2e2d72ea, 0xbfc12cef} }, -/**/ {{0x554d151d, 0x3fa0a9da} }, -/**/ {{0xe9f9174f, 0x3fb442f1} }, -/**/ {{0x799e467c, 0xbfae631e} } }, -/**/ {{{0x00000000, 0x3fd1c000} }, -/**/ {{0x3a9ce547, 0x3fd15097} }, -/**/ {{0x7f9ca328, 0xbc7796ba} }, -/**/ {{0xcbc2abaa, 0x3fedb6e1} }, -/**/ {{0xc39a4e7c, 0xbc823b7a} }, -/**/ {{0x0436f806, 0xbfce9c22} }, -/**/ {{0x885803cb, 0xbc64a5ec} }, -/**/ {{0x9a4c8963, 0xbfca474f} }, -/**/ {{0x6793b663, 0x3c671cf3} }, -/**/ {{0x9606243b, 0x3fc85cfc} }, -/**/ {{0x1dcd45ed, 0x3c5fd2b2} }, -/**/ {{0xf8cc655f, 0x3fa2686a} }, -/**/ {{0xc8460b94, 0xbfc10eac} }, -/**/ {{0x0d6eb5ba, 0x3fa1e9bc} }, -/**/ {{0x2e4749c2, 0x3fb3b8d0} }, -/**/ {{0xf0d19201, 0xbfaeff03} } }, -/**/ {{{0x00000000, 0x3fd20000} }, -/**/ {{0xa30bf178, 0x3fd18bf5} }, -/**/ {{0x748b1bf9, 0x3c630ca4} }, -/**/ {{0x1da7801e, 0x3feda780} }, -/**/ {{0x961ff896, 0xbc861ff8} }, -/**/ {{0x9814cb11, 0xbfceea65} }, -/**/ {{0x34cb01ca, 0xbc5f9845} }, -/**/ {{0xf76f9fa1, 0xbfc9e5ae} }, -/**/ {{0xa3ee6a86, 0x3c688b7a} }, -/**/ {{0xdf090624, 0x3fc872ff} }, -/**/ {{0x6fbad4bb, 0x3c31016f} }, -/**/ {{0x83fe02bc, 0x3fa0d08b} }, -/**/ {{0x31b98637, 0xbfc0ee42} }, -/**/ {{0x5b309f28, 0x3fa320e6} }, -/**/ {{0x755cbc43, 0x3fb32c0e} }, -/**/ {{0x5dea1ddb, 0xbfaf8dca} } }, -/**/ {{{0x00000000, 0x3fd24000} }, -/**/ {{0x212dd884, 0x3fd1c735} }, -/**/ {{0x78cb2f2e, 0xbc67d9ac} }, -/**/ {{0x971063d2, 0x3fed97f7} }, -/**/ {{0xc8b326b7, 0x3c67a20b} }, -/**/ {{0xc9f01359, 0xbfcf3783} }, -/**/ {{0xd0a651ad, 0x3c4a8b96} }, -/**/ {{0x408a6757, 0xbfc983ba} }, -/**/ {{0xe6424f06, 0x3c6dfff9} }, -/**/ {{0x41881aad, 0x3fc88707} }, -/**/ {{0x2204fd29, 0xbc63baf9} }, -/**/ {{0xabd6e10d, 0x3f9e779e} }, -/**/ {{0xcf2eab41, 0xbfc0cbbe} }, -/**/ {{0x1659f377, 0x3fa44f31} }, -/**/ {{0xa54a8a94, 0x3fb29ce7} }, -/**/ {{0xb87973d7, 0xbfb007c1} } }, -/**/ {{{0x00000000, 0x3fd28000} }, -/**/ {{0x67e47c96, 0x3fd20255} }, -/**/ {{0x28f4290e, 0xbc618323} }, -/**/ {{0xcaeb6c2a, 0x3fed8848} }, -/**/ {{0xa08296a2, 0x3c81e70d} }, -/**/ {{0xa96c2792, 0xbfcf837b} }, -/**/ {{0xc6884369, 0xbc6ab5ce} }, -/**/ {{0x5d351cdb, 0xbfc92179} }, -/**/ {{0x68719d81, 0x3c617000} }, -/**/ {{0xc8c1ca07, 0x3fc89916} }, -/**/ {{0x18b0f81b, 0xbc6a3339} }, -/**/ {{0x0caf6121, 0x3f9b54d0} }, -/**/ {{0x485ba392, 0xbfc0a732} }, -/**/ {{0xc250c31e, 0x3fa57477} }, -/**/ {{0x4790b4a8, 0x3fb20b96} }, -/**/ {{0x4ac23178, 0xbfb04223} } }, -/**/ {{{0x00000000, 0x3fd2c000} }, -/**/ {{0x2b381042, 0x3fd23d56} }, -/**/ {{0x16200088, 0xbc5c5317} }, -/**/ {{0x4c98f347, 0x3fed7874} }, -/**/ {{0x9a72647e, 0xbc8a7dac} }, -/**/ {{0x5dca68a2, 0xbfcfce4c} }, -/**/ {{0x8fb9ffdd, 0x3c6433de} }, -/**/ {{0x246041ce, 0xbfc8bef4} }, -/**/ {{0x1fb39160, 0xbc66c620} }, -/**/ {{0xbd062535, 0x3fc8a932} }, -/**/ {{0xfbc3a86c, 0xbc6e24c7} }, -/**/ {{0x64d0109d, 0x3f98390b} }, -/**/ {{0x819f2998, 0xbfc080ac} }, -/**/ {{0x8784ffb8, 0x3fa69099} }, -/**/ {{0x6fc55e9b, 0x3fb17854} }, -/**/ {{0x5f970a81, 0xbfb07618} } }, -/**/ {{{0x00000000, 0x3fd30000} }, -/**/ {{0x2057ef46, 0x3fd27837} }, -/**/ {{0xd36dfc81, 0xbc7077cd} }, -/**/ {{0xafdfd5ba, 0x3fed687a} }, -/**/ {{0xe19d8d3d, 0xbc782e68} }, -/**/ {{0x92db6fdb, 0xbfd00bfa} }, -/**/ {{0xc0af523f, 0x3c7854cd} }, -/**/ {{0x5b640da2, 0xbfc85c32} }, -/**/ {{0x5e6f23d6, 0x3c5d5bdd} }, -/**/ {{0xa1da32d2, 0x3fc8b75f} }, -/**/ {{0x29860bfe, 0x3c2788df} }, -/**/ {{0xee810d60, 0x3f9524ad} }, -/**/ {{0x95a69dea, 0xbfc0583d} }, -/**/ {{0x2b4d3dec, 0x3fa7a379} }, -/**/ {{0xa3290dfe, 0x3fb0e35b} }, -/**/ {{0x19e12287, 0xbfb0a3b2} } }, -/**/ {{{0x00000000, 0x3fd34000} }, -/**/ {{0xfd9b5fe2, 0x3fd2b2f7} }, -/**/ {{0xc1c2d443, 0x3c2423cf} }, -/**/ {{0x88e1caa2, 0x3fed585c} }, -/**/ {{0x01239e18, 0xbc2c8af2} }, -/**/ {{0xab890af7, 0xbfd0303a} }, -/**/ {{0x726290e6, 0x3c7d42bf} }, -/**/ {{0xb5175de0, 0xbfc7f93b} }, -/**/ {{0xe0ddc367, 0x3c5d5d4b} }, -/**/ {{0x3414de7c, 0x3fc8c3a2} }, -/**/ {{0xba92bfce, 0x3c5ade9b} }, -/**/ {{0xda70853d, 0x3f921811} }, -/**/ {{0xcf23aaf0, 0xbfc02df5} }, -/**/ {{0x06445ff8, 0x3fa8acfd} }, -/**/ {{0xc130eba4, 0x3fb04ce4} }, -/**/ {{0x29de3135, 0xbfb0cb04} } }, -/**/ {{{0x00000000, 0x3fd38000} }, -/**/ {{0x7a823cfe, 0x3fd2ed98} }, -/**/ {{0x8ea012ca, 0x3c6b9125} }, -/**/ {{0x6c0fd782, 0x3fed481a} }, -/**/ {{0x85ff74ea, 0x3c82dda4} }, -/**/ {{0x2f5c1e18, 0xbfd053e6} }, -/**/ {{0x8ec637b8, 0xbc679cf2} }, -/**/ {{0xd0ee3e3b, 0xbfc79617} }, -/**/ {{0x732049a6, 0xbc4e91e0} }, -/**/ {{0x67f6478d, 0x3fc8cdff} }, -/**/ {{0xf5079e63, 0xbc5cb659} }, -/**/ {{0x8e8ef686, 0x3f8e271c} }, -/**/ {{0xa2940881, 0xbfc001e5} }, -/**/ {{0xf937caae, 0x3fa9ad0e} }, -/**/ {{0xda1e257f, 0x3faf6a4f} }, -/**/ {{0xb07d42be, 0xbfb0ec24} } }, -/**/ {{{0x00000000, 0x3fd3c000} }, -/**/ {{0x4fb58952, 0x3fd32818} }, -/**/ {{0xa9939f2f, 0xbc7a95f0} }, -/**/ {{0xee1ee130, 0x3fed37b4} }, -/**/ {{0x6fbb1f2d, 0x3c747541} }, -/**/ {{0xe022dd0d, 0xbfd076fc} }, -/**/ {{0x5534523a, 0x3c6d8659} }, -/**/ {{0x3a201d6b, 0xbfc732ce} }, -/**/ {{0xc98a3a62, 0xbc56a551} }, -/**/ {{0x673a29b8, 0x3fc8d67c} }, -/**/ {{0xff95efe6, 0xbc54ae9d} }, -/**/ {{0x74ce6814, 0x3f882eee} }, -/**/ {{0x503ba8f4, 0xbfbfa83b} }, -/**/ {{0x60b63f75, 0x3faaa39c} }, -/**/ {{0xf07ff274, 0x3fae38b8} }, -/**/ {{0x2200fe4d, 0xbfb1072c} } }, -/**/ {{{0x00000000, 0x3fd40000} }, -/**/ {{0x3707ebcc, 0x3fd36277} }, -/**/ {{0x44b672d8, 0xbc6963a5} }, -/**/ {{0xa3fc5b1a, 0x3fed272c} }, -/**/ {{0x272ca3fc, 0x3c8ae01d} }, -/**/ {{0x8aec9d8e, 0xbfd0997e} }, -/**/ {{0x72595f36, 0x3c74aeda} }, -/**/ {{0x66d5c0ff, 0xbfc6cf66} }, -/**/ {{0x3ca66cc1, 0x3c410e2a} }, -/**/ {{0x8f2617b5, 0x3fc8dd1e} }, -/**/ {{0x4facfb67, 0xbc6d173e} }, -/**/ {{0x33966883, 0x3f82483b} }, -/**/ {{0x2b05b16b, 0xbfbf495d} }, -/**/ {{0x074fdeaf, 0x3fab9096} }, -/**/ {{0x9c4605c9, 0x3fad0571} }, -/**/ {{0x280318fd, 0xbfb11c35} } }, -/**/ {{{0x00000000, 0x3fd44000} }, -/**/ {{0xeb76157c, 0x3fd39cb4} }, -/**/ {{0x5a214713, 0xbc72f4da} }, -/**/ {{0x22c31625, 0x3fed1682} }, -/**/ {{0xd5e51b41, 0x3c8ac111} }, -/**/ {{0x07e9a89a, 0xbfd0bb6b} }, -/**/ {{0x7faa1dda, 0x3c76fb53} }, -/**/ {{0xb75f0772, 0xbfc66be7} }, -/**/ {{0xee6d618b, 0xbc69a77d} }, -/**/ {{0x6e943d69, 0x3fc8e1eb} }, -/**/ {{0xc5ec9ebe, 0xbc6982c4} }, -/**/ {{0x9c2d3c0c, 0x3f78e73c} }, -/**/ {{0x7059f387, 0xbfbee752} }, -/**/ {{0x16982f58, 0x3fac73f0} }, -/**/ {{0xc146b407, 0x3fabd0e4} }, -/**/ {{0x82f43254, 0xbfb12b5c} } }, -/**/ {{{0x00000000, 0x3fd48000} }, -/**/ {{0x29271134, 0x3fd3d6d1} }, -/**/ {{0x41cc958a, 0x3c7137ca} }, -/**/ {{0xffb0304c, 0x3fed05b5} }, -/**/ {{0x33e896e5, 0xbc8fc921} }, -/**/ {{0x3a49e254, 0xbfd0dcc2} }, -/**/ {{0x925cb599, 0x3c704578} }, -/**/ {{0x75708502, 0xbfc60859} }, -/**/ {{0x9feebe6c, 0xbc5f88bc} }, -/**/ {{0xc3fb5c1c, 0x3fc8e4e8} }, -/**/ {{0xd6b77a05, 0x3c6de114} }, -/**/ {{0xdbc6c857, 0x3f6ac6b3} }, -/**/ {{0xdeabd793, 0xbfbe823c} }, -/**/ {{0x06fb52a7, 0x3fad4da2} }, -/**/ {{0x2bea698c, 0x3faa9b7b} }, -/**/ {{0xeb32d745, 0xbfb134c0} } }, -/**/ {{{0x00000000, 0x3fd4c000} }, -/**/ {{0xad6c7d33, 0x3fd410cb} }, -/**/ {{0xae13b512, 0xbc7b0c8b} }, -/**/ {{0xd0182625, 0x3fecf4c8} }, -/**/ {{0xf4103798, 0x3c8e6308} }, -/**/ {{0x101a5438, 0xbfd0fd84} }, -/**/ {{0x7d2e3e34, 0x3c425fcd} }, -/**/ {{0xd36904f6, 0xbfc5a4c2} }, -/**/ {{0x54f27bb6, 0x3c5d3583} }, -/**/ {{0x7b74b00c, 0x3fc8e61c} }, -/**/ {{0xefe568b6, 0x3c32f7ad} }, -/**/ {{0xaa3667f2, 0x3f402f60} }, -/**/ {{0x4c9859c0, 0xbfbe1a3e} }, -/**/ {{0x8e77c589, 0x3fae1da6} }, -/**/ {{0x6ed5823e, 0x3fa9659b} }, -/**/ {{0xf1d3d420, 0xbfb13882} } }, -/**/ {{{0x00000000, 0x3fd50000} }, -/**/ {{0x36c2af0a, 0x3fd44aa4} }, -/**/ {{0x3c55b3ba, 0xbc75d5e4} }, -/**/ {{0x295c0773, 0x3fece3bb} }, -/**/ {{0x91851b41, 0xbc826fd5} }, -/**/ {{0x8221a582, 0xbfd11db0} }, -/**/ {{0xa9f31d11, 0x3c7e9654} }, -/**/ {{0xeb9ef661, 0xbfc5412a} }, -/**/ {{0x5e60433c, 0x3c573faf} }, -/**/ {{0xacc06b3a, 0x3fc8e58c} }, -/**/ {{0x64dd81ed, 0xbc5dba9a} }, -/**/ {{0xcfe3f01e, 0xbf625ff7} }, -/**/ {{0x9dae4b1c, 0xbfbdaf78} }, -/**/ {{0x8e4e3e16, 0x3faee3fb} }, -/**/ {{0xc2c60fed, 0x3fa82fa9} }, -/**/ {{0xe13555d9, 0xbfb136c4} } }, -/**/ {{{0x00000000, 0x3fd54000} }, -/**/ {{0x84d0c21b, 0x3fd4845a} }, -/**/ {{0x7563c6a6, 0x3c71e28a} }, -/**/ {{0xa0decfad, 0x3fecd28d} }, -/**/ {{0x49610c12, 0xbc72b2c8} }, -/**/ {{0x93bb8da8, 0xbfd13d47} }, -/**/ {{0x1b48d912, 0x3c5df07a} }, -/**/ {{0xbfb5c8b7, 0xbfc4dd98} }, -/**/ {{0x39a108d7, 0x3c58a9ff} }, -/**/ {{0x99496dc4, 0x3fc8e33f} }, -/**/ {{0x19d3995c, 0x3c380d8b} }, -/**/ {{0xba1bc2d2, 0xbf743d59} }, -/**/ {{0xb77862a1, 0xbfbd420d} }, -/**/ {{0xffb9511c, 0x3fafa0a1} }, -/**/ {{0xe8a86cad, 0x3fa6fa07} }, -/**/ {{0x9d75a109, 0xbfb12faa} } }, -/**/ {{{0x00000000, 0x3fd58000} }, -/**/ {{0x586890e7, 0x3fd4bdee} }, -/**/ {{0x7c22a757, 0xbc6e4dc7} }, -/**/ {{0xcbfae3a7, 0x3fecc140} }, -/**/ {{0xd8b6f9b9, 0xbc41045d} }, -/**/ {{0x52b34cdc, 0xbfd15c49} }, -/**/ {{0x2daa60ac, 0x3c729992} }, -/**/ {{0x37fb39ef, 0xbfc47a13} }, -/**/ {{0x3482d371, 0x3c5cb3b2} }, -/**/ {{0xaa28e022, 0x3fc8df3b} }, -/**/ {{0x969a5447, 0xbc61a8ab} }, -/**/ {{0xc651ecb4, 0xbf7f2135} }, -/**/ {{0x76cc63f7, 0xbfbcd21f} }, -/**/ {{0xefdf4de1, 0x3fb029ce} }, -/**/ {{0x0de3bf96, 0x3fa5c515} }, -/**/ {{0x84e55ab4, 0xbfb12359} } }, -/**/ {{{0x00000000, 0x3fd5c000} }, -/**/ {{0x73869979, 0x3fd4f75f} }, -/**/ {{0xf7ff1108, 0xbc595a1c} }, -/**/ {{0x3ff7b52c, 0x3fecafd5} }, -/**/ {{0x684b6314, 0x3c86e099} }, -/**/ {{0xd71d366e, 0xbfd17ab5} }, -/**/ {{0xae2f7b71, 0x3c602f2c} }, -/**/ {{0x22cc956f, 0xbfc416a1} }, -/**/ {{0xe98c24c1, 0x3c61d29e} }, -/**/ {{0x6e2a4f9f, 0x3fc8d987} }, -/**/ {{0x4a6a7880, 0xbc60de73} }, -/**/ {{0x909e42ec, 0xbf84ed52} }, -/**/ {{0xa56263a8, 0xbfbc5fcf} }, -/**/ {{0x0d159803, 0x3fb07e7b} }, -/**/ {{0xb2ddf20b, 0x3fa4912d} }, -/**/ {{0x508c8585, 0xbfb111f8} } }, -/**/ {{{0x00000000, 0x3fd60000} }, -/**/ {{0x9951cd4a, 0x3fd530ad} }, -/**/ {{0x80884082, 0xbc625664} }, -/**/ {{0x91ff8d87, 0x3fec9e4b} }, -/**/ {{0x1b0da370, 0xbc7723ff} }, -/**/ {{0x432f5908, 0xbfd1988d} }, -/**/ {{0xf8714cda, 0x3c7d065e} }, -/**/ {{0x3403e07c, 0xbfc3b349} }, -/**/ {{0x2717fbb0, 0x3c6b571d} }, -/**/ {{0x97d0e938, 0x3fc8d229} }, -/**/ {{0xb08a0625, 0x3c66b228} }, -/**/ {{0xc2fe9cde, 0xbf8a3464} }, -/**/ {{0xefb6f244, 0xbfbbeb3f} }, -/**/ {{0x39e67c0b, 0x3fb0ce5a} }, -/**/ {{0x93b4fb73, 0x3fa35eab} }, -/**/ {{0xf4d86f78, 0xbfb0fbae} } }, -/**/ {{{0x00000000, 0x3fd64000} }, -/**/ {{0x8e1b4cd8, 0x3fd569d8} }, -/**/ {{0xe713cfe2, 0xbc6fec61} }, -/**/ {{0x57157fc9, 0x3fec8ca4} }, -/**/ {{0x515734ba, 0x3c70da14} }, -/**/ {{0xc3195094, 0xbfd1b5cf} }, -/**/ {{0xa9537e45, 0x3c740cce} }, -/**/ {{0x046cee83, 0xbfc35012} }, -/**/ {{0xe446fd10, 0xbc651b6c} }, -/**/ {{0xfb5e6a95, 0x3fc8c928} }, -/**/ {{0x82469bf3, 0x3c656cd2} }, -/**/ {{0xa4afbb1b, 0xbf8f6568} }, -/**/ {{0xdb3aba50, 0xbfbb7491} }, -/**/ {{0xb9fd56ec, 0x3fb11972} }, -/**/ {{0x9329e15e, 0x3fa22de5} }, -/**/ {{0x8287d93d, 0xbfb0e0a6} } }, -/**/ {{{0x00000000, 0x3fd68000} }, -/**/ {{0x175e0f4e, 0x3fd5a2e0} }, -/**/ {{0x8f82e457, 0x3c713b7a} }, -/**/ {{0x240b83ae, 0x3fec7ae0} }, -/**/ {{0x10d398ed, 0xbc885b56} }, -/**/ {{0x8cdb4db0, 0xbfd1d27d} }, -/**/ {{0x2db0447f, 0x3c11d95f} }, -/**/ {{0x11425541, 0xbfc2ed02} }, -/**/ {{0x6b2cbaa3, 0xbc11d124} }, -/**/ {{0x8cdc5c4d, 0x3fc8be8c} }, -/**/ {{0x794444b0, 0xbc542511} }, -/**/ {{0xd25a5415, 0xbf923ffd} }, -/**/ {{0xbcd1df44, 0xbfbafbe6} }, -/**/ {{0x26bdf05c, 0x3fb15fcc} }, -/**/ {{0xa7b853e6, 0x3fa0ff2f} }, -/**/ {{0x07e9a35f, 0xbfb0c109} } }, -/**/ {{{0x00000000, 0x3fd6c000} }, -/**/ {{0xfbbe768d, 0x3fd5dbc3} }, -/**/ {{0x1b76f7da, 0x3c6ea0ec} }, -/**/ {{0x8d78b9ce, 0x3fec68ff} }, -/**/ {{0x4cb5a0c3, 0xbc83ab41} }, -/**/ {{0xe01c5e6e, 0xbfd1ee96} }, -/**/ {{0xfb76d8dd, 0x3c73922c} }, -/**/ {{0xbbb23677, 0xbfc28a1f} }, -/**/ {{0x288601f2, 0x3c6e592a} }, -/**/ {{0x5e282403, 0x3fc8b25b} }, -/**/ {{0x707e09fa, 0xbbef7d58} }, -/**/ {{0xb65add31, 0xbf94c1e0} }, -/**/ {{0xafa52f1b, 0xbfba815f} }, -/**/ {{0x63712acc, 0x3fb1a16f} }, -/**/ {{0x95a8d3ad, 0x3f9fa5b5} }, -/**/ {{0x72814750, 0xbfb09d01} } }, -/**/ {{{0x00000000, 0x3fd70000} }, -/**/ {{0x0309cfe2, 0x3fd61484} }, -/**/ {{0x15711f00, 0xbc7a7257} }, -/**/ {{0x27afd9eb, 0x3fec5703} }, -/**/ {{0xb32c1d72, 0x3c63c2ab} }, -/**/ {{0x06000419, 0xbfd20a1c} }, -/**/ {{0xf51a3a28, 0xbc7b5fe7} }, -/**/ {{0x486ad2c8, 0xbfc22771} }, -/**/ {{0xf84a7eae, 0xbc499ab5} }, -/**/ {{0x9d027817, 0x3fc8a49c} }, -/**/ {{0x2e376ecc, 0xbc53fcab} }, -/**/ {{0xeaabcb23, 0xbf973831} }, -/**/ {{0x8c46fbce, 0xbfba051d} }, -/**/ {{0x9132e9cc, 0x3fb1de66} }, -/**/ {{0xd48d5d65, 0x3f9d5269} }, -/**/ {{0x712354a4, 0xbfb074bb} } }, -/**/ {{{0x00000000, 0x3fd74000} }, -/**/ {{0xf635c1c6, 0x3fd64d1f} }, -/**/ {{0xe7c0fdbe, 0xbc7fa403} }, -/**/ {{0x86b5cbf8, 0x3fec44eb} }, -/**/ {{0xbc5b562d, 0xbc6a4101} }, -/**/ {{0x50fb21ad, 0xbfd2250d} }, -/**/ {{0xa39bdc1a, 0xbc750066} }, -/**/ {{0xdf2ed728, 0xbfc1c4fc} }, -/**/ {{0x006772e9, 0x3c6a87bb} }, -/**/ {{0x9122b9b7, 0x3fc89557} }, -/**/ {{0x45b04f75, 0xbc05454e} }, -/**/ {{0x6c7888f1, 0xbf99a2c9} }, -/**/ {{0xe02d36ad, 0xbfb98740} }, -/**/ {{0x02a99665, 0x3fb216bd} }, -/**/ {{0xb73aeccb, 0x3f9b0511} }, -/**/ {{0x569b1738, 0xbfb04863} } }, -/**/ {{{0x00000000, 0x3fd78000} }, -/**/ {{0x9f5fa6fe, 0x3fd68597} }, -/**/ {{0x4d1ada9c, 0xbc425781} }, -/**/ {{0x3e386c7f, 0x3fec32b9} }, -/**/ {{0x8cbaa5bf, 0x3c756033} }, -/**/ {{0x1ca84e79, 0xbfd23f6b} }, -/**/ {{0xf123d574, 0x3c604cc0} }, -/**/ {{0x8a715435, 0xbfc162c8} }, -/**/ {{0x454fb8fd, 0x3c5cf6db} }, -/**/ {{0x9a4eb534, 0x3fc88493} }, -/**/ {{0x42b959b0, 0xbc668a5c} }, -/**/ {{0x42580bb5, 0xbf9c0182} }, -/**/ {{0xe5822d56, 0xbfb907e9} }, -/**/ {{0x2f8f8273, 0x3fb24a7f} }, -/**/ {{0xa3527f46, 0x3f98be3c} }, -/**/ {{0xfce97270, 0xbfb01825} } }, -/**/ {{{0x00000000, 0x3fd7c000} }, -/**/ {{0xc9cbd76d, 0x3fd6bdea} }, -/**/ {{0x3e6de828, 0xbc5a5c56} }, -/**/ {{0xe1857d04, 0x3fec206c} }, -/**/ {{0xf5c83872, 0xbc80439f} }, -/**/ {{0xcd9b9870, 0xbfd25935} }, -/**/ {{0xf1ec7306, 0x3c6aaf98} }, -/**/ {{0x36f94d02, 0xbfc100da} }, -/**/ {{0xd96d84ff, 0xbc6e72ca} }, -/**/ {{0x2e774351, 0x3fc87258} }, -/**/ {{0xb8860ef0, 0x3c6c50a2} }, -/**/ {{0x741ef0ec, 0xbf9e543a} }, -/**/ {{0x7b4d0ec2, 0xbfb88738} }, -/**/ {{0xa8164103, 0x3fb279ba} }, -/**/ {{0xa7f1ae35, 0x3f967e73} }, -/**/ {{0x5257c3de, 0xbfafc861} } }, -/**/ {{{0x00000000, 0x3fd80000} }, -/**/ {{0x41e4def1, 0x3fd6f619} }, -/**/ {{0xe6f6e918, 0xbc7c63aa} }, -/**/ {{0x0381c0e0, 0x3fec0e07} }, -/**/ {{0x0381c0e0, 0x3c8c0e07} }, -/**/ {{0xd135c174, 0xbfd2726d} }, -/**/ {{0xe0951cf8, 0xbc2d352d} }, -/**/ {{0xb38cc8cf, 0xbfc09f37} }, -/**/ {{0xae75327f, 0xbc69db81} }, -/**/ {{0xd7da413c, 0x3fc85eac} }, -/**/ {{0x6ebae2bc, 0x3c5b1a89} }, -/**/ {{0x80fcc815, 0xbfa04d69} }, -/**/ {{0x1df326f9, 0xbfb8054c} }, -/**/ {{0x082bda60, 0x3fb2a47e} }, -/**/ {{0x7091d5a4, 0x3f944639} }, -/**/ {{0xe072e48c, 0xbfaf5961} } }, -/**/ {{{0x00000000, 0x3fd84000} }, -/**/ {{0xd53aa2aa, 0x3fd72e22} }, -/**/ {{0x4e79f27c, 0xbc7d9c93} }, -/**/ {{0x36a04729, 0x3febfb88} }, -/**/ {{0x9ac2ea21, 0xbc872745} }, -/**/ {{0x9d7702cf, 0xbfd28b13} }, -/**/ {{0x4be8bff6, 0x3c7819b9} }, -/**/ {{0xb0a35176, 0xbfc03de6} }, -/**/ {{0xc83347af, 0x3c5dbfb0} }, -/**/ {{0x332a4f86, 0x3fc84999} }, -/**/ {{0x0a22d12d, 0x3c5d304e} }, -/**/ {{0xed6b2d30, 0xbfa16a97} }, -/**/ {{0xe0128950, 0xbfb78243} }, -/**/ {{0xeaa98f57, 0x3fb2cad8} }, -/**/ {{0x3bb39c5b, 0x3f92160a} }, -/**/ {{0x3804caa3, 0xbfaee3a9} } }, -/**/ {{{0x00000000, 0x3fd88000} }, -/**/ {{0x52817502, 0x3fd76607} }, -/**/ {{0x91cc7600, 0xbc4dd117} }, -/**/ {{0x0cd9e1fe, 0x3febe8f1} }, -/**/ {{0xa21e102a, 0xbc7a9688} }, -/**/ {{0xb0d161e9, 0xbfd2a327} }, -/**/ {{0x14b44140, 0xbc60a2a9} }, -/**/ {{0x803f8d3b, 0xbfbfb9d9} }, -/**/ {{0x2a5c4097, 0x3c5e5779} }, -/**/ {{0xedbcc363, 0x3fc83324} }, -/**/ {{0xa0442744, 0x3c651fbc} }, -/**/ {{0xe91477c3, 0xbfa2819b} }, -/**/ {{0x63b6abf0, 0xbfb6fe3e} }, -/**/ {{0xdc73a89a, 0x3fb2ecdb} }, -/**/ {{0xaa755298, 0x3f8fdcb7} }, -/**/ {{0x237c2f3d, 0xbfae6793} } }, -/**/ {{{0x00000000, 0x3fd8c000} }, -/**/ {{0x899118d1, 0x3fd79dc6} }, -/**/ {{0xa0ef606d, 0x3c2b7413} }, -/**/ {{0x17a4cbc3, 0x3febd642} }, -/**/ {{0x3200a548, 0xbc55ee5d} }, -/**/ {{0x91faa133, 0xbfd2baaa} }, -/**/ {{0xfaf41548, 0xbc6bd391} }, -/**/ {{0xaa22d832, 0xbfbef89e} }, -/**/ {{0xc874fdb9, 0x3c413b3b} }, -/**/ {{0xc3be300a, 0x3fc81b57} }, -/**/ {{0xc01a615f, 0x3c6baf9b} }, -/**/ {{0x4a872ec7, 0xbfa3926a} }, -/**/ {{0xd3e743cd, 0xbfb67959} }, -/**/ {{0x4f919505, 0x3fb30a98} }, -/**/ {{0x28b78b08, 0x3f8b9f3b} }, -/**/ {{0x71e33e9d, 0xbfade57b} } }, -/**/ {{{0x00000000, 0x3fd90000} }, -/**/ {{0x4b63b3f7, 0x3fd7d560} }, -/**/ {{0x5c2b249a, 0x3c769c88} }, -/**/ {{0xe7ec7a8d, 0x3febc37b} }, -/**/ {{0x2b0e2727, 0xbc6f1246} }, -/**/ {{0xcfbdd7fa, 0xbfd2d19c} }, -/**/ {{0x5e00c582, 0x3c7d0b11} }, -/**/ {{0x86f8309b, 0xbfbe3827} }, -/**/ {{0xfa6c56a7, 0x3c5d64e9} }, -/**/ {{0x7e6de8de, 0x3fc80239} }, -/**/ {{0x7776e849, 0x3c68d62f} }, -/**/ {{0x4f6d8017, 0xbfa49cf9} }, -/**/ {{0xde917e27, 0xbfb5f3b3} }, -/**/ {{0x8e455cc2, 0x3fb32420} }, -/**/ {{0xb9fc88fe, 0x3f877470} }, -/**/ {{0xc6b10536, 0xbfad5dbd} } }, -/**/ {{{0x00000000, 0x3fd94000} }, -/**/ {{0x6a14b1d1, 0x3fd80cd4} }, -/**/ {{0x9684fa19, 0xbc7e79f9} }, -/**/ {{0x0e09a222, 0x3febb09f} }, -/**/ {{0x7e047edd, 0x3c85748e} }, -/**/ {{0x00ccbbc8, 0xbfd2e7ff} }, -/**/ {{0x96875561, 0xbc78eb0a} }, -/**/ {{0x804ecc06, 0xbfbd787e} }, -/**/ {{0x2e4351f8, 0xbc27263b} }, -/**/ {{0xf260d7b4, 0x3fc7e7d1} }, -/**/ {{0x8ed258e3, 0xbc430525} }, -/**/ {{0x968d3d02, 0xbfa5a140} }, -/**/ {{0xaecb845e, 0xbfb56d69} }, -/**/ {{0xae292f95, 0x3fb33987} }, -/**/ {{0x48e09ecd, 0x3f835d1d} }, -/**/ {{0x6b6f9aca, 0xbfacd0b5} } }, -/**/ {{{0x00000000, 0x3fd98000} }, -/**/ {{0xb8df95d7, 0x3fd84422} }, -/**/ {{0x299b41b6, 0x3c7d76a0} }, -/**/ {{0x19ba64d6, 0x3feb9dac} }, -/**/ {{0xa13ee09f, 0xbc4f643a} }, -/**/ {{0xc390a5c9, 0xbfd2fdd1} }, -/**/ {{0xaa856fcc, 0x3c575152} }, -/**/ {{0xc0e99751, 0xbfbcb9ad} }, -/**/ {{0x1347a357, 0x3c4e2d44} }, -/**/ {{0xfdcbfd40, 0x3fc7cc28} }, -/**/ {{0xe516db08, 0x3c60dc32} }, -/**/ {{0x19851d86, 0xbfa69f39} }, -/**/ {{0xe772087d, 0xbfb4e697} }, -/**/ {{0x835992de, 0x3fb34ae1} }, -/**/ {{0xe5326389, 0x3f7eb3f1} }, -/**/ {{0x234575e8, 0xbfac3ebd} } }, -/**/ {{{0x00000000, 0x3fd9c000} }, -/**/ {{0x0c1ebedc, 0x3fd87b4b} }, -/**/ {{0xa2fa470f, 0xbc76dcfa} }, -/**/ {{0x9a1ab378, 0x3feb8aa3} }, -/**/ {{0xb797ab93, 0x3c8efdb0} }, -/**/ {{0xbdfb5e5a, 0xbfd31315} }, -/**/ {{0x862f0c0d, 0x3c5813a8} }, -/**/ {{0x3478f169, 0xbfbbfbbf} }, -/**/ {{0xd9e52582, 0xbc51e810} }, -/**/ {{0x86d6ec76, 0x3fc7af46} }, -/**/ {{0x3c13b159, 0xbc6336de} }, -/**/ {{0x264b8050, 0xbfa796dd} }, -/**/ {{0x9e1f6bef, 0xbfb45f5a} }, -/**/ {{0x93b26fc1, 0x3fb35842} }, -/**/ {{0x39bc3abf, 0x3f76d75e} }, -/**/ {{0x006e38b2, 0xbfaba82f} } }, -/**/ {{{0x00000000, 0x3fda0000} }, -/**/ {{0x394a1b25, 0x3fd8b24d} }, -/**/ {{0xa3748fa8, 0x3c7b6d0b} }, -/**/ {{0x1d9cdc98, 0x3feb7786} }, -/**/ {{0x345bd7a8, 0xbc62e22c} }, -/**/ {{0x9d57b8f5, 0xbfd327cb} }, -/**/ {{0x753cc4f1, 0xbc135343} }, -/**/ {{0x8761b154, 0xbfbb3ebc} }, -/**/ {{0x8c168fdd, 0x3c5abeec} }, -/**/ {{0x79f68c54, 0x3fc79132} }, -/**/ {{0xd8d15eda, 0xbc658ab9} }, -/**/ {{0x5872d73c, 0xbfa88828} }, -/**/ {{0x567be750, 0xbfb3d7cd} }, -/**/ {{0x0a24fc71, 0x3fb361c0} }, -/**/ {{0x46aa98b6, 0x3f6e4b7a} }, -/**/ {{0x3bad3a76, 0xbfab0d64} } }, -/**/ {{{0x00000000, 0x3fda4000} }, -/**/ {{0x16f5cde8, 0x3fd8e929} }, -/**/ {{0xe12bfafb, 0x3c74c0a7} }, -/**/ {{0x32024b37, 0x3feb6454} }, -/**/ {{0x69cc9b53, 0xbc7987f7} }, -/**/ {{0x161a0a40, 0xbfd33bf4} }, -/**/ {{0x83ff46db, 0x3c7a2321} }, -/**/ {{0x26913418, 0xbfba82af} }, -/**/ {{0x10a559fe, 0x3c3c4c62} }, -/**/ {{0xc8506679, 0x3fc771f4} }, -/**/ {{0x63c7ccc3, 0xbc54aaed} }, -/**/ {{0x9237e7ff, 0xbfa97317} }, -/**/ {{0xfde5f112, 0xbfb3500a} }, -/**/ {{0xaa2c3459, 0x3fb3676f} }, -/**/ {{0x04721907, 0x3f5e80cd} }, -/**/ {{0x0dc212a5, 0xbfaa6eb5} } }, -/**/ {{{0x00000000, 0x3fda8000} }, -/**/ {{0x7cd0c662, 0x3fd91fde} }, -/**/ {{0x88054b53, 0x3c710741} }, -/**/ {{0x6454751c, 0x3feb510e} }, -/**/ {{0x7e0f2dca, 0xbc199bfd} }, -/**/ {{0xe3b081f4, 0xbfd34f8f} }, -/**/ {{0x3e2c0515, 0x3c7d7209} }, -/**/ {{0x3f5e2d2f, 0xbfb9c7a0} }, -/**/ {{0xea3bd312, 0xbc20b02e} }, -/**/ {{0x6626c39a, 0x3fc75195} }, -/**/ {{0xb4219a8a, 0x3c6f30d2} }, -/**/ {{0xf55dfea5, 0xbfaa57a8} }, -/**/ {{0xe771fa17, 0xbfb2c82d} }, -/**/ {{0xc3654ab4, 0x3fb36967} }, -/**/ {{0xa23eb6eb, 0x3f11f322} }, -/**/ {{0x8ae579b1, 0xbfa9cc78} } }, -/**/ {{{0x00000000, 0x3fdac000} }, -/**/ {{0x43a34907, 0x3fd9566d} }, -/**/ {{0x37e0af2b, 0x3c69b015} }, -/**/ {{0x40ddf8d3, 0x3feb3db5} }, -/**/ {{0x793c10b8, 0xbc616f46} }, -/**/ {{0xc8537217, 0xbfd3629f} }, -/**/ {{0x38143614, 0x3c505738} }, -/**/ {{0xbf75f20a, 0xbfb90d98} }, -/**/ {{0x6b842647, 0x3c4dc715} }, -/**/ {{0x494dd1e6, 0x3fc7301c} }, -/**/ {{0xf49f85b4, 0x3c5ec3d6} }, -/**/ {{0xdbdd23b1, 0xbfab35db} }, -/**/ {{0xc8407216, 0xbfb2404f} }, -/**/ {{0x255139f9, 0x3fb367bf} }, -/**/ {{0x65acd6da, 0xbf5b8a0d} }, -/**/ {{0x8052f51d, 0xbfa92704} } }, -/**/ {{{0x00000000, 0x3fdb0000} }, -/**/ {{0x454d6b18, 0x3fd98cd5} }, -/**/ {{0x88fd0a77, 0x3c79e6c9} }, -/**/ {{0x5323eb6a, 0x3feb2a49} }, -/**/ {{0x70cc9678, 0xbc572202} }, -/**/ {{0x8cd58cc4, 0xbfd37524} }, -/**/ {{0xda42aa4e, 0x3c6978a3} }, -/**/ {{0x54d5f784, 0xbfb854a1} }, -/**/ {{0xb33b3d0d, 0xbc5e9a15} }, -/**/ {{0x67aa0c46, 0x3fc70d91} }, -/**/ {{0xa4ac9df8, 0xbc6aa72f} }, -/**/ {{0xd0665a46, 0xbfac0db0} }, -/**/ {{0xb428e30d, 0xbfb1b889} }, -/**/ {{0x134448b0, 0x3fb3628d} }, -/**/ {{0x67619c9c, 0xbf6bbbc1} }, -/**/ {{0x53e1f653, 0xbfa87ead} } }, -/**/ {{{0x00000000, 0x3fdb4000} }, -/**/ {{0x5cc58107, 0x3fd9c316} }, -/**/ {{0x02250cfb, 0x3c4b6696} }, -/**/ {{0x25df55f4, 0x3feb16cb} }, -/**/ {{0xf48e26bc, 0xbc653abc} }, -/**/ {{0x00742189, 0xbfd3871f} }, -/**/ {{0xc05df451, 0xbc725ae2} }, -/**/ {{0x6dd13675, 0xbfb79cc2} }, -/**/ {{0x991905e4, 0x3be1d4e0} }, -/**/ {{0xb5b8147e, 0x3fc6e9fc} }, -/**/ {{0xa57d4eca, 0x3c46463b} }, -/**/ {{0x86c1db89, 0xbfacdf29} }, -/**/ {{0x1ab8d1c4, 0xbfb130f4} }, -/**/ {{0x38881228, 0x3fb359e9} }, -/**/ {{0x53bec2ff, 0xbf74a987} }, -/**/ {{0xe5af58b6, 0xbfa7d3c5} } }, -/**/ {{{0x00000000, 0x3fdb8000} }, -/**/ {{0x66168002, 0x3fd9f930} }, -/**/ {{0x47c9439a, 0xbc7c8270} }, -/**/ {{0x42f6e2c9, 0x3feb033b} }, -/**/ {{0xc48702a7, 0xbc6eb80c} }, -/**/ {{0xf8a76337, 0xbfd3988f} }, -/**/ {{0x5b1bb38a, 0xbc636968} }, -/**/ {{0x39212b04, 0xbfb6e604} }, -/**/ {{0xba255e71, 0xbc3c2e20} }, -/**/ {{0x251e2d41, 0x3fc6c566} }, -/**/ {{0x47236369, 0x3c230ab3} }, -/**/ {{0xd40b3417, 0xbfadaa48} }, -/**/ {{0xc484f2cc, 0xbfb0a9a6} }, -/**/ {{0x9cb4573e, 0x3fb34deb} }, -/**/ {{0x1def6f17, 0xbf7b44ca} }, -/**/ {{0x73d683b8, 0xbfa7269f} } }, -/**/ {{{0x00000000, 0x3fdbc000} }, -/**/ {{0x3e5e530b, 0x3fda2f23} }, -/**/ {{0xf797086b, 0x3c5814d5} }, -/**/ {{0x3378ba79, 0x3feaef9a} }, -/**/ {{0x4476e241, 0x3c7da16a} }, -/**/ {{0x50f2beab, 0xbfd3a978} }, -/**/ {{0xad5a31ea, 0x3c7b7e7f} }, -/**/ {{0xa602212f, 0xbfb6306e} }, -/**/ {{0x9ec38d55, 0xbc31ec15} }, -/**/ {{0xa3477c6a, 0x3fc69fd5} }, -/**/ {{0xb2996038, 0x3c571f2f} }, -/**/ {{0xa6cf162d, 0xbfae6f12} }, -/**/ {{0xd0cb2655, 0xbfb022b8} }, -/**/ {{0x9842912f, 0x3fb33eac} }, -/**/ {{0x4919e78d, 0xbf80d789} }, -/**/ {{0x8037e242, 0xbfa67789} } }, -/**/ {{{0x00000000, 0x3fdc0000} }, -/**/ {{0xc3cc23fd, 0x3fda64ee} }, -/**/ {{0x1b50b7ff, 0xbc724dec} }, -/**/ {{0x7f94905e, 0x3feadbe8} }, -/**/ {{0x7f94905e, 0x3c2adbe8} }, -/**/ {{0xeab54af9, 0xbfd3b9d8} }, -/**/ {{0x54fd0941, 0x3c75b97d} }, -/**/ {{0x645a7f9e, 0xbfb57c09} }, -/**/ {{0x09320811, 0xbc5e79f6} }, -/**/ {{0x180938f2, 0x3fc67953} }, -/**/ {{0xe7aee726, 0x3c6246f2} }, -/**/ {{0xff0ea012, 0xbfaf2d8b} }, -/**/ {{0x66c7250c, 0xbfaf3881} }, -/**/ {{0xc95ff694, 0x3fb32c44} }, -/**/ {{0x25d7ff49, 0xbf83f3f0} }, -/**/ {{0xb848e1d1, 0xbfa5c6d1} } }, -/**/ {{{0x00000000, 0x3fdc4000} }, -/**/ {{0xd59e98cf, 0x3fda9a92} }, -/**/ {{0xff75d817, 0x3c42e42d} }, -/**/ {{0xae95dea9, 0x3feac826} }, -/**/ {{0x633dec57, 0xbc534eec} }, -/**/ {{0xacfa5b18, 0xbfd3c9b2} }, -/**/ {{0x6c4d8d27, 0x3c7a7e0c} }, -/**/ {{0xe4ecc0f6, 0xbfb4c8db} }, -/**/ {{0xc0c32772, 0xbc534990} }, -/**/ {{0x6451e377, 0x3fc651e6} }, -/**/ {{0x2a9bb1f1, 0xbc6ea814} }, -/**/ {{0xe62bc1b2, 0xbfafe5ba} }, -/**/ {{0x65fe3642, 0xbfae2ca8} }, -/**/ {{0x09015968, 0x3fb316cd} }, -/**/ {{0x3ce97a26, 0xbf86f764} }, -/**/ {{0xdee8421b, 0xbfa514c3} } }, -/**/ {{{0x00000000, 0x3fdc8000} }, -/**/ {{0x5422058b, 0x3fdad00f} }, -/**/ {{0x3891d2e8, 0x3c7fc4c3} }, -/**/ {{0x46de51cf, 0x3feab455} }, -/**/ {{0xdbc38cc9, 0xbc5b834a} }, -/**/ {{0x844a38eb, 0xbfd3d906} }, -/**/ {{0xbc44eee8, 0x3c6198e5} }, -/**/ {{0x5993cade, 0xbfb416ed} }, -/**/ {{0xfa289b6c, 0xbc235ccb} }, -/**/ {{0x60e2a3af, 0x3fc62997} }, -/**/ {{0xcf7bda0e, 0xbc69a660} }, -/**/ {{0x33612b72, 0xbfb04bd3} }, -/**/ {{0xcf62bcd9, 0xbfad2210} }, -/**/ {{0x603bfc37, 0x3fb2fe5e} }, -/**/ {{0xa9bce7ec, 0xbf89e1ba} }, -/**/ {{0xb83029d5, 0xbfa461a9} } }, -/**/ {{{0x00000000, 0x3fdcc000} }, -/**/ {{0x20ae9344, 0x3fdb0564} }, -/**/ {{0x46363455, 0xbc793139} }, -/**/ {{0xcde0631f, 0x3feaa074} }, -/**/ {{0x143fe6d4, 0x3c84b49a} }, -/**/ {{0x627b115b, 0xbfd3e7d5} }, -/**/ {{0x332989c0, 0x3c77a502} }, -/**/ {{0xb589513f, 0xbfb36644} }, -/**/ {{0x105eec96, 0x3c3abdc9} }, -/**/ {{0xdd12e0be, 0x3fc6006d} }, -/**/ {{0x5d67cb35, 0xbc4f0281} }, -/**/ {{0x4238ba83, 0xbfb0a1ab} }, -/**/ {{0x73889526, 0xbfac18e3} }, -/**/ {{0xfde6351a, 0x3fb2e311} }, -/**/ {{0xc256833f, 0xbf8cb2d2} }, -/**/ {{0xf73e36f0, 0xbfa3adca} } }, -/**/ {{{0x00000000, 0x3fdd0000} }, -/**/ {{0x1da65c6c, 0x3fdb3a91} }, -/**/ {{0xb1ca5040, 0x3c7ae187} }, -/**/ {{0xc81a2254, 0x3fea8c85} }, -/**/ {{0x8d67728b, 0xbc83c191} }, -/**/ {{0x3e8218e0, 0xbfd3f620} }, -/**/ {{0x52bd43ef, 0xbc72bf32} }, -/**/ {{0xadb5f398, 0xbfb2b6e8} }, -/**/ {{0x6b74d451, 0x3c340287} }, -/**/ {{0x9d9e25fc, 0x3fc5d671} }, -/**/ {{0x518d7a71, 0x3c639669} }, -/**/ {{0x19cc29a0, 0xbfb0f46a} }, -/**/ {{0xc1a69750, 0xbfab1147} }, -/**/ {{0x2c826e6b, 0x3fb2c501} }, -/**/ {{0xcbc1b186, 0xbf8f6a95} }, -/**/ {{0x2de89811, 0xbfa2f96d} } }, -/**/ {{{0x00000000, 0x3fdd4000} }, -/**/ {{0x2e737efc, 0x3fdb6f96} }, -/**/ {{0x64981e71, 0xbc5ca534} }, -/**/ {{0xb9102ddc, 0x3fea7888} }, -/**/ {{0x3c46d7d5, 0xbc7791b2} }, -/**/ {{0x1444efb5, 0xbfd403e8} }, -/**/ {{0x4f3d22a6, 0xbc6047c5} }, -/**/ {{0xb90ac1cc, 0xbfb208df} }, -/**/ {{0x2d2115d8, 0x3c4078b1} }, -/**/ {{0x5b7c61a2, 0x3fc5abaa} }, -/**/ {{0x2bd2d19a, 0x3c3eef6a} }, -/**/ {{0xa8850e1a, 0xbfb14414} }, -/**/ {{0xc6580343, 0xbfaa0b63} }, -/**/ {{0x4876cfdf, 0x3fb2a445} }, -/**/ {{0x562d0829, 0xbf91047b} }, -/**/ {{0xbe562a83, 0xbfa244d3} } }, -/**/ {{{0x00000000, 0x3fdd8000} }, -/**/ {{0x378624a5, 0x3fdba473} }, -/**/ {{0xb46e4aff, 0x3c7519a1} }, -/**/ {{0x2348d9a3, 0x3fea647e} }, -/**/ {{0x9156e59f, 0xbc84f6c2} }, -/**/ {{0xe46b4c91, 0xbfd4112d} }, -/**/ {{0x110fe0b7, 0xbc78c11d} }, -/**/ {{0x10e3d572, 0xbfb15c30} }, -/**/ {{0x4427c00b, 0x3c53b45b} }, -/**/ {{0xc2c486ae, 0x3fc5801f} }, -/**/ {{0xc20ced8b, 0xbc49bb5e} }, -/**/ {{0x4cddef65, 0xbfb190b0} }, -/**/ {{0x2ae4bcd0, 0xbfa9075c} }, -/**/ {{0xb69396b9, 0x3fb280f7} }, -/**/ {{0xce179ccb, 0xbf9246f8} }, -/**/ {{0xce6e9b2b, 0xbfa1903f} } }, -/**/ {{{0x00000000, 0x3fddc000} }, -/**/ {{0x1e528192, 0x3fdbd928} }, -/**/ {{0x39af6b66, 0xbc74b154} }, -/**/ {{0x88478403, 0x3fea5066} }, -/**/ {{0xbe71620f, 0xbc85c7e8} }, -/**/ {{0xb430f4ac, 0xbfd41df2} }, -/**/ {{0xe79c7595, 0xbc55db82} }, -/**/ {{0xb173ac76, 0xbfb0b0df} }, -/**/ {{0xe4738d25, 0x3c57f440} }, -/**/ {{0x7199976b, 0x3fc553d9} }, -/**/ {{0x2a872a12, 0x3c54990c} }, -/**/ {{0xd137dd01, 0xbfb1da42} }, -/**/ {{0x350bfdb5, 0xbfa80554} }, -/**/ {{0xdae9e17f, 0x3fb25b31} }, -/**/ {{0xe9e265b4, 0xbf937cc5} }, -/**/ {{0x3d16a202, 0xbfa0dbf0} } }, -/**/ {{{0x00000000, 0x3fde0000} }, -/**/ {{0xc94ec9f0, 0x3fdc0db4} }, -/**/ {{0x70934c34, 0xbc7cc1ce} }, -/**/ {{0x68881898, 0x3fea3c42} }, -/**/ {{0xe5c3bd97, 0x3c8f907f} }, -/**/ {{0x8d38076d, 0xbfd42a37} }, -/**/ {{0x7e19d62d, 0xbc6b8354} }, -/**/ {{0x5a36f1bd, 0xbfb006f4} }, -/**/ {{0xca398c09, 0xbc41701e} }, -/**/ {{0xf7221a2a, 0x3fc526de} }, -/**/ {{0x8041247e, 0xbc211868} }, -/**/ {{0x67b0229a, 0xbfb220d2} }, -/**/ {{0xc74d0c66, 0xbfa7056d} }, -/**/ {{0x0ff472e2, 0x3fb2330d} }, -/**/ {{0x9cb74216, 0xbf94a5e9} }, -/**/ {{0x992b9e1f, 0xbfa02821} } }, -/**/ {{{0x00000000, 0x3fde4000} }, -/**/ {{0x1ff11eb7, 0x3fdc4219} }, -/**/ {{0x434b3eee, 0xbc7b17df} }, -/**/ {{0x437ac09e, 0x3fea2812} }, -/**/ {{0xf9618c21, 0xbc540368} }, -/**/ {{0x7d5ba406, 0xbfd435fd} }, -/**/ {{0x5e0a732a, 0x3c75605b} }, -/**/ {{0x1ce0c104, 0xbfaebce7} }, -/**/ {{0xd4eb3297, 0xbc446d02} }, -/**/ {{0xd289f60b, 0x3fc4f937} }, -/**/ {{0xe736fa8b, 0x3c5b88b7} }, -/**/ {{0xa5f78db4, 0xbfb26465} }, -/**/ {{0x61a972db, 0xbfa607c9} }, -/**/ {{0x9e13b088, 0x3fb208a2} }, -/**/ {{0x06c33653, 0xbf95c26f} }, -/**/ {{0x346237b1, 0xbf9eea1c} } }, -/**/ {{{0x00000000, 0x3fde8000} }, -/**/ {{0x0aad71f9, 0x3fdc7655} }, -/**/ {{0xff7043e4, 0xbc774b8b} }, -/**/ {{0x977fc070, 0x3fea13d6} }, -/**/ {{0xd9440881, 0xbc86c451} }, -/**/ {{0x9682eee2, 0xbfd44145} }, -/**/ {{0xb13901b4, 0x3c74156f} }, -/**/ {{0x2b58de73, 0xbfad6ec5} }, -/**/ {{0xdf653988, 0x3c2ced26} }, -/**/ {{0x720eb232, 0x3fc4caeb} }, -/**/ {{0x92f3f809, 0x3c614246} }, -/**/ {{0x812caa81, 0xbfb2a503} }, -/**/ {{0x22dc20a7, 0xbfa50c86} }, -/**/ {{0xb35de59d, 0x3fb1dc0b} }, -/**/ {{0x4adc8c38, 0xbf96d265} }, -/**/ {{0x35444e0c, 0xbf9d85db} } }, -/**/ {{{0x00000000, 0x3fdec000} }, -/**/ {{0x72f3631b, 0x3fdcaa68} }, -/**/ {{0x81636f48, 0x3c295067} }, -/**/ {{0xe1e381db, 0x3fe9ff8f} }, -/**/ {{0x00701e1c, 0xbc6fffe6} }, -/**/ {{0xee747cac, 0xbfd44c10} }, -/**/ {{0xced401ad, 0xbc7a7f22} }, -/**/ {{0xf898de26, 0xbfac238c} }, -/**/ {{0xdaa7d32f, 0x3c1eb191} }, -/**/ {{0x32160e42, 0x3fc49c01} }, -/**/ {{0x03d0023c, 0x3c649f02} }, -/**/ {{0x49ba4fb7, 0xbfb2e2b3} }, -/**/ {{0xca00d6c7, 0xbfa413c1} }, -/**/ {{0x5bc495cf, 0x3fb1ad61} }, -/**/ {{0x63d0ff69, 0xbf97d5df} }, -/**/ {{0x27af7010, 0xbf9c23eb} } }, -/**/ {{{0x00000000, 0x3fdf0000} }, -/**/ {{0x432c1351, 0x3fdcde53} }, -/**/ {{0x4418f1ad, 0xbc7a2cfa} }, -/**/ {{0x9edacacc, 0x3fe9eb3e} }, -/**/ {{0x87d23ca5, 0xbc8942c5} }, -/**/ {{0x9eaa285d, 0xbfd45660} }, -/**/ {{0x52cf85b4, 0x3c4fe8e6} }, -/**/ {{0x28319af3, 0xbfaadb48} }, -/**/ {{0x31b456b0, 0xbc207b46} }, -/**/ {{0x5c4ee7c2, 0x3fc46c80} }, -/**/ {{0xb4443c76, 0x3c4bdfc1} }, -/**/ {{0xa73bc33f, 0xbfb31d7c} }, -/**/ {{0xb8a731f5, 0xbfa31d98} }, -/**/ {{0x798f7481, 0x3fb17cbc} }, -/**/ {{0xf977e9ca, 0xbf98ccf3} }, -/**/ {{0x36ea1578, 0xbf9ac4b2} } }, -/**/ {{{0x00000000, 0x3fdf4000} }, -/**/ {{0x66b7f2ad, 0x3fdd1215} }, -/**/ {{0x35886c30, 0x3c7be678} }, -/**/ {{0x497f1fed, 0x3fe9d6e3} }, -/**/ {{0x9a35c454, 0xbc8ec056} }, -/**/ {{0xc4255988, 0xbfd46035} }, -/**/ {{0x7144427c, 0x3c7ddb7b} }, -/**/ {{0xe9b44acd, 0xbfa995ff} }, -/**/ {{0xb529cf65, 0x3c3c9d56} }, -/**/ {{0x26dc5cda, 0x3fc43c70} }, -/**/ {{0xfde6cd82, 0x3c6d6ee6} }, -/**/ {{0x9467b39a, 0xbfb35567} }, -/**/ {{0xf54ca1ba, 0xbfa22a25} }, -/**/ {{0xbe2d5d2d, 0x3fb14a35} }, -/**/ {{0x35a34e74, 0xbf99b7bd} }, -/**/ {{0xc4948489, 0xbf996891} } }, -/**/ {{{0x00000000, 0x3fdf8000} }, -/**/ {{0xc9ec862b, 0x3fdd45ae} }, -/**/ {{0x163ef92d, 0x3c689421} }, -/**/ {{0x5bcb52c7, 0x3fe9c27e} }, -/**/ {{0xf148a350, 0xbc892d91} }, -/**/ {{0x7f43bff0, 0xbfd46991} }, -/**/ {{0x8da13c27, 0xbc738b23} }, -/**/ {{0xf9f19dcd, 0xbfa853bc} }, -/**/ {{0x2433c5cf, 0x3c2ea7a9} }, -/**/ {{0xb38b19e0, 0x3fc40bd7} }, -/**/ {{0x1c2a2863, 0xbc5d466e} }, -/**/ {{0x5b0333a7, 0xbfb38a7c} }, -/**/ {{0x2e3896d7, 0xbfa13983} }, -/**/ {{0xa35b7545, 0x3fb115e5} }, -/**/ {{0x99098556, 0xbf9a9658} }, -/**/ {{0x693ac59e, 0xbf980fe6} } }, -/**/ {{{0x00000000, 0x3fdfc000} }, -/**/ {{0x5a1226f5, 0x3fdd791f} }, -/**/ {{0xa5b64a76, 0xbc64017e} }, -/**/ {{0x4e983ae9, 0x3fe9ae10} }, -/**/ {{0x52b783d7, 0xbc8d45ed} }, -/**/ {{0xf394891f, 0xbfd47274} }, -/**/ {{0x22e08713, 0xbc7cd478} }, -/**/ {{0xa445379d, 0xbfa71487} }, -/**/ {{0x831d87b7, 0x3c1569aa} }, -/**/ {{0x0f10bc36, 0x3fc3dabe} }, -/**/ {{0x1cb9bbe6, 0x3bd8df2b} }, -/**/ {{0x8fddd862, 0xbfb3bcc3} }, -/**/ {{0xbcb632d9, 0xbfa04bc8} }, -/**/ {{0x64a26d77, 0x3fb0dfe4} }, -/**/ {{0xd04027d1, 0xbf9b68e6} }, -/**/ {{0xf792c5d9, 0xbf96bb07} } }, -/**/ {{{0x00000000, 0x3fe00000} }, -/**/ {{0x0561bb4f, 0x3fddac67} }, -/**/ {{0x222f65e2, 0x3c7a2b7f} }, -/**/ {{0x9999999a, 0x3fe99999} }, -/**/ {{0x9999999a, 0xbc899999} }, -/**/ {{0x47ae147b, 0xbfd47ae1} }, -/**/ {{0xeb851eb8, 0x3c5eb851} }, -/**/ {{0xc3ece2a5, 0xbfa5d867} }, -/**/ {{0xd7b900af, 0xbc3a485c} }, -/**/ {{0x30553261, 0x3fc3a92a} }, -/**/ {{0x94467382, 0x3c6f06f6} }, -/**/ {{0x0ed80a18, 0xbfb3ec46} }, -/**/ {{0x514d88d8, 0xbf9ec21b} }, -/**/ {{0xf929a833, 0x3fb0a849} }, -/**/ {{0x88dfb80c, 0xbf9c2f8b} }, -/**/ {{0x8245bf09, 0xbf956a49} } }, -/**/ {{{0x00000000, 0x3fe02000} }, -/**/ {{0xbb026974, 0x3fdddf85} }, -/**/ {{0x0c0a1226, 0x3c643bbb} }, -/**/ {{0xb35b2797, 0x3fe9851a} }, -/**/ {{0x18a8fead, 0x3c89cd14} }, -/**/ {{0xa5042a2d, 0xbfd482d7} }, -/**/ {{0xa8224d16, 0x3c0dbc04} }, -/**/ {{0xc56ade02, 0xbfa49f64} }, -/**/ {{0x47da7eea, 0x3c451e52} }, -/**/ {{0xf7c5fe7d, 0x3fc37722} }, -/**/ {{0xd22c4b5c, 0xbc5165be} }, -/**/ {{0xf6f48c5d, 0xbfb4190c} }, -/**/ {{0x58d0c132, 0xbf9cf2cf} }, -/**/ {{0x0ddfdd74, 0x3fb06f2e} }, -/**/ {{0x46e65336, 0xbf9cea6d} }, -/**/ {{0x6423af3b, 0xbf941df9} } }, -/**/ {{{0x00000000, 0x3fe04000} }, -/**/ {{0x6b0744b0, 0x3fde127b} }, -/**/ {{0x6398d4ab, 0xbc52b098} }, -/**/ {{0x113dcc5a, 0x3fe97094} }, -/**/ {{0x4de8c575, 0xbc842780} }, -/**/ {{0x37beb8e5, 0xbfd48a59} }, -/**/ {{0x9dc7541e, 0xbc601dd2} }, -/**/ {{0xa7f2a8fe, 0xbfa36985} }, -/**/ {{0x7437d42d, 0xbc45e414} }, -/**/ {{0x2eb33dd6, 0x3fc344af} }, -/**/ {{0xe3a3193c, 0xbc6d66e9} }, -/**/ {{0xa6763232, 0xbfb44321} }, -/**/ {{0x7217dfc9, 0xbf9b29d6} }, -/**/ {{0xfff8a866, 0x3fb034a7} }, -/**/ {{0x3a6e931d, 0xbf9d99b5} }, -/**/ {{0x4a9f7e19, 0xbf92d661} } }, -/**/ {{{0x00000000, 0x3fe06000} }, -/**/ {{0x066cf51a, 0x3fde4548} }, -/**/ {{0x12ce98f2, 0x3c43a3aa} }, -/**/ {{0x2774fe53, 0x3fe95c06} }, -/**/ {{0x3b851412, 0x3c810dfd} }, -/**/ {{0x2e911e43, 0xbfd49167} }, -/**/ {{0x09466fcd, 0xbc7f6506} }, -/**/ {{0xfedfb0c1, 0xbfa236d0} }, -/**/ {{0x79cb63a9, 0xbc3f6870} }, -/**/ {{0x86b6561c, 0x3fc311d5} }, -/**/ {{0x9543fc9a, 0x3c561982} }, -/**/ {{0xb70aa5a7, 0xbfb46a8d} }, -/**/ {{0xf5ac1efc, 0xbf996756} }, -/**/ {{0xaf7c84b3, 0x3faff19d} }, -/**/ {{0x15ce96b8, 0xbf9e3d8f} }, -/**/ {{0x42726021, 0xbf9193c6} } }, -/**/ {{{0x00000000, 0x3fe08000} }, -/**/ {{0x7f175a34, 0x3fde77eb} }, -/**/ {{0xc1bf3435, 0x3c70e53d} }, -/**/ {{0x69044ba4, 0x3fe94771} }, -/**/ {{0x92d5fbc1, 0xbc7d53e2} }, -/**/ {{0xba91fd89, 0xbfd49802} }, -/**/ {{0xc3c8c4f3, 0x3c71963e} }, -/**/ {{0xf33546d5, 0xbfa1074c} }, -/**/ {{0xc71ad288, 0x3c4bc296} }, -/**/ {{0x99222665, 0x3fc2de9c} }, -/**/ {{0x28dadb64, 0x3c6e4a10} }, -/**/ {{0xfa031cb1, 0xbfb48f5a} }, -/**/ {{0xbc0c6420, 0xbf97ab74} }, -/**/ {{0x876d0f75, 0x3faf7772} }, -/**/ {{0xe431fc96, 0xbf9ed628} }, -/**/ {{0xc64515ec, 0xbf905668} } }, -/**/ {{{0x00000000, 0x3fe0a000} }, -/**/ {{0xc7cf28c4, 0x3fdeaa65} }, -/**/ {{0xeca3bf05, 0x3c62fb2c} }, -/**/ {{0x47bd0aaa, 0x3fe932d6} }, -/**/ {{0x697b6e3c, 0x3c6bdfec} }, -/**/ {{0x0f13a7e8, 0xbfd49e2d} }, -/**/ {{0x20412940, 0x3c6198c5} }, -/**/ {{0x8a4e92df, 0xbf9fb5fe} }, -/**/ {{0x6309a51a, 0xbc3cbb58} }, -/**/ {{0xe67c9829, 0x3fc2ab0a} }, -/**/ {{0x06a4c4ef, 0xbc647643} }, -/**/ {{0x749bc711, 0xbfb4b193} }, -/**/ {{0x27bef265, 0xbf95f651} }, -/**/ {{0x28347ebf, 0x3faefafb} }, -/**/ {{0xe0c06e2f, 0xbf9f63b2} }, -/**/ {{0x9e7b9dd7, 0xbf8e3d09} } }, -/**/ {{{0x00000000, 0x3fe0c000} }, -/**/ {{0xd43f8435, 0x3fdedcb6} }, -/**/ {{0x330884e4, 0xbc5fc976} }, -/**/ {{0x343c31e5, 0x3fe91e35} }, -/**/ {{0x9bb96799, 0xbc8fd46f} }, -/**/ {{0x617d19a1, 0xbfd4a3e7} }, -/**/ {{0xea58b250, 0xbc7d7303} }, -/**/ {{0x9b55d156, 0xbf9d63da} }, -/**/ {{0xd5b4cc6c, 0xbc14bf72} }, -/**/ {{0xd6016a7c, 0x3fc27726} }, -/**/ {{0x435ec4b4, 0x3c4eba22} }, -/**/ {{0x5c52b3c6, 0xbfb4d141} }, -/**/ {{0x2fdd9fbd, 0xbf94480b} }, -/**/ {{0x6d3af4b6, 0x3fae7c63} }, -/**/ {{0x4e61315b, 0xbf9fe65f} }, -/**/ {{0xcea37283, 0xbf8bd8a3} } }, -/**/ {{{0x00000000, 0x3fe0e000} }, -/**/ {{0x98f393d0, 0x3fdf0ede} }, -/**/ {{0x87cb1894, 0xbc72f40a} }, -/**/ {{0x9de85688, 0x3fe9098e} }, -/**/ {{0xa3791e64, 0xbc7c2de1} }, -/**/ {{0xe9238ed7, 0xbfd4a932} }, -/**/ {{0x28864386, 0xbc67a1bb} }, -/**/ {{0x001dec68, 0xbf9b1838} }, -/**/ {{0x8f0ffbdd, 0xbc33ee0e} }, -/**/ {{0xb52e1005, 0x3fc242f6} }, -/**/ {{0x371fd2c1, 0xbc5476eb} }, -/**/ {{0x134edf2d, 0xbfb4ee6f} }, -/**/ {{0x6b13becc, 0xbf92a0bf} }, -/**/ {{0x650f859c, 0x3fadfbd6} }, -/**/ {{0x281586f4, 0xbfa02f31} }, -/**/ {{0x7a73449e, 0xbf898006} } }, -/**/ {{{0x00000000, 0x3fe10000} }, -/**/ {{0x0b541418, 0x3fdf40dd} }, -/**/ {{0xdc382a23, 0xbc6a3992} }, -/**/ {{0xf2efd135, 0x3fe8f4e2} }, -/**/ {{0xd4218911, 0xbc74c3c0} }, -/**/ {{0xdf24b2d1, 0xbfd4ae10} }, -/**/ {{0x79d0ac37, 0x3c713b12} }, -/**/ {{0xd7365f3f, 0xbf98d31f} }, -/**/ {{0x62531dc5, 0xbc18bf3b} }, -/**/ {{0xb7567664, 0x3fc20e80} }, -/**/ {{0xd450197f, 0xbc54a699} }, -/**/ {{0x24d80ddd, 0xbfb50927} }, -/**/ {{0x1b0516ab, 0xbf910088} }, -/**/ {{0x4a356567, 0x3fad797e} }, -/**/ {{0xe14758ed, 0xbfa065f8} }, -/**/ {{0x73d2f6bb, 0xbf87338f} } }, -/**/ {{{0x00000000, 0x3fe12000} }, -/**/ {{0x21a4e495, 0x3fdf72b2} }, -/**/ {{0x0f7eb740, 0x3c5489c2} }, -/**/ {{0xa0470831, 0x3fe8e032} }, -/**/ {{0xe75570cd, 0xbc8c154a} }, -/**/ {{0x7e416c35, 0xbfd4b282} }, -/**/ {{0x60646afd, 0xbc7f1837} }, -/**/ {{0x7a6bec27, 0xbf96949a} }, -/**/ {{0xe6b77ba9, 0x3c38238f} }, -/**/ {{0xf5428c61, 0x3fc1d9ca} }, -/**/ {{0xcd7881aa, 0x3c6a968d} }, -/**/ {{0x41e00b6e, 0xbfb52174} }, -/**/ {{0x702ad3de, 0xbf8ecefa} }, -/**/ {{0x7c8ae0dc, 0x3facf584} }, -/**/ {{0x8aa44fa8, 0xbfa097a2} }, -/**/ {{0x2ed63408, 0xbf84f394} } }, -/**/ {{{0x00000000, 0x3fe14000} }, -/**/ {{0xd3029259, 0x3fdfa45d} }, -/**/ {{0xdc28d8b5, 0xbc7ca563} }, -/**/ {{0x11a6de80, 0x3fe8cb7e} }, -/**/ {{0xac22b8f8, 0x3c610be6} }, -/**/ {{0x02b9488a, 0xbfd4b689} }, -/**/ {{0xaf91d442, 0x3c5ea0bd} }, -/**/ {{0x821fd17e, 0xbf945caf} }, -/**/ {{0x0e51a049, 0x3c38e464} }, -/**/ {{0x6cd45aad, 0x3fc1a4db} }, -/**/ {{0xf4200d5e, 0x3c2288e0} }, -/**/ {{0x3d9dd7c4, 0xbfb53761} }, -/**/ {{0xfb107457, 0xbf8bab68} }, -/**/ {{0x7b46ebd1, 0x3fac7011} }, -/**/ {{0x93134a8f, 0xbfa0c44a} }, -/**/ {{0xf1fa4589, 0xbf82c061} } }, -/**/ {{{0x00000000, 0x3fe16000} }, -/**/ {{0x175fdf83, 0x3fdfd5e0} }, -/**/ {{0x1ec49b15, 0x3c63a87b} }, -/**/ {{0xb18b4749, 0x3fe8b6c5} }, -/**/ {{0xb7d58c0a, 0xbc5fabb8} }, -/**/ {{0xaa26890c, 0xbfd4ba25} }, -/**/ {{0x0ef9b688, 0x3c50e395} }, -/**/ {{0xc8a9b4c0, 0xbf922b65} }, -/**/ {{0xd319146f, 0x3c2835ee} }, -/**/ {{0x00b681bd, 0x3fc16fb8} }, -/**/ {{0x279133b0, 0x3c1df633} }, -/**/ {{0x0a3b410c, 0xbfb54af9} }, -/**/ {{0xebe14682, 0xbf889682} }, -/**/ {{0xdf89e086, 0x3fabe94c} }, -/**/ {{0x0e55a6f8, 0xbfa0ec0e} }, -/**/ {{0x08af68f3, 0xbf809a3e} } }, -/**/ {{{0x00000000, 0x3fe18000} }, -/**/ {{0x73c1a40c, 0x3fe0039c} }, -/**/ {{0x49c9d593, 0xbc8b32c9} }, -/**/ {{0xe931fcd3, 0x3fe8a209} }, -/**/ {{0x8e68c94c, 0x3c6cb8f0} }, -/**/ {{0xb35ad2d8, 0xbfd4bd59} }, -/**/ {{0xcaa606b4, 0xbc61ac1a} }, -/**/ {{0x6dc339ef, 0xbf9000c3} }, -/**/ {{0xaeaeaa73, 0x3c2c62e2} }, -/**/ {{0x7812ee2d, 0x3fc13a66} }, -/**/ {{0x948ffe5b, 0x3c6a8cc2} }, -/**/ {{0xb5955c9c, 0xbfb55c46} }, -/**/ {{0x0fd2b503, 0xbf85906b} }, -/**/ {{0x577de2da, 0x3fab615d} }, -/**/ {{0xa34d31ec, 0xbfa10f0a} }, -/**/ {{0xefe48ad0, 0xbf7d02cb} } }, -/**/ {{{0x00000000, 0x3fe1a000} }, -/**/ {{0x1e82422d, 0x3fe01c34} }, -/**/ {{0xfcca90ee, 0x3c83db44} }, -/**/ {{0x20995a88, 0x3fe88d4b} }, -/**/ {{0x1e42e681, 0x3c802777} }, -/**/ {{0x5e3c840f, 0xbfd4c026} }, -/**/ {{0x3800420d, 0x3c7d7c65} }, -/**/ {{0xb3f88703, 0xbf8bb99b} }, -/**/ {{0x4bf63e82, 0x3c1f62ec} }, -/**/ {{0x7e5193ee, 0x3fc104ec} }, -/**/ {{0xbae4e07d, 0xbc27771e} }, -/**/ {{0x66104515, 0xbfb56b55} }, -/**/ {{0x061a20d1, 0xbf829940} }, -/**/ {{0xa20334d9, 0x3faad868} }, -/**/ {{0x7aba8ee6, 0xbfa12d5e} }, -/**/ {{0x69774b8d, 0xbf78ec1f} } }, -/**/ {{{0x00000000, 0x3fe1c000} }, -/**/ {{0x09250488, 0x3fe034b7} }, -/**/ {{0x8d855410, 0x3c78f9b3} }, -/**/ {{0xbe7f594b, 0x3fe87889} }, -/**/ {{0xc826e7a3, 0xbc7530e1} }, -/**/ {{0xeba4af80, 0xbfd4c28c} }, -/**/ {{0xe6a95faa, 0x3c7104a9} }, -/**/ {{0x846dba10, 0xbf877f13} }, -/**/ {{0x4abd0010, 0x3c2bc924} }, -/**/ {{0xa2deff9f, 0x3fc0cf4f} }, -/**/ {{0xa013c015, 0xbc67d17e} }, -/**/ {{0x577e7899, 0xbfb57830} }, -/**/ {{0xb49ea16d, 0xbf7f6238} }, -/**/ {{0x8ae4a926, 0x3faa4e93} }, -/**/ {{0x2e77f633, 0xbfa14728} }, -/**/ {{0xb81c893e, 0xbf74f0d3} } }, -/**/ {{{0x00000000, 0x3fe1e000} }, -/**/ {{0x314342e6, 0x3fe04d25} }, -/**/ {{0x6442c767, 0xbc81c863} }, -/**/ {{0x2860ad7e, 0x3fe863c6} }, -/**/ {{0x137a2d8f, 0xbc81dcb2} }, -/**/ {{0x9d3dc03a, 0xbfd4c48e} }, -/**/ {{0x197b1db9, 0xbc7d92af} }, -/**/ {{0x5653b1a7, 0xbf8351f6} }, -/**/ {{0x2127dea7, 0xbbe368b4} }, -/**/ {{0x58fa8ca4, 0x3fc09995} }, -/**/ {{0x530429e5, 0xbc446391} }, -/**/ {{0xd81c26eb, 0xbfb582e2} }, -/**/ {{0x3e63c109, 0xbf79b02d} }, -/**/ {{0xe7904294, 0x3fa9c401} }, -/**/ {{0xb933b0f3, 0xbfa15c86} }, -/**/ {{0xd8d860e1, 0xbf711137} } }, -/**/ {{{0x00000000, 0x3fe20000} }, -/**/ {{0x94db30d0, 0x3fe0657e} }, -/**/ {{0x5f6349e6, 0xbc7d5b49} }, -/**/ {{0xc2780614, 0x3fe84f00} }, -/**/ {{0xff3d87fa, 0xbc7fe7b0} }, -/**/ {{0xb562c625, 0xbfd4c62c} }, -/**/ {{0xa78e848c, 0x3c77b2c3} }, -/**/ {{0xb3a4bcb7, 0xbf7e6495} }, -/**/ {{0xe3f2b0a5, 0x3c14eb89} }, -/**/ {{0xf78c0dc4, 0x3fc063c2} }, -/**/ {{0x7539dc13, 0xbc6badf0} }, -/**/ {{0x459eb443, 0xbfb58b78} }, -/**/ {{0x1386e6b4, 0xbf741c83} }, -/**/ {{0x944ff706, 0x3fa938d6} }, -/**/ {{0x66ad4037, 0xbfa16d99} }, -/**/ {{0x01fc736a, 0xbf6a9b1a} } }, -/**/ {{{0x00000000, 0x3fe22000} }, -/**/ {{0x324e9b38, 0x3fe07dc3} }, -/**/ {{0xe04450ac, 0x3c7b70c9} }, -/**/ {{0xefbd6bfe, 0x3fe83a39} }, -/**/ {{0x21f5de26, 0xbc7b2885} }, -/**/ {{0x76ff6c9e, 0xbfd4c768} }, -/**/ {{0xdebc1603, 0x3c56a2c0} }, -/**/ {{0xd9cccfd7, 0xbf76402c} }, -/**/ {{0x4e9786c1, 0xbc1b39c0} }, -/**/ {{0xb900b57a, 0x3fc02ddd} }, -/**/ {{0xea88a215, 0x3c45d916} }, -/**/ {{0x0a58ab40, 0xbfb591fc} }, -/**/ {{0x32a37ac9, 0xbf6d4eb0} }, -/**/ {{0x71fe75f8, 0x3fa8ad33} }, -/**/ {{0xc477a855, 0xbfa17a7f} }, -/**/ {{0x2b035011, 0xbf634c0e} } }, -/**/ {{{0x00000000, 0x3fe24000} }, -/**/ {{0x0861a590, 0x3fe095f3} }, -/**/ {{0x0a15a9f3, 0xbc7121b2} }, -/**/ {{0x11e5c14d, 0x3fe82572} }, -/**/ {{0xacd80b09, 0xbc7df9fc} }, -/**/ {{0x25709bff, 0xbfd4c843} }, -/**/ {{0x1790f484, 0x3c7a9ef6} }, -/**/ {{0x8a0def34, 0xbf6c6d74} }, -/**/ {{0x2a8142d7, 0xbc051e57} }, -/**/ {{0x765e156b, 0x3fbfefd5} }, -/**/ {{0xf0e29c9e, 0xbc3e6048} }, -/**/ {{0x9a724e28, 0xbfb59679} }, -/**/ {{0xcf13e192, 0xbf62a185} }, -/**/ {{0x6433c13f, 0x3fa82139} }, -/**/ {{0x9342e95d, 0xbfa18359} }, -/**/ {{0x8f974107, 0xbf586b34} } }, -/**/ {{{0x00000000, 0x3fe26000} }, -/**/ {{0x1639866c, 0x3fe0ae0e} }, -/**/ {{0xf2de445a, 0x3c7075ab} }, -/**/ {{0x89625f5d, 0x3fe810a9} }, -/**/ {{0x0fcf7262, 0xbc8e4bea} }, -/**/ {{0x0465c69b, 0xbfd4c8be} }, -/**/ {{0xd7f7f89c, 0x3c462ef4} }, -/**/ {{0x4de612d5, 0xbf59210e} }, -/**/ {{0xba53898d, 0xbbf43659} }, -/**/ {{0xfe836c69, 0x3fbf83dd} }, -/**/ {{0x27f5499a, 0xbc36cb56} }, -/**/ {{0x7136edda, 0xbfb598fc} }, -/**/ {{0x00013fb7, 0xbf50634c} }, -/**/ {{0x4fe557c2, 0x3fa79508} }, -/**/ {{0xb8ae41dc, 0xbfa18846} }, -/**/ {{0xe36bd239, 0xbf455fce} } }, -/**/ {{{0x00000000, 0x3fe28000} }, -/**/ {{0x5b5b43da, 0x3fe0c614} }, -/**/ {{0x13b5404f, 0x3c5974fa} }, -/**/ {{0xb560d35c, 0x3fe7fbe0} }, -/**/ {{0xae5a0887, 0xbc84f066} }, -/**/ {{0x57c2e1cb, 0xbfd4c8da} }, -/**/ {{0xe0a3774c, 0x3c73de0e} }, -/**/ {{0x61c69f3c, 0x3f38b341} }, -/**/ {{0x7b200371, 0x3bd7b2e2} }, -/**/ {{0xd351e8ed, 0x3fbf17de} }, -/**/ {{0x650c5a9c, 0x3c5bce38} }, -/**/ {{0x0e77234c, 0xbfb59990} }, -/**/ {{0x99f594ee, 0x3f3006ef} }, -/**/ {{0x1a75a6cc, 0x3fa708bf} }, -/**/ {{0x31a471d5, 0xbfa18967} }, -/**/ {{0x59bf0521, 0x3f24cc7e} } }, -/**/ {{{0x00000000, 0x3fe2a000} }, -/**/ {{0xd7aa6f7d, 0x3fe0de05} }, -/**/ {{0xb1c529ab, 0xbc783684} }, -/**/ {{0xf3cab884, 0x3fe7e717} }, -/**/ {{0x3b1fa4c7, 0x3c7e1b21} }, -/**/ {{0x63830b4b, 0xbfd4c899} }, -/**/ {{0xae3ffeff, 0xbc7b6e32} }, -/**/ {{0xfc06cc4f, 0x3f628757} }, -/**/ {{0x56f01f66, 0xbbb4c155} }, -/**/ {{0x8424efd8, 0x3fbeabe1} }, -/**/ {{0x6e5604ea, 0x3bdf5129} }, -/**/ {{0xf3ffff64, 0xbfb5983f} }, -/**/ {{0x1f564189, 0x3f57ec04} }, -/**/ {{0xa92e6e68, 0x3fa67c7b} }, -/**/ {{0x0542d0ff, 0xbfa186db} }, -/**/ {{0x11a37bde, 0x3f4ee247} } }, -/**/ {{{0x00000000, 0x3fe2c000} }, -/**/ {{0x8b67e295, 0x3fe0f5e2} }, -/**/ {{0x7ec990d0, 0x3be311b1} }, -/**/ {{0xa145af59, 0x3fe7d24f} }, -/**/ {{0xabdb623b, 0xbc83c6d1} }, -/**/ {{0x6b9bdb30, 0xbfd4c7fc} }, -/**/ {{0xd3bbb84b, 0x3c7c2fae} }, -/**/ {{0xc729b366, 0x3f70e125} }, -/**/ {{0x7a19993c, 0x3c1291fb} }, -/**/ {{0x66cf0dd8, 0x3fbe3fef} }, -/**/ {{0xcd5e7640, 0xbc5428b7} }, -/**/ {{0xa3273c21, 0xbfb59517} }, -/**/ {{0x36891acb, 0x3f65adcf} }, -/**/ {{0xe121c017, 0x3fa5f05a} }, -/**/ {{0x384bad65, 0xbfa180c2} }, -/**/ {{0xd31e02a7, 0x3f5bd6f1} } }, -/**/ {{{0x00000000, 0x3fe2e000} }, -/**/ {{0x77307a0d, 0x3fe10daa} }, -/**/ {{0xd44c7b05, 0x3c869c33} }, -/**/ {{0x19337139, 0x3fe7bd88} }, -/**/ {{0x00e777ef, 0xbc7fd248} }, -/**/ {{0xb3e16264, 0xbfd4c704} }, -/**/ {{0xd46ed4e3, 0xbc7ed720} }, -/**/ {{0x62c1daf7, 0x3f7863a5} }, -/**/ {{0x30cc82d1, 0x3c155e73} }, -/**/ {{0x97a241da, 0x3fbdd411} }, -/**/ {{0x9ac44edd, 0x3c27a15a} }, -/**/ {{0x9a6c71a6, 0xbfb59022} }, -/**/ {{0xb5534ebe, 0x3f6f285a} }, -/**/ {{0xa76d3cf7, 0x3fa56478} }, -/**/ {{0xc1240db6, 0xbfa1773c} }, -/**/ {{0x3891a70c, 0x3f63e5a1} } }, -/**/ {{{0x00000000, 0x3fe30000} }, -/**/ {{0x9bfbd2a9, 0x3fe1255d} }, -/**/ {{0xe1c0ee35, 0xbc52bdae} }, -/**/ {{0xb5b1ffa1, 0x3fe7a8c1} }, -/**/ {{0x4e005ea3, 0x3c873e4a} }, -/**/ {{0x7fead5b8, 0xbfd4c5b3} }, -/**/ {{0x55abc25a, 0x3c77958e} }, -/**/ {{0x01e4c970, 0x3f7fcb31} }, -/**/ {{0xc5337fda, 0xbc1ad968} }, -/**/ {{0xf983ecf1, 0x3fbd6850} }, -/**/ {{0x02ed6910, 0xbc3e45e6} }, -/**/ {{0x532f49b6, 0xbfb5896c} }, -/**/ {{0xeaefcf7f, 0x3f7432e2} }, -/**/ {{0xe1db38f0, 0x3fa4d8ef} }, -/**/ {{0x7c5c9def, 0xbfa16a6a} }, -/**/ {{0x7b6fe5d0, 0x3f69a742} } }, -/**/ {{{0x00000000, 0x3fe32000} }, -/**/ {{0xfb1b056e, 0x3fe13cfb} }, -/**/ {{0x6fc3ed38, 0x3c83110e} }, -/**/ {{0xcf9bee6c, 0x3fe793fc} }, -/**/ {{0xd8d91b6c, 0xbc8dc7d2} }, -/**/ {{0x12f7e51f, 0xbfd4c40a} }, -/**/ {{0x0d5d686d, 0x3c7d1e10} }, -/**/ {{0x839d28fa, 0x3f838be8} }, -/**/ {{0x52131640, 0x3c13427a} }, -/**/ {{0x360bfed5, 0x3fbcfcb6} }, -/**/ {{0xa36f599f, 0xbc5e3cb4} }, -/**/ {{0x3f7aa463, 0xbfb58100} }, -/**/ {{0xb76f2bc0, 0x3f78b31e} }, -/**/ {{0x77dd6b80, 0x3fa44dda} }, -/**/ {{0x21c53ca9, 0xbfa15a6b} }, -/**/ {{0x6cd99ed4, 0x3f6f30a7} } }, -/**/ {{{0x00000000, 0x3fe34000} }, -/**/ {{0x9637646a, 0x3fe15485} }, -/**/ {{0x548bf3c3, 0xbc84ba7c} }, -/**/ {{0xbe88c85e, 0x3fe77f39} }, -/**/ {{0x9b6750c8, 0xbc6a983f} }, -/**/ {{0xafd6bee5, 0xbfd4c209} }, -/**/ {{0x5e73e93a, 0x3c7d21ef} }, -/**/ {{0xfc556ca7, 0x3f8724c7} }, -/**/ {{0x42e5673e, 0xbc23cef2} }, -/**/ {{0xbdaef67d, 0x3fbc9149} }, -/**/ {{0x3f04fcdc, 0xbc1e549c} }, -/**/ {{0xc7e4996a, 0xbfb576e9} }, -/**/ {{0xba6ceedb, 0x3f7d14fc} }, -/**/ {{0x53dcdc4a, 0x3fa3c351} }, -/**/ {{0x3a0a53a1, 0xbfa1475e} }, -/**/ {{0x62102619, 0x3f724116} } }, -/**/ {{{0x00000000, 0x3fe36000} }, -/**/ {{0x6f5137e1, 0x3fe16bfa} }, -/**/ {{0xe141bd35, 0x3c79606f} }, -/**/ {{0xd8cd8d65, 0x3fe76a78} }, -/**/ {{0xddf1f71f, 0x3c854a99} }, -/**/ {{0x98cabe40, 0xbfd4bfb3} }, -/**/ {{0x9ef99598, 0xbc61e24d} }, -/**/ {{0x388e6864, 0x3f8ab03d} }, -/**/ {{0xc340d113, 0x3c210541} }, -/**/ {{0xc7f24ec4, 0x3fbc2613} }, -/**/ {{0x0a59af31, 0x3c54042a} }, -/**/ {{0x49833ac1, 0xbfb56b34} }, -/**/ {{0x22f6cd28, 0x3f80ac4f} }, -/**/ {{0x64dac153, 0x3fa3396c} }, -/**/ {{0x14dadf32, 0xbfa13163} }, -/**/ {{0x21aeee27, 0x3f74ce20} } }, -/**/ {{{0x00000000, 0x3fe38000} }, -/**/ {{0x88be7c13, 0x3fe1835a} }, -/**/ {{0xec00c301, 0x3c8c621c} }, -/**/ {{0x737d49ca, 0x3fe755ba} }, -/**/ {{0xd4cb44c6, 0xbc8abaf3} }, -/**/ {{0x0f73c4b3, 0xbfd4bd09} }, -/**/ {{0xa9936e0b, 0x3c3e9ebf} }, -/**/ {{0x8920477f, 0x3f8e2e4f} }, -/**/ {{0x0360e009, 0xbc0889e3} }, -/**/ {{0x53aaefa0, 0x3fbbbb1c} }, -/**/ {{0xa1007b7f, 0xbc5edb26} }, -/**/ {{0x13f5f619, 0xbfb55deb} }, -/**/ {{0xe675741e, 0x3f82bf14} }, -/**/ {{0xa05e0ebf, 0x3fa2b042} }, -/**/ {{0xbf95c5c1, 0xbfa11898} }, -/**/ {{0xe421ee51, 0x3f773faf} } }, -/**/ {{{0x00000000, 0x3fe3a000} }, -/**/ {{0xe5299f9a, 0x3fe19aa5} }, -/**/ {{0x2c58f835, 0xbc8a606c} }, -/**/ {{0xe269c5b3, 0x3fe740fe} }, -/**/ {{0x4c82509c, 0x3c873eff} }, -/**/ {{0x54b63d79, 0xbfd4ba0b} }, -/**/ {{0x75bceeff, 0xbc51d68a} }, -/**/ {{0x9d9b3eb0, 0x3f90cf83} }, -/**/ {{0x68a7ca2f, 0xbc107399} }, -/**/ {{0x27453d35, 0x3fbb506b} }, -/**/ {{0x00bdfedd, 0x3c326b36} }, -/**/ {{0x67836cef, 0xbfb54f19} }, -/**/ {{0x567ed6e8, 0x3f84c2e5} }, -/**/ {{0x04a983e8, 0x3fa227ea} }, -/**/ {{0xfc7ce22f, 0xbfa0fd1d} }, -/**/ {{0x2ffea71d, 0x3f79960c} } }, -/**/ {{{0x00000000, 0x3fe3c000} }, -/**/ {{0x87904285, 0x3fe1b1dc} }, -/**/ {{0x8aef8f29, 0xbc621e8c} }, -/**/ {{0x78244c5a, 0x3fe72c46} }, -/**/ {{0xe664f3a2, 0x3c888c36} }, -/**/ {{0xa8a3ca2f, 0xbfd4b6bb} }, -/**/ {{0x1e1f3e19, 0xbc778793} }, -/**/ {{0xc8a3d8bb, 0x3f928136} }, -/**/ {{0x140daf1c, 0x3c3dc4d8} }, -/**/ {{0xd1165ef3, 0x3fbae607} }, -/**/ {{0x6305876c, 0xbc5fbfaa} }, -/**/ {{0x734b94bd, 0xbfb53eca} }, -/**/ {{0x7c458eb1, 0x3f86b7d8} }, -/**/ {{0x9b360f57, 0x3fa1a077} }, -/**/ {{0x3a6beabd, 0xbfa0df11} }, -/**/ {{0xaf42dc87, 0x3f7bd182} } }, -/**/ {{{0x00000000, 0x3fe3e000} }, -/**/ {{0x7341f64f, 0x3fe1c8fe} }, -/**/ {{0x9d5e792a, 0x3c728bbc} }, -/**/ {{0x85fe8a32, 0x3fe71791} }, -/**/ {{0xe8bbb0d0, 0x3c8f15bd} }, -/**/ {{0x4a6497be, 0xbfd4b31b} }, -/**/ {{0x782968f7, 0x3c737223} }, -/**/ {{0x5e0c3122, 0x3f942c46} }, -/**/ {{0x86422b13, 0xbc33e26a} }, -/**/ {{0xa7b659b8, 0x3fba7bf9} }, -/**/ {{0x25381986, 0xbc3cdf63} }, -/**/ {{0x538deb45, 0xbfb52d09} }, -/**/ {{0xa0c1f425, 0x3f889e08} }, -/**/ {{0x7b6d72e6, 0x3fa119ff} }, -/**/ {{0x8d11287b, 0xbfa0be90} }, -/**/ {{0xbce83ad4, 0x3f7df267} } }, -/**/ {{{0x00000000, 0x3fe40000} }, -/**/ {{0xabdefeb4, 0x3fe1e00b} }, -/**/ {{0x287a668f, 0xbc5928df} }, -/**/ {{0x5c0b8170, 0x3fe702e0} }, -/**/ {{0x5c0b8170, 0x3c7702e0} }, -/**/ {{0x78215a76, 0xbfd4af2b} }, -/**/ {{0xab3a13d8, 0xbc581c2e} }, -/**/ {{0xe9e4a9d0, 0x3f95d0b7} }, -/**/ {{0xebf91fc7, 0xbc3aa02a} }, -/**/ {{0xca629942, 0x3fba1247} }, -/**/ {{0xc245db83, 0xbc46961a} }, -/**/ {{0x100385b4, 0xbfb519e1} }, -/**/ {{0x32616ed8, 0x3f8a7592} }, -/**/ {{0xcda1223a, 0x3fa09494} }, -/**/ {{0xa5a5c251, 0xbfa09bb9} }, -/**/ {{0xf489d8ba, 0x3f7ff915} } }, -/**/ {{{0x00000000, 0x3fe42000} }, -/**/ {{0x3557138a, 0x3fe1f704} }, -/**/ {{0xf6d7dd47, 0x3c76c659} }, -/**/ {{0x4920943e, 0x3fe6ee33} }, -/**/ {{0x61a3a541, 0xbc62723e} }, -/**/ {{0x6eedf042, 0xbfd4aaed} }, -/**/ {{0xe7561ed4, 0x3c5b337a} }, -/**/ {{0x68796803, 0x3f976e91} }, -/**/ {{0x44d1db93, 0xbc0e806f} }, -/**/ {{0x21688625, 0x3fb9a8f9} }, -/**/ {{0xb1ec0554, 0x3c540185} }, -/**/ {{0x9a4cbc61, 0xbfb5055c} }, -/**/ {{0xab0be204, 0x3f8c3e93} }, -/**/ {{0xce3968a1, 0x3fa01049} }, -/**/ {{0xcc2331ba, 0xbfa076a9} }, -/**/ {{0xe220db7e, 0x3f80f2f6} } }, -/**/ {{{0x00000000, 0x3fe44000} }, -/**/ {{0x13e823b2, 0x3fe20de8} }, -/**/ {{0x53ebb744, 0xbc8791d7} }, -/**/ {{0x9ad6a3fd, 0x3fe6d98a} }, -/**/ {{0xc4e69862, 0xbc808110} }, -/**/ {{0x6ab4a79d, 0xbfd4a662} }, -/**/ {{0x9fc1cc2b, 0x3c52ed25} }, -/**/ {{0x42e6dc28, 0x3f9905d9} }, -/**/ {{0xe39b7707, 0xbc228c79} }, -/**/ {{0x5e97c6f4, 0x3fb94014} }, -/**/ {{0xf8779202, 0xbc52b822} }, -/**/ {{0xcc723054, 0xbfb4ef86} }, -/**/ {{0x76852811, 0x3f8df92d} }, -/**/ {{0xa231ee3f, 0x3f9f1a5f} }, -/**/ {{0xd8f34e77, 0xbfa04f7d} }, -/**/ {{0x80706a34, 0x3f81dcaa} } }, -/**/ {{{0x00000000, 0x3fe46000} }, -/**/ {{0x4c1d192a, 0x3fe224b7} }, -/**/ {{0xf88a60c4, 0x3c8d6d3d} }, -/**/ {{0x9d8b44ec, 0x3fe6c4e6} }, -/**/ {{0x4ed04ec2, 0xbc589d5c} }, -/**/ {{0xa6222a08, 0xbfd4a18b} }, -/**/ {{0xd3867dbd, 0xbc66c919} }, -/**/ {{0x4bb5a8a0, 0x3f9a9696} }, -/**/ {{0x927bb5bd, 0x3c36698e} }, -/**/ {{0xfdbbcc76, 0x3fb8d79f} }, -/**/ {{0x4efb71a1, 0x3c2578bd} }, -/**/ {{0x6778e363, 0xbfb4d86a} }, -/**/ {{0xd930230d, 0x3f8fa581} }, -/**/ {{0x8a6221aa, 0x3f9e16ae} }, -/**/ {{0x2f183972, 0xbfa02652} }, -/**/ {{0x3e507f4f, 0x3f82b9db} } }, -/**/ {{{0x00000000, 0x3fe48000} }, -/**/ {{0xe2cc9e6a, 0x3fe23b71} }, -/**/ {{0x9f38224e, 0x3c6c421c} }, -/**/ {{0x9c620595, 0x3fe6b047} }, -/**/ {{0x07d7f0c2, 0x3c8867df} }, -/**/ {{0x5a920887, 0xbfd49c6a} }, -/**/ {{0x37bcc433, 0xbc764547} }, -/**/ {{0xbb7e5931, 0x3f9c20cf} }, -/**/ {{0x4db6bef2, 0xbc3d86f5} }, -/**/ {{0x451c4a5d, 0x3fb86fa2} }, -/**/ {{0x15afb52c, 0xbc475142} }, -/**/ {{0x120917da, 0xbfb4c012} }, -/**/ {{0x6b9c3fad, 0x3f90a1da} }, -/**/ {{0x708543e5, 0x3f9d159f} }, -/**/ {{0x6d929bce, 0xbf9ff685} }, -/**/ {{0xd0361a66, 0x3f838ac0} } }, -/**/ {{{0x00000000, 0x3fe4a000} }, -/**/ {{0xdd17e501, 0x3fe25217} }, -/**/ {{0x8c1b679c, 0x3c856aa8} }, -/**/ {{0xe145c95d, 0x3fe69bad} }, -/**/ {{0x5605046d, 0xbc873257} }, -/**/ {{0xbffbe8a8, 0xbfd496ff} }, -/**/ {{0xc7b45e6f, 0x3c36a5c5} }, -/**/ {{0x2d9556eb, 0x3f9da48d} }, -/**/ {{0x1871a19d, 0x3c3ff0e8} }, -/**/ {{0x46043f42, 0x3fb80821} }, -/**/ {{0xe660cfa1, 0x3c550eec} }, -/**/ {{0x5727a8cb, 0xbfb4a688} }, -/**/ {{0x0e13efbc, 0x3f9169f6} }, -/**/ {{0xb59149dd, 0x3f9c174f} }, -/**/ {{0xb10444dd, 0xbf9f9cd5} }, -/**/ {{0x03e91dd9, 0x3f844f95} } }, -/**/ {{{0x00000000, 0x3fe4c000} }, -/**/ {{0x40696da6, 0x3fe268a9} }, -/**/ {{0xa04c73cc, 0x3c5d1348} }, -/**/ {{0xb4ea3592, 0x3fe68719} }, -/**/ {{0x088ed284, 0xbc7ecf86} }, -/**/ {{0x0ce1507d, 0xbfd4914d} }, -/**/ {{0x4dff2946, 0xbc6410ef} }, -/**/ {{0x9cbf7eb7, 0x3f9f21d6} }, -/**/ {{0xeaaad7e2, 0x3c39bc22} }, -/**/ {{0xdd4f3070, 0x3fb7a122} }, -/**/ {{0x1cfe44af, 0x3c50d950} }, -/**/ {{0xa50188df, 0xbfb48bd7} }, -/**/ {{0x71756204, 0x3f922b27} }, -/**/ {{0x0810a33a, 0x3f9b1bdb} }, -/**/ {{0xf1011313, 0xbf9f3fca} }, -/**/ {{0x8fe0f49b, 0x3f850893} } }, -/**/ {{{0x00000000, 0x3fe4e000} }, -/**/ {{0x1273d1b3, 0x3fe27f26} }, -/**/ {{0x6151dd9f, 0x3c843bf3} }, -/**/ {{0x5ecd3069, 0x3fe6728b} }, -/**/ {{0x539f23ff, 0x3c67417b} }, -/**/ {{0x763c0fe8, 0xbfd48b53} }, -/**/ {{0x6027975c, 0xbc677a1a} }, -/**/ {{0x2ff7dd6a, 0x3fa04c5a} }, -/**/ {{0x496202e8, 0xbc40808e} }, -/**/ {{0xb3fc3f7c, 0x3fb73aac} }, -/**/ {{0x86b114ff, 0x3c4b58cb} }, -/**/ {{0x4bc91249, 0xbfb4700a} }, -/**/ {{0xef2490f8, 0x3f92e582} }, -/**/ {{0x6c875580, 0x3f9a235b} }, -/**/ {{0xe55cd596, 0xbf9edf99} }, -/**/ {{0xe40c5a18, 0x3f85b5f9} } }, -/**/ {{{0x00000000, 0x3fe50000} }, -/**/ {{0x59308e31, 0x3fe2958e} }, -/**/ {{0xb0c6c087, 0xbc709e73} }, -/**/ {{0x2538713c, 0x3fe65e03} }, -/**/ {{0x42c09163, 0xbc601392} }, -/**/ {{0x2f6d4575, 0xbfd48514} }, -/**/ {{0x4568af3f, 0xbc356341} }, -/**/ {{0x9386fd1d, 0x3fa10497} }, -/**/ {{0x230a452f, 0xbc4a756a} }, -/**/ {{0x3fc6c180, 0x3fb6d4c4} }, -/**/ {{0xdb3fe137, 0x3c5ab2b9} }, -/**/ {{0x7ca4cfd0, 0xbfb4532a} }, -/**/ {{0x90eb1d30, 0x3f93991d} }, -/**/ {{0x46163051, 0x3f992de9} }, -/**/ {{0x2de874ff, 0xbf9e7c76} }, -/**/ {{0xfc0c1cb2, 0x3f865806} } }, -/**/ {{{0x00000000, 0x3fe52000} }, -/**/ {{0x1aded073, 0x3fe2abe2} }, -/**/ {{0x01ad022e, 0x3c8c28c0} }, -/**/ {{0x4d432177, 0x3fe64981} }, -/**/ {{0x055e240c, 0x3c83f41b} }, -/**/ {{0x6a2cfd01, 0xbfd47e90} }, -/**/ {{0xf152d080, 0x3c628585} }, -/**/ {{0xfbe3ed9e, 0x3fa1b9a7} }, -/**/ {{0xf259fe04, 0xbc18a085} }, -/**/ {{0xc3c40175, 0x3fb66f6e} }, -/**/ {{0xb0fda762, 0x3c41d80a} }, -/**/ {{0x48af643a, 0xbfb43542} }, -/**/ {{0x05ad7652, 0x3f94460d} }, -/**/ {{0x5f55ab26, 0x3f983b9b} }, -/**/ {{0x4be18b23, 0xbf9e1692} }, -/**/ {{0x32e755a3, 0x3f86eefb} } }, -/**/ {{{0x00000000, 0x3fe54000} }, -/**/ {{0x5e024466, 0x3fe2c221} }, -/**/ {{0xda3a4be1, 0xbc44b810} }, -/**/ {{0x1ad38da0, 0x3fe63506} }, -/**/ {{0x94ec14b0, 0xbc67f12a} }, -/**/ {{0x567a6652, 0xbfd477c9} }, -/**/ {{0xbbb9df88, 0x3c7be71c} }, -/**/ {{0x1535acb9, 0x3fa26b90} }, -/**/ {{0xff041454, 0xbc30ff6c} }, -/**/ {{0x5105d8fa, 0x3fb60ab1} }, -/**/ {{0x3f2d6492, 0x3c535a89} }, -/**/ {{0xa0083319, 0xbfb4165b} }, -/**/ {{0x965eb0a7, 0x3f94ec67} }, -/**/ {{0xf36231e5, 0x3f974c86} }, -/**/ {{0x9c25f4a4, 0xbf9dae1f} }, -/**/ {{0x183e42dc, 0x3f877b18} } }, -/**/ {{{0x00000000, 0x3fe56000} }, -/**/ {{0x2961e48c, 0x3fe2d84c} }, -/**/ {{0x0a36e506, 0xbc7f2542} }, -/**/ {{0xd0a0e5d4, 0x3fe62091} }, -/**/ {{0xcccb008e, 0x3c82a27d} }, -/**/ {{0x228ca1b6, 0xbfd470c0} }, -/**/ {{0x32884415, 0xbc788e9b} }, -/**/ {{0xb365e4d9, 0x3fa31a54} }, -/**/ {{0xda0f99ae, 0x3c3e6e70} }, -/**/ {{0xc741ccb7, 0x3fb5a690} }, -/**/ {{0x6508ffe1, 0xbc383905} }, -/**/ {{0x50f46c17, 0xbfb3f680} }, -/**/ {{0x1b344c30, 0x3f958c44} }, -/**/ {{0xb713db8a, 0x3f9660bf} }, -/**/ {{0x5224992a, 0xbf9d434e} }, -/**/ {{0x46ffb16e, 0x3f87fca0} } }, -/**/ {{{0x00000000, 0x3fe58000} }, -/**/ {{0x8406cbca, 0x3fe2ee62} }, -/**/ {{0x9ff0cf8d, 0x3c8c5d5e} }, -/**/ {{0xb0350d38, 0x3fe60c24} }, -/**/ {{0xf3db4fcb, 0x3c81ffe9} }, -/**/ {{0xfac420bd, 0xbfd46975} }, -/**/ {{0x850528a0, 0x3c7e6994} }, -/**/ {{0xd098b4ee, 0x3fa3c5fa} }, -/**/ {{0xaa6a6874, 0x3c353c41} }, -/**/ {{0xd57c5b53, 0x3fb54311} }, -/**/ {{0x72d146e0, 0x3c50d02e} }, -/**/ {{0x071017e0, 0xbfb3d5ba} }, -/**/ {{0xf11b08a7, 0x3f9625b9} }, -/**/ {{0xe25bbc6f, 0x3f957857} }, -/**/ {{0x7384981f, 0xbf9cd64d} }, -/**/ {{0x3da3b8d5, 0x3f8873d7} } }, -/**/ {{{0x00000000, 0x3fe5a000} }, -/**/ {{0x753b090b, 0x3fe30464} }, -/**/ {{0x61da18f3, 0xbc73e712} }, -/**/ {{0xf9ee77b6, 0x3fe5f7be} }, -/**/ {{0x854f9928, 0x3c8949f7} }, -/**/ {{0x099c98f6, 0xbfd461ec} }, -/**/ {{0x3eafe889, 0x3c5da491} }, -/**/ {{0x8ba9e286, 0x3fa46e87} }, -/**/ {{0x5377a1a9, 0x3c42573a} }, -/**/ {{0xfab82ffb, 0x3fb4e038} }, -/**/ {{0x402ef939, 0xbc414e45} }, -/**/ {{0x4a8ec478, 0xbfb3b412} }, -/**/ {{0xef6dba07, 0x3f96b8e0} }, -/**/ {{0x39c13c6e, 0x3f949360} }, -/**/ {{0xd47bfddb, 0xbf9c674a} }, -/**/ {{0x37ed6935, 0x3f88e101} } }, -/**/ {{{0x00000000, 0x3fe5c000} }, -/**/ {{0x048874be, 0x3fe31a52} }, -/**/ {{0x87a7ac24, 0x3c840cab} }, -/**/ {{0xed021586, 0x3fe5e360} }, -/**/ {{0xb32ab7e4, 0x3c86a444} }, -/**/ {{0x779f86c4, 0xbfd45a23} }, -/**/ {{0x6b782501, 0xbc75b9dc} }, -/**/ {{0x26af940c, 0x3fa51400} }, -/**/ {{0xf9ce64e2, 0x3c4f700e} }, -/**/ {{0x86a8eb42, 0x3fb47e0a} }, -/**/ {{0x36377584, 0xbc5a4df9} }, -/**/ {{0x7f8b6d42, 0xbfb39192} }, -/**/ {{0x5deeeabc, 0x3f9745d1} }, -/**/ {{0x17fa1033, 0x3f93b1e8} }, -/**/ {{0x14cf2061, 0xbf9bf673} }, -/**/ {{0x0a340016, 0x3f894463} } }, -/**/ {{{0x00000000, 0x3fe5e000} }, -/**/ {{0x39b78856, 0x3fe3302b} }, -/**/ {{0xd87ba82b, 0x3c85dd2e} }, -/**/ {{0xc77d4bea, 0x3fe5cf0a} }, -/**/ {{0x0d42ab66, 0xbc8684ab} }, -/**/ {{0x6b573e11, 0xbfd4521d} }, -/**/ {{0xb90c9c27, 0xbc7601b9} }, -/**/ {{0x0582aeaa, 0x3fa5b66a} }, -/**/ {{0x8cc985ad, 0x3c281575} }, -/**/ {{0x9a69373d, 0x3fb41c8a} }, -/**/ {{0x25ea8f67, 0xbc33df07} }, -/**/ {{0xe5673a18, 0xbfb36e43} }, -/**/ {{0xeb05f3bc, 0x3f97cca3} }, -/**/ {{0x7797abe9, 0x3f92d3fd} }, -/**/ {{0x9d71c254, 0xbf9b83f1} }, -/**/ {{0xfe333861, 0x3f899e41} } }, -/**/ {{{0x00000000, 0x3fe60000} }, -/**/ {{0x1cce37bb, 0x3fe345f0} }, -/**/ {{0x37c71102, 0x3c810211} }, -/**/ {{0xc647fa91, 0x3fe5babc} }, -/**/ {{0x8056eaf3, 0x3c84339b} }, -/**/ {{0x094286d0, 0xbfd449db} }, -/**/ {{0x512b1c7b, 0x3c75e178} }, -/**/ {{0xac4cf102, 0x3fa655ca} }, -/**/ {{0x61e8206a, 0xbc27a1e4} }, -/**/ {{0x2933dd9c, 0x3fb3bbbd} }, -/**/ {{0xbd42c006, 0xbc517633} }, -/**/ {{0x9636afc9, 0xbfb34a2f} }, -/**/ {{0xa2400f6f, 0x3f984d71} }, -/**/ {{0xfcc53cab, 0x3f91f9ac} }, -/**/ {{0x9ec31ef1, 0xbf9b0ff0} }, -/**/ {{0xb1615b05, 0x3f89eee3} } }, -/**/ {{{0x00000000, 0x3fe62000} }, -/**/ {{0xb60eccce, 0x3fe35ba0} }, -/**/ {{0x9b9368b9, 0x3c8e3ba1} }, -/**/ {{0x25268d22, 0x3fe5a677} }, -/**/ {{0xaf72cee6, 0x3c7bc76e} }, -/**/ {{0x73c8c31c, 0xbfd4415d} }, -/**/ {{0xe00e5645, 0xbc3e5b3c} }, -/**/ {{0xbe1ce1b6, 0x3fa6f227} }, -/**/ {{0xe699fcac, 0xbc04a922} }, -/**/ {{0xf91f9885, 0x3fb35ba5} }, -/**/ {{0x418827b3, 0xbc43f8be} }, -/**/ {{0x863cebc9, 0xbfb3255e} }, -/**/ {{0xe315ca66, 0x3f98c853} }, -/**/ {{0xff116cac, 0x3f912301} }, -/**/ {{0x0f5e09c2, 0xbf9a9a99} }, -/**/ {{0xf4c8d587, 0x3f8a368d} } }, -/**/ {{{0x00000000, 0x3fe64000} }, -/**/ {{0x0df6c504, 0x3fe3713d} }, -/**/ {{0xe031606d, 0xbc54f789} }, -/**/ {{0x1ebc184f, 0x3fe5923a} }, -/**/ {{0xbe5956dd, 0x3c829fe8} }, -/**/ {{0xcb2e9cc9, 0xbfd438a5} }, -/**/ {{0x7d6ce3eb, 0xbc7c1839} }, -/**/ {{0xfb7fa678, 0x3fa78b86} }, -/**/ {{0xd082025e, 0x3befb53e} }, -/**/ {{0xa3dd5905, 0x3fb2fc48} }, -/**/ {{0x06b78682, 0x3c5fd567} }, -/**/ {{0x8374843c, 0xbfb2ffd9} }, -/**/ {{0x57f51471, 0x3f993d64} }, -/**/ {{0x933f6cc5, 0x3f905006} }, -/**/ {{0xab7658df, 0xbf9a2412} }, -/**/ {{0xae624ab4, 0x3f8a7586} } }, -/**/ {{{0x00000000, 0x3fe66000} }, -/**/ {{0x2d3db11f, 0x3fe386c5} }, -/**/ {{0xcbebe6a0, 0xbc8b78e1} }, -/**/ {{0xec8c8203, 0x3fe57e05} }, -/**/ {{0x5e7f92dc, 0x3c8ea585} }, -/**/ {{0x2d8b381e, 0xbfd42fb5} }, -/**/ {{0x5cff451e, 0xbc63afe6} }, -/**/ {{0x4120d643, 0x3fa821ee} }, -/**/ {{0xcbc4d2dc, 0xbc3e664f} }, -/**/ {{0x9778bfdb, 0x3fb29da8} }, -/**/ {{0x7c2057a5, 0x3c3760dd} }, -/**/ {{0x3525a55a, 0xbfb2d9a9} }, -/**/ {{0xed9015c8, 0x3f99acbc} }, -/**/ {{0x2a35e7d2, 0x3f8f0187} }, -/**/ {{0xf4bcdfc7, 0xbf99ac83} }, -/**/ {{0xbbeb4f11, 0x3f8aac13} } }, -/**/ {{{0x00000000, 0x3fe68000} }, -/**/ {{0x1cd4171a, 0x3fe39c39} }, -/**/ {{0x31d8bf46, 0xbc823043} }, -/**/ {{0xc6feb417, 0x3fe569da} }, -/**/ {{0x0625e450, 0x3c803ce5} }, -/**/ {{0xb6bde980, 0xbfd4268c} }, -/**/ {{0xe8258561, 0xbc6e8f76} }, -/**/ {{0x86705749, 0x3fa8b563} }, -/**/ {{0xe6172281, 0x3c418e14} }, -/**/ {{0x171a8768, 0x3fb23fc9} }, -/**/ {{0x3225d825, 0xbc562184} }, -/**/ {{0x1b8904fd, 0xbfb2b2d6} }, -/**/ {{0xca70ce88, 0x3f9a1677} }, -/**/ {{0x62963581, 0x3f8d6a81} }, -/**/ {{0x32c353bb, 0xbf993412} }, -/**/ {{0xd7354ec0, 0x3f8ada7a} } }, -/**/ {{{0x00000000, 0x3fe6a000} }, -/**/ {{0xe5e2564b, 0x3fe3b198} }, -/**/ {{0x1f0752ac, 0xbc72f922} }, -/**/ {{0xe55ed910, 0x3fe555b8} }, -/**/ {{0x656f2eb2, 0xbc5615bc} }, -/**/ {{0x80646bca, 0xbfd41d2d} }, -/**/ {{0x1ff3506f, 0xbc75d1d6} }, -/**/ {{0xdc4e5727, 0x3fa945ec} }, -/**/ {{0x18968922, 0x3c213c8e} }, -/**/ {{0x3bcc9fa4, 0x3fb1e2ad} }, -/**/ {{0x0a43c591, 0x3c2b899c} }, -/**/ {{0x8f774533, 0xbfb28b68} }, -/**/ {{0x46d16acc, 0x3f9a7aaf} }, -/**/ {{0xde405cc6, 0x3f8bdb08} }, -/**/ {{0x73d9884b, 0xbf98bae1} }, -/**/ {{0x7be7742a, 0x3f8b0101} } }, -/**/ {{{0x00000000, 0x3fe6c000} }, -/**/ {{0x91c78dc5, 0x3fe3c6e4} }, -/**/ {{0x94fd0ba7, 0xbc8e1450} }, -/**/ {{0x7de0a269, 0x3fe541a0} }, -/**/ {{0x163b639c, 0x3c8b9072} }, -/**/ {{0xa1d194fc, 0xbfd41398} }, -/**/ {{0x8629402d, 0xbc7ef191} }, -/**/ {{0x6bbd69eb, 0x3fa9d390} }, -/**/ {{0xd2c4a6a5, 0x3c488aec} }, -/**/ {{0xf53fbee6, 0x3fb18657} }, -/**/ {{0x0104d1dd, 0x3c54e6aa} }, -/**/ {{0xc2245ee6, 0xbfb26368} }, -/**/ {{0xe4b91b16, 0x3f9ad97d} }, -/**/ {{0x74b192c7, 0x3f8a5328} }, -/**/ {{0x8e5d8b31, 0xbf984114} }, -/**/ {{0xceadce82, 0x3f8b1fec} } }, -/**/ {{{0x00000000, 0x3fe6e000} }, -/**/ {{0x2a188504, 0x3fe3dc1c} }, -/**/ {{0x70f4e971, 0x3c82ce63} }, -/**/ {{0xc5a197ed, 0x3fe52d91} }, -/**/ {{0x1baab820, 0xbc804b92} }, -/**/ {{0x300486f8, 0xbfd409cf} }, -/**/ {{0xae804189, 0xbc6d3bb8} }, -/**/ {{0x749adab8, 0x3faa5e54} }, -/**/ {{0xc631cfd3, 0x3c20b0d5} }, -/**/ {{0x0a922c54, 0x3fb12acc} }, -/**/ {{0x7cbc4417, 0x3c521a06} }, -/**/ {{0xbce6ae05, 0xbfb23ade} }, -/**/ {{0x485d279b, 0x3f9b32fe} }, -/**/ {{0xd9b56b96, 0x3f88d2e8} }, -/**/ {{0x227841f4, 0xbf97c6cd} }, -/**/ {{0x85cf6ba0, 0x3f8b3781} } }, -/**/ {{{0x00000000, 0x3fe70000} }, -/**/ {{0xb89e96f4, 0x3fe3f13f} }, -/**/ {{0x492644f0, 0x3c7ecf8b} }, -/**/ {{0xf0ab6f99, 0x3fe5198c} }, -/**/ {{0x5e1ffaba, 0x3c71b875} }, -/**/ {{0x3da059f4, 0xbfd3ffd2} }, -/**/ {{0x77eee53d, 0x3c5bba8e} }, -/**/ {{0x4c5d36dc, 0x3faae63f} }, -/**/ {{0x2a3994d6, 0xbc4e6e4e} }, -/**/ {{0x1b178ada, 0x3fb0d00c} }, -/**/ {{0xb3e710cc, 0x3c4b94c3} }, -/**/ {{0x61093929, 0xbfb211d2} }, -/**/ {{0x30c5dd59, 0x3f9b874b} }, -/**/ {{0xb0b899ed, 0x3f875a50} }, -/**/ {{0x9c404912, 0xbf974c2b} }, -/**/ {{0xd3249a4d, 0x3f8b4803} } }, -/**/ {{{0x00000000, 0x3fe72000} }, -/**/ {{0x47569f49, 0x3fe4064f} }, -/**/ {{0xf91bf2b2, 0xbc8aad88} }, -/**/ {{0x31f66da7, 0x3fe50592} }, -/**/ {{0x134b7507, 0xbc8837f1} }, -/**/ {{0xdae43e4d, 0xbfd3f5a2} }, -/**/ {{0xdc59e382, 0xbc7f29b0} }, -/**/ {{0x5cd91a8c, 0x3fab6b57} }, -/**/ {{0xd6ab0dfc, 0xbc225bf7} }, -/**/ {{0x9f216d7a, 0x3fb0761a} }, -/**/ {{0xe546203e, 0x3c577818} }, -/**/ {{0x67a8cf31, 0xbfb1e84b} }, -/**/ {{0x70b6dd6f, 0x3f9bd67f} }, -/**/ {{0x9ff677e5, 0x3f85e964} }, -/**/ {{0x363cf426, 0xbf96d14f} }, -/**/ {{0x4f6617de, 0x3f8b51b7} } }, -/**/ {{{0x00000000, 0x3fe74000} }, -/**/ {{0xe06fea41, 0x3fe41b4a} }, -/**/ {{0x53277652, 0x3c63d60a} }, -/**/ {{0xbb6bcc2c, 0x3fe4f1a1} }, -/**/ {{0x7c81f558, 0x3c5c8d69} }, -/**/ {{0x15a41364, 0xbfd3eb42} }, -/**/ {{0x617c316a, 0x3c728a9c} }, -/**/ {{0x230c44b8, 0x3fabeda3} }, -/**/ {{0x50d9e9da, 0x3c41fa15} }, -/**/ {{0xe8c87fc3, 0x3fb01cf9} }, -/**/ {{0xa175df34, 0x3c410990} }, -/**/ {{0x619b963c, 0xbfb1be51} }, -/**/ {{0xe7da421c, 0x3f9c20b5} }, -/**/ {{0x637b86b0, 0x3f848027} }, -/**/ {{0xfc436ff1, 0xbf965655} }, -/**/ {{0xe6cd859f, 0x3f8b54de} } }, -/**/ {{{0x00000000, 0x3fe76000} }, -/**/ {{0x8e4b26d6, 0x3fe43032} }, -/**/ {{0x1070b99f, 0xbc813159} }, -/**/ {{0xbde829f5, 0x3fe4ddbb} }, -/**/ {{0xb6d17615, 0xbc735ff2} }, -/**/ {{0xf941711a, 0xbfd3e0b0} }, -/**/ {{0xe9027227, 0x3c7d3454} }, -/**/ {{0x2deef5c2, 0x3fac6d29} }, -/**/ {{0x0ba13bb6, 0x3c476533} }, -/**/ {{0x496c1e5e, 0x3faf8958} }, -/**/ {{0xe1abdf2f, 0x3c49ebf2} }, -/**/ {{0xb762a82c, 0xbfb193eb} }, -/**/ {{0x7c2df93f, 0x3f9c6609} }, -/**/ {{0xdff7724a, 0x3f831e99} }, -/**/ {{0xcea82a5a, 0xbf95db5c} }, -/**/ {{0xc6ff27bb, 0x3f8b51bc} } }, -/**/ {{{0x00000000, 0x3fe78000} }, -/**/ {{0x5b795b56, 0x3fe44506} }, -/**/ {{0x163f79c8, 0xbc7f76d0} }, -/**/ {{0x693e0015, 0x3fe4c9e0} }, -/**/ {{0x60fff59b, 0xbc7b0fcb} }, -/**/ {{0x8ea521a8, 0xbfd3d5f0} }, -/**/ {{0xb5bcc402, 0x3c561573} }, -/**/ {{0x1d4b9b62, 0x3face9f0} }, -/**/ {{0xf2c93cfb, 0x3c481226} }, -/**/ {{0xb5db8847, 0x3faeda66} }, -/**/ {{0x3a386670, 0xbc44ec99} }, -/**/ {{0xa92559e3, 0xbfb16921} }, -/**/ {{0x13b2a17d, 0x3f9ca695} }, -/**/ {{0x355982b3, 0x3f81c4bb} }, -/**/ {{0x65bec936, 0xbf95607f} }, -/**/ {{0x4e349f67, 0x3f8b4892} } }, -/**/ {{{0x00000000, 0x3fe7a000} }, -/**/ {{0x52badc7f, 0x3fe459c6} }, -/**/ {{0x8e8e135c, 0x3c819969} }, -/**/ {{0xec381dcb, 0x3fe4b60f} }, -/**/ {{0x4724e4f2, 0xbc6b9874} }, -/**/ {{0xdc390960, 0xbfd3cb01} }, -/**/ {{0x7ba1320c, 0xbc7243b1} }, -/**/ {{0xa09cca72, 0x3fad63fe} }, -/**/ {{0xe5ab8d04, 0x3c48308c} }, -/**/ {{0xdf2eb652, 0x3fae2d22} }, -/**/ {{0x4eb29ad3, 0xbc4988a3} }, -/**/ {{0x4eb5cb96, 0xbfb13dfa} }, -/**/ {{0x8e5b2657, 0x3f9ce273} }, -/**/ {{0xd132be74, 0x3f807288} }, -/**/ {{0x55a31e9e, 0xbf94e5d8} }, -/**/ {{0xfba00cb2, 0x3f8b399f} } }, -/**/ {{{0x00000000, 0x3fe7c000} }, -/**/ {{0x7efe4716, 0x3fe46e72} }, -/**/ {{0x1b844cc9, 0xbc639b9b} }, -/**/ {{0x749c2a47, 0x3fe4a24a} }, -/**/ {{0x82d8a2e5, 0xbc8f9d05} }, -/**/ {{0xe5e27a03, 0xbfd3bfe5} }, -/**/ {{0xb30f6d58, 0xbc5047da} }, -/**/ {{0x75f185ec, 0x3faddb5b} }, -/**/ {{0x23d5084a, 0x3c43b680} }, -/**/ {{0x479061d2, 0x3fad8190} }, -/**/ {{0x602d3547, 0xbbf4565c} }, -/**/ {{0x979e619e, 0xbfb1127c} }, -/**/ {{0xc03c4720, 0x3f9d19bf} }, -/**/ {{0x01b2b45f, 0x3f7e4ffd} }, -/**/ {{0x1245b0bb, 0xbf946b81} }, -/**/ {{0x60fec8ec, 0x3f8b2525} } }, -/**/ {{{0x00000000, 0x3fe7e000} }, -/**/ {{0xeb5f7bfe, 0x3fe4830a} }, -/**/ {{0x66764a73, 0xbc5a2656} }, -/**/ {{0x2f2d2be4, 0x3fe48e90} }, -/**/ {{0x969bba3b, 0x3c810a8e} }, -/**/ {{0xacfcef4d, 0xbfd3b49d} }, -/**/ {{0xb7a61548, 0xbc6a4f98} }, -/**/ {{0x68d7d101, 0x3fae500d} }, -/**/ {{0x04860c21, 0xbc305c3e} }, -/**/ {{0x2c98ea9c, 0x3facd7b2} }, -/**/ {{0xd46adca0, 0x3c48692b} }, -/**/ {{0x4b37c6a5, 0xbfb0e6af} }, -/**/ {{0x6bfb2662, 0x3f9d4c94} }, -/**/ {{0x0692cc75, 0x3f7bca2d} }, -/**/ {{0xf3b69312, 0xbf93f191} }, -/**/ {{0x1552b8ee, 0x3f8b0b61} } }, -/**/ {{{0x00000000, 0x3fe80000} }, -/**/ {{0xa3269ee1, 0x3fe4978f} }, -/**/ {{0x87f2a458, 0x3c72419a} }, -/**/ {{0x47ae147b, 0x3fe47ae1} }, -/**/ {{0xeb851eb8, 0xbc6eb851} }, -/**/ {{0x30553261, 0xbfd3a92a} }, -/**/ {{0x94467382, 0xbc7f06f6} }, -/**/ {{0x514d88d8, 0x3faec21b} }, -/**/ {{0xf45873a6, 0x3c3cd061} }, -/**/ {{0x88dfb80c, 0x3fac2f8b} }, -/**/ {{0x53add20b, 0xbc14fcbc} }, -/**/ {{0x08c71945, 0xbfb0ba99} }, -/**/ {{0x3d79f13f, 0x3f9d7b0c} }, -/**/ {{0x357dfc67, 0x3f795393} }, -/**/ {{0x3aa97829, 0xbf937822} }, -/**/ {{0xa8b90db0, 0x3f8aec90} } }, -/**/ {{{0x00000000, 0x3fe82000} }, -/**/ {{0xb1c71762, 0x3fe4ac00} }, -/**/ {{0x2382b900, 0x3c8b20e7} }, -/**/ {{0xe8e45252, 0x3fe4673d} }, -/**/ {{0x67458f9c, 0x3c57d208} }, -/**/ {{0x6c24e1b3, 0xbfd39d8c} }, -/**/ {{0x973c6d15, 0xbc7830c5} }, -/**/ {{0x12b78147, 0x3faf318c} }, -/**/ {{0xd318184c, 0xbc4fa440} }, -/**/ {{0x158b44e7, 0x3fab891f} }, -/**/ {{0x45d7f1f3, 0x3c4d5f9f} }, -/**/ {{0x47a3e8ba, 0xbfb08e40} }, -/**/ {{0xc4c1a21a, 0x3f9da541} }, -/**/ {{0x3c0d1d71, 0x3f76ec1e} }, -/**/ {{0x152e0bfc, 0xbf92ff48} }, -/**/ {{0x9955298f, 0x3f8ac8f0} } }, -/**/ {{{0x00000000, 0x3fe84000} }, -/**/ {{0x22de94e5, 0x3fe4c05e} }, -/**/ {{0xf09f2edf, 0xbc8c0ac1} }, -/**/ {{0x3c9a6560, 0x3fe453a6} }, -/**/ {{0x828bba02, 0x3c77a95f} }, -/**/ {{0x5a0e5b1c, 0xbfd391c5} }, -/**/ {{0xcd3f76d2, 0x3c7d553d} }, -/**/ {{0x9adede86, 0x3faf9e66} }, -/**/ {{0xd6d2bac0, 0xbc225e54} }, -/**/ {{0x4bdf89d7, 0x3faae46f} }, -/**/ {{0x2b25b8d9, 0x3c39c98c} }, -/**/ {{0x5765a5c1, 0xbfb061ab} }, -/**/ {{0x7127d649, 0x3f9dcb4f} }, -/**/ {{0x13002646, 0x3f7493ba} }, -/**/ {{0xa397d1a6, 0xbf928718} }, -/**/ {{0x494648b5, 0x3f8aa0bc} } }, -/**/ {{{0x00000000, 0x3fe86000} }, -/**/ {{0x023414e8, 0x3fe4d4a8} }, -/**/ {{0x1daa88b0, 0x3c6e3a89} }, -/**/ {{0x6ba2786e, 0x3fe4401a} }, -/**/ {{0xe3b5f317, 0xbc4b8213} }, -/**/ {{0xf11905c0, 0xbfd385d5} }, -/**/ {{0xa2f42dd1, 0xbc72a1e9} }, -/**/ {{0xf07a526f, 0x3fb00458} }, -/**/ {{0xac5fd817, 0xbc14f965} }, -/**/ {{0x66ca7da2, 0x3faa417e} }, -/**/ {{0xa050b433, 0x3c4b1e1a} }, -/**/ {{0x60182e4f, 0xbfb034e0} }, -/**/ {{0x8cafa41b, 0x3f9ded4f} }, -/**/ {{0x1fa4f037, 0x3f724a50} }, -/**/ {{0xfd90e915, 0xbf920fa7} }, -/**/ {{0xf59e7acf, 0x3f8a742d} } }, -/**/ {{{0x00000000, 0x3fe88000} }, -/**/ {{0x5bb6ec04, 0x3fe4e8de} }, -/**/ {{0xbeb3796c, 0x3c84a33d} }, -/**/ {{0x9dd8fdc1, 0x3fe42c9a} }, -/**/ {{0xaf80050b, 0x3c5192da} }, -/**/ {{0x25adf97f, 0xbfd379bf} }, -/**/ {{0x20cd3651, 0xbc774019} }, -/**/ {{0x724dbb01, 0x3fb0383a} }, -/**/ {{0xeb93e538, 0x3c5c4e67} }, -/**/ {{0x646e65df, 0x3fa9a04e} }, -/**/ {{0x894a6b77, 0x3c21a7cb} }, -/**/ {{0x62771c79, 0xbfb007e5} }, -/**/ {{0x37a45544, 0x3f9e0b5c} }, -/**/ {{0x54993092, 0x3f700fc7} }, -/**/ {{0x37534c25, 0xbf919909} }, -/**/ {{0xae51732a, 0x3f8a437e} } }, -/**/ {{{0x00000000, 0x3fe8a000} }, -/**/ {{0x3b7dd17e, 0x3fe4fd01} }, -/**/ {{0x3e7c24b5, 0x3c7d513f} }, -/**/ {{0xfa274ef1, 0x3fe41926} }, -/**/ {{0x4d72ecb3, 0x3c8ad830} }, -/**/ {{0xe995018a, 0xbfd36d81} }, -/**/ {{0x6fd6094d, 0x3c7e7ec5} }, -/**/ {{0x567bb975, 0x3fb06adb} }, -/**/ {{0xf0d7364f, 0x3c5212c1} }, -/**/ {{0x07a9b624, 0x3fa900e1} }, -/**/ {{0xc16bcc85, 0xbc4e5b5b} }, -/**/ {{0x705f052b, 0xbfafb580} }, -/**/ {{0x646ce12e, 0x3f9e258f} }, -/**/ {{0xa3c63841, 0x3f6bc808} }, -/**/ {{0x67043d41, 0xbf91234e} }, -/**/ {{0x4f11b221, 0x3f8a0ee6} } }, -/**/ {{{0x00000000, 0x3fe8c000} }, -/**/ {{0xadc5ed81, 0x3fe51110} }, -/**/ {{0x6832a63e, 0x3c723dcd} }, -/**/ {{0xa6864f90, 0x3fe405bf} }, -/**/ {{0x662cd5df, 0xbc7419c5} }, -/**/ {{0x2bf1f7e4, 0xbfd3611f} }, -/**/ {{0x65483b78, 0xbc6e94dd} }, -/**/ {{0x23e21be9, 0x3fb09c3f} }, -/**/ {{0xcaca858d, 0x3c22db63} }, -/**/ {{0xd99c3f1d, 0x3fa86337} }, -/**/ {{0xdc0a6dfc, 0x3c034382} }, -/**/ {{0x284f8093, 0xbfaf5aed} }, -/**/ {{0xd396fb43, 0x3f9e3c02} }, -/**/ {{0x08b96150, 0x3f678dd3} }, -/**/ {{0xaa2dcc3a, 0xbf90ae88} }, -/**/ {{0x79128ee7, 0x3f89d69b} } }, -/**/ {{{0x00000000, 0x3fe8e000} }, -/**/ {{0xbef1e9fb, 0x3fe5250c} }, -/**/ {{0xa3228870, 0xbc5539b7} }, -/**/ {{0xc8011245, 0x3fe3f264} }, -/**/ {{0x44cc720b, 0xbc6641f1} }, -/**/ {{0xd942778a, 0xbfd35497} }, -/**/ {{0x9bd7dbd6, 0x3c750a5a} }, -/**/ {{0x6438739e, 0x3fb0cc69} }, -/**/ {{0x435f798d, 0x3bf5d933} }, -/**/ {{0x2b29722f, 0x3fa7c754} }, -/**/ {{0x5b3af27b, 0xbbe736fe} }, -/**/ {{0x059a3c24, 0xbfaf001c} }, -/**/ {{0x101882b0, 0x3f9e4ed0} }, -/**/ {{0x88dc4269, 0x3f6370ae} }, -/**/ {{0x2b5280b6, 0xbf903ac8} }, -/**/ {{0x8da5b2ad, 0x3f899ad3} } }, -/**/ {{{0x00000000, 0x3fe90000} }, -/**/ {{0x7b89061f, 0x3fe538f5} }, -/**/ {{0xabda520c, 0xbc81bb74} }, -/**/ {{0x82b78014, 0x3fe3df16} }, -/**/ {{0xa43ff610, 0xbc7074be} }, -/**/ {{0xdb5be2e4, 0xbfd347ec} }, -/**/ {{0x8a0e9303, 0x3c7848c8} }, -/**/ {{0xa3a11be4, 0x3fb0fb5d} }, -/**/ {{0x09dd0d69, 0x3c3d68f2} }, -/**/ {{0x16778170, 0x3fa72d37} }, -/**/ {{0x2200d1d4, 0xbc4ea85d} }, -/**/ {{0xd4cdbd49, 0xbfaea517} }, -/**/ {{0x6bc61b6f, 0x3f9e5e10} }, -/**/ {{0xd0517524, 0x3f5ee0af} }, -/**/ {{0x4f2ec799, 0xbf8f9038} }, -/**/ {{0xa9aaa5bb, 0x3f895bc2} } }, -/**/ {{{0x00000000, 0x3fe92000} }, -/**/ {{0xf0362c8f, 0x3fe54cca} }, -/**/ {{0x7f8f43c1, 0x3c88a324} }, -/**/ {{0xf9e1016e, 0x3fe3cbd4} }, -/**/ {{0x431b67e7, 0xbc88dea6} }, -/**/ {{0x1969bc63, 0xbfd33b1f} }, -/**/ {{0x5f3d8fd8, 0x3c6ef16e} }, -/**/ {{0x703d3bf6, 0x3fb1291f} }, -/**/ {{0xb04e0672, 0xbc566e82} }, -/**/ {{0x806b26f2, 0x3fa694e1} }, -/**/ {{0xafcee740, 0x3c302819} }, -/**/ {{0x16dcee96, 0xbfae49eb} }, -/**/ {{0xfbfdb35f, 0x3f9e69dc} }, -/**/ {{0x70c48510, 0x3f571910} }, -/**/ {{0xe90198c8, 0xbf8ead25} }, -/**/ {{0xa1c723cb, 0x3f89199b} } }, -/**/ {{{0x00000000, 0x3fe94000} }, -/**/ {{0x29c70c34, 0x3fe5608d} }, -/**/ {{0xf0de8088, 0x3c89939c} }, -/**/ {{0x4fcf28c3, 0x3fe3b8a0} }, -/**/ {{0xcb80013c, 0xbc469c2b} }, -/**/ {{0x77ec4ef9, 0xbfd32e2f} }, -/**/ {{0xc61f7341, 0x3c7f9d06} }, -/**/ {{0x59c3bcdf, 0x3fb155b2} }, -/**/ {{0x3583c01b, 0xbc2d692e} }, -/**/ {{0x1a1fe15d, 0x3fa5fe54} }, -/**/ {{0x5d9bad81, 0x3c430dc5} }, -/**/ {{0x01d944a8, 0xbfadeea0} }, -/**/ {{0x9683b244, 0x3f9e724e} }, -/**/ {{0x491379ef, 0x3f4f13d4} }, -/**/ {{0x0b7cf74b, 0xbf8dcc74} }, -/**/ {{0xff5f0625, 0x3f88d48f} } }, -/**/ {{{0x00000000, 0x3fe96000} }, -/**/ {{0x352b33ba, 0x3fe5743c} }, -/**/ {{0x34c87ea6, 0xbc8ea00d} }, -/**/ {{0xa5f05e48, 0x3fe3a578} }, -/**/ {{0x00e4639b, 0xbc8ba1ec} }, -/**/ {{0xd8b7a43f, 0xbfd3211e} }, -/**/ {{0x676e23a8, 0xbc6d4b54} }, -/**/ {{0xf11b2c2d, 0x3fb18119} }, -/**/ {{0x3a3bf5fa, 0x3c34855b} }, -/**/ {{0x625c76bf, 0x3fa5698f} }, -/**/ {{0xbedb0264, 0xbc2f758a} }, -/**/ {{0x81b60103, 0xbfad9340} }, -/**/ {{0xce91900f, 0x3f9e777d} }, -/**/ {{0x34fddb2f, 0x3f406543} }, -/**/ {{0xe6077f81, 0xbf8cee3b} }, -/**/ {{0xfe42afde, 0x3f888ccf} } }, -/**/ {{{0x00000000, 0x3fe98000} }, -/**/ {{0x1f732fbb, 0x3fe587d8} }, -/**/ {{0xd8c5a950, 0xbc75e5c9} }, -/**/ {{0x1cd28c98, 0x3fe3925e} }, -/**/ {{0x1ffec6da, 0x3c8c8443} }, -/**/ {{0x1af2c622, 0xbfd313ee} }, -/**/ {{0xbc3f7ac8, 0x3c0a0e9b} }, -/**/ {{0xc7f683c3, 0x3fb1ab59} }, -/**/ {{0x12c04500, 0x3c5eaf17} }, -/**/ {{0xa7039179, 0x3fa4d693} }, -/**/ {{0xa4ce58a2, 0xbc4c8d74} }, -/**/ {{0x391400b3, 0xbfad37d6} }, -/**/ {{0xf2148a36, 0x3f9e7982} }, -/**/ {{0xb6df63ca, 0x3f112956} }, -/**/ {{0xfbd0f7ee, 0xbf8c1294} }, -/**/ {{0x8b0b0a0e, 0x3f88428a} } }, -/**/ {{{0x00000000, 0x3fe9a000} }, -/**/ {{0xf5cfab9e, 0x3fe59b60} }, -/**/ {{0x41026bc5, 0xbc81b04c} }, -/**/ {{0xd425cdfc, 0x3fe37f50} }, -/**/ {{0x518aef64, 0x3c865633} }, -/**/ {{0x1b1749db, 0xbfd3069e} }, -/**/ {{0xa119d9bc, 0xbc311c20} }, -/**/ {{0x7074cee3, 0x3fb1d475} }, -/**/ {{0x4ff61e2c, 0xbc5102e0} }, -/**/ {{0x06804def, 0x3fa44561} }, -/**/ {{0xc3865804, 0x3c4e829f} }, -/**/ {{0x82158836, 0xbfacdc6a} }, -/**/ {{0x071b2eec, 0x3f9e7876} }, -/**/ {{0xf17c4beb, 0xbf375b85} }, -/**/ {{0x2fa03971, 0xbf8b3995} }, -/**/ {{0x421a433b, 0x3f87f5ed} } }, -/**/ {{{0x00000000, 0x3fe9c000} }, -/**/ {{0xc5909517, 0x3fe5aed6} }, -/**/ {{0x714a9436, 0x3c87312f} }, -/**/ {{0xeabf19f5, 0x3fe36c50} }, -/**/ {{0x52485cca, 0x3c70d1dc} }, -/**/ {{0xb2f12226, 0xbfd2f92f} }, -/**/ {{0x3e5d3d61, 0x3c5400ba} }, -/**/ {{0x7cc3a41b, 0x3fb1fc70} }, -/**/ {{0x8819ff5b, 0x3c4b58e7} }, -/**/ {{0x712e9269, 0x3fa3b5f7} }, -/**/ {{0x7879d8ab, 0xbc4e436a} }, -/**/ {{0x6f398221, 0xbfac8106} }, -/**/ {{0xc97073c7, 0x3f9e746e} }, -/**/ {{0xecfc2d6a, 0xbf4914de} }, -/**/ {{0xcfa74bd5, 0xbf8a6350} }, -/**/ {{0x6f38ad9e, 0x3f87a724} } }, -/**/ {{{0x00000000, 0x3fe9e000} }, -/**/ {{0x9c244261, 0x3fe5c239} }, -/**/ {{0xe9e56b35, 0xbc831bd4} }, -/**/ {{0x7e9af2dc, 0x3fe3595e} }, -/**/ {{0x9dc90e6a, 0x3c81ef2d} }, -/**/ {{0xb99eb689, 0xbfd2eba3} }, -/**/ {{0x6a2f2701, 0xbc7b12ef} }, -/**/ {{0x7ec46b9b, 0x3fb2234e} }, -/**/ {{0x8d415d66, 0x3c59f30c} }, -/**/ {{0xaabf0d26, 0x3fa32856} }, -/**/ {{0x3f33d7ea, 0xbc122571} }, -/**/ {{0xcc3da9ce, 0xbfac25b2} }, -/**/ {{0xa8630cad, 0x3f9e6d84} }, -/**/ {{0xbeba707a, 0xbf5308c5} }, -/**/ {{0xa1585fd1, 0xbf898fda} }, -/**/ {{0x0dc54356, 0x3f87565b} } }, -/**/ {{{0x00000000, 0x3fea0000} }, -/**/ {{0x87169b18, 0x3fe5d589} }, -/**/ {{0x4bc5e7ca, 0x3c60028e} }, -/**/ {{0xace01346, 0x3fe34679} }, -/**/ {{0x04d19e6b, 0x3c8e6b38} }, -/**/ {{0x03913da2, 0xbfd2ddfb} }, -/**/ {{0x9a19adbd, 0xbc763ec8} }, -/**/ {{0x07b46905, 0x3fb24913} }, -/**/ {{0xd6f0307f, 0xbc4e7be8} }, -/**/ {{0x4b96b773, 0x3fa29c7e} }, -/**/ {{0x9182d783, 0xbc24c2cd} }, -/**/ {{0x1f071f44, 0xbfabca78} }, -/**/ {{0xc4b7b7c4, 0x3f9e63ce} }, -/**/ {{0x125f35b0, 0xbf59529a} }, -/**/ {{0xed369b2b, 0xbf88bf43} }, -/**/ {{0xc97185cd, 0x3f8703ba} } }, -/**/ {{{0x00000000, 0x3fea2000} }, -/**/ {{0x941043d0, 0x3fe5e8c6} }, -/**/ {{0xbe451e70, 0xbc70bf75} }, -/**/ {{0x91e21aec, 0x3fe333a2} }, -/**/ {{0x7acfc84f, 0x3c7ae035} }, -/**/ {{0x628d5861, 0xbfd2d036} }, -/**/ {{0xe463d006, 0x3c67c5fb} }, -/**/ {{0xa7d77fb2, 0x3fb26dc1} }, -/**/ {{0xc47ba861, 0xbc5432bd} }, -/**/ {{0xc229bece, 0x3fa2126d} }, -/**/ {{0x1da8ed9e, 0xbc4be1bf} }, -/**/ {{0xa890e568, 0xbfab6f5e} }, -/**/ {{0xeec5339a, 0x3f9e5763} }, -/**/ {{0x5274aa52, 0xbf5f68a6} }, -/**/ {{0x8a9df558, 0xbf87f19c} }, -/**/ {{0xff809dc5, 0x3f86af6b} } }, -/**/ {{{0x00000000, 0x3fea4000} }, -/**/ {{0xd0d5cc4a, 0x3fe5fbf0} }, -/**/ {{0x000b7158, 0xbc5b4cfd} }, -/**/ {{0x49243ad8, 0x3fe320d9} }, -/**/ {{0x433f7be5, 0xbc8ce5e0} }, -/**/ {{0xa5abec2f, 0xbfd2c256} }, -/**/ {{0x04494dc1, 0xbc68785b} }, -/**/ {{0xee25a81c, 0x3fb2915d} }, -/**/ {{0x68b37e8b, 0x3c3e7045} }, -/**/ {{0x5451b7d2, 0x3fa18a24} }, -/**/ {{0x79d21dd5, 0xbc3b2d29} }, -/**/ {{0x65dfcf66, 0xbfab146e} }, -/**/ {{0xa4b895b9, 0x3f9e485a} }, -/**/ {{0x14770b65, 0xbf62a5d4} }, -/**/ {{0xeb7dab0f, 0xbf8726f2} }, -/**/ {{0xc081d40d, 0x3f865995} } }, -/**/ {{{0x00000000, 0x3fea6000} }, -/**/ {{0x4b46e05f, 0x3fe60f08} }, -/**/ {{0x99945193, 0xbc8dbb86} }, -/**/ {{0xed5be099, 0x3fe30e1d} }, -/**/ {{0x373fae45, 0x3c6c6e78} }, -/**/ {{0x995b3a02, 0xbfd2b45c} }, -/**/ {{0xe7cea2ad, 0x3c7cb97b} }, -/**/ {{0x67fb0cde, 0x3fb2b3eb} }, -/**/ {{0x4920d50b, 0xbc402927} }, -/**/ {{0x209f00e4, 0x3fa103a1} }, -/**/ {{0xecac275a, 0xbc36fb57} }, -/**/ {{0x10fb6629, 0xbfaab9af} }, -/**/ {{0x1100b94a, 0x3f9e36c9} }, -/**/ {{0x58620e6c, 0xbf657e30} }, -/**/ {{0x2801158e, 0xbf865f54} }, -/**/ {{0xd27eaf07, 0x3f86025d} } }, -/**/ {{{0x00000000, 0x3fea8000} }, -/**/ {{0x115d7b8e, 0x3fe6220d} }, -/**/ {{0x350ee8c1, 0xbc62b785} }, -/**/ {{0x98736048, 0x3fe2fb70} }, -/**/ {{0x4df7c4fa, 0x3c87a751} }, -/**/ {{0x07603054, 0xbfd2a649} }, -/**/ {{0xf564247c, 0x3c7c41eb} }, -/**/ {{0xa0cac592, 0x3fb2d56d} }, -/**/ {{0x4e757ddf, 0x3c333138} }, -/**/ {{0x1fa53ce5, 0x3fa07ee3} }, -/**/ {{0x28113a76, 0xbc41bd0c} }, -/**/ {{0x21eb5271, 0xbfaa5f28} }, -/**/ {{0x08df7f4f, 0x3f9e22c5} }, -/**/ {{0x107b528f, 0xbf683dca} }, -/**/ {{0x0a22f693, 0xbf859acc} }, -/**/ {{0xb39536ba, 0x3f85a9e8} } }, -/**/ {{{0x00000000, 0x3feaa000} }, -/**/ {{0x312d1f3b, 0x3fe634ff} }, -/**/ {{0x15f2b598, 0x3c89d2f3} }, -/**/ {{0x638c9d15, 0x3fe2e8d1} }, -/**/ {{0xfe1a437d, 0x3c831ae5} }, -/**/ {{0xb6d7f622, 0xbfd2981c} }, -/**/ {{0x86e9fe4d, 0xbc53da87} }, -/**/ {{0x21d425b2, 0x3fb2f5e8} }, -/**/ {{0xae2616cb, 0xbc186482} }, -/**/ {{0x4a85a0e4, 0x3f9ff7d2} }, -/**/ {{0xe2d9205b, 0xbc294288} }, -/**/ {{0xcfb8dc09, 0xbfaa04e0} }, -/**/ {{0x0b1f9c73, 0x3f9e0c64} }, -/**/ {{0xbd3845d8, 0xbf6ae504} }, -/**/ {{0x19278cae, 0xbf84d965} }, -/**/ {{0x9cf7183b, 0x3f855059} } }, -/**/ {{{0x00000000, 0x3feac000} }, -/**/ {{0xb8e20b90, 0x3fe647de} }, -/**/ {{0x023a51cf, 0xbc5eca04} }, -/**/ {{0x6703b033, 0x3fe2d640} }, -/**/ {{0x38039b02, 0x3c870ae6} }, -/**/ {{0x6c39acf5, 0xbfd289d8} }, -/**/ {{0x0238a7ee, 0xbc71f038} }, -/**/ {{0x71da955f, 0x3fb3155e} }, -/**/ {{0xd41f84df, 0xbc5faa02} }, -/**/ {{0xc3c69caa, 0x3f9ef563} }, -/**/ {{0x75403dbd, 0x3c331d29} }, -/**/ {{0x1174124f, 0xbfa9aae0} }, -/**/ {{0x3eedb30b, 0x3f9df3bb} }, -/**/ {{0x1c632765, 0xbf6d7445} }, -/**/ {{0xa4fa03e7, 0xbf841b28} }, -/**/ {{0x8646990d, 0x3f84f5d2} } }, -/**/ {{{0x00000000, 0x3feae000} }, -/**/ {{0xb6c07b03, 0x3fe65aab} }, -/**/ {{0x3af32729, 0xbc67939b} }, -/**/ {{0xba718de8, 0x3fe2c3bd} }, -/**/ {{0xc4990a2b, 0xbc82d2fc} }, -/**/ {{0xe9586818, 0xbfd27b7c} }, -/**/ {{0x880839ca, 0x3c780d5e} }, -/**/ {{0x14dfe9e3, 0x3fb333d4} }, -/**/ {{0xbce74cae, 0x3c536469} }, -/**/ {{0xc77983b8, 0x3f9df677} }, -/**/ {{0xb42f53aa, 0x3c373272} }, -/**/ {{0x9f3c360e, 0xbfa9512c} }, -/**/ {{0x72d37b24, 0x3f9dd8df} }, -/**/ {{0x02e417f5, 0xbf6febf1} }, -/**/ {{0xd16a1579, 0xbf83601e} }, -/**/ {{0x294a83e4, 0x3f849a74} } }, -/**/ {{{0x00000000, 0x3feb0000} }, -/**/ {{0x3923e087, 0x3fe66d66} }, -/**/ {{0xebe8bbba, 0xbc76ea6f} }, -/**/ {{0x74aea886, 0x3fe2b149} }, -/**/ {{0xa9d6d16a, 0x3c868ffd} }, -/**/ {{0xed65571e, 0xbfd26d0a} }, -/**/ {{0x476fb5f2, 0x3c6cf972} }, -/**/ {{0x8be1339f, 0x3fb3514c} }, -/**/ {{0x3f722216, 0x3c5c8c0f} }, -/**/ {{0x300f8f9b, 0x3f9cfb0b} }, -/**/ {{0x38d1c932, 0xbc0edd81} }, -/**/ {{0xf34b004f, 0xbfa8f7cc} }, -/**/ {{0x1bd3bde0, 0x3f9dbbe5} }, -/**/ {{0x9bf7dceb, 0xbf712637} }, -/**/ {{0xa146e5b2, 0xbf82a84e} }, -/**/ {{0x05f2718e, 0x3f843e5e} } }, -/**/ {{{0x00000000, 0x3feb2000} }, -/**/ {{0x4e7e2858, 0x3fe6800e} }, -/**/ {{0x1b3e90f0, 0xbc58ea6a} }, -/**/ {{0xabd5912c, 0x3fe29ee3} }, -/**/ {{0xb17c28e3, 0xbc61b3cd} }, -/**/ {{0x34f221eb, 0xbfd25e83} }, -/**/ {{0xfa300585, 0xbc74c483} }, -/**/ {{0x5495f6e3, 0x3fb36dcb} }, -/**/ {{0x311973fe, 0x3c59b55b} }, -/**/ {{0x9864d139, 0x3f9c031a} }, -/**/ {{0xbd00e171, 0x3c28fdf3} }, -/**/ {{0x4b026585, 0xbfa89ec7} }, -/**/ {{0x54a5ed3d, 0x3f9d9ce0} }, -/**/ {{0xa8cb6dfc, 0xbf724b13} }, -/**/ {{0x015469a9, 0xbf81f3be} }, -/**/ {{0x66a50a89, 0x3f83e1ae} } }, -/**/ {{{0x00000000, 0x3feb4000} }, -/**/ {{0x0556fb6a, 0x3fe692a4} }, -/**/ {{0x5a8ea2cc, 0x3c8d94b9} }, -/**/ {{0x75459603, 0x3fe28c8c} }, -/**/ {{0x2945fc08, 0x3c8b1c3b} }, -/**/ {{0x79f37468, 0xbfd24fe6} }, -/**/ {{0x0ec1ef94, 0xbc4e3751} }, -/**/ {{0xe931c53b, 0x3fb38953} }, -/**/ {{0x16d80688, 0xbc3b108d} }, -/**/ {{0x5e1b50b5, 0x3f9b0ea2} }, -/**/ {{0x63fd1067, 0x3c0074c0} }, -/**/ {{0xa7fc7800, 0xbfa84621} }, -/**/ {{0xdd10256e, 0x3f9d7be4} }, -/**/ {{0xc9592c5e, 0xbf7364c0} }, -/**/ {{0xd318d707, 0xbf814271} }, -/**/ {{0x64d217b8, 0x3f838482} } }, -/**/ {{{0x00000000, 0x3feb6000} }, -/**/ {{0x6c4b0576, 0x3fe6a527} }, -/**/ {{0x9c46a69e, 0xbc8f6b65} }, -/**/ {{0xe5a55de9, 0x3fe27a43} }, -/**/ {{0xedc25d49, 0x3c66846e} }, -/**/ {{0x73c3b821, 0xbfd24135} }, -/**/ {{0x56ab5808, 0xbc79202a} }, -/**/ {{0xc0282c84, 0x3fb3a3e9} }, -/**/ {{0x03d25dab, 0x3c4057ca} }, -/**/ {{0xa3eb854d, 0x3f9a1d9e} }, -/**/ {{0xf03e2fb1, 0xbc3775ed} }, -/**/ {{0xd11d1043, 0xbfa7ede1} }, -/**/ {{0x195e6961, 0x3f9d5906} }, -/**/ {{0x65130256, 0xbf747373} }, -/**/ {{0xf77fd664, 0xbf80946d} }, -/**/ {{0xedc272c2, 0x3f8326f5} } }, -/**/ {{{0x00000000, 0x3feb8000} }, -/**/ {{0x920b3d99, 0x3fe6b798} }, -/**/ {{0x6188c50e, 0xbc8a8038} }, -/**/ {{0x10e5813e, 0x3fe2680a} }, -/**/ {{0x2242a6bc, 0xbc8f5497} }, -/**/ {{0xd725fa1c, 0xbfd23270} }, -/**/ {{0x5c781b14, 0x3c757282} }, -/**/ {{0x4bf2f124, 0x3fb3bd90} }, -/**/ {{0x6a14ed74, 0x3c31ae9c} }, -/**/ {{0x53ea1533, 0x3f99300b} }, -/**/ {{0x68f98d7e, 0x3c2a8d88} }, -/**/ {{0x53a4e537, 0xbfa7960d} }, -/**/ {{0x11f5f086, 0x3f9d3457} }, -/**/ {{0x19baa1da, 0xbf757760} }, -/**/ {{0xb2a2ca7e, 0xbf7fd36a} }, -/**/ {{0xc7a02081, 0x3f82c923} } }, -/**/ {{{0x00000000, 0x3feba000} }, -/**/ {{0x855c3198, 0x3fe6c9f7} }, -/**/ {{0x29bd280d, 0x3c7c09de} }, -/**/ {{0x0a431fbd, 0x3fe255df} }, -/**/ {{0xf09a745d, 0x3c8d9866} }, -/**/ {{0x5648fb1f, 0xbfd22399} }, -/**/ {{0xb4df0b3e, 0x3c412100} }, -/**/ {{0xfada8899, 0x3fb3d64a} }, -/**/ {{0x659c4346, 0x3c3dd891} }, -/**/ {{0x21c2d0a1, 0x3f9845e4} }, -/**/ {{0xf397827c, 0x3c28c6b1} }, -/**/ {{0x8445c1cc, 0xbfa73ea9} }, -/**/ {{0x730360f8, 0x3f9d0dea} }, -/**/ {{0xac51ce30, 0xbf7670bb} }, -/**/ {{0xeef50deb, 0xbf7e8493} }, -/**/ {{0x96b119a9, 0x3f826b25} } }, -/**/ {{{0x00000000, 0x3febc000} }, -/**/ {{0x551553af, 0x3fe6dc44} }, -/**/ {{0x3573828e, 0xbc5bf886} }, -/**/ {{0xe44a7335, 0x3fe243c2} }, -/**/ {{0x65d1ffd7, 0xbc667287} }, -/**/ {{0xa0ca68d3, 0xbfd214af} }, -/**/ {{0x88820895, 0xbc71296c} }, -/**/ {{0x36c0c9a2, 0x3fb3ee1d} }, -/**/ {{0x831dfabe, 0x3c540bf6} }, -/**/ {{0x8ce8de84, 0x3f975f24} }, -/**/ {{0x43eb5853, 0xbc125368} }, -/**/ {{0x803788f8, 0xbfa6e7bb} }, -/**/ {{0x8c42d5f9, 0x3f9ce5d2} }, -/**/ {{0xfaadb3ab, 0xbf775fba} }, -/**/ {{0xde4c28da, 0xbf7d3c59} }, -/**/ {{0xe2bf7ef5, 0x3f820d13} } }, -/**/ {{{0x00000000, 0x3febe000} }, -/**/ {{0x10204aef, 0x3fe6ee7f} }, -/**/ {{0xa3066272, 0x3c8692ee} }, -/**/ {{0xb0d95ee5, 0x3fe231b5} }, -/**/ {{0x1eb505b6, 0x3c7aae7e} }, -/**/ {{0x63ba3e08, 0xbfd205b4} }, -/**/ {{0xb975517d, 0x3c71c6d1} }, -/**/ {{0x64edc729, 0x3fb4050a} }, -/**/ {{0x715db809, 0x3c4960ed} }, -/**/ {{0xe2bc143b, 0x3f967bc7} }, -/**/ {{0xf0823143, 0xbc2cbf17} }, -/**/ {{0x2e4dbc47, 0xbfa69148} }, -/**/ {{0x50e0982e, 0x3f9cbc21} }, -/**/ {{0xedaa432a, 0xbf784492} }, -/**/ {{0x0b4850f3, 0xbf7bfabd} }, -/**/ {{0x1caa2f2c, 0x3f81af06} } }, -/**/ {{{0x00000000, 0x3fec0000} }, -/**/ {{0xc5784634, 0x3fe700a7} }, -/**/ {{0x25aadef6, 0xbc78c34d} }, -/**/ {{0x8121fb78, 0x3fe21fb7} }, -/**/ {{0x8121fb78, 0x3c621fb7} }, -/**/ {{0x499e4889, 0xbfd1f6a8} }, -/**/ {{0x6d4e0249, 0xbc60e934} }, -/**/ {{0xe5decb17, 0x3fb41b15} }, -/**/ {{0xab3541e6, 0x3c5194f4} }, -/**/ {{0x40a374b5, 0x3f959bc9} }, -/**/ {{0x54be0e10, 0xbc39dc6e} }, -/**/ {{0x400d3c9a, 0xbfa63b54} }, -/**/ {{0x57717232, 0x3f9c90e8} }, -/**/ {{0x6bfa704e, 0xbf791f78} }, -/**/ {{0x643da6dd, 0xbf7abfbc} }, -/**/ {{0xa418ed31, 0x3f815112} } }, -/**/ {{{0x00000000, 0x3fec2000} }, -/**/ {{0x84295198, 0x3fe712be} }, -/**/ {{0x337d8881, 0x3c85cd90} }, -/**/ {{0x65ad1f5b, 0x3fe20dc8} }, -/**/ {{0xd7b50d48, 0xbc88102a} }, -/**/ {{0xfa75d2f4, 0xbfd1e78b} }, -/**/ {{0x619624d2, 0x3c723734} }, -/**/ {{0x1517663e, 0x3fb43043} }, -/**/ {{0xe5e1ddf1, 0xbc4af8a4} }, -/**/ {{0x961cd605, 0x3f94bf23} }, -/**/ {{0x5ca14507, 0xbc26e86e} }, -/**/ {{0x32c1ffd7, 0xbfa5e5e4} }, -/**/ {{0xda0191cd, 0x3f9c6438} }, -/**/ {{0x4d921d2b, 0xbf79f0a0} }, -/**/ {{0x4e35d54e, 0xbf798b55} }, -/**/ {{0xcd4f7bfd, 0x3f80f34e} } }, -/**/ {{{0x00000000, 0x3fec4000} }, -/**/ {{0x5b4fae7b, 0x3fe724c3} }, -/**/ {{0x2db3499b, 0x3c5948b3} }, -/**/ {{0x6e5ce35d, 0x3fe1fbe8} }, -/**/ {{0x561e27a3, 0x3c8101d1} }, -/**/ {{0x1bbd70f4, 0xbfd1d860} }, -/**/ {{0xfa32c4d1, 0xbc7b4c97} }, -/**/ {{0x48f48a77, 0x3fb44495} }, -/**/ {{0xb47fdf89, 0xbc2ccfed} }, -/**/ {{0xa6c1af2c, 0x3f93e5d1} }, -/**/ {{0xc3b5a19b, 0xbc14af58} }, -/**/ {{0x5094795f, 0xbfa590fc} }, -/**/ {{0xb638ebc2, 0x3f9c3623} }, -/**/ {{0x4fa66d0e, 0xbf7ab83f} }, -/**/ {{0xb787e297, 0xbf785d83} }, -/**/ {{0xe71b4cea, 0x3f8095ce} } }, -/**/ {{{0x00000000, 0x3fec6000} }, -/**/ {{0x5a172dff, 0x3fe736b6} }, -/**/ {{0x06a892d1, 0x3c7775fd} }, -/**/ {{0xaa6f2377, 0x3fe1ea17} }, -/**/ {{0xcb44ec07, 0xbc8395a8} }, -/**/ {{0x5072ec76, 0xbfd1c925} }, -/**/ {{0xf650d5de, 0xbc6e11b3} }, -/**/ {{0xd281a42b, 0x3fb4580f} }, -/**/ {{0xf63226cb, 0xbc55bbce} }, -/**/ {{0x0c411254, 0x3f930fce} }, -/**/ {{0xc9852726, 0x3c3a4412} }, -/**/ {{0xb19e766e, 0xbfa53ca0} }, -/**/ {{0x6d941dd5, 0x3f9c06b9} }, -/**/ {{0x094128b2, 0xbf7b768a} }, -/**/ {{0x2a047c42, 0xbf773642} }, -/**/ {{0x40d7925f, 0x3f8038a6} } }, -/**/ {{{0x00000000, 0x3fec8000} }, -/**/ {{0x8fba8e0f, 0x3fe74897} }, -/**/ {{0x165884a1, 0x3c47b2a6} }, -/**/ {{0x287ffb8a, 0x3fe1d856} }, -/**/ {{0xfee27a9d, 0xbc658a1f} }, -/**/ {{0x39195240, 0xbfd1b9dc} }, -/**/ {{0x551dc6bf, 0x3c604646} }, -/**/ {{0xfd4fa866, 0x3fb46ab5} }, -/**/ {{0xc2febe43, 0x3c5f62a7} }, -/**/ {{0x384eda2c, 0x3f923d13} }, -/**/ {{0x1dfd9f34, 0x3c3b9a7c} }, -/**/ {{0x3cff324c, 0xbfa4e8d5} }, -/**/ {{0x25b0d0ad, 0x3f9bd60a} }, -/**/ {{0xe063d1e6, 0xbf7c2bb4} }, -/**/ {{0xdcb54dd5, 0xbf761589} }, -/**/ {{0x61077b85, 0x3f7fb7ce} } }, -/**/ {{{0x00000000, 0x3feca000} }, -/**/ {{0x0b82d8d8, 0x3fe75a67} }, -/**/ {{0x4c729087, 0x3c8ee4ac} }, -/**/ {{0xf68c4011, 0x3fe1c6a3} }, -/**/ {{0x32671c29, 0xbc8e54e4} }, -/**/ {{0x73bd1c8f, 0xbfd1aa85} }, -/**/ {{0x41d7bd80, 0x3c7525ad} }, -/**/ {{0x0f4e0cc0, 0x3fb47c8b} }, -/**/ {{0xd854875c, 0x3c2efdd1} }, -/**/ {{0x7688134d, 0x3f916d9b} }, -/**/ {{0x42a6f922, 0xbc1abef6} }, -/**/ {{0xa9ee694e, 0xbfa4959d} }, -/**/ {{0xa8aca118, 0x3f9ba425} }, -/**/ {{0xffb6fa1f, 0xbf7cd7f3} }, -/**/ {{0xc52e395a, 0xbf74fb52} }, -/**/ {{0x31d14661, 0x3f7eff46} } }, -/**/ {{{0x00000000, 0x3fecc000} }, -/**/ {{0xdcc6c6c0, 0x3fe76c24} }, -/**/ {{0x51adc83d, 0x3c819525} }, -/**/ {{0x21f3f28c, 0x3fe1b501} }, -/**/ {{0x5f1d67b6, 0xbc45712f} }, -/**/ {{0x9bf87a43, 0xbfd19b21} }, -/**/ {{0xb2071e48, 0xbc64520a} }, -/**/ {{0x48a59e43, 0x3fb48d92} }, -/**/ {{0x42014b8b, 0x3c5f8e56} }, -/**/ {{0xee4caccb, 0x3f90a160} }, -/**/ {{0x7b6daa67, 0x3c2bd92b} }, -/**/ {{0x80ce3489, 0xbfa442fd} }, -/**/ {{0x65959e45, 0x3f9b711b} }, -/**/ {{0x4cc2673a, 0xbf7d7b7b} }, -/**/ {{0xa86f8a8e, 0xbf73e793} }, -/**/ {{0xdf91602d, 0x3f7e47d4} } }, -/**/ {{{0x00000000, 0x3fece000} }, -/**/ {{0x12ea22c7, 0x3fe77dd1} }, -/**/ {{0x8fc10d3d, 0x3c873260} }, -/**/ {{0xb77cb1a2, 0x3fe1a36d} }, -/**/ {{0x6e625be9, 0xbc42c20d} }, -/**/ {{0x4af7b13c, 0xbfd18bb1} }, -/**/ {{0xbc063e5a, 0xbc68446b} }, -/**/ {{0xe3952cbb, 0x3fb49dce} }, -/**/ {{0x58cf9123, 0x3c588e60} }, -/**/ {{0x491cfa44, 0x3f8fb0bb} }, -/**/ {{0x0e3f2a43, 0x3c1534fc} }, -/**/ {{0x1c3b7aca, 0xbfa3f0f8} }, -/**/ {{0x70eb708a, 0x3f9b3cfa} }, -/**/ {{0x5eaa8b7f, 0xbf7e167e} }, -/**/ {{0x2b587c04, 0xbf72da42} }, -/**/ {{0x882fa65b, 0x3f7d9199} } }, -/**/ {{{0x00000000, 0x3fed0000} }, -/**/ {{0xbd5d315e, 0x3fe78f6b} }, -/**/ {{0x89803740, 0x3c8406a0} }, -/**/ {{0xc35424ca, 0x3fe191e9} }, -/**/ {{0xf4be863f, 0xbc8fa3c1} }, -/**/ {{0x177d9a85, 0xbfd17c35} }, -/**/ {{0x6a99d546, 0xbc717b81} }, -/**/ {{0x144fffae, 0x3fb4ad44} }, -/**/ {{0xdccca2a3, 0x3c3538b3} }, -/**/ {{0xfb2b5523, 0x3f8e2516} }, -/**/ {{0x60181bd9, 0x3c0f7c11} }, -/**/ {{0xaa1cc641, 0xbfa39f90} }, -/**/ {{0x85304289, 0x3f9b07d1} }, -/**/ {{0x756fd193, 0xbf7ea930} }, -/**/ {{0xe2a9a0de, 0xbf71d352} }, -/**/ {{0x886fc912, 0x3f7cdcb1} } }, -/**/ {{{0x00000000, 0x3fed2000} }, -/**/ {{0xeb9c19a2, 0x3fe7a0f4} }, -/**/ {{0xcd815f57, 0x3c613c67} }, -/**/ {{0x5112636f, 0x3fe18075} }, -/**/ {{0x7a335b20, 0x3c80a172} }, -/**/ {{0x95e83705, 0xbfd16cad} }, -/**/ {{0x7b21d5e1, 0x3c62a94b} }, -/**/ {{0x08de0a7c, 0x3fb4bbf5} }, -/**/ {{0x057457a0, 0x3c3570d0} }, -/**/ {{0x7d750fdf, 0x3f8c9fc8} }, -/**/ {{0xfe4cff3c, 0x3c2900a7} }, -/**/ {{0x2caf50ea, 0xbfa34eca} }, -/**/ {{0x03888c77, 0x3f9ad1af} }, -/**/ {{0x71ac3a86, 0xbf7f33c4} }, -/**/ {{0x6296fd58, 0xbf70d2b9} }, -/**/ {{0x886d16b8, 0x3f7c2938} } }, -/**/ {{{0x00000000, 0x3fed4000} }, -/**/ {{0xad2e50fe, 0x3fe7b26c} }, -/**/ {{0xf30411fb, 0xbc8ce80d} }, -/**/ {{0x6bbc577a, 0x3fe16f10} }, -/**/ {{0xbd8abf47, 0xbc7d0db6} }, -/**/ {{0x58355b5f, 0xbfd15d1b} }, -/**/ {{0xbcc70038, 0xbc5b5457} }, -/**/ {{0xe8fdd51d, 0x3fb4c9e4} }, -/**/ {{0x28ac9383, 0x3c462959} }, -/**/ {{0x2029f143, 0x3f8b20c3} }, -/**/ {{0x2b420400, 0xbc2f8a44} }, -/**/ {{0x7b921c49, 0xbfa2fea7} }, -/**/ {{0xf468e79e, 0x3f9a9aa0} }, -/**/ {{0xcccbcb4f, 0xbf7fb66c} }, -/**/ {{0x9bd39a5f, 0xbf6fb0d0} }, -/**/ {{0x8813998f, 0x3f7b7748} } }, -/**/ {{{0x00000000, 0x3fed6000} }, -/**/ {{0x11a6092b, 0x3fe7c3d3} }, -/**/ {{0x2d303288, 0x3c8bb3cb} }, -/**/ {{0x1dc61b17, 0x3fe15dbb} }, -/**/ {{0xbb77dc56, 0xbc8f0487} }, -/**/ {{0xee0771ca, 0xbfd14d7e} }, -/**/ {{0xdc2fcbd0, 0x3c72d38b} }, -/**/ {{0xd6080f0e, 0x3fb4d716} }, -/**/ {{0xa9fbc2c3, 0xbc5cb5bc} }, -/**/ {{0xfc42e02f, 0x3f89a7f9} }, -/**/ {{0x857be8a4, 0xbc201eec} }, -/**/ {{0x44ceebb3, 0xbfa2af2b} }, -/**/ {{0x08511639, 0x3f9a62b5} }, -/**/ {{0xc8de23de, 0xbf8018ad} }, -/**/ {{0xc964501a, 0xbf6dc8a2} }, -/**/ {{0xeb913697, 0x3f7ac6f9} } }, -/**/ {{{0x00000000, 0x3fed8000} }, -/**/ {{0x289fa093, 0x3fe7d528} }, -/**/ {{0x1e2f3aa9, 0x3c856082} }, -/**/ {{0x711551bb, 0x3fe14c75} }, -/**/ {{0x71970f2c, 0xbc80c88e} }, -/**/ {{0xe4aa5095, 0xbfd13dd8} }, -/**/ {{0xb4b7ae12, 0x3c66dd31} }, -/**/ {{0xead4c211, 0x3fb4e38d} }, -/**/ {{0xe392a31e, 0x3c513fb0} }, -/**/ {{0xf6b74576, 0x3f88355f} }, -/**/ {{0xf3561ab7, 0x3ba8cb44} }, -/**/ {{0x0de0faaa, 0xbfa26058} }, -/**/ {{0x989371f0, 0x3f9a29f8} }, -/**/ {{0x2b085d9a, 0xbf805261} }, -/**/ {{0x2511c555, 0xbf6beccb} }, -/**/ {{0x87b9d333, 0x3f7a1863} } }, -/**/ {{{0x00000000, 0x3feda000} }, -/**/ {{0x01c114fe, 0x3fe7e66c} }, -/**/ {{0x8b760b8d, 0xbc8c82b8} }, -/**/ {{0x6f037c44, 0x3fe13b3f} }, -/**/ {{0x8562c8c0, 0xbc635393} }, -/**/ {{0xc7182435, 0xbfd12e29} }, -/**/ {{0x0d0fda95, 0xbc73da80} }, -/**/ {{0x3ba21a8b, 0x3fb4ef4d} }, -/**/ {{0x9aa41146, 0xbc17c450} }, -/**/ {{0xc39dff46, 0x3f86c8e7} }, -/**/ {{0x800ba9ae, 0x3c1ddd70} }, -/**/ {{0x34b94b56, 0xbfa21230} }, -/**/ {{0xa827f95a, 0x3f99f078} }, -/**/ {{0x19caa997, 0xbf808869} }, -/**/ {{0xf8c46d26, 0xbf6a1d29} }, -/**/ {{0xae59da17, 0x3f796b9a} } }, -/**/ {{{0x00000000, 0x3fedc000} }, -/**/ {{0xacb97898, 0x3fe7f79e} }, -/**/ {{0x80ead221, 0x3c8fd5ca} }, -/**/ {{0x20604825, 0x3fe12a19} }, -/**/ {{0xa18970f8, 0xbc5cc7d6} }, -/**/ {{0x1dfe6ba4, 0xbfd11e72} }, -/**/ {{0x9d653d1c, 0x3c706717} }, -/**/ {{0xd5fcbb3b, 0x3fb4fa57} }, -/**/ {{0x5f50bc06, 0x3c1922c8} }, -/**/ {{0xe93a179f, 0x3f856283} }, -/**/ {{0x5ea7135a, 0xbc01c2ec} }, -/**/ {{0xf0c06b4f, 0xbfa1c4b5} }, -/**/ {{0xe48a3b04, 0x3f99b641} }, -/**/ {{0xe1280a21, 0xbf80badd} }, -/**/ {{0x1be3c5dd, 0xbf68599e} }, -/**/ {{0x3a72c8e6, 0x3f78c0b3} } }, -/**/ {{{0x00000000, 0x3fede000} }, -/**/ {{0x3940694b, 0x3fe808c0} }, -/**/ {{0x7715f6a5, 0xbc800f32} }, -/**/ {{0x8d73d98e, 0x3fe11902} }, -/**/ {{0x30f8e290, 0x3c71d158} }, -/**/ {{0x6fc305eb, 0xbfd10eb2} }, -/**/ {{0x3858c4b7, 0xbc7fd2e3} }, -/**/ {{0xc0a99255, 0x3fb504b0} }, -/**/ {{0x142e134f, 0x3c55c054} }, -/**/ {{0xc2f371cf, 0x3f840226} }, -/**/ {{0xfc7d6225, 0xbbfc85b0} }, -/**/ {{0x53d58f53, 0xbfa177eb} }, -/**/ {{0xa6a1627d, 0x3f997b60} }, -/**/ {{0x89757c78, 0xbf80e9d7} }, -/**/ {{0x0d433cd6, 0xbf66a205} }, -/**/ {{0x9c5dbd9f, 0x3f7817bf} } }, -/**/ {{{0x00000000, 0x3fee0000} }, -/**/ {{0xb7158a4d, 0x3fe819d0} }, -/**/ {{0x29d3b917, 0xbc7bf762} }, -/**/ {{0xbe011080, 0x3fe107fb} }, -/**/ {{0xbe011080, 0xbc8107fb} }, -/**/ {{0x40894fcd, 0xbfd0feeb} }, -/**/ {{0xc155af9a, 0x3c76fbb9} }, -/**/ {{0xfb9125f7, 0x3fb50e5a} }, -/**/ {{0x2f3313b0, 0x3c357762} }, -/**/ {{0x843ba55a, 0x3f82a7c2} }, -/**/ {{0x3fc197b7, 0x3c1f4994} }, -/**/ {{0x4b4ae875, 0xbfa12bd2} }, -/**/ {{0xf3b1b1ee, 0x3f993fe0} }, -/**/ {{0xd4c2083b, 0xbf81156d} }, -/**/ {{0x0c35aa9c, 0xbf64f63b} }, -/**/ {{0xe5d0462f, 0x3f7770d0} } }, -/**/ {{{0x00000000, 0x3fee2000} }, -/**/ {{0x36000005, 0x3fe82ad0} }, -/**/ {{0xce924d24, 0x3c74592f} }, -/**/ {{0xb947c8b7, 0x3fe0f704} }, -/**/ {{0x48a651b3, 0x3c436cd7} }, -/**/ {{0x1237505b, 0xbfd0ef1d} }, -/**/ {{0x1b86b9d1, 0x3c69239b} }, -/**/ {{0x7fac4e21, 0x3fb51759} }, -/**/ {{0xbfce0e36, 0xbc42a8cc} }, -/**/ {{0x3b5f3edd, 0x3f815349} }, -/**/ {{0x88c702d9, 0xbc25e1f1} }, -/**/ {{0xa0df17a9, 0xbfa0e06c} }, -/**/ {{0x7e56b8b1, 0x3f9903ce} }, -/**/ {{0x3c701e30, 0xbf813db8} }, -/**/ {{0x30c99e47, 0xbf63561b} }, -/**/ {{0xd5bffce0, 0x3f76cbf6} } }, -/**/ {{{0x00000000, 0x3fee4000} }, -/**/ {{0xc5cdee22, 0x3fe83bbe} }, -/**/ {{0x04ffc6c3, 0x3c631071} }, -/**/ {{0x86071468, 0x3fe0e61d} }, -/**/ {{0x59be09c9, 0xbc70ccc4} }, -/**/ {{0x647af38b, 0xbfd0df48} }, -/**/ {{0x427c295b, 0x3c7dd47c} }, -/**/ {{0x3ef25277, 0x3fb51faf} }, -/**/ {{0xa81026a7, 0x3bdf056a} }, -/**/ {{0xd443a18b, 0x3f8004ac} }, -/**/ {{0x8178f329, 0x3c027610} }, -/**/ {{0xfbb3a658, 0xbfa095bb} }, -/**/ {{0xa7859d46, 0x3f98c734} }, -/**/ {{0xeefe9a81, 0xbf8162cd} }, -/**/ {{0x8330eac0, 0xbf61c17f} }, -/**/ {{0xe421c20a, 0x3f76293f} } }, -/**/ {{{0x00000000, 0x3fee6000} }, -/**/ {{0x7653f7eb, 0x3fe84c9c} }, -/**/ {{0xfe0a3e8f, 0xbc383611} }, -/**/ {{0x2a7f71b5, 0x3fe0d546} }, -/**/ {{0x596848c6, 0x3c757061} }, -/**/ {{0xb4cf51a6, 0xbfd0cf6d} }, -/**/ {{0x5b18bb8c, 0x3c4c99ab} }, -/**/ {{0x24486227, 0x3fb5275f} }, -/**/ {{0xbb1f4f56, 0x3c5b4a59} }, -/**/ {{0x36238bb2, 0x3f7d77be} }, -/**/ {{0xcaec6ba2, 0x3c1ddbd1} }, -/**/ {{0xe1406cd0, 0xbfa04bc1} }, -/**/ {{0x7f96d6ca, 0x3f988a1e} }, -/**/ {{0xcdffc380, 0xbf8184c5} }, -/**/ {{0x12561f8b, 0xbf603841} }, -/**/ {{0x4d81a668, 0x3f7588b9} } }, -/**/ {{{0x00000000, 0x3fee8000} }, -/**/ {{0x576cc2c5, 0x3fe85d69} }, -/**/ {{0x7fc8b8c3, 0x3c66b66e} }, -/**/ {{0xac74fadc, 0x3fe0c47e} }, -/**/ {{0x77bb1887, 0xbc8035f8} }, -/**/ {{0x7e8202a9, 0xbfd0bf8d} }, -/**/ {{0x1f4d2357, 0x3c798048} }, -/**/ {{0x13725c73, 0x3fb52e6c} }, -/**/ {{0xf5b19ded, 0xbc34c3af} }, -/**/ {{0x7d9c2711, 0x3f7af1a3} }, -/**/ {{0x1af1098d, 0x3bea7ec7} }, -/**/ {{0xb643d11f, 0xbfa0027f} }, -/**/ {{0xc756b7d7, 0x3f984c96} }, -/**/ {{0x6c3ca3ae, 0xbf81a3b6} }, -/**/ {{0x13459246, 0xbf5d7470} }, -/**/ {{0x1e70d9a4, 0x3f74ea6f} } }, -/**/ {{{0x00000000, 0x3feea000} }, -/**/ {{0x78f87ae5, 0x3fe86e25} }, -/**/ {{0x375cfe34, 0x3c8022b1} }, -/**/ {{0x11319104, 0x3fe0b3c7} }, -/**/ {{0x25152519, 0x3c8ac394} }, -/**/ {{0x3ab87c8a, 0xbfd0afa8} }, -/**/ {{0x27b31384, 0x3c724f26} }, -/**/ {{0xe904e078, 0x3fb534d8} }, -/**/ {{0xf8948323, 0xbc55bfde} }, -/**/ {{0xa7bb2dfb, 0x3f7876ec} }, -/**/ {{0x8a87be50, 0xbc197116} }, -/**/ {{0x7f5f95b4, 0xbf9f73ed} }, -/**/ {{0xf11c3266, 0x3f980ea7} }, -/**/ {{0x0c032389, 0xbf81bfb6} }, -/**/ {{0x8bf305a1, 0xbf5a8e77} }, -/**/ {{0x3ec72e6d, 0x3f744e6c} } }, -/**/ {{{0x00000000, 0x3feec000} }, -/**/ {{0xeadc5a2a, 0x3fe87ed0} }, -/**/ {{0xd957f4bc, 0x3c70af5a} }, -/**/ {{0x5d8701b3, 0x3fe0a31f} }, -/**/ {{0x263ce937, 0xbc869b25} }, -/**/ {{0x60757b83, 0xbfd09fbe} }, -/**/ {{0xa96db9ef, 0x3c767aff} }, -/**/ {{0x7a589afb, 0x3fb53aa8} }, -/**/ {{0x0844ff86, 0xbc4b7e8e} }, -/**/ {{0xacf1a65c, 0x3f76077c} }, -/**/ {{0xb13331a9, 0xbc19a3b2} }, -/**/ {{0x472733eb, 0xbf9ee450} }, -/**/ {{0x21e541d7, 0x3f97d05c} }, -/**/ {{0x9d9d4dfc, 0xbf81d8da} }, -/**/ {{0xd3ce1b4a, 0xbf57be45} }, -/**/ {{0x7cb60047, 0x3f73b4ba} } }, -/**/ {{{0x00000000, 0x3feee000} }, -/**/ {{0xbd023119, 0x3fe88f6b} }, -/**/ {{0x25aba660, 0xbc532d1d} }, -/**/ {{0x95d126c6, 0x3fe09287} }, -/**/ {{0xeccc37a6, 0x3c85aad3} }, -/**/ {{0x649e7367, 0xbfd08fd0} }, -/**/ {{0xed21a127, 0x3c71e96c} }, -/**/ {{0x957ec910, 0x3fb53fdd} }, -/**/ {{0xaf97a601, 0xbc339c23} }, -/**/ {{0x5a18e5a2, 0x3f73a336} }, -/**/ {{0x477571de, 0xbc1f7225} }, -/**/ {{0xd4044135, 0xbf9e5629} }, -/**/ {{0x32786dc4, 0x3f9791bd} }, -/**/ {{0xbdf030c4, 0xbf81ef39} }, -/**/ {{0xe21b8bcb, 0xbf550386} }, -/**/ {{0x97aa7fb2, 0x3f731d62} } }, -/**/ {{{0x00000000, 0x3fef0000} }, -/**/ {{0xff57f1f8, 0x3fe89ff5} }, -/**/ {{0x5e177a1b, 0xbc855b9a} }, -/**/ {{0xbdf80108, 0x3fe081ff} }, -/**/ {{0x80108200, 0x3c6ffbdf} }, -/**/ {{0xba010928, 0xbfd07fde} }, -/**/ {{0x7bae0295, 0x3c38d37f} }, -/**/ {{0x0136e69f, 0x3fb5447b} }, -/**/ {{0x0dda278d, 0x3c50316a} }, -/**/ {{0x55103947, 0x3f7149fc} }, -/**/ {{0x849e505f, 0x3c176e96} }, -/**/ {{0xfbe9a2ee, 0xbf9dc97b} }, -/**/ {{0xb08adda9, 0x3f9752d4} }, -/**/ {{0xb540d106, 0xbf8202e8} }, -/**/ {{0x859de3e9, 0xbf525de5} }, -/**/ {{0x4afd9f21, 0x3f72886c} } }, -/**/ {{{0x00000000, 0x3fef2000} }, -/**/ {{0xc1cf3dff, 0x3fe8b06f} }, -/**/ {{0x2656db6d, 0xbc80fb31} }, -/**/ {{0xd971cd38, 0x3fe07187} }, -/**/ {{0x202c20ac, 0x3c89baa4} }, -/**/ {{0xd15893ab, 0xbfd06fe9} }, -/**/ {{0xdc0cb586, 0xbc7a864b} }, -/**/ {{0x7ce57fed, 0x3fb54883} }, -/**/ {{0x294f4b18, 0xbc49498e} }, -/**/ {{0x426ebecc, 0x3f6df762} }, -/**/ {{0xf28644c0, 0xbc022f08} }, -/**/ {{0x5c564b44, 0xbf9d3e48} }, -/**/ {{0xdfea7acf, 0x3f9713ab} }, -/**/ {{0x761db35c, 0xbf8213fc} }, -/**/ {{0x10d60f49, 0xbf4f9a17} }, -/**/ {{0x58700e9b, 0x3f71f5de} } }, -/**/ {{{0x00000000, 0x3fef4000} }, -/**/ {{0x145cf49d, 0x3fe8c0d9} }, -/**/ {{0x76dc4333, 0x3c8bea40} }, -/**/ {{0xeb45139a, 0x3fe0611f} }, -/**/ {{0x65aadb1f, 0x3c7e4998} }, -/**/ {{0x1953a316, 0xbfd05ff2} }, -/**/ {{0xa1b67b0f, 0x3c759922} }, -/**/ {{0xc08c1d66, 0x3fb54bf9} }, -/**/ {{0xd220330c, 0x3c5b9353} }, -/**/ {{0x478cb604, 0x3f69706e} }, -/**/ {{0xa22fd45a, 0xbbfdb6d3} }, -/**/ {{0x5c0d1d38, 0xbf9cb490} }, -/**/ {{0xbbaba2f2, 0x3f96d44b} }, -/**/ {{0x9c6b7de1, 0xbf822289} }, -/**/ {{0xa49803b6, 0xbf4aa143} }, -/**/ {{0x9270e49e, 0x3f7165be} } }, -/**/ {{{0x00000000, 0x3fef6000} }, -/**/ {{0x06f8c4cb, 0x3fe8d132} }, -/**/ {{0xbaa89a8b, 0xbc7b018c} }, -/**/ {{0xf60ab1f4, 0x3fe050c7} }, -/**/ {{0xc6cf5796, 0x3c63f8e2} }, -/**/ {{0xfe998dc0, 0xbfd04ff7} }, -/**/ {{0x7dc56419, 0x3c77873c} }, -/**/ {{0x7cc24121, 0x3fb54ee0} }, -/**/ {{0x8e5c84c5, 0x3c313117} }, -/**/ {{0x50066301, 0x3f64fee1} }, -/**/ {{0x017261a1, 0x3c043698} }, -/**/ {{0x2cc5b4f1, 0xbf9c2c55} }, -/**/ {{0xf759f369, 0x3f9694bc} }, -/**/ {{0x6c93426a, 0xbf822ea4} }, -/**/ {{0x135d6c51, 0xbf45d0a1} }, -/**/ {{0xe62dc18f, 0x3f70d811} } }, -/**/ {{{0x00000000, 0x3fef8000} }, -/**/ {{0xa99cc05e, 0x3fe8e17a} }, -/**/ {{0xab042f61, 0xbc7ec182} }, -/**/ {{0xfbefe001, 0x3fe0407f} }, -/**/ {{0xfbf80041, 0x3c401ffe} }, -/**/ {{0xebd00209, 0xbfd03ffb} }, -/**/ {{0xb9004112, 0xbc53ff3c} }, -/**/ {{0x5aaf6d91, 0x3fb5513a} }, -/**/ {{0xc0516ddb, 0x3c54a20d} }, -/**/ {{0xc6ac4038, 0x3f60a27f} }, -/**/ {{0x2a340912, 0x3bf06bee} }, -/**/ {{0xccd6032a, 0xbf9ba597} }, -/**/ {{0x002bb974, 0x3f965508} }, -/**/ {{0xd2d1068b, 0xbf823860} }, -/**/ {{0x666265bc, 0xbf41277e} }, -/**/ {{0x656b66ea, 0x3f704cdc} } }, -/**/ {{{0x00000000, 0x3fefa000} }, -/**/ {{0x0c44f167, 0x3fe8f1b3} }, -/**/ {{0xb93933fd, 0x3c6dd1ca} }, -/**/ {{0xfeb82e4e, 0x3fe03047} }, -/**/ {{0x5272e5ac, 0x3c69ee56} }, -/**/ {{0x49a09c45, 0xbfd02ffe} }, -/**/ {{0xb26267bb, 0xbc700a59} }, -/**/ {{0xfc062d2f, 0x3fb55309} }, -/**/ {{0xb11938e0, 0x3c5dba48} }, -/**/ {{0xe4f365be, 0x3f58b61b} }, -/**/ {{0xa79ad31a, 0x3bf8b585} }, -/**/ {{0x08d4ad17, 0xbf9b2059} }, -/**/ {{0xfe379940, 0x3f961534} }, -/**/ {{0x62a1270e, 0xbf823fd2} }, -/**/ {{0x3f3a0aec, 0xbf394a53} }, -/**/ {{0xa04bcae2, 0x3f6f8842} } }, -/**/ {{{0x00000000, 0x3fefc000} }, -/**/ {{0x3eeef187, 0x3fe901db} }, -/**/ {{0xe5603c8f, 0x3c868665} }, -/**/ {{0xffbf7f80, 0x3fe0201f} }, -/**/ {{0xffbf7f80, 0x3c20201f} }, -/**/ {{0x7ebe8004, 0xbfd01fff} }, -/**/ {{0xcf979001, 0xbc4213ff} }, -/**/ {{0xfb0012db, 0x3fb55451} }, -/**/ {{0xf73aa59f, 0xbc395606} }, -/**/ {{0xfc757100, 0x3f50509f} }, -/**/ {{0xfee554d0, 0x3bebc7da} }, -/**/ {{0x7d3424d0, 0xbf9a9c99} }, -/**/ {{0xd5ac0217, 0x3f95d54b} }, -/**/ {{0x564b3c49, 0xbf82450c} }, -/**/ {{0xe6d3e986, 0xbf3091df} }, -/**/ {{0x3bef5a22, 0x3f6e7bc6} } }, -/**/ {{{0x00000000, 0x3fefe000} }, -/**/ {{0x5199833b, 0x3fe911f3} }, -/**/ {{0x0edbf522, 0x3c63ae8a} }, -/**/ {{0xfffbfbfe, 0x3fe01007} }, -/**/ {{0xfffbfbfe, 0x3ba01007} }, -/**/ {{0xefebf400, 0xbfd00fff} }, -/**/ {{0xfff9f97d, 0xbc401209} }, -/**/ {{0xea5aaaf6, 0x3fb55514} }, -/**/ {{0xb5b7b240, 0xbc529baa} }, -/**/ {{0xffc7abc4, 0x3f402827} }, -/**/ {{0xbfee6ab3, 0x3b5ba3d6} }, -/**/ {{0x97d67093, 0xbf9a1a59} }, -/**/ {{0x28080aaf, 0x3f959554} }, -/**/ {{0x8e892ce2, 0xbf824821} }, -/**/ {{0xfe70a2a6, 0xbf204877} }, -/**/ {{0x0e8ddd67, 0x3f6d7447} } }, -/**/ {{{0x00000000, 0x3feff800} }, -/**/ {{0xd439826e, 0x3fe91dfa} }, -/**/ {{0x6df48d55, 0xbc786a19} }, -/**/ {{0x7ffffbff, 0x3fe00400} }, -/**/ {{0xffbff800, 0xbbeffffe} }, -/**/ {{0xffbfebfd, 0xbfd003ff} }, -/**/ {{0x9ffff9fe, 0xbb600480} }, -/**/ {{0x53aa5aab, 0x3fb55551} }, -/**/ {{0x9baaab5b, 0xbc542a4a} }, -/**/ {{0x7fffc7eb, 0x3f200a02} }, -/**/ {{0x4770e940, 0xbb7dfffe} }, -/**/ {{0x9997d8d0, 0xbf99b9a5} }, -/**/ {{0x50a80a03, 0x3f956555} }, -/**/ {{0x86456493, 0xbf824914} }, -/**/ {{0x7ffe7329, 0xbf001207} }, -/**/ {{0x1c63fe2a, 0x3f6cb1ef} } }, - }; - -#endif -#endif diff --git a/libgcc-math/dbl-64/uexp.h b/libgcc-math/dbl-64/uexp.h deleted file mode 100644 index de6f4f8cee7..00000000000 --- a/libgcc-math/dbl-64/uexp.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/******************************************************************/ -/* */ -/* MODULE_NAME:uexp.h */ -/* */ -/* common data and variables prototype and definition */ -/******************************************************************/ - -#ifndef UEXP_H -#define UEXP_H - -#include "mydefs.h" - -const static double one = 1.0, zero = 0.0, hhuge = 1.0e300, tiny = 1.0e-300, -err_0 = 1.000014, err_1 = 0.000016; -const static int4 bigint = 0x40862002, - badint = 0x40876000,smallint = 0x3C8fffff; -const static int4 hugeint = 0x7FFFFFFF, infint = 0x7ff00000; - -#ifdef BIG_ENDI -const static mynumber inf = {{0x7FF00000, 0}}; /* inf */ -const static mynumber t256 = {{0x4ff00000, 0}}; /* 2^256 */ - -const static mynumber ln_two1 = {{0x3FE62E42, 0xFEFA3800}};/*0.69314718055989033 */ -const static mynumber ln_two2 = {{0x3D2EF357, 0x93C76730}};/*5.4979230187083712e-14*/ -const static mynumber log2e = {{0x3FF71547, 0x652B82FE}};/* 1.4426950408889634 */ - -const static mynumber p2 = {{0x3FE00000, 0x000004DC}};/* 0.50000000000013811 */ -const static mynumber p3 = {{0x3FC55555, 0x55555A0F}};/* 0.16666666666670024 */ - -const static mynumber three33 = {{0x42180000, 0}}; /* 25769803776 */ -const static mynumber three51 = {{0x43380000, 0}}; /* 6755399441055744 */ - -#else -#ifdef LITTLE_ENDI - const static mynumber inf = {{0, 0x7FF00000}}; /* inf */ - const static mynumber t256 = {{0, 0x4ff00000}}; /* 2^256 */ - - const static mynumber ln_two1 = {{0xFEFA3800, 0x3FE62E42}};/*0.69314718055989033 */ - const static mynumber ln_two2 = {{0x93C76730, 0x3D2EF357}};/*5.4979230187083712e-14*/ - const static mynumber log2e = {{0x652B82FE, 0x3FF71547}};/* 1.4426950408889634 */ - - const static mynumber p2 = {{0x000004DC, 0x3FE00000}};/* 0.50000000000013811 */ - const static mynumber p3 = {{0x55555A0F, 0x3FC55555}};/* 0.16666666666670024 */ - - const static mynumber three33 = {{0, 0x42180000}}; /* 25769803776 */ - const static mynumber three51 = {{0, 0x43380000}}; /* 6755399441055744 */ - -#endif -#endif -#endif diff --git a/libgcc-math/dbl-64/uexp.tbl b/libgcc-math/dbl-64/uexp.tbl deleted file mode 100644 index f2e8e8f559c..00000000000 --- a/libgcc-math/dbl-64/uexp.tbl +++ /dev/null @@ -1,1787 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/****************************************************************/ -/* TABLES FOR THE ulog() FUNCTION */ -/****************************************************************/ - -#ifdef BIG_ENDI - -static const union { - int i[1424]; - double x[712]; -} coar = { .i = { - 0x3FE69A59, 0xC8000000, 0x3DF22D4D, 0x6079C9F7, - 0x3FE6A5A9, 0xC8000000, 0x3E19882D, 0x25AF6823, - 0x3FE6B0FF, 0x74000000, 0xBE221476, 0x31DABF59, - 0x3FE6BC5A, 0xC8000000, 0x3E2312AC, 0x99A2DC0A, - 0x3FE6C7BB, 0xD0000000, 0xBE265926, 0xCE9F9355, - 0x3FE6D322, 0x84000000, 0x3E2F2C26, 0x2D298DED, - 0x3FE6DE8E, 0xF4000000, 0xBE2EC28E, 0x1E748D2F, - 0x3FE6EA01, 0x14000000, 0x3E2D8C6D, 0xC68CB7E5, - 0x3FE6F578, 0xF4000000, 0x3DEE1A9E, 0x419FE2F0, - 0x3FE700F6, 0x90000000, 0xBDFF1AFD, 0xDEAEAE34, - 0x3FE70C79, 0xEC000000, 0xBE0730FE, 0x558B7122, - 0x3FE71803, 0x0C000000, 0xBE25CB85, 0x2D280C3B, - 0x3FE72391, 0xF0000000, 0xBE06F2CE, 0x337B7B54, - 0x3FE72F26, 0x9C000000, 0x3E289BCA, 0x45C02B72, - 0x3FE73AC1, 0x18000000, 0xBE18DEA6, 0x5039F1CA, - 0x3FE74661, 0x60000000, 0xBE09D090, 0x86CE0538, - 0x3FE75207, 0x78000000, 0x3E290E79, 0xCFCE5DDB, - 0x3FE75DB3, 0x68000000, 0x3DD61DF0, 0xB249A17C, - 0x3FE76965, 0x2C000000, 0x3E2F22F7, 0xE13445F7, - 0x3FE7751C, 0xD0000000, 0xBE2CD454, 0x874E75CE, - 0x3FE780DA, 0x4C000000, 0xBE0159CE, 0xDF43E3BC, - 0x3FE78C9D, 0xA8000000, 0x3E279291, 0x699A1332, - 0x3FE79866, 0xEC000000, 0xBE2A0BCD, 0x2DD98C6C, - 0x3FE7A436, 0x10000000, 0x3E25F375, 0x15AC979E, - 0x3FE7B00B, 0x20000000, 0x3E26CCF5, 0x2FEAFCF6, - 0x3FE7BBE6, 0x1C000000, 0x3E27D4F4, 0x53ADAD67, - 0x3FE7C7C7, 0x08000000, 0x3E10EEC7, 0x7FBD9566, - 0x3FE7D3AD, 0xE4000000, 0x3E2837F0, 0x9A831D86, - 0x3FE7DF9A, 0xB8000000, 0xBE129BE0, 0x5CB4C35B, - 0x3FE7EB8D, 0x80000000, 0x3E23990A, 0x0234F04D, - 0x3FE7F786, 0x44000000, 0x3E2EB807, 0x64D5C842, - 0x3FE80385, 0x08000000, 0x3E0FC86F, 0x02B4E9E8, - 0x3FE80F89, 0xCC000000, 0xBDD7B5B3, 0x7B4274BF, - 0x3FE81B94, 0x94000000, 0xBE16888B, 0xB899B00F, - 0x3FE827A5, 0x60000000, 0x3E288971, 0x5E94D155, - 0x3FE833BC, 0x38000000, 0x3E2AEEB2, 0x099F3E5E, - 0x3FE83FD9, 0x20000000, 0xBE23B922, 0x3FF60B7C, - 0x3FE84BFC, 0x14000000, 0xBDF7D3B1, 0x2DBD8012, - 0x3FE85825, 0x1C000000, 0xBDF24BA3, 0xA8872BEB, - 0x3FE86454, 0x38000000, 0x3E2EFE04, 0x01AA18A7, - 0x3FE87089, 0x70000000, 0x3E21986C, 0x944496A2, - 0x3FE87CC4, 0xC4000000, 0x3E096A8B, 0xB71FFAFF, - 0x3FE88906, 0x38000000, 0xBE21CE0A, 0xBC4C7AC5, - 0x3FE8954D, 0xCC000000, 0xBE076F45, 0xBAC02491, - 0x3FE8A19B, 0x84000000, 0x3E2B4FA2, 0xD922B925, - 0x3FE8ADEF, 0x68000000, 0x3DF759DB, 0x641863AF, - 0x3FE8BA49, 0x78000000, 0xBE2DB97C, 0xC6AB5E04, - 0x3FE8C6A9, 0xB4000000, 0xBE25364C, 0xE2156713, - 0x3FE8D310, 0x20000000, 0x3E1BEB7C, 0x862BEFF7, - 0x3FE8DF7C, 0xC4000000, 0xBDF4DD0C, 0x1CEA33A5, - 0x3FE8EBEF, 0xA0000000, 0xBE2537DF, 0x51797D47, - 0x3FE8F868, 0xB4000000, 0x3E0FB1C4, 0xF0107B28, - 0x3FE904E8, 0x08000000, 0x3E0AD6A1, 0xE01B68BD, - 0x3FE9116D, 0x9C000000, 0x3E292117, 0x1F78D9D9, - 0x3FE91DF9, 0x78000000, 0xBE1D75DA, 0x4F50E5CF, - 0x3FE92A8B, 0x98000000, 0x3DE5102B, 0x74959E58, - 0x3FE93724, 0x04000000, 0xBE01CA50, 0xD2216C35, - 0x3FE943C2, 0xBC000000, 0x3E225BFD, 0xB0B05884, - 0x3FE95067, 0xC8000000, 0xBE0F2183, 0x60B7C5C1, - 0x3FE95D13, 0x24000000, 0x3E2FB47A, 0xB5860441, - 0x3FE969C4, 0xDC000000, 0xBE01FFD2, 0xE2D4059E, - 0x3FE9767C, 0xEC000000, 0xBDE9ED72, 0x12BB6A8D, - 0x3FE9833B, 0x58000000, 0x3E2B3815, 0x43BFFB24, - 0x3FE99000, 0x28000000, 0x3E03FA22, 0xEE9EAD1E, - 0x3FE99CCB, 0x5C000000, 0xBE213841, 0x377138F7, - 0x3FE9A99C, 0xF4000000, 0x3E178105, 0xDB636C94, - 0x3FE9B674, 0xF8000000, 0x3E1E5E7A, 0xF5720122, - 0x3FE9C353, 0x6C000000, 0xBE238BFF, 0xA2AC5AAE, - 0x3FE9D038, 0x4C000000, 0x3E270893, 0xF93BDBD8, - 0x3FE9DD23, 0xA4000000, 0x3DF40420, 0x354B86CF, - 0x3FE9EA15, 0x74000000, 0xBE2D76D3, 0x88CB06B7, - 0x3FE9F70D, 0xBC000000, 0xBE251639, 0x9ED0EC60, - 0x3FEA040C, 0x80000000, 0x3E1F06E9, 0xE2DDE506, - 0x3FEA1111, 0xC8000000, 0x3E014549, 0x8E6DB477, - 0x3FEA1E1D, 0x94000000, 0xBDF4BC17, 0xF8716509, - 0x3FEA2B2F, 0xE8000000, 0xBE2107DB, 0xDA723A49, - 0x3FEA3848, 0xC4000000, 0x3E1A932A, 0x986AA369, - 0x3FEA4568, 0x30000000, 0x3E198092, 0x41592CDB, - 0x3FEA528E, 0x30000000, 0xBE2E260F, 0x676BCAB8, - 0x3FEA5FBA, 0xC0000000, 0x3DE2E821, 0x2D5D5610, - 0x3FEA6CED, 0xE8000000, 0x3E2F7046, 0x7DA20167, - 0x3FEA7A27, 0xB0000000, 0xBE1D2832, 0xF9FAAD30, - 0x3FEA8768, 0x14000000, 0xBE23F788, 0x43FA6C45, - 0x3FEA94AF, 0x18000000, 0x3E011E27, 0xAA082732, - 0x3FEAA1FC, 0xC4000000, 0xBE20BACB, 0xC682F0BF, - 0x3FEAAF51, 0x18000000, 0xBE2DC7DD, 0x7BD08C78, - 0x3FEABCAC, 0x14000000, 0x3E2271A2, 0xA3B10F9A, - 0x3FEACA0D, 0xC4000000, 0xBE15449C, 0x7966F94C, - 0x3FEAD776, 0x24000000, 0x3DD06137, 0x6FD8F3EE, - 0x3FEAE4E5, 0x3C000000, 0xBE267CD1, 0x8C5A144A, - 0x3FEAF25B, 0x0C000000, 0xBE29E584, 0xB59DA94B, - 0x3FEAFFD7, 0x98000000, 0xBE23DFCF, 0x7B52192F, - 0x3FEB0D5A, 0xE4000000, 0xBE1CF2FE, 0x78A76B45, - 0x3FEB1AE4, 0xF4000000, 0xBE23A561, 0x7EC80FF6, - 0x3FEB2875, 0xC8000000, 0x3E22C4C9, 0x932EED68, - 0x3FEB360D, 0x68000000, 0x3E2B085C, 0xB5833C97, - 0x3FEB43AB, 0xD8000000, 0xBE01F093, 0x93B9319A, - 0x3FEB5151, 0x18000000, 0xBE254F01, 0xFABCE670, - 0x3FEB5EFD, 0x28000000, 0x3E2F24C2, 0x627ABFB0, - 0x3FEB6CB0, 0x14000000, 0x3E1F1EEC, 0xE6AC0B48, - 0x3FEB7A69, 0xDC000000, 0xBE1A8671, 0x127F9ABC, - 0x3FEB882A, 0x80000000, 0xBDCB0C28, 0xC87C73B3, - 0x3FEB95F2, 0x08000000, 0xBE22E8DD, 0x7F2B5A97, - 0x3FEBA3C0, 0x74000000, 0xBE1B3645, 0x2D22A9D5, - 0x3FEBB195, 0xC8000000, 0x3E0ADACA, 0x428F8B88, - 0x3FEBBF72, 0x0C000000, 0xBE2E9E07, 0xCDF9F681, - 0x3FEBCD55, 0x3C000000, 0xBE08A127, 0x7FA54ACF, - 0x3FEBDB3F, 0x60000000, 0x3E0E92CE, 0x8225B385, - 0x3FEBE930, 0x7C000000, 0x3DF38C2A, 0x7BB09485, - 0x3FEBF728, 0x94000000, 0xBE2DFD64, 0xF681FA5F, - 0x3FEC0527, 0xA4000000, 0x3E2E384D, 0xDCE88BD2, - 0x3FEC132D, 0xBC000000, 0xBE20F111, 0xFE46A893, - 0x3FEC213A, 0xD4000000, 0x3E193DA1, 0xB189BFDA, - 0x3FEC2F4E, 0xF8000000, 0xBE20E3A1, 0x0E39FB00, - 0x3FEC3D6A, 0x24000000, 0x3E1DB044, 0x30F0FAC5, - 0x3FEC4B8C, 0x64000000, 0xBE2BC12C, 0x97446B17, - 0x3FEC59B5, 0xB4000000, 0xBE282696, 0x963F4150, - 0x3FEC67E6, 0x18000000, 0x3E224D26, 0x3049824B, - 0x3FEC761D, 0x98000000, 0x3E2C5BA5, 0x87F84C7D, - 0x3FEC845C, 0x38000000, 0xBDE1D14D, 0xC4852339, - 0x3FEC92A1, 0xF8000000, 0xBE1A451E, 0x5588D9E1, - 0x3FECA0EE, 0xDC000000, 0xBE1D3B96, 0x68BFF457, - 0x3FECAF42, 0xE8000000, 0xBE18B670, 0x4DADF774, - 0x3FECBD9E, 0x20000000, 0xBE1A1548, 0x7FB1FC01, - 0x3FECCC00, 0x88000000, 0xBE273F2E, 0x78FC5AF0, - 0x3FECDA6A, 0x20000000, 0x3E1D218F, 0xA6F4A841, - 0x3FECE8DA, 0xF0000000, 0x3E2E0BA9, 0x4D002CA0, - 0x3FECF752, 0xFC000000, 0x3E20F4BB, 0x065EF979, - 0x3FED05D2, 0x48000000, 0xBE2ED3D5, 0x11793B33, - 0x3FED1458, 0xD0000000, 0x3E115E3C, 0x913341B3, - 0x3FED22E6, 0xA0000000, 0x3DE97C02, 0xB3546109, - 0x3FED317B, 0xB8000000, 0x3E087540, 0x1BF898EF, - 0x3FED4018, 0x1C000000, 0x3E209430, 0x346F9641, - 0x3FED4EBB, 0xD0000000, 0x3E2B6DF4, 0x88F4B20B, - 0x3FED5D66, 0xDC000000, 0xBE2EC68F, 0x0CB26035, - 0x3FED6C19, 0x38000000, 0x3E2CA2C8, 0x1F44D9C3, - 0x3FED7AD2, 0xF4000000, 0x3E10E6F4, 0x41704EE0, - 0x3FED8994, 0x0C000000, 0x3E2F9273, 0x25F8F0E2, - 0x3FED985C, 0x88000000, 0x3E2D041A, 0x318798DE, - 0x3FEDA72C, 0x6C000000, 0xBE005680, 0x9349CF58, - 0x3FEDB603, 0xB8000000, 0xBE10F665, 0xCF0C934D, - 0x3FEDC4E2, 0x70000000, 0x3E166124, 0x19461C64, - 0x3FEDD3C8, 0x9C000000, 0xBE1B2ED6, 0x405624C8, - 0x3FEDE2B6, 0x3C000000, 0xBE273A7F, 0x62171501, - 0x3FEDF1AB, 0x54000000, 0xBE26022B, 0xE36E1450, - 0x3FEE00A7, 0xE8000000, 0xBE1C341E, 0x2E07AE15, - 0x3FEE0FAB, 0xFC000000, 0xBDFC7EAE, 0x18D0E701, - 0x3FEE1EB7, 0x94000000, 0x3E06B34F, 0xECD1FF8B, - 0x3FEE2DCA, 0xB4000000, 0x3E1394A3, 0x6813A649, - 0x3FEE3CE5, 0x60000000, 0x3E045496, 0xC1754D14, - 0x3FEE4C07, 0x9C000000, 0xBE180FFF, 0xF5C6087C, - 0x3FEE5B31, 0x68000000, 0x3E22FBCD, 0xADD9A300, - 0x3FEE6A62, 0xCC000000, 0x3E2EC7C7, 0xAF0289E5, - 0x3FEE799B, 0xCC000000, 0x3E242182, 0x3FB3EDD4, - 0x3FEE88DC, 0x6C000000, 0xBE201304, 0x04E39885, - 0x3FEE9824, 0xAC000000, 0xBE20D352, 0xE6831D31, - 0x3FEEA774, 0x90000000, 0x3E1E032D, 0x618DFCEB, - 0x3FEEB6CC, 0x20000000, 0x3E1956A3, 0xF9BB457E, - 0x3FEEC62B, 0x60000000, 0xBE2A77E0, 0x50845DB2, - 0x3FEED592, 0x4C000000, 0x3E2714F7, 0x47C43858, - 0x3FEEE500, 0xF0000000, 0x3E2EED96, 0x71813A66, - 0x3FEEF477, 0x50000000, 0xBE04CDBE, 0x4FB4AA34, - 0x3FEF03F5, 0x6C000000, 0xBE2774A2, 0x86EB4FF5, - 0x3FEF137B, 0x48000000, 0xBE29DD95, 0xAD43B2D2, - 0x3FEF2308, 0xE8000000, 0xBE1CADB0, 0xAC16E506, - 0x3FEF329E, 0x50000000, 0x3E12AC33, 0x58745C7B, - 0x3FEF423B, 0x88000000, 0xBE248118, 0x6EC2D854, - 0x3FEF51E0, 0x8C000000, 0x3E26986B, 0x304ACE08, - 0x3FEF618D, 0x68000000, 0x3E126D81, 0x3B09354E, - 0x3FEF7142, 0x1C000000, 0x3DF06AAE, 0x773C23B3, - 0x3FEF80FE, 0xAC000000, 0xBDA105B6, 0xD82EF423, - 0x3FEF90C3, 0x1C000000, 0x3DECDEED, 0x465499B8, - 0x3FEFA08F, 0x70000000, 0x3E0AEFD4, 0xE2EF03AE, - 0x3FEFB063, 0xAC000000, 0x3E1BD4C0, 0x0567B2E7, - 0x3FEFC03F, 0xD4000000, 0x3E26AA22, 0x4F97FCBF, - 0x3FEFD023, 0xF0000000, 0xBE2F9420, 0x5E4E88D1, - 0x3FEFE00F, 0xFC000000, 0xBE254004, 0x438E52E2, - 0x3FEFF004, 0x00000000, 0xBE1552AA, 0xEEE93EFC, - 0x3FF00000, 0x00000000, 0x00000000, 0x00000000, - 0x3FF00802, 0x00000000, 0x3E155800, 0x4449F507, - 0x3FF01008, 0x04000000, 0xBE354AA8, 0x882D75D6, - 0x3FF01812, 0x08000000, 0x3E303610, 0x3740DE56, - 0x3FF02020, 0x14000000, 0x3E360044, 0x5B0C3264, - 0x3FF02832, 0x28000000, 0x3E3C4C26, 0x0197EDC3, - 0x3FF03048, 0x48000000, 0x3E0B103B, 0x5046CA09, - 0x3FF03862, 0x74000000, 0xBE34659C, 0xF9A62624, - 0x3FF04080, 0xAC000000, 0xBE254438, 0xDD0A8F37, - 0x3FF048A2, 0xF4000000, 0x3DF256C2, 0x97AFB6E2, - 0x3FF050C9, 0x50000000, 0xBE3085DF, 0x923D25E1, - 0x3FF058F3, 0xC0000000, 0xBE3F0A93, 0x5EA3B091, - 0x3FF06122, 0x44000000, 0xBE237DE4, 0x5D63534C, - 0x3FF06954, 0xE0000000, 0x3E301719, 0xFF0C58B7, - 0x3FF0718B, 0x98000000, 0x3E2E8410, 0x9DF7B665, - 0x3FF079C6, 0x6C000000, 0x3E349CB9, 0x3B127222, - 0x3FF08205, 0x60000000, 0x3DF127EC, 0x98E0BD08, - 0x3FF08A48, 0x74000000, 0xBE24C1B6, 0x706CC41F, - 0x3FF0928F, 0xA8000000, 0x3E334EF9, 0x093044EF, - 0x3FF09ADB, 0x04000000, 0xBE1304B1, 0x56BC6C83, - 0x3FF0A32A, 0x84000000, 0x3E2D383E, 0xB028B984, - 0x3FF0AB7E, 0x30000000, 0xBE315B1E, 0x64E7A202, - 0x3FF0B3D6, 0x04000000, 0xBE0AC1E6, 0xC678291E, - 0x3FF0BC32, 0x04000000, 0x3E3A0418, 0x2F12FFE2, - 0x3FF0C492, 0x38000000, 0xBE37D617, 0x43D6D302, - 0x3FF0CCF6, 0x98000000, 0x3E2133F2, 0x152CC8FA, - 0x3FF0D55F, 0x2C000000, 0x3E3CE5D1, 0xE966E6B7, - 0x3FF0DDCB, 0xF8000000, 0x3E1ABF24, 0x7BCACA64, - 0x3FF0E63C, 0xFC000000, 0xBE3854F6, 0x2E8CDBED, - 0x3FF0EEB2, 0x38000000, 0xBE3E6463, 0x0C32156B, - 0x3FF0F72B, 0xAC000000, 0x3E365671, 0xB69772CC, - 0x3FF0FFA9, 0x64000000, 0xBE383E9A, 0x02B1201A, - 0x3FF1082B, 0x58000000, 0xBE205962, 0x50549CC0, - 0x3FF110B1, 0x90000000, 0xBE376BFE, 0xFFDACA72, - 0x3FF1193C, 0x08000000, 0x3E3C1C59, 0x5C43E2F3, - 0x3FF121CA, 0xCC000000, 0xBE26D374, 0xF7067C8B, - 0x3FF12A5D, 0xD4000000, 0x3E343CCC, 0x4DDAFE1D, - 0x3FF132F5, 0x28000000, 0x3E3D5C16, 0x58EBCB7F, - 0x3FF13B90, 0xCC000000, 0xBE2B5D12, 0xB66E8B53, - 0x3FF14430, 0xBC000000, 0xBE24E919, 0xB326B482, - 0x3FF14CD4, 0xFC000000, 0x3E23139A, 0xC8AABD43, - 0x3FF1557D, 0x90000000, 0x3E30DD8B, 0x16743B55, - 0x3FF15E2A, 0x7C000000, 0xBE31D701, 0x35904C50, - 0x3FF166DB, 0xBC000000, 0x3E107F42, 0x30E0CA83, - 0x3FF16F91, 0x58000000, 0xBE24F1F2, 0xDA1B7123, - 0x3FF1784B, 0x50000000, 0xBE3ACAF2, 0x0DC79E23, - 0x3FF18109, 0xA4000000, 0xBE23DC79, 0x609374EE, - 0x3FF189CC, 0x58000000, 0x3E262CF7, 0x3A40C3B7, - 0x3FF19293, 0x70000000, 0x3E1D3833, 0x5A24F463, - 0x3FF19B5E, 0xEC000000, 0x3E2BA9AD, 0x8A2E4440, - 0x3FF1A42E, 0xD0000000, 0x3DFD8CBC, 0x61C41828, - 0x3FF1AD03, 0x1C000000, 0x3E1A65E6, 0x5A4DDF0D, - 0x3FF1B5DB, 0xD4000000, 0xBDE2FDBB, 0x9F828DB5, - 0x3FF1BEB8, 0xF8000000, 0x3E2F4EE8, 0xB79B700F, - 0x3FF1C79A, 0x8C000000, 0x3E3ACC35, 0x0DE1D7E8, - 0x3FF1D080, 0x94000000, 0x3E11729E, 0xFF9E20A0, - 0x3FF1D96B, 0x10000000, 0xBE300F18, 0x6C2EA70B, - 0x3FF1E25A, 0x00000000, 0x3DF32E02, 0xCE425A35, - 0x3FF1EB4D, 0x68000000, 0x3E3BDE56, 0x9A322D12, - 0x3FF1F445, 0x50000000, 0xBE3C3F0D, 0xBA737AEF, - 0x3FF1FD41, 0xB0000000, 0xBE0A2DD0, 0xC896DB7A, - 0x3FF20642, 0x90000000, 0x3E2577B0, 0xF8B782F6, - 0x3FF20F47, 0xF4000000, 0xBE2C6DA3, 0x73607FC8, - 0x3FF21851, 0xD8000000, 0x3E35F7D1, 0xC8917348, - 0x3FF22160, 0x44000000, 0x3E3B6F5C, 0xCF9CED69, - 0x3FF22A73, 0x3C000000, 0xBE39967E, 0x85775C2E, - 0x3FF2338A, 0xB8000000, 0x3E3B3213, 0x497226D4, - 0x3FF23CA6, 0xC4000000, 0x3E3E2710, 0x30733227, - 0x3FF245C7, 0x60000000, 0x3E33B8A9, 0xAF215A72, - 0x3FF24EEC, 0x90000000, 0xBE3F96B2, 0x1365623F, - 0x3FF25816, 0x50000000, 0xBE37324F, 0x27DEE202, - 0x3FF26144, 0xA4000000, 0x3E318CD5, 0x4E484D87, - 0x3FF26A77, 0x94000000, 0xBDE3FD37, 0xA94519E8, - 0x3FF273AF, 0x1C000000, 0x3E37132F, 0xEE788C29, - 0x3FF27CEB, 0x44000000, 0xBE03DDB7, 0xE842E5C0, - 0x3FF2862C, 0x08000000, 0x3E37A3FB, 0xE17C9693, - 0x3FF28F71, 0x70000000, 0x3E24EABF, 0xAEB3D9A0, - 0x3FF298BB, 0x7C000000, 0xBE13C7B6, 0x853B0733, - 0x3FF2A20A, 0x2C000000, 0x3E2D2C80, 0xC7B588B5, - 0x3FF2AB5D, 0x88000000, 0xBE35B750, 0x708F3912, - 0x3FF2B4B5, 0x8C000000, 0xBE291A70, 0xD5FD9130, - 0x3FF2BE12, 0x3C000000, 0x3E2EE937, 0x0CCF9F73, - 0x3FF2C773, 0xA0000000, 0xBE3C3F0C, 0xD42CF76C, - 0x3FF2D0D9, 0xB0000000, 0x3E35DD54, 0x60763D61, - 0x3FF2DA44, 0x78000000, 0x3E26C418, 0xE7D6AA3B, - 0x3FF2E3B3, 0xF8000000, 0xBE3605C6, 0x6FB9B7A8, - 0x3FF2ED28, 0x2C000000, 0x3E3763D4, 0x24DCDDF5, - 0x3FF2F6A1, 0x20000000, 0xBE1A411E, 0xA8EC1AA8, - 0x3FF3001E, 0xD0000000, 0xBE23FCA1, 0x1FE8546F, - 0x3FF309A1, 0x40000000, 0xBE29DF0D, 0x3AAEE75E, - 0x3FF31328, 0x70000000, 0x3E36A5D6, 0x3C2C4206, - 0x3FF31CB4, 0x68000000, 0x3E1B7A3E, 0xB4C979B0, - 0x3FF32645, 0x28000000, 0xBE36157D, 0x706CD593, - 0x3FF32FDA, 0xB0000000, 0xBE39F357, 0x8DA4C646, - 0x3FF33975, 0x04000000, 0xBE3E64DE, 0xD575FE6F, - 0x3FF34314, 0x24000000, 0x3E07F9E3, 0x44D008E0, - 0x3FF34CB8, 0x18000000, 0xBE2E94F9, 0x5A563E77, - 0x3FF35660, 0xDC000000, 0x3E314DC2, 0x2475EF19, - 0x3FF3600E, 0x78000000, 0x3E26D623, 0xA33AC606, - 0x3FF369C0, 0xEC000000, 0x3E170F86, 0xC05B3160, - 0x3FF37378, 0x3C000000, 0xBE38DDFE, 0xDB0AE31A, - 0x3FF37D34, 0x64000000, 0x3E3662A9, 0x5706B570, - 0x3FF386F5, 0x70000000, 0xBE1625E4, 0x6770731E, - 0x3FF390BB, 0x5C000000, 0xBE1678F1, 0x62971091, - 0x3FF39A86, 0x2C000000, 0xBE061F7C, 0xD045CB0C, - 0x3FF3A455, 0xE4000000, 0xBE35CF51, 0x568B1CA2, - 0x3FF3AE2A, 0x84000000, 0xBE378185, 0x7FB61F58, - 0x3FF3B804, 0x0C000000, 0x3E3F77F4, 0x4FA133AF, - 0x3FF3C1E2, 0x88000000, 0xBE22F96A, 0xB00B73FE, - 0x3FF3CBC5, 0xF0000000, 0x3E351A64, 0x1EB4CE2F, - 0x3FF3D5AE, 0x50000000, 0xBE3D3516, 0xD3755639, - 0x3FF3DF9B, 0xA0000000, 0x3E1CD938, 0x43E8C10E, - 0x3FF3E98D, 0xEC000000, 0xBE35EE23, 0x455C8842, - 0x3FF3F385, 0x30000000, 0xBE29B282, 0x96C9F4ED, - 0x3FF3FD81, 0x70000000, 0x3E24A40E, 0x3168CC0B, - 0x3FF40782, 0xB0000000, 0x3E3784BC, 0x86C72839, - 0x3FF41188, 0xF4000000, 0x3E061F19, 0x0785D847, - 0x3FF41B94, 0x3C000000, 0xBE27AEF2, 0xE654A9C9, - 0x3FF425A4, 0x88000000, 0x3E33DFC3, 0xF9E4C1BA, - 0x3FF42FB9, 0xE0000000, 0x3E2455A8, 0x593D0C75, - 0x3FF439D4, 0x44000000, 0xBDE41D4E, 0x238B65D1, - 0x3FF443F3, 0xB4000000, 0x3E3BE616, 0x454CBECB, - 0x3FF44E18, 0x38000000, 0x3E207B3C, 0x931C5332, - 0x3FF45841, 0xD0000000, 0xBE330846, 0x7615DCC9, - 0x3FF46270, 0x7C000000, 0xBE2A8A7B, 0xE497F84E, - 0x3FF46CA4, 0x40000000, 0x3E020B50, 0xF737AF78, - 0x3FF476DD, 0x20000000, 0x3E116B19, 0xE34AFBD3, - 0x3FF4811B, 0x20000000, 0xBE3E15A7, 0x841EDB52, - 0x3FF48B5E, 0x3C000000, 0x3E0F40C3, 0x33B3DE1E, - 0x3FF495A6, 0x7C000000, 0x3E33607F, 0x92EFEE02, - 0x3FF49FF3, 0xE4000000, 0xBE1A2DB5, 0x14F7E168, - 0x3FF4AA46, 0x70000000, 0x3E3F59EC, 0x3EBA1C94, - 0x3FF4B49E, 0x2C000000, 0xBE31A539, 0x8B9AE885, - 0x3FF4BEFB, 0x10000000, 0x3E2FAC0B, 0xF13C8C95, - 0x3FF4C95D, 0x28000000, 0xBE32C0BB, 0xF8B74775, - 0x3FF4D3C4, 0x70000000, 0xBE2FC24E, 0x4F9474BB, - 0x3FF4DE30, 0xEC000000, 0x3E008F30, 0x09DA911F, - 0x3FF4E8A2, 0xA0000000, 0x3E2994C1, 0xBAF8D98B, - 0x3FF4F319, 0x90000000, 0xBE17C38C, 0x18648D0A, - 0x3FF4FD95, 0xBC000000, 0xBE288852, 0xF22F8698, - 0x3FF50817, 0x28000000, 0xBE3C3EC3, 0x30A2C153, - 0x3FF5129D, 0xD4000000, 0xBE27B606, 0x968492AA, - 0x3FF51D29, 0xC4000000, 0x3E2E0396, 0x61101629, - 0x3FF527BA, 0xFC000000, 0x3E3E876F, 0xDAEEAB38, - 0x3FF53251, 0x80000000, 0x3E29F59E, 0xED945B30, - 0x3FF53CED, 0x50000000, 0x3E12D7DA, 0x0B4AE3F1, - 0x3FF5478E, 0x70000000, 0xBE2FAFB8, 0x5FB946D0, - 0x3FF55234, 0xE0000000, 0xBE18A8B3, 0x87D80C66, - 0x3FF55CE0, 0xA4000000, 0x3E28B18F, 0x764CF85C, - 0x3FF56791, 0xC0000000, 0x3E326017, 0x2BDBC6F4, - 0x3FF57248, 0x38000000, 0xBE229F98, 0x53D523FE, - 0x3FF57D04, 0x0C000000, 0xBE3BDD08, 0x4D9B8720, - 0x3FF587C5, 0x3C000000, 0x3E169EBC, 0x09D8749E, - 0x3FF5928B, 0xD0000000, 0x3E190C8C, 0x339C2080, - 0x3FF59D57, 0xC8000000, 0x3E310FA4, 0xDE75E9CA, - 0x3FF5A829, 0x28000000, 0x3E313D18, 0x1097F186, - 0x3FF5B2FF, 0xF4000000, 0xBE2BDE04, 0xD51C23F6, - 0x3FF5BDDC, 0x28000000, 0x3E3EE67E, 0x8938C386, - 0x3FF5C8BD, 0xD0000000, 0x3E0973B8, 0x47DF6575, - 0x3FF5D3A4, 0xE8000000, 0x3E24DF02, 0x1DB97781, - 0x3FF5DE91, 0x78000000, 0xBE3FBA00, 0xAC4AECDC, - 0x3FF5E983, 0x7C000000, 0xBE2F37AF, 0x939F646A, - 0x3FF5F47A, 0xFC000000, 0xBE396DEF, 0x58A6EEE9, - 0x3FF5FF77, 0xF8000000, 0xBE315248, 0xE3613C7B, - 0x3FF60A7A, 0x74000000, 0xBE26A9E2, 0xF1553706, - 0x3FF61582, 0x74000000, 0xBE3B6BF6, 0xAE4D7CB6, - 0x3FF6208F, 0xF8000000, 0xBE35775B, 0x9EB5EBA5, - 0x3FF62BA3, 0x04000000, 0xBE2A821B, 0xC1E43506, - 0x3FF636BB, 0x9C000000, 0xBE367CDA, 0x7B2D8CF4, - 0x3FF641D9, 0xC0000000, 0xBE13218B, 0x3E907A1D, - 0x3FF64CFD, 0x74000000, 0x3E3454EE, 0x7BF5DFE4, - 0x3FF65826, 0xC0000000, 0xBE3E960F, 0x6366C5FD, - 0x3FF66355, 0x9C000000, 0x3E2E378F, 0x8B43C17E, - 0x3FF66E8A, 0x14000000, 0x3E244BE0, 0xA4306535, - 0x3FF679C4, 0x28000000, 0xBDE4B6C1, 0x8DF63D6E, - 0x3FF68503, 0xD8000000, 0x3E3BA122, 0xE6A239CF, - 0x3FF69049, 0x2C000000, 0x3E27F286, 0x59FB5F30, - 0x3FF69B94, 0x24000000, 0xBE044041, 0x971D3970 } }; - -static const union { - int4 i[2048]; - double x[1024]; -} fine = { .i = { - 0x3FF00000, 0x00000000, 0x00000000, 0x00000000, - 0x3FF00004, 0x00000000, 0x3DA00001, 0x55556AAB, - 0x3FF00008, 0x00000000, 0x3DC00002, 0xAAAB0000, - 0x3FF0000C, 0x00000000, 0x3DD20004, 0x8000D800, - 0x3FF00010, 0x00000000, 0x3DE00005, 0x5556AAAB, - 0x3FF00014, 0x00000000, 0x3DE9000A, 0x6AADEC01, - 0x3FF00018, 0x00000000, 0x3DF20009, 0x00036001, - 0x3FF0001C, 0x00000000, 0x3DF8800E, 0x4AB0EB58, - 0x3FF00020, 0x00000000, 0x3E00000A, 0xAAB00002, - 0x3FF00024, 0x00000000, 0x3E04400F, 0x30088B04, - 0x3FF00028, 0x00000000, 0x3E090014, 0xD5625AB1, - 0x3FF0002C, 0x00000000, 0x3E0E401B, 0xBABDBB0A, - 0x3FF00030, 0x00000000, 0x3E120012, 0x000D8008, - 0x3FF00034, 0x00000000, 0x3E152016, 0xE2BD42E1, - 0x3FF00038, 0x00000000, 0x3E18801C, 0x956E5812, - 0x3FF0003C, 0x00000000, 0x3E1C2023, 0x2820F599, - 0x3FF00040, 0x00000000, 0x3E200015, 0x556AAABC, - 0x3FF00044, 0x00000000, 0x3E221019, 0x96C5DAD7, - 0x3FF00048, 0x00000000, 0x3E24401E, 0x60222C1F, - 0x3FF0004C, 0x00000000, 0x3E269023, 0xB97FC193, - 0x3FF00050, 0x00000000, 0x3E290029, 0xAADEC034, - 0x3FF00054, 0x00000000, 0x3E2B9030, 0x3C3F4F02, - 0x3FF00058, 0x00000000, 0x3E2E4037, 0x75A196FF, - 0x3FF0005C, 0x00000000, 0x3E30881F, 0xAF82E194, - 0x3FF00060, 0x00000000, 0x3E320024, 0x00360041, - 0x3FF00064, 0x00000000, 0x3E338828, 0xB0EA3F05, - 0x3FF00068, 0x00000000, 0x3E35202D, 0xC59FB661, - 0x3FF0006C, 0x00000000, 0x3E36C833, 0x42567FD5, - 0x3FF00070, 0x00000000, 0x3E388039, 0x2B0EB5E1, - 0x3FF00074, 0x00000000, 0x3E3A483F, 0x83C87407, - 0x3FF00078, 0x00000000, 0x3E3C2046, 0x5083D6C6, - 0x3FF0007C, 0x00000000, 0x3E3E084D, 0x9540FB9E, - 0x3FF00080, 0x04000000, 0xBE3FFFAA, 0xA9FFFEEF, - 0x3FF00084, 0x04000000, 0xBE3DF7A2, 0x693EF962, - 0x3FF00088, 0x04000000, 0xBE3BDF99, 0xA47BD339, - 0x3FF0008C, 0x04000000, 0xBE39B790, 0x57B66AF5, - 0x3FF00090, 0x04000000, 0xBE377F86, 0x7EEE9E14, - 0x3FF00094, 0x04000000, 0xBE35377C, 0x16244916, - 0x3FF00098, 0x04000000, 0xBE32DF71, 0x1957477B, - 0x3FF0009C, 0x04000000, 0xBE307765, 0x848773C2, - 0x3FF000A0, 0x04000000, 0xBE2BFEB2, 0xA7694ED3, - 0x3FF000A4, 0x04000000, 0xBE26EE99, 0x05BD75E2, - 0x3FF000A8, 0x04000000, 0xBE21BE7E, 0x1C0B0BB1, - 0x3FF000AC, 0x04000000, 0xBE18DCC3, 0xC4A37A79, - 0x3FF000B0, 0x04000000, 0xBE0BF911, 0x4244D60F, - 0x3FF000B4, 0x04000000, 0xBDE6E255, 0xEC91D848, - 0x3FF000B8, 0x04000000, 0x3E0107EB, 0xEC1B8F0C, - 0x3FF000BC, 0x04000000, 0x3E142439, 0x89BE52AA, - 0x3FF000C0, 0x04000000, 0x3E200240, 0x06C01033, - 0x3FF000C4, 0x04000000, 0x3E261264, 0xC8A9F760, - 0x3FF000C8, 0x04000000, 0x3E2C428B, 0x129D3FDE, - 0x3FF000CC, 0x04000000, 0x3E314959, 0x764D2658, - 0x3FF000D0, 0x04000000, 0x3E34816E, 0x2F50C16C, - 0x3FF000D4, 0x04000000, 0x3E37C983, 0xB859A4AB, - 0x3FF000D8, 0x04000000, 0x3E3B219A, 0x15680499, - 0x3FF000DC, 0x04000000, 0x3E3E89B1, 0x4A7C16B5, - 0x3FF000E0, 0x08000000, 0xBE3DFE36, 0xA469EE7E, - 0x3FF000E4, 0x08000000, 0xBE3A761D, 0xB349D37F, - 0x3FF000E8, 0x08000000, 0xBE36DE03, 0xDE235FCD, - 0x3FF000EC, 0x08000000, 0xBE3335E9, 0x20F659E6, - 0x3FF000F0, 0x08000000, 0xBE2EFB9A, 0xEF850E8F, - 0x3FF000F4, 0x08000000, 0xBE276B61, 0xBD0F58E2, - 0x3FF000F8, 0x08000000, 0xBE1F764D, 0x45163381, - 0x3FF000FC, 0x08000000, 0xBE0FABA6, 0x5FDF589A, - 0x3FF00100, 0x08000000, 0x3D8555AA, 0xABBBBE94, - 0x3FF00104, 0x08000000, 0x3E102B2C, 0xDABB690B, - 0x3FF00108, 0x08000000, 0x3E2045D9, 0x7820FBA0, - 0x3FF0010C, 0x08000000, 0x3E28961E, 0x92F54742, - 0x3FF00110, 0x08000000, 0x3E308332, 0xE2ED8E39, - 0x3FF00114, 0x08000000, 0x3E34CB57, 0x8C698119, - 0x3FF00118, 0x08000000, 0x3E39237D, 0x49EEC0C4, - 0x3FF0011C, 0x08000000, 0x3E3D8BA4, 0x1F7D92BC, - 0x3FF00120, 0x0C000000, 0xBE3DFC33, 0xEEE9C27D, - 0x3FF00124, 0x0C000000, 0xBE39740A, 0xDD46F763, - 0x3FF00128, 0x0C000000, 0xBE34DBE0, 0xA799C375, - 0x3FF0012C, 0x0C000000, 0xBE3033B5, 0x49E1DD2F, - 0x3FF00130, 0x0C000000, 0xBE26F711, 0x803DF41F, - 0x3FF00134, 0x0C000000, 0xBE1ACD6C, 0x19433A4C, - 0x3FF00138, 0x0C000000, 0xBDFDB2C1, 0x8770E36F, - 0x3FF0013C, 0x0C000000, 0x3E086820, 0x6B74A43E, - 0x3FF00140, 0x0C000000, 0x3E200A6A, 0xDEC0D058, - 0x3FF00144, 0x0C000000, 0x3E2A1AD0, 0x22BD7872, - 0x3FF00148, 0x0C000000, 0x3E32259B, 0xF769E132, - 0x3FF0014C, 0x0C000000, 0x3E374DD1, 0x2582289A, - 0x3FF00150, 0x0C000000, 0x3E3C8607, 0x9FA7E4F4, - 0x3FF00154, 0x10000000, 0xBE3E31C0, 0x9624963C, - 0x3FF00158, 0x10000000, 0xBE38D987, 0x77E2F472, - 0x3FF0015C, 0x10000000, 0xBE33714D, 0x0192E02C, - 0x3FF00160, 0x10000000, 0xBE2BF222, 0x5E6805CB, - 0x3FF00164, 0x10000000, 0xBE20E1A7, 0xF98C0A34, - 0x3FF00168, 0x10000000, 0xBE06C4AB, 0x32447238, - 0x3FF0016C, 0x10000000, 0x3E067D54, 0xC225D8C1, - 0x3FF00170, 0x10000000, 0x3E210FD8, 0x05C4630F, - 0x3FF00174, 0x10000000, 0x3E2CA05D, 0xBB206115, - 0x3FF00178, 0x10000000, 0x3E342873, 0x2C4F14A6, - 0x3FF0017C, 0x10000000, 0x3E3A10B8, 0xF31F3B5E, - 0x3FF00180, 0x14000000, 0xBE3FF6FF, 0xC9FEFCC9, - 0x3FF00184, 0x14000000, 0xBE39EEB7, 0x070B344A, - 0x3FF00188, 0x14000000, 0xBE33D66C, 0xC0050AA2, - 0x3FF0018C, 0x14000000, 0xBE2B5C41, 0xE1D83C97, - 0x3FF00190, 0x14000000, 0xBE1DD74E, 0x57003305, - 0x3FF00194, 0x14000000, 0xBDF2D84A, 0xA80727F1, - 0x3FF00198, 0x14000000, 0x3E14AB2F, 0x534C5401, - 0x3FF0019C, 0x14000000, 0x3E27263B, 0xD875DE83, - 0x3FF001A0, 0x14000000, 0x3E320B71, 0x9FB782CA, - 0x3FF001A4, 0x14000000, 0x3E3893C6, 0xF349371F, - 0x3FF001A8, 0x14000000, 0x3E3F2C1D, 0xEAF074C6, - 0x3FF001AC, 0x18000000, 0xBE3A2B89, 0x75525ABC, - 0x3FF001B0, 0x18000000, 0xBE33732F, 0x297ECCE2, - 0x3FF001B4, 0x18000000, 0xBE2955A6, 0x5B28EC49, - 0x3FF001B8, 0x18000000, 0xBE1749D5, 0xF64BA7FD, - 0x3FF001BC, 0x18000000, 0x3DF15E9E, 0xA8645141, - 0x3FF001C0, 0x18000000, 0x3E201C96, 0x1D6F0B37, - 0x3FF001C4, 0x18000000, 0x3E2E2D5B, 0xE6028E39, - 0x3FF001C8, 0x18000000, 0x3E362F12, 0x9B63FA1E, - 0x3FF001CC, 0x18000000, 0x3E3D5779, 0x0BE01026, - 0x3FF001D0, 0x1C000000, 0xBE3B701E, 0xB78A0445, - 0x3FF001D4, 0x1C000000, 0xBE3427B4, 0xAAD9CF9D, - 0x3FF001D8, 0x1C000000, 0xBE299E91, 0x941DBAB5, - 0x3FF001DC, 0x1C000000, 0xBE159B6C, 0x44A2DFDD, - 0x3FF001E0, 0x1C000000, 0x3E008CA4, 0x1EC8B89C, - 0x3FF001E4, 0x1C000000, 0x3E23340B, 0xF1EE0E9A, - 0x3FF001E8, 0x1C000000, 0x3E313279, 0x5231913C, - 0x3FF001EC, 0x1C000000, 0x3E38DAEE, 0x93892E68, - 0x3FF001F0, 0x20000000, 0xBE3F6C9A, 0x3F01A6A8, - 0x3FF001F4, 0x20000000, 0xBE37A421, 0x216E726C, - 0x3FF001F8, 0x20000000, 0xBE2F974C, 0x1F7970B9, - 0x3FF001FC, 0x20000000, 0xBE1F8CA4, 0x17AFEBC8, - 0x3FF00200, 0x20000000, 0x3DB55600, 0x04445B06, - 0x3FF00204, 0x20000000, 0x3E203BAE, 0x0C290A26, - 0x3FF00208, 0x20000000, 0x3E30365A, 0x104547BD, - 0x3FF0020C, 0x20000000, 0x3E385EDF, 0x22970DE3, - 0x3FF00210, 0x24000000, 0xBE3F6899, 0xBEF5A5F4, - 0x3FF00214, 0x24000000, 0xBE372010, 0x90605040, - 0x3FF00218, 0x24000000, 0xBE2D8F0A, 0x9B50D8EE, - 0x3FF0021C, 0x24000000, 0xBE197BDF, 0xCB35D444, - 0x3FF00220, 0x24000000, 0x3E00CCBC, 0x2188E3D5, - 0x3FF00224, 0x24000000, 0x3E254452, 0x36A79F6A, - 0x3FF00228, 0x24000000, 0x3E333ABC, 0xD69B2D28, - 0x3FF0022C, 0x24000000, 0x3E3BE352, 0xBA07BE5B, - 0x3FF00230, 0x28000000, 0xBE3B6415, 0x3665F227, - 0x3FF00234, 0x28000000, 0xBE329B7A, 0xF6AD58D5, - 0x3FF00238, 0x28000000, 0xBE2385BD, 0x059BD24A, - 0x3FF0023C, 0x28000000, 0xBDEB47FA, 0xD8E2B1B4, - 0x3FF00240, 0x28000000, 0x3E203CC2, 0x22CF60F6, - 0x3FF00244, 0x28000000, 0x3E312704, 0x39BEF87F, - 0x3FF00248, 0x28000000, 0x3E3A3FA9, 0xA63F5309, - 0x3FF0024C, 0x2C000000, 0xBE3C97AE, 0xA516AE5E, - 0x3FF00250, 0x2C000000, 0xBE335F04, 0xA442792A, - 0x3FF00254, 0x2C000000, 0xBE242CB0, 0xA686F3A2, - 0x3FF00258, 0x2C000000, 0xBDE7B535, 0xC3237903, - 0x3FF0025C, 0x2C000000, 0x3E21560E, 0x9E7A6CF7, - 0x3FF00260, 0x2C000000, 0x3E3223BA, 0xA8C01385, - 0x3FF00264, 0x2C000000, 0x3E3BAC70, 0x627012DF, - 0x3FF00268, 0x30000000, 0xBE3ABAD7, 0x7FB232EA, - 0x3FF0026C, 0x30000000, 0xBE31121C, 0xF9A6244B, - 0x3FF00270, 0x30000000, 0xBE1D6580, 0x1DAC9AE4, - 0x3FF00274, 0x30000000, 0x3E037AFA, 0xD7FB0AC3, - 0x3FF00278, 0x30000000, 0x3E289042, 0x633420EB, - 0x3FF0027C, 0x30000000, 0x3E3630E5, 0x8065842A, - 0x3FF00280, 0x34000000, 0xBE3FD653, 0xB49DA4FF, - 0x3FF00284, 0x34000000, 0xBE35CD8A, 0x696ECB76, - 0x3FF00288, 0x34000000, 0xBE27697D, 0x341A9D63, - 0x3FF0028C, 0x34000000, 0xBDF8BF04, 0x2788D238, - 0x3FF00290, 0x34000000, 0x3E2159C1, 0x42A03782, - 0x3FF00294, 0x34000000, 0x3E32F5B4, 0x154D4F89, - 0x3FF00298, 0x34000000, 0x3E3D4E8A, 0x1D7FB2C1, - 0x3FF0029C, 0x38000000, 0xBE38489D, 0x42181508, - 0x3FF002A0, 0x38000000, 0xBE2B9F84, 0x0AF2C28C, - 0x3FF002A4, 0x38000000, 0xBE0A3721, 0x451C5357, - 0x3FF002A8, 0x38000000, 0x3E1D47F1, 0x61A8605E, - 0x3FF002AC, 0x38000000, 0x3E31FADF, 0x81B02FCF, - 0x3FF002B0, 0x38000000, 0x3E3CB3C5, 0x572F674A, - 0x3FF002B4, 0x3C000000, 0xBE388352, 0x231795EA, - 0x3FF002B8, 0x3C000000, 0xBE2B54CD, 0xD248367A, - 0x3FF002BC, 0x3C000000, 0xBE060BC7, 0xB7ABD90D, - 0x3FF002C0, 0x3C000000, 0x3E206EEF, 0x6EE9F1EF, - 0x3FF002C4, 0x3C000000, 0x3E33406B, 0x261BF09E, - 0x3FF002C8, 0x3C000000, 0x3E3E5961, 0x59001C60, - 0x3FF002CC, 0x40000000, 0xBE367DA5, 0xABDDD232, - 0x3FF002D0, 0x40000000, 0xBE268953, 0xC8FA5113, - 0x3FF002D4, 0x40000000, 0x3D9152CC, 0x8B33A701, - 0x3FF002D8, 0x40000000, 0x3E26BAAC, 0x3E058570, - 0x3FF002DC, 0x40000000, 0x3E36C65A, 0x63236E71, - 0x3FF002E0, 0x44000000, 0xBE3DC09E, 0x7C7A795C, - 0x3FF002E4, 0x44000000, 0xBE323794, 0x7BD63D1D, - 0x3FF002E8, 0x44000000, 0xBE1A7A1E, 0x5BBC9105, - 0x3FF002EC, 0x44000000, 0x3E142A20, 0xD8EE2B1B, - 0x3FF002F0, 0x44000000, 0x3E30C39A, 0xEFAA8A8D, - 0x3FF002F4, 0x44000000, 0x3E3C8CB0, 0x995E96A2, - 0x3FF002F8, 0x48000000, 0xBE379A36, 0xC8A79469, - 0x3FF002FC, 0x48000000, 0xBE276236, 0x64CE7203, - 0x3FF00300, 0x48000000, 0x3DD200D8, 0x0819DA68, - 0x3FF00304, 0x48000000, 0x3E28A249, 0xE5E018D4, - 0x3FF00308, 0x48000000, 0x3E386A49, 0x8A087692, - 0x3FF0030C, 0x4C000000, 0xBE3B6C8E, 0xD695988B, - 0x3FF00310, 0x4C000000, 0xBE2E66C8, 0x55D2BCBA, - 0x3FF00314, 0x4C000000, 0xBE0751B3, 0x7790BA7A, - 0x3FF00318, 0x4C000000, 0x3E22DDF4, 0xC2A20261, - 0x3FF0031C, 0x4C000000, 0x3E35D82E, 0x49E0B0B5, - 0x3FF00320, 0x50000000, 0xBE3DAE9A, 0xB142422E, - 0x3FF00324, 0x50000000, 0xBE312560, 0x8C170FE6, - 0x3FF00328, 0x50000000, 0xBE12308D, 0x0A73BF77, - 0x3FF0032C, 0x50000000, 0x3E203A3A, 0x5E59CEFA, - 0x3FF00330, 0x50000000, 0x3E34D660, 0xCD4740BF, - 0x3FF00334, 0x54000000, 0xBE3E6058, 0x644D1883, - 0x3FF00338, 0x54000000, 0xBE31870E, 0x618F57B6, - 0x3FF0033C, 0x54000000, 0xBE127704, 0x99FABD0F, - 0x3FF00340, 0x54000000, 0x3E20B71E, 0xA1CB5ECF, - 0x3FF00344, 0x54000000, 0x3E3564E3, 0x089E93E1, - 0x3FF00348, 0x58000000, 0xBE3D81C5, 0xFB533142, - 0x3FF0034C, 0x58000000, 0xBE30586B, 0xB6EECE6C, - 0x3FF00350, 0x58000000, 0xBE08F871, 0x319B883E, - 0x3FF00354, 0x58000000, 0x3E2454A5, 0x75BF7503, - 0x3FF00358, 0x58000000, 0x3E3783B6, 0xF04B88C5, - 0x3FF0035C, 0x5C000000, 0xBE3B12E1, 0x81EF30A7, - 0x3FF00360, 0x5C000000, 0xBE2B32ED, 0x2F9F3657, - 0x3FF00364, 0x5C000000, 0xBDB0084D, 0x54DF31BC, - 0x3FF00368, 0x5C000000, 0x3E2B12D2, 0xC303B7B9, - 0x3FF0036C, 0x5C000000, 0x3E3B32DE, 0x78B56F97, - 0x3FF00370, 0x60000000, 0xBE3713A9, 0x03B9496C, - 0x3FF00374, 0x60000000, 0xBE22945A, 0x1F92E726, - 0x3FF00378, 0x60000000, 0x3E123D49, 0x621736DF, - 0x3FF0037C, 0x60000000, 0x3E3278D5, 0x3935580D, - 0x3FF00380, 0x64000000, 0xBE3F8DA4, 0x69B9F5FB, - 0x3FF00384, 0x64000000, 0xBE31841A, 0x8C473CC8, - 0x3FF00388, 0x64000000, 0xBE0B5469, 0x538CDE07, - 0x3FF0038C, 0x64000000, 0x3E257E07, 0x7F8F9D65, - 0x3FF00390, 0x64000000, 0x3E38F898, 0x3665E52B, - 0x3FF00394, 0x68000000, 0xBE38BDCF, 0xC29674BD, - 0x3FF00398, 0x68000000, 0xBE24C868, 0x4E58B4D9, - 0x3FF0039C, 0x68000000, 0x3E1015AC, 0x329466D7, - 0x3FF003A0, 0x68000000, 0x3E327F0D, 0xDCDECE44, - 0x3FF003A4, 0x6C000000, 0xBE3EF74B, 0xB27E5528, - 0x3FF003A8, 0x6C000000, 0xBE305DA1, 0x9D7167F2, - 0x3FF003AC, 0x6C000000, 0xBDFB3F3D, 0xFF980820, - 0x3FF003B0, 0x6C000000, 0x3E2A0B7B, 0x13D49789, - 0x3FF003B4, 0x6C000000, 0x3E3BCF72, 0xA43AE87C, - 0x3FF003B8, 0x70000000, 0xBE3556D4, 0x8D06BDC0, - 0x3FF003BC, 0x70000000, 0xBE19B460, 0x1766E54D, - 0x3FF003C0, 0x70000000, 0x3E211950, 0x7B85C8BA, - 0x3FF003C4, 0x70000000, 0x3E37966C, 0x41D00AED, - 0x3FF003C8, 0x74000000, 0xBE394FCB, 0xF5B15507, - 0x3FF003CC, 0x74000000, 0xBE244C00, 0xC98093C4, - 0x3FF003D0, 0x74000000, 0x3E144F3B, 0xE2907BDF, - 0x3FF003D4, 0x74000000, 0x3E345DA2, 0x267CD924, - 0x3FF003D8, 0x78000000, 0xBE3C4886, 0xD73526C0, - 0x3FF003DC, 0x78000000, 0xBE29BD57, 0xF8E1D62E, - 0x3FF003E0, 0x78000000, 0x3E04D995, 0xD65415E1, - 0x3FF003E4, 0x78000000, 0x3E322515, 0x527E1A58, - 0x3FF003E8, 0x7C000000, 0xBE3E4104, 0x31552BA5, - 0x3FF003EC, 0x7C000000, 0xBE2D2E33, 0x995CAB3B, - 0x3FF003F0, 0x7C000000, 0x3DF22D48, 0x473970DC, - 0x3FF003F4, 0x7C000000, 0x3E30ECC6, 0xC61195FC, - 0x3FF003F8, 0x80000000, 0xBE3F3943, 0x03D35C34, - 0x3FF003FC, 0x80000000, 0xBE2E9E91, 0xAA7483C7, - 0x3FF00400, 0x80000000, 0x3DE556AA, 0xBBBC71CE, - 0x3FF00404, 0x80000000, 0x3E30B4B7, 0x817613C1, - 0x3FF00408, 0x84000000, 0xBE3F3142, 0x4E70B0AC, - 0x3FF0040C, 0x84000000, 0xBE2E0E70, 0x2BAAD02F, - 0x3FF00410, 0x84000000, 0x3DF32D62, 0xF48F01F2, - 0x3FF00414, 0x84000000, 0x3E317CE8, 0x84EB5B98, - 0x3FF00418, 0x88000000, 0xBE3E2901, 0x10ED210B, - 0x3FF0041C, 0x88000000, 0xBE2B7DCD, 0x1C7F0051, - 0x3FF00420, 0x88000000, 0x3E05D9C0, 0x87AA2706, - 0x3FF00424, 0x88000000, 0x3E33455A, 0xD0B235B3, - 0x3FF00428, 0x8C000000, 0xBE3C207E, 0x4B07A510, - 0x3FF0042C, 0x8C000000, 0xBE26ECA6, 0x7C6E838B, - 0x3FF00430, 0x8C000000, 0x3E150F6F, 0xEC91A8D5, - 0x3FF00434, 0x8C000000, 0x3E360E0F, 0x650C6A83, - 0x3FF00438, 0x90000000, 0xBE3917B8, 0xFC7E3439, - 0x3FF0043C, 0x90000000, 0xBE205AFA, 0x4AF4C8B6, - 0x3FF00440, 0x90000000, 0x3E219985, 0xDC31D181, - 0x3FF00444, 0x90000000, 0x3E39D707, 0x423CC2BE, - 0x3FF00448, 0x94000000, 0xBE350EB0, 0x250DC5BF, - 0x3FF0044C, 0x94000000, 0xBE0F231A, 0x1E2CF893, - 0x3FF00450, 0x94000000, 0x3E2AABDB, 0xD42C92D4, - 0x3FF00454, 0x94000000, 0x3E3EA043, 0x6887075B, - 0x3FF00458, 0x98000000, 0xBE300562, 0xC472509B, - 0x3FF0045C, 0x98000000, 0x3DF64FB6, 0x72B572E0, - 0x3FF00460, 0x98000000, 0x3E32DF5D, 0xEF61155C, - 0x3FF00464, 0x9C000000, 0xBE3B963B, 0x27CFFE6A, - 0x3FF00468, 0x9C000000, 0xBE23F79F, 0xB4CD96FE, - 0x3FF0046C, 0x9C000000, 0x3E1EBA7F, 0x6E771F13, - 0x3FF00470, 0x9C000000, 0x3E396913, 0xFE3ED608, - 0x3FF00474, 0xA0000000, 0xBE34CC73, 0x6E82850F, - 0x3FF00478, 0xA0000000, 0xBE078FB3, 0x352966B7, - 0x3FF0047C, 0xA0000000, 0x3E2DF116, 0x33AFF8AE, - 0x3FF00480, 0xA4000000, 0xBE3F0CEE, 0xE909EADD, - 0x3FF00484, 0xA4000000, 0xBE2A04C8, 0xD6938597, - 0x3FF00488, 0xA4000000, 0x3E1460AA, 0x5C6654D8, - 0x3FF0048C, 0xA4000000, 0x3E3742BE, 0x22213ECF, - 0x3FF00490, 0xA8000000, 0xBE3682A9, 0xC631A356, - 0x3FF00494, 0xA8000000, 0xBE10E034, 0x7777B644, - 0x3FF00498, 0xA8000000, 0x3E2C4528, 0x3E3B0991, - 0x3FF0049C, 0xAC000000, 0xBE3F72C6, 0x0B3E269F, - 0x3FF004A0, 0xAC000000, 0xBE29F037, 0x31DF923B, - 0x3FF004A4, 0xAC000000, 0x3E164A4D, 0xE82713DE, - 0x3FF004A8, 0xAC000000, 0x3E382D47, 0x31AFAC4B, - 0x3FF004AC, 0xB0000000, 0xBE352800, 0x6DFCE978, - 0x3FF004B0, 0xB0000000, 0xBE036A1B, 0x07D68D27, - 0x3FF004B4, 0xB0000000, 0x3E305D7E, 0x5CB71F6F, - 0x3FF004B8, 0xB4000000, 0xBE3CC7BB, 0x30E5E990, - 0x3FF004BC, 0xB4000000, 0xBE23B9E0, 0x0BA17DEA, - 0x3FF004C0, 0xB4000000, 0x3E223BBF, 0xC3EF9BD8, - 0x3FF004C4, 0xB4000000, 0x3E3C28B4, 0x8A74ECC0, - 0x3FF004C8, 0xB8000000, 0xBE30BC72, 0x085831CA, - 0x3FF004CC, 0xB8000000, 0x3E037361, 0x6C8D1FC8, - 0x3FF004D0, 0xB8000000, 0x3E35A94F, 0x3033A0B8, - 0x3FF004D4, 0xBC000000, 0xBE370BC8, 0xFC7107DE, - 0x3FF004D8, 0xBC000000, 0xBE0D86E2, 0xA2D908DA, - 0x3FF004DC, 0xBC000000, 0x3E2F742A, 0x58ED155E, - 0x3FF004E0, 0xC0000000, 0xBE3CCAF4, 0x75FACDD0, - 0x3FF004E4, 0xC0000000, 0xBE227FF2, 0x6F5BE5D3, - 0x3FF004E8, 0xC0000000, 0x3E24B60D, 0xD6BCA827, - 0x3FF004EC, 0xC0000000, 0x3E3E060B, 0xF72B40D6, - 0x3FF004F0, 0xC4000000, 0xBE2C7DD4, 0x208BE3E3, - 0x3FF004F4, 0xC4000000, 0x3E163093, 0x642FDDB8, - 0x3FF004F8, 0xC4000000, 0x3E396738, 0xB72239A5, - 0x3FF004FC, 0xC8000000, 0xBE32ADAE, 0x7201ED9B, - 0x3FF00500, 0xC8000000, 0x3DF4D6F6, 0x1A0C05F3, - 0x3FF00504, 0xC8000000, 0x3E355892, 0x360B8346, - 0x3FF00508, 0xCC000000, 0xBE368C45, 0xF0C06435, - 0x3FF0050C, 0xCC000000, 0xBE0308C8, 0x760DA2F6, - 0x3FF00510, 0xCC000000, 0x3E31DA18, 0xE008D57B, - 0x3FF00514, 0xD0000000, 0xBE39DAB0, 0x205F82F4, - 0x3FF00518, 0xD0000000, 0xBE15FDD0, 0x2FE5E3E3, - 0x3FF0051C, 0xD0000000, 0x3E2DD79A, 0x42787241, - 0x3FF00520, 0xD4000000, 0xBE3C98EC, 0x94BD25F4, - 0x3FF00524, 0xD4000000, 0xBE201B42, 0x53C89D03, - 0x3FF00528, 0xD4000000, 0x3E291B5E, 0xCB901057, - 0x3FF0052C, 0xD8000000, 0xBE3EC6FA, 0xE1B6D837, - 0x3FF00530, 0xD8000000, 0xBE24173F, 0xF8BF49E7, - 0x3FF00534, 0xD8000000, 0x3E257F80, 0x339DDB57, - 0x3FF00538, 0xD8000000, 0x3E3F9B25, 0x64D62C5C, - 0x3FF0053C, 0xDC000000, 0xBE26F2E0, 0x2E913659, - 0x3FF00540, 0xDC000000, 0x3E2303FF, 0x52E7CB93, - 0x3FF00544, 0xDC000000, 0x3E3E8D74, 0xAB0CFEF5, - 0x3FF00548, 0xE0000000, 0xBE28AE22, 0x1CF7FDE6, - 0x3FF0054C, 0xE0000000, 0x3E21A8DD, 0x01B47B93, - 0x3FF00550, 0xE0000000, 0x3E3E0FF3, 0x5D1107E2, - 0x3FF00554, 0xE4000000, 0xBE294904, 0xEBAC99E1, - 0x3FF00558, 0xE4000000, 0x3E216E1A, 0x184B2814, - 0x3FF0055C, 0xE4000000, 0x3E3E22A1, 0xE706008B, - 0x3FF00560, 0xE8000000, 0xBE28C387, 0xC267616A, - 0x3FF00564, 0xE8000000, 0x3E2253B7, 0x6EF3B008, - 0x3FF00568, 0xE8000000, 0x3E3EC580, 0xB50FF371, - 0x3FF0056C, 0xEC000000, 0xBE271DA9, 0xC8E0096B, - 0x3FF00570, 0xEC000000, 0x3E2459B5, 0xDDF69498, - 0x3FF00574, 0xEC000000, 0x3E3FF890, 0x33533C31, - 0x3FF00578, 0xF0000000, 0xBE24576A, 0x26CDA497, - 0x3FF0057C, 0xF0000000, 0x3E278016, 0x3D9CF923, - 0x3FF00580, 0xF4000000, 0xBE3E442F, 0x320B787B, - 0x3FF00584, 0xF4000000, 0xBE2070C8, 0x03E6A36B, - 0x3FF00588, 0xF4000000, 0x3E2BC6D9, 0x6630A33F, - 0x3FF0058C, 0xF8000000, 0xBE3BF0BD, 0x0EE72CBF, - 0x3FF00590, 0xF8000000, 0xBE16D385, 0x0FC1A853, - 0x3FF00594, 0xF8000000, 0x3E309700, 0x17FDFD5D, - 0x3FF00598, 0xFC000000, 0xBE390D18, 0xF71A91AC, - 0x3FF0059C, 0xFC000000, 0xBE050963, 0x69C58B86, - 0x3FF005A0, 0xFC000000, 0x3E33DAC5, 0xB9A504CD, - 0x3FF005A5, 0x00000000, 0xBE359942, 0x7E800734, - 0x3FF005A9, 0x00000000, 0x3DF02BAE, 0xE59934CD, - 0x3FF005AD, 0x00000000, 0x3E37AEBE, 0x04333E0E, - 0x3FF005B1, 0x04000000, 0xBE319539, 0x38F19C2F, - 0x3FF005B5, 0x04000000, 0x3E14DB54, 0xEBB1C157, - 0x3FF005B9, 0x04000000, 0x3E3C12E9, 0x63CED05D, - 0x3FF005BD, 0x08000000, 0xBE2A01F9, 0x74921CAF, - 0x3FF005C1, 0x08000000, 0x3E23F645, 0xC94C85F2, - 0x3FF005C5, 0x0C000000, 0xBE3EF8B7, 0xBB61CBEE, - 0x3FF005C9, 0x0C000000, 0xBE1F7232, 0x597F2931, - 0x3FF005CD, 0x0C000000, 0x3E2E9F48, 0xAF5B7345, - 0x3FF005D1, 0x10000000, 0xBE397424, 0xED37CD5F, - 0x3FF005D5, 0x10000000, 0xBE013F43, 0x08775C6B, - 0x3FF005D9, 0x10000000, 0x3E35345A, 0x0029D3DB, - 0x3FF005DD, 0x14000000, 0xBE335F5D, 0xC58C1962, - 0x3FF005E1, 0x14000000, 0x3E1073C1, 0x47430E04, - 0x3FF005E5, 0x14000000, 0x3E3BA944, 0x4A41E248, - 0x3FF005E9, 0x18000000, 0xBE2974C3, 0xB06E888E, - 0x3FF005ED, 0x18000000, 0x3E25E3FB, 0xDCCD9333, - 0x3FF005F1, 0x1C000000, 0xBE3D519C, 0x5DE27951, - 0x3FF005F5, 0x1C000000, 0xBE1614C2, 0xE4464502, - 0x3FF005F9, 0x1C000000, 0x3E325740, 0xE0DAFE93, - 0x3FF005FD, 0x20000000, 0xBE35BC47, 0x8C1B4C10, - 0x3FF00601, 0x20000000, 0x3E0201B0, 0x20686CE9, - 0x3FF00605, 0x20000000, 0x3E3A4CB9, 0x95558B63, - 0x3FF00609, 0x24000000, 0xBE2B2D79, 0xA880A3EB, - 0x3FF0060D, 0x24000000, 0x3E252BA5, 0x9699EEB7, - 0x3FF00611, 0x28000000, 0xBE3D2D97, 0x880115E1, - 0x3FF00615, 0x28000000, 0xBE1383EF, 0x28A3D788, - 0x3FF00619, 0x28000000, 0x3E337BA6, 0x08D6DC23, - 0x3FF0061D, 0x2C000000, 0xBE3417B2, 0x0B001A08, - 0x3FF00621, 0x2C000000, 0x3E1193EF, 0xF94EB99A, - 0x3FF00625, 0x2C000000, 0x3E3CF1B0, 0x28D3BD3B, - 0x3FF00629, 0x30000000, 0xBE24E32B, 0x0EFCC982, - 0x3FF0062D, 0x30000000, 0x3E2C7655, 0xE2BDA47F, - 0x3FF00631, 0x34000000, 0xBE39080E, 0x689312F8, - 0x3FF00635, 0x34000000, 0xBDCDA0C8, 0xA9444DB4, - 0x3FF00639, 0x34000000, 0x3E38A191, 0x7B21FE23, - 0x3FF0063D, 0x38000000, 0xBE2CE32A, 0x7E67E1E1, - 0x3FF00641, 0x38000000, 0x3E251694, 0x875A71F0, - 0x3FF00645, 0x3C000000, 0xBE3C67CF, 0xF838F455, - 0x3FF00649, 0x3C000000, 0xBE0A571F, 0x77274052, - 0x3FF0064D, 0x3C000000, 0x3E35E20E, 0x63AAEFA8, - 0x3FF00651, 0x40000000, 0xBE30E0F8, 0xFC87DA70, - 0x3FF00655, 0x40000000, 0x3E20D80B, 0xE9089AFD, - 0x3FF00659, 0x44000000, 0xBE3E36F4, 0xC52F03BD, - 0x3FF0065D, 0x44000000, 0xBE1327A4, 0x9680E14E, - 0x3FF00661, 0x44000000, 0x3E34B328, 0xD732468D, - 0x3FF00665, 0x48000000, 0xBE31BFBE, 0xCAB5EF4A, - 0x3FF00669, 0x48000000, 0x3E1F757F, 0xE2A2FBE1, - 0x3FF0066D, 0x4C000000, 0xBE3E757A, 0xDAB014DA, - 0x3FF00671, 0x4C000000, 0xBE12E13D, 0x02FB3FBB, - 0x3FF00675, 0x4C000000, 0x3E3514E2, 0xCA7E298D, - 0x3FF00679, 0x50000000, 0xBE310DE4, 0xB4F78B94, - 0x3FF0067D, 0x50000000, 0x3E21BEB4, 0x89C35D05, - 0x3FF00681, 0x54000000, 0xBE3D2360, 0x43F4895C, - 0x3FF00685, 0x54000000, 0xBE08B0A2, 0x5BC49ADF, - 0x3FF00689, 0x54000000, 0x3E37073E, 0x32573159, - 0x3FF0068D, 0x58000000, 0xBE2D96D1, 0x8D0732D2, - 0x3FF00691, 0x58000000, 0x3E26E3ED, 0x9BF15E67, - 0x3FF00695, 0x5C000000, 0xBE3A40A3, 0x0C3250FB, - 0x3FF00699, 0x5C000000, 0x3DBCC9AE, 0xFD0AE214, - 0x3FF0069D, 0x5C000000, 0x3E3A8A3D, 0x038868A1, - 0x3FF006A1, 0x60000000, 0xBE25F092, 0x151D21CE, - 0x3FF006A5, 0x60000000, 0x3E2F2A6F, 0x11738C43, - 0x3FF006A9, 0x64000000, 0xBE35CD41, 0x3E9CE96D, - 0x3FF006AD, 0x64000000, 0x3E138132, 0x8DBC2918, - 0x3FF006B1, 0x64000000, 0x3E3F9DE1, 0x32DF4C13, - 0x3FF006B5, 0x68000000, 0xBE16520E, 0x3129E0B2, - 0x3FF006B9, 0x68000000, 0x3E35491E, 0x69F36A61, - 0x3FF006BD, 0x6C000000, 0xBE2F9271, 0xCCCABCD4, - 0x3FF006C1, 0x6C000000, 0x3E2668ED, 0x0D59B899, - 0x3FF006C5, 0x70000000, 0xBE39BDD3, 0x4AD435A0, - 0x3FF006C9, 0x70000000, 0x3DF5FE9A, 0x9191CABB, - 0x3FF006CD, 0x70000000, 0x3E3C8DAD, 0x6676850B, - 0x3FF006D1, 0x74000000, 0xBE206910, 0x1D74934A, - 0x3FF006D5, 0x74000000, 0x3E331949, 0x4D886478, - 0x3FF006D9, 0x78000000, 0xBE3188DE, 0x80BFBBC2, - 0x3FF006DD, 0x78000000, 0x3E23CA01, 0x14DE1719, - 0x3FF006E1, 0x7C000000, 0xBE3A9D19, 0x8CE98EC0, - 0x3FF006E5, 0x7C000000, 0x3DEE1A67, 0xA705A6E7, - 0x3FF006E9, 0x7C000000, 0x3E3C8EC6, 0xECD5F851, - 0x3FF006ED, 0x80000000, 0xBE1F0CF9, 0xE839CE4D, - 0x3FF006F1, 0x80000000, 0x3E33FAC3, 0x0C8CA46A, - 0x3FF006F5, 0x84000000, 0xBE303734, 0x7B5703D8, - 0x3FF006F9, 0x84000000, 0x3E274DB5, 0xE490A112, - 0x3FF006FD, 0x88000000, 0xBE386B0E, 0xA693A093, - 0x3FF00701, 0x88000000, 0x3E0C9875, 0xF0B73DAA, - 0x3FF00705, 0x88000000, 0x3E3FA133, 0x2449A944, - 0x3FF00709, 0x8C000000, 0xBE110285, 0xBFE66C14, - 0x3FF0070D, 0x8C000000, 0x3E37ED91, 0x054EDCBD, - 0x3FF00711, 0x90000000, 0xBE27A86A, 0xEFB65924, - 0x3FF00715, 0x90000000, 0x3E307A0B, 0x1C8A0CF1, - 0x3FF00719, 0x94000000, 0xBE3327AD, 0x397FB1D6, - 0x3FF0071D, 0x94000000, 0x3E228D43, 0x1412B9FB, - 0x3FF00721, 0x98000000, 0xBE3A3B08, 0x94D8FFB0, - 0x3FF00725, 0x98000000, 0x3E029AA3, 0x6ED80040, - 0x3FF00729, 0x98000000, 0x3E3EF1B8, 0x9627250A, - 0x3FF0072D, 0x9C000000, 0xBE117F70, 0x5FCB1B09, - 0x3FF00731, 0x9C000000, 0x3E385E96, 0x678F0789, - 0x3FF00735, 0xA0000000, 0xBE25A5DF, 0xCEA3485B, - 0x3FF00739, 0xA0000000, 0x3E320B90, 0xFF6D0303, - 0x3FF0073D, 0xA4000000, 0xBE3105E6, 0xE03334FF, - 0x3FF00741, 0xA4000000, 0x3E27F150, 0xFB9F056D, - 0x3FF00745, 0xA8000000, 0xBE36F8C0, 0xE28905F4, - 0x3FF00749, 0xA8000000, 0x3E189774, 0x0B1407AA, - 0x3FF0074D, 0xAC000000, 0xBE3CAB7D, 0xCE4493C4, - 0x3FF00751, 0xAC000000, 0x3DE265D5, 0xCB817D78, - 0x3FF00755, 0xAC000000, 0x3E3DE1E2, 0x7CA8B4E3, - 0x3FF00759, 0xB0000000, 0xBE12FD89, 0x7D730FC6, - 0x3FF0075D, 0xB0000000, 0x3E38AF60, 0x1E4D7759, - 0x3FF00761, 0xB4000000, 0xBE23A3AC, 0x0CAD84A2, - 0x3FF00765, 0xB4000000, 0x3E33BCFB, 0x36B866FD, - 0x3FF00769, 0xB8000000, 0xBE2D4858, 0x4D0667A1, - 0x3FF0076D, 0xB8000000, 0x3E2E1567, 0xCBF08E6A, - 0x3FF00771, 0xBC000000, 0xBE333664, 0x9FD34D05, - 0x3FF00775, 0xBC000000, 0x3E253114, 0x9837D6E0, - 0x3FF00779, 0xC0000000, 0xBE37887F, 0x5238327D, - 0x3FF0077D, 0xC0000000, 0x3E1999FA, 0x24C8DC90, - 0x3FF00781, 0xC4000000, 0xBE3B9A7C, 0x1DA2F8BE, - 0x3FF00785, 0xC4000000, 0x3E03A485, 0xEA50EE6A, - 0x3FF00789, 0xC8000000, 0xBE3F6C5A, 0xE204A449, - 0x3FF0078D, 0xC8000000, 0xBDF3D3EF, 0x78D5D0F3, - 0x3FF00791, 0xC8000000, 0x3E3D01E4, 0x80B1D66C, - 0x3FF00795, 0xCC000000, 0xBE12BBC1, 0xD5149796, - 0x3FF00799, 0xCC000000, 0x3E39B042, 0x2A8F92F0, - 0x3FF0079D, 0xD0000000, 0xBE1F820E, 0x6F386487, - 0x3FF007A1, 0xD0000000, 0x3E369EBE, 0x3BA3BCDA, - 0x3FF007A5, 0xD4000000, 0xBE25A3F0, 0x96320652, - 0x3FF007A9, 0xD4000000, 0x3E33CD58, 0xD3FD8FCA, - 0x3FF007AD, 0xD8000000, 0xBE2B069C, 0xC62D40B1, - 0x3FF007B1, 0xD8000000, 0x3E313C12, 0x13AC5766, - 0x3FF007B5, 0xDC000000, 0xBE2FE90B, 0x876F3A0B, - 0x3FF007B9, 0xDC000000, 0x3E2DD5D4, 0x357EDEB8, - 0x3FF007BD, 0xE0000000, 0xBE32259E, 0x4CEC957E, - 0x3FF007C1, 0xE0000000, 0x3E29B3C2, 0x128C86C6, - 0x3FF007C5, 0xE4000000, 0xBE341697, 0xDEA61608, - 0x3FF007C9, 0xE4000000, 0x3E2611ED, 0xFEA09E70, - 0x3FF007CD, 0xE8000000, 0xBE35C772, 0x58D49AE3, - 0x3FF007D1, 0xE8000000, 0x3E22F058, 0x39DA3D42, - 0x3FF007D5, 0xEC000000, 0xBE37382D, 0x9B689043, - 0x3FF007D9, 0xEC000000, 0x3E204F01, 0x04589AD6, - 0x3FF007DD, 0xF0000000, 0xBE3868C9, 0x86525259, - 0x3FF007E1, 0xF0000000, 0x3E1C5BD1, 0x3C761DAC, - 0x3FF007E5, 0xF4000000, 0xBE395945, 0xF9822D4C, - 0x3FF007E9, 0xF4000000, 0x3E191A1E, 0x8F4221F9, - 0x3FF007ED, 0xF8000000, 0xBE3A09A2, 0xD4E85D3A, - 0x3FF007F1, 0xF8000000, 0x3E16D8EA, 0x81547225, - 0x3FF007F5, 0xFC000000, 0xBE3A79DF, 0xF8750E3B, - 0x3FF007F9, 0xFC000000, 0x3E159835, 0x92EC7DE3, - 0x3FF007FE, 0x00000000, 0xBE3AA9FD, 0x44185C5D } }; - -#else -#ifdef LITTLE_ENDI - -static const union { - int i[1424]; - double x[712]; -} coar = { .i = { - 0xC8000000, 0x3FE69A59, 0x6079C9F7, 0x3DF22D4D, - 0xC8000000, 0x3FE6A5A9, 0x25AF6823, 0x3E19882D, - 0x74000000, 0x3FE6B0FF, 0x31DABF59, 0xBE221476, - 0xC8000000, 0x3FE6BC5A, 0x99A2DC0A, 0x3E2312AC, - 0xD0000000, 0x3FE6C7BB, 0xCE9F9355, 0xBE265926, - 0x84000000, 0x3FE6D322, 0x2D298DED, 0x3E2F2C26, - 0xF4000000, 0x3FE6DE8E, 0x1E748D2F, 0xBE2EC28E, - 0x14000000, 0x3FE6EA01, 0xC68CB7E5, 0x3E2D8C6D, - 0xF4000000, 0x3FE6F578, 0x419FE2F0, 0x3DEE1A9E, - 0x90000000, 0x3FE700F6, 0xDEAEAE34, 0xBDFF1AFD, - 0xEC000000, 0x3FE70C79, 0x558B7122, 0xBE0730FE, - 0x0C000000, 0x3FE71803, 0x2D280C3B, 0xBE25CB85, - 0xF0000000, 0x3FE72391, 0x337B7B54, 0xBE06F2CE, - 0x9C000000, 0x3FE72F26, 0x45C02B72, 0x3E289BCA, - 0x18000000, 0x3FE73AC1, 0x5039F1CA, 0xBE18DEA6, - 0x60000000, 0x3FE74661, 0x86CE0538, 0xBE09D090, - 0x78000000, 0x3FE75207, 0xCFCE5DDB, 0x3E290E79, - 0x68000000, 0x3FE75DB3, 0xB249A17C, 0x3DD61DF0, - 0x2C000000, 0x3FE76965, 0xE13445F7, 0x3E2F22F7, - 0xD0000000, 0x3FE7751C, 0x874E75CE, 0xBE2CD454, - 0x4C000000, 0x3FE780DA, 0xDF43E3BC, 0xBE0159CE, - 0xA8000000, 0x3FE78C9D, 0x699A1332, 0x3E279291, - 0xEC000000, 0x3FE79866, 0x2DD98C6C, 0xBE2A0BCD, - 0x10000000, 0x3FE7A436, 0x15AC979E, 0x3E25F375, - 0x20000000, 0x3FE7B00B, 0x2FEAFCF6, 0x3E26CCF5, - 0x1C000000, 0x3FE7BBE6, 0x53ADAD67, 0x3E27D4F4, - 0x08000000, 0x3FE7C7C7, 0x7FBD9566, 0x3E10EEC7, - 0xE4000000, 0x3FE7D3AD, 0x9A831D86, 0x3E2837F0, - 0xB8000000, 0x3FE7DF9A, 0x5CB4C35B, 0xBE129BE0, - 0x80000000, 0x3FE7EB8D, 0x0234F04D, 0x3E23990A, - 0x44000000, 0x3FE7F786, 0x64D5C842, 0x3E2EB807, - 0x08000000, 0x3FE80385, 0x02B4E9E8, 0x3E0FC86F, - 0xCC000000, 0x3FE80F89, 0x7B4274BF, 0xBDD7B5B3, - 0x94000000, 0x3FE81B94, 0xB899B00F, 0xBE16888B, - 0x60000000, 0x3FE827A5, 0x5E94D155, 0x3E288971, - 0x38000000, 0x3FE833BC, 0x099F3E5E, 0x3E2AEEB2, - 0x20000000, 0x3FE83FD9, 0x3FF60B7C, 0xBE23B922, - 0x14000000, 0x3FE84BFC, 0x2DBD8012, 0xBDF7D3B1, - 0x1C000000, 0x3FE85825, 0xA8872BEB, 0xBDF24BA3, - 0x38000000, 0x3FE86454, 0x01AA18A7, 0x3E2EFE04, - 0x70000000, 0x3FE87089, 0x944496A2, 0x3E21986C, - 0xC4000000, 0x3FE87CC4, 0xB71FFAFF, 0x3E096A8B, - 0x38000000, 0x3FE88906, 0xBC4C7AC5, 0xBE21CE0A, - 0xCC000000, 0x3FE8954D, 0xBAC02491, 0xBE076F45, - 0x84000000, 0x3FE8A19B, 0xD922B925, 0x3E2B4FA2, - 0x68000000, 0x3FE8ADEF, 0x641863AF, 0x3DF759DB, - 0x78000000, 0x3FE8BA49, 0xC6AB5E04, 0xBE2DB97C, - 0xB4000000, 0x3FE8C6A9, 0xE2156713, 0xBE25364C, - 0x20000000, 0x3FE8D310, 0x862BEFF7, 0x3E1BEB7C, - 0xC4000000, 0x3FE8DF7C, 0x1CEA33A5, 0xBDF4DD0C, - 0xA0000000, 0x3FE8EBEF, 0x51797D47, 0xBE2537DF, - 0xB4000000, 0x3FE8F868, 0xF0107B28, 0x3E0FB1C4, - 0x08000000, 0x3FE904E8, 0xE01B68BD, 0x3E0AD6A1, - 0x9C000000, 0x3FE9116D, 0x1F78D9D9, 0x3E292117, - 0x78000000, 0x3FE91DF9, 0x4F50E5CF, 0xBE1D75DA, - 0x98000000, 0x3FE92A8B, 0x74959E58, 0x3DE5102B, - 0x04000000, 0x3FE93724, 0xD2216C35, 0xBE01CA50, - 0xBC000000, 0x3FE943C2, 0xB0B05884, 0x3E225BFD, - 0xC8000000, 0x3FE95067, 0x60B7C5C1, 0xBE0F2183, - 0x24000000, 0x3FE95D13, 0xB5860441, 0x3E2FB47A, - 0xDC000000, 0x3FE969C4, 0xE2D4059E, 0xBE01FFD2, - 0xEC000000, 0x3FE9767C, 0x12BB6A8D, 0xBDE9ED72, - 0x58000000, 0x3FE9833B, 0x43BFFB24, 0x3E2B3815, - 0x28000000, 0x3FE99000, 0xEE9EAD1E, 0x3E03FA22, - 0x5C000000, 0x3FE99CCB, 0x377138F7, 0xBE213841, - 0xF4000000, 0x3FE9A99C, 0xDB636C94, 0x3E178105, - 0xF8000000, 0x3FE9B674, 0xF5720122, 0x3E1E5E7A, - 0x6C000000, 0x3FE9C353, 0xA2AC5AAE, 0xBE238BFF, - 0x4C000000, 0x3FE9D038, 0xF93BDBD8, 0x3E270893, - 0xA4000000, 0x3FE9DD23, 0x354B86CF, 0x3DF40420, - 0x74000000, 0x3FE9EA15, 0x88CB06B7, 0xBE2D76D3, - 0xBC000000, 0x3FE9F70D, 0x9ED0EC60, 0xBE251639, - 0x80000000, 0x3FEA040C, 0xE2DDE506, 0x3E1F06E9, - 0xC8000000, 0x3FEA1111, 0x8E6DB477, 0x3E014549, - 0x94000000, 0x3FEA1E1D, 0xF8716509, 0xBDF4BC17, - 0xE8000000, 0x3FEA2B2F, 0xDA723A49, 0xBE2107DB, - 0xC4000000, 0x3FEA3848, 0x986AA369, 0x3E1A932A, - 0x30000000, 0x3FEA4568, 0x41592CDB, 0x3E198092, - 0x30000000, 0x3FEA528E, 0x676BCAB8, 0xBE2E260F, - 0xC0000000, 0x3FEA5FBA, 0x2D5D5610, 0x3DE2E821, - 0xE8000000, 0x3FEA6CED, 0x7DA20167, 0x3E2F7046, - 0xB0000000, 0x3FEA7A27, 0xF9FAAD30, 0xBE1D2832, - 0x14000000, 0x3FEA8768, 0x43FA6C45, 0xBE23F788, - 0x18000000, 0x3FEA94AF, 0xAA082732, 0x3E011E27, - 0xC4000000, 0x3FEAA1FC, 0xC682F0BF, 0xBE20BACB, - 0x18000000, 0x3FEAAF51, 0x7BD08C78, 0xBE2DC7DD, - 0x14000000, 0x3FEABCAC, 0xA3B10F9A, 0x3E2271A2, - 0xC4000000, 0x3FEACA0D, 0x7966F94C, 0xBE15449C, - 0x24000000, 0x3FEAD776, 0x6FD8F3EE, 0x3DD06137, - 0x3C000000, 0x3FEAE4E5, 0x8C5A144A, 0xBE267CD1, - 0x0C000000, 0x3FEAF25B, 0xB59DA94B, 0xBE29E584, - 0x98000000, 0x3FEAFFD7, 0x7B52192F, 0xBE23DFCF, - 0xE4000000, 0x3FEB0D5A, 0x78A76B45, 0xBE1CF2FE, - 0xF4000000, 0x3FEB1AE4, 0x7EC80FF6, 0xBE23A561, - 0xC8000000, 0x3FEB2875, 0x932EED68, 0x3E22C4C9, - 0x68000000, 0x3FEB360D, 0xB5833C97, 0x3E2B085C, - 0xD8000000, 0x3FEB43AB, 0x93B9319A, 0xBE01F093, - 0x18000000, 0x3FEB5151, 0xFABCE670, 0xBE254F01, - 0x28000000, 0x3FEB5EFD, 0x627ABFB0, 0x3E2F24C2, - 0x14000000, 0x3FEB6CB0, 0xE6AC0B48, 0x3E1F1EEC, - 0xDC000000, 0x3FEB7A69, 0x127F9ABC, 0xBE1A8671, - 0x80000000, 0x3FEB882A, 0xC87C73B3, 0xBDCB0C28, - 0x08000000, 0x3FEB95F2, 0x7F2B5A97, 0xBE22E8DD, - 0x74000000, 0x3FEBA3C0, 0x2D22A9D5, 0xBE1B3645, - 0xC8000000, 0x3FEBB195, 0x428F8B88, 0x3E0ADACA, - 0x0C000000, 0x3FEBBF72, 0xCDF9F681, 0xBE2E9E07, - 0x3C000000, 0x3FEBCD55, 0x7FA54ACF, 0xBE08A127, - 0x60000000, 0x3FEBDB3F, 0x8225B385, 0x3E0E92CE, - 0x7C000000, 0x3FEBE930, 0x7BB09485, 0x3DF38C2A, - 0x94000000, 0x3FEBF728, 0xF681FA5F, 0xBE2DFD64, - 0xA4000000, 0x3FEC0527, 0xDCE88BD2, 0x3E2E384D, - 0xBC000000, 0x3FEC132D, 0xFE46A893, 0xBE20F111, - 0xD4000000, 0x3FEC213A, 0xB189BFDA, 0x3E193DA1, - 0xF8000000, 0x3FEC2F4E, 0x0E39FB00, 0xBE20E3A1, - 0x24000000, 0x3FEC3D6A, 0x30F0FAC5, 0x3E1DB044, - 0x64000000, 0x3FEC4B8C, 0x97446B17, 0xBE2BC12C, - 0xB4000000, 0x3FEC59B5, 0x963F4150, 0xBE282696, - 0x18000000, 0x3FEC67E6, 0x3049824B, 0x3E224D26, - 0x98000000, 0x3FEC761D, 0x87F84C7D, 0x3E2C5BA5, - 0x38000000, 0x3FEC845C, 0xC4852339, 0xBDE1D14D, - 0xF8000000, 0x3FEC92A1, 0x5588D9E1, 0xBE1A451E, - 0xDC000000, 0x3FECA0EE, 0x68BFF457, 0xBE1D3B96, - 0xE8000000, 0x3FECAF42, 0x4DADF774, 0xBE18B670, - 0x20000000, 0x3FECBD9E, 0x7FB1FC01, 0xBE1A1548, - 0x88000000, 0x3FECCC00, 0x78FC5AF0, 0xBE273F2E, - 0x20000000, 0x3FECDA6A, 0xA6F4A841, 0x3E1D218F, - 0xF0000000, 0x3FECE8DA, 0x4D002CA0, 0x3E2E0BA9, - 0xFC000000, 0x3FECF752, 0x065EF979, 0x3E20F4BB, - 0x48000000, 0x3FED05D2, 0x11793B33, 0xBE2ED3D5, - 0xD0000000, 0x3FED1458, 0x913341B3, 0x3E115E3C, - 0xA0000000, 0x3FED22E6, 0xB3546109, 0x3DE97C02, - 0xB8000000, 0x3FED317B, 0x1BF898EF, 0x3E087540, - 0x1C000000, 0x3FED4018, 0x346F9641, 0x3E209430, - 0xD0000000, 0x3FED4EBB, 0x88F4B20B, 0x3E2B6DF4, - 0xDC000000, 0x3FED5D66, 0x0CB26035, 0xBE2EC68F, - 0x38000000, 0x3FED6C19, 0x1F44D9C3, 0x3E2CA2C8, - 0xF4000000, 0x3FED7AD2, 0x41704EE0, 0x3E10E6F4, - 0x0C000000, 0x3FED8994, 0x25F8F0E2, 0x3E2F9273, - 0x88000000, 0x3FED985C, 0x318798DE, 0x3E2D041A, - 0x6C000000, 0x3FEDA72C, 0x9349CF58, 0xBE005680, - 0xB8000000, 0x3FEDB603, 0xCF0C934D, 0xBE10F665, - 0x70000000, 0x3FEDC4E2, 0x19461C64, 0x3E166124, - 0x9C000000, 0x3FEDD3C8, 0x405624C8, 0xBE1B2ED6, - 0x3C000000, 0x3FEDE2B6, 0x62171501, 0xBE273A7F, - 0x54000000, 0x3FEDF1AB, 0xE36E1450, 0xBE26022B, - 0xE8000000, 0x3FEE00A7, 0x2E07AE15, 0xBE1C341E, - 0xFC000000, 0x3FEE0FAB, 0x18D0E701, 0xBDFC7EAE, - 0x94000000, 0x3FEE1EB7, 0xECD1FF8B, 0x3E06B34F, - 0xB4000000, 0x3FEE2DCA, 0x6813A649, 0x3E1394A3, - 0x60000000, 0x3FEE3CE5, 0xC1754D14, 0x3E045496, - 0x9C000000, 0x3FEE4C07, 0xF5C6087C, 0xBE180FFF, - 0x68000000, 0x3FEE5B31, 0xADD9A300, 0x3E22FBCD, - 0xCC000000, 0x3FEE6A62, 0xAF0289E5, 0x3E2EC7C7, - 0xCC000000, 0x3FEE799B, 0x3FB3EDD4, 0x3E242182, - 0x6C000000, 0x3FEE88DC, 0x04E39885, 0xBE201304, - 0xAC000000, 0x3FEE9824, 0xE6831D31, 0xBE20D352, - 0x90000000, 0x3FEEA774, 0x618DFCEB, 0x3E1E032D, - 0x20000000, 0x3FEEB6CC, 0xF9BB457E, 0x3E1956A3, - 0x60000000, 0x3FEEC62B, 0x50845DB2, 0xBE2A77E0, - 0x4C000000, 0x3FEED592, 0x47C43858, 0x3E2714F7, - 0xF0000000, 0x3FEEE500, 0x71813A66, 0x3E2EED96, - 0x50000000, 0x3FEEF477, 0x4FB4AA34, 0xBE04CDBE, - 0x6C000000, 0x3FEF03F5, 0x86EB4FF5, 0xBE2774A2, - 0x48000000, 0x3FEF137B, 0xAD43B2D2, 0xBE29DD95, - 0xE8000000, 0x3FEF2308, 0xAC16E506, 0xBE1CADB0, - 0x50000000, 0x3FEF329E, 0x58745C7B, 0x3E12AC33, - 0x88000000, 0x3FEF423B, 0x6EC2D854, 0xBE248118, - 0x8C000000, 0x3FEF51E0, 0x304ACE08, 0x3E26986B, - 0x68000000, 0x3FEF618D, 0x3B09354E, 0x3E126D81, - 0x1C000000, 0x3FEF7142, 0x773C23B3, 0x3DF06AAE, - 0xAC000000, 0x3FEF80FE, 0xD82EF423, 0xBDA105B6, - 0x1C000000, 0x3FEF90C3, 0x465499B8, 0x3DECDEED, - 0x70000000, 0x3FEFA08F, 0xE2EF03AE, 0x3E0AEFD4, - 0xAC000000, 0x3FEFB063, 0x0567B2E7, 0x3E1BD4C0, - 0xD4000000, 0x3FEFC03F, 0x4F97FCBF, 0x3E26AA22, - 0xF0000000, 0x3FEFD023, 0x5E4E88D1, 0xBE2F9420, - 0xFC000000, 0x3FEFE00F, 0x438E52E2, 0xBE254004, - 0x00000000, 0x3FEFF004, 0xEEE93EFC, 0xBE1552AA, - 0x00000000, 0x3FF00000, 0x00000000, 0x00000000, - 0x00000000, 0x3FF00802, 0x4449F507, 0x3E155800, - 0x04000000, 0x3FF01008, 0x882D75D6, 0xBE354AA8, - 0x08000000, 0x3FF01812, 0x3740DE56, 0x3E303610, - 0x14000000, 0x3FF02020, 0x5B0C3264, 0x3E360044, - 0x28000000, 0x3FF02832, 0x0197EDC3, 0x3E3C4C26, - 0x48000000, 0x3FF03048, 0x5046CA09, 0x3E0B103B, - 0x74000000, 0x3FF03862, 0xF9A62624, 0xBE34659C, - 0xAC000000, 0x3FF04080, 0xDD0A8F37, 0xBE254438, - 0xF4000000, 0x3FF048A2, 0x97AFB6E2, 0x3DF256C2, - 0x50000000, 0x3FF050C9, 0x923D25E1, 0xBE3085DF, - 0xC0000000, 0x3FF058F3, 0x5EA3B091, 0xBE3F0A93, - 0x44000000, 0x3FF06122, 0x5D63534C, 0xBE237DE4, - 0xE0000000, 0x3FF06954, 0xFF0C58B7, 0x3E301719, - 0x98000000, 0x3FF0718B, 0x9DF7B665, 0x3E2E8410, - 0x6C000000, 0x3FF079C6, 0x3B127222, 0x3E349CB9, - 0x60000000, 0x3FF08205, 0x98E0BD08, 0x3DF127EC, - 0x74000000, 0x3FF08A48, 0x706CC41F, 0xBE24C1B6, - 0xA8000000, 0x3FF0928F, 0x093044EF, 0x3E334EF9, - 0x04000000, 0x3FF09ADB, 0x56BC6C83, 0xBE1304B1, - 0x84000000, 0x3FF0A32A, 0xB028B984, 0x3E2D383E, - 0x30000000, 0x3FF0AB7E, 0x64E7A202, 0xBE315B1E, - 0x04000000, 0x3FF0B3D6, 0xC678291E, 0xBE0AC1E6, - 0x04000000, 0x3FF0BC32, 0x2F12FFE2, 0x3E3A0418, - 0x38000000, 0x3FF0C492, 0x43D6D302, 0xBE37D617, - 0x98000000, 0x3FF0CCF6, 0x152CC8FA, 0x3E2133F2, - 0x2C000000, 0x3FF0D55F, 0xE966E6B7, 0x3E3CE5D1, - 0xF8000000, 0x3FF0DDCB, 0x7BCACA64, 0x3E1ABF24, - 0xFC000000, 0x3FF0E63C, 0x2E8CDBED, 0xBE3854F6, - 0x38000000, 0x3FF0EEB2, 0x0C32156B, 0xBE3E6463, - 0xAC000000, 0x3FF0F72B, 0xB69772CC, 0x3E365671, - 0x64000000, 0x3FF0FFA9, 0x02B1201A, 0xBE383E9A, - 0x58000000, 0x3FF1082B, 0x50549CC0, 0xBE205962, - 0x90000000, 0x3FF110B1, 0xFFDACA72, 0xBE376BFE, - 0x08000000, 0x3FF1193C, 0x5C43E2F3, 0x3E3C1C59, - 0xCC000000, 0x3FF121CA, 0xF7067C8B, 0xBE26D374, - 0xD4000000, 0x3FF12A5D, 0x4DDAFE1D, 0x3E343CCC, - 0x28000000, 0x3FF132F5, 0x58EBCB7F, 0x3E3D5C16, - 0xCC000000, 0x3FF13B90, 0xB66E8B53, 0xBE2B5D12, - 0xBC000000, 0x3FF14430, 0xB326B482, 0xBE24E919, - 0xFC000000, 0x3FF14CD4, 0xC8AABD43, 0x3E23139A, - 0x90000000, 0x3FF1557D, 0x16743B55, 0x3E30DD8B, - 0x7C000000, 0x3FF15E2A, 0x35904C50, 0xBE31D701, - 0xBC000000, 0x3FF166DB, 0x30E0CA83, 0x3E107F42, - 0x58000000, 0x3FF16F91, 0xDA1B7123, 0xBE24F1F2, - 0x50000000, 0x3FF1784B, 0x0DC79E23, 0xBE3ACAF2, - 0xA4000000, 0x3FF18109, 0x609374EE, 0xBE23DC79, - 0x58000000, 0x3FF189CC, 0x3A40C3B7, 0x3E262CF7, - 0x70000000, 0x3FF19293, 0x5A24F463, 0x3E1D3833, - 0xEC000000, 0x3FF19B5E, 0x8A2E4440, 0x3E2BA9AD, - 0xD0000000, 0x3FF1A42E, 0x61C41828, 0x3DFD8CBC, - 0x1C000000, 0x3FF1AD03, 0x5A4DDF0D, 0x3E1A65E6, - 0xD4000000, 0x3FF1B5DB, 0x9F828DB5, 0xBDE2FDBB, - 0xF8000000, 0x3FF1BEB8, 0xB79B700F, 0x3E2F4EE8, - 0x8C000000, 0x3FF1C79A, 0x0DE1D7E8, 0x3E3ACC35, - 0x94000000, 0x3FF1D080, 0xFF9E20A0, 0x3E11729E, - 0x10000000, 0x3FF1D96B, 0x6C2EA70B, 0xBE300F18, - 0x00000000, 0x3FF1E25A, 0xCE425A35, 0x3DF32E02, - 0x68000000, 0x3FF1EB4D, 0x9A322D12, 0x3E3BDE56, - 0x50000000, 0x3FF1F445, 0xBA737AEF, 0xBE3C3F0D, - 0xB0000000, 0x3FF1FD41, 0xC896DB7A, 0xBE0A2DD0, - 0x90000000, 0x3FF20642, 0xF8B782F6, 0x3E2577B0, - 0xF4000000, 0x3FF20F47, 0x73607FC8, 0xBE2C6DA3, - 0xD8000000, 0x3FF21851, 0xC8917348, 0x3E35F7D1, - 0x44000000, 0x3FF22160, 0xCF9CED69, 0x3E3B6F5C, - 0x3C000000, 0x3FF22A73, 0x85775C2E, 0xBE39967E, - 0xB8000000, 0x3FF2338A, 0x497226D4, 0x3E3B3213, - 0xC4000000, 0x3FF23CA6, 0x30733227, 0x3E3E2710, - 0x60000000, 0x3FF245C7, 0xAF215A72, 0x3E33B8A9, - 0x90000000, 0x3FF24EEC, 0x1365623F, 0xBE3F96B2, - 0x50000000, 0x3FF25816, 0x27DEE202, 0xBE37324F, - 0xA4000000, 0x3FF26144, 0x4E484D87, 0x3E318CD5, - 0x94000000, 0x3FF26A77, 0xA94519E8, 0xBDE3FD37, - 0x1C000000, 0x3FF273AF, 0xEE788C29, 0x3E37132F, - 0x44000000, 0x3FF27CEB, 0xE842E5C0, 0xBE03DDB7, - 0x08000000, 0x3FF2862C, 0xE17C9693, 0x3E37A3FB, - 0x70000000, 0x3FF28F71, 0xAEB3D9A0, 0x3E24EABF, - 0x7C000000, 0x3FF298BB, 0x853B0733, 0xBE13C7B6, - 0x2C000000, 0x3FF2A20A, 0xC7B588B5, 0x3E2D2C80, - 0x88000000, 0x3FF2AB5D, 0x708F3912, 0xBE35B750, - 0x8C000000, 0x3FF2B4B5, 0xD5FD9130, 0xBE291A70, - 0x3C000000, 0x3FF2BE12, 0x0CCF9F73, 0x3E2EE937, - 0xA0000000, 0x3FF2C773, 0xD42CF76C, 0xBE3C3F0C, - 0xB0000000, 0x3FF2D0D9, 0x60763D61, 0x3E35DD54, - 0x78000000, 0x3FF2DA44, 0xE7D6AA3B, 0x3E26C418, - 0xF8000000, 0x3FF2E3B3, 0x6FB9B7A8, 0xBE3605C6, - 0x2C000000, 0x3FF2ED28, 0x24DCDDF5, 0x3E3763D4, - 0x20000000, 0x3FF2F6A1, 0xA8EC1AA8, 0xBE1A411E, - 0xD0000000, 0x3FF3001E, 0x1FE8546F, 0xBE23FCA1, - 0x40000000, 0x3FF309A1, 0x3AAEE75E, 0xBE29DF0D, - 0x70000000, 0x3FF31328, 0x3C2C4206, 0x3E36A5D6, - 0x68000000, 0x3FF31CB4, 0xB4C979B0, 0x3E1B7A3E, - 0x28000000, 0x3FF32645, 0x706CD593, 0xBE36157D, - 0xB0000000, 0x3FF32FDA, 0x8DA4C646, 0xBE39F357, - 0x04000000, 0x3FF33975, 0xD575FE6F, 0xBE3E64DE, - 0x24000000, 0x3FF34314, 0x44D008E0, 0x3E07F9E3, - 0x18000000, 0x3FF34CB8, 0x5A563E77, 0xBE2E94F9, - 0xDC000000, 0x3FF35660, 0x2475EF19, 0x3E314DC2, - 0x78000000, 0x3FF3600E, 0xA33AC606, 0x3E26D623, - 0xEC000000, 0x3FF369C0, 0xC05B3160, 0x3E170F86, - 0x3C000000, 0x3FF37378, 0xDB0AE31A, 0xBE38DDFE, - 0x64000000, 0x3FF37D34, 0x5706B570, 0x3E3662A9, - 0x70000000, 0x3FF386F5, 0x6770731E, 0xBE1625E4, - 0x5C000000, 0x3FF390BB, 0x62971091, 0xBE1678F1, - 0x2C000000, 0x3FF39A86, 0xD045CB0C, 0xBE061F7C, - 0xE4000000, 0x3FF3A455, 0x568B1CA2, 0xBE35CF51, - 0x84000000, 0x3FF3AE2A, 0x7FB61F58, 0xBE378185, - 0x0C000000, 0x3FF3B804, 0x4FA133AF, 0x3E3F77F4, - 0x88000000, 0x3FF3C1E2, 0xB00B73FE, 0xBE22F96A, - 0xF0000000, 0x3FF3CBC5, 0x1EB4CE2F, 0x3E351A64, - 0x50000000, 0x3FF3D5AE, 0xD3755639, 0xBE3D3516, - 0xA0000000, 0x3FF3DF9B, 0x43E8C10E, 0x3E1CD938, - 0xEC000000, 0x3FF3E98D, 0x455C8842, 0xBE35EE23, - 0x30000000, 0x3FF3F385, 0x96C9F4ED, 0xBE29B282, - 0x70000000, 0x3FF3FD81, 0x3168CC0B, 0x3E24A40E, - 0xB0000000, 0x3FF40782, 0x86C72839, 0x3E3784BC, - 0xF4000000, 0x3FF41188, 0x0785D847, 0x3E061F19, - 0x3C000000, 0x3FF41B94, 0xE654A9C9, 0xBE27AEF2, - 0x88000000, 0x3FF425A4, 0xF9E4C1BA, 0x3E33DFC3, - 0xE0000000, 0x3FF42FB9, 0x593D0C75, 0x3E2455A8, - 0x44000000, 0x3FF439D4, 0x238B65D1, 0xBDE41D4E, - 0xB4000000, 0x3FF443F3, 0x454CBECB, 0x3E3BE616, - 0x38000000, 0x3FF44E18, 0x931C5332, 0x3E207B3C, - 0xD0000000, 0x3FF45841, 0x7615DCC9, 0xBE330846, - 0x7C000000, 0x3FF46270, 0xE497F84E, 0xBE2A8A7B, - 0x40000000, 0x3FF46CA4, 0xF737AF78, 0x3E020B50, - 0x20000000, 0x3FF476DD, 0xE34AFBD3, 0x3E116B19, - 0x20000000, 0x3FF4811B, 0x841EDB52, 0xBE3E15A7, - 0x3C000000, 0x3FF48B5E, 0x33B3DE1E, 0x3E0F40C3, - 0x7C000000, 0x3FF495A6, 0x92EFEE02, 0x3E33607F, - 0xE4000000, 0x3FF49FF3, 0x14F7E168, 0xBE1A2DB5, - 0x70000000, 0x3FF4AA46, 0x3EBA1C94, 0x3E3F59EC, - 0x2C000000, 0x3FF4B49E, 0x8B9AE885, 0xBE31A539, - 0x10000000, 0x3FF4BEFB, 0xF13C8C95, 0x3E2FAC0B, - 0x28000000, 0x3FF4C95D, 0xF8B74775, 0xBE32C0BB, - 0x70000000, 0x3FF4D3C4, 0x4F9474BB, 0xBE2FC24E, - 0xEC000000, 0x3FF4DE30, 0x09DA911F, 0x3E008F30, - 0xA0000000, 0x3FF4E8A2, 0xBAF8D98B, 0x3E2994C1, - 0x90000000, 0x3FF4F319, 0x18648D0A, 0xBE17C38C, - 0xBC000000, 0x3FF4FD95, 0xF22F8698, 0xBE288852, - 0x28000000, 0x3FF50817, 0x30A2C153, 0xBE3C3EC3, - 0xD4000000, 0x3FF5129D, 0x968492AA, 0xBE27B606, - 0xC4000000, 0x3FF51D29, 0x61101629, 0x3E2E0396, - 0xFC000000, 0x3FF527BA, 0xDAEEAB38, 0x3E3E876F, - 0x80000000, 0x3FF53251, 0xED945B30, 0x3E29F59E, - 0x50000000, 0x3FF53CED, 0x0B4AE3F1, 0x3E12D7DA, - 0x70000000, 0x3FF5478E, 0x5FB946D0, 0xBE2FAFB8, - 0xE0000000, 0x3FF55234, 0x87D80C66, 0xBE18A8B3, - 0xA4000000, 0x3FF55CE0, 0x764CF85C, 0x3E28B18F, - 0xC0000000, 0x3FF56791, 0x2BDBC6F4, 0x3E326017, - 0x38000000, 0x3FF57248, 0x53D523FE, 0xBE229F98, - 0x0C000000, 0x3FF57D04, 0x4D9B8720, 0xBE3BDD08, - 0x3C000000, 0x3FF587C5, 0x09D8749E, 0x3E169EBC, - 0xD0000000, 0x3FF5928B, 0x339C2080, 0x3E190C8C, - 0xC8000000, 0x3FF59D57, 0xDE75E9CA, 0x3E310FA4, - 0x28000000, 0x3FF5A829, 0x1097F186, 0x3E313D18, - 0xF4000000, 0x3FF5B2FF, 0xD51C23F6, 0xBE2BDE04, - 0x28000000, 0x3FF5BDDC, 0x8938C386, 0x3E3EE67E, - 0xD0000000, 0x3FF5C8BD, 0x47DF6575, 0x3E0973B8, - 0xE8000000, 0x3FF5D3A4, 0x1DB97781, 0x3E24DF02, - 0x78000000, 0x3FF5DE91, 0xAC4AECDC, 0xBE3FBA00, - 0x7C000000, 0x3FF5E983, 0x939F646A, 0xBE2F37AF, - 0xFC000000, 0x3FF5F47A, 0x58A6EEE9, 0xBE396DEF, - 0xF8000000, 0x3FF5FF77, 0xE3613C7B, 0xBE315248, - 0x74000000, 0x3FF60A7A, 0xF1553706, 0xBE26A9E2, - 0x74000000, 0x3FF61582, 0xAE4D7CB6, 0xBE3B6BF6, - 0xF8000000, 0x3FF6208F, 0x9EB5EBA5, 0xBE35775B, - 0x04000000, 0x3FF62BA3, 0xC1E43506, 0xBE2A821B, - 0x9C000000, 0x3FF636BB, 0x7B2D8CF4, 0xBE367CDA, - 0xC0000000, 0x3FF641D9, 0x3E907A1D, 0xBE13218B, - 0x74000000, 0x3FF64CFD, 0x7BF5DFE4, 0x3E3454EE, - 0xC0000000, 0x3FF65826, 0x6366C5FD, 0xBE3E960F, - 0x9C000000, 0x3FF66355, 0x8B43C17E, 0x3E2E378F, - 0x14000000, 0x3FF66E8A, 0xA4306535, 0x3E244BE0, - 0x28000000, 0x3FF679C4, 0x8DF63D6E, 0xBDE4B6C1, - 0xD8000000, 0x3FF68503, 0xE6A239CF, 0x3E3BA122, - 0x2C000000, 0x3FF69049, 0x59FB5F30, 0x3E27F286, - 0x24000000, 0x3FF69B94, 0x971D3970, 0xBE044041 } }; - -static const union { - int4 i[2048]; - double x[1024]; -} fine = { .i = { - 0x00000000, 0x3FF00000, 0x00000000, 0x00000000, - 0x00000000, 0x3FF00004, 0x55556AAB, 0x3DA00001, - 0x00000000, 0x3FF00008, 0xAAAB0000, 0x3DC00002, - 0x00000000, 0x3FF0000C, 0x8000D800, 0x3DD20004, - 0x00000000, 0x3FF00010, 0x5556AAAB, 0x3DE00005, - 0x00000000, 0x3FF00014, 0x6AADEC01, 0x3DE9000A, - 0x00000000, 0x3FF00018, 0x00036001, 0x3DF20009, - 0x00000000, 0x3FF0001C, 0x4AB0EB58, 0x3DF8800E, - 0x00000000, 0x3FF00020, 0xAAB00002, 0x3E00000A, - 0x00000000, 0x3FF00024, 0x30088B04, 0x3E04400F, - 0x00000000, 0x3FF00028, 0xD5625AB1, 0x3E090014, - 0x00000000, 0x3FF0002C, 0xBABDBB0A, 0x3E0E401B, - 0x00000000, 0x3FF00030, 0x000D8008, 0x3E120012, - 0x00000000, 0x3FF00034, 0xE2BD42E1, 0x3E152016, - 0x00000000, 0x3FF00038, 0x956E5812, 0x3E18801C, - 0x00000000, 0x3FF0003C, 0x2820F599, 0x3E1C2023, - 0x00000000, 0x3FF00040, 0x556AAABC, 0x3E200015, - 0x00000000, 0x3FF00044, 0x96C5DAD7, 0x3E221019, - 0x00000000, 0x3FF00048, 0x60222C1F, 0x3E24401E, - 0x00000000, 0x3FF0004C, 0xB97FC193, 0x3E269023, - 0x00000000, 0x3FF00050, 0xAADEC034, 0x3E290029, - 0x00000000, 0x3FF00054, 0x3C3F4F02, 0x3E2B9030, - 0x00000000, 0x3FF00058, 0x75A196FF, 0x3E2E4037, - 0x00000000, 0x3FF0005C, 0xAF82E194, 0x3E30881F, - 0x00000000, 0x3FF00060, 0x00360041, 0x3E320024, - 0x00000000, 0x3FF00064, 0xB0EA3F05, 0x3E338828, - 0x00000000, 0x3FF00068, 0xC59FB661, 0x3E35202D, - 0x00000000, 0x3FF0006C, 0x42567FD5, 0x3E36C833, - 0x00000000, 0x3FF00070, 0x2B0EB5E1, 0x3E388039, - 0x00000000, 0x3FF00074, 0x83C87407, 0x3E3A483F, - 0x00000000, 0x3FF00078, 0x5083D6C6, 0x3E3C2046, - 0x00000000, 0x3FF0007C, 0x9540FB9E, 0x3E3E084D, - 0x04000000, 0x3FF00080, 0xA9FFFEEF, 0xBE3FFFAA, - 0x04000000, 0x3FF00084, 0x693EF962, 0xBE3DF7A2, - 0x04000000, 0x3FF00088, 0xA47BD339, 0xBE3BDF99, - 0x04000000, 0x3FF0008C, 0x57B66AF5, 0xBE39B790, - 0x04000000, 0x3FF00090, 0x7EEE9E14, 0xBE377F86, - 0x04000000, 0x3FF00094, 0x16244916, 0xBE35377C, - 0x04000000, 0x3FF00098, 0x1957477B, 0xBE32DF71, - 0x04000000, 0x3FF0009C, 0x848773C2, 0xBE307765, - 0x04000000, 0x3FF000A0, 0xA7694ED3, 0xBE2BFEB2, - 0x04000000, 0x3FF000A4, 0x05BD75E2, 0xBE26EE99, - 0x04000000, 0x3FF000A8, 0x1C0B0BB1, 0xBE21BE7E, - 0x04000000, 0x3FF000AC, 0xC4A37A79, 0xBE18DCC3, - 0x04000000, 0x3FF000B0, 0x4244D60F, 0xBE0BF911, - 0x04000000, 0x3FF000B4, 0xEC91D848, 0xBDE6E255, - 0x04000000, 0x3FF000B8, 0xEC1B8F0C, 0x3E0107EB, - 0x04000000, 0x3FF000BC, 0x89BE52AA, 0x3E142439, - 0x04000000, 0x3FF000C0, 0x06C01033, 0x3E200240, - 0x04000000, 0x3FF000C4, 0xC8A9F760, 0x3E261264, - 0x04000000, 0x3FF000C8, 0x129D3FDE, 0x3E2C428B, - 0x04000000, 0x3FF000CC, 0x764D2658, 0x3E314959, - 0x04000000, 0x3FF000D0, 0x2F50C16C, 0x3E34816E, - 0x04000000, 0x3FF000D4, 0xB859A4AB, 0x3E37C983, - 0x04000000, 0x3FF000D8, 0x15680499, 0x3E3B219A, - 0x04000000, 0x3FF000DC, 0x4A7C16B5, 0x3E3E89B1, - 0x08000000, 0x3FF000E0, 0xA469EE7E, 0xBE3DFE36, - 0x08000000, 0x3FF000E4, 0xB349D37F, 0xBE3A761D, - 0x08000000, 0x3FF000E8, 0xDE235FCD, 0xBE36DE03, - 0x08000000, 0x3FF000EC, 0x20F659E6, 0xBE3335E9, - 0x08000000, 0x3FF000F0, 0xEF850E8F, 0xBE2EFB9A, - 0x08000000, 0x3FF000F4, 0xBD0F58E2, 0xBE276B61, - 0x08000000, 0x3FF000F8, 0x45163381, 0xBE1F764D, - 0x08000000, 0x3FF000FC, 0x5FDF589A, 0xBE0FABA6, - 0x08000000, 0x3FF00100, 0xABBBBE94, 0x3D8555AA, - 0x08000000, 0x3FF00104, 0xDABB690B, 0x3E102B2C, - 0x08000000, 0x3FF00108, 0x7820FBA0, 0x3E2045D9, - 0x08000000, 0x3FF0010C, 0x92F54742, 0x3E28961E, - 0x08000000, 0x3FF00110, 0xE2ED8E39, 0x3E308332, - 0x08000000, 0x3FF00114, 0x8C698119, 0x3E34CB57, - 0x08000000, 0x3FF00118, 0x49EEC0C4, 0x3E39237D, - 0x08000000, 0x3FF0011C, 0x1F7D92BC, 0x3E3D8BA4, - 0x0C000000, 0x3FF00120, 0xEEE9C27D, 0xBE3DFC33, - 0x0C000000, 0x3FF00124, 0xDD46F763, 0xBE39740A, - 0x0C000000, 0x3FF00128, 0xA799C375, 0xBE34DBE0, - 0x0C000000, 0x3FF0012C, 0x49E1DD2F, 0xBE3033B5, - 0x0C000000, 0x3FF00130, 0x803DF41F, 0xBE26F711, - 0x0C000000, 0x3FF00134, 0x19433A4C, 0xBE1ACD6C, - 0x0C000000, 0x3FF00138, 0x8770E36F, 0xBDFDB2C1, - 0x0C000000, 0x3FF0013C, 0x6B74A43E, 0x3E086820, - 0x0C000000, 0x3FF00140, 0xDEC0D058, 0x3E200A6A, - 0x0C000000, 0x3FF00144, 0x22BD7872, 0x3E2A1AD0, - 0x0C000000, 0x3FF00148, 0xF769E132, 0x3E32259B, - 0x0C000000, 0x3FF0014C, 0x2582289A, 0x3E374DD1, - 0x0C000000, 0x3FF00150, 0x9FA7E4F4, 0x3E3C8607, - 0x10000000, 0x3FF00154, 0x9624963C, 0xBE3E31C0, - 0x10000000, 0x3FF00158, 0x77E2F472, 0xBE38D987, - 0x10000000, 0x3FF0015C, 0x0192E02C, 0xBE33714D, - 0x10000000, 0x3FF00160, 0x5E6805CB, 0xBE2BF222, - 0x10000000, 0x3FF00164, 0xF98C0A34, 0xBE20E1A7, - 0x10000000, 0x3FF00168, 0x32447238, 0xBE06C4AB, - 0x10000000, 0x3FF0016C, 0xC225D8C1, 0x3E067D54, - 0x10000000, 0x3FF00170, 0x05C4630F, 0x3E210FD8, - 0x10000000, 0x3FF00174, 0xBB206115, 0x3E2CA05D, - 0x10000000, 0x3FF00178, 0x2C4F14A6, 0x3E342873, - 0x10000000, 0x3FF0017C, 0xF31F3B5E, 0x3E3A10B8, - 0x14000000, 0x3FF00180, 0xC9FEFCC9, 0xBE3FF6FF, - 0x14000000, 0x3FF00184, 0x070B344A, 0xBE39EEB7, - 0x14000000, 0x3FF00188, 0xC0050AA2, 0xBE33D66C, - 0x14000000, 0x3FF0018C, 0xE1D83C97, 0xBE2B5C41, - 0x14000000, 0x3FF00190, 0x57003305, 0xBE1DD74E, - 0x14000000, 0x3FF00194, 0xA80727F1, 0xBDF2D84A, - 0x14000000, 0x3FF00198, 0x534C5401, 0x3E14AB2F, - 0x14000000, 0x3FF0019C, 0xD875DE83, 0x3E27263B, - 0x14000000, 0x3FF001A0, 0x9FB782CA, 0x3E320B71, - 0x14000000, 0x3FF001A4, 0xF349371F, 0x3E3893C6, - 0x14000000, 0x3FF001A8, 0xEAF074C6, 0x3E3F2C1D, - 0x18000000, 0x3FF001AC, 0x75525ABC, 0xBE3A2B89, - 0x18000000, 0x3FF001B0, 0x297ECCE2, 0xBE33732F, - 0x18000000, 0x3FF001B4, 0x5B28EC49, 0xBE2955A6, - 0x18000000, 0x3FF001B8, 0xF64BA7FD, 0xBE1749D5, - 0x18000000, 0x3FF001BC, 0xA8645141, 0x3DF15E9E, - 0x18000000, 0x3FF001C0, 0x1D6F0B37, 0x3E201C96, - 0x18000000, 0x3FF001C4, 0xE6028E39, 0x3E2E2D5B, - 0x18000000, 0x3FF001C8, 0x9B63FA1E, 0x3E362F12, - 0x18000000, 0x3FF001CC, 0x0BE01026, 0x3E3D5779, - 0x1C000000, 0x3FF001D0, 0xB78A0445, 0xBE3B701E, - 0x1C000000, 0x3FF001D4, 0xAAD9CF9D, 0xBE3427B4, - 0x1C000000, 0x3FF001D8, 0x941DBAB5, 0xBE299E91, - 0x1C000000, 0x3FF001DC, 0x44A2DFDD, 0xBE159B6C, - 0x1C000000, 0x3FF001E0, 0x1EC8B89C, 0x3E008CA4, - 0x1C000000, 0x3FF001E4, 0xF1EE0E9A, 0x3E23340B, - 0x1C000000, 0x3FF001E8, 0x5231913C, 0x3E313279, - 0x1C000000, 0x3FF001EC, 0x93892E68, 0x3E38DAEE, - 0x20000000, 0x3FF001F0, 0x3F01A6A8, 0xBE3F6C9A, - 0x20000000, 0x3FF001F4, 0x216E726C, 0xBE37A421, - 0x20000000, 0x3FF001F8, 0x1F7970B9, 0xBE2F974C, - 0x20000000, 0x3FF001FC, 0x17AFEBC8, 0xBE1F8CA4, - 0x20000000, 0x3FF00200, 0x04445B06, 0x3DB55600, - 0x20000000, 0x3FF00204, 0x0C290A26, 0x3E203BAE, - 0x20000000, 0x3FF00208, 0x104547BD, 0x3E30365A, - 0x20000000, 0x3FF0020C, 0x22970DE3, 0x3E385EDF, - 0x24000000, 0x3FF00210, 0xBEF5A5F4, 0xBE3F6899, - 0x24000000, 0x3FF00214, 0x90605040, 0xBE372010, - 0x24000000, 0x3FF00218, 0x9B50D8EE, 0xBE2D8F0A, - 0x24000000, 0x3FF0021C, 0xCB35D444, 0xBE197BDF, - 0x24000000, 0x3FF00220, 0x2188E3D5, 0x3E00CCBC, - 0x24000000, 0x3FF00224, 0x36A79F6A, 0x3E254452, - 0x24000000, 0x3FF00228, 0xD69B2D28, 0x3E333ABC, - 0x24000000, 0x3FF0022C, 0xBA07BE5B, 0x3E3BE352, - 0x28000000, 0x3FF00230, 0x3665F227, 0xBE3B6415, - 0x28000000, 0x3FF00234, 0xF6AD58D5, 0xBE329B7A, - 0x28000000, 0x3FF00238, 0x059BD24A, 0xBE2385BD, - 0x28000000, 0x3FF0023C, 0xD8E2B1B4, 0xBDEB47FA, - 0x28000000, 0x3FF00240, 0x22CF60F6, 0x3E203CC2, - 0x28000000, 0x3FF00244, 0x39BEF87F, 0x3E312704, - 0x28000000, 0x3FF00248, 0xA63F5309, 0x3E3A3FA9, - 0x2C000000, 0x3FF0024C, 0xA516AE5E, 0xBE3C97AE, - 0x2C000000, 0x3FF00250, 0xA442792A, 0xBE335F04, - 0x2C000000, 0x3FF00254, 0xA686F3A2, 0xBE242CB0, - 0x2C000000, 0x3FF00258, 0xC3237903, 0xBDE7B535, - 0x2C000000, 0x3FF0025C, 0x9E7A6CF7, 0x3E21560E, - 0x2C000000, 0x3FF00260, 0xA8C01385, 0x3E3223BA, - 0x2C000000, 0x3FF00264, 0x627012DF, 0x3E3BAC70, - 0x30000000, 0x3FF00268, 0x7FB232EA, 0xBE3ABAD7, - 0x30000000, 0x3FF0026C, 0xF9A6244B, 0xBE31121C, - 0x30000000, 0x3FF00270, 0x1DAC9AE4, 0xBE1D6580, - 0x30000000, 0x3FF00274, 0xD7FB0AC3, 0x3E037AFA, - 0x30000000, 0x3FF00278, 0x633420EB, 0x3E289042, - 0x30000000, 0x3FF0027C, 0x8065842A, 0x3E3630E5, - 0x34000000, 0x3FF00280, 0xB49DA4FF, 0xBE3FD653, - 0x34000000, 0x3FF00284, 0x696ECB76, 0xBE35CD8A, - 0x34000000, 0x3FF00288, 0x341A9D63, 0xBE27697D, - 0x34000000, 0x3FF0028C, 0x2788D238, 0xBDF8BF04, - 0x34000000, 0x3FF00290, 0x42A03782, 0x3E2159C1, - 0x34000000, 0x3FF00294, 0x154D4F89, 0x3E32F5B4, - 0x34000000, 0x3FF00298, 0x1D7FB2C1, 0x3E3D4E8A, - 0x38000000, 0x3FF0029C, 0x42181508, 0xBE38489D, - 0x38000000, 0x3FF002A0, 0x0AF2C28C, 0xBE2B9F84, - 0x38000000, 0x3FF002A4, 0x451C5357, 0xBE0A3721, - 0x38000000, 0x3FF002A8, 0x61A8605E, 0x3E1D47F1, - 0x38000000, 0x3FF002AC, 0x81B02FCF, 0x3E31FADF, - 0x38000000, 0x3FF002B0, 0x572F674A, 0x3E3CB3C5, - 0x3C000000, 0x3FF002B4, 0x231795EA, 0xBE388352, - 0x3C000000, 0x3FF002B8, 0xD248367A, 0xBE2B54CD, - 0x3C000000, 0x3FF002BC, 0xB7ABD90D, 0xBE060BC7, - 0x3C000000, 0x3FF002C0, 0x6EE9F1EF, 0x3E206EEF, - 0x3C000000, 0x3FF002C4, 0x261BF09E, 0x3E33406B, - 0x3C000000, 0x3FF002C8, 0x59001C60, 0x3E3E5961, - 0x40000000, 0x3FF002CC, 0xABDDD232, 0xBE367DA5, - 0x40000000, 0x3FF002D0, 0xC8FA5113, 0xBE268953, - 0x40000000, 0x3FF002D4, 0x8B33A701, 0x3D9152CC, - 0x40000000, 0x3FF002D8, 0x3E058570, 0x3E26BAAC, - 0x40000000, 0x3FF002DC, 0x63236E71, 0x3E36C65A, - 0x44000000, 0x3FF002E0, 0x7C7A795C, 0xBE3DC09E, - 0x44000000, 0x3FF002E4, 0x7BD63D1D, 0xBE323794, - 0x44000000, 0x3FF002E8, 0x5BBC9105, 0xBE1A7A1E, - 0x44000000, 0x3FF002EC, 0xD8EE2B1B, 0x3E142A20, - 0x44000000, 0x3FF002F0, 0xEFAA8A8D, 0x3E30C39A, - 0x44000000, 0x3FF002F4, 0x995E96A2, 0x3E3C8CB0, - 0x48000000, 0x3FF002F8, 0xC8A79469, 0xBE379A36, - 0x48000000, 0x3FF002FC, 0x64CE7203, 0xBE276236, - 0x48000000, 0x3FF00300, 0x0819DA68, 0x3DD200D8, - 0x48000000, 0x3FF00304, 0xE5E018D4, 0x3E28A249, - 0x48000000, 0x3FF00308, 0x8A087692, 0x3E386A49, - 0x4C000000, 0x3FF0030C, 0xD695988B, 0xBE3B6C8E, - 0x4C000000, 0x3FF00310, 0x55D2BCBA, 0xBE2E66C8, - 0x4C000000, 0x3FF00314, 0x7790BA7A, 0xBE0751B3, - 0x4C000000, 0x3FF00318, 0xC2A20261, 0x3E22DDF4, - 0x4C000000, 0x3FF0031C, 0x49E0B0B5, 0x3E35D82E, - 0x50000000, 0x3FF00320, 0xB142422E, 0xBE3DAE9A, - 0x50000000, 0x3FF00324, 0x8C170FE6, 0xBE312560, - 0x50000000, 0x3FF00328, 0x0A73BF77, 0xBE12308D, - 0x50000000, 0x3FF0032C, 0x5E59CEFA, 0x3E203A3A, - 0x50000000, 0x3FF00330, 0xCD4740BF, 0x3E34D660, - 0x54000000, 0x3FF00334, 0x644D1883, 0xBE3E6058, - 0x54000000, 0x3FF00338, 0x618F57B6, 0xBE31870E, - 0x54000000, 0x3FF0033C, 0x99FABD0F, 0xBE127704, - 0x54000000, 0x3FF00340, 0xA1CB5ECF, 0x3E20B71E, - 0x54000000, 0x3FF00344, 0x089E93E1, 0x3E3564E3, - 0x58000000, 0x3FF00348, 0xFB533142, 0xBE3D81C5, - 0x58000000, 0x3FF0034C, 0xB6EECE6C, 0xBE30586B, - 0x58000000, 0x3FF00350, 0x319B883E, 0xBE08F871, - 0x58000000, 0x3FF00354, 0x75BF7503, 0x3E2454A5, - 0x58000000, 0x3FF00358, 0xF04B88C5, 0x3E3783B6, - 0x5C000000, 0x3FF0035C, 0x81EF30A7, 0xBE3B12E1, - 0x5C000000, 0x3FF00360, 0x2F9F3657, 0xBE2B32ED, - 0x5C000000, 0x3FF00364, 0x54DF31BC, 0xBDB0084D, - 0x5C000000, 0x3FF00368, 0xC303B7B9, 0x3E2B12D2, - 0x5C000000, 0x3FF0036C, 0x78B56F97, 0x3E3B32DE, - 0x60000000, 0x3FF00370, 0x03B9496C, 0xBE3713A9, - 0x60000000, 0x3FF00374, 0x1F92E726, 0xBE22945A, - 0x60000000, 0x3FF00378, 0x621736DF, 0x3E123D49, - 0x60000000, 0x3FF0037C, 0x3935580D, 0x3E3278D5, - 0x64000000, 0x3FF00380, 0x69B9F5FB, 0xBE3F8DA4, - 0x64000000, 0x3FF00384, 0x8C473CC8, 0xBE31841A, - 0x64000000, 0x3FF00388, 0x538CDE07, 0xBE0B5469, - 0x64000000, 0x3FF0038C, 0x7F8F9D65, 0x3E257E07, - 0x64000000, 0x3FF00390, 0x3665E52B, 0x3E38F898, - 0x68000000, 0x3FF00394, 0xC29674BD, 0xBE38BDCF, - 0x68000000, 0x3FF00398, 0x4E58B4D9, 0xBE24C868, - 0x68000000, 0x3FF0039C, 0x329466D7, 0x3E1015AC, - 0x68000000, 0x3FF003A0, 0xDCDECE44, 0x3E327F0D, - 0x6C000000, 0x3FF003A4, 0xB27E5528, 0xBE3EF74B, - 0x6C000000, 0x3FF003A8, 0x9D7167F2, 0xBE305DA1, - 0x6C000000, 0x3FF003AC, 0xFF980820, 0xBDFB3F3D, - 0x6C000000, 0x3FF003B0, 0x13D49789, 0x3E2A0B7B, - 0x6C000000, 0x3FF003B4, 0xA43AE87C, 0x3E3BCF72, - 0x70000000, 0x3FF003B8, 0x8D06BDC0, 0xBE3556D4, - 0x70000000, 0x3FF003BC, 0x1766E54D, 0xBE19B460, - 0x70000000, 0x3FF003C0, 0x7B85C8BA, 0x3E211950, - 0x70000000, 0x3FF003C4, 0x41D00AED, 0x3E37966C, - 0x74000000, 0x3FF003C8, 0xF5B15507, 0xBE394FCB, - 0x74000000, 0x3FF003CC, 0xC98093C4, 0xBE244C00, - 0x74000000, 0x3FF003D0, 0xE2907BDF, 0x3E144F3B, - 0x74000000, 0x3FF003D4, 0x267CD924, 0x3E345DA2, - 0x78000000, 0x3FF003D8, 0xD73526C0, 0xBE3C4886, - 0x78000000, 0x3FF003DC, 0xF8E1D62E, 0xBE29BD57, - 0x78000000, 0x3FF003E0, 0xD65415E1, 0x3E04D995, - 0x78000000, 0x3FF003E4, 0x527E1A58, 0x3E322515, - 0x7C000000, 0x3FF003E8, 0x31552BA5, 0xBE3E4104, - 0x7C000000, 0x3FF003EC, 0x995CAB3B, 0xBE2D2E33, - 0x7C000000, 0x3FF003F0, 0x473970DC, 0x3DF22D48, - 0x7C000000, 0x3FF003F4, 0xC61195FC, 0x3E30ECC6, - 0x80000000, 0x3FF003F8, 0x03D35C34, 0xBE3F3943, - 0x80000000, 0x3FF003FC, 0xAA7483C7, 0xBE2E9E91, - 0x80000000, 0x3FF00400, 0xBBBC71CE, 0x3DE556AA, - 0x80000000, 0x3FF00404, 0x817613C1, 0x3E30B4B7, - 0x84000000, 0x3FF00408, 0x4E70B0AC, 0xBE3F3142, - 0x84000000, 0x3FF0040C, 0x2BAAD02F, 0xBE2E0E70, - 0x84000000, 0x3FF00410, 0xF48F01F2, 0x3DF32D62, - 0x84000000, 0x3FF00414, 0x84EB5B98, 0x3E317CE8, - 0x88000000, 0x3FF00418, 0x10ED210B, 0xBE3E2901, - 0x88000000, 0x3FF0041C, 0x1C7F0051, 0xBE2B7DCD, - 0x88000000, 0x3FF00420, 0x87AA2706, 0x3E05D9C0, - 0x88000000, 0x3FF00424, 0xD0B235B3, 0x3E33455A, - 0x8C000000, 0x3FF00428, 0x4B07A510, 0xBE3C207E, - 0x8C000000, 0x3FF0042C, 0x7C6E838B, 0xBE26ECA6, - 0x8C000000, 0x3FF00430, 0xEC91A8D5, 0x3E150F6F, - 0x8C000000, 0x3FF00434, 0x650C6A83, 0x3E360E0F, - 0x90000000, 0x3FF00438, 0xFC7E3439, 0xBE3917B8, - 0x90000000, 0x3FF0043C, 0x4AF4C8B6, 0xBE205AFA, - 0x90000000, 0x3FF00440, 0xDC31D181, 0x3E219985, - 0x90000000, 0x3FF00444, 0x423CC2BE, 0x3E39D707, - 0x94000000, 0x3FF00448, 0x250DC5BF, 0xBE350EB0, - 0x94000000, 0x3FF0044C, 0x1E2CF893, 0xBE0F231A, - 0x94000000, 0x3FF00450, 0xD42C92D4, 0x3E2AABDB, - 0x94000000, 0x3FF00454, 0x6887075B, 0x3E3EA043, - 0x98000000, 0x3FF00458, 0xC472509B, 0xBE300562, - 0x98000000, 0x3FF0045C, 0x72B572E0, 0x3DF64FB6, - 0x98000000, 0x3FF00460, 0xEF61155C, 0x3E32DF5D, - 0x9C000000, 0x3FF00464, 0x27CFFE6A, 0xBE3B963B, - 0x9C000000, 0x3FF00468, 0xB4CD96FE, 0xBE23F79F, - 0x9C000000, 0x3FF0046C, 0x6E771F13, 0x3E1EBA7F, - 0x9C000000, 0x3FF00470, 0xFE3ED608, 0x3E396913, - 0xA0000000, 0x3FF00474, 0x6E82850F, 0xBE34CC73, - 0xA0000000, 0x3FF00478, 0x352966B7, 0xBE078FB3, - 0xA0000000, 0x3FF0047C, 0x33AFF8AE, 0x3E2DF116, - 0xA4000000, 0x3FF00480, 0xE909EADD, 0xBE3F0CEE, - 0xA4000000, 0x3FF00484, 0xD6938597, 0xBE2A04C8, - 0xA4000000, 0x3FF00488, 0x5C6654D8, 0x3E1460AA, - 0xA4000000, 0x3FF0048C, 0x22213ECF, 0x3E3742BE, - 0xA8000000, 0x3FF00490, 0xC631A356, 0xBE3682A9, - 0xA8000000, 0x3FF00494, 0x7777B644, 0xBE10E034, - 0xA8000000, 0x3FF00498, 0x3E3B0991, 0x3E2C4528, - 0xAC000000, 0x3FF0049C, 0x0B3E269F, 0xBE3F72C6, - 0xAC000000, 0x3FF004A0, 0x31DF923B, 0xBE29F037, - 0xAC000000, 0x3FF004A4, 0xE82713DE, 0x3E164A4D, - 0xAC000000, 0x3FF004A8, 0x31AFAC4B, 0x3E382D47, - 0xB0000000, 0x3FF004AC, 0x6DFCE978, 0xBE352800, - 0xB0000000, 0x3FF004B0, 0x07D68D27, 0xBE036A1B, - 0xB0000000, 0x3FF004B4, 0x5CB71F6F, 0x3E305D7E, - 0xB4000000, 0x3FF004B8, 0x30E5E990, 0xBE3CC7BB, - 0xB4000000, 0x3FF004BC, 0x0BA17DEA, 0xBE23B9E0, - 0xB4000000, 0x3FF004C0, 0xC3EF9BD8, 0x3E223BBF, - 0xB4000000, 0x3FF004C4, 0x8A74ECC0, 0x3E3C28B4, - 0xB8000000, 0x3FF004C8, 0x085831CA, 0xBE30BC72, - 0xB8000000, 0x3FF004CC, 0x6C8D1FC8, 0x3E037361, - 0xB8000000, 0x3FF004D0, 0x3033A0B8, 0x3E35A94F, - 0xBC000000, 0x3FF004D4, 0xFC7107DE, 0xBE370BC8, - 0xBC000000, 0x3FF004D8, 0xA2D908DA, 0xBE0D86E2, - 0xBC000000, 0x3FF004DC, 0x58ED155E, 0x3E2F742A, - 0xC0000000, 0x3FF004E0, 0x75FACDD0, 0xBE3CCAF4, - 0xC0000000, 0x3FF004E4, 0x6F5BE5D3, 0xBE227FF2, - 0xC0000000, 0x3FF004E8, 0xD6BCA827, 0x3E24B60D, - 0xC0000000, 0x3FF004EC, 0xF72B40D6, 0x3E3E060B, - 0xC4000000, 0x3FF004F0, 0x208BE3E3, 0xBE2C7DD4, - 0xC4000000, 0x3FF004F4, 0x642FDDB8, 0x3E163093, - 0xC4000000, 0x3FF004F8, 0xB72239A5, 0x3E396738, - 0xC8000000, 0x3FF004FC, 0x7201ED9B, 0xBE32ADAE, - 0xC8000000, 0x3FF00500, 0x1A0C05F3, 0x3DF4D6F6, - 0xC8000000, 0x3FF00504, 0x360B8346, 0x3E355892, - 0xCC000000, 0x3FF00508, 0xF0C06435, 0xBE368C45, - 0xCC000000, 0x3FF0050C, 0x760DA2F6, 0xBE0308C8, - 0xCC000000, 0x3FF00510, 0xE008D57B, 0x3E31DA18, - 0xD0000000, 0x3FF00514, 0x205F82F4, 0xBE39DAB0, - 0xD0000000, 0x3FF00518, 0x2FE5E3E3, 0xBE15FDD0, - 0xD0000000, 0x3FF0051C, 0x42787241, 0x3E2DD79A, - 0xD4000000, 0x3FF00520, 0x94BD25F4, 0xBE3C98EC, - 0xD4000000, 0x3FF00524, 0x53C89D03, 0xBE201B42, - 0xD4000000, 0x3FF00528, 0xCB901057, 0x3E291B5E, - 0xD8000000, 0x3FF0052C, 0xE1B6D837, 0xBE3EC6FA, - 0xD8000000, 0x3FF00530, 0xF8BF49E7, 0xBE24173F, - 0xD8000000, 0x3FF00534, 0x339DDB57, 0x3E257F80, - 0xD8000000, 0x3FF00538, 0x64D62C5C, 0x3E3F9B25, - 0xDC000000, 0x3FF0053C, 0x2E913659, 0xBE26F2E0, - 0xDC000000, 0x3FF00540, 0x52E7CB93, 0x3E2303FF, - 0xDC000000, 0x3FF00544, 0xAB0CFEF5, 0x3E3E8D74, - 0xE0000000, 0x3FF00548, 0x1CF7FDE6, 0xBE28AE22, - 0xE0000000, 0x3FF0054C, 0x01B47B93, 0x3E21A8DD, - 0xE0000000, 0x3FF00550, 0x5D1107E2, 0x3E3E0FF3, - 0xE4000000, 0x3FF00554, 0xEBAC99E1, 0xBE294904, - 0xE4000000, 0x3FF00558, 0x184B2814, 0x3E216E1A, - 0xE4000000, 0x3FF0055C, 0xE706008B, 0x3E3E22A1, - 0xE8000000, 0x3FF00560, 0xC267616A, 0xBE28C387, - 0xE8000000, 0x3FF00564, 0x6EF3B008, 0x3E2253B7, - 0xE8000000, 0x3FF00568, 0xB50FF371, 0x3E3EC580, - 0xEC000000, 0x3FF0056C, 0xC8E0096B, 0xBE271DA9, - 0xEC000000, 0x3FF00570, 0xDDF69498, 0x3E2459B5, - 0xEC000000, 0x3FF00574, 0x33533C31, 0x3E3FF890, - 0xF0000000, 0x3FF00578, 0x26CDA497, 0xBE24576A, - 0xF0000000, 0x3FF0057C, 0x3D9CF923, 0x3E278016, - 0xF4000000, 0x3FF00580, 0x320B787B, 0xBE3E442F, - 0xF4000000, 0x3FF00584, 0x03E6A36B, 0xBE2070C8, - 0xF4000000, 0x3FF00588, 0x6630A33F, 0x3E2BC6D9, - 0xF8000000, 0x3FF0058C, 0x0EE72CBF, 0xBE3BF0BD, - 0xF8000000, 0x3FF00590, 0x0FC1A853, 0xBE16D385, - 0xF8000000, 0x3FF00594, 0x17FDFD5D, 0x3E309700, - 0xFC000000, 0x3FF00598, 0xF71A91AC, 0xBE390D18, - 0xFC000000, 0x3FF0059C, 0x69C58B86, 0xBE050963, - 0xFC000000, 0x3FF005A0, 0xB9A504CD, 0x3E33DAC5, - 0x00000000, 0x3FF005A5, 0x7E800734, 0xBE359942, - 0x00000000, 0x3FF005A9, 0xE59934CD, 0x3DF02BAE, - 0x00000000, 0x3FF005AD, 0x04333E0E, 0x3E37AEBE, - 0x04000000, 0x3FF005B1, 0x38F19C2F, 0xBE319539, - 0x04000000, 0x3FF005B5, 0xEBB1C157, 0x3E14DB54, - 0x04000000, 0x3FF005B9, 0x63CED05D, 0x3E3C12E9, - 0x08000000, 0x3FF005BD, 0x74921CAF, 0xBE2A01F9, - 0x08000000, 0x3FF005C1, 0xC94C85F2, 0x3E23F645, - 0x0C000000, 0x3FF005C5, 0xBB61CBEE, 0xBE3EF8B7, - 0x0C000000, 0x3FF005C9, 0x597F2931, 0xBE1F7232, - 0x0C000000, 0x3FF005CD, 0xAF5B7345, 0x3E2E9F48, - 0x10000000, 0x3FF005D1, 0xED37CD5F, 0xBE397424, - 0x10000000, 0x3FF005D5, 0x08775C6B, 0xBE013F43, - 0x10000000, 0x3FF005D9, 0x0029D3DB, 0x3E35345A, - 0x14000000, 0x3FF005DD, 0xC58C1962, 0xBE335F5D, - 0x14000000, 0x3FF005E1, 0x47430E04, 0x3E1073C1, - 0x14000000, 0x3FF005E5, 0x4A41E248, 0x3E3BA944, - 0x18000000, 0x3FF005E9, 0xB06E888E, 0xBE2974C3, - 0x18000000, 0x3FF005ED, 0xDCCD9333, 0x3E25E3FB, - 0x1C000000, 0x3FF005F1, 0x5DE27951, 0xBE3D519C, - 0x1C000000, 0x3FF005F5, 0xE4464502, 0xBE1614C2, - 0x1C000000, 0x3FF005F9, 0xE0DAFE93, 0x3E325740, - 0x20000000, 0x3FF005FD, 0x8C1B4C10, 0xBE35BC47, - 0x20000000, 0x3FF00601, 0x20686CE9, 0x3E0201B0, - 0x20000000, 0x3FF00605, 0x95558B63, 0x3E3A4CB9, - 0x24000000, 0x3FF00609, 0xA880A3EB, 0xBE2B2D79, - 0x24000000, 0x3FF0060D, 0x9699EEB7, 0x3E252BA5, - 0x28000000, 0x3FF00611, 0x880115E1, 0xBE3D2D97, - 0x28000000, 0x3FF00615, 0x28A3D788, 0xBE1383EF, - 0x28000000, 0x3FF00619, 0x08D6DC23, 0x3E337BA6, - 0x2C000000, 0x3FF0061D, 0x0B001A08, 0xBE3417B2, - 0x2C000000, 0x3FF00621, 0xF94EB99A, 0x3E1193EF, - 0x2C000000, 0x3FF00625, 0x28D3BD3B, 0x3E3CF1B0, - 0x30000000, 0x3FF00629, 0x0EFCC982, 0xBE24E32B, - 0x30000000, 0x3FF0062D, 0xE2BDA47F, 0x3E2C7655, - 0x34000000, 0x3FF00631, 0x689312F8, 0xBE39080E, - 0x34000000, 0x3FF00635, 0xA9444DB4, 0xBDCDA0C8, - 0x34000000, 0x3FF00639, 0x7B21FE23, 0x3E38A191, - 0x38000000, 0x3FF0063D, 0x7E67E1E1, 0xBE2CE32A, - 0x38000000, 0x3FF00641, 0x875A71F0, 0x3E251694, - 0x3C000000, 0x3FF00645, 0xF838F455, 0xBE3C67CF, - 0x3C000000, 0x3FF00649, 0x77274052, 0xBE0A571F, - 0x3C000000, 0x3FF0064D, 0x63AAEFA8, 0x3E35E20E, - 0x40000000, 0x3FF00651, 0xFC87DA70, 0xBE30E0F8, - 0x40000000, 0x3FF00655, 0xE9089AFD, 0x3E20D80B, - 0x44000000, 0x3FF00659, 0xC52F03BD, 0xBE3E36F4, - 0x44000000, 0x3FF0065D, 0x9680E14E, 0xBE1327A4, - 0x44000000, 0x3FF00661, 0xD732468D, 0x3E34B328, - 0x48000000, 0x3FF00665, 0xCAB5EF4A, 0xBE31BFBE, - 0x48000000, 0x3FF00669, 0xE2A2FBE1, 0x3E1F757F, - 0x4C000000, 0x3FF0066D, 0xDAB014DA, 0xBE3E757A, - 0x4C000000, 0x3FF00671, 0x02FB3FBB, 0xBE12E13D, - 0x4C000000, 0x3FF00675, 0xCA7E298D, 0x3E3514E2, - 0x50000000, 0x3FF00679, 0xB4F78B94, 0xBE310DE4, - 0x50000000, 0x3FF0067D, 0x89C35D05, 0x3E21BEB4, - 0x54000000, 0x3FF00681, 0x43F4895C, 0xBE3D2360, - 0x54000000, 0x3FF00685, 0x5BC49ADF, 0xBE08B0A2, - 0x54000000, 0x3FF00689, 0x32573159, 0x3E37073E, - 0x58000000, 0x3FF0068D, 0x8D0732D2, 0xBE2D96D1, - 0x58000000, 0x3FF00691, 0x9BF15E67, 0x3E26E3ED, - 0x5C000000, 0x3FF00695, 0x0C3250FB, 0xBE3A40A3, - 0x5C000000, 0x3FF00699, 0xFD0AE214, 0x3DBCC9AE, - 0x5C000000, 0x3FF0069D, 0x038868A1, 0x3E3A8A3D, - 0x60000000, 0x3FF006A1, 0x151D21CE, 0xBE25F092, - 0x60000000, 0x3FF006A5, 0x11738C43, 0x3E2F2A6F, - 0x64000000, 0x3FF006A9, 0x3E9CE96D, 0xBE35CD41, - 0x64000000, 0x3FF006AD, 0x8DBC2918, 0x3E138132, - 0x64000000, 0x3FF006B1, 0x32DF4C13, 0x3E3F9DE1, - 0x68000000, 0x3FF006B5, 0x3129E0B2, 0xBE16520E, - 0x68000000, 0x3FF006B9, 0x69F36A61, 0x3E35491E, - 0x6C000000, 0x3FF006BD, 0xCCCABCD4, 0xBE2F9271, - 0x6C000000, 0x3FF006C1, 0x0D59B899, 0x3E2668ED, - 0x70000000, 0x3FF006C5, 0x4AD435A0, 0xBE39BDD3, - 0x70000000, 0x3FF006C9, 0x9191CABB, 0x3DF5FE9A, - 0x70000000, 0x3FF006CD, 0x6676850B, 0x3E3C8DAD, - 0x74000000, 0x3FF006D1, 0x1D74934A, 0xBE206910, - 0x74000000, 0x3FF006D5, 0x4D886478, 0x3E331949, - 0x78000000, 0x3FF006D9, 0x80BFBBC2, 0xBE3188DE, - 0x78000000, 0x3FF006DD, 0x14DE1719, 0x3E23CA01, - 0x7C000000, 0x3FF006E1, 0x8CE98EC0, 0xBE3A9D19, - 0x7C000000, 0x3FF006E5, 0xA705A6E7, 0x3DEE1A67, - 0x7C000000, 0x3FF006E9, 0xECD5F851, 0x3E3C8EC6, - 0x80000000, 0x3FF006ED, 0xE839CE4D, 0xBE1F0CF9, - 0x80000000, 0x3FF006F1, 0x0C8CA46A, 0x3E33FAC3, - 0x84000000, 0x3FF006F5, 0x7B5703D8, 0xBE303734, - 0x84000000, 0x3FF006F9, 0xE490A112, 0x3E274DB5, - 0x88000000, 0x3FF006FD, 0xA693A093, 0xBE386B0E, - 0x88000000, 0x3FF00701, 0xF0B73DAA, 0x3E0C9875, - 0x88000000, 0x3FF00705, 0x2449A944, 0x3E3FA133, - 0x8C000000, 0x3FF00709, 0xBFE66C14, 0xBE110285, - 0x8C000000, 0x3FF0070D, 0x054EDCBD, 0x3E37ED91, - 0x90000000, 0x3FF00711, 0xEFB65924, 0xBE27A86A, - 0x90000000, 0x3FF00715, 0x1C8A0CF1, 0x3E307A0B, - 0x94000000, 0x3FF00719, 0x397FB1D6, 0xBE3327AD, - 0x94000000, 0x3FF0071D, 0x1412B9FB, 0x3E228D43, - 0x98000000, 0x3FF00721, 0x94D8FFB0, 0xBE3A3B08, - 0x98000000, 0x3FF00725, 0x6ED80040, 0x3E029AA3, - 0x98000000, 0x3FF00729, 0x9627250A, 0x3E3EF1B8, - 0x9C000000, 0x3FF0072D, 0x5FCB1B09, 0xBE117F70, - 0x9C000000, 0x3FF00731, 0x678F0789, 0x3E385E96, - 0xA0000000, 0x3FF00735, 0xCEA3485B, 0xBE25A5DF, - 0xA0000000, 0x3FF00739, 0xFF6D0303, 0x3E320B90, - 0xA4000000, 0x3FF0073D, 0xE03334FF, 0xBE3105E6, - 0xA4000000, 0x3FF00741, 0xFB9F056D, 0x3E27F150, - 0xA8000000, 0x3FF00745, 0xE28905F4, 0xBE36F8C0, - 0xA8000000, 0x3FF00749, 0x0B1407AA, 0x3E189774, - 0xAC000000, 0x3FF0074D, 0xCE4493C4, 0xBE3CAB7D, - 0xAC000000, 0x3FF00751, 0xCB817D78, 0x3DE265D5, - 0xAC000000, 0x3FF00755, 0x7CA8B4E3, 0x3E3DE1E2, - 0xB0000000, 0x3FF00759, 0x7D730FC6, 0xBE12FD89, - 0xB0000000, 0x3FF0075D, 0x1E4D7759, 0x3E38AF60, - 0xB4000000, 0x3FF00761, 0x0CAD84A2, 0xBE23A3AC, - 0xB4000000, 0x3FF00765, 0x36B866FD, 0x3E33BCFB, - 0xB8000000, 0x3FF00769, 0x4D0667A1, 0xBE2D4858, - 0xB8000000, 0x3FF0076D, 0xCBF08E6A, 0x3E2E1567, - 0xBC000000, 0x3FF00771, 0x9FD34D05, 0xBE333664, - 0xBC000000, 0x3FF00775, 0x9837D6E0, 0x3E253114, - 0xC0000000, 0x3FF00779, 0x5238327D, 0xBE37887F, - 0xC0000000, 0x3FF0077D, 0x24C8DC90, 0x3E1999FA, - 0xC4000000, 0x3FF00781, 0x1DA2F8BE, 0xBE3B9A7C, - 0xC4000000, 0x3FF00785, 0xEA50EE6A, 0x3E03A485, - 0xC8000000, 0x3FF00789, 0xE204A449, 0xBE3F6C5A, - 0xC8000000, 0x3FF0078D, 0x78D5D0F3, 0xBDF3D3EF, - 0xC8000000, 0x3FF00791, 0x80B1D66C, 0x3E3D01E4, - 0xCC000000, 0x3FF00795, 0xD5149796, 0xBE12BBC1, - 0xCC000000, 0x3FF00799, 0x2A8F92F0, 0x3E39B042, - 0xD0000000, 0x3FF0079D, 0x6F386487, 0xBE1F820E, - 0xD0000000, 0x3FF007A1, 0x3BA3BCDA, 0x3E369EBE, - 0xD4000000, 0x3FF007A5, 0x96320652, 0xBE25A3F0, - 0xD4000000, 0x3FF007A9, 0xD3FD8FCA, 0x3E33CD58, - 0xD8000000, 0x3FF007AD, 0xC62D40B1, 0xBE2B069C, - 0xD8000000, 0x3FF007B1, 0x13AC5766, 0x3E313C12, - 0xDC000000, 0x3FF007B5, 0x876F3A0B, 0xBE2FE90B, - 0xDC000000, 0x3FF007B9, 0x357EDEB8, 0x3E2DD5D4, - 0xE0000000, 0x3FF007BD, 0x4CEC957E, 0xBE32259E, - 0xE0000000, 0x3FF007C1, 0x128C86C6, 0x3E29B3C2, - 0xE4000000, 0x3FF007C5, 0xDEA61608, 0xBE341697, - 0xE4000000, 0x3FF007C9, 0xFEA09E70, 0x3E2611ED, - 0xE8000000, 0x3FF007CD, 0x58D49AE3, 0xBE35C772, - 0xE8000000, 0x3FF007D1, 0x39DA3D42, 0x3E22F058, - 0xEC000000, 0x3FF007D5, 0x9B689043, 0xBE37382D, - 0xEC000000, 0x3FF007D9, 0x04589AD6, 0x3E204F01, - 0xF0000000, 0x3FF007DD, 0x86525259, 0xBE3868C9, - 0xF0000000, 0x3FF007E1, 0x3C761DAC, 0x3E1C5BD1, - 0xF4000000, 0x3FF007E5, 0xF9822D4C, 0xBE395945, - 0xF4000000, 0x3FF007E9, 0x8F4221F9, 0x3E191A1E, - 0xF8000000, 0x3FF007ED, 0xD4E85D3A, 0xBE3A09A2, - 0xF8000000, 0x3FF007F1, 0x81547225, 0x3E16D8EA, - 0xFC000000, 0x3FF007F5, 0xF8750E3B, 0xBE3A79DF, - 0xFC000000, 0x3FF007F9, 0x92EC7DE3, 0x3E159835, - 0x00000000, 0x3FF007FE, 0x44185C5D, 0xBE3AA9FD } }; - -#endif -#endif diff --git a/libgcc-math/dbl-64/ulog.h b/libgcc-math/dbl-64/ulog.h deleted file mode 100644 index 0ba6b7bb531..00000000000 --- a/libgcc-math/dbl-64/ulog.h +++ /dev/null @@ -1,200 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/******************************************************************/ -/* */ -/* MODULE_NAME:ulog.h */ -/* */ -/* common data and variables prototype and definition */ -/******************************************************************/ - -#ifndef ULOG_H -#define ULOG_H - -#ifdef BIG_ENDI - static const number - /* polynomial I */ -/**/ a2 = {{0xbfe00000, 0x0001aa8f} }, /* -0.500... */ -/**/ a3 = {{0x3fd55555, 0x55588d2e} }, /* 0.333... */ - /* polynomial II */ -/**/ b0 = {{0x3fd55555, 0x55555555} }, /* 0.333... */ -/**/ b1 = {{0xbfcfffff, 0xffffffbb} }, /* -0.249... */ -/**/ b2 = {{0x3fc99999, 0x9999992f} }, /* 0.199... */ -/**/ b3 = {{0xbfc55555, 0x556503fd} }, /* -0.166... */ -/**/ b4 = {{0x3fc24924, 0x925b3d62} }, /* 0.142... */ -/**/ b5 = {{0xbfbffffe, 0x160472fc} }, /* -0.124... */ -/**/ b6 = {{0x3fbc71c5, 0x25db58ac} }, /* 0.111... */ -/**/ b7 = {{0xbfb9a4ac, 0x11a2a61c} }, /* -0.100... */ -/**/ b8 = {{0x3fb75077, 0x0df2b591} }, /* 0.091... */ - /* polynomial III */ -#if 0 -/**/ c1 = {{0x3ff00000, 0x00000000} }, /* 1 */ -#endif -/**/ c2 = {{0xbfe00000, 0x00000000} }, /* -1/2 */ -/**/ c3 = {{0x3fd55555, 0x55555555} }, /* 1/3 */ -/**/ c4 = {{0xbfd00000, 0x00000000} }, /* -1/4 */ -/**/ c5 = {{0x3fc99999, 0x9999999a} }, /* 1/5 */ - /* polynomial IV */ -/**/ d2 = {{0xbfe00000, 0x00000000} }, /* -1/2 */ -/**/ dd2 = {{0x00000000, 0x00000000} }, /* -1/2-d2 */ -/**/ d3 = {{0x3fd55555, 0x55555555} }, /* 1/3 */ -/**/ dd3 = {{0x3c755555, 0x55555555} }, /* 1/3-d3 */ -/**/ d4 = {{0xbfd00000, 0x00000000} }, /* -1/4 */ -/**/ dd4 = {{0x00000000, 0x00000000} }, /* -1/4-d4 */ -/**/ d5 = {{0x3fc99999, 0x9999999a} }, /* 1/5 */ -/**/ dd5 = {{0xbc699999, 0x9999999a} }, /* 1/5-d5 */ -/**/ d6 = {{0xbfc55555, 0x55555555} }, /* -1/6 */ -/**/ dd6 = {{0xbc655555, 0x55555555} }, /* -1/6-d6 */ -/**/ d7 = {{0x3fc24924, 0x92492492} }, /* 1/7 */ -/**/ dd7 = {{0x3c624924, 0x92492492} }, /* 1/7-d7 */ -/**/ d8 = {{0xbfc00000, 0x00000000} }, /* -1/8 */ -/**/ dd8 = {{0x00000000, 0x00000000} }, /* -1/8-d8 */ -/**/ d9 = {{0x3fbc71c7, 0x1c71c71c} }, /* 1/9 */ -/**/ dd9 = {{0x3c5c71c7, 0x1c71c71c} }, /* 1/9-d9 */ -/**/ d10 = {{0xbfb99999, 0x9999999a} }, /* -1/10 */ -/**/ dd10 = {{0x3c599999, 0x9999999a} }, /* -1/10-d10 */ -/**/ d11 = {{0x3fb745d1, 0x745d1746} }, /* 1/11 */ -/**/ d12 = {{0xbfb55555, 0x55555555} }, /* -1/12 */ -/**/ d13 = {{0x3fb3b13b, 0x13b13b14} }, /* 1/13 */ -/**/ d14 = {{0xbfb24924, 0x92492492} }, /* -1/14 */ -/**/ d15 = {{0x3fb11111, 0x11111111} }, /* 1/15 */ -/**/ d16 = {{0xbfb00000, 0x00000000} }, /* -1/16 */ -/**/ d17 = {{0x3fae1e1e, 0x1e1e1e1e} }, /* 1/17 */ -/**/ d18 = {{0xbfac71c7, 0x1c71c71c} }, /* -1/18 */ -/**/ d19 = {{0x3faaf286, 0xbca1af28} }, /* 1/19 */ -/**/ d20 = {{0xbfa99999, 0x9999999a} }, /* -1/20 */ - /* constants */ -/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */ -/**/ one = {{0x3ff00000, 0x00000000} }, /* 1 */ -/**/ half = {{0x3fe00000, 0x00000000} }, /* 1/2 */ -/**/ mhalf = {{0xbfe00000, 0x00000000} }, /* -1/2 */ -/**/ sqrt_2 = {{0x3ff6a09e, 0x667f3bcc} }, /* sqrt(2) */ -/**/ h1 = {{0x3fd2e000, 0x00000000} }, /* 151/2**9 */ -/**/ h2 = {{0x3f669000, 0x00000000} }, /* 361/2**17 */ -/**/ delu = {{0x3f700000, 0x00000000} }, /* 1/2**8 */ -/**/ delv = {{0x3ef00000, 0x00000000} }, /* 1/2**16 */ -/**/ ln2a = {{0x3fe62e42, 0xfefa3800} }, /* ln(2) 43 bits */ -/**/ ln2b = {{0x3d2ef357, 0x93c76730} }, /* ln(2)-ln2a */ -/**/ e1 = {{0x3bbcc868, 0x00000000} }, /* 6.095e-21 */ -/**/ e2 = {{0x3c1138ce, 0x00000000} }, /* 2.334e-19 */ -/**/ e3 = {{0x3aa1565d, 0x00000000} }, /* 2.801e-26 */ -/**/ e4 = {{0x39809d88, 0x00000000} }, /* 1.024e-31 */ -/**/ e[M] ={{{0x37da223a, 0x00000000} }, /* 1.2e-39 */ -/**/ {{0x35c851c4, 0x00000000} }, /* 1.3e-49 */ -/**/ {{0x2ab85e51, 0x00000000} }, /* 6.8e-103 */ -/**/ {{0x17383827, 0x00000000} }},/* 8.1e-197 */ -/**/ two54 = {{0x43500000, 0x00000000} }, /* 2**54 */ -/**/ u03 = {{0x3f9eb851, 0xeb851eb8} }; /* 0.03 */ - -#else -#ifdef LITTLE_ENDI - static const number - /* polynomial I */ -/**/ a2 = {{0x0001aa8f, 0xbfe00000} }, /* -0.500... */ -/**/ a3 = {{0x55588d2e, 0x3fd55555} }, /* 0.333... */ - /* polynomial II */ -/**/ b0 = {{0x55555555, 0x3fd55555} }, /* 0.333... */ -/**/ b1 = {{0xffffffbb, 0xbfcfffff} }, /* -0.249... */ -/**/ b2 = {{0x9999992f, 0x3fc99999} }, /* 0.199... */ -/**/ b3 = {{0x556503fd, 0xbfc55555} }, /* -0.166... */ -/**/ b4 = {{0x925b3d62, 0x3fc24924} }, /* 0.142... */ -/**/ b5 = {{0x160472fc, 0xbfbffffe} }, /* -0.124... */ -/**/ b6 = {{0x25db58ac, 0x3fbc71c5} }, /* 0.111... */ -/**/ b7 = {{0x11a2a61c, 0xbfb9a4ac} }, /* -0.100... */ -/**/ b8 = {{0x0df2b591, 0x3fb75077} }, /* 0.091... */ - /* polynomial III */ -#if 0 -/**/ c1 = {{0x00000000, 0x3ff00000} }, /* 1 */ -#endif -/**/ c2 = {{0x00000000, 0xbfe00000} }, /* -1/2 */ -/**/ c3 = {{0x55555555, 0x3fd55555} }, /* 1/3 */ -/**/ c4 = {{0x00000000, 0xbfd00000} }, /* -1/4 */ -/**/ c5 = {{0x9999999a, 0x3fc99999} }, /* 1/5 */ - /* polynomial IV */ -/**/ d2 = {{0x00000000, 0xbfe00000} }, /* -1/2 */ -/**/ dd2 = {{0x00000000, 0x00000000} }, /* -1/2-d2 */ -/**/ d3 = {{0x55555555, 0x3fd55555} }, /* 1/3 */ -/**/ dd3 = {{0x55555555, 0x3c755555} }, /* 1/3-d3 */ -/**/ d4 = {{0x00000000, 0xbfd00000} }, /* -1/4 */ -/**/ dd4 = {{0x00000000, 0x00000000} }, /* -1/4-d4 */ -/**/ d5 = {{0x9999999a, 0x3fc99999} }, /* 1/5 */ -/**/ dd5 = {{0x9999999a, 0xbc699999} }, /* 1/5-d5 */ -/**/ d6 = {{0x55555555, 0xbfc55555} }, /* -1/6 */ -/**/ dd6 = {{0x55555555, 0xbc655555} }, /* -1/6-d6 */ -/**/ d7 = {{0x92492492, 0x3fc24924} }, /* 1/7 */ -/**/ dd7 = {{0x92492492, 0x3c624924} }, /* 1/7-d7 */ -/**/ d8 = {{0x00000000, 0xbfc00000} }, /* -1/8 */ -/**/ dd8 = {{0x00000000, 0x00000000} }, /* -1/8-d8 */ -/**/ d9 = {{0x1c71c71c, 0x3fbc71c7} }, /* 1/9 */ -/**/ dd9 = {{0x1c71c71c, 0x3c5c71c7} }, /* 1/9-d9 */ -/**/ d10 = {{0x9999999a, 0xbfb99999} }, /* -1/10 */ -/**/ dd10 = {{0x9999999a, 0x3c599999} }, /* -1/10-d10 */ -/**/ d11 = {{0x745d1746, 0x3fb745d1} }, /* 1/11 */ -/**/ d12 = {{0x55555555, 0xbfb55555} }, /* -1/12 */ -/**/ d13 = {{0x13b13b14, 0x3fb3b13b} }, /* 1/13 */ -/**/ d14 = {{0x92492492, 0xbfb24924} }, /* -1/14 */ -/**/ d15 = {{0x11111111, 0x3fb11111} }, /* 1/15 */ -/**/ d16 = {{0x00000000, 0xbfb00000} }, /* -1/16 */ -/**/ d17 = {{0x1e1e1e1e, 0x3fae1e1e} }, /* 1/17 */ -/**/ d18 = {{0x1c71c71c, 0xbfac71c7} }, /* -1/18 */ -/**/ d19 = {{0xbca1af28, 0x3faaf286} }, /* 1/19 */ -/**/ d20 = {{0x9999999a, 0xbfa99999} }, /* -1/20 */ - /* constants */ -/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */ -/**/ one = {{0x00000000, 0x3ff00000} }, /* 1 */ -/**/ half = {{0x00000000, 0x3fe00000} }, /* 1/2 */ -/**/ mhalf = {{0x00000000, 0xbfe00000} }, /* -1/2 */ -/**/ sqrt_2 = {{0x667f3bcc, 0x3ff6a09e} }, /* sqrt(2) */ -/**/ h1 = {{0x00000000, 0x3fd2e000} }, /* 151/2**9 */ -/**/ h2 = {{0x00000000, 0x3f669000} }, /* 361/2**17 */ -/**/ delu = {{0x00000000, 0x3f700000} }, /* 1/2**8 */ -/**/ delv = {{0x00000000, 0x3ef00000} }, /* 1/2**16 */ -/**/ ln2a = {{0xfefa3800, 0x3fe62e42} }, /* ln(2) 43 bits */ -/**/ ln2b = {{0x93c76730, 0x3d2ef357} }, /* ln(2)-ln2a */ -/**/ e1 = {{0x00000000, 0x3bbcc868} }, /* 6.095e-21 */ -/**/ e2 = {{0x00000000, 0x3c1138ce} }, /* 2.334e-19 */ -/**/ e3 = {{0x00000000, 0x3aa1565d} }, /* 2.801e-26 */ -/**/ e4 = {{0x00000000, 0x39809d88} }, /* 1.024e-31 */ -/**/ e[M] ={{{0x00000000, 0x37da223a} }, /* 1.2e-39 */ -/**/ {{0x00000000, 0x35c851c4} }, /* 1.3e-49 */ -/**/ {{0x00000000, 0x2ab85e51} }, /* 6.8e-103 */ -/**/ {{0x00000000, 0x17383827} }},/* 8.1e-197 */ -/**/ two54 = {{0x00000000, 0x43500000} }, /* 2**54 */ -/**/ u03 = {{0xeb851eb8, 0x3f9eb851} }; /* 0.03 */ - -#endif -#endif - -#define ZERO zero.d -#define ONE one.d -#define HALF half.d -#define MHALF mhalf.d -#define SQRT_2 sqrt_2.d -#define DEL_U delu.d -#define DEL_V delv.d -#define LN2A ln2a.d -#define LN2B ln2b.d -#define E1 e1.d -#define E2 e2.d -#define E3 e3.d -#define E4 e4.d -#define U03 u03.d - -#endif diff --git a/libgcc-math/dbl-64/ulog.tbl b/libgcc-math/dbl-64/ulog.tbl deleted file mode 100644 index 41aed931fb4..00000000000 --- a/libgcc-math/dbl-64/ulog.tbl +++ /dev/null @@ -1,3327 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/****************************************************************/ -/* TABLES FOR THE ulog() FUNCTION */ -/****************************************************************/ - -#ifdef BIG_ENDI - static const number - Iu[182] = { /* 1/ui */ -/**/ {{0x3ff6a13c, 0xd1537290} }, -/**/ {{0x3ff68168, 0x16816817} }, -/**/ {{0x3ff661ec, 0x6a5122f9} }, -/**/ {{0x3ff642c8, 0x590b2164} }, -/**/ {{0x3ff623fa, 0x77016240} }, -/**/ {{0x3ff60581, 0x60581606} }, -/**/ {{0x3ff5e75b, 0xb8d015e7} }, -/**/ {{0x3ff5c988, 0x2b931057} }, -/**/ {{0x3ff5ac05, 0x6b015ac0} }, -/**/ {{0x3ff58ed2, 0x308158ed} }, -/**/ {{0x3ff571ed, 0x3c506b3a} }, -/**/ {{0x3ff55555, 0x55555555} }, -/**/ {{0x3ff53909, 0x48f40feb} }, -/**/ {{0x3ff51d07, 0xeae2f815} }, -/**/ {{0x3ff50150, 0x15015015} }, -/**/ {{0x3ff4e5e0, 0xa72f0539} }, -/**/ {{0x3ff4cab8, 0x8725af6e} }, -/**/ {{0x3ff4afd6, 0xa052bf5b} }, -/**/ {{0x3ff49539, 0xe3b2d067} }, -/**/ {{0x3ff47ae1, 0x47ae147b} }, -/**/ {{0x3ff460cb, 0xc7f5cf9a} }, -/**/ {{0x3ff446f8, 0x6562d9fb} }, -/**/ {{0x3ff42d66, 0x25d51f87} }, -/**/ {{0x3ff41414, 0x14141414} }, -/**/ {{0x3ff3fb01, 0x3fb013fb} }, -/**/ {{0x3ff3e22c, 0xbce4a902} }, -/**/ {{0x3ff3c995, 0xa47babe7} }, -/**/ {{0x3ff3b13b, 0x13b13b14} }, -/**/ {{0x3ff3991c, 0x2c187f63} }, -/**/ {{0x3ff38138, 0x13813814} }, -/**/ {{0x3ff3698d, 0xf3de0748} }, -/**/ {{0x3ff3521c, 0xfb2b78c1} }, -/**/ {{0x3ff33ae4, 0x5b57bcb2} }, -/**/ {{0x3ff323e3, 0x4a2b10bf} }, -/**/ {{0x3ff30d19, 0x0130d190} }, -/**/ {{0x3ff2f684, 0xbda12f68} }, -/**/ {{0x3ff2e025, 0xc04b8097} }, -/**/ {{0x3ff2c9fb, 0x4d812ca0} }, -/**/ {{0x3ff2b404, 0xad012b40} }, -/**/ {{0x3ff29e41, 0x29e4129e} }, -/**/ {{0x3ff288b0, 0x1288b013} }, -/**/ {{0x3ff27350, 0xb8812735} }, -/**/ {{0x3ff25e22, 0x708092f1} }, -/**/ {{0x3ff24924, 0x92492492} }, -/**/ {{0x3ff23456, 0x789abcdf} }, -/**/ {{0x3ff21fb7, 0x8121fb78} }, -/**/ {{0x3ff20b47, 0x0c67c0d9} }, -/**/ {{0x3ff1f704, 0x7dc11f70} }, -/**/ {{0x3ff1e2ef, 0x3b3fb874} }, -/**/ {{0x3ff1cf06, 0xada2811d} }, -/**/ {{0x3ff1bb4a, 0x4046ed29} }, -/**/ {{0x3ff1a7b9, 0x611a7b96} }, -/**/ {{0x3ff19453, 0x808ca29c} }, -/**/ {{0x3ff18118, 0x11811812} }, -/**/ {{0x3ff16e06, 0x89427379} }, -/**/ {{0x3ff15b1e, 0x5f75270d} }, -/**/ {{0x3ff1485f, 0x0e0acd3b} }, -/**/ {{0x3ff135c8, 0x1135c811} }, -/**/ {{0x3ff12358, 0xe75d3033} }, -/**/ {{0x3ff11111, 0x11111111} }, -/**/ {{0x3ff0fef0, 0x10fef011} }, -/**/ {{0x3ff0ecf5, 0x6be69c90} }, -/**/ {{0x3ff0db20, 0xa88f4696} }, -/**/ {{0x3ff0c971, 0x4fbcda3b} }, -/**/ {{0x3ff0b7e6, 0xec259dc8} }, -/**/ {{0x3ff0a681, 0x0a6810a7} }, -/**/ {{0x3ff0953f, 0x39010954} }, -/**/ {{0x3ff08421, 0x08421084} }, -/**/ {{0x3ff07326, 0x0a47f7c6} }, -/**/ {{0x3ff0624d, 0xd2f1a9fc} }, -/**/ {{0x3ff05197, 0xf7d73404} }, -/**/ {{0x3ff04104, 0x10410410} }, -/**/ {{0x3ff03091, 0xb51f5e1a} }, -/**/ {{0x3ff02040, 0x81020408} }, -/**/ {{0x3ff01010, 0x10101010} }, -/**/ {{0x3ff00000, 0x00000000} }, -/**/ {{0x3fefe01f, 0xe01fe020} }, -/**/ {{0x3fefc07f, 0x01fc07f0} }, -/**/ {{0x3fefa11c, 0xaa01fa12} }, -/**/ {{0x3fef81f8, 0x1f81f820} }, -/**/ {{0x3fef6310, 0xaca0dbb5} }, -/**/ {{0x3fef4465, 0x9e4a4271} }, -/**/ {{0x3fef25f6, 0x44230ab5} }, -/**/ {{0x3fef07c1, 0xf07c1f08} }, -/**/ {{0x3feee9c7, 0xf8458e02} }, -/**/ {{0x3feecc07, 0xb301ecc0} }, -/**/ {{0x3feeae80, 0x7aba01eb} }, -/**/ {{0x3fee9131, 0xabf0b767} }, -/**/ {{0x3fee741a, 0xa59750e4} }, -/**/ {{0x3fee573a, 0xc901e574} }, -/**/ {{0x3fee3a91, 0x79dc1a73} }, -/**/ {{0x3fee1e1e, 0x1e1e1e1e} }, -/**/ {{0x3fee01e0, 0x1e01e01e} }, -/**/ {{0x3fede5d6, 0xe3f8868a} }, -/**/ {{0x3fedca01, 0xdca01dca} }, -/**/ {{0x3fedae60, 0x76b981db} }, -/**/ {{0x3fed92f2, 0x231e7f8a} }, -/**/ {{0x3fed77b6, 0x54b82c34} }, -/**/ {{0x3fed5cac, 0x807572b2} }, -/**/ {{0x3fed41d4, 0x1d41d41d} }, -/**/ {{0x3fed272c, 0xa3fc5b1a} }, -/**/ {{0x3fed0cb5, 0x8f6ec074} }, -/**/ {{0x3fecf26e, 0x5c44bfc6} }, -/**/ {{0x3fecd856, 0x89039b0b} }, -/**/ {{0x3fecbe6d, 0x9601cbe7} }, -/**/ {{0x3feca4b3, 0x055ee191} }, -/**/ {{0x3fec8b26, 0x5afb8a42} }, -/**/ {{0x3fec71c7, 0x1c71c71c} }, -/**/ {{0x3fec5894, 0xd10d4986} }, -/**/ {{0x3fec3f8f, 0x01c3f8f0} }, -/**/ {{0x3fec26b5, 0x392ea01c} }, -/**/ {{0x3fec0e07, 0x0381c0e0} }, -/**/ {{0x3febf583, 0xee868d8b} }, -/**/ {{0x3febdd2b, 0x899406f7} }, -/**/ {{0x3febc4fd, 0x65883e7b} }, -/**/ {{0x3febacf9, 0x14c1bad0} }, -/**/ {{0x3feb951e, 0x2b18ff23} }, -/**/ {{0x3feb7d6c, 0x3dda338b} }, -/**/ {{0x3feb65e2, 0xe3beee05} }, -/**/ {{0x3feb4e81, 0xb4e81b4f} }, -/**/ {{0x3feb3748, 0x4ad806ce} }, -/**/ {{0x3feb2036, 0x406c80d9} }, -/**/ {{0x3feb094b, 0x31d922a4} }, -/**/ {{0x3feaf286, 0xbca1af28} }, -/**/ {{0x3feadbe8, 0x7f94905e} }, -/**/ {{0x3feac570, 0x1ac5701b} }, -/**/ {{0x3feaaf1d, 0x2f87ebfd} }, -/**/ {{0x3fea98ef, 0x606a63be} }, -/**/ {{0x3fea82e6, 0x5130e159} }, -/**/ {{0x3fea6d01, 0xa6d01a6d} }, -/**/ {{0x3fea5741, 0x07688a4a} }, -/**/ {{0x3fea41a4, 0x1a41a41a} }, -/**/ {{0x3fea2c2a, 0x87c51ca0} }, -/**/ {{0x3fea16d3, 0xf97a4b02} }, -/**/ {{0x3fea01a0, 0x1a01a01a} }, -/**/ {{0x3fe9ec8e, 0x951033d9} }, -/**/ {{0x3fe9d79f, 0x176b682d} }, -/**/ {{0x3fe9c2d1, 0x4ee4a102} }, -/**/ {{0x3fe9ae24, 0xea5510da} }, -/**/ {{0x3fe99999, 0x9999999a} }, -/**/ {{0x3fe9852f, 0x0d8ec0ff} }, -/**/ {{0x3fe970e4, 0xf80cb872} }, -/**/ {{0x3fe95cbb, 0x0be377ae} }, -/**/ {{0x3fe948b0, 0xfcd6e9e0} }, -/**/ {{0x3fe934c6, 0x7f9b2ce6} }, -/**/ {{0x3fe920fb, 0x49d0e229} }, -/**/ {{0x3fe90d4f, 0x120190d5} }, -/**/ {{0x3fe8f9c1, 0x8f9c18fa} }, -/**/ {{0x3fe8e652, 0x7af1373f} }, -/**/ {{0x3fe8d301, 0x8d3018d3} }, -/**/ {{0x3fe8bfce, 0x8062ff3a} }, -/**/ {{0x3fe8acb9, 0x0f6bf3aa} }, -/**/ {{0x3fe899c0, 0xf601899c} }, -/**/ {{0x3fe886e5, 0xf0abb04a} }, -/**/ {{0x3fe87427, 0xbcc092b9} }, -/**/ {{0x3fe86186, 0x18618618} }, -/**/ {{0x3fe84f00, 0xc2780614} }, -/**/ {{0x3fe83c97, 0x7ab2bedd} }, -/**/ {{0x3fe82a4a, 0x0182a4a0} }, -/**/ {{0x3fe81818, 0x18181818} }, -/**/ {{0x3fe80601, 0x80601806} }, -/**/ {{0x3fe7f405, 0xfd017f40} }, -/**/ {{0x3fe7e225, 0x515a4f1d} }, -/**/ {{0x3fe7d05f, 0x417d05f4} }, -/**/ {{0x3fe7beb3, 0x922e017c} }, -/**/ {{0x3fe7ad22, 0x08e0ecc3} }, -/**/ {{0x3fe79baa, 0x6bb6398b} }, -/**/ {{0x3fe78a4c, 0x8178a4c8} }, -/**/ {{0x3fe77908, 0x119ac60d} }, -/**/ {{0x3fe767dc, 0xe434a9b1} }, -/**/ {{0x3fe756ca, 0xc201756d} }, -/**/ {{0x3fe745d1, 0x745d1746} }, -/**/ {{0x3fe734f0, 0xc541fe8d} }, -/**/ {{0x3fe72428, 0x7f46debc} }, -/**/ {{0x3fe71378, 0x6d9c7c09} }, -/**/ {{0x3fe702e0, 0x5c0b8170} }, -/**/ {{0x3fe6f260, 0x16f26017} }, -/**/ {{0x3fe6e1f7, 0x6b4337c7} }, -/**/ {{0x3fe6d1a6, 0x2681c861} }, -/**/ {{0x3fe6c16c, 0x16c16c17} }, -/**/ {{0x3fe6b149, 0x0aa31a3d} }, -/**/ {{0x3fe6a13c, 0xd1537290} }, - }; - - static const number - Iv[362] = { /* 1/vj */ -/**/ {{0x3ff00b47, 0xee93bfe3} }, -/**/ {{0x3ff00b37, 0xd80c106f} }, -/**/ {{0x3ff00b27, 0xc1a4a47a} }, -/**/ {{0x3ff00b17, 0xab5d7ba2} }, -/**/ {{0x3ff00b07, 0x95369587} }, -/**/ {{0x3ff00af7, 0x7f2ff1c6} }, -/**/ {{0x3ff00ae7, 0x69499000} }, -/**/ {{0x3ff00ad7, 0x53836fd3} }, -/**/ {{0x3ff00ac7, 0x3ddd90dd} }, -/**/ {{0x3ff00ab7, 0x2857f2bf} }, -/**/ {{0x3ff00aa7, 0x12f29517} }, -/**/ {{0x3ff00a96, 0xfdad7784} }, -/**/ {{0x3ff00a86, 0xe88899a5} }, -/**/ {{0x3ff00a76, 0xd383fb19} }, -/**/ {{0x3ff00a66, 0xbe9f9b7f} }, -/**/ {{0x3ff00a56, 0xa9db7a76} }, -/**/ {{0x3ff00a46, 0x9537979d} }, -/**/ {{0x3ff00a36, 0x80b3f293} }, -/**/ {{0x3ff00a26, 0x6c508af8} }, -/**/ {{0x3ff00a16, 0x580d606a} }, -/**/ {{0x3ff00a06, 0x43ea7288} }, -/**/ {{0x3ff009f6, 0x2fe7c0f1} }, -/**/ {{0x3ff009e6, 0x1c054b44} }, -/**/ {{0x3ff009d6, 0x08431122} }, -/**/ {{0x3ff009c5, 0xf4a11227} }, -/**/ {{0x3ff009b5, 0xe11f4df4} }, -/**/ {{0x3ff009a5, 0xcdbdc428} }, -/**/ {{0x3ff00995, 0xba7c7462} }, -/**/ {{0x3ff00985, 0xa75b5e40} }, -/**/ {{0x3ff00975, 0x945a8162} }, -/**/ {{0x3ff00965, 0x8179dd68} }, -/**/ {{0x3ff00955, 0x6eb971ef} }, -/**/ {{0x3ff00945, 0x5c193e98} }, -/**/ {{0x3ff00935, 0x49994301} }, -/**/ {{0x3ff00925, 0x37397eca} }, -/**/ {{0x3ff00915, 0x24f9f192} }, -/**/ {{0x3ff00905, 0x12da9af7} }, -/**/ {{0x3ff008f5, 0x00db7a99} }, -/**/ {{0x3ff008e4, 0xeefc9018} }, -/**/ {{0x3ff008d4, 0xdd3ddb12} }, -/**/ {{0x3ff008c4, 0xcb9f5b26} }, -/**/ {{0x3ff008b4, 0xba210ff4} }, -/**/ {{0x3ff008a4, 0xa8c2f91a} }, -/**/ {{0x3ff00894, 0x97851639} }, -/**/ {{0x3ff00884, 0x866766ef} }, -/**/ {{0x3ff00874, 0x7569eadb} }, -/**/ {{0x3ff00864, 0x648ca19d} }, -/**/ {{0x3ff00854, 0x53cf8ad3} }, -/**/ {{0x3ff00844, 0x4332a61e} }, -/**/ {{0x3ff00834, 0x32b5f31b} }, -/**/ {{0x3ff00824, 0x2259716c} }, -/**/ {{0x3ff00814, 0x121d20ad} }, -/**/ {{0x3ff00804, 0x02010080} }, -/**/ {{0x3ff007f3, 0xf2051083} }, -/**/ {{0x3ff007e3, 0xe2295056} }, -/**/ {{0x3ff007d3, 0xd26dbf97} }, -/**/ {{0x3ff007c3, 0xc2d25de5} }, -/**/ {{0x3ff007b3, 0xb3572ae2} }, -/**/ {{0x3ff007a3, 0xa3fc262a} }, -/**/ {{0x3ff00793, 0x94c14f5f} }, -/**/ {{0x3ff00783, 0x85a6a61e} }, -/**/ {{0x3ff00773, 0x76ac2a08} }, -/**/ {{0x3ff00763, 0x67d1dabb} }, -/**/ {{0x3ff00753, 0x5917b7d7} }, -/**/ {{0x3ff00743, 0x4a7dc0fb} }, -/**/ {{0x3ff00733, 0x3c03f5c7} }, -/**/ {{0x3ff00723, 0x2daa55da} }, -/**/ {{0x3ff00713, 0x1f70e0d3} }, -/**/ {{0x3ff00703, 0x11579652} }, -/**/ {{0x3ff006f3, 0x035e75f5} }, -/**/ {{0x3ff006e2, 0xf5857f5d} }, -/**/ {{0x3ff006d2, 0xe7ccb228} }, -/**/ {{0x3ff006c2, 0xda340df6} }, -/**/ {{0x3ff006b2, 0xccbb9266} }, -/**/ {{0x3ff006a2, 0xbf633f18} }, -/**/ {{0x3ff00692, 0xb22b13ab} }, -/**/ {{0x3ff00682, 0xa5130fbe} }, -/**/ {{0x3ff00672, 0x981b32f1} }, -/**/ {{0x3ff00662, 0x8b437ce4} }, -/**/ {{0x3ff00652, 0x7e8bed35} }, -/**/ {{0x3ff00642, 0x71f48383} }, -/**/ {{0x3ff00632, 0x657d3f70} }, -/**/ {{0x3ff00622, 0x59262098} }, -/**/ {{0x3ff00612, 0x4cef269e} }, -/**/ {{0x3ff00602, 0x40d8511e} }, -/**/ {{0x3ff005f2, 0x34e19fba} }, -/**/ {{0x3ff005e2, 0x290b1211} }, -/**/ {{0x3ff005d2, 0x1d54a7c1} }, -/**/ {{0x3ff005c2, 0x11be606b} }, -/**/ {{0x3ff005b2, 0x06483bad} }, -/**/ {{0x3ff005a1, 0xfaf23928} }, -/**/ {{0x3ff00591, 0xefbc587b} }, -/**/ {{0x3ff00581, 0xe4a69945} }, -/**/ {{0x3ff00571, 0xd9b0fb25} }, -/**/ {{0x3ff00561, 0xcedb7dbc} }, -/**/ {{0x3ff00551, 0xc42620a9} }, -/**/ {{0x3ff00541, 0xb990e38b} }, -/**/ {{0x3ff00531, 0xaf1bc601} }, -/**/ {{0x3ff00521, 0xa4c6c7ac} }, -/**/ {{0x3ff00511, 0x9a91e82a} }, -/**/ {{0x3ff00501, 0x907d271c} }, -/**/ {{0x3ff004f1, 0x86888421} }, -/**/ {{0x3ff004e1, 0x7cb3fed8} }, -/**/ {{0x3ff004d1, 0x72ff96e0} }, -/**/ {{0x3ff004c1, 0x696b4bdb} }, -/**/ {{0x3ff004b1, 0x5ff71d66} }, -/**/ {{0x3ff004a1, 0x56a30b21} }, -/**/ {{0x3ff00491, 0x4d6f14ad} }, -/**/ {{0x3ff00481, 0x445b39a8} }, -/**/ {{0x3ff00471, 0x3b6779b3} }, -/**/ {{0x3ff00461, 0x3293d46c} }, -/**/ {{0x3ff00451, 0x29e04974} }, -/**/ {{0x3ff00441, 0x214cd869} }, -/**/ {{0x3ff00431, 0x18d980ed} }, -/**/ {{0x3ff00421, 0x1086429d} }, -/**/ {{0x3ff00411, 0x08531d1a} }, -/**/ {{0x3ff00401, 0x00401004} }, -/**/ {{0x3ff003f0, 0xf84d1afa} }, -/**/ {{0x3ff003e0, 0xf07a3d9b} }, -/**/ {{0x3ff003d0, 0xe8c77787} }, -/**/ {{0x3ff003c0, 0xe134c85f} }, -/**/ {{0x3ff003b0, 0xd9c22fc1} }, -/**/ {{0x3ff003a0, 0xd26fad4d} }, -/**/ {{0x3ff00390, 0xcb3d40a3} }, -/**/ {{0x3ff00380, 0xc42ae963} }, -/**/ {{0x3ff00370, 0xbd38a72c} }, -/**/ {{0x3ff00360, 0xb666799e} }, -/**/ {{0x3ff00350, 0xafb46058} }, -/**/ {{0x3ff00340, 0xa9225afa} }, -/**/ {{0x3ff00330, 0xa2b06925} }, -/**/ {{0x3ff00320, 0x9c5e8a77} }, -/**/ {{0x3ff00310, 0x962cbe90} }, -/**/ {{0x3ff00300, 0x901b0511} }, -/**/ {{0x3ff002f0, 0x8a295d98} }, -/**/ {{0x3ff002e0, 0x8457c7c6} }, -/**/ {{0x3ff002d0, 0x7ea6433a} }, -/**/ {{0x3ff002c0, 0x7914cf94} }, -/**/ {{0x3ff002b0, 0x73a36c73} }, -/**/ {{0x3ff002a0, 0x6e521978} }, -/**/ {{0x3ff00290, 0x6920d642} }, -/**/ {{0x3ff00280, 0x640fa271} }, -/**/ {{0x3ff00270, 0x5f1e7da5} }, -/**/ {{0x3ff00260, 0x5a4d677d} }, -/**/ {{0x3ff00250, 0x559c5f9a} }, -/**/ {{0x3ff00240, 0x510b659a} }, -/**/ {{0x3ff00230, 0x4c9a791f} }, -/**/ {{0x3ff00220, 0x484999c6} }, -/**/ {{0x3ff00210, 0x4418c732} }, -/**/ {{0x3ff00200, 0x40080100} }, -/**/ {{0x3ff001f0, 0x3c1746d2} }, -/**/ {{0x3ff001e0, 0x38469846} }, -/**/ {{0x3ff001d0, 0x3495f4fd} }, -/**/ {{0x3ff001c0, 0x31055c96} }, -/**/ {{0x3ff001b0, 0x2d94ceb2} }, -/**/ {{0x3ff001a0, 0x2a444af0} }, -/**/ {{0x3ff00190, 0x2713d0ef} }, -/**/ {{0x3ff00180, 0x24036051} }, -/**/ {{0x3ff00170, 0x2112f8b4} }, -/**/ {{0x3ff00160, 0x1e4299b9} }, -/**/ {{0x3ff00150, 0x1b9242ff} }, -/**/ {{0x3ff00140, 0x1901f427} }, -/**/ {{0x3ff00130, 0x1691acd0} }, -/**/ {{0x3ff00120, 0x14416c9a} }, -/**/ {{0x3ff00110, 0x12113324} }, -/**/ {{0x3ff00100, 0x10010010} }, -/**/ {{0x3ff000f0, 0x0e10d2fc} }, -/**/ {{0x3ff000e0, 0x0c40ab89} }, -/**/ {{0x3ff000d0, 0x0a908957} }, -/**/ {{0x3ff000c0, 0x09006c05} }, -/**/ {{0x3ff000b0, 0x07905334} }, -/**/ {{0x3ff000a0, 0x06403e82} }, -/**/ {{0x3ff00090, 0x05102d92} }, -/**/ {{0x3ff00080, 0x04002001} }, -/**/ {{0x3ff00070, 0x03101571} }, -/**/ {{0x3ff00060, 0x02400d80} }, -/**/ {{0x3ff00050, 0x019007d0} }, -/**/ {{0x3ff00040, 0x01000400} }, -/**/ {{0x3ff00030, 0x009001b0} }, -/**/ {{0x3ff00020, 0x00400080} }, -/**/ {{0x3ff00010, 0x00100010} }, -/**/ {{0x3ff00000, 0x00000000} }, -/**/ {{0x3fefffe0, 0x001fffe0} }, -/**/ {{0x3fefffc0, 0x007fff00} }, -/**/ {{0x3fefffa0, 0x011ffca0} }, -/**/ {{0x3fefff80, 0x01fff800} }, -/**/ {{0x3fefff60, 0x031ff060} }, -/**/ {{0x3fefff40, 0x047fe501} }, -/**/ {{0x3fefff20, 0x061fd521} }, -/**/ {{0x3fefff00, 0x07ffc002} }, -/**/ {{0x3feffee0, 0x0a1fa4e3} }, -/**/ {{0x3feffec0, 0x0c7f8305} }, -/**/ {{0x3feffea0, 0x0f1f59a7} }, -/**/ {{0x3feffe80, 0x11ff280a} }, -/**/ {{0x3feffe60, 0x151eed6e} }, -/**/ {{0x3feffe40, 0x187ea913} }, -/**/ {{0x3feffe20, 0x1c1e5a39} }, -/**/ {{0x3feffe00, 0x1ffe0020} }, -/**/ {{0x3feffde0, 0x241d9a09} }, -/**/ {{0x3feffdc0, 0x287d2733} }, -/**/ {{0x3feffda0, 0x2d1ca6e0} }, -/**/ {{0x3feffd80, 0x31fc184e} }, -/**/ {{0x3feffd60, 0x371b7abf} }, -/**/ {{0x3feffd40, 0x3c7acd72} }, -/**/ {{0x3feffd20, 0x421a0fa9} }, -/**/ {{0x3feffd00, 0x47f940a2} }, -/**/ {{0x3feffce0, 0x4e185f9f} }, -/**/ {{0x3feffcc0, 0x54776bdf} }, -/**/ {{0x3feffca0, 0x5b1664a3} }, -/**/ {{0x3feffc80, 0x61f5492c} }, -/**/ {{0x3feffc60, 0x691418b9} }, -/**/ {{0x3feffc40, 0x7072d28b} }, -/**/ {{0x3feffc20, 0x781175e3} }, -/**/ {{0x3feffc00, 0x7ff00200} }, -/**/ {{0x3feffbe0, 0x880e7623} }, -/**/ {{0x3feffbc0, 0x906cd18c} }, -/**/ {{0x3feffba0, 0x990b137c} }, -/**/ {{0x3feffb80, 0xa1e93b34} }, -/**/ {{0x3feffb60, 0xab0747f3} }, -/**/ {{0x3feffb40, 0xb46538fa} }, -/**/ {{0x3feffb20, 0xbe030d89} }, -/**/ {{0x3feffb00, 0xc7e0c4e1} }, -/**/ {{0x3feffae0, 0xd1fe5e43} }, -/**/ {{0x3feffac0, 0xdc5bd8ee} }, -/**/ {{0x3feffaa0, 0xe6f93424} }, -/**/ {{0x3feffa80, 0xf1d66f25} }, -/**/ {{0x3feffa60, 0xfcf38931} }, -/**/ {{0x3feffa41, 0x08508189} }, -/**/ {{0x3feffa21, 0x13ed576d} }, -/**/ {{0x3feffa01, 0x1fca0a1e} }, -/**/ {{0x3feff9e1, 0x2be698dd} }, -/**/ {{0x3feff9c1, 0x384302e9} }, -/**/ {{0x3feff9a1, 0x44df4785} }, -/**/ {{0x3feff981, 0x51bb65ef} }, -/**/ {{0x3feff961, 0x5ed75d6a} }, -/**/ {{0x3feff941, 0x6c332d34} }, -/**/ {{0x3feff921, 0x79ced490} }, -/**/ {{0x3feff901, 0x87aa52be} }, -/**/ {{0x3feff8e1, 0x95c5a6fe} }, -/**/ {{0x3feff8c1, 0xa420d091} }, -/**/ {{0x3feff8a1, 0xb2bbceb7} }, -/**/ {{0x3feff881, 0xc196a0b2} }, -/**/ {{0x3feff861, 0xd0b145c2} }, -/**/ {{0x3feff841, 0xe00bbd28} }, -/**/ {{0x3feff821, 0xefa60624} }, -/**/ {{0x3feff801, 0xff801ff8} }, -/**/ {{0x3feff7e2, 0x0f9a09e3} }, -/**/ {{0x3feff7c2, 0x1ff3c328} }, -/**/ {{0x3feff7a2, 0x308d4b05} }, -/**/ {{0x3feff782, 0x4166a0bd} }, -/**/ {{0x3feff762, 0x527fc390} }, -/**/ {{0x3feff742, 0x63d8b2bf} }, -/**/ {{0x3feff722, 0x75716d8b} }, -/**/ {{0x3feff702, 0x8749f334} }, -/**/ {{0x3feff6e2, 0x996242fb} }, -/**/ {{0x3feff6c2, 0xabba5c21} }, -/**/ {{0x3feff6a2, 0xbe523de8} }, -/**/ {{0x3feff682, 0xd129e78f} }, -/**/ {{0x3feff662, 0xe4415858} }, -/**/ {{0x3feff642, 0xf7988f84} }, -/**/ {{0x3feff623, 0x0b2f8c54} }, -/**/ {{0x3feff603, 0x1f064e08} }, -/**/ {{0x3feff5e3, 0x331cd3e1} }, -/**/ {{0x3feff5c3, 0x47731d21} }, -/**/ {{0x3feff5a3, 0x5c092908} }, -/**/ {{0x3feff583, 0x70def6d7} }, -/**/ {{0x3feff563, 0x85f485d0} }, -/**/ {{0x3feff543, 0x9b49d532} }, -/**/ {{0x3feff523, 0xb0dee440} }, -/**/ {{0x3feff503, 0xc6b3b23b} }, -/**/ {{0x3feff4e3, 0xdcc83e62} }, -/**/ {{0x3feff4c3, 0xf31c87f8} }, -/**/ {{0x3feff4a4, 0x09b08e3d} }, -/**/ {{0x3feff484, 0x20845073} }, -/**/ {{0x3feff464, 0x3797cdda} }, -/**/ {{0x3feff444, 0x4eeb05b4} }, -/**/ {{0x3feff424, 0x667df741} }, -/**/ {{0x3feff404, 0x7e50a1c3} }, -/**/ {{0x3feff3e4, 0x9663047b} }, -/**/ {{0x3feff3c4, 0xaeb51eaa} }, -/**/ {{0x3feff3a4, 0xc746ef91} }, -/**/ {{0x3feff384, 0xe0187672} }, -/**/ {{0x3feff364, 0xf929b28d} }, -/**/ {{0x3feff345, 0x127aa323} }, -/**/ {{0x3feff325, 0x2c0b4776} }, -/**/ {{0x3feff305, 0x45db9ec7} }, -/**/ {{0x3feff2e5, 0x5feba858} }, -/**/ {{0x3feff2c5, 0x7a3b6369} }, -/**/ {{0x3feff2a5, 0x94cacf3b} }, -/**/ {{0x3feff285, 0xaf99eb11} }, -/**/ {{0x3feff265, 0xcaa8b62a} }, -/**/ {{0x3feff245, 0xe5f72fc9} }, -/**/ {{0x3feff226, 0x0185572f} }, -/**/ {{0x3feff206, 0x1d532b9d} }, -/**/ {{0x3feff1e6, 0x3960ac54} }, -/**/ {{0x3feff1c6, 0x55add896} }, -/**/ {{0x3feff1a6, 0x723aafa3} }, -/**/ {{0x3feff186, 0x8f0730be} }, -/**/ {{0x3feff166, 0xac135b27} }, -/**/ {{0x3feff146, 0xc95f2e21} }, -/**/ {{0x3feff126, 0xe6eaa8eb} }, -/**/ {{0x3feff107, 0x04b5cac9} }, -/**/ {{0x3feff0e7, 0x22c092fb} }, -/**/ {{0x3feff0c7, 0x410b00c2} }, -/**/ {{0x3feff0a7, 0x5f951360} }, -/**/ {{0x3feff087, 0x7e5eca16} }, -/**/ {{0x3feff067, 0x9d682426} }, -/**/ {{0x3feff047, 0xbcb120d2} }, -/**/ {{0x3feff027, 0xdc39bf5a} }, -/**/ {{0x3feff007, 0xfc01ff00} }, -/**/ {{0x3fefefe8, 0x1c09df07} }, -/**/ {{0x3fefefc8, 0x3c515eae} }, -/**/ {{0x3fefefa8, 0x5cd87d38} }, -/**/ {{0x3fefef88, 0x7d9f39e6} }, -/**/ {{0x3fefef68, 0x9ea593fa} }, -/**/ {{0x3fefef48, 0xbfeb8ab5} }, -/**/ {{0x3fefef28, 0xe1711d5a} }, -/**/ {{0x3fefef09, 0x03364b28} }, -/**/ {{0x3fefeee9, 0x253b1363} }, -/**/ {{0x3fefeec9, 0x477f754b} }, -/**/ {{0x3fefeea9, 0x6a037022} }, -/**/ {{0x3fefee89, 0x8cc7032a} }, -/**/ {{0x3fefee69, 0xafca2da5} }, -/**/ {{0x3fefee49, 0xd30ceed4} }, -/**/ {{0x3fefee29, 0xf68f45f8} }, -/**/ {{0x3fefee0a, 0x1a513254} }, -/**/ {{0x3fefedea, 0x3e52b329} }, -/**/ {{0x3fefedca, 0x6293c7b8} }, -/**/ {{0x3fefedaa, 0x87146f44} }, -/**/ {{0x3fefed8a, 0xabd4a90e} }, -/**/ {{0x3fefed6a, 0xd0d47458} }, -/**/ {{0x3fefed4a, 0xf613d064} }, -/**/ {{0x3fefed2b, 0x1b92bc73} }, -/**/ {{0x3fefed0b, 0x415137c7} }, -/**/ {{0x3fefeceb, 0x674f41a2} }, -/**/ {{0x3fefeccb, 0x8d8cd945} }, -/**/ {{0x3fefecab, 0xb409fdf3} }, -/**/ {{0x3fefec8b, 0xdac6aeed} }, -/**/ {{0x3fefec6c, 0x01c2eb76} }, -/**/ {{0x3fefec4c, 0x28feb2ce} }, -/**/ {{0x3fefec2c, 0x507a0437} }, -/**/ {{0x3fefec0c, 0x7834def5} }, -/**/ {{0x3fefebec, 0xa02f4247} }, -/**/ {{0x3fefebcc, 0xc8692d71} }, -/**/ {{0x3fefebac, 0xf0e29fb4} }, -/**/ {{0x3fefeb8d, 0x199b9852} }, -/**/ {{0x3fefeb6d, 0x4294168d} }, -/**/ {{0x3fefeb4d, 0x6bcc19a7} }, -/**/ {{0x3fefeb2d, 0x9543a0e2} }, -/**/ {{0x3fefeb0d, 0xbefaab7f} }, -/**/ {{0x3fefeaed, 0xe8f138c2} }, -/**/ {{0x3fefeace, 0x132747ea} }, -/**/ {{0x3fefeaae, 0x3d9cd83c} }, -/**/ {{0x3fefea8e, 0x6851e8f7} }, -/**/ {{0x3fefea6e, 0x93467960} }, -/**/ {{0x3fefea4e, 0xbe7a88b7} }, -/**/ {{0x3fefea2e, 0xe9ee163f} }, -/**/ {{0x3fefea0f, 0x15a12139} }, -/**/ {{0x3fefe9ef, 0x4193a8e8} }, -/**/ {{0x3fefe9cf, 0x6dc5ac8e} }, -/**/ {{0x3fefe9af, 0x9a372b6d} }, -/**/ {{0x3fefe98f, 0xc6e824c6} }, -/**/ {{0x3fefe96f, 0xf3d897dd} }, - }; - - static const number - Lu[182][2] = { /* log(ui) */ -/**/ {{{0xbfd63003, 0x0b3aac49} }, -/**/ {{0xbc6dc18c, 0xe51fff99} },}, -/**/ {{{0xbfd5d5bd, 0xdf595f30} }, -/**/ {{0x3c765411, 0x48cbb8a2} },}, -/**/ {{{0xbfd57bf7, 0x53c8d1fb} }, -/**/ {{0x3c60908d, 0x15f88b63} },}, -/**/ {{{0xbfd522ae, 0x0738a3d8} }, -/**/ {{0x3c68f7e9, 0xb38a6979} },}, -/**/ {{{0xbfd4c9e0, 0x9e172c3c} }, -/**/ {{0x3c512361, 0x5b147a5d} },}, -/**/ {{{0xbfd4718d, 0xc271c41b} }, -/**/ {{0xbc38fb4c, 0x14c56eef} },}, -/**/ {{{0xbfd419b4, 0x23d5e8c7} }, -/**/ {{0xbc60dbb2, 0x43827392} },}, -/**/ {{{0xbfd3c252, 0x77333184} }, -/**/ {{0x3c72ad27, 0xe50a8ec6} },}, -/**/ {{{0xbfd36b67, 0x76be1117} }, -/**/ {{0x3c5324f0, 0xe883858e} },}, -/**/ {{{0xbfd314f1, 0xe1d35ce4} }, -/**/ {{0x3c73d699, 0x09e5c3dc} },}, -/**/ {{{0xbfd2bef0, 0x7cdc9354} }, -/**/ {{0x3c782dad, 0x7fd86088} },}, -/**/ {{{0xbfd26962, 0x1134db92} }, -/**/ {{0xbc7e0efa, 0xdd9db02b} },}, -/**/ {{{0xbfd21445, 0x6d0eb8d4} }, -/**/ {{0xbc6f7ae9, 0x1aeba60a} },}, -/**/ {{{0xbfd1bf99, 0x635a6b95} }, -/**/ {{0x3c612aeb, 0x84249223} },}, -/**/ {{{0xbfd16b5c, 0xcbacfb73} }, -/**/ {{0xbc766fbd, 0x28b40935} },}, -/**/ {{{0xbfd1178e, 0x8227e47c} }, -/**/ {{0x3c60e63a, 0x5f01c691} },}, -/**/ {{{0xbfd0c42d, 0x676162e3} }, -/**/ {{0xbc5162c7, 0x9d5d11ee} },}, -/**/ {{{0xbfd07138, 0x604d5862} }, -/**/ {{0xbc7cdb16, 0xed4e9138} },}, -/**/ {{{0xbfd01eae, 0x5626c691} }, -/**/ {{0x3c418290, 0xbd2932e2} },}, -/**/ {{{0xbfcf991c, 0x6cb3b379} }, -/**/ {{0xbc6f6650, 0x66f980a2} },}, -/**/ {{{0xbfcef5ad, 0xe4dcffe6} }, -/**/ {{0x3c508ab2, 0xddc708a0} },}, -/**/ {{{0xbfce530e, 0xffe71012} }, -/**/ {{0xbc422760, 0x41f43042} },}, -/**/ {{{0xbfcdb13d, 0xb0d48940} }, -/**/ {{0xbc5aa11d, 0x49f96cb9} },}, -/**/ {{{0xbfcd1037, 0xf2655e7b} }, -/**/ {{0xbc660629, 0x242471a2} },}, -/**/ {{{0xbfcc6ffb, 0xc6f00f71} }, -/**/ {{0x3c68e58b, 0x2c57a4a5} },}, -/**/ {{{0xbfcbd087, 0x383bd8ad} }, -/**/ {{0xbc3dd355, 0xf6a516d7} },}, -/**/ {{{0xbfcb31d8, 0x575bce3d} }, -/**/ {{0x3c66353a, 0xb386a94d} },}, -/**/ {{{0xbfca93ed, 0x3c8ad9e3} }, -/**/ {{0xbc6bcafa, 0x9de97203} },}, -/**/ {{{0xbfc9f6c4, 0x07089664} }, -/**/ {{0xbc435a19, 0x605e67ef} },}, -/**/ {{{0xbfc95a5a, 0xdcf7017f} }, -/**/ {{0xbc5142c5, 0x07fb7a3d} },}, -/**/ {{{0xbfc8beaf, 0xeb38fe8c} }, -/**/ {{0xbc555aa8, 0xb6997a40} },}, -/**/ {{{0xbfc823c1, 0x6551a3c2} }, -/**/ {{0x3c61232c, 0xe70be781} },}, -/**/ {{{0xbfc7898d, 0x85444c73} }, -/**/ {{0xbc5ef8f6, 0xebcfb201} },}, -/**/ {{{0xbfc6f012, 0x8b756abc} }, -/**/ {{0x3c68de59, 0xc21e166c} },}, -/**/ {{{0xbfc6574e, 0xbe8c133a} }, -/**/ {{0x3c3d34f0, 0xf4621bed} },}, -/**/ {{{0xbfc5bf40, 0x6b543db2} }, -/**/ {{0x3c21f5b4, 0x4c0df7e7} },}, -/**/ {{{0xbfc527e5, 0xe4a1b58d} }, -/**/ {{0x3c271a96, 0x82395bfd} },}, -/**/ {{{0xbfc4913d, 0x8333b561} }, -/**/ {{0x3c50d560, 0x4930f135} },}, -/**/ {{{0xbfc3fb45, 0xa59928cc} }, -/**/ {{0x3c6d87e6, 0xa354d056} },}, -/**/ {{{0xbfc365fc, 0xb0159016} }, -/**/ {{0xbc57d411, 0xa5b944ad} },}, -/**/ {{{0xbfc2d161, 0x0c86813a} }, -/**/ {{0x3c5499a3, 0xf25af95f} },}, -/**/ {{{0xbfc23d71, 0x2a49c202} }, -/**/ {{0x3c66e381, 0x61051d69} },}, -/**/ {{{0xbfc1aa2b, 0x7e23f72a} }, -/**/ {{0x3c4c6ef1, 0xd9b2ef7e} },}, -/**/ {{{0xbfc1178e, 0x8227e47c} }, -/**/ {{0x3c50e63a, 0x5f01c691} },}, -/**/ {{{0xbfc08598, 0xb59e3a07} }, -/**/ {{0x3c6dd700, 0x9902bf32} },}, -/**/ {{{0xbfbfe891, 0x39dbd566} }, -/**/ {{0x3c5ac9f4, 0x215f9393} },}, -/**/ {{{0xbfbec739, 0x830a1120} }, -/**/ {{0x3c4a2bf9, 0x91780d3f} },}, -/**/ {{{0xbfbda727, 0x638446a2} }, -/**/ {{0xbc5401fa, 0x71733019} },}, -/**/ {{{0xbfbc8858, 0x01bc4b23} }, -/**/ {{0xbc5a38cb, 0x559a6706} },}, -/**/ {{{0xbfbb6ac8, 0x8dad5b1c} }, -/**/ {{0x3c40057e, 0xed1ca59f} },}, -/**/ {{{0xbfba4e76, 0x40b1bc38} }, -/**/ {{0x3c55b5ca, 0x203e4259} },}, -/**/ {{{0xbfb9335e, 0x5d594989} }, -/**/ {{0x3c5478a8, 0x5704ccb7} },}, -/**/ {{{0xbfb8197e, 0x2f40e3f0} }, -/**/ {{0xbc3b9f2d, 0xffbeed43} },}, -/**/ {{{0xbfb700d3, 0x0aeac0e1} }, -/**/ {{0x3c272566, 0x212cdd05} },}, -/**/ {{{0xbfb5e95a, 0x4d9791cb} }, -/**/ {{0xbc5f3874, 0x5c5c450a} },}, -/**/ {{{0xbfb4d311, 0x5d207eac} }, -/**/ {{0xbc5769f4, 0x2c7842cc} },}, -/**/ {{{0xbfb3bdf5, 0xa7d1ee64} }, -/**/ {{0xbc47a976, 0xd3b5b45f} },}, -/**/ {{{0xbfb2aa04, 0xa44717a5} }, -/**/ {{0x3c5d15d3, 0x8d2fa3f7} },}, -/**/ {{{0xbfb1973b, 0xd1465567} }, -/**/ {{0x3c475583, 0x67a6acf6} },}, -/**/ {{{0xbfb08598, 0xb59e3a07} }, -/**/ {{0x3c5dd700, 0x9902bf32} },}, -/**/ {{{0xbfaeea31, 0xc006b87c} }, -/**/ {{0x3c43e4fc, 0x93b7b66c} },}, -/**/ {{{0xbfaccb73, 0xcdddb2cc} }, -/**/ {{0x3c4e48fb, 0x0500efd4} },}, -/**/ {{{0xbfaaaef2, 0xd0fb10fc} }, -/**/ {{0xbc2a353b, 0xb42e0add} },}, -/**/ {{{0xbfa894aa, 0x149fb343} }, -/**/ {{0xbc3a8be9, 0x7660a23d} },}, -/**/ {{{0xbfa67c94, 0xf2d4bb58} }, -/**/ {{0xbc40413e, 0x6505e603} },}, -/**/ {{{0xbfa466ae, 0xd42de3ea} }, -/**/ {{0x3c4cdd6f, 0x7f4a137e} },}, -/**/ {{{0xbfa252f3, 0x2f8d183f} }, -/**/ {{0x3c4947f7, 0x92615916} },}, -/**/ {{{0xbfa0415d, 0x89e74444} }, -/**/ {{0xbc4c05cf, 0x1d753622} },}, -/**/ {{{0xbf9c63d2, 0xec14aaf2} }, -/**/ {{0x3c3ce030, 0xa686bd86} },}, -/**/ {{{0xbf984925, 0x28c8cabf} }, -/**/ {{0x3c3d192d, 0x0619fa67} },}, -/**/ {{{0xbf9432a9, 0x25980cc1} }, -/**/ {{0x3c38cdaf, 0x39004192} },}, -/**/ {{{0xbf902056, 0x58935847} }, -/**/ {{0xbc327c8e, 0x8416e71f} },}, -/**/ {{{0xbf882448, 0xa388a2aa} }, -/**/ {{0xbc104b16, 0x137f09a0} },}, -/**/ {{{0xbf801015, 0x7588de71} }, -/**/ {{0xbc146662, 0xd417ced0} },}, -/**/ {{{0xbf700805, 0x59588b35} }, -/**/ {{0xbc1f9663, 0x8cf63677} },}, -/**/ {{{0x00000000, 0x00000000} }, -/**/ {{0x00000000, 0x00000000} },}, -/**/ {{{0x3f6ff00a, 0xa2b10bc0} }, -/**/ {{0x3c02821a, 0xd5a6d353} },}, -/**/ {{{0x3f7fe02a, 0x6b106789} }, -/**/ {{0xbbce44b7, 0xe3711ebf} },}, -/**/ {{{0x3f87dc47, 0x5f810a77} }, -/**/ {{0xbc116d76, 0x87d3df21} },}, -/**/ {{{0x3f8fc0a8, 0xb0fc03e4} }, -/**/ {{0xbc183092, 0xc59642a1} },}, -/**/ {{{0x3f93cea4, 0x4346a575} }, -/**/ {{0xbc10cb5a, 0x902b3a1c} },}, -/**/ {{{0x3f97b91b, 0x07d5b11b} }, -/**/ {{0xbc35b602, 0xace3a510} },}, -/**/ {{{0x3f9b9fc0, 0x27af9198} }, -/**/ {{0xbbf0ae69, 0x229dc868} },}, -/**/ {{{0x3f9f829b, 0x0e783300} }, -/**/ {{0x3c333e3f, 0x04f1ef23} },}, -/**/ {{{0x3fa1b0d9, 0x8923d980} }, -/**/ {{0xbc3e9ae8, 0x89bac481} },}, -/**/ {{{0x3fa39e87, 0xb9febd60} }, -/**/ {{0xbc45bfa9, 0x37f551bb} },}, -/**/ {{{0x3fa58a5b, 0xafc8e4d5} }, -/**/ {{0xbc4ce55c, 0x2b4e2b72} },}, -/**/ {{{0x3fa77458, 0xf632dcfc} }, -/**/ {{0x3c418d3c, 0xa87b9296} },}, -/**/ {{{0x3fa95c83, 0x0ec8e3eb} }, -/**/ {{0x3c4f5a0e, 0x80520bf2} },}, -/**/ {{{0x3fab42dd, 0x711971bf} }, -/**/ {{0xbc3eb975, 0x9c130499} },}, -/**/ {{{0x3fad276b, 0x8adb0b52} }, -/**/ {{0x3c21e3c5, 0x3257fd47} },}, -/**/ {{{0x3faf0a30, 0xc01162a6} }, -/**/ {{0x3c485f32, 0x5c5bbacd} },}, -/**/ {{{0x3fb07598, 0x3598e471} }, -/**/ {{0x3c480da5, 0x333c45b8} },}, -/**/ {{{0x3fb16536, 0xeea37ae1} }, -/**/ {{0xbc379da3, 0xe8c22cda} },}, -/**/ {{{0x3fb253f6, 0x2f0a1417} }, -/**/ {{0xbc1c1259, 0x63fc4cfd} },}, -/**/ {{{0x3fb341d7, 0x961bd1d1} }, -/**/ {{0xbc5b599f, 0x227becbb} },}, -/**/ {{{0x3fb42edc, 0xbea646f0} }, -/**/ {{0x3c4ddd4f, 0x935996c9} },}, -/**/ {{{0x3fb51b07, 0x3f06183f} }, -/**/ {{0x3c5a49e3, 0x9a1a8be4} },}, -/**/ {{{0x3fb60658, 0xa93750c4} }, -/**/ {{0xbc538845, 0x8ec21b6a} },}, -/**/ {{{0x3fb6f0d2, 0x8ae56b4c} }, -/**/ {{0xbc5906d9, 0x9184b992} },}, -/**/ {{{0x3fb7da76, 0x6d7b12cd} }, -/**/ {{0xbc5eeedf, 0xcdd94131} },}, -/**/ {{{0x3fb8c345, 0xd6319b21} }, -/**/ {{0xbc24a697, 0xab3424a9} },}, -/**/ {{{0x3fb9ab42, 0x462033ad} }, -/**/ {{0xbc42099e, 0x1c184e8e} },}, -/**/ {{{0x3fba926d, 0x3a4ad563} }, -/**/ {{0x3c5942f4, 0x8aa70ea9} },}, -/**/ {{{0x3fbb78c8, 0x2bb0eda1} }, -/**/ {{0x3c20878c, 0xf0327e21} },}, -/**/ {{{0x3fbc5e54, 0x8f5bc743} }, -/**/ {{0x3c35d617, 0xef8161b1} },}, -/**/ {{{0x3fbd4313, 0xd66cb35d} }, -/**/ {{0x3c5790dd, 0x951d90fa} },}, -/**/ {{{0x3fbe2707, 0x6e2af2e6} }, -/**/ {{0xbc361578, 0x001e0162} },}, -/**/ {{{0x3fbf0a30, 0xc01162a6} }, -/**/ {{0x3c585f32, 0x5c5bbacd} },}, -/**/ {{{0x3fbfec91, 0x31dbeabb} }, -/**/ {{0xbc55746b, 0x9981b36c} },}, -/**/ {{{0x3fc06715, 0x12ca596e} }, -/**/ {{0x3c550c64, 0x7eb86499} },}, -/**/ {{{0x3fc0d77e, 0x7cd08e59} }, -/**/ {{0x3c69a5dc, 0x5e9030ac} },}, -/**/ {{{0x3fc14785, 0x846742ac} }, -/**/ {{0x3c6a2881, 0x3e3a7f07} },}, -/**/ {{{0x3fc1b72a, 0xd52f67a0} }, -/**/ {{0x3c548302, 0x3472cd74} },}, -/**/ {{{0x3fc2266f, 0x190a5acb} }, -/**/ {{0x3c6f547b, 0xf1809e88} },}, -/**/ {{{0x3fc29552, 0xf81ff523} }, -/**/ {{0x3c630177, 0x1c407dbf} },}, -/**/ {{{0x3fc303d7, 0x18e47fd3} }, -/**/ {{0xbc06b9c7, 0xd96091fa} },}, -/**/ {{{0x3fc371fc, 0x201e8f74} }, -/**/ {{0x3c5de6cb, 0x62af18a0} },}, -/**/ {{{0x3fc3dfc2, 0xb0ecc62a} }, -/**/ {{0xbc5ab3a8, 0xe7d81017} },}, -/**/ {{{0x3fc44d2b, 0x6ccb7d1e} }, -/**/ {{0x3c69f4f6, 0x543e1f88} },}, -/**/ {{{0x3fc4ba36, 0xf39a55e5} }, -/**/ {{0x3c668981, 0xbcc36756} },}, -/**/ {{{0x3fc526e5, 0xe3a1b438} }, -/**/ {{0xbc6746ff, 0x8a470d3a} },}, -/**/ {{{0x3fc59338, 0xd9982086} }, -/**/ {{0xbc565d22, 0xaa8ad7cf} },}, -/**/ {{{0x3fc5ff30, 0x70a793d4} }, -/**/ {{0xbc5bc60e, 0xfafc6f6e} },}, -/**/ {{{0x3fc66acd, 0x4272ad51} }, -/**/ {{0xbc50900e, 0x4e1ea8b2} },}, -/**/ {{{0x3fc6d60f, 0xe719d21d} }, -/**/ {{0xbc6caae2, 0x68ecd179} },}, -/**/ {{{0x3fc740f8, 0xf54037a5} }, -/**/ {{0xbc5b2640, 0x62a84cdb} },}, -/**/ {{{0x3fc7ab89, 0x0210d909} }, -/**/ {{0x3c4be36b, 0x2d6a0608} },}, -/**/ {{{0x3fc815c0, 0xa14357eb} }, -/**/ {{0xbc54be48, 0x073a0564} },}, -/**/ {{{0x3fc87fa0, 0x6520c911} }, -/**/ {{0xbc6bf7fd, 0xbfa08d9a} },}, -/**/ {{{0x3fc8e928, 0xde886d41} }, -/**/ {{0xbc6569d8, 0x51a56770} },}, -/**/ {{{0x3fc9525a, 0x9cf456b4} }, -/**/ {{0x3c6d904c, 0x1d4e2e26} },}, -/**/ {{{0x3fc9bb36, 0x2e7dfb83} }, -/**/ {{0x3c6575e3, 0x1f003e0c} },}, -/**/ {{{0x3fca23bc, 0x1fe2b563} }, -/**/ {{0x3c493711, 0xb07a998c} },}, -/**/ {{{0x3fca8bec, 0xfc882f19} }, -/**/ {{0xbc5e8c37, 0x918c39eb} },}, -/**/ {{{0x3fcaf3c9, 0x4e80bff3} }, -/**/ {{0xbc5398cf, 0xf3641985} },}, -/**/ {{{0x3fcb5b51, 0x9e8fb5a4} }, -/**/ {{0x3c6ba27f, 0xdc19e1a0} },}, -/**/ {{{0x3fcbc286, 0x742d8cd6} }, -/**/ {{0x3c54fce7, 0x44870f55} },}, -/**/ {{{0x3fcc2968, 0x558c18c1} }, -/**/ {{0xbc673dee, 0x38a3fb6b} },}, -/**/ {{{0x3fcc8ff7, 0xc79a9a22} }, -/**/ {{0xbc64f689, 0xf8434012} },}, -/**/ {{{0x3fccf635, 0x4e09c5dc} }, -/**/ {{0x3c6239a0, 0x7d55b695} },}, -/**/ {{{0x3fcd5c21, 0x6b4fbb91} }, -/**/ {{0x3c66e443, 0x597e4d40} },}, -/**/ {{{0x3fcdc1bc, 0xa0abec7d} }, -/**/ {{0x3c6834c5, 0x1998b6fc} },}, -/**/ {{{0x3fce2707, 0x6e2af2e6} }, -/**/ {{0xbc461578, 0x001e0162} },}, -/**/ {{{0x3fce8c02, 0x52aa5a60} }, -/**/ {{0xbc46e03a, 0x39bfc89b} },}, -/**/ {{{0x3fcef0ad, 0xcbdc5936} }, -/**/ {{0x3c648637, 0x950dc20d} },}, -/**/ {{{0x3fcf550a, 0x564b7b37} }, -/**/ {{0x3c2c5f6d, 0xfd018c37} },}, -/**/ {{{0x3fcfb918, 0x6d5e3e2b} }, -/**/ {{0xbc6caaae, 0x64f21acb} },}, -/**/ {{{0x3fd00e6c, 0x45ad501d} }, -/**/ {{0xbc6cb956, 0x8ff6fead} },}, -/**/ {{{0x3fd04025, 0x94b4d041} }, -/**/ {{0xbc628ec2, 0x17a5022d} },}, -/**/ {{{0x3fd071b8, 0x5fcd590d} }, -/**/ {{0x3c5d1707, 0xf97bde80} },}, -/**/ {{{0x3fd0a324, 0xe27390e3} }, -/**/ {{0x3c77dcfd, 0xe8061c03} },}, -/**/ {{{0x3fd0d46b, 0x579ab74b} }, -/**/ {{0x3c603ec8, 0x1c3cbd92} },}, -/**/ {{{0x3fd1058b, 0xf9ae4ad5} }, -/**/ {{0x3c589fa0, 0xab4cb31d} },}, -/**/ {{{0x3fd13687, 0x0293a8b0} }, -/**/ {{0x3c77b662, 0x98edd24a} },}, -/**/ {{{0x3fd1675c, 0xababa60e} }, -/**/ {{0x3c2ce63e, 0xab883717} },}, -/**/ {{{0x3fd1980d, 0x2dd4236f} }, -/**/ {{0x3c79d3d1, 0xb0e4d147} },}, -/**/ {{{0x3fd1c898, 0xc16999fb} }, -/**/ {{0xbc30e5c6, 0x2aff1c44} },}, -/**/ {{{0x3fd1f8ff, 0x9e48a2f3} }, -/**/ {{0xbc7c9fdf, 0x9a0c4b07} },}, -/**/ {{{0x3fd22941, 0xfbcf7966} }, -/**/ {{0xbc776f5e, 0xb09628af} },}, -/**/ {{{0x3fd25960, 0x10df763a} }, -/**/ {{0xbc50f76c, 0x57075e9e} },}, -/**/ {{{0x3fd2895a, 0x13de86a3} }, -/**/ {{0x3c77ad24, 0xc13f040e} },}, -/**/ {{{0x3fd2b930, 0x3ab89d25} }, -/**/ {{0xbc7896b5, 0xfd852ad4} },}, -/**/ {{{0x3fd2e8e2, 0xbae11d31} }, -/**/ {{0xbc78f4cd, 0xb95ebdf9} },}, -/**/ {{{0x3fd31871, 0xc9544185} }, -/**/ {{0xbc351acc, 0x4c09b379} },}, -/**/ {{{0x3fd347dd, 0x9a987d55} }, -/**/ {{0xbc64dd4c, 0x580919f8} },}, -/**/ {{{0x3fd37726, 0x62bfd85b} }, -/**/ {{0xbc4b5629, 0xd8117de7} },}, -/**/ {{{0x3fd3a64c, 0x556945ea} }, -/**/ {{0xbc6c6865, 0x1945f97c} },}, -/**/ {{{0x3fd3d54f, 0xa5c1f710} }, -/**/ {{0xbc7e3265, 0xc6a1c98d} },}, -/**/ {{{0x3fd40430, 0x8686a7e4} }, -/**/ {{0xbc70bcfb, 0x6082ce6d} },}, -/**/ {{{0x3fd432ef, 0x2a04e814} }, -/**/ {{0xbc729931, 0x715ac903} },}, -/**/ {{{0x3fd4618b, 0xc21c5ec2} }, -/**/ {{0x3c7f42de, 0xcdeccf1d} },}, -/**/ {{{0x3fd49006, 0x804009d1} }, -/**/ {{0xbc69ffc3, 0x41f177dc} },}, -/**/ {{{0x3fd4be5f, 0x957778a1} }, -/**/ {{0xbc6259b3, 0x5b04813d} },}, -/**/ {{{0x3fd4ec97, 0x3260026a} }, -/**/ {{0xbc742a87, 0xd977dc5e} },}, -/**/ {{{0x3fd51aad, 0x872df82d} }, -/**/ {{0x3c43927a, 0xc19f55e3} },}, -/**/ {{{0x3fd548a2, 0xc3add263} }, -/**/ {{0xbc6819cf, 0x7e308ddb} },}, -/**/ {{{0x3fd57677, 0x17455a6c} }, -/**/ {{0x3c7526ad, 0xb283660c} },}, -/**/ {{{0x3fd5a42a, 0xb0f4cfe2} }, -/**/ {{0xbc78ebcb, 0x7dee9a3d} },}, -/**/ {{{0x3fd5d1bd, 0xbf5809ca} }, -/**/ {{0x3c742363, 0x83dc7fe1} },}, -/**/ {{{0x3fd5ff30, 0x70a793d4} }, -/**/ {{0xbc6bc60e, 0xfafc6f6e} },}, -/**/ {{{0x3fd62c82, 0xf2b9c795} }, -/**/ {{0x3c67b7af, 0x915300e5} },}, - }; - - static const number - Lv[362][2] = { /* log(vj) */ - -/**/ {{{0xbf6687ec, 0xb72daabf} }, -/**/ {{0x3c052c69, 0x0f13318f} },}, -/**/ {{{0xbf6667d6, 0x3767104f} }, -/**/ {{0x3bd3efa3, 0xd27a7bac} },}, -/**/ {{{0xbf6647bf, 0xd7cd64fb} }, -/**/ {{0x3c09b725, 0x55a89c36} },}, -/**/ {{{0xbf6627a9, 0x9860683b} }, -/**/ {{0x3bcbae22, 0xfebc844a} },}, -/**/ {{{0xbf660793, 0x791fd98a} }, -/**/ {{0xbbfe34af, 0x78fa1cb5} },}, -/**/ {{{0xbf65e77d, 0x7a0b7863} }, -/**/ {{0xbc02f1b1, 0xea78fdd0} },}, -/**/ {{{0xbf65c767, 0x9b230442} }, -/**/ {{0x3bf70d8c, 0x2202b2ca} },}, -/**/ {{{0xbf65a751, 0xdc663ca2} }, -/**/ {{0xbbfdc63d, 0xc3444e64} },}, -/**/ {{{0xbf65873c, 0x3dd4e102} }, -/**/ {{0x3c021b11, 0x370d69c3} },}, -/**/ {{{0xbf656726, 0xbf6eb0de} }, -/**/ {{0xbbfb6da8, 0x154dd8d8} },}, -/**/ {{{0xbf654711, 0x61336bb6} }, -/**/ {{0xbc0b12d2, 0xdf9a4709} },}, -/**/ {{{0xbf6526fc, 0x2322d10a} }, -/**/ {{0x3bf997f2, 0x68d1274f} },}, -/**/ {{{0xbf6506e7, 0x053ca059} }, -/**/ {{0x3c0c2a1f, 0xe70c852a} },}, -/**/ {{{0xbf64e6d2, 0x07809924} }, -/**/ {{0x3c04cc9e, 0xa808538f} },}, -/**/ {{{0xbf64c6bd, 0x29ee7aed} }, -/**/ {{0x3befe68c, 0x7797a4bd} },}, -/**/ {{{0xbf64a6a8, 0x6c860537} }, -/**/ {{0x3c06794d, 0x9efaae3d} },}, -/**/ {{{0xbf648693, 0xcf46f784} }, -/**/ {{0xbbfed318, 0xb2ddd9d1} },}, -/**/ {{{0xbf64667f, 0x5231115a} }, -/**/ {{0x3c061f62, 0x4643624b} },}, -/**/ {{{0xbf64466a, 0xf544123c} }, -/**/ {{0x3c0666a0, 0x9387f11e} },}, -/**/ {{{0xbf642656, 0xb87fb9b0} }, -/**/ {{0x3c0043b2, 0x116ec598} },}, -/**/ {{{0xbf640642, 0x9be3c73c} }, -/**/ {{0xbbfbd84d, 0xd2de6e3e} },}, -/**/ {{{0xbf63e62e, 0x9f6ffa68} }, -/**/ {{0xbbe9149b, 0x433d8c65} },}, -/**/ {{{0xbf63c61a, 0xc32412bb} }, -/**/ {{0xbbf6b88d, 0x08e5a7bb} },}, -/**/ {{{0xbf63a607, 0x06ffcfbe} }, -/**/ {{0xbb9f3c7a, 0xccfac9e2} },}, -/**/ {{{0xbf6385f3, 0x6b02f0fa} }, -/**/ {{0x3bee405c, 0xbec6f6e4} },}, -/**/ {{{0xbf6365df, 0xef2d35f9} }, -/**/ {{0x3bf02993, 0xaf0c0b4c} },}, -/**/ {{{0xbf6345cc, 0x937e5e46} }, -/**/ {{0x3bf9be97, 0xaa64716f} },}, -/**/ {{{0xbf6325b9, 0x57f6296c} }, -/**/ {{0xbbfdeb4d, 0xa2e863ae} },}, -/**/ {{{0xbf6305a6, 0x3c9456f9} }, -/**/ {{0x3c0f3c7f, 0x636d2b2c} },}, -/**/ {{{0xbf62e593, 0x4158a678} }, -/**/ {{0x3c01a8df, 0xb166ca7f} },}, -/**/ {{{0xbf62c580, 0x6642d778} }, -/**/ {{0x3c020ff1, 0x53a2d534} },}, -/**/ {{{0xbf62a56d, 0xab52a987} }, -/**/ {{0xbbe8fef1, 0x0412f1e7} },}, -/**/ {{{0xbf62855b, 0x1087dc35} }, -/**/ {{0xbbfcd17e, 0x4b7ac6c6} },}, -/**/ {{{0xbf626548, 0x95e22f12} }, -/**/ {{0xbbfbfc21, 0x9a8127bf} },}, -/**/ {{{0xbf624536, 0x3b6161af} }, -/**/ {{0x3bd7eda1, 0x66d42390} },}, -/**/ {{{0xbf622524, 0x0105339d} }, -/**/ {{0xbbdf374e, 0x77fedcad} },}, -/**/ {{{0xbf620511, 0xe6cd646f} }, -/**/ {{0x3be1d1fb, 0x52d05dea} },}, -/**/ {{{0xbf61e4ff, 0xecb9b3b8} }, -/**/ {{0x3c02c2fc, 0xffd8e706} },}, -/**/ {{{0xbf61c4ee, 0x12c9e10b} }, -/**/ {{0xbc02b4f8, 0xf1d5cc2c} },}, -/**/ {{{0xbf61a4dc, 0x58fdabfe} }, -/**/ {{0xbc0618c3, 0x1315b191} },}, -/**/ {{{0xbf6184ca, 0xbf54d426} }, -/**/ {{0xbc01f8d5, 0xcb3cdab0} },}, -/**/ {{{0xbf6164b9, 0x45cf1919} }, -/**/ {{0xbc014ff7, 0xc025605a} },}, -/**/ {{{0xbf6144a7, 0xec6c3a6e} }, -/**/ {{0xbbff04ff, 0x87cb08cd} },}, -/**/ {{{0xbf612496, 0xb32bf7bd} }, -/**/ {{0x3bee89b4, 0xe6af1b84} },}, -/**/ {{{0xbf610485, 0x9a0e109e} }, -/**/ {{0x3c07e99e, 0x35a60879} },}, -/**/ {{{0xbf60e474, 0xa11244aa} }, -/**/ {{0x3c04b698, 0x20f2325a} },}, -/**/ {{{0xbf60c463, 0xc838537b} }, -/**/ {{0x3bc0657e, 0x3617200d} },}, -/**/ {{{0xbf60a453, 0x0f7ffcac} }, -/**/ {{0xbc008feb, 0xa5080961} },}, -/**/ {{{0xbf608442, 0x76e8ffd9} }, -/**/ {{0x3bd13002, 0xbb5e1df7} },}, -/**/ {{{0xbf606431, 0xfe731c9d} }, -/**/ {{0xbc0509f3, 0x6e2858c0} },}, -/**/ {{{0xbf604421, 0xa61e1296} }, -/**/ {{0xbc04b556, 0x5f5d9695} },}, -/**/ {{{0xbf602411, 0x6de9a162} }, -/**/ {{0x3c042b89, 0xe79a4e00} },}, -/**/ {{{0xbf600401, 0x55d5889e} }, -/**/ {{0x3be8f98e, 0x1113f403} },}, -/**/ {{{0xbf5fc7e2, 0xbbc30fd4} }, -/**/ {{0xbbfc709b, 0x93382bc9} },}, -/**/ {{{0xbf5f87c3, 0x0c1abdcd} }, -/**/ {{0xbbf2a90d, 0x76a55d1c} },}, -/**/ {{{0xbf5f47a3, 0x9cb19a68} }, -/**/ {{0x3be1b815, 0x76e7826b} },}, -/**/ {{{0xbf5f0784, 0x6d8724e7} }, -/**/ {{0xbbe72d46, 0x2b63756d} },}, -/**/ {{{0xbf5ec765, 0x7e9adc90} }, -/**/ {{0x3beb1a66, 0x73bb17c5} },}, -/**/ {{{0xbf5e8746, 0xcfec40a8} }, -/**/ {{0x3bf11af5, 0xb5e5a553} },}, -/**/ {{{0xbf5e4728, 0x617ad077} }, -/**/ {{0x3bfb2cad, 0xf57dd14f} },}, -/**/ {{{0xbf5e070a, 0x33460b45} }, -/**/ {{0xbbf8db75, 0x4902c8d5} },}, -/**/ {{{0xbf5dc6ec, 0x454d705f} }, -/**/ {{0x3bef5cc6, 0xe8a41057} },}, -/**/ {{{0xbf5d86ce, 0x97907f0f} }, -/**/ {{0x3bed8277, 0xdf8672ef} },}, -/**/ {{{0xbf5d46b1, 0x2a0eb6a3} }, -/**/ {{0xbbc2f9c2, 0x3717e5ee} },}, -/**/ {{{0xbf5d0693, 0xfcc7966b} }, -/**/ {{0x3bf4deed, 0xab4852c6} },}, -/**/ {{{0xbf5cc677, 0x0fba9db6} }, -/**/ {{0xbbf3a2b4, 0x9db2a368} },}, -/**/ {{{0xbf5c865a, 0x62e74bd8} }, -/**/ {{0xbbd2c51d, 0x58fa0c24} },}, -/**/ {{{0xbf5c463d, 0xf64d2024} }, -/**/ {{0x3bf838ca, 0xe3a09391} },}, -/**/ {{{0xbf5c0621, 0xc9eb99ee} }, -/**/ {{0xbbdc2a9e, 0x61b7de71} },}, -/**/ {{{0xbf5bc605, 0xddc2388e} }, -/**/ {{0xbbea9808, 0x4accb195} },}, -/**/ {{{0xbf5b85ea, 0x31d07b5c} }, -/**/ {{0xbbd811a2, 0x032e030b} },}, -/**/ {{{0xbf5b45ce, 0xc615e1b1} }, -/**/ {{0xbbfd5427, 0x821e0b81} },}, -/**/ {{{0xbf5b05b3, 0x9a91eaea} }, -/**/ {{0x3bfffeba, 0x2619306b} },}, -/**/ {{{0xbf5ac598, 0xaf441661} }, -/**/ {{0x3bd22824, 0x9eac7d15} },}, -/**/ {{{0xbf5a857e, 0x042be376} }, -/**/ {{0x3bc20736, 0x24893f0e} },}, -/**/ {{{0xbf5a4563, 0x9948d188} }, -/**/ {{0xbbf58ab4, 0x04d734cd} },}, -/**/ {{{0xbf5a0549, 0x6e9a5ff9} }, -/**/ {{0xbbf22673, 0x5723a6c3} },}, -/**/ {{{0xbf59c52f, 0x84200e2c} }, -/**/ {{0x3bfc81da, 0xa538e8e1} },}, -/**/ {{{0xbf598515, 0xd9d95b83} }, -/**/ {{0xbbfa1a37, 0x2a8e3feb} },}, -/**/ {{{0xbf5944fc, 0x6fc5c767} }, -/**/ {{0x3bf8e1ce, 0x385159f9} },}, -/**/ {{{0xbf5904e3, 0x45e4d13c} }, -/**/ {{0xbbfc4737, 0x1567c7a7} },}, -/**/ {{{0xbf58c4ca, 0x5c35f86e} }, -/**/ {{0x3bf41581, 0x23c9ae0c} },}, -/**/ {{{0xbf5884b1, 0xb2b8bc65} }, -/**/ {{0x3bf70c2c, 0x2b66cfb6} },}, -/**/ {{{0xbf584499, 0x496c9c8d} }, -/**/ {{0xbbdb9042, 0xe5a11e3e} },}, -/**/ {{{0xbf580481, 0x20511854} }, -/**/ {{0xbbf9cf9d, 0x61bcb040} },}, -/**/ {{{0xbf57c469, 0x3765af29} }, -/**/ {{0xbbf65ceb, 0xe26a419b} },}, -/**/ {{{0xbf578451, 0x8ea9e07c} }, -/**/ {{0xbbf1c2f5, 0xb70a4088} },}, -/**/ {{{0xbf57443a, 0x261d2bbf} }, -/**/ {{0xbbbc7b8f, 0x29704ba7} },}, -/**/ {{{0xbf570422, 0xfdbf1065} }, -/**/ {{0x3bca0a54, 0x433ccb3b} },}, -/**/ {{{0xbf56c40c, 0x158f0de3} }, -/**/ {{0x3bd9e257, 0x207cde2d} },}, -/**/ {{{0xbf5683f5, 0x6d8ca3af} }, -/**/ {{0xbbef17a4, 0xf7b51b49} },}, -/**/ {{{0xbf5643df, 0x05b75142} }, -/**/ {{0x3be28239, 0x9d345bf8} },}, -/**/ {{{0xbf5603c8, 0xde0e9614} }, -/**/ {{0xbbde6c21, 0x0918d1bf} },}, -/**/ {{{0xbf55c3b2, 0xf691f1a1} }, -/**/ {{0x3bd37d78, 0x377de4c8} },}, -/**/ {{{0xbf55839d, 0x4f40e365} }, -/**/ {{0x3bf52b7d, 0xbbf7c9d1} },}, -/**/ {{{0xbf554387, 0xe81aeadd} }, -/**/ {{0xbbf0be6a, 0x679c3d9a} },}, -/**/ {{{0xbf550372, 0xc11f878a} }, -/**/ {{0xbbdd9e20, 0xb6cdd88e} },}, -/**/ {{{0xbf54c35d, 0xda4e38ec} }, -/**/ {{0xbbe3b1e7, 0x09302da0} },}, -/**/ {{{0xbf548349, 0x33a67e86} }, -/**/ {{0x3be8cba8, 0x085b922d} },}, -/**/ {{{0xbf544334, 0xcd27d7db} }, -/**/ {{0xbba5f2c9, 0xf024ab43} },}, -/**/ {{{0xbf540320, 0xa6d1c471} }, -/**/ {{0xbbeb31f3, 0xf686cf3d} },}, -/**/ {{{0xbf53c30c, 0xc0a3c3cf} }, -/**/ {{0xbbf74ffe, 0xd4ad32f6} },}, -/**/ {{{0xbf5382f9, 0x1a9d557e} }, -/**/ {{0x3bd2e555, 0x4acb368f} },}, -/**/ {{{0xbf5342e5, 0xb4bdf907} }, -/**/ {{0x3be13442, 0x07812806} },}, -/**/ {{{0xbf5302d2, 0x8f052df6} }, -/**/ {{0x3bf5f429, 0x70b1e756} },}, -/**/ {{{0xbf52c2bf, 0xa97273d7} }, -/**/ {{0xbbf20aa3, 0x43a03fff} },}, -/**/ {{{0xbf5282ad, 0x04054a3a} }, -/**/ {{0xbbed4d57, 0x8bebd7ad} },}, -/**/ {{{0xbf52429a, 0x9ebd30ae} }, -/**/ {{0xbbff9529, 0x5a71c5a4} },}, -/**/ {{{0xbf520288, 0x7999a6c6} }, -/**/ {{0x3bfb055a, 0x54100f9e} },}, -/**/ {{{0xbf51c276, 0x949a2c12} }, -/**/ {{0xbbff6978, 0xa2e9f1b4} },}, -/**/ {{{0xbf518264, 0xefbe402a} }, -/**/ {{0x3bf01fb9, 0xbc188323} },}, -/**/ {{{0xbf514253, 0x8b0562a1} }, -/**/ {{0xbbf7c87c, 0x957bf23a} },}, -/**/ {{{0xbf510242, 0x666f1311} }, -/**/ {{0x3bdc2cb9, 0xc8be6880} },}, -/**/ {{{0xbf50c231, 0x81fad111} }, -/**/ {{0xbbf59fc1, 0x07ba000d} },}, -/**/ {{{0xbf508220, 0xdda81c3d} }, -/**/ {{0xbbf06a0a, 0xbf5c8a0b} },}, -/**/ {{{0xbf504210, 0x79767431} }, -/**/ {{0x3bf3a6cf, 0xa9a705bc} },}, -/**/ {{{0xbf500200, 0x55655889} }, -/**/ {{0xbbe9abe6, 0xbf0fa436} },}, -/**/ {{{0xbf4f83e0, 0xe2e891cc} }, -/**/ {{0x3be4aa59, 0x1b81bf62} },}, -/**/ {{{0xbf4f03c1, 0x9b4589ce} }, -/**/ {{0xbbe60518, 0x8a47f50a} },}, -/**/ {{{0xbf4e83a2, 0xd3e0985f} }, -/**/ {{0x3bed32d8, 0x5ef17e96} },}, -/**/ {{{0xbf4e0384, 0x8cb8bcc3} }, -/**/ {{0xbbeb7b30, 0xf09afa4d} },}, -/**/ {{{0xbf4d8366, 0xc5ccf647} }, -/**/ {{0xbbd527fc, 0xf586cec2} },}, -/**/ {{{0xbf4d0349, 0x7f1c4437} }, -/**/ {{0x3bc2bcf0, 0x4a686886} },}, -/**/ {{{0xbf4c832c, 0xb8a5a5e3} }, -/**/ {{0x3bc98f93, 0x721c2ebe} },}, -/**/ {{{0xbf4c0310, 0x72681a9e} }, -/**/ {{0xbbe20f00, 0xb5308d22} },}, -/**/ {{{0xbf4b82f4, 0xac62a1bf} }, -/**/ {{0xbbe1edd0, 0x9737b561} },}, -/**/ {{{0xbf4b02d9, 0x66943a9f} }, -/**/ {{0xbbcc950b, 0x23f894a1} },}, -/**/ {{{0xbf4a82be, 0xa0fbe49a} }, -/**/ {{0xbb81da04, 0x866bc982} },}, -/**/ {{{0xbf4a02a4, 0x5b989f0f} }, -/**/ {{0xbbd9114d, 0x9d76196e} },}, -/**/ {{{0xbf49828a, 0x96696961} }, -/**/ {{0x3bc10d20, 0xd3292fd6} },}, -/**/ {{{0xbf490271, 0x516d42f4} }, -/**/ {{0xbbee53a3, 0x2e9a5dd5} },}, -/**/ {{{0xbf488258, 0x8ca32b32} }, -/**/ {{0xbbc55af5, 0xd18f8004} },}, -/**/ {{{0xbf480240, 0x480a2185} }, -/**/ {{0xbbb32d23, 0xa9b0178a} },}, -/**/ {{{0xbf478228, 0x83a1255c} }, -/**/ {{0x3be84cc3, 0x8152093a} },}, -/**/ {{{0xbf470211, 0x3f673627} }, -/**/ {{0xbbd0055a, 0xf4881c71} },}, -/**/ {{{0xbf4681fa, 0x7b5b535c} }, -/**/ {{0x3bd2b73f, 0xb98336ea} },}, -/**/ {{{0xbf4601e4, 0x377c7c71} }, -/**/ {{0xbbcdcbed, 0x2ed05089} },}, -/**/ {{{0xbf4581ce, 0x73c9b0e1} }, -/**/ {{0xbbdda0c2, 0x61414697} },}, -/**/ {{{0xbf4501b9, 0x3041f02a} }, -/**/ {{0x3bee5d53, 0x22f8b33c} },}, -/**/ {{{0xbf4481a4, 0x6ce439ca} }, -/**/ {{0xbbe5512f, 0x9c25c999} },}, -/**/ {{{0xbf440190, 0x29af8d47} }, -/**/ {{0x3b7f48c2, 0xa4df0dfd} },}, -/**/ {{{0xbf43817c, 0x66a2ea26} }, -/**/ {{0x3bd157c0, 0x517febd8} },}, -/**/ {{{0xbf430169, 0x23bd4ff0} }, -/**/ {{0xbbe2e229, 0x0176d244} },}, -/**/ {{{0xbf428156, 0x60fdbe33} }, -/**/ {{0x3be64664, 0x175812b3} },}, -/**/ {{{0xbf420144, 0x1e63347c} }, -/**/ {{0xbbe39ab4, 0xd9355524} },}, -/**/ {{{0xbf418132, 0x5becb260} }, -/**/ {{0x3be74b27, 0xb6e1edc9} },}, -/**/ {{{0xbf410121, 0x19993772} }, -/**/ {{0xbbaa390b, 0x393ab56a} },}, -/**/ {{{0xbf408110, 0x5767c34c} }, -/**/ {{0x3bd128e6, 0xf8c7783b} },}, -/**/ {{{0xbf400100, 0x15575589} }, -/**/ {{0x3bec8863, 0xf23ef222} },}, -/**/ {{{0xbf3f01e0, 0xa6cddb8d} }, -/**/ {{0x3b8a9419, 0xcdd29c3f} },}, -/**/ {{{0xbf3e01c2, 0x232b174e} }, -/**/ {{0xbbc7cf55, 0xd5f5b191} },}, -/**/ {{{0xbf3d01a4, 0x9fc45d9e} }, -/**/ {{0x3bddc58f, 0xb5038e7e} },}, -/**/ {{{0xbf3c0188, 0x1c97adca} }, -/**/ {{0x3bc0238d, 0xbb933e41} },}, -/**/ {{{0xbf3b016c, 0x99a30728} }, -/**/ {{0xbbabde04, 0xc3c43664} },}, -/**/ {{{0xbf3a0152, 0x16e46913} }, -/**/ {{0x3bafe081, 0x5adc3673} },}, -/**/ {{{0xbf390138, 0x9459d2eb} }, -/**/ {{0xbbd949da, 0xc2a33d26} },}, -/**/ {{{0xbf380120, 0x12014418} }, -/**/ {{0xbbd3acbc, 0xf76e0326} },}, -/**/ {{{0xbf370108, 0x8fd8bc07} }, -/**/ {{0x3bdbde09, 0x4cd6ce34} },}, -/**/ {{{0xbf3600f2, 0x0dde3a29} }, -/**/ {{0xbbb0bc28, 0x05442a35} },}, -/**/ {{{0xbf3500dc, 0x8c0fbdf9} }, -/**/ {{0x3bd21c68, 0x0908cbf7} },}, -/**/ {{{0xbf3400c8, 0x0a6b46f4} }, -/**/ {{0xbbdbd35e, 0x0f107564} },}, -/**/ {{{0xbf3300b4, 0x88eed4a1} }, -/**/ {{0xbbc22067, 0x49a3dcb8} },}, -/**/ {{{0xbf3200a2, 0x0798668a} }, -/**/ {{0x3bcdb7f0, 0xe7c5d0e5} },}, -/**/ {{{0xbf310090, 0x8665fc3f} }, -/**/ {{0xbbd00add, 0xc7f9d69c} },}, -/**/ {{{0xbf300080, 0x05559559} }, -/**/ {{0x3bddd332, 0xa0e20e2f} },}, -/**/ {{{0xbf2e00e1, 0x08ca62e5} }, -/**/ {{0xbbb15ff9, 0x3a04bb77} },}, -/**/ {{{0xbf2c00c4, 0x0725a061} }, -/**/ {{0x3bc88ab0, 0xcc052f3e} },}, -/**/ {{{0xbf2a00a9, 0x05b8e275} }, -/**/ {{0xbbcbba1a, 0xf5f3cbcf} },}, -/**/ {{{0xbf280090, 0x04802882} }, -/**/ {{0x3bcec900, 0xa5bd7bd0} },}, -/**/ {{{0xbf260079, 0x037771ef} }, -/**/ {{0x3bb77ea0, 0x9b7b54fa} },}, -/**/ {{{0xbf240064, 0x029abe33} }, -/**/ {{0xbbc1bbf0, 0x3ae68d18} },}, -/**/ {{{0xbf220051, 0x01e60cd1} }, -/**/ {{0x3bb1dcd9, 0x2b45cfcd} },}, -/**/ {{{0xbf200040, 0x01555d56} }, -/**/ {{0x3bcddd88, 0x863f53f6} },}, -/**/ {{{0xbf1c0062, 0x01c95eb7} }, -/**/ {{0x3bbd88f7, 0xaa4dfd9a} },}, -/**/ {{{0xbf180048, 0x01200510} }, -/**/ {{0xbb984d46, 0x4f3db50b} },}, -/**/ {{{0xbf140032, 0x00a6ad1c} }, -/**/ {{0x3bb2e44b, 0x28ff1135} },}, -/**/ {{{0xbf100020, 0x00555655} }, -/**/ {{0xbbb62224, 0xccd5f17f} },}, -/**/ {{{0xbf080024, 0x004800a2} }, -/**/ {{0xbb484d09, 0x8d690542} },}, -/**/ {{{0xbf000010, 0x00155575} }, -/**/ {{0xbba56222, 0x37779c0a} },}, -/**/ {{{0xbef00008, 0x00055559} }, -/**/ {{0xbb955622, 0x22cccd5f} },}, -/**/ {{{0x00000000, 0x00000000} }, -/**/ {{0x00000000, 0x00000000} },}, -/**/ {{{0x3eeffff0, 0x000aaaa3} }, -/**/ {{0xbb8553bb, 0xbd110fec} },}, -/**/ {{{0x3effffe0, 0x002aaa6b} }, -/**/ {{0xbb953bbb, 0xe6661d42} },}, -/**/ {{{0x3f07ffdc, 0x0047ff5e} }, -/**/ {{0x3b484c90, 0x0d69020e} },}, -/**/ {{{0x3f0fffc0, 0x00aaa8ab} }, -/**/ {{0xbba3bbc1, 0x10fec82c} },}, -/**/ {{{0x3f13ffce, 0x00a6a83a} }, -/**/ {{0xbbb2e45f, 0x81546808} },}, -/**/ {{{0x3f17ffb8, 0x011ffaf0} }, -/**/ {{0x3b984c53, 0x4f3d9b6a} },}, -/**/ {{{0x3f1bff9e, 0x01c94bf5} }, -/**/ {{0xbbbd8990, 0xdaa368ee} },}, -/**/ {{{0x3f1fff80, 0x02aa9aab} }, -/**/ {{0x3b910e66, 0x78af0afc} },}, -/**/ {{{0x3f21ffaf, 0x01e5f330} }, -/**/ {{0xbbb1df8d, 0x26467402} },}, -/**/ {{{0x3f23ff9c, 0x029a9723} }, -/**/ {{0x3bc1b965, 0x303b23b1} },}, -/**/ {{{0x3f25ff87, 0x037738be} }, -/**/ {{0xbbb787a3, 0x53d3dc06} },}, -/**/ {{{0x3f27ff70, 0x047fd782} }, -/**/ {{0xbbced098, 0xa5c0aff0} },}, -/**/ {{{0x3f29ff57, 0x05b872e4} }, -/**/ {{0x3bcbadd4, 0x81c30d42} },}, -/**/ {{{0x3f2bff3c, 0x07250a51} }, -/**/ {{0xbbc89dd6, 0xd6bad8c1} },}, -/**/ {{{0x3f2dff1f, 0x08c99d24} }, -/**/ {{0x3bb12609, 0xaede8ad0} },}, -/**/ {{{0x3f2fff00, 0x0aaa2ab1} }, -/**/ {{0x3ba0bbc0, 0x4dc4e3dc} },}, -/**/ {{{0x3f30ff6f, 0x8665591f} }, -/**/ {{0xbbd013d3, 0x80357b54} },}, -/**/ {{{0x3f31ff5e, 0x07979982} }, -/**/ {{0xbbce0e70, 0x4817ebcd} },}, -/**/ {{{0x3f32ff4b, 0x88edd619} }, -/**/ {{0xbbd72b9e, 0xc582abc3} },}, -/**/ {{{0x3f33ff38, 0x0a6a0e74} }, -/**/ {{0x3bdb81fc, 0xb95bc1fe} },}, -/**/ {{{0x3f34ff23, 0x8c0e4220} }, -/**/ {{0x3bcaed12, 0x9b549aae} },}, -/**/ {{{0x3f35ff0e, 0x0ddc70a1} }, -/**/ {{0x3bacf6f3, 0xd97a3c05} },}, -/**/ {{{0x3f36fef7, 0x8fd69976} }, -/**/ {{0x3bab2dcf, 0x6f810a3c} },}, -/**/ {{{0x3f37fee0, 0x11febc18} }, -/**/ {{0x3bd2b9bc, 0xf5d3f323} },}, -/**/ {{{0x3f38fec7, 0x9456d7fb} }, -/**/ {{0xbbbfb258, 0x6eaa1d6a} },}, -/**/ {{{0x3f39feae, 0x16e0ec8b} }, -/**/ {{0xbbb6137a, 0xceeb34b1} },}, -/**/ {{{0x3f3afe93, 0x999ef930} }, -/**/ {{0xbbde70e0, 0xdc639b08} },}, -/**/ {{{0x3f3bfe78, 0x1c92fd4a} }, -/**/ {{0xbbc4ed10, 0x713cc126} },}, -/**/ {{{0x3f3cfe5b, 0x9fbef835} }, -/**/ {{0xbb873d63, 0xcc0e81bd} },}, -/**/ {{{0x3f3dfe3e, 0x2324e946} }, -/**/ {{0x3bc09164, 0x62dd5deb} },}, -/**/ {{{0x3f3efe1f, 0xa6c6cfcc} }, -/**/ {{0x3bdac2da, 0x3512d15c} },}, -/**/ {{{0x3f3ffe00, 0x2aa6ab11} }, -/**/ {{0x3b999e2b, 0x62cc632d} },}, -/**/ {{{0x3f407eef, 0xd7633d2c} }, -/**/ {{0xbbebc98b, 0x63ff6024} },}, -/**/ {{{0x3f40fedf, 0x19941e6e} }, -/**/ {{0xbbb194c2, 0xe0aa6338} },}, -/**/ {{{0x3f417ecd, 0xdbe6f8eb} }, -/**/ {{0x3be4241b, 0x57b0f571} },}, -/**/ {{{0x3f41febc, 0x1e5ccc3c} }, -/**/ {{0x3bdc657d, 0x895d3592} },}, -/**/ {{{0x3f427ea9, 0xe0f697f6} }, -/**/ {{0x3be35a5d, 0x1c0ec17c} },}, -/**/ {{{0x3f42fe97, 0x23b55bac} }, -/**/ {{0x3bd6cfb7, 0x3e538464} },}, -/**/ {{{0x3f437e83, 0xe69a16ed} }, -/**/ {{0x3bee96f7, 0x7cef2478} },}, -/**/ {{{0x3f43fe70, 0x29a5c947} }, -/**/ {{0xbbd4d578, 0xbf46e36a} },}, -/**/ {{{0x3f447e5b, 0xecd97242} }, -/**/ {{0xbbc9eb66, 0x3ff7dd44} },}, -/**/ {{{0x3f44fe47, 0x30361165} }, -/**/ {{0x3be400d7, 0x7e93f2fd} },}, -/**/ {{{0x3f457e31, 0xf3bca635} }, -/**/ {{0xbbe0e2a2, 0xd375017f} },}, -/**/ {{{0x3f45fe1c, 0x376e3031} }, -/**/ {{0xbbd524eb, 0x8a5ae7f6} },}, -/**/ {{{0x3f467e05, 0xfb4baed7} }, -/**/ {{0x3be204fb, 0x4e85c4e9} },}, -/**/ {{{0x3f46fdef, 0x3f5621a3} }, -/**/ {{0xbbdf09d7, 0x34886d52} },}, -/**/ {{{0x3f477dd8, 0x038e880b} }, -/**/ {{0xbbb8900e, 0x14e596a3} },}, -/**/ {{{0x3f47fdc0, 0x47f5e185} }, -/**/ {{0xbbebfa5c, 0x57d202d3} },}, -/**/ {{{0x3f487da8, 0x0c8d2d81} }, -/**/ {{0x3be2f6ae, 0xd68c0614} },}, -/**/ {{{0x3f48fd8f, 0x51556b70} }, -/**/ {{0xbbd0f4f2, 0xe08fd201} },}, -/**/ {{{0x3f497d76, 0x164f9abc} }, -/**/ {{0x3b5296b7, 0xa871af60} },}, -/**/ {{{0x3f49fd5c, 0x5b7cbace} }, -/**/ {{0x3beb6ed4, 0x9f17d42d} },}, -/**/ {{{0x3f4a7d42, 0x20ddcb0d} }, -/**/ {{0xbbcb1149, 0x67c30397} },}, -/**/ {{{0x3f4afd27, 0x6673cada} }, -/**/ {{0x3bd32225, 0x45da594f} },}, -/**/ {{{0x3f4b7d0c, 0x2c3fb996} }, -/**/ {{0xbbb68893, 0x208d4630} },}, -/**/ {{{0x3f4bfcf0, 0x7242969d} }, -/**/ {{0x3bc5db4d, 0x2b3efe1c} },}, -/**/ {{{0x3f4c7cd4, 0x387d6149} }, -/**/ {{0x3be46eff, 0xed57d98a} },}, -/**/ {{{0x3f4cfcb7, 0x7ef118f1} }, -/**/ {{0x3becc554, 0x06f300fb} },}, -/**/ {{{0x3f4d7c9a, 0x459ebce9} }, -/**/ {{0x3be1d251, 0x13638eb6} },}, -/**/ {{{0x3f4dfc7c, 0x8c874c82} }, -/**/ {{0xbbe863e9, 0xd57a176f} },}, -/**/ {{{0x3f4e7c5e, 0x53abc708} }, -/**/ {{0x3be2d95c, 0x9528e50d} },}, -/**/ {{{0x3f4efc3f, 0x9b0d2bc8} }, -/**/ {{0x3bd1e8e8, 0xa5f5b8b7} },}, -/**/ {{{0x3f4f7c20, 0x62ac7a09} }, -/**/ {{0x3b5c8123, 0x17802a46} },}, -/**/ {{{0x3f4ffc00, 0xaa8ab110} }, -/**/ {{0xbbe0fecb, 0xeb9b6cdb} },}, -/**/ {{{0x3f503df0, 0x3954680f} }, -/**/ {{0x3bdac89b, 0x1c693678} },}, -/**/ {{{0x3f507ddf, 0xdd83eb3a} }, -/**/ {{0xbbf638f6, 0x0a75ad5f} },}, -/**/ {{{0x3f50bdcf, 0x41d461a5} }, -/**/ {{0x3bfd4bc9, 0x45f05b10} },}, -/**/ {{{0x3f50fdbe, 0x66464aef} }, -/**/ {{0xbbbd0554, 0x6abbf59c} },}, -/**/ {{{0x3f513dad, 0x4ada26b1} }, -/**/ {{0x3be38c65, 0x6036fe6f} },}, -/**/ {{{0x3f517d9b, 0xef907485} }, -/**/ {{0x3bfdc8a1, 0xf158bbc3} },}, -/**/ {{{0x3f51bd8a, 0x5469b404} }, -/**/ {{0xbbdea231, 0x55632e3f} },}, -/**/ {{{0x3f51fd78, 0x796664c3} }, -/**/ {{0xbbe00849, 0x2edb73c2} },}, -/**/ {{{0x3f523d66, 0x5e870657} }, -/**/ {{0x3bfba943, 0x0789343e} },}, -/**/ {{{0x3f527d54, 0x03cc1855} }, -/**/ {{0x3bc5f644, 0xeafafc52} },}, -/**/ {{{0x3f52bd41, 0x69361a4e} }, -/**/ {{0xbbf2f743, 0xa4a6e79f} },}, -/**/ {{{0x3f52fd2e, 0x8ec58bd2} }, -/**/ {{0xbbd4f786, 0x5ceb1abf} },}, -/**/ {{{0x3f533d1b, 0x747aec71} }, -/**/ {{0xbbf369e3, 0x49dc497d} },}, -/**/ {{{0x3f537d08, 0x1a56bbb8} }, -/**/ {{0xbbfc5e6f, 0x3726b14a} },}, -/**/ {{{0x3f53bcf4, 0x80597933} }, -/**/ {{0xbbfe8b82, 0x808f75a7} },}, -/**/ {{{0x3f53fce0, 0xa683a46c} }, -/**/ {{0x3be02719, 0x9cd06ae6} },}, -/**/ {{{0x3f543ccc, 0x8cd5bced} }, -/**/ {{0x3bf9f98d, 0x758f80f8} },}, -/**/ {{{0x3f547cb8, 0x3350423e} }, -/**/ {{0xbbd79c3d, 0x48401f45} },}, -/**/ {{{0x3f54bca3, 0x99f3b3e4} }, -/**/ {{0xbbf422b8, 0x2fba8948} },}, -/**/ {{{0x3f54fc8e, 0xc0c09163} }, -/**/ {{0x3bf32cc1, 0xf4044be8} },}, -/**/ {{{0x3f553c79, 0xa7b75a40} }, -/**/ {{0xbbe72cac, 0xf2249008} },}, -/**/ {{{0x3f557c64, 0x4ed88dfb} }, -/**/ {{0xbbe7183c, 0x459a204f} },}, -/**/ {{{0x3f55bc4e, 0xb624ac14} }, -/**/ {{0x3bf8aa64, 0xba26d3d7} },}, -/**/ {{{0x3f55fc38, 0xdd9c340b} }, -/**/ {{0x3bdbb2ff, 0x45fa193c} },}, -/**/ {{{0x3f563c22, 0xc53fa55c} }, -/**/ {{0x3bd67249, 0x0484397b} },}, -/**/ {{{0x3f567c0c, 0x6d0f7f83} }, -/**/ {{0xbbd183d7, 0xf1e73188} },}, -/**/ {{{0x3f56bbf5, 0xd50c41fa} }, -/**/ {{0xbbef433d, 0x4ab68187} },}, -/**/ {{{0x3f56fbde, 0xfd366c39} }, -/**/ {{0x3be796b8, 0x66e09e58} },}, -/**/ {{{0x3f573bc7, 0xe58e7db8} }, -/**/ {{0x3bf65ec5, 0x81e6e7e6} },}, -/**/ {{{0x3f577bb0, 0x8e14f5ed} }, -/**/ {{0xbbdb944d, 0xa9463a9c} },}, -/**/ {{{0x3f57bb98, 0xf6ca544b} }, -/**/ {{0xbbc396ec, 0xc5eda344} },}, -/**/ {{{0x3f57fb81, 0x1faf1845} }, -/**/ {{0x3beb9e6d, 0xbb624f97} },}, -/**/ {{{0x3f583b69, 0x08c3c14d} }, -/**/ {{0xbbe6ee13, 0xe6295bf2} },}, -/**/ {{{0x3f587b50, 0xb208ced1} }, -/**/ {{0x3bfcf1a5, 0x6ca19875} },}, -/**/ {{{0x3f58bb38, 0x1b7ec041} }, -/**/ {{0x3bf2d181, 0x07b4fc7e} },}, -/**/ {{{0x3f58fb1f, 0x45261509} }, -/**/ {{0x3bc419c5, 0x21bad336} },}, -/**/ {{{0x3f593b06, 0x2eff4c94} }, -/**/ {{0xbbdc2a4c, 0x700b305b} },}, -/**/ {{{0x3f597aec, 0xd90ae64c} }, -/**/ {{0xbbfc53d3, 0xa23f359c} },}, -/**/ {{{0x3f59bad3, 0x43496198} }, -/**/ {{0x3bf0c270, 0xaed6b50f} },}, -/**/ {{{0x3f59fab9, 0x6dbb3de1} }, -/**/ {{0xbbf11464, 0x7a8be031} },}, -/**/ {{{0x3f5a3a9f, 0x5860fa8a} }, -/**/ {{0x3beae9e7, 0x470dbe32} },}, -/**/ {{{0x3f5a7a85, 0x033b16f8} }, -/**/ {{0x3bfc4721, 0xda1f8579} },}, -/**/ {{{0x3f5aba6a, 0x6e4a128e} }, -/**/ {{0xbbf41852, 0x029258ce} },}, -/**/ {{{0x3f5afa4f, 0x998e6cab} }, -/**/ {{0xbbf28584, 0x2eb18782} },}, -/**/ {{{0x3f5b3a34, 0x8508a4af} }, -/**/ {{0xbbea7970, 0x23241a2c} },}, -/**/ {{{0x3f5b7a19, 0x30b939f8} }, -/**/ {{0xbbf1d8db, 0x600551b6} },}, -/**/ {{{0x3f5bb9fd, 0x9ca0abe2} }, -/**/ {{0xbbeaa412, 0x8c26cc71} },}, -/**/ {{{0x3f5bf9e1, 0xc8bf79c8} }, -/**/ {{0xbbe7f81b, 0x30427cfc} },}, -/**/ {{{0x3f5c39c5, 0xb5162303} }, -/**/ {{0x3bd9ec5f, 0xd1f134e1} },}, -/**/ {{{0x3f5c79a9, 0x61a526eb} }, -/**/ {{0x3bff0cb0, 0x8980e47d} },}, -/**/ {{{0x3f5cb98c, 0xce6d04d7} }, -/**/ {{0x3bf35aca, 0xe84ca4e2} },}, -/**/ {{{0x3f5cf96f, 0xfb6e3c1b} }, -/**/ {{0x3bf9b1b8, 0x1b0bd69f} },}, -/**/ {{{0x3f5d3952, 0xe8a94c0b} }, -/**/ {{0x3be21310, 0x3ce51832} },}, -/**/ {{{0x3f5d7935, 0x961eb3f8} }, -/**/ {{0x3bf90786, 0x840c58ce} },}, -/**/ {{{0x3f5db918, 0x03cef334} }, -/**/ {{0xbbfe0048, 0xf2dfb3f4} },}, -/**/ {{{0x3f5df8fa, 0x31ba890b} }, -/**/ {{0x3bfcf652, 0x3e295bec} },}, -/**/ {{{0x3f5e38dc, 0x1fe1f4ce} }, -/**/ {{0xbbfc5ebe, 0x151c9300} },}, -/**/ {{{0x3f5e78bd, 0xce45b5c6} }, -/**/ {{0xbbef2cc4, 0x8a25b9c7} },}, -/**/ {{{0x3f5eb89f, 0x3ce64b3e} }, -/**/ {{0x3bfe6d27, 0xa6fea7bd} },}, -/**/ {{{0x3f5ef880, 0x6bc43481} }, -/**/ {{0xbbf68037, 0x914a6dab} },}, -/**/ {{{0x3f5f3861, 0x5adff0d4} }, -/**/ {{0xbbf1d2f3, 0xf909e0e6} },}, -/**/ {{{0x3f5f7842, 0x0a39ff7e} }, -/**/ {{0xbbf64661, 0xff1e1f71} },}, -/**/ {{{0x3f5fb822, 0x79d2dfc3} }, -/**/ {{0xbbd76ce8, 0x5a6f9e9a} },}, -/**/ {{{0x3f5ff802, 0xa9ab10e6} }, -/**/ {{0x3bfe29e3, 0xa153e3b2} },}, -/**/ {{{0x3f601bf1, 0x4ce18915} }, -/**/ {{0xbbe57c28, 0xa3a73044} },}, -/**/ {{{0x3f603be1, 0x250db166} }, -/**/ {{0x3c0fd271, 0xc1ad9590} },}, -/**/ {{{0x3f605bd0, 0xdd5a4107} }, -/**/ {{0x3bfe4b5d, 0xc424c676} },}, -/**/ {{{0x3f607bc0, 0x75c77796} }, -/**/ {{0xbc068804, 0xc0eff1ba} },}, -/**/ {{{0x3f609baf, 0xee5594b0} }, -/**/ {{0xbc0ff798, 0x51dbded5} },}, -/**/ {{{0x3f60bb9f, 0x4704d7f2} }, -/**/ {{0xbbf70ef4, 0x2d5aba70} },}, -/**/ {{{0x3f60db8e, 0x7fd580f9} }, -/**/ {{0xbbeccb65, 0x7ae804b5} },}, -/**/ {{{0x3f60fb7d, 0x98c7cf60} }, -/**/ {{0x3bfede2f, 0x1775134d} },}, -/**/ {{{0x3f611b6c, 0x91dc02c3} }, -/**/ {{0xbc04d41e, 0x91ca4a67} },}, -/**/ {{{0x3f613b5b, 0x6b125aba} }, -/**/ {{0x3bfe6d0c, 0x4a12201d} },}, -/**/ {{{0x3f615b4a, 0x246b16e0} }, -/**/ {{0x3bfe507d, 0x4d4238d3} },}, -/**/ {{{0x3f617b38, 0xbde676cd} }, -/**/ {{0x3bfe0272, 0x0640462a} },}, -/**/ {{{0x3f619b27, 0x3784ba19} }, -/**/ {{0x3bd94ab3, 0x02285659} },}, -/**/ {{{0x3f61bb15, 0x9146205b} }, -/**/ {{0xbbff1e2e, 0x1cc35b7b} },}, -/**/ {{{0x3f61db03, 0xcb2ae929} }, -/**/ {{0xbc03ee8e, 0x12f6bf8d} },}, -/**/ {{{0x3f61faf1, 0xe5335418} }, -/**/ {{0x3c0bae5f, 0x7b7d619b} },}, -/**/ {{{0x3f621adf, 0xdf5fa0bf} }, -/**/ {{0xbbf5546a, 0xb3b731b0} },}, -/**/ {{{0x3f623acd, 0xb9b00eb0} }, -/**/ {{0xbbafb2b0, 0x105fd253} },}, -/**/ {{{0x3f625abb, 0x7424dd7f} }, -/**/ {{0x3c011647, 0xca53444b} },}, -/**/ {{{0x3f627aa9, 0x0ebe4cbf} }, -/**/ {{0x3c01678f, 0x592f3be8} },}, -/**/ {{{0x3f629a96, 0x897c9c02} }, -/**/ {{0xbbef2b12, 0x4347451d} },}, -/**/ {{{0x3f62ba83, 0xe4600ad8} }, -/**/ {{0x3bfb5bb7, 0xb2a477bc} },}, -/**/ {{{0x3f62da71, 0x1f68d8d3} }, -/**/ {{0xbc0590e1, 0x7a5822e4} },}, -/**/ {{{0x3f62fa5e, 0x3a974581} }, -/**/ {{0xbbf0f2e5, 0x53123101} },}, -/**/ {{{0x3f631a4b, 0x35eb9072} }, -/**/ {{0xbc018db4, 0x0e3f5fde} },}, -/**/ {{{0x3f633a38, 0x1165f933} }, -/**/ {{0x3c0921d5, 0x8d0afb38} },}, -/**/ {{{0x3f635a24, 0xcd06bf53} }, -/**/ {{0x3c01f6ba, 0xb5791b80} },}, -/**/ {{{0x3f637a11, 0x68ce225e} }, -/**/ {{0x3bde2af8, 0xa1894236} },}, -/**/ {{{0x3f6399fd, 0xe4bc61e0} }, -/**/ {{0xbc062a48, 0xd0f06ff3} },}, -/**/ {{{0x3f63b9ea, 0x40d1bd63} }, -/**/ {{0x3bffc80c, 0x4b4f9c11} },}, -/**/ {{{0x3f63d9d6, 0x7d0e7473} }, -/**/ {{0x3c02219b, 0x6a92c891} },}, -/**/ {{{0x3f63f9c2, 0x9972c699} }, -/**/ {{0x3c0d3590, 0x790ade9e} },}, -/**/ {{{0x3f6419ae, 0x95fef35f} }, -/**/ {{0xbc01c279, 0x792a458c} },}, -/**/ {{{0x3f64399a, 0x72b33a4b} }, -/**/ {{0x3c02ce64, 0x327bffae} },}, -/**/ {{{0x3f645986, 0x2f8fdae7} }, -/**/ {{0xbc070aec, 0xd231155c} },}, -/**/ {{{0x3f647971, 0xcc9514b7} }, -/**/ {{0x3c0f373d, 0xe4bbf776} },}, -/**/ {{{0x3f64995d, 0x49c32744} }, -/**/ {{0xbbf6d7e5, 0xbf22b2a7} },}, -/**/ {{{0x3f64b948, 0xa71a5211} }, -/**/ {{0xbbedec69, 0x64fe2936} },}, -/**/ {{{0x3f64d933, 0xe49ad4a3} }, -/**/ {{0x3bf5fc4b, 0xabee4257} },}, -/**/ {{{0x3f64f91f, 0x0244ee7e} }, -/**/ {{0x3c0c6fe3, 0x3cd1474f} },}, -/**/ {{{0x3f65190a, 0x0018df26} }, -/**/ {{0xbc023957, 0xd11e7fa5} },}, -/**/ {{{0x3f6538f4, 0xde16e61b} }, -/**/ {{0x3c006c31, 0x55380346} },}, -/**/ {{{0x3f6558df, 0x9c3f42e1} }, -/**/ {{0xbc09b7d4, 0xc4a5134c} },}, -/**/ {{{0x3f6578ca, 0x3a9234f7} }, -/**/ {{0xbc0e3f10, 0x2772c19c} },}, -/**/ {{{0x3f6598b4, 0xb90ffbdd} }, -/**/ {{0x3be6f110, 0x5592b468} },}, -/**/ {{{0x3f65b89f, 0x17b8d714} }, -/**/ {{0xbc0a5fea, 0xb251ace2} },}, -/**/ {{{0x3f65d889, 0x568d0619} }, -/**/ {{0xbc0aacc9, 0x315da285} },}, -/**/ {{{0x3f65f873, 0x758cc86a} }, -/**/ {{0xbbeb0782, 0xba64d81a} },}, -/**/ {{{0x3f66185d, 0x74b85d85} }, -/**/ {{0xbc09b459, 0x8e1eb3fa} },}, -/**/ {{{0x3f663847, 0x541004e5} }, -/**/ {{0x3bce9c22, 0x1d86e863} },}, -/**/ {{{0x3f665831, 0x1393fe07} }, -/**/ {{0xbbfbeb77, 0xcf37ee90} },}, -/**/ {{{0x3f66781a, 0xb3448865} }, -/**/ {{0xbc02dc68, 0xc252e3c9} },}, -/**/ {{{0x3f669804, 0x3321e379} }, -/**/ {{0xbbe73a0b, 0xb40b3741} },}, - }; - -#else -#ifdef LITTLE_ENDI - static const number - Iu[182] = { /* 1/ui */ -/**/ {{0xd1537290, 0x3ff6a13c} }, -/**/ {{0x16816817, 0x3ff68168} }, -/**/ {{0x6a5122f9, 0x3ff661ec} }, -/**/ {{0x590b2164, 0x3ff642c8} }, -/**/ {{0x77016240, 0x3ff623fa} }, -/**/ {{0x60581606, 0x3ff60581} }, -/**/ {{0xb8d015e7, 0x3ff5e75b} }, -/**/ {{0x2b931057, 0x3ff5c988} }, -/**/ {{0x6b015ac0, 0x3ff5ac05} }, -/**/ {{0x308158ed, 0x3ff58ed2} }, -/**/ {{0x3c506b3a, 0x3ff571ed} }, -/**/ {{0x55555555, 0x3ff55555} }, -/**/ {{0x48f40feb, 0x3ff53909} }, -/**/ {{0xeae2f815, 0x3ff51d07} }, -/**/ {{0x15015015, 0x3ff50150} }, -/**/ {{0xa72f0539, 0x3ff4e5e0} }, -/**/ {{0x8725af6e, 0x3ff4cab8} }, -/**/ {{0xa052bf5b, 0x3ff4afd6} }, -/**/ {{0xe3b2d067, 0x3ff49539} }, -/**/ {{0x47ae147b, 0x3ff47ae1} }, -/**/ {{0xc7f5cf9a, 0x3ff460cb} }, -/**/ {{0x6562d9fb, 0x3ff446f8} }, -/**/ {{0x25d51f87, 0x3ff42d66} }, -/**/ {{0x14141414, 0x3ff41414} }, -/**/ {{0x3fb013fb, 0x3ff3fb01} }, -/**/ {{0xbce4a902, 0x3ff3e22c} }, -/**/ {{0xa47babe7, 0x3ff3c995} }, -/**/ {{0x13b13b14, 0x3ff3b13b} }, -/**/ {{0x2c187f63, 0x3ff3991c} }, -/**/ {{0x13813814, 0x3ff38138} }, -/**/ {{0xf3de0748, 0x3ff3698d} }, -/**/ {{0xfb2b78c1, 0x3ff3521c} }, -/**/ {{0x5b57bcb2, 0x3ff33ae4} }, -/**/ {{0x4a2b10bf, 0x3ff323e3} }, -/**/ {{0x0130d190, 0x3ff30d19} }, -/**/ {{0xbda12f68, 0x3ff2f684} }, -/**/ {{0xc04b8097, 0x3ff2e025} }, -/**/ {{0x4d812ca0, 0x3ff2c9fb} }, -/**/ {{0xad012b40, 0x3ff2b404} }, -/**/ {{0x29e4129e, 0x3ff29e41} }, -/**/ {{0x1288b013, 0x3ff288b0} }, -/**/ {{0xb8812735, 0x3ff27350} }, -/**/ {{0x708092f1, 0x3ff25e22} }, -/**/ {{0x92492492, 0x3ff24924} }, -/**/ {{0x789abcdf, 0x3ff23456} }, -/**/ {{0x8121fb78, 0x3ff21fb7} }, -/**/ {{0x0c67c0d9, 0x3ff20b47} }, -/**/ {{0x7dc11f70, 0x3ff1f704} }, -/**/ {{0x3b3fb874, 0x3ff1e2ef} }, -/**/ {{0xada2811d, 0x3ff1cf06} }, -/**/ {{0x4046ed29, 0x3ff1bb4a} }, -/**/ {{0x611a7b96, 0x3ff1a7b9} }, -/**/ {{0x808ca29c, 0x3ff19453} }, -/**/ {{0x11811812, 0x3ff18118} }, -/**/ {{0x89427379, 0x3ff16e06} }, -/**/ {{0x5f75270d, 0x3ff15b1e} }, -/**/ {{0x0e0acd3b, 0x3ff1485f} }, -/**/ {{0x1135c811, 0x3ff135c8} }, -/**/ {{0xe75d3033, 0x3ff12358} }, -/**/ {{0x11111111, 0x3ff11111} }, -/**/ {{0x10fef011, 0x3ff0fef0} }, -/**/ {{0x6be69c90, 0x3ff0ecf5} }, -/**/ {{0xa88f4696, 0x3ff0db20} }, -/**/ {{0x4fbcda3b, 0x3ff0c971} }, -/**/ {{0xec259dc8, 0x3ff0b7e6} }, -/**/ {{0x0a6810a7, 0x3ff0a681} }, -/**/ {{0x39010954, 0x3ff0953f} }, -/**/ {{0x08421084, 0x3ff08421} }, -/**/ {{0x0a47f7c6, 0x3ff07326} }, -/**/ {{0xd2f1a9fc, 0x3ff0624d} }, -/**/ {{0xf7d73404, 0x3ff05197} }, -/**/ {{0x10410410, 0x3ff04104} }, -/**/ {{0xb51f5e1a, 0x3ff03091} }, -/**/ {{0x81020408, 0x3ff02040} }, -/**/ {{0x10101010, 0x3ff01010} }, -/**/ {{0x00000000, 0x3ff00000} }, -/**/ {{0xe01fe020, 0x3fefe01f} }, -/**/ {{0x01fc07f0, 0x3fefc07f} }, -/**/ {{0xaa01fa12, 0x3fefa11c} }, -/**/ {{0x1f81f820, 0x3fef81f8} }, -/**/ {{0xaca0dbb5, 0x3fef6310} }, -/**/ {{0x9e4a4271, 0x3fef4465} }, -/**/ {{0x44230ab5, 0x3fef25f6} }, -/**/ {{0xf07c1f08, 0x3fef07c1} }, -/**/ {{0xf8458e02, 0x3feee9c7} }, -/**/ {{0xb301ecc0, 0x3feecc07} }, -/**/ {{0x7aba01eb, 0x3feeae80} }, -/**/ {{0xabf0b767, 0x3fee9131} }, -/**/ {{0xa59750e4, 0x3fee741a} }, -/**/ {{0xc901e574, 0x3fee573a} }, -/**/ {{0x79dc1a73, 0x3fee3a91} }, -/**/ {{0x1e1e1e1e, 0x3fee1e1e} }, -/**/ {{0x1e01e01e, 0x3fee01e0} }, -/**/ {{0xe3f8868a, 0x3fede5d6} }, -/**/ {{0xdca01dca, 0x3fedca01} }, -/**/ {{0x76b981db, 0x3fedae60} }, -/**/ {{0x231e7f8a, 0x3fed92f2} }, -/**/ {{0x54b82c34, 0x3fed77b6} }, -/**/ {{0x807572b2, 0x3fed5cac} }, -/**/ {{0x1d41d41d, 0x3fed41d4} }, -/**/ {{0xa3fc5b1a, 0x3fed272c} }, -/**/ {{0x8f6ec074, 0x3fed0cb5} }, -/**/ {{0x5c44bfc6, 0x3fecf26e} }, -/**/ {{0x89039b0b, 0x3fecd856} }, -/**/ {{0x9601cbe7, 0x3fecbe6d} }, -/**/ {{0x055ee191, 0x3feca4b3} }, -/**/ {{0x5afb8a42, 0x3fec8b26} }, -/**/ {{0x1c71c71c, 0x3fec71c7} }, -/**/ {{0xd10d4986, 0x3fec5894} }, -/**/ {{0x01c3f8f0, 0x3fec3f8f} }, -/**/ {{0x392ea01c, 0x3fec26b5} }, -/**/ {{0x0381c0e0, 0x3fec0e07} }, -/**/ {{0xee868d8b, 0x3febf583} }, -/**/ {{0x899406f7, 0x3febdd2b} }, -/**/ {{0x65883e7b, 0x3febc4fd} }, -/**/ {{0x14c1bad0, 0x3febacf9} }, -/**/ {{0x2b18ff23, 0x3feb951e} }, -/**/ {{0x3dda338b, 0x3feb7d6c} }, -/**/ {{0xe3beee05, 0x3feb65e2} }, -/**/ {{0xb4e81b4f, 0x3feb4e81} }, -/**/ {{0x4ad806ce, 0x3feb3748} }, -/**/ {{0x406c80d9, 0x3feb2036} }, -/**/ {{0x31d922a4, 0x3feb094b} }, -/**/ {{0xbca1af28, 0x3feaf286} }, -/**/ {{0x7f94905e, 0x3feadbe8} }, -/**/ {{0x1ac5701b, 0x3feac570} }, -/**/ {{0x2f87ebfd, 0x3feaaf1d} }, -/**/ {{0x606a63be, 0x3fea98ef} }, -/**/ {{0x5130e159, 0x3fea82e6} }, -/**/ {{0xa6d01a6d, 0x3fea6d01} }, -/**/ {{0x07688a4a, 0x3fea5741} }, -/**/ {{0x1a41a41a, 0x3fea41a4} }, -/**/ {{0x87c51ca0, 0x3fea2c2a} }, -/**/ {{0xf97a4b02, 0x3fea16d3} }, -/**/ {{0x1a01a01a, 0x3fea01a0} }, -/**/ {{0x951033d9, 0x3fe9ec8e} }, -/**/ {{0x176b682d, 0x3fe9d79f} }, -/**/ {{0x4ee4a102, 0x3fe9c2d1} }, -/**/ {{0xea5510da, 0x3fe9ae24} }, -/**/ {{0x9999999a, 0x3fe99999} }, -/**/ {{0x0d8ec0ff, 0x3fe9852f} }, -/**/ {{0xf80cb872, 0x3fe970e4} }, -/**/ {{0x0be377ae, 0x3fe95cbb} }, -/**/ {{0xfcd6e9e0, 0x3fe948b0} }, -/**/ {{0x7f9b2ce6, 0x3fe934c6} }, -/**/ {{0x49d0e229, 0x3fe920fb} }, -/**/ {{0x120190d5, 0x3fe90d4f} }, -/**/ {{0x8f9c18fa, 0x3fe8f9c1} }, -/**/ {{0x7af1373f, 0x3fe8e652} }, -/**/ {{0x8d3018d3, 0x3fe8d301} }, -/**/ {{0x8062ff3a, 0x3fe8bfce} }, -/**/ {{0x0f6bf3aa, 0x3fe8acb9} }, -/**/ {{0xf601899c, 0x3fe899c0} }, -/**/ {{0xf0abb04a, 0x3fe886e5} }, -/**/ {{0xbcc092b9, 0x3fe87427} }, -/**/ {{0x18618618, 0x3fe86186} }, -/**/ {{0xc2780614, 0x3fe84f00} }, -/**/ {{0x7ab2bedd, 0x3fe83c97} }, -/**/ {{0x0182a4a0, 0x3fe82a4a} }, -/**/ {{0x18181818, 0x3fe81818} }, -/**/ {{0x80601806, 0x3fe80601} }, -/**/ {{0xfd017f40, 0x3fe7f405} }, -/**/ {{0x515a4f1d, 0x3fe7e225} }, -/**/ {{0x417d05f4, 0x3fe7d05f} }, -/**/ {{0x922e017c, 0x3fe7beb3} }, -/**/ {{0x08e0ecc3, 0x3fe7ad22} }, -/**/ {{0x6bb6398b, 0x3fe79baa} }, -/**/ {{0x8178a4c8, 0x3fe78a4c} }, -/**/ {{0x119ac60d, 0x3fe77908} }, -/**/ {{0xe434a9b1, 0x3fe767dc} }, -/**/ {{0xc201756d, 0x3fe756ca} }, -/**/ {{0x745d1746, 0x3fe745d1} }, -/**/ {{0xc541fe8d, 0x3fe734f0} }, -/**/ {{0x7f46debc, 0x3fe72428} }, -/**/ {{0x6d9c7c09, 0x3fe71378} }, -/**/ {{0x5c0b8170, 0x3fe702e0} }, -/**/ {{0x16f26017, 0x3fe6f260} }, -/**/ {{0x6b4337c7, 0x3fe6e1f7} }, -/**/ {{0x2681c861, 0x3fe6d1a6} }, -/**/ {{0x16c16c17, 0x3fe6c16c} }, -/**/ {{0x0aa31a3d, 0x3fe6b149} }, -/**/ {{0xd1537290, 0x3fe6a13c} }, - }; - - static const number - Iv[362] = { /* 1/vj */ -/**/ {{0xee93bfe3, 0x3ff00b47} }, -/**/ {{0xd80c106f, 0x3ff00b37} }, -/**/ {{0xc1a4a47a, 0x3ff00b27} }, -/**/ {{0xab5d7ba2, 0x3ff00b17} }, -/**/ {{0x95369587, 0x3ff00b07} }, -/**/ {{0x7f2ff1c6, 0x3ff00af7} }, -/**/ {{0x69499000, 0x3ff00ae7} }, -/**/ {{0x53836fd3, 0x3ff00ad7} }, -/**/ {{0x3ddd90dd, 0x3ff00ac7} }, -/**/ {{0x2857f2bf, 0x3ff00ab7} }, -/**/ {{0x12f29517, 0x3ff00aa7} }, -/**/ {{0xfdad7784, 0x3ff00a96} }, -/**/ {{0xe88899a5, 0x3ff00a86} }, -/**/ {{0xd383fb19, 0x3ff00a76} }, -/**/ {{0xbe9f9b7f, 0x3ff00a66} }, -/**/ {{0xa9db7a76, 0x3ff00a56} }, -/**/ {{0x9537979d, 0x3ff00a46} }, -/**/ {{0x80b3f293, 0x3ff00a36} }, -/**/ {{0x6c508af8, 0x3ff00a26} }, -/**/ {{0x580d606a, 0x3ff00a16} }, -/**/ {{0x43ea7288, 0x3ff00a06} }, -/**/ {{0x2fe7c0f1, 0x3ff009f6} }, -/**/ {{0x1c054b44, 0x3ff009e6} }, -/**/ {{0x08431122, 0x3ff009d6} }, -/**/ {{0xf4a11227, 0x3ff009c5} }, -/**/ {{0xe11f4df4, 0x3ff009b5} }, -/**/ {{0xcdbdc428, 0x3ff009a5} }, -/**/ {{0xba7c7462, 0x3ff00995} }, -/**/ {{0xa75b5e40, 0x3ff00985} }, -/**/ {{0x945a8162, 0x3ff00975} }, -/**/ {{0x8179dd68, 0x3ff00965} }, -/**/ {{0x6eb971ef, 0x3ff00955} }, -/**/ {{0x5c193e98, 0x3ff00945} }, -/**/ {{0x49994301, 0x3ff00935} }, -/**/ {{0x37397eca, 0x3ff00925} }, -/**/ {{0x24f9f192, 0x3ff00915} }, -/**/ {{0x12da9af7, 0x3ff00905} }, -/**/ {{0x00db7a99, 0x3ff008f5} }, -/**/ {{0xeefc9018, 0x3ff008e4} }, -/**/ {{0xdd3ddb12, 0x3ff008d4} }, -/**/ {{0xcb9f5b26, 0x3ff008c4} }, -/**/ {{0xba210ff4, 0x3ff008b4} }, -/**/ {{0xa8c2f91a, 0x3ff008a4} }, -/**/ {{0x97851639, 0x3ff00894} }, -/**/ {{0x866766ef, 0x3ff00884} }, -/**/ {{0x7569eadb, 0x3ff00874} }, -/**/ {{0x648ca19d, 0x3ff00864} }, -/**/ {{0x53cf8ad3, 0x3ff00854} }, -/**/ {{0x4332a61e, 0x3ff00844} }, -/**/ {{0x32b5f31b, 0x3ff00834} }, -/**/ {{0x2259716c, 0x3ff00824} }, -/**/ {{0x121d20ad, 0x3ff00814} }, -/**/ {{0x02010080, 0x3ff00804} }, -/**/ {{0xf2051083, 0x3ff007f3} }, -/**/ {{0xe2295056, 0x3ff007e3} }, -/**/ {{0xd26dbf97, 0x3ff007d3} }, -/**/ {{0xc2d25de5, 0x3ff007c3} }, -/**/ {{0xb3572ae2, 0x3ff007b3} }, -/**/ {{0xa3fc262a, 0x3ff007a3} }, -/**/ {{0x94c14f5f, 0x3ff00793} }, -/**/ {{0x85a6a61e, 0x3ff00783} }, -/**/ {{0x76ac2a08, 0x3ff00773} }, -/**/ {{0x67d1dabb, 0x3ff00763} }, -/**/ {{0x5917b7d7, 0x3ff00753} }, -/**/ {{0x4a7dc0fb, 0x3ff00743} }, -/**/ {{0x3c03f5c7, 0x3ff00733} }, -/**/ {{0x2daa55da, 0x3ff00723} }, -/**/ {{0x1f70e0d3, 0x3ff00713} }, -/**/ {{0x11579652, 0x3ff00703} }, -/**/ {{0x035e75f5, 0x3ff006f3} }, -/**/ {{0xf5857f5d, 0x3ff006e2} }, -/**/ {{0xe7ccb228, 0x3ff006d2} }, -/**/ {{0xda340df6, 0x3ff006c2} }, -/**/ {{0xccbb9266, 0x3ff006b2} }, -/**/ {{0xbf633f18, 0x3ff006a2} }, -/**/ {{0xb22b13ab, 0x3ff00692} }, -/**/ {{0xa5130fbe, 0x3ff00682} }, -/**/ {{0x981b32f1, 0x3ff00672} }, -/**/ {{0x8b437ce4, 0x3ff00662} }, -/**/ {{0x7e8bed35, 0x3ff00652} }, -/**/ {{0x71f48383, 0x3ff00642} }, -/**/ {{0x657d3f70, 0x3ff00632} }, -/**/ {{0x59262098, 0x3ff00622} }, -/**/ {{0x4cef269e, 0x3ff00612} }, -/**/ {{0x40d8511e, 0x3ff00602} }, -/**/ {{0x34e19fba, 0x3ff005f2} }, -/**/ {{0x290b1211, 0x3ff005e2} }, -/**/ {{0x1d54a7c1, 0x3ff005d2} }, -/**/ {{0x11be606b, 0x3ff005c2} }, -/**/ {{0x06483bad, 0x3ff005b2} }, -/**/ {{0xfaf23928, 0x3ff005a1} }, -/**/ {{0xefbc587b, 0x3ff00591} }, -/**/ {{0xe4a69945, 0x3ff00581} }, -/**/ {{0xd9b0fb25, 0x3ff00571} }, -/**/ {{0xcedb7dbc, 0x3ff00561} }, -/**/ {{0xc42620a9, 0x3ff00551} }, -/**/ {{0xb990e38b, 0x3ff00541} }, -/**/ {{0xaf1bc601, 0x3ff00531} }, -/**/ {{0xa4c6c7ac, 0x3ff00521} }, -/**/ {{0x9a91e82a, 0x3ff00511} }, -/**/ {{0x907d271c, 0x3ff00501} }, -/**/ {{0x86888421, 0x3ff004f1} }, -/**/ {{0x7cb3fed8, 0x3ff004e1} }, -/**/ {{0x72ff96e0, 0x3ff004d1} }, -/**/ {{0x696b4bdb, 0x3ff004c1} }, -/**/ {{0x5ff71d66, 0x3ff004b1} }, -/**/ {{0x56a30b21, 0x3ff004a1} }, -/**/ {{0x4d6f14ad, 0x3ff00491} }, -/**/ {{0x445b39a8, 0x3ff00481} }, -/**/ {{0x3b6779b3, 0x3ff00471} }, -/**/ {{0x3293d46c, 0x3ff00461} }, -/**/ {{0x29e04974, 0x3ff00451} }, -/**/ {{0x214cd869, 0x3ff00441} }, -/**/ {{0x18d980ed, 0x3ff00431} }, -/**/ {{0x1086429d, 0x3ff00421} }, -/**/ {{0x08531d1a, 0x3ff00411} }, -/**/ {{0x00401004, 0x3ff00401} }, -/**/ {{0xf84d1afa, 0x3ff003f0} }, -/**/ {{0xf07a3d9b, 0x3ff003e0} }, -/**/ {{0xe8c77787, 0x3ff003d0} }, -/**/ {{0xe134c85f, 0x3ff003c0} }, -/**/ {{0xd9c22fc1, 0x3ff003b0} }, -/**/ {{0xd26fad4d, 0x3ff003a0} }, -/**/ {{0xcb3d40a3, 0x3ff00390} }, -/**/ {{0xc42ae963, 0x3ff00380} }, -/**/ {{0xbd38a72c, 0x3ff00370} }, -/**/ {{0xb666799e, 0x3ff00360} }, -/**/ {{0xafb46058, 0x3ff00350} }, -/**/ {{0xa9225afa, 0x3ff00340} }, -/**/ {{0xa2b06925, 0x3ff00330} }, -/**/ {{0x9c5e8a77, 0x3ff00320} }, -/**/ {{0x962cbe90, 0x3ff00310} }, -/**/ {{0x901b0511, 0x3ff00300} }, -/**/ {{0x8a295d98, 0x3ff002f0} }, -/**/ {{0x8457c7c6, 0x3ff002e0} }, -/**/ {{0x7ea6433a, 0x3ff002d0} }, -/**/ {{0x7914cf94, 0x3ff002c0} }, -/**/ {{0x73a36c73, 0x3ff002b0} }, -/**/ {{0x6e521978, 0x3ff002a0} }, -/**/ {{0x6920d642, 0x3ff00290} }, -/**/ {{0x640fa271, 0x3ff00280} }, -/**/ {{0x5f1e7da5, 0x3ff00270} }, -/**/ {{0x5a4d677d, 0x3ff00260} }, -/**/ {{0x559c5f9a, 0x3ff00250} }, -/**/ {{0x510b659a, 0x3ff00240} }, -/**/ {{0x4c9a791f, 0x3ff00230} }, -/**/ {{0x484999c6, 0x3ff00220} }, -/**/ {{0x4418c732, 0x3ff00210} }, -/**/ {{0x40080100, 0x3ff00200} }, -/**/ {{0x3c1746d2, 0x3ff001f0} }, -/**/ {{0x38469846, 0x3ff001e0} }, -/**/ {{0x3495f4fd, 0x3ff001d0} }, -/**/ {{0x31055c96, 0x3ff001c0} }, -/**/ {{0x2d94ceb2, 0x3ff001b0} }, -/**/ {{0x2a444af0, 0x3ff001a0} }, -/**/ {{0x2713d0ef, 0x3ff00190} }, -/**/ {{0x24036051, 0x3ff00180} }, -/**/ {{0x2112f8b4, 0x3ff00170} }, -/**/ {{0x1e4299b9, 0x3ff00160} }, -/**/ {{0x1b9242ff, 0x3ff00150} }, -/**/ {{0x1901f427, 0x3ff00140} }, -/**/ {{0x1691acd0, 0x3ff00130} }, -/**/ {{0x14416c9a, 0x3ff00120} }, -/**/ {{0x12113324, 0x3ff00110} }, -/**/ {{0x10010010, 0x3ff00100} }, -/**/ {{0x0e10d2fc, 0x3ff000f0} }, -/**/ {{0x0c40ab89, 0x3ff000e0} }, -/**/ {{0x0a908957, 0x3ff000d0} }, -/**/ {{0x09006c05, 0x3ff000c0} }, -/**/ {{0x07905334, 0x3ff000b0} }, -/**/ {{0x06403e82, 0x3ff000a0} }, -/**/ {{0x05102d92, 0x3ff00090} }, -/**/ {{0x04002001, 0x3ff00080} }, -/**/ {{0x03101571, 0x3ff00070} }, -/**/ {{0x02400d80, 0x3ff00060} }, -/**/ {{0x019007d0, 0x3ff00050} }, -/**/ {{0x01000400, 0x3ff00040} }, -/**/ {{0x009001b0, 0x3ff00030} }, -/**/ {{0x00400080, 0x3ff00020} }, -/**/ {{0x00100010, 0x3ff00010} }, -/**/ {{0x00000000, 0x3ff00000} }, -/**/ {{0x001fffe0, 0x3fefffe0} }, -/**/ {{0x007fff00, 0x3fefffc0} }, -/**/ {{0x011ffca0, 0x3fefffa0} }, -/**/ {{0x01fff800, 0x3fefff80} }, -/**/ {{0x031ff060, 0x3fefff60} }, -/**/ {{0x047fe501, 0x3fefff40} }, -/**/ {{0x061fd521, 0x3fefff20} }, -/**/ {{0x07ffc002, 0x3fefff00} }, -/**/ {{0x0a1fa4e3, 0x3feffee0} }, -/**/ {{0x0c7f8305, 0x3feffec0} }, -/**/ {{0x0f1f59a7, 0x3feffea0} }, -/**/ {{0x11ff280a, 0x3feffe80} }, -/**/ {{0x151eed6e, 0x3feffe60} }, -/**/ {{0x187ea913, 0x3feffe40} }, -/**/ {{0x1c1e5a39, 0x3feffe20} }, -/**/ {{0x1ffe0020, 0x3feffe00} }, -/**/ {{0x241d9a09, 0x3feffde0} }, -/**/ {{0x287d2733, 0x3feffdc0} }, -/**/ {{0x2d1ca6e0, 0x3feffda0} }, -/**/ {{0x31fc184e, 0x3feffd80} }, -/**/ {{0x371b7abf, 0x3feffd60} }, -/**/ {{0x3c7acd72, 0x3feffd40} }, -/**/ {{0x421a0fa9, 0x3feffd20} }, -/**/ {{0x47f940a2, 0x3feffd00} }, -/**/ {{0x4e185f9f, 0x3feffce0} }, -/**/ {{0x54776bdf, 0x3feffcc0} }, -/**/ {{0x5b1664a3, 0x3feffca0} }, -/**/ {{0x61f5492c, 0x3feffc80} }, -/**/ {{0x691418b9, 0x3feffc60} }, -/**/ {{0x7072d28b, 0x3feffc40} }, -/**/ {{0x781175e3, 0x3feffc20} }, -/**/ {{0x7ff00200, 0x3feffc00} }, -/**/ {{0x880e7623, 0x3feffbe0} }, -/**/ {{0x906cd18c, 0x3feffbc0} }, -/**/ {{0x990b137c, 0x3feffba0} }, -/**/ {{0xa1e93b34, 0x3feffb80} }, -/**/ {{0xab0747f3, 0x3feffb60} }, -/**/ {{0xb46538fa, 0x3feffb40} }, -/**/ {{0xbe030d89, 0x3feffb20} }, -/**/ {{0xc7e0c4e1, 0x3feffb00} }, -/**/ {{0xd1fe5e43, 0x3feffae0} }, -/**/ {{0xdc5bd8ee, 0x3feffac0} }, -/**/ {{0xe6f93424, 0x3feffaa0} }, -/**/ {{0xf1d66f25, 0x3feffa80} }, -/**/ {{0xfcf38931, 0x3feffa60} }, -/**/ {{0x08508189, 0x3feffa41} }, -/**/ {{0x13ed576d, 0x3feffa21} }, -/**/ {{0x1fca0a1e, 0x3feffa01} }, -/**/ {{0x2be698dd, 0x3feff9e1} }, -/**/ {{0x384302e9, 0x3feff9c1} }, -/**/ {{0x44df4785, 0x3feff9a1} }, -/**/ {{0x51bb65ef, 0x3feff981} }, -/**/ {{0x5ed75d6a, 0x3feff961} }, -/**/ {{0x6c332d34, 0x3feff941} }, -/**/ {{0x79ced490, 0x3feff921} }, -/**/ {{0x87aa52be, 0x3feff901} }, -/**/ {{0x95c5a6fe, 0x3feff8e1} }, -/**/ {{0xa420d091, 0x3feff8c1} }, -/**/ {{0xb2bbceb7, 0x3feff8a1} }, -/**/ {{0xc196a0b2, 0x3feff881} }, -/**/ {{0xd0b145c2, 0x3feff861} }, -/**/ {{0xe00bbd28, 0x3feff841} }, -/**/ {{0xefa60624, 0x3feff821} }, -/**/ {{0xff801ff8, 0x3feff801} }, -/**/ {{0x0f9a09e3, 0x3feff7e2} }, -/**/ {{0x1ff3c328, 0x3feff7c2} }, -/**/ {{0x308d4b05, 0x3feff7a2} }, -/**/ {{0x4166a0bd, 0x3feff782} }, -/**/ {{0x527fc390, 0x3feff762} }, -/**/ {{0x63d8b2bf, 0x3feff742} }, -/**/ {{0x75716d8b, 0x3feff722} }, -/**/ {{0x8749f334, 0x3feff702} }, -/**/ {{0x996242fb, 0x3feff6e2} }, -/**/ {{0xabba5c21, 0x3feff6c2} }, -/**/ {{0xbe523de8, 0x3feff6a2} }, -/**/ {{0xd129e78f, 0x3feff682} }, -/**/ {{0xe4415858, 0x3feff662} }, -/**/ {{0xf7988f84, 0x3feff642} }, -/**/ {{0x0b2f8c54, 0x3feff623} }, -/**/ {{0x1f064e08, 0x3feff603} }, -/**/ {{0x331cd3e1, 0x3feff5e3} }, -/**/ {{0x47731d21, 0x3feff5c3} }, -/**/ {{0x5c092908, 0x3feff5a3} }, -/**/ {{0x70def6d7, 0x3feff583} }, -/**/ {{0x85f485d0, 0x3feff563} }, -/**/ {{0x9b49d532, 0x3feff543} }, -/**/ {{0xb0dee440, 0x3feff523} }, -/**/ {{0xc6b3b23b, 0x3feff503} }, -/**/ {{0xdcc83e62, 0x3feff4e3} }, -/**/ {{0xf31c87f8, 0x3feff4c3} }, -/**/ {{0x09b08e3d, 0x3feff4a4} }, -/**/ {{0x20845073, 0x3feff484} }, -/**/ {{0x3797cdda, 0x3feff464} }, -/**/ {{0x4eeb05b4, 0x3feff444} }, -/**/ {{0x667df741, 0x3feff424} }, -/**/ {{0x7e50a1c3, 0x3feff404} }, -/**/ {{0x9663047b, 0x3feff3e4} }, -/**/ {{0xaeb51eaa, 0x3feff3c4} }, -/**/ {{0xc746ef91, 0x3feff3a4} }, -/**/ {{0xe0187672, 0x3feff384} }, -/**/ {{0xf929b28d, 0x3feff364} }, -/**/ {{0x127aa323, 0x3feff345} }, -/**/ {{0x2c0b4776, 0x3feff325} }, -/**/ {{0x45db9ec7, 0x3feff305} }, -/**/ {{0x5feba858, 0x3feff2e5} }, -/**/ {{0x7a3b6369, 0x3feff2c5} }, -/**/ {{0x94cacf3b, 0x3feff2a5} }, -/**/ {{0xaf99eb11, 0x3feff285} }, -/**/ {{0xcaa8b62a, 0x3feff265} }, -/**/ {{0xe5f72fc9, 0x3feff245} }, -/**/ {{0x0185572f, 0x3feff226} }, -/**/ {{0x1d532b9d, 0x3feff206} }, -/**/ {{0x3960ac54, 0x3feff1e6} }, -/**/ {{0x55add896, 0x3feff1c6} }, -/**/ {{0x723aafa3, 0x3feff1a6} }, -/**/ {{0x8f0730be, 0x3feff186} }, -/**/ {{0xac135b27, 0x3feff166} }, -/**/ {{0xc95f2e21, 0x3feff146} }, -/**/ {{0xe6eaa8eb, 0x3feff126} }, -/**/ {{0x04b5cac9, 0x3feff107} }, -/**/ {{0x22c092fb, 0x3feff0e7} }, -/**/ {{0x410b00c2, 0x3feff0c7} }, -/**/ {{0x5f951360, 0x3feff0a7} }, -/**/ {{0x7e5eca16, 0x3feff087} }, -/**/ {{0x9d682426, 0x3feff067} }, -/**/ {{0xbcb120d2, 0x3feff047} }, -/**/ {{0xdc39bf5a, 0x3feff027} }, -/**/ {{0xfc01ff00, 0x3feff007} }, -/**/ {{0x1c09df07, 0x3fefefe8} }, -/**/ {{0x3c515eae, 0x3fefefc8} }, -/**/ {{0x5cd87d38, 0x3fefefa8} }, -/**/ {{0x7d9f39e6, 0x3fefef88} }, -/**/ {{0x9ea593fa, 0x3fefef68} }, -/**/ {{0xbfeb8ab5, 0x3fefef48} }, -/**/ {{0xe1711d5a, 0x3fefef28} }, -/**/ {{0x03364b28, 0x3fefef09} }, -/**/ {{0x253b1363, 0x3fefeee9} }, -/**/ {{0x477f754b, 0x3fefeec9} }, -/**/ {{0x6a037022, 0x3fefeea9} }, -/**/ {{0x8cc7032a, 0x3fefee89} }, -/**/ {{0xafca2da5, 0x3fefee69} }, -/**/ {{0xd30ceed4, 0x3fefee49} }, -/**/ {{0xf68f45f8, 0x3fefee29} }, -/**/ {{0x1a513254, 0x3fefee0a} }, -/**/ {{0x3e52b329, 0x3fefedea} }, -/**/ {{0x6293c7b8, 0x3fefedca} }, -/**/ {{0x87146f44, 0x3fefedaa} }, -/**/ {{0xabd4a90e, 0x3fefed8a} }, -/**/ {{0xd0d47458, 0x3fefed6a} }, -/**/ {{0xf613d064, 0x3fefed4a} }, -/**/ {{0x1b92bc73, 0x3fefed2b} }, -/**/ {{0x415137c7, 0x3fefed0b} }, -/**/ {{0x674f41a2, 0x3fefeceb} }, -/**/ {{0x8d8cd945, 0x3fefeccb} }, -/**/ {{0xb409fdf3, 0x3fefecab} }, -/**/ {{0xdac6aeed, 0x3fefec8b} }, -/**/ {{0x01c2eb76, 0x3fefec6c} }, -/**/ {{0x28feb2ce, 0x3fefec4c} }, -/**/ {{0x507a0437, 0x3fefec2c} }, -/**/ {{0x7834def5, 0x3fefec0c} }, -/**/ {{0xa02f4247, 0x3fefebec} }, -/**/ {{0xc8692d71, 0x3fefebcc} }, -/**/ {{0xf0e29fb4, 0x3fefebac} }, -/**/ {{0x199b9852, 0x3fefeb8d} }, -/**/ {{0x4294168d, 0x3fefeb6d} }, -/**/ {{0x6bcc19a7, 0x3fefeb4d} }, -/**/ {{0x9543a0e2, 0x3fefeb2d} }, -/**/ {{0xbefaab7f, 0x3fefeb0d} }, -/**/ {{0xe8f138c2, 0x3fefeaed} }, -/**/ {{0x132747ea, 0x3fefeace} }, -/**/ {{0x3d9cd83c, 0x3fefeaae} }, -/**/ {{0x6851e8f7, 0x3fefea8e} }, -/**/ {{0x93467960, 0x3fefea6e} }, -/**/ {{0xbe7a88b7, 0x3fefea4e} }, -/**/ {{0xe9ee163f, 0x3fefea2e} }, -/**/ {{0x15a12139, 0x3fefea0f} }, -/**/ {{0x4193a8e8, 0x3fefe9ef} }, -/**/ {{0x6dc5ac8e, 0x3fefe9cf} }, -/**/ {{0x9a372b6d, 0x3fefe9af} }, -/**/ {{0xc6e824c6, 0x3fefe98f} }, -/**/ {{0xf3d897dd, 0x3fefe96f} }, - }; - - static const number - Lu[182][2] = { /* log(ui) */ -/**/ {{{0x0b3aac49, 0xbfd63003} }, -/**/ {{0xe51fff99, 0xbc6dc18c} },}, -/**/ {{{0xdf595f30, 0xbfd5d5bd} }, -/**/ {{0x48cbb8a2, 0x3c765411} },}, -/**/ {{{0x53c8d1fb, 0xbfd57bf7} }, -/**/ {{0x15f88b63, 0x3c60908d} },}, -/**/ {{{0x0738a3d8, 0xbfd522ae} }, -/**/ {{0xb38a6979, 0x3c68f7e9} },}, -/**/ {{{0x9e172c3c, 0xbfd4c9e0} }, -/**/ {{0x5b147a5d, 0x3c512361} },}, -/**/ {{{0xc271c41b, 0xbfd4718d} }, -/**/ {{0x14c56eef, 0xbc38fb4c} },}, -/**/ {{{0x23d5e8c7, 0xbfd419b4} }, -/**/ {{0x43827392, 0xbc60dbb2} },}, -/**/ {{{0x77333184, 0xbfd3c252} }, -/**/ {{0xe50a8ec6, 0x3c72ad27} },}, -/**/ {{{0x76be1117, 0xbfd36b67} }, -/**/ {{0xe883858e, 0x3c5324f0} },}, -/**/ {{{0xe1d35ce4, 0xbfd314f1} }, -/**/ {{0x09e5c3dc, 0x3c73d699} },}, -/**/ {{{0x7cdc9354, 0xbfd2bef0} }, -/**/ {{0x7fd86088, 0x3c782dad} },}, -/**/ {{{0x1134db92, 0xbfd26962} }, -/**/ {{0xdd9db02b, 0xbc7e0efa} },}, -/**/ {{{0x6d0eb8d4, 0xbfd21445} }, -/**/ {{0x1aeba60a, 0xbc6f7ae9} },}, -/**/ {{{0x635a6b95, 0xbfd1bf99} }, -/**/ {{0x84249223, 0x3c612aeb} },}, -/**/ {{{0xcbacfb73, 0xbfd16b5c} }, -/**/ {{0x28b40935, 0xbc766fbd} },}, -/**/ {{{0x8227e47c, 0xbfd1178e} }, -/**/ {{0x5f01c691, 0x3c60e63a} },}, -/**/ {{{0x676162e3, 0xbfd0c42d} }, -/**/ {{0x9d5d11ee, 0xbc5162c7} },}, -/**/ {{{0x604d5862, 0xbfd07138} }, -/**/ {{0xed4e9138, 0xbc7cdb16} },}, -/**/ {{{0x5626c691, 0xbfd01eae} }, -/**/ {{0xbd2932e2, 0x3c418290} },}, -/**/ {{{0x6cb3b379, 0xbfcf991c} }, -/**/ {{0x66f980a2, 0xbc6f6650} },}, -/**/ {{{0xe4dcffe6, 0xbfcef5ad} }, -/**/ {{0xddc708a0, 0x3c508ab2} },}, -/**/ {{{0xffe71012, 0xbfce530e} }, -/**/ {{0x41f43042, 0xbc422760} },}, -/**/ {{{0xb0d48940, 0xbfcdb13d} }, -/**/ {{0x49f96cb9, 0xbc5aa11d} },}, -/**/ {{{0xf2655e7b, 0xbfcd1037} }, -/**/ {{0x242471a2, 0xbc660629} },}, -/**/ {{{0xc6f00f71, 0xbfcc6ffb} }, -/**/ {{0x2c57a4a5, 0x3c68e58b} },}, -/**/ {{{0x383bd8ad, 0xbfcbd087} }, -/**/ {{0xf6a516d7, 0xbc3dd355} },}, -/**/ {{{0x575bce3d, 0xbfcb31d8} }, -/**/ {{0xb386a94d, 0x3c66353a} },}, -/**/ {{{0x3c8ad9e3, 0xbfca93ed} }, -/**/ {{0x9de97203, 0xbc6bcafa} },}, -/**/ {{{0x07089664, 0xbfc9f6c4} }, -/**/ {{0x605e67ef, 0xbc435a19} },}, -/**/ {{{0xdcf7017f, 0xbfc95a5a} }, -/**/ {{0x07fb7a3d, 0xbc5142c5} },}, -/**/ {{{0xeb38fe8c, 0xbfc8beaf} }, -/**/ {{0xb6997a40, 0xbc555aa8} },}, -/**/ {{{0x6551a3c2, 0xbfc823c1} }, -/**/ {{0xe70be781, 0x3c61232c} },}, -/**/ {{{0x85444c73, 0xbfc7898d} }, -/**/ {{0xebcfb201, 0xbc5ef8f6} },}, -/**/ {{{0x8b756abc, 0xbfc6f012} }, -/**/ {{0xc21e166c, 0x3c68de59} },}, -/**/ {{{0xbe8c133a, 0xbfc6574e} }, -/**/ {{0xf4621bed, 0x3c3d34f0} },}, -/**/ {{{0x6b543db2, 0xbfc5bf40} }, -/**/ {{0x4c0df7e7, 0x3c21f5b4} },}, -/**/ {{{0xe4a1b58d, 0xbfc527e5} }, -/**/ {{0x82395bfd, 0x3c271a96} },}, -/**/ {{{0x8333b561, 0xbfc4913d} }, -/**/ {{0x4930f135, 0x3c50d560} },}, -/**/ {{{0xa59928cc, 0xbfc3fb45} }, -/**/ {{0xa354d056, 0x3c6d87e6} },}, -/**/ {{{0xb0159016, 0xbfc365fc} }, -/**/ {{0xa5b944ad, 0xbc57d411} },}, -/**/ {{{0x0c86813a, 0xbfc2d161} }, -/**/ {{0xf25af95f, 0x3c5499a3} },}, -/**/ {{{0x2a49c202, 0xbfc23d71} }, -/**/ {{0x61051d69, 0x3c66e381} },}, -/**/ {{{0x7e23f72a, 0xbfc1aa2b} }, -/**/ {{0xd9b2ef7e, 0x3c4c6ef1} },}, -/**/ {{{0x8227e47c, 0xbfc1178e} }, -/**/ {{0x5f01c691, 0x3c50e63a} },}, -/**/ {{{0xb59e3a07, 0xbfc08598} }, -/**/ {{0x9902bf32, 0x3c6dd700} },}, -/**/ {{{0x39dbd566, 0xbfbfe891} }, -/**/ {{0x215f9393, 0x3c5ac9f4} },}, -/**/ {{{0x830a1120, 0xbfbec739} }, -/**/ {{0x91780d3f, 0x3c4a2bf9} },}, -/**/ {{{0x638446a2, 0xbfbda727} }, -/**/ {{0x71733019, 0xbc5401fa} },}, -/**/ {{{0x01bc4b23, 0xbfbc8858} }, -/**/ {{0x559a6706, 0xbc5a38cb} },}, -/**/ {{{0x8dad5b1c, 0xbfbb6ac8} }, -/**/ {{0xed1ca59f, 0x3c40057e} },}, -/**/ {{{0x40b1bc38, 0xbfba4e76} }, -/**/ {{0x203e4259, 0x3c55b5ca} },}, -/**/ {{{0x5d594989, 0xbfb9335e} }, -/**/ {{0x5704ccb7, 0x3c5478a8} },}, -/**/ {{{0x2f40e3f0, 0xbfb8197e} }, -/**/ {{0xffbeed43, 0xbc3b9f2d} },}, -/**/ {{{0x0aeac0e1, 0xbfb700d3} }, -/**/ {{0x212cdd05, 0x3c272566} },}, -/**/ {{{0x4d9791cb, 0xbfb5e95a} }, -/**/ {{0x5c5c450a, 0xbc5f3874} },}, -/**/ {{{0x5d207eac, 0xbfb4d311} }, -/**/ {{0x2c7842cc, 0xbc5769f4} },}, -/**/ {{{0xa7d1ee64, 0xbfb3bdf5} }, -/**/ {{0xd3b5b45f, 0xbc47a976} },}, -/**/ {{{0xa44717a5, 0xbfb2aa04} }, -/**/ {{0x8d2fa3f7, 0x3c5d15d3} },}, -/**/ {{{0xd1465567, 0xbfb1973b} }, -/**/ {{0x67a6acf6, 0x3c475583} },}, -/**/ {{{0xb59e3a07, 0xbfb08598} }, -/**/ {{0x9902bf32, 0x3c5dd700} },}, -/**/ {{{0xc006b87c, 0xbfaeea31} }, -/**/ {{0x93b7b66c, 0x3c43e4fc} },}, -/**/ {{{0xcdddb2cc, 0xbfaccb73} }, -/**/ {{0x0500efd4, 0x3c4e48fb} },}, -/**/ {{{0xd0fb10fc, 0xbfaaaef2} }, -/**/ {{0xb42e0add, 0xbc2a353b} },}, -/**/ {{{0x149fb343, 0xbfa894aa} }, -/**/ {{0x7660a23d, 0xbc3a8be9} },}, -/**/ {{{0xf2d4bb58, 0xbfa67c94} }, -/**/ {{0x6505e603, 0xbc40413e} },}, -/**/ {{{0xd42de3ea, 0xbfa466ae} }, -/**/ {{0x7f4a137e, 0x3c4cdd6f} },}, -/**/ {{{0x2f8d183f, 0xbfa252f3} }, -/**/ {{0x92615916, 0x3c4947f7} },}, -/**/ {{{0x89e74444, 0xbfa0415d} }, -/**/ {{0x1d753622, 0xbc4c05cf} },}, -/**/ {{{0xec14aaf2, 0xbf9c63d2} }, -/**/ {{0xa686bd86, 0x3c3ce030} },}, -/**/ {{{0x28c8cabf, 0xbf984925} }, -/**/ {{0x0619fa67, 0x3c3d192d} },}, -/**/ {{{0x25980cc1, 0xbf9432a9} }, -/**/ {{0x39004192, 0x3c38cdaf} },}, -/**/ {{{0x58935847, 0xbf902056} }, -/**/ {{0x8416e71f, 0xbc327c8e} },}, -/**/ {{{0xa388a2aa, 0xbf882448} }, -/**/ {{0x137f09a0, 0xbc104b16} },}, -/**/ {{{0x7588de71, 0xbf801015} }, -/**/ {{0xd417ced0, 0xbc146662} },}, -/**/ {{{0x59588b35, 0xbf700805} }, -/**/ {{0x8cf63677, 0xbc1f9663} },}, -/**/ {{{0x00000000, 0x00000000} }, -/**/ {{0x00000000, 0x00000000} },}, -/**/ {{{0xa2b10bc0, 0x3f6ff00a} }, -/**/ {{0xd5a6d353, 0x3c02821a} },}, -/**/ {{{0x6b106789, 0x3f7fe02a} }, -/**/ {{0xe3711ebf, 0xbbce44b7} },}, -/**/ {{{0x5f810a77, 0x3f87dc47} }, -/**/ {{0x87d3df21, 0xbc116d76} },}, -/**/ {{{0xb0fc03e4, 0x3f8fc0a8} }, -/**/ {{0xc59642a1, 0xbc183092} },}, -/**/ {{{0x4346a575, 0x3f93cea4} }, -/**/ {{0x902b3a1c, 0xbc10cb5a} },}, -/**/ {{{0x07d5b11b, 0x3f97b91b} }, -/**/ {{0xace3a510, 0xbc35b602} },}, -/**/ {{{0x27af9198, 0x3f9b9fc0} }, -/**/ {{0x229dc868, 0xbbf0ae69} },}, -/**/ {{{0x0e783300, 0x3f9f829b} }, -/**/ {{0x04f1ef23, 0x3c333e3f} },}, -/**/ {{{0x8923d980, 0x3fa1b0d9} }, -/**/ {{0x89bac481, 0xbc3e9ae8} },}, -/**/ {{{0xb9febd60, 0x3fa39e87} }, -/**/ {{0x37f551bb, 0xbc45bfa9} },}, -/**/ {{{0xafc8e4d5, 0x3fa58a5b} }, -/**/ {{0x2b4e2b72, 0xbc4ce55c} },}, -/**/ {{{0xf632dcfc, 0x3fa77458} }, -/**/ {{0xa87b9296, 0x3c418d3c} },}, -/**/ {{{0x0ec8e3eb, 0x3fa95c83} }, -/**/ {{0x80520bf2, 0x3c4f5a0e} },}, -/**/ {{{0x711971bf, 0x3fab42dd} }, -/**/ {{0x9c130499, 0xbc3eb975} },}, -/**/ {{{0x8adb0b52, 0x3fad276b} }, -/**/ {{0x3257fd47, 0x3c21e3c5} },}, -/**/ {{{0xc01162a6, 0x3faf0a30} }, -/**/ {{0x5c5bbacd, 0x3c485f32} },}, -/**/ {{{0x3598e471, 0x3fb07598} }, -/**/ {{0x333c45b8, 0x3c480da5} },}, -/**/ {{{0xeea37ae1, 0x3fb16536} }, -/**/ {{0xe8c22cda, 0xbc379da3} },}, -/**/ {{{0x2f0a1417, 0x3fb253f6} }, -/**/ {{0x63fc4cfd, 0xbc1c1259} },}, -/**/ {{{0x961bd1d1, 0x3fb341d7} }, -/**/ {{0x227becbb, 0xbc5b599f} },}, -/**/ {{{0xbea646f0, 0x3fb42edc} }, -/**/ {{0x935996c9, 0x3c4ddd4f} },}, -/**/ {{{0x3f06183f, 0x3fb51b07} }, -/**/ {{0x9a1a8be4, 0x3c5a49e3} },}, -/**/ {{{0xa93750c4, 0x3fb60658} }, -/**/ {{0x8ec21b6a, 0xbc538845} },}, -/**/ {{{0x8ae56b4c, 0x3fb6f0d2} }, -/**/ {{0x9184b992, 0xbc5906d9} },}, -/**/ {{{0x6d7b12cd, 0x3fb7da76} }, -/**/ {{0xcdd94131, 0xbc5eeedf} },}, -/**/ {{{0xd6319b21, 0x3fb8c345} }, -/**/ {{0xab3424a9, 0xbc24a697} },}, -/**/ {{{0x462033ad, 0x3fb9ab42} }, -/**/ {{0x1c184e8e, 0xbc42099e} },}, -/**/ {{{0x3a4ad563, 0x3fba926d} }, -/**/ {{0x8aa70ea9, 0x3c5942f4} },}, -/**/ {{{0x2bb0eda1, 0x3fbb78c8} }, -/**/ {{0xf0327e21, 0x3c20878c} },}, -/**/ {{{0x8f5bc743, 0x3fbc5e54} }, -/**/ {{0xef8161b1, 0x3c35d617} },}, -/**/ {{{0xd66cb35d, 0x3fbd4313} }, -/**/ {{0x951d90fa, 0x3c5790dd} },}, -/**/ {{{0x6e2af2e6, 0x3fbe2707} }, -/**/ {{0x001e0162, 0xbc361578} },}, -/**/ {{{0xc01162a6, 0x3fbf0a30} }, -/**/ {{0x5c5bbacd, 0x3c585f32} },}, -/**/ {{{0x31dbeabb, 0x3fbfec91} }, -/**/ {{0x9981b36c, 0xbc55746b} },}, -/**/ {{{0x12ca596e, 0x3fc06715} }, -/**/ {{0x7eb86499, 0x3c550c64} },}, -/**/ {{{0x7cd08e59, 0x3fc0d77e} }, -/**/ {{0x5e9030ac, 0x3c69a5dc} },}, -/**/ {{{0x846742ac, 0x3fc14785} }, -/**/ {{0x3e3a7f07, 0x3c6a2881} },}, -/**/ {{{0xd52f67a0, 0x3fc1b72a} }, -/**/ {{0x3472cd74, 0x3c548302} },}, -/**/ {{{0x190a5acb, 0x3fc2266f} }, -/**/ {{0xf1809e88, 0x3c6f547b} },}, -/**/ {{{0xf81ff523, 0x3fc29552} }, -/**/ {{0x1c407dbf, 0x3c630177} },}, -/**/ {{{0x18e47fd3, 0x3fc303d7} }, -/**/ {{0xd96091fa, 0xbc06b9c7} },}, -/**/ {{{0x201e8f74, 0x3fc371fc} }, -/**/ {{0x62af18a0, 0x3c5de6cb} },}, -/**/ {{{0xb0ecc62a, 0x3fc3dfc2} }, -/**/ {{0xe7d81017, 0xbc5ab3a8} },}, -/**/ {{{0x6ccb7d1e, 0x3fc44d2b} }, -/**/ {{0x543e1f88, 0x3c69f4f6} },}, -/**/ {{{0xf39a55e5, 0x3fc4ba36} }, -/**/ {{0xbcc36756, 0x3c668981} },}, -/**/ {{{0xe3a1b438, 0x3fc526e5} }, -/**/ {{0x8a470d3a, 0xbc6746ff} },}, -/**/ {{{0xd9982086, 0x3fc59338} }, -/**/ {{0xaa8ad7cf, 0xbc565d22} },}, -/**/ {{{0x70a793d4, 0x3fc5ff30} }, -/**/ {{0xfafc6f6e, 0xbc5bc60e} },}, -/**/ {{{0x4272ad51, 0x3fc66acd} }, -/**/ {{0x4e1ea8b2, 0xbc50900e} },}, -/**/ {{{0xe719d21d, 0x3fc6d60f} }, -/**/ {{0x68ecd179, 0xbc6caae2} },}, -/**/ {{{0xf54037a5, 0x3fc740f8} }, -/**/ {{0x62a84cdb, 0xbc5b2640} },}, -/**/ {{{0x0210d909, 0x3fc7ab89} }, -/**/ {{0x2d6a0608, 0x3c4be36b} },}, -/**/ {{{0xa14357eb, 0x3fc815c0} }, -/**/ {{0x073a0564, 0xbc54be48} },}, -/**/ {{{0x6520c911, 0x3fc87fa0} }, -/**/ {{0xbfa08d9a, 0xbc6bf7fd} },}, -/**/ {{{0xde886d41, 0x3fc8e928} }, -/**/ {{0x51a56770, 0xbc6569d8} },}, -/**/ {{{0x9cf456b4, 0x3fc9525a} }, -/**/ {{0x1d4e2e26, 0x3c6d904c} },}, -/**/ {{{0x2e7dfb83, 0x3fc9bb36} }, -/**/ {{0x1f003e0c, 0x3c6575e3} },}, -/**/ {{{0x1fe2b563, 0x3fca23bc} }, -/**/ {{0xb07a998c, 0x3c493711} },}, -/**/ {{{0xfc882f19, 0x3fca8bec} }, -/**/ {{0x918c39eb, 0xbc5e8c37} },}, -/**/ {{{0x4e80bff3, 0x3fcaf3c9} }, -/**/ {{0xf3641985, 0xbc5398cf} },}, -/**/ {{{0x9e8fb5a4, 0x3fcb5b51} }, -/**/ {{0xdc19e1a0, 0x3c6ba27f} },}, -/**/ {{{0x742d8cd6, 0x3fcbc286} }, -/**/ {{0x44870f55, 0x3c54fce7} },}, -/**/ {{{0x558c18c1, 0x3fcc2968} }, -/**/ {{0x38a3fb6b, 0xbc673dee} },}, -/**/ {{{0xc79a9a22, 0x3fcc8ff7} }, -/**/ {{0xf8434012, 0xbc64f689} },}, -/**/ {{{0x4e09c5dc, 0x3fccf635} }, -/**/ {{0x7d55b695, 0x3c6239a0} },}, -/**/ {{{0x6b4fbb91, 0x3fcd5c21} }, -/**/ {{0x597e4d40, 0x3c66e443} },}, -/**/ {{{0xa0abec7d, 0x3fcdc1bc} }, -/**/ {{0x1998b6fc, 0x3c6834c5} },}, -/**/ {{{0x6e2af2e6, 0x3fce2707} }, -/**/ {{0x001e0162, 0xbc461578} },}, -/**/ {{{0x52aa5a60, 0x3fce8c02} }, -/**/ {{0x39bfc89b, 0xbc46e03a} },}, -/**/ {{{0xcbdc5936, 0x3fcef0ad} }, -/**/ {{0x950dc20d, 0x3c648637} },}, -/**/ {{{0x564b7b37, 0x3fcf550a} }, -/**/ {{0xfd018c37, 0x3c2c5f6d} },}, -/**/ {{{0x6d5e3e2b, 0x3fcfb918} }, -/**/ {{0x64f21acb, 0xbc6caaae} },}, -/**/ {{{0x45ad501d, 0x3fd00e6c} }, -/**/ {{0x8ff6fead, 0xbc6cb956} },}, -/**/ {{{0x94b4d041, 0x3fd04025} }, -/**/ {{0x17a5022d, 0xbc628ec2} },}, -/**/ {{{0x5fcd590d, 0x3fd071b8} }, -/**/ {{0xf97bde80, 0x3c5d1707} },}, -/**/ {{{0xe27390e3, 0x3fd0a324} }, -/**/ {{0xe8061c03, 0x3c77dcfd} },}, -/**/ {{{0x579ab74b, 0x3fd0d46b} }, -/**/ {{0x1c3cbd92, 0x3c603ec8} },}, -/**/ {{{0xf9ae4ad5, 0x3fd1058b} }, -/**/ {{0xab4cb31d, 0x3c589fa0} },}, -/**/ {{{0x0293a8b0, 0x3fd13687} }, -/**/ {{0x98edd24a, 0x3c77b662} },}, -/**/ {{{0xababa60e, 0x3fd1675c} }, -/**/ {{0xab883717, 0x3c2ce63e} },}, -/**/ {{{0x2dd4236f, 0x3fd1980d} }, -/**/ {{0xb0e4d147, 0x3c79d3d1} },}, -/**/ {{{0xc16999fb, 0x3fd1c898} }, -/**/ {{0x2aff1c44, 0xbc30e5c6} },}, -/**/ {{{0x9e48a2f3, 0x3fd1f8ff} }, -/**/ {{0x9a0c4b07, 0xbc7c9fdf} },}, -/**/ {{{0xfbcf7966, 0x3fd22941} }, -/**/ {{0xb09628af, 0xbc776f5e} },}, -/**/ {{{0x10df763a, 0x3fd25960} }, -/**/ {{0x57075e9e, 0xbc50f76c} },}, -/**/ {{{0x13de86a3, 0x3fd2895a} }, -/**/ {{0xc13f040e, 0x3c77ad24} },}, -/**/ {{{0x3ab89d25, 0x3fd2b930} }, -/**/ {{0xfd852ad4, 0xbc7896b5} },}, -/**/ {{{0xbae11d31, 0x3fd2e8e2} }, -/**/ {{0xb95ebdf9, 0xbc78f4cd} },}, -/**/ {{{0xc9544185, 0x3fd31871} }, -/**/ {{0x4c09b379, 0xbc351acc} },}, -/**/ {{{0x9a987d55, 0x3fd347dd} }, -/**/ {{0x580919f8, 0xbc64dd4c} },}, -/**/ {{{0x62bfd85b, 0x3fd37726} }, -/**/ {{0xd8117de7, 0xbc4b5629} },}, -/**/ {{{0x556945ea, 0x3fd3a64c} }, -/**/ {{0x1945f97c, 0xbc6c6865} },}, -/**/ {{{0xa5c1f710, 0x3fd3d54f} }, -/**/ {{0xc6a1c98d, 0xbc7e3265} },}, -/**/ {{{0x8686a7e4, 0x3fd40430} }, -/**/ {{0x6082ce6d, 0xbc70bcfb} },}, -/**/ {{{0x2a04e814, 0x3fd432ef} }, -/**/ {{0x715ac903, 0xbc729931} },}, -/**/ {{{0xc21c5ec2, 0x3fd4618b} }, -/**/ {{0xcdeccf1d, 0x3c7f42de} },}, -/**/ {{{0x804009d1, 0x3fd49006} }, -/**/ {{0x41f177dc, 0xbc69ffc3} },}, -/**/ {{{0x957778a1, 0x3fd4be5f} }, -/**/ {{0x5b04813d, 0xbc6259b3} },}, -/**/ {{{0x3260026a, 0x3fd4ec97} }, -/**/ {{0xd977dc5e, 0xbc742a87} },}, -/**/ {{{0x872df82d, 0x3fd51aad} }, -/**/ {{0xc19f55e3, 0x3c43927a} },}, -/**/ {{{0xc3add263, 0x3fd548a2} }, -/**/ {{0x7e308ddb, 0xbc6819cf} },}, -/**/ {{{0x17455a6c, 0x3fd57677} }, -/**/ {{0xb283660c, 0x3c7526ad} },}, -/**/ {{{0xb0f4cfe2, 0x3fd5a42a} }, -/**/ {{0x7dee9a3d, 0xbc78ebcb} },}, -/**/ {{{0xbf5809ca, 0x3fd5d1bd} }, -/**/ {{0x83dc7fe1, 0x3c742363} },}, -/**/ {{{0x70a793d4, 0x3fd5ff30} }, -/**/ {{0xfafc6f6e, 0xbc6bc60e} },}, -/**/ {{{0xf2b9c795, 0x3fd62c82} }, -/**/ {{0x915300e5, 0x3c67b7af} },}, - }; - - static const number - Lv[362][2] = { /* log(vj) */ - -/**/ {{{0xb72daabf, 0xbf6687ec} }, -/**/ {{0x0f13318f, 0x3c052c69} },}, -/**/ {{{0x3767104f, 0xbf6667d6} }, -/**/ {{0xd27a7bac, 0x3bd3efa3} },}, -/**/ {{{0xd7cd64fb, 0xbf6647bf} }, -/**/ {{0x55a89c36, 0x3c09b725} },}, -/**/ {{{0x9860683b, 0xbf6627a9} }, -/**/ {{0xfebc844a, 0x3bcbae22} },}, -/**/ {{{0x791fd98a, 0xbf660793} }, -/**/ {{0x78fa1cb5, 0xbbfe34af} },}, -/**/ {{{0x7a0b7863, 0xbf65e77d} }, -/**/ {{0xea78fdd0, 0xbc02f1b1} },}, -/**/ {{{0x9b230442, 0xbf65c767} }, -/**/ {{0x2202b2ca, 0x3bf70d8c} },}, -/**/ {{{0xdc663ca2, 0xbf65a751} }, -/**/ {{0xc3444e64, 0xbbfdc63d} },}, -/**/ {{{0x3dd4e102, 0xbf65873c} }, -/**/ {{0x370d69c3, 0x3c021b11} },}, -/**/ {{{0xbf6eb0de, 0xbf656726} }, -/**/ {{0x154dd8d8, 0xbbfb6da8} },}, -/**/ {{{0x61336bb6, 0xbf654711} }, -/**/ {{0xdf9a4709, 0xbc0b12d2} },}, -/**/ {{{0x2322d10a, 0xbf6526fc} }, -/**/ {{0x68d1274f, 0x3bf997f2} },}, -/**/ {{{0x053ca059, 0xbf6506e7} }, -/**/ {{0xe70c852a, 0x3c0c2a1f} },}, -/**/ {{{0x07809924, 0xbf64e6d2} }, -/**/ {{0xa808538f, 0x3c04cc9e} },}, -/**/ {{{0x29ee7aed, 0xbf64c6bd} }, -/**/ {{0x7797a4bd, 0x3befe68c} },}, -/**/ {{{0x6c860537, 0xbf64a6a8} }, -/**/ {{0x9efaae3d, 0x3c06794d} },}, -/**/ {{{0xcf46f784, 0xbf648693} }, -/**/ {{0xb2ddd9d1, 0xbbfed318} },}, -/**/ {{{0x5231115a, 0xbf64667f} }, -/**/ {{0x4643624b, 0x3c061f62} },}, -/**/ {{{0xf544123c, 0xbf64466a} }, -/**/ {{0x9387f11e, 0x3c0666a0} },}, -/**/ {{{0xb87fb9b0, 0xbf642656} }, -/**/ {{0x116ec598, 0x3c0043b2} },}, -/**/ {{{0x9be3c73c, 0xbf640642} }, -/**/ {{0xd2de6e3e, 0xbbfbd84d} },}, -/**/ {{{0x9f6ffa68, 0xbf63e62e} }, -/**/ {{0x433d8c65, 0xbbe9149b} },}, -/**/ {{{0xc32412bb, 0xbf63c61a} }, -/**/ {{0x08e5a7bb, 0xbbf6b88d} },}, -/**/ {{{0x06ffcfbe, 0xbf63a607} }, -/**/ {{0xccfac9e2, 0xbb9f3c7a} },}, -/**/ {{{0x6b02f0fa, 0xbf6385f3} }, -/**/ {{0xbec6f6e4, 0x3bee405c} },}, -/**/ {{{0xef2d35f9, 0xbf6365df} }, -/**/ {{0xaf0c0b4c, 0x3bf02993} },}, -/**/ {{{0x937e5e46, 0xbf6345cc} }, -/**/ {{0xaa64716f, 0x3bf9be97} },}, -/**/ {{{0x57f6296c, 0xbf6325b9} }, -/**/ {{0xa2e863ae, 0xbbfdeb4d} },}, -/**/ {{{0x3c9456f9, 0xbf6305a6} }, -/**/ {{0x636d2b2c, 0x3c0f3c7f} },}, -/**/ {{{0x4158a678, 0xbf62e593} }, -/**/ {{0xb166ca7f, 0x3c01a8df} },}, -/**/ {{{0x6642d778, 0xbf62c580} }, -/**/ {{0x53a2d534, 0x3c020ff1} },}, -/**/ {{{0xab52a987, 0xbf62a56d} }, -/**/ {{0x0412f1e7, 0xbbe8fef1} },}, -/**/ {{{0x1087dc35, 0xbf62855b} }, -/**/ {{0x4b7ac6c6, 0xbbfcd17e} },}, -/**/ {{{0x95e22f12, 0xbf626548} }, -/**/ {{0x9a8127bf, 0xbbfbfc21} },}, -/**/ {{{0x3b6161af, 0xbf624536} }, -/**/ {{0x66d42390, 0x3bd7eda1} },}, -/**/ {{{0x0105339d, 0xbf622524} }, -/**/ {{0x77fedcad, 0xbbdf374e} },}, -/**/ {{{0xe6cd646f, 0xbf620511} }, -/**/ {{0x52d05dea, 0x3be1d1fb} },}, -/**/ {{{0xecb9b3b8, 0xbf61e4ff} }, -/**/ {{0xffd8e706, 0x3c02c2fc} },}, -/**/ {{{0x12c9e10b, 0xbf61c4ee} }, -/**/ {{0xf1d5cc2c, 0xbc02b4f8} },}, -/**/ {{{0x58fdabfe, 0xbf61a4dc} }, -/**/ {{0x1315b191, 0xbc0618c3} },}, -/**/ {{{0xbf54d426, 0xbf6184ca} }, -/**/ {{0xcb3cdab0, 0xbc01f8d5} },}, -/**/ {{{0x45cf1919, 0xbf6164b9} }, -/**/ {{0xc025605a, 0xbc014ff7} },}, -/**/ {{{0xec6c3a6e, 0xbf6144a7} }, -/**/ {{0x87cb08cd, 0xbbff04ff} },}, -/**/ {{{0xb32bf7bd, 0xbf612496} }, -/**/ {{0xe6af1b84, 0x3bee89b4} },}, -/**/ {{{0x9a0e109e, 0xbf610485} }, -/**/ {{0x35a60879, 0x3c07e99e} },}, -/**/ {{{0xa11244aa, 0xbf60e474} }, -/**/ {{0x20f2325a, 0x3c04b698} },}, -/**/ {{{0xc838537b, 0xbf60c463} }, -/**/ {{0x3617200d, 0x3bc0657e} },}, -/**/ {{{0x0f7ffcac, 0xbf60a453} }, -/**/ {{0xa5080961, 0xbc008feb} },}, -/**/ {{{0x76e8ffd9, 0xbf608442} }, -/**/ {{0xbb5e1df7, 0x3bd13002} },}, -/**/ {{{0xfe731c9d, 0xbf606431} }, -/**/ {{0x6e2858c0, 0xbc0509f3} },}, -/**/ {{{0xa61e1296, 0xbf604421} }, -/**/ {{0x5f5d9695, 0xbc04b556} },}, -/**/ {{{0x6de9a162, 0xbf602411} }, -/**/ {{0xe79a4e00, 0x3c042b89} },}, -/**/ {{{0x55d5889e, 0xbf600401} }, -/**/ {{0x1113f403, 0x3be8f98e} },}, -/**/ {{{0xbbc30fd4, 0xbf5fc7e2} }, -/**/ {{0x93382bc9, 0xbbfc709b} },}, -/**/ {{{0x0c1abdcd, 0xbf5f87c3} }, -/**/ {{0x76a55d1c, 0xbbf2a90d} },}, -/**/ {{{0x9cb19a68, 0xbf5f47a3} }, -/**/ {{0x76e7826b, 0x3be1b815} },}, -/**/ {{{0x6d8724e7, 0xbf5f0784} }, -/**/ {{0x2b63756d, 0xbbe72d46} },}, -/**/ {{{0x7e9adc90, 0xbf5ec765} }, -/**/ {{0x73bb17c5, 0x3beb1a66} },}, -/**/ {{{0xcfec40a8, 0xbf5e8746} }, -/**/ {{0xb5e5a553, 0x3bf11af5} },}, -/**/ {{{0x617ad077, 0xbf5e4728} }, -/**/ {{0xf57dd14f, 0x3bfb2cad} },}, -/**/ {{{0x33460b45, 0xbf5e070a} }, -/**/ {{0x4902c8d5, 0xbbf8db75} },}, -/**/ {{{0x454d705f, 0xbf5dc6ec} }, -/**/ {{0xe8a41057, 0x3bef5cc6} },}, -/**/ {{{0x97907f0f, 0xbf5d86ce} }, -/**/ {{0xdf8672ef, 0x3bed8277} },}, -/**/ {{{0x2a0eb6a3, 0xbf5d46b1} }, -/**/ {{0x3717e5ee, 0xbbc2f9c2} },}, -/**/ {{{0xfcc7966b, 0xbf5d0693} }, -/**/ {{0xab4852c6, 0x3bf4deed} },}, -/**/ {{{0x0fba9db6, 0xbf5cc677} }, -/**/ {{0x9db2a368, 0xbbf3a2b4} },}, -/**/ {{{0x62e74bd8, 0xbf5c865a} }, -/**/ {{0x58fa0c24, 0xbbd2c51d} },}, -/**/ {{{0xf64d2024, 0xbf5c463d} }, -/**/ {{0xe3a09391, 0x3bf838ca} },}, -/**/ {{{0xc9eb99ee, 0xbf5c0621} }, -/**/ {{0x61b7de71, 0xbbdc2a9e} },}, -/**/ {{{0xddc2388e, 0xbf5bc605} }, -/**/ {{0x4accb195, 0xbbea9808} },}, -/**/ {{{0x31d07b5c, 0xbf5b85ea} }, -/**/ {{0x032e030b, 0xbbd811a2} },}, -/**/ {{{0xc615e1b1, 0xbf5b45ce} }, -/**/ {{0x821e0b81, 0xbbfd5427} },}, -/**/ {{{0x9a91eaea, 0xbf5b05b3} }, -/**/ {{0x2619306b, 0x3bfffeba} },}, -/**/ {{{0xaf441661, 0xbf5ac598} }, -/**/ {{0x9eac7d15, 0x3bd22824} },}, -/**/ {{{0x042be376, 0xbf5a857e} }, -/**/ {{0x24893f0e, 0x3bc20736} },}, -/**/ {{{0x9948d188, 0xbf5a4563} }, -/**/ {{0x04d734cd, 0xbbf58ab4} },}, -/**/ {{{0x6e9a5ff9, 0xbf5a0549} }, -/**/ {{0x5723a6c3, 0xbbf22673} },}, -/**/ {{{0x84200e2c, 0xbf59c52f} }, -/**/ {{0xa538e8e1, 0x3bfc81da} },}, -/**/ {{{0xd9d95b83, 0xbf598515} }, -/**/ {{0x2a8e3feb, 0xbbfa1a37} },}, -/**/ {{{0x6fc5c767, 0xbf5944fc} }, -/**/ {{0x385159f9, 0x3bf8e1ce} },}, -/**/ {{{0x45e4d13c, 0xbf5904e3} }, -/**/ {{0x1567c7a7, 0xbbfc4737} },}, -/**/ {{{0x5c35f86e, 0xbf58c4ca} }, -/**/ {{0x23c9ae0c, 0x3bf41581} },}, -/**/ {{{0xb2b8bc65, 0xbf5884b1} }, -/**/ {{0x2b66cfb6, 0x3bf70c2c} },}, -/**/ {{{0x496c9c8d, 0xbf584499} }, -/**/ {{0xe5a11e3e, 0xbbdb9042} },}, -/**/ {{{0x20511854, 0xbf580481} }, -/**/ {{0x61bcb040, 0xbbf9cf9d} },}, -/**/ {{{0x3765af29, 0xbf57c469} }, -/**/ {{0xe26a419b, 0xbbf65ceb} },}, -/**/ {{{0x8ea9e07c, 0xbf578451} }, -/**/ {{0xb70a4088, 0xbbf1c2f5} },}, -/**/ {{{0x261d2bbf, 0xbf57443a} }, -/**/ {{0x29704ba7, 0xbbbc7b8f} },}, -/**/ {{{0xfdbf1065, 0xbf570422} }, -/**/ {{0x433ccb3b, 0x3bca0a54} },}, -/**/ {{{0x158f0de3, 0xbf56c40c} }, -/**/ {{0x207cde2d, 0x3bd9e257} },}, -/**/ {{{0x6d8ca3af, 0xbf5683f5} }, -/**/ {{0xf7b51b49, 0xbbef17a4} },}, -/**/ {{{0x05b75142, 0xbf5643df} }, -/**/ {{0x9d345bf8, 0x3be28239} },}, -/**/ {{{0xde0e9614, 0xbf5603c8} }, -/**/ {{0x0918d1bf, 0xbbde6c21} },}, -/**/ {{{0xf691f1a1, 0xbf55c3b2} }, -/**/ {{0x377de4c8, 0x3bd37d78} },}, -/**/ {{{0x4f40e365, 0xbf55839d} }, -/**/ {{0xbbf7c9d1, 0x3bf52b7d} },}, -/**/ {{{0xe81aeadd, 0xbf554387} }, -/**/ {{0x679c3d9a, 0xbbf0be6a} },}, -/**/ {{{0xc11f878a, 0xbf550372} }, -/**/ {{0xb6cdd88e, 0xbbdd9e20} },}, -/**/ {{{0xda4e38ec, 0xbf54c35d} }, -/**/ {{0x09302da0, 0xbbe3b1e7} },}, -/**/ {{{0x33a67e86, 0xbf548349} }, -/**/ {{0x085b922d, 0x3be8cba8} },}, -/**/ {{{0xcd27d7db, 0xbf544334} }, -/**/ {{0xf024ab43, 0xbba5f2c9} },}, -/**/ {{{0xa6d1c471, 0xbf540320} }, -/**/ {{0xf686cf3d, 0xbbeb31f3} },}, -/**/ {{{0xc0a3c3cf, 0xbf53c30c} }, -/**/ {{0xd4ad32f6, 0xbbf74ffe} },}, -/**/ {{{0x1a9d557e, 0xbf5382f9} }, -/**/ {{0x4acb368f, 0x3bd2e555} },}, -/**/ {{{0xb4bdf907, 0xbf5342e5} }, -/**/ {{0x07812806, 0x3be13442} },}, -/**/ {{{0x8f052df6, 0xbf5302d2} }, -/**/ {{0x70b1e756, 0x3bf5f429} },}, -/**/ {{{0xa97273d7, 0xbf52c2bf} }, -/**/ {{0x43a03fff, 0xbbf20aa3} },}, -/**/ {{{0x04054a3a, 0xbf5282ad} }, -/**/ {{0x8bebd7ad, 0xbbed4d57} },}, -/**/ {{{0x9ebd30ae, 0xbf52429a} }, -/**/ {{0x5a71c5a4, 0xbbff9529} },}, -/**/ {{{0x7999a6c6, 0xbf520288} }, -/**/ {{0x54100f9e, 0x3bfb055a} },}, -/**/ {{{0x949a2c12, 0xbf51c276} }, -/**/ {{0xa2e9f1b4, 0xbbff6978} },}, -/**/ {{{0xefbe402a, 0xbf518264} }, -/**/ {{0xbc188323, 0x3bf01fb9} },}, -/**/ {{{0x8b0562a1, 0xbf514253} }, -/**/ {{0x957bf23a, 0xbbf7c87c} },}, -/**/ {{{0x666f1311, 0xbf510242} }, -/**/ {{0xc8be6880, 0x3bdc2cb9} },}, -/**/ {{{0x81fad111, 0xbf50c231} }, -/**/ {{0x07ba000d, 0xbbf59fc1} },}, -/**/ {{{0xdda81c3d, 0xbf508220} }, -/**/ {{0xbf5c8a0b, 0xbbf06a0a} },}, -/**/ {{{0x79767431, 0xbf504210} }, -/**/ {{0xa9a705bc, 0x3bf3a6cf} },}, -/**/ {{{0x55655889, 0xbf500200} }, -/**/ {{0xbf0fa436, 0xbbe9abe6} },}, -/**/ {{{0xe2e891cc, 0xbf4f83e0} }, -/**/ {{0x1b81bf62, 0x3be4aa59} },}, -/**/ {{{0x9b4589ce, 0xbf4f03c1} }, -/**/ {{0x8a47f50a, 0xbbe60518} },}, -/**/ {{{0xd3e0985f, 0xbf4e83a2} }, -/**/ {{0x5ef17e96, 0x3bed32d8} },}, -/**/ {{{0x8cb8bcc3, 0xbf4e0384} }, -/**/ {{0xf09afa4d, 0xbbeb7b30} },}, -/**/ {{{0xc5ccf647, 0xbf4d8366} }, -/**/ {{0xf586cec2, 0xbbd527fc} },}, -/**/ {{{0x7f1c4437, 0xbf4d0349} }, -/**/ {{0x4a686886, 0x3bc2bcf0} },}, -/**/ {{{0xb8a5a5e3, 0xbf4c832c} }, -/**/ {{0x721c2ebe, 0x3bc98f93} },}, -/**/ {{{0x72681a9e, 0xbf4c0310} }, -/**/ {{0xb5308d22, 0xbbe20f00} },}, -/**/ {{{0xac62a1bf, 0xbf4b82f4} }, -/**/ {{0x9737b561, 0xbbe1edd0} },}, -/**/ {{{0x66943a9f, 0xbf4b02d9} }, -/**/ {{0x23f894a1, 0xbbcc950b} },}, -/**/ {{{0xa0fbe49a, 0xbf4a82be} }, -/**/ {{0x866bc982, 0xbb81da04} },}, -/**/ {{{0x5b989f0f, 0xbf4a02a4} }, -/**/ {{0x9d76196e, 0xbbd9114d} },}, -/**/ {{{0x96696961, 0xbf49828a} }, -/**/ {{0xd3292fd6, 0x3bc10d20} },}, -/**/ {{{0x516d42f4, 0xbf490271} }, -/**/ {{0x2e9a5dd5, 0xbbee53a3} },}, -/**/ {{{0x8ca32b32, 0xbf488258} }, -/**/ {{0xd18f8004, 0xbbc55af5} },}, -/**/ {{{0x480a2185, 0xbf480240} }, -/**/ {{0xa9b0178a, 0xbbb32d23} },}, -/**/ {{{0x83a1255c, 0xbf478228} }, -/**/ {{0x8152093a, 0x3be84cc3} },}, -/**/ {{{0x3f673627, 0xbf470211} }, -/**/ {{0xf4881c71, 0xbbd0055a} },}, -/**/ {{{0x7b5b535c, 0xbf4681fa} }, -/**/ {{0xb98336ea, 0x3bd2b73f} },}, -/**/ {{{0x377c7c71, 0xbf4601e4} }, -/**/ {{0x2ed05089, 0xbbcdcbed} },}, -/**/ {{{0x73c9b0e1, 0xbf4581ce} }, -/**/ {{0x61414697, 0xbbdda0c2} },}, -/**/ {{{0x3041f02a, 0xbf4501b9} }, -/**/ {{0x22f8b33c, 0x3bee5d53} },}, -/**/ {{{0x6ce439ca, 0xbf4481a4} }, -/**/ {{0x9c25c999, 0xbbe5512f} },}, -/**/ {{{0x29af8d47, 0xbf440190} }, -/**/ {{0xa4df0dfd, 0x3b7f48c2} },}, -/**/ {{{0x66a2ea26, 0xbf43817c} }, -/**/ {{0x517febd8, 0x3bd157c0} },}, -/**/ {{{0x23bd4ff0, 0xbf430169} }, -/**/ {{0x0176d244, 0xbbe2e229} },}, -/**/ {{{0x60fdbe33, 0xbf428156} }, -/**/ {{0x175812b3, 0x3be64664} },}, -/**/ {{{0x1e63347c, 0xbf420144} }, -/**/ {{0xd9355524, 0xbbe39ab4} },}, -/**/ {{{0x5becb260, 0xbf418132} }, -/**/ {{0xb6e1edc9, 0x3be74b27} },}, -/**/ {{{0x19993772, 0xbf410121} }, -/**/ {{0x393ab56a, 0xbbaa390b} },}, -/**/ {{{0x5767c34c, 0xbf408110} }, -/**/ {{0xf8c7783b, 0x3bd128e6} },}, -/**/ {{{0x15575589, 0xbf400100} }, -/**/ {{0xf23ef222, 0x3bec8863} },}, -/**/ {{{0xa6cddb8d, 0xbf3f01e0} }, -/**/ {{0xcdd29c3f, 0x3b8a9419} },}, -/**/ {{{0x232b174e, 0xbf3e01c2} }, -/**/ {{0xd5f5b191, 0xbbc7cf55} },}, -/**/ {{{0x9fc45d9e, 0xbf3d01a4} }, -/**/ {{0xb5038e7e, 0x3bddc58f} },}, -/**/ {{{0x1c97adca, 0xbf3c0188} }, -/**/ {{0xbb933e41, 0x3bc0238d} },}, -/**/ {{{0x99a30728, 0xbf3b016c} }, -/**/ {{0xc3c43664, 0xbbabde04} },}, -/**/ {{{0x16e46913, 0xbf3a0152} }, -/**/ {{0x5adc3673, 0x3bafe081} },}, -/**/ {{{0x9459d2eb, 0xbf390138} }, -/**/ {{0xc2a33d26, 0xbbd949da} },}, -/**/ {{{0x12014418, 0xbf380120} }, -/**/ {{0xf76e0326, 0xbbd3acbc} },}, -/**/ {{{0x8fd8bc07, 0xbf370108} }, -/**/ {{0x4cd6ce34, 0x3bdbde09} },}, -/**/ {{{0x0dde3a29, 0xbf3600f2} }, -/**/ {{0x05442a35, 0xbbb0bc28} },}, -/**/ {{{0x8c0fbdf9, 0xbf3500dc} }, -/**/ {{0x0908cbf7, 0x3bd21c68} },}, -/**/ {{{0x0a6b46f4, 0xbf3400c8} }, -/**/ {{0x0f107564, 0xbbdbd35e} },}, -/**/ {{{0x88eed4a1, 0xbf3300b4} }, -/**/ {{0x49a3dcb8, 0xbbc22067} },}, -/**/ {{{0x0798668a, 0xbf3200a2} }, -/**/ {{0xe7c5d0e5, 0x3bcdb7f0} },}, -/**/ {{{0x8665fc3f, 0xbf310090} }, -/**/ {{0xc7f9d69c, 0xbbd00add} },}, -/**/ {{{0x05559559, 0xbf300080} }, -/**/ {{0xa0e20e2f, 0x3bddd332} },}, -/**/ {{{0x08ca62e5, 0xbf2e00e1} }, -/**/ {{0x3a04bb77, 0xbbb15ff9} },}, -/**/ {{{0x0725a061, 0xbf2c00c4} }, -/**/ {{0xcc052f3e, 0x3bc88ab0} },}, -/**/ {{{0x05b8e275, 0xbf2a00a9} }, -/**/ {{0xf5f3cbcf, 0xbbcbba1a} },}, -/**/ {{{0x04802882, 0xbf280090} }, -/**/ {{0xa5bd7bd0, 0x3bcec900} },}, -/**/ {{{0x037771ef, 0xbf260079} }, -/**/ {{0x9b7b54fa, 0x3bb77ea0} },}, -/**/ {{{0x029abe33, 0xbf240064} }, -/**/ {{0x3ae68d18, 0xbbc1bbf0} },}, -/**/ {{{0x01e60cd1, 0xbf220051} }, -/**/ {{0x2b45cfcd, 0x3bb1dcd9} },}, -/**/ {{{0x01555d56, 0xbf200040} }, -/**/ {{0x863f53f6, 0x3bcddd88} },}, -/**/ {{{0x01c95eb7, 0xbf1c0062} }, -/**/ {{0xaa4dfd9a, 0x3bbd88f7} },}, -/**/ {{{0x01200510, 0xbf180048} }, -/**/ {{0x4f3db50b, 0xbb984d46} },}, -/**/ {{{0x00a6ad1c, 0xbf140032} }, -/**/ {{0x28ff1135, 0x3bb2e44b} },}, -/**/ {{{0x00555655, 0xbf100020} }, -/**/ {{0xccd5f17f, 0xbbb62224} },}, -/**/ {{{0x004800a2, 0xbf080024} }, -/**/ {{0x8d690542, 0xbb484d09} },}, -/**/ {{{0x00155575, 0xbf000010} }, -/**/ {{0x37779c0a, 0xbba56222} },}, -/**/ {{{0x00055559, 0xbef00008} }, -/**/ {{0x22cccd5f, 0xbb955622} },}, -/**/ {{{0x00000000, 0x00000000} }, -/**/ {{0x00000000, 0x00000000} },}, -/**/ {{{0x000aaaa3, 0x3eeffff0} }, -/**/ {{0xbd110fec, 0xbb8553bb} },}, -/**/ {{{0x002aaa6b, 0x3effffe0} }, -/**/ {{0xe6661d42, 0xbb953bbb} },}, -/**/ {{{0x0047ff5e, 0x3f07ffdc} }, -/**/ {{0x0d69020e, 0x3b484c90} },}, -/**/ {{{0x00aaa8ab, 0x3f0fffc0} }, -/**/ {{0x10fec82c, 0xbba3bbc1} },}, -/**/ {{{0x00a6a83a, 0x3f13ffce} }, -/**/ {{0x81546808, 0xbbb2e45f} },}, -/**/ {{{0x011ffaf0, 0x3f17ffb8} }, -/**/ {{0x4f3d9b6a, 0x3b984c53} },}, -/**/ {{{0x01c94bf5, 0x3f1bff9e} }, -/**/ {{0xdaa368ee, 0xbbbd8990} },}, -/**/ {{{0x02aa9aab, 0x3f1fff80} }, -/**/ {{0x78af0afc, 0x3b910e66} },}, -/**/ {{{0x01e5f330, 0x3f21ffaf} }, -/**/ {{0x26467402, 0xbbb1df8d} },}, -/**/ {{{0x029a9723, 0x3f23ff9c} }, -/**/ {{0x303b23b1, 0x3bc1b965} },}, -/**/ {{{0x037738be, 0x3f25ff87} }, -/**/ {{0x53d3dc06, 0xbbb787a3} },}, -/**/ {{{0x047fd782, 0x3f27ff70} }, -/**/ {{0xa5c0aff0, 0xbbced098} },}, -/**/ {{{0x05b872e4, 0x3f29ff57} }, -/**/ {{0x81c30d42, 0x3bcbadd4} },}, -/**/ {{{0x07250a51, 0x3f2bff3c} }, -/**/ {{0xd6bad8c1, 0xbbc89dd6} },}, -/**/ {{{0x08c99d24, 0x3f2dff1f} }, -/**/ {{0xaede8ad0, 0x3bb12609} },}, -/**/ {{{0x0aaa2ab1, 0x3f2fff00} }, -/**/ {{0x4dc4e3dc, 0x3ba0bbc0} },}, -/**/ {{{0x8665591f, 0x3f30ff6f} }, -/**/ {{0x80357b54, 0xbbd013d3} },}, -/**/ {{{0x07979982, 0x3f31ff5e} }, -/**/ {{0x4817ebcd, 0xbbce0e70} },}, -/**/ {{{0x88edd619, 0x3f32ff4b} }, -/**/ {{0xc582abc3, 0xbbd72b9e} },}, -/**/ {{{0x0a6a0e74, 0x3f33ff38} }, -/**/ {{0xb95bc1fe, 0x3bdb81fc} },}, -/**/ {{{0x8c0e4220, 0x3f34ff23} }, -/**/ {{0x9b549aae, 0x3bcaed12} },}, -/**/ {{{0x0ddc70a1, 0x3f35ff0e} }, -/**/ {{0xd97a3c05, 0x3bacf6f3} },}, -/**/ {{{0x8fd69976, 0x3f36fef7} }, -/**/ {{0x6f810a3c, 0x3bab2dcf} },}, -/**/ {{{0x11febc18, 0x3f37fee0} }, -/**/ {{0xf5d3f323, 0x3bd2b9bc} },}, -/**/ {{{0x9456d7fb, 0x3f38fec7} }, -/**/ {{0x6eaa1d6a, 0xbbbfb258} },}, -/**/ {{{0x16e0ec8b, 0x3f39feae} }, -/**/ {{0xceeb34b1, 0xbbb6137a} },}, -/**/ {{{0x999ef930, 0x3f3afe93} }, -/**/ {{0xdc639b08, 0xbbde70e0} },}, -/**/ {{{0x1c92fd4a, 0x3f3bfe78} }, -/**/ {{0x713cc126, 0xbbc4ed10} },}, -/**/ {{{0x9fbef835, 0x3f3cfe5b} }, -/**/ {{0xcc0e81bd, 0xbb873d63} },}, -/**/ {{{0x2324e946, 0x3f3dfe3e} }, -/**/ {{0x62dd5deb, 0x3bc09164} },}, -/**/ {{{0xa6c6cfcc, 0x3f3efe1f} }, -/**/ {{0x3512d15c, 0x3bdac2da} },}, -/**/ {{{0x2aa6ab11, 0x3f3ffe00} }, -/**/ {{0x62cc632d, 0x3b999e2b} },}, -/**/ {{{0xd7633d2c, 0x3f407eef} }, -/**/ {{0x63ff6024, 0xbbebc98b} },}, -/**/ {{{0x19941e6e, 0x3f40fedf} }, -/**/ {{0xe0aa6338, 0xbbb194c2} },}, -/**/ {{{0xdbe6f8eb, 0x3f417ecd} }, -/**/ {{0x57b0f571, 0x3be4241b} },}, -/**/ {{{0x1e5ccc3c, 0x3f41febc} }, -/**/ {{0x895d3592, 0x3bdc657d} },}, -/**/ {{{0xe0f697f6, 0x3f427ea9} }, -/**/ {{0x1c0ec17c, 0x3be35a5d} },}, -/**/ {{{0x23b55bac, 0x3f42fe97} }, -/**/ {{0x3e538464, 0x3bd6cfb7} },}, -/**/ {{{0xe69a16ed, 0x3f437e83} }, -/**/ {{0x7cef2478, 0x3bee96f7} },}, -/**/ {{{0x29a5c947, 0x3f43fe70} }, -/**/ {{0xbf46e36a, 0xbbd4d578} },}, -/**/ {{{0xecd97242, 0x3f447e5b} }, -/**/ {{0x3ff7dd44, 0xbbc9eb66} },}, -/**/ {{{0x30361165, 0x3f44fe47} }, -/**/ {{0x7e93f2fd, 0x3be400d7} },}, -/**/ {{{0xf3bca635, 0x3f457e31} }, -/**/ {{0xd375017f, 0xbbe0e2a2} },}, -/**/ {{{0x376e3031, 0x3f45fe1c} }, -/**/ {{0x8a5ae7f6, 0xbbd524eb} },}, -/**/ {{{0xfb4baed7, 0x3f467e05} }, -/**/ {{0x4e85c4e9, 0x3be204fb} },}, -/**/ {{{0x3f5621a3, 0x3f46fdef} }, -/**/ {{0x34886d52, 0xbbdf09d7} },}, -/**/ {{{0x038e880b, 0x3f477dd8} }, -/**/ {{0x14e596a3, 0xbbb8900e} },}, -/**/ {{{0x47f5e185, 0x3f47fdc0} }, -/**/ {{0x57d202d3, 0xbbebfa5c} },}, -/**/ {{{0x0c8d2d81, 0x3f487da8} }, -/**/ {{0xd68c0614, 0x3be2f6ae} },}, -/**/ {{{0x51556b70, 0x3f48fd8f} }, -/**/ {{0xe08fd201, 0xbbd0f4f2} },}, -/**/ {{{0x164f9abc, 0x3f497d76} }, -/**/ {{0xa871af60, 0x3b5296b7} },}, -/**/ {{{0x5b7cbace, 0x3f49fd5c} }, -/**/ {{0x9f17d42d, 0x3beb6ed4} },}, -/**/ {{{0x20ddcb0d, 0x3f4a7d42} }, -/**/ {{0x67c30397, 0xbbcb1149} },}, -/**/ {{{0x6673cada, 0x3f4afd27} }, -/**/ {{0x45da594f, 0x3bd32225} },}, -/**/ {{{0x2c3fb996, 0x3f4b7d0c} }, -/**/ {{0x208d4630, 0xbbb68893} },}, -/**/ {{{0x7242969d, 0x3f4bfcf0} }, -/**/ {{0x2b3efe1c, 0x3bc5db4d} },}, -/**/ {{{0x387d6149, 0x3f4c7cd4} }, -/**/ {{0xed57d98a, 0x3be46eff} },}, -/**/ {{{0x7ef118f1, 0x3f4cfcb7} }, -/**/ {{0x06f300fb, 0x3becc554} },}, -/**/ {{{0x459ebce9, 0x3f4d7c9a} }, -/**/ {{0x13638eb6, 0x3be1d251} },}, -/**/ {{{0x8c874c82, 0x3f4dfc7c} }, -/**/ {{0xd57a176f, 0xbbe863e9} },}, -/**/ {{{0x53abc708, 0x3f4e7c5e} }, -/**/ {{0x9528e50d, 0x3be2d95c} },}, -/**/ {{{0x9b0d2bc8, 0x3f4efc3f} }, -/**/ {{0xa5f5b8b7, 0x3bd1e8e8} },}, -/**/ {{{0x62ac7a09, 0x3f4f7c20} }, -/**/ {{0x17802a46, 0x3b5c8123} },}, -/**/ {{{0xaa8ab110, 0x3f4ffc00} }, -/**/ {{0xeb9b6cdb, 0xbbe0fecb} },}, -/**/ {{{0x3954680f, 0x3f503df0} }, -/**/ {{0x1c693678, 0x3bdac89b} },}, -/**/ {{{0xdd83eb3a, 0x3f507ddf} }, -/**/ {{0x0a75ad5f, 0xbbf638f6} },}, -/**/ {{{0x41d461a5, 0x3f50bdcf} }, -/**/ {{0x45f05b10, 0x3bfd4bc9} },}, -/**/ {{{0x66464aef, 0x3f50fdbe} }, -/**/ {{0x6abbf59c, 0xbbbd0554} },}, -/**/ {{{0x4ada26b1, 0x3f513dad} }, -/**/ {{0x6036fe6f, 0x3be38c65} },}, -/**/ {{{0xef907485, 0x3f517d9b} }, -/**/ {{0xf158bbc3, 0x3bfdc8a1} },}, -/**/ {{{0x5469b404, 0x3f51bd8a} }, -/**/ {{0x55632e3f, 0xbbdea231} },}, -/**/ {{{0x796664c3, 0x3f51fd78} }, -/**/ {{0x2edb73c2, 0xbbe00849} },}, -/**/ {{{0x5e870657, 0x3f523d66} }, -/**/ {{0x0789343e, 0x3bfba943} },}, -/**/ {{{0x03cc1855, 0x3f527d54} }, -/**/ {{0xeafafc52, 0x3bc5f644} },}, -/**/ {{{0x69361a4e, 0x3f52bd41} }, -/**/ {{0xa4a6e79f, 0xbbf2f743} },}, -/**/ {{{0x8ec58bd2, 0x3f52fd2e} }, -/**/ {{0x5ceb1abf, 0xbbd4f786} },}, -/**/ {{{0x747aec71, 0x3f533d1b} }, -/**/ {{0x49dc497d, 0xbbf369e3} },}, -/**/ {{{0x1a56bbb8, 0x3f537d08} }, -/**/ {{0x3726b14a, 0xbbfc5e6f} },}, -/**/ {{{0x80597933, 0x3f53bcf4} }, -/**/ {{0x808f75a7, 0xbbfe8b82} },}, -/**/ {{{0xa683a46c, 0x3f53fce0} }, -/**/ {{0x9cd06ae6, 0x3be02719} },}, -/**/ {{{0x8cd5bced, 0x3f543ccc} }, -/**/ {{0x758f80f8, 0x3bf9f98d} },}, -/**/ {{{0x3350423e, 0x3f547cb8} }, -/**/ {{0x48401f45, 0xbbd79c3d} },}, -/**/ {{{0x99f3b3e4, 0x3f54bca3} }, -/**/ {{0x2fba8948, 0xbbf422b8} },}, -/**/ {{{0xc0c09163, 0x3f54fc8e} }, -/**/ {{0xf4044be8, 0x3bf32cc1} },}, -/**/ {{{0xa7b75a40, 0x3f553c79} }, -/**/ {{0xf2249008, 0xbbe72cac} },}, -/**/ {{{0x4ed88dfb, 0x3f557c64} }, -/**/ {{0x459a204f, 0xbbe7183c} },}, -/**/ {{{0xb624ac14, 0x3f55bc4e} }, -/**/ {{0xba26d3d7, 0x3bf8aa64} },}, -/**/ {{{0xdd9c340b, 0x3f55fc38} }, -/**/ {{0x45fa193c, 0x3bdbb2ff} },}, -/**/ {{{0xc53fa55c, 0x3f563c22} }, -/**/ {{0x0484397b, 0x3bd67249} },}, -/**/ {{{0x6d0f7f83, 0x3f567c0c} }, -/**/ {{0xf1e73188, 0xbbd183d7} },}, -/**/ {{{0xd50c41fa, 0x3f56bbf5} }, -/**/ {{0x4ab68187, 0xbbef433d} },}, -/**/ {{{0xfd366c39, 0x3f56fbde} }, -/**/ {{0x66e09e58, 0x3be796b8} },}, -/**/ {{{0xe58e7db8, 0x3f573bc7} }, -/**/ {{0x81e6e7e6, 0x3bf65ec5} },}, -/**/ {{{0x8e14f5ed, 0x3f577bb0} }, -/**/ {{0xa9463a9c, 0xbbdb944d} },}, -/**/ {{{0xf6ca544b, 0x3f57bb98} }, -/**/ {{0xc5eda344, 0xbbc396ec} },}, -/**/ {{{0x1faf1845, 0x3f57fb81} }, -/**/ {{0xbb624f97, 0x3beb9e6d} },}, -/**/ {{{0x08c3c14d, 0x3f583b69} }, -/**/ {{0xe6295bf2, 0xbbe6ee13} },}, -/**/ {{{0xb208ced1, 0x3f587b50} }, -/**/ {{0x6ca19875, 0x3bfcf1a5} },}, -/**/ {{{0x1b7ec041, 0x3f58bb38} }, -/**/ {{0x07b4fc7e, 0x3bf2d181} },}, -/**/ {{{0x45261509, 0x3f58fb1f} }, -/**/ {{0x21bad336, 0x3bc419c5} },}, -/**/ {{{0x2eff4c94, 0x3f593b06} }, -/**/ {{0x700b305b, 0xbbdc2a4c} },}, -/**/ {{{0xd90ae64c, 0x3f597aec} }, -/**/ {{0xa23f359c, 0xbbfc53d3} },}, -/**/ {{{0x43496198, 0x3f59bad3} }, -/**/ {{0xaed6b50f, 0x3bf0c270} },}, -/**/ {{{0x6dbb3de1, 0x3f59fab9} }, -/**/ {{0x7a8be031, 0xbbf11464} },}, -/**/ {{{0x5860fa8a, 0x3f5a3a9f} }, -/**/ {{0x470dbe32, 0x3beae9e7} },}, -/**/ {{{0x033b16f8, 0x3f5a7a85} }, -/**/ {{0xda1f8579, 0x3bfc4721} },}, -/**/ {{{0x6e4a128e, 0x3f5aba6a} }, -/**/ {{0x029258ce, 0xbbf41852} },}, -/**/ {{{0x998e6cab, 0x3f5afa4f} }, -/**/ {{0x2eb18782, 0xbbf28584} },}, -/**/ {{{0x8508a4af, 0x3f5b3a34} }, -/**/ {{0x23241a2c, 0xbbea7970} },}, -/**/ {{{0x30b939f8, 0x3f5b7a19} }, -/**/ {{0x600551b6, 0xbbf1d8db} },}, -/**/ {{{0x9ca0abe2, 0x3f5bb9fd} }, -/**/ {{0x8c26cc71, 0xbbeaa412} },}, -/**/ {{{0xc8bf79c8, 0x3f5bf9e1} }, -/**/ {{0x30427cfc, 0xbbe7f81b} },}, -/**/ {{{0xb5162303, 0x3f5c39c5} }, -/**/ {{0xd1f134e1, 0x3bd9ec5f} },}, -/**/ {{{0x61a526eb, 0x3f5c79a9} }, -/**/ {{0x8980e47d, 0x3bff0cb0} },}, -/**/ {{{0xce6d04d7, 0x3f5cb98c} }, -/**/ {{0xe84ca4e2, 0x3bf35aca} },}, -/**/ {{{0xfb6e3c1b, 0x3f5cf96f} }, -/**/ {{0x1b0bd69f, 0x3bf9b1b8} },}, -/**/ {{{0xe8a94c0b, 0x3f5d3952} }, -/**/ {{0x3ce51832, 0x3be21310} },}, -/**/ {{{0x961eb3f8, 0x3f5d7935} }, -/**/ {{0x840c58ce, 0x3bf90786} },}, -/**/ {{{0x03cef334, 0x3f5db918} }, -/**/ {{0xf2dfb3f4, 0xbbfe0048} },}, -/**/ {{{0x31ba890b, 0x3f5df8fa} }, -/**/ {{0x3e295bec, 0x3bfcf652} },}, -/**/ {{{0x1fe1f4ce, 0x3f5e38dc} }, -/**/ {{0x151c9300, 0xbbfc5ebe} },}, -/**/ {{{0xce45b5c6, 0x3f5e78bd} }, -/**/ {{0x8a25b9c7, 0xbbef2cc4} },}, -/**/ {{{0x3ce64b3e, 0x3f5eb89f} }, -/**/ {{0xa6fea7bd, 0x3bfe6d27} },}, -/**/ {{{0x6bc43481, 0x3f5ef880} }, -/**/ {{0x914a6dab, 0xbbf68037} },}, -/**/ {{{0x5adff0d4, 0x3f5f3861} }, -/**/ {{0xf909e0e6, 0xbbf1d2f3} },}, -/**/ {{{0x0a39ff7e, 0x3f5f7842} }, -/**/ {{0xff1e1f71, 0xbbf64661} },}, -/**/ {{{0x79d2dfc3, 0x3f5fb822} }, -/**/ {{0x5a6f9e9a, 0xbbd76ce8} },}, -/**/ {{{0xa9ab10e6, 0x3f5ff802} }, -/**/ {{0xa153e3b2, 0x3bfe29e3} },}, -/**/ {{{0x4ce18915, 0x3f601bf1} }, -/**/ {{0xa3a73044, 0xbbe57c28} },}, -/**/ {{{0x250db166, 0x3f603be1} }, -/**/ {{0xc1ad9590, 0x3c0fd271} },}, -/**/ {{{0xdd5a4107, 0x3f605bd0} }, -/**/ {{0xc424c676, 0x3bfe4b5d} },}, -/**/ {{{0x75c77796, 0x3f607bc0} }, -/**/ {{0xc0eff1ba, 0xbc068804} },}, -/**/ {{{0xee5594b0, 0x3f609baf} }, -/**/ {{0x51dbded5, 0xbc0ff798} },}, -/**/ {{{0x4704d7f2, 0x3f60bb9f} }, -/**/ {{0x2d5aba70, 0xbbf70ef4} },}, -/**/ {{{0x7fd580f9, 0x3f60db8e} }, -/**/ {{0x7ae804b5, 0xbbeccb65} },}, -/**/ {{{0x98c7cf60, 0x3f60fb7d} }, -/**/ {{0x1775134d, 0x3bfede2f} },}, -/**/ {{{0x91dc02c3, 0x3f611b6c} }, -/**/ {{0x91ca4a67, 0xbc04d41e} },}, -/**/ {{{0x6b125aba, 0x3f613b5b} }, -/**/ {{0x4a12201d, 0x3bfe6d0c} },}, -/**/ {{{0x246b16e0, 0x3f615b4a} }, -/**/ {{0x4d4238d3, 0x3bfe507d} },}, -/**/ {{{0xbde676cd, 0x3f617b38} }, -/**/ {{0x0640462a, 0x3bfe0272} },}, -/**/ {{{0x3784ba19, 0x3f619b27} }, -/**/ {{0x02285659, 0x3bd94ab3} },}, -/**/ {{{0x9146205b, 0x3f61bb15} }, -/**/ {{0x1cc35b7b, 0xbbff1e2e} },}, -/**/ {{{0xcb2ae929, 0x3f61db03} }, -/**/ {{0x12f6bf8d, 0xbc03ee8e} },}, -/**/ {{{0xe5335418, 0x3f61faf1} }, -/**/ {{0x7b7d619b, 0x3c0bae5f} },}, -/**/ {{{0xdf5fa0bf, 0x3f621adf} }, -/**/ {{0xb3b731b0, 0xbbf5546a} },}, -/**/ {{{0xb9b00eb0, 0x3f623acd} }, -/**/ {{0x105fd253, 0xbbafb2b0} },}, -/**/ {{{0x7424dd7f, 0x3f625abb} }, -/**/ {{0xca53444b, 0x3c011647} },}, -/**/ {{{0x0ebe4cbf, 0x3f627aa9} }, -/**/ {{0x592f3be8, 0x3c01678f} },}, -/**/ {{{0x897c9c02, 0x3f629a96} }, -/**/ {{0x4347451d, 0xbbef2b12} },}, -/**/ {{{0xe4600ad8, 0x3f62ba83} }, -/**/ {{0xb2a477bc, 0x3bfb5bb7} },}, -/**/ {{{0x1f68d8d3, 0x3f62da71} }, -/**/ {{0x7a5822e4, 0xbc0590e1} },}, -/**/ {{{0x3a974581, 0x3f62fa5e} }, -/**/ {{0x53123101, 0xbbf0f2e5} },}, -/**/ {{{0x35eb9072, 0x3f631a4b} }, -/**/ {{0x0e3f5fde, 0xbc018db4} },}, -/**/ {{{0x1165f933, 0x3f633a38} }, -/**/ {{0x8d0afb38, 0x3c0921d5} },}, -/**/ {{{0xcd06bf53, 0x3f635a24} }, -/**/ {{0xb5791b80, 0x3c01f6ba} },}, -/**/ {{{0x68ce225e, 0x3f637a11} }, -/**/ {{0xa1894236, 0x3bde2af8} },}, -/**/ {{{0xe4bc61e0, 0x3f6399fd} }, -/**/ {{0xd0f06ff3, 0xbc062a48} },}, -/**/ {{{0x40d1bd63, 0x3f63b9ea} }, -/**/ {{0x4b4f9c11, 0x3bffc80c} },}, -/**/ {{{0x7d0e7473, 0x3f63d9d6} }, -/**/ {{0x6a92c891, 0x3c02219b} },}, -/**/ {{{0x9972c699, 0x3f63f9c2} }, -/**/ {{0x790ade9e, 0x3c0d3590} },}, -/**/ {{{0x95fef35f, 0x3f6419ae} }, -/**/ {{0x792a458c, 0xbc01c279} },}, -/**/ {{{0x72b33a4b, 0x3f64399a} }, -/**/ {{0x327bffae, 0x3c02ce64} },}, -/**/ {{{0x2f8fdae7, 0x3f645986} }, -/**/ {{0xd231155c, 0xbc070aec} },}, -/**/ {{{0xcc9514b7, 0x3f647971} }, -/**/ {{0xe4bbf776, 0x3c0f373d} },}, -/**/ {{{0x49c32744, 0x3f64995d} }, -/**/ {{0xbf22b2a7, 0xbbf6d7e5} },}, -/**/ {{{0xa71a5211, 0x3f64b948} }, -/**/ {{0x64fe2936, 0xbbedec69} },}, -/**/ {{{0xe49ad4a3, 0x3f64d933} }, -/**/ {{0xabee4257, 0x3bf5fc4b} },}, -/**/ {{{0x0244ee7e, 0x3f64f91f} }, -/**/ {{0x3cd1474f, 0x3c0c6fe3} },}, -/**/ {{{0x0018df26, 0x3f65190a} }, -/**/ {{0xd11e7fa5, 0xbc023957} },}, -/**/ {{{0xde16e61b, 0x3f6538f4} }, -/**/ {{0x55380346, 0x3c006c31} },}, -/**/ {{{0x9c3f42e1, 0x3f6558df} }, -/**/ {{0xc4a5134c, 0xbc09b7d4} },}, -/**/ {{{0x3a9234f7, 0x3f6578ca} }, -/**/ {{0x2772c19c, 0xbc0e3f10} },}, -/**/ {{{0xb90ffbdd, 0x3f6598b4} }, -/**/ {{0x5592b468, 0x3be6f110} },}, -/**/ {{{0x17b8d714, 0x3f65b89f} }, -/**/ {{0xb251ace2, 0xbc0a5fea} },}, -/**/ {{{0x568d0619, 0x3f65d889} }, -/**/ {{0x315da285, 0xbc0aacc9} },}, -/**/ {{{0x758cc86a, 0x3f65f873} }, -/**/ {{0xba64d81a, 0xbbeb0782} },}, -/**/ {{{0x74b85d85, 0x3f66185d} }, -/**/ {{0x8e1eb3fa, 0xbc09b459} },}, -/**/ {{{0x541004e5, 0x3f663847} }, -/**/ {{0x1d86e863, 0x3bce9c22} },}, -/**/ {{{0x1393fe07, 0x3f665831} }, -/**/ {{0xcf37ee90, 0xbbfbeb77} },}, -/**/ {{{0xb3448865, 0x3f66781a} }, -/**/ {{0xc252e3c9, 0xbc02dc68} },}, -/**/ {{{0x3321e379, 0x3f669804} }, -/**/ {{0xb40b3741, 0xbbe73a0b} },}, - }; - -#endif -#endif diff --git a/libgcc-math/dbl-64/upow.h b/libgcc-math/dbl-64/upow.h deleted file mode 100644 index 1db748319dc..00000000000 --- a/libgcc-math/dbl-64/upow.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001, 2002 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/******************************************************************/ -/* */ -/* MODULE_NAME:upow.h */ -/* */ -/* common data and variables prototype and definition */ -/******************************************************************/ - -#ifndef UPOW_H -#define UPOW_H - -#include "mydefs.h" - -#ifdef BIG_ENDI - const static mynumber -/**/ nZERO = {{0x80000000, 0}}, /* -0.0 */ -/**/ INF = {{0x7ff00000, 0x00000000}}, /* INF */ -/**/ nINF = {{0xfff00000, 0x00000000}}, /* -INF */ -/**/ NaNQ = {{0x7ff80000, 0x00000000}}, /* NaNQ */ -/**/ sqrt_2 = {{0x3ff6a09e, 0x667f3bcc}}, /* sqrt(2) */ -/**/ ln2a = {{0x3fe62e42, 0xfefa3800}}, /* ln(2) 43 bits */ -/**/ ln2b = {{0x3d2ef357, 0x93c76730}}, /* ln(2)-ln2a */ -/**/ bigu = {{0x4297ffff, 0xfffffd2c}}, /* 1.5*2**42 -724*2**-10 */ -/**/ bigv = {{0x4207ffff, 0xfff8016a}}, /* 1.5*2**33-1+362*2**-19 */ -/**/ t52 = {{0x43300000, 0x00000000}}, /* 2**52 */ -/**/ two52e = {{0x43300000, 0x000003ff}}; /* 2**52' */ - -#else -#ifdef LITTLE_ENDI - const static mynumber -/**/ nZERO = {{0, 0x80000000}}, /* -0.0 */ -/**/ INF = {{0x00000000, 0x7ff00000}}, /* INF */ -/**/ nINF = {{0x00000000, 0xfff00000}}, /* -INF */ -/**/ NaNQ = {{0x00000000, 0x7ff80000}}, /* NaNQ */ -/**/ sqrt_2 = {{0x667f3bcc, 0x3ff6a09e}}, /* sqrt(2) */ -/**/ ln2a = {{0xfefa3800, 0x3fe62e42}}, /* ln(2) 43 bits */ -/**/ ln2b = {{0x93c76730, 0x3d2ef357}}, /* ln(2)-ln2a */ -/**/ bigu = {{0xfffffd2c, 0x4297ffff}}, /* 1.5*2**42 -724*2**-10 */ -/**/ bigv = {{0xfff8016a, 0x4207ffff}}, /* 1.5*2**33-1+362*2**-19 */ -/**/ t52 = {{0x00000000, 0x43300000}}, /* 2**52 */ -/**/ two52e = {{0x000003ff, 0x43300000}}; /* 2**52' */ - -#endif -#endif - -const static double p2=-0.5, p3 = 3.3333333333333333333e-1, p4 = -0.25, - q2 = -0.5, q3 = 3.3333333333331404e-01, q4 = -2.4999999999996436e-01, - q5 = 2.0000010500004459e-01, q6 = -1.6666678916688004e-01, - r3 = 3.33333333333333333372884096563030E-01, - r4 = -2.50000000000000000213574153875908E-01, - r5 = 1.99999999999683593814072199830603E-01, - r6 = -1.66666666666065494878165510225378E-01, - r7 = 1.42857517857114380606360005067609E-01, - r8 = -1.25000449999974370683775964001702E-01, - s3 = 0.333251953125000000e0, - ss3 = 8.138020833333333333e-05, - s4 = -2.500000000000000000e-01, - s5 = 1.999999999999960937e-01, - s6 = -1.666666666666592447e-01, - s7 = 1.428571845238194705e-01, - s8 = -1.250000500000149097e-01; -#endif diff --git a/libgcc-math/dbl-64/upow.tbl b/libgcc-math/dbl-64/upow.tbl deleted file mode 100644 index acad6bcc894..00000000000 --- a/libgcc-math/dbl-64/upow.tbl +++ /dev/null @@ -1,10189 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/****************************************************************/ -/* TABLES FOR THE upow() FUNCTION */ -/****************************************************************/ - - - -#ifdef BIG_ENDI -static const union {int4 i[5800]; double x[2900];} ui = { .i = { -/**/ 0x3FF6A000, 0x00000000, -/**/ 0x3F33CD15, 0x3729043E, -/**/ 0xBFD63003, 0x0B3AB000, -/**/ 0x3D2DB623, 0xE731AE00, -/**/ 0x3FF69800, 0x00000000, -/**/ 0x3F33F349, 0xCC7267D0, -/**/ 0xBFD61965, 0xCDB03000, -/**/ 0x3D2F08AD, 0x603C488E, -/**/ 0x3FF69000, 0x00000000, -/**/ 0x3F3473A8, 0x8D0BFD2E, -/**/ 0xBFD602D0, 0x8AF09000, -/**/ 0xBD1EBE91, 0x76DF3F65, -/**/ 0x3FF68800, 0x00000000, -/**/ 0x3F354DD2, 0x390B9ED0, -/**/ 0xBFD5EC43, 0x3D5C3000, -/**/ 0xBD36B71A, 0x1229D17F, -/**/ 0x3FF68000, 0x00000000, -/**/ 0x3F368168, 0x16816817, -/**/ 0xBFD5D5BD, 0xDF596000, -/**/ 0x3D0A0B2A, 0x08A465DC, -/**/ 0x3FF67800, 0x00000000, -/**/ 0x3F380E0B, 0xF08C7765, -/**/ 0xBFD5BF40, 0x6B544000, -/**/ 0x3D227023, 0xEB68981C, -/**/ 0x3FF67000, 0x00000000, -/**/ 0x3F39F360, 0x16719F36, -/**/ 0xBFD5A8CA, 0xDBBEE000, -/**/ 0x3CF7C79B, 0x0AF7ECF8, -/**/ 0x3FF66800, 0x00000000, -/**/ 0x3F3C3107, 0x5AB40167, -/**/ 0xBFD5925D, 0x2B113000, -/**/ 0x3D369BF5, 0xA7A56F34, -/**/ 0x3FF66000, 0x00000000, -/**/ 0x3F3EC6A5, 0x122F9016, -/**/ 0xBFD57BF7, 0x53C8D000, -/**/ 0xBD1FADED, 0xEE5D40EF, -/**/ 0x3FF65C00, 0x00000000, -/**/ 0xBF3E4C22, 0xECCA9097, -/**/ 0xBFD56599, 0x50695000, -/**/ 0xBD14C5FD, 0x2BADC774, -/**/ 0x3FF65400, 0x00000000, -/**/ 0xBF3B07AC, 0x4B55CC62, -/**/ 0xBFD54F43, 0x1B7BE000, -/**/ 0xBD1A8954, 0xC0910952, -/**/ 0x3FF64C00, 0x00000000, -/**/ 0xBF376C52, 0x32DA090E, -/**/ 0xBFD538F4, 0xAF8F7000, -/**/ 0xBD27EC02, 0xE45547CE, -/**/ 0x3FF64400, 0x00000000, -/**/ 0xBF337A6F, 0x4DE9BD38, -/**/ 0xBFD522AE, 0x0738A000, -/**/ 0xBD2EBE70, 0x8164C759, -/**/ 0x3FF63C00, 0x00000000, -/**/ 0xBF2E64BB, 0x923C708B, -/**/ 0xBFD50C6F, 0x1D11C000, -/**/ 0x3D3A0E6B, 0x7E827C2C, -/**/ 0x3FF63400, 0x00000000, -/**/ 0xBF2528EE, 0xA7E43FD4, -/**/ 0xBFD4F637, 0xEBBAA000, -/**/ 0x3D3FC158, 0xCB3124B9, -/**/ 0x3FF62C00, 0x00000000, -/**/ 0xBF168454, 0x86689DF7, -/**/ 0xBFD4E008, 0x6DD8C000, -/**/ 0x3D34D692, 0xA1E44788, -/**/ 0x3FF62400, 0x00000000, -/**/ 0xBED623FA, 0x77016240, -/**/ 0xBFD4C9E0, 0x9E173000, -/**/ 0x3D2E2089, 0x1B0AD8A4, -/**/ 0x3FF61C00, 0x00000000, -/**/ 0x3F151300, 0x58715130, -/**/ 0xBFD4B3C0, 0x77268000, -/**/ 0x3D165B46, 0x81052B9F, -/**/ 0x3FF61400, 0x00000000, -/**/ 0x3F266D06, 0x35D2754E, -/**/ 0xBFD49DA7, 0xF3BCC000, -/**/ 0xBD307B33, 0x4DAF4B9A, -/**/ 0x3FF60C00, 0x00000000, -/**/ 0x3F317C61, 0xDA197F23, -/**/ 0xBFD48797, 0x0E958000, -/**/ 0xBD3DC1B8, 0x465CF25F, -/**/ 0x3FF60400, 0x00000000, -/**/ 0x3F381605, 0x81605816, -/**/ 0xBFD4718D, 0xC271C000, -/**/ 0xBD306C18, 0xFB4C14C5, -/**/ 0x3FF5FC00, 0x00000000, -/**/ 0x3F3F0317, 0xB5C6F559, -/**/ 0xBFD45B8C, 0x0A17E000, -/**/ 0x3D0D9120, 0xE7D0A853, -/**/ 0x3FF5F800, 0x00000000, -/**/ 0xBF39BCBD, 0x6D2041E3, -/**/ 0xBFD44591, 0xE053A000, -/**/ 0x3D06E958, 0x92923D88, -/**/ 0x3FF5F000, 0x00000000, -/**/ 0xBF3229CF, 0x5604CC40, -/**/ 0xBFD42F9F, 0x3FF62000, -/**/ 0xBD390644, 0x0F7D3354, -/**/ 0x3FF5E800, 0x00000000, -/**/ 0xBF2488E5, 0xFD431489, -/**/ 0xBFD419B4, 0x23D5F000, -/**/ 0x3D3CE379, 0x226DE3EC, -/**/ 0x3FF5E000, 0x00000000, -/**/ 0xBF0067E7, 0x6424E9C9, -/**/ 0xBFD403D0, 0x86CEA000, -/**/ 0xBD3E6EF5, 0x74487308, -/**/ 0x3FF5D800, 0x00000000, -/**/ 0x3F19F0FB, 0x38A94D24, -/**/ 0xBFD3EDF4, 0x63C17000, -/**/ 0x3D3F067C, 0x297F2C3F, -/**/ 0x3FF5D000, 0x00000000, -/**/ 0x3F2EADD9, 0x23CAD2AA, -/**/ 0xBFD3D81F, 0xB5947000, -/**/ 0x3D222C7C, 0x2A9D37A4, -/**/ 0x3FF5C800, 0x00000000, -/**/ 0x3F3882B9, 0x31057262, -/**/ 0xBFD3C252, 0x77333000, -/**/ 0xBD183B54, 0xB606BD5C, -/**/ 0x3FF5C400, 0x00000000, -/**/ 0xBF3E00AE, 0x10FFA8F8, -/**/ 0xBFD3AC8C, 0xA38E6000, -/**/ 0x3D2D0BEF, 0xBC02BE4A, -/**/ 0x3FF5BC00, 0x00000000, -/**/ 0xBF34339B, 0x8056EAF3, -/**/ 0xBFD396CE, 0x359BC000, -/**/ 0x3D05839C, 0x5663663D, -/**/ 0x3FF5B400, 0x00000000, -/**/ 0xBF242CC1, 0xF31D7FD5, -/**/ 0xBFD38117, 0x28565000, -/**/ 0x3D2A71E4, 0x93A0702B, -/**/ 0x3FF5AC00, 0x00000000, -/**/ 0x3ED5AC05, 0x6B015AC0, -/**/ 0xBFD36B67, 0x76BE1000, -/**/ 0xBD116ECD, 0xB0F177C8, -/**/ 0x3FF5A400, 0x00000000, -/**/ 0x3F26268D, 0x5BA55E5A, -/**/ 0xBFD355BF, 0x1BD83000, -/**/ 0x3D2BA99B, 0x8964F0E8, -/**/ 0x3FF59C00, 0x00000000, -/**/ 0x3F361F12, 0x3CCAA376, -/**/ 0xBFD3401E, 0x12AED000, -/**/ 0x3D317C73, 0x556E291D, -/**/ 0x3FF59800, 0x00000000, -/**/ 0xBF3E863D, 0x62D32417, -/**/ 0xBFD32A84, 0x56512000, -/**/ 0xBD04F928, 0x139AF5D6, -/**/ 0x3FF59000, 0x00000000, -/**/ 0xBF32DCF7, 0xEA712DCF, -/**/ 0xBFD314F1, 0xE1D36000, -/**/ 0x3D28E27A, 0xD3213CB8, -/**/ 0x3FF58800, 0x00000000, -/**/ 0xBF1B95B2, 0xA0CC87E8, -/**/ 0xBFD2FF66, 0xB04EB000, -/**/ 0x3D38AED2, 0x541E6E2E, -/**/ 0x3FF58000, 0x00000000, -/**/ 0x3F158056, 0x01580560, -/**/ 0xBFD2E9E2, 0xBCE12000, -/**/ 0xBD24300C, 0x128D1DC2, -/**/ 0x3FF57800, 0x00000000, -/**/ 0x3F31F340, 0x15791F34, -/**/ 0xBFD2D466, 0x02ADD000, -/**/ 0x3D288D0D, 0xDCD54196, -/**/ 0x3FF57000, 0x00000000, -/**/ 0x3F3ED3C5, 0x06B39A23, -/**/ 0xBFD2BEF0, 0x7CDC9000, -/**/ 0xBD2A9CFA, 0x4A5004F4, -/**/ 0x3FF56C00, 0x00000000, -/**/ 0xBF33FEA9, 0x53FEA954, -/**/ 0xBFD2A982, 0x269A4000, -/**/ 0x3D22058E, 0x557285CF, -/**/ 0x3FF56400, 0x00000000, -/**/ 0xBF1A1160, 0xEB478503, -/**/ 0xBFD2941A, 0xFB187000, -/**/ 0x3D3210C2, 0xB730E28B, -/**/ 0x3FF55C00, 0x00000000, -/**/ 0x3F1D09AD, 0xE4A18B2E, -/**/ 0xBFD27EBA, 0xF58D9000, -/**/ 0x3D2B1988, 0x00B4BDA7, -/**/ 0x3FF55400, 0x00000000, -/**/ 0x3F355555, 0x55555555, -/**/ 0xBFD26962, 0x1134E000, -/**/ 0x3D31B61F, 0x10522625, -/**/ 0x3FF55000, 0x00000000, -/**/ 0xBF3C4BE6, 0xB319A21F, -/**/ 0xBFD25410, 0x494E5000, -/**/ 0xBD3B1D7A, 0xC0EF77F2, -/**/ 0x3FF54800, 0x00000000, -/**/ 0xBF2B4328, 0x8FA03FD5, -/**/ 0xBFD23EC5, 0x991EC000, -/**/ 0x3D36DBE4, 0x48A2E522, -/**/ 0x3FF54000, 0x00000000, -/**/ 0x3EF54015, 0x40154015, -/**/ 0xBFD22981, 0xFBEF8000, -/**/ 0x3D3A1421, 0x609580DA, -/**/ 0x3FF53800, 0x00000000, -/**/ 0x3F30948F, 0x40FEAC6F, -/**/ 0xBFD21445, 0x6D0EC000, -/**/ 0x3D3CAF04, 0x28B728A3, -/**/ 0x3FF53400, 0x00000000, -/**/ 0xBF3FE034, 0xFD04F7B8, -/**/ 0xBFD1FF0F, 0xE7CF4000, -/**/ 0xBD3E9D5B, 0x513FF0C1, -/**/ 0x3FF52C00, 0x00000000, -/**/ 0xBF300A95, 0x7FAB5403, -/**/ 0xBFD1E9E1, 0x6788A000, -/**/ 0x3D382EAE, 0xD3C8B65E, -/**/ 0x3FF52400, 0x00000000, -/**/ 0x3EB52401, 0x52401524, -/**/ 0xBFD1D4B9, 0xE796C000, -/**/ 0xBD222A66, 0x7C42E56D, -/**/ 0x3FF51C00, 0x00000000, -/**/ 0x3F307EAE, 0x2F8151D0, -/**/ 0xBFD1BF99, 0x635A7000, -/**/ 0x3D31AC89, 0x575C2125, -/**/ 0x3FF51800, 0x00000000, -/**/ 0xBF3ECE3F, 0xEAE9ECE4, -/**/ 0xBFD1AA7F, 0xD638D000, -/**/ 0xBD29F60A, 0x9616F7A0, -/**/ 0x3FF51000, 0x00000000, -/**/ 0xBF2BA3DD, 0xC7675243, -/**/ 0xBFD1956D, 0x3B9BC000, -/**/ 0xBD27D2F7, 0x3AD1AA14, -/**/ 0x3FF50800, 0x00000000, -/**/ 0x3F0B9AC8, 0x764E368D, -/**/ 0xBFD18061, 0x8EF19000, -/**/ 0x3D3482FF, 0xC86D38E5, -/**/ 0x3FF50000, 0x00000000, -/**/ 0x3F350150, 0x15015015, -/**/ 0xBFD16B5C, 0xCBAD0000, -/**/ 0x3D323299, 0x042D74BF, -/**/ 0x3FF4FC00, 0x00000000, -/**/ 0xBF392851, 0x4A683C50, -/**/ 0xBFD1565E, 0xED456000, -/**/ 0x3CEE75AD, 0xFB6ABA25, -/**/ 0x3FF4F400, 0x00000000, -/**/ 0xBF1C2748, 0xACD95EF0, -/**/ 0xBFD14167, 0xEF367000, -/**/ 0xBD3E0C07, 0x824DAAF5, -/**/ 0x3FF4EC00, 0x00000000, -/**/ 0x3F26B90D, 0x67A47465, -/**/ 0xBFD12C77, 0xCD007000, -/**/ 0xBD13B294, 0x8A11F797, -/**/ 0x3FF4E400, 0x00000000, -/**/ 0x3F3E0A72, 0xF0539783, -/**/ 0xBFD1178E, 0x8227E000, -/**/ 0xBD31EF78, 0xCE2D07F2, -/**/ 0x3FF4E000, 0x00000000, -/**/ 0xBF2E00A6, 0xF87FD642, -/**/ 0xBFD102AC, 0x0A35D000, -/**/ 0x3D2F1FBD, 0xDFDFD686, -/**/ 0x3FF4D800, 0x00000000, -/**/ 0x3F10EFB7, 0x0B12E3FD, -/**/ 0xBFD0EDD0, 0x60B78000, -/**/ 0xBD0019B5, 0x2D8435F5, -/**/ 0x3FF4D000, 0x00000000, -/**/ 0x3F37BEF1, 0x5CB4DBE5, -/**/ 0xBFD0D8FB, 0x813EB000, -/**/ 0xBD1EE8C8, 0x8753FA35, -/**/ 0x3FF4CC00, 0x00000000, -/**/ 0xBF34778D, 0xA50918B1, -/**/ 0xBFD0C42D, 0x67616000, -/**/ 0xBD27188B, 0x163CEAE9, -/**/ 0x3FF4C400, 0x00000000, -/**/ 0xBED9F4F7, 0xE37288EC, -/**/ 0xBFD0AF66, 0x0EB9E000, -/**/ 0xBD23C7C3, 0xF528D80A, -/**/ 0x3FF4BC00, 0x00000000, -/**/ 0x3F33EDDA, 0x68FE0E42, -/**/ 0xBFD09AA5, 0x72E6C000, -/**/ 0xBD3B50A1, 0xE1734342, -/**/ 0x3FF4B800, 0x00000000, -/**/ 0xBF3776C6, 0xB72E47D9, -/**/ 0xBFD085EB, 0x8F8AE000, -/**/ 0xBD3E5D51, 0x3F45FE7B, -/**/ 0x3FF4B000, 0x00000000, -/**/ 0xBF04AFD6, 0xA052BF5B, -/**/ 0xBFD07138, 0x604D6000, -/**/ 0x3D3E7632, 0x4E912B17, -/**/ 0x3FF4A800, 0x00000000, -/**/ 0x3F328FFA, 0xD5B5C015, -/**/ 0xBFD05C8B, 0xE0D96000, -/**/ 0xBD2AD0F1, 0xC77CCB58, -/**/ 0x3FF4A400, 0x00000000, -/**/ 0xBF380528, 0x9FEB5D80, -/**/ 0xBFD047E6, 0x0CDE8000, -/**/ 0xBD2DBDF1, 0x0D397F3C, -/**/ 0x3FF49C00, 0x00000000, -/**/ 0xBF02AD3E, 0x25FF5B21, -/**/ 0xBFD03346, 0xE0106000, -/**/ 0xBCF89FF8, 0xA966395C, -/**/ 0x3FF49400, 0x00000000, -/**/ 0x3F339E3B, 0x2D066EA2, -/**/ 0xBFD01EAE, 0x5626C000, -/**/ 0xBD3A43DC, 0xFADE85AE, -/**/ 0x3FF49000, 0x00000000, -/**/ 0xBF3629C1, 0xAFB2E932, -/**/ 0xBFD00A1C, 0x6ADDA000, -/**/ 0xBD31CD8D, 0x688B9E18, -/**/ 0x3FF48800, 0x00000000, -/**/ 0x3ED48805, 0x22014880, -/**/ 0xBFCFEB22, 0x33EA0000, -/**/ 0xBD2F3418, 0xDE00938B, -/**/ 0x3FF48000, 0x00000000, -/**/ 0x3F37119F, 0x3D324D89, -/**/ 0xBFCFC218, 0xBE620000, -/**/ 0xBD34BBA4, 0x6F1CF6A0, -/**/ 0x3FF47C00, 0x00000000, -/**/ 0xBF31EB85, 0x1EB851EC, -/**/ 0xBFCF991C, 0x6CB3C000, -/**/ 0x3D390D04, 0xCD7CC834, -/**/ 0x3FF47400, 0x00000000, -/**/ 0x3F1569C9, 0xAAFC7C01, -/**/ 0xBFCF702D, 0x36778000, -/**/ 0x3D108195, 0x16673E23, -/**/ 0x3FF46C00, 0x00000000, -/**/ 0x3F3CE345, 0x96066250, -/**/ 0xBFCF474B, 0x134E0000, -/**/ 0x3D3BAE49, 0xF1DF7B5E, -/**/ 0x3FF46800, 0x00000000, -/**/ 0xBF26A297, 0x1D02DE87, -/**/ 0xBFCF1E75, 0xFADFA000, -/**/ 0x3D20862B, 0x25D83F6D, -/**/ 0x3FF46000, 0x00000000, -/**/ 0x3F2978FE, 0xB9F34381, -/**/ 0xBFCEF5AD, 0xE4DD0000, -/**/ 0x3CCA2115, 0x65BB8E11, -/**/ 0x3FF45C00, 0x00000000, -/**/ 0xBF3AF398, 0xF6C71366, -/**/ 0xBFCECCF2, 0xC8FEA000, -/**/ 0x3D3BEC63, 0xA3E75640, -/**/ 0x3FF45400, 0x00000000, -/**/ 0xBF030E9C, 0x449AFF5D, -/**/ 0xBFCEA444, 0x9F04A000, -/**/ 0xBD35E916, 0x63732A36, -/**/ 0x3FF44C00, 0x00000000, -/**/ 0x3F367190, 0xF8B42EF3, -/**/ 0xBFCE7BA3, 0x5EB78000, -/**/ 0x3D0D5EEE, 0x23793649, -/**/ 0x3FF44800, 0x00000000, -/**/ 0xBF3079A9, 0xD260511C, -/**/ 0xBFCE530E, 0xFFE72000, -/**/ 0x3D3FDBDB, 0xB13F7C18, -/**/ 0x3FF44000, 0x00000000, -/**/ 0x3F21B87C, 0x0B644FBE, -/**/ 0xBFCE2A87, 0x7A6B2000, -/**/ 0xBD382381, 0x7787081A, -/**/ 0x3FF43C00, 0x00000000, -/**/ 0xBF3D8CF5, 0x411B2E25, -/**/ 0xBFCE020C, 0xC6236000, -/**/ 0x3D252B00, 0xADB91424, -/**/ 0x3FF43400, 0x00000000, -/**/ 0xBF0DAC08, 0xD6A60978, -/**/ 0xBFCDD99E, 0xDAF6E000, -/**/ 0x3D302EC6, 0x69C756EB, -/**/ 0x3FF42C00, 0x00000000, -/**/ 0x3F36625D, 0x51F86EFA, -/**/ 0xBFCDB13D, 0xB0D48000, -/**/ 0xBD32806A, 0x847527E6, -/**/ 0x3FF42800, 0x00000000, -/**/ 0xBF2E8B2D, 0xA8766564, -/**/ 0xBFCD88E9, 0x3FB30000, -/**/ 0x3D375F28, 0x0234BF51, -/**/ 0x3FF42000, 0x00000000, -/**/ 0x3F26A4CB, 0xCB2A247B, -/**/ 0xBFCD60A1, 0x7F904000, -/**/ 0x3D35D6E0, 0x6FC20D39, -/**/ 0x3FF41C00, 0x00000000, -/**/ 0xBF39D5E8, 0xC17DF552, -/**/ 0xBFCD3866, 0x68720000, -/**/ 0x3D373650, 0xB38932BC, -/**/ 0x3FF41400, 0x00000000, -/**/ 0x3EF41414, 0x14141414, -/**/ 0xBFCD1037, 0xF2656000, -/**/ 0x3D084A7E, 0x75B6F6E4, -/**/ 0x3FF40C00, 0x00000000, -/**/ 0x3F3C97A8, 0x43AE87FD, -/**/ 0xBFCCE816, 0x157F2000, -/**/ 0x3D29E0AB, 0xA2099515, -/**/ 0x3FF40800, 0x00000000, -/**/ 0xBF1F4BBC, 0x66A67E6F, -/**/ 0xBFCCC000, 0xC9DB4000, -/**/ 0x3D1D6D58, 0x5D57AFF9, -/**/ 0x3FF40000, 0x00000000, -/**/ 0x3F340140, 0x14014014, -/**/ 0xBFCC97F8, 0x079D4000, -/**/ 0xBD23B161, 0xA8C6E6C5, -/**/ 0x3FF3FC00, 0x00000000, -/**/ 0xBF2FD809, 0xFD809FD8, -/**/ 0xBFCC6FFB, 0xC6F00000, -/**/ 0xBD3EE138, 0xD3A69D43, -/**/ 0x3FF3F400, 0x00000000, -/**/ 0x3F28CA0E, 0x57EE89D2, -/**/ 0xBFCC480C, 0x0005C000, -/**/ 0xBD39A294, 0xD5E44E76, -/**/ 0x3FF3F000, 0x00000000, -/**/ 0xBF370BD5, 0xA50F9260, -/**/ 0xBFCC2028, 0xAB180000, -/**/ 0x3D292E0E, 0xE55C7AC6, -/**/ 0x3FF3E800, 0x00000000, -/**/ 0x3F1704AA, 0x75945FCE, -/**/ 0xBFCBF851, 0xC0676000, -/**/ 0x3D35420E, 0x4C0854AD, -/**/ 0x3FF3E400, 0x00000000, -/**/ 0xBF3D3431, 0xB56FD83C, -/**/ 0xBFCBD087, 0x383BE000, -/**/ 0x3D2D4BC4, 0x595412B6, -/**/ 0x3FF3DC00, 0x00000000, -/**/ 0x3EB3DC01, 0x3DC013DC, -/**/ 0xBFCBA8C9, 0x0AE4A000, -/**/ 0xBD3A32E7, 0xF44432DA, -/**/ 0x3FF3D400, 0x00000000, -/**/ 0x3F3D991A, 0xA75C5BBD, -/**/ 0xBFCB8117, 0x30B82000, -/**/ 0xBD1E9068, 0x3B9CD768, -/**/ 0x3FF3D000, 0x00000000, -/**/ 0xBF1292BA, 0x59C52F5D, -/**/ 0xBFCB5971, 0xA213A000, -/**/ 0xBD39B50E, 0x83AA91DF, -/**/ 0x3FF3C800, 0x00000000, -/**/ 0x3F395A47, 0xBABE7440, -/**/ 0xBFCB31D8, 0x575BC000, -/**/ 0xBD3C794E, 0x562A63CB, -/**/ 0x3FF3C400, 0x00000000, -/**/ 0xBF20D475, 0x58A0943A, -/**/ 0xBFCB0A4B, 0x48FC2000, -/**/ 0x3D22E72D, 0x5C3998ED, -/**/ 0x3FF3BC00, 0x00000000, -/**/ 0x3F360D92, 0x3295482C, -/**/ 0xBFCAE2CA, 0x6F672000, -/**/ 0xBD37A8D5, 0xAE54F550, -/**/ 0x3FF3B800, 0x00000000, -/**/ 0xBF267D12, 0xCAB48651, -/**/ 0xBFCABB55, 0xC316A000, -/**/ 0x3D38A65A, 0xCAF14CD8, -/**/ 0x3FF3B000, 0x00000000, -/**/ 0x3F33B13B, 0x13B13B14, -/**/ 0xBFCA93ED, 0x3C8AE000, -/**/ 0x3D287243, 0x50562169, -/**/ 0x3FF3AC00, 0x00000000, -/**/ 0xBF2A46AF, 0x2C8FD3BF, -/**/ 0xBFCA6C90, 0xD44B8000, -/**/ 0x3D3F63B7, 0xF037B0C6, -/**/ 0x3FF3A400, 0x00000000, -/**/ 0x3F324387, 0xAC822610, -/**/ 0xBFCA4540, 0x82E6A000, -/**/ 0xBD360A77, 0xC81F7171, -/**/ 0x3FF3A000, 0x00000000, -/**/ 0xBF2C34BB, 0xA1923DEE, -/**/ 0xBFCA1DFC, 0x40F1C000, -/**/ 0x3D301E0F, 0x004F3781, -/**/ 0x3FF39800, 0x00000000, -/**/ 0x3F31C2C1, 0x87F63372, -/**/ 0xBFC9F6C4, 0x0708A000, -/**/ 0x3D3337D9, 0x4BCD3F43, -/**/ 0x3FF39400, 0x00000000, -/**/ 0xBF2C4AA0, 0xE11BD52E, -/**/ 0xBFC9CF97, 0xCDCE0000, -/**/ 0xBD3D862F, 0x10C414E3, -/**/ 0x3FF38C00, 0x00000000, -/**/ 0x3F322D36, 0x6088DBF4, -/**/ 0xBFC9A877, 0x8DEBA000, -/**/ 0xBD3470FA, 0x3EFEC390, -/**/ 0x3FF38800, 0x00000000, -/**/ 0xBF2A8BBF, 0x503F774E, -/**/ 0xBFC98163, 0x4011A000, -/**/ 0xBD34EADD, 0x9E9045E2, -/**/ 0x3FF38000, 0x00000000, -/**/ 0x3F338138, 0x13813814, -/**/ 0xBFC95A5A, 0xDCF70000, -/**/ 0xBD07F228, 0x58A0FF6F, -/**/ 0x3FF37C00, 0x00000000, -/**/ 0xBF26FB6F, 0x1B177053, -/**/ 0xBFC9335E, 0x5D594000, -/**/ 0xBD33115C, 0x3ABD47DA, -/**/ 0x3FF37400, 0x00000000, -/**/ 0x3F35BD1C, 0x945EDC20, -/**/ 0xBFC90C6D, 0xB9FCC000, -/**/ 0x3D1935F5, 0x7718D7CA, -/**/ 0x3FF37000, 0x00000000, -/**/ 0xBF219D00, 0x4DBDCC60, -/**/ 0xBFC8E588, 0xEBAC2000, -/**/ 0xBD3B7D5C, 0xAB2D1140, -/**/ 0x3FF36800, 0x00000000, -/**/ 0x3F38DF3D, 0xE0747954, -/**/ 0xBFC8BEAF, 0xEB390000, -/**/ 0x3D073D54, 0xAAE92CD1, -/**/ 0x3FF36400, 0x00000000, -/**/ 0xBF14E775, 0xD9D3C49F, -/**/ 0xBFC897E2, 0xB17B2000, -/**/ 0x3D296B37, 0x380CBE9E, -/**/ 0x3FF35C00, 0x00000000, -/**/ 0x3F3CE5F9, 0xF2AF821E, -/**/ 0xBFC87121, 0x3750E000, -/**/ 0xBD3328EB, 0x42F9AF75, -/**/ 0x3FF35800, 0x00000000, -/**/ 0xBEE82DF0, 0xE34971F2, -/**/ 0xBFC84A6B, 0x759F6000, -/**/ 0x3D3DA280, 0x2ADF8609, -/**/ 0x3FF35400, 0x00000000, -/**/ 0xBF3E304D, 0x4873ECAE, -/**/ 0xBFC823C1, 0x6551A000, -/**/ 0xBD1E0DDB, 0x9A631E83, -/**/ 0x3FF34C00, 0x00000000, -/**/ 0x3F1264B6, 0x1FF659DB, -/**/ 0xBFC7FD22, 0xFF59A000, -/**/ 0x3D158BEB, 0xF457B7D2, -/**/ 0x3FF34800, 0x00000000, -/**/ 0xBF386531, 0xFECB9865, -/**/ 0xBFC7D690, 0x3CAF6000, -/**/ 0x3D24C06B, 0x17C301D7, -/**/ 0x3FF34000, 0x00000000, -/**/ 0x3F25A8C2, 0xEEDA65AE, -/**/ 0xBFC7B009, 0x16516000, -/**/ 0x3D3AE75F, 0xCB067E57, -/**/ 0x3FF33C00, 0x00000000, -/**/ 0xBF31BA4A, 0x8434E1F4, -/**/ 0xBFC7898D, 0x85444000, -/**/ 0xBD38E67B, 0xE3DBAF3F, -/**/ 0x3FF33400, 0x00000000, -/**/ 0x3F31EE97, 0xDBFC660A, -/**/ 0xBFC7631D, 0x82936000, -/**/ 0x3D25E77D, 0xC7C5F3E1, -/**/ 0x3FF33000, 0x00000000, -/**/ 0xBF246252, 0xBC40BFDA, -/**/ 0xBFC73CB9, 0x074FE000, -/**/ 0x3D3D66A9, 0x0D0005A6, -/**/ 0x3FF32800, 0x00000000, -/**/ 0x3F39E640, 0x13299E64, -/**/ 0xBFC71660, 0x0C914000, -/**/ 0xBCE51B15, 0x7CEC3838, -/**/ 0x3FF32400, 0x00000000, -/**/ 0xBEFCB5D4, 0xEF40991F, -/**/ 0xBFC6F012, 0x8B756000, -/**/ 0xBD357739, 0x0D31EF0F, -/**/ 0x3FF32000, 0x00000000, -/**/ 0xBF3D4632, 0xC823D892, -/**/ 0xBFC6C9D0, 0x7D204000, -/**/ 0x3CDC73FA, 0xFD9B2DCA, -/**/ 0x3FF31800, 0x00000000, -/**/ 0x3F1DD63A, 0x7AED804C, -/**/ 0xBFC6A399, 0xDABBE000, -/**/ 0x3D38F934, 0xE66A15A6, -/**/ 0x3FF31400, 0x00000000, -/**/ 0xBF339849, 0xE8C11E1A, -/**/ 0xBFC67D6E, 0x9D786000, -/**/ 0x3D311E88, 0x30A706D3, -/**/ 0x3FF30C00, 0x00000000, -/**/ 0x3F319013, 0x0D190131, -/**/ 0xBFC6574E, 0xBE8C2000, -/**/ 0x3D398C1D, 0x34F0F462, -/**/ 0x3FF30800, 0x00000000, -/**/ 0xBF222315, 0xB47A7FDA, -/**/ 0xBFC6313A, 0x37336000, -/**/ 0x3D144DF5, 0x4F21EA6D, -/**/ 0x3FF30000, 0x00000000, -/**/ 0x3F3C82AC, 0x40260390, -/**/ 0xBFC60B31, 0x00B0A000, -/**/ 0x3D371456, 0xC988F814, -/**/ 0x3FF2FC00, 0x00000000, -/**/ 0x3F026443, 0xA2430A62, -/**/ 0xBFC5E533, 0x144C2000, -/**/ 0x3D31CE0B, 0xF3B290EA, -/**/ 0x3FF2F800, 0x00000000, -/**/ 0xBF37B425, 0xED097B42, -/**/ 0xBFC5BF40, 0x6B544000, -/**/ 0x3D127023, 0xEB68981C, -/**/ 0x3FF2F000, 0x00000000, -/**/ 0x3F2D00E3, 0x4AE0553C, -/**/ 0xBFC59958, 0xFF1D6000, -/**/ 0x3D3A1D05, 0x9769CA05, -/**/ 0x3FF2EC00, 0x00000000, -/**/ 0xBF262BC0, 0x25D69D44, -/**/ 0xBFC5737C, 0xC9018000, -/**/ 0xBD39BAA7, 0xA6B887F6, -/**/ 0x3FF2E400, 0x00000000, -/**/ 0x3F3B88B5, 0xE3103D6B, -/**/ 0xBFC54DAB, 0xC2610000, -/**/ 0xBD2746FE, 0xE5C8D0D8, -/**/ 0x3FF2E000, 0x00000000, -/**/ 0x3F02E025, 0xC04B8097, -/**/ 0xBFC527E5, 0xE4A1C000, -/**/ 0x3D34E60B, 0x8D4B411D, -/**/ 0x3FF2DC00, 0x00000000, -/**/ 0xBF369C22, 0x2C305021, -/**/ 0xBFC5022B, 0x292F6000, -/**/ 0xBD348A05, 0xFF36A25B, -/**/ 0x3FF2D400, 0x00000000, -/**/ 0x3F30A012, 0xD50A012D, -/**/ 0xBFC4DC7B, 0x897BC000, -/**/ 0xBD0C79B6, 0x0AE1FF0F, -/**/ 0x3FF2D000, 0x00000000, -/**/ 0xBF1FBE29, 0xBC66484E, -/**/ 0xBFC4B6D6, 0xFEFE2000, -/**/ 0xBD1522EC, 0xF56E7952, -/**/ 0x3FF2C800, 0x00000000, -/**/ 0x3F3FB4D8, 0x12C9FB4E, -/**/ 0xBFC4913D, 0x8333C000, -/**/ 0x3D353E43, 0x558124C4, -/**/ 0x3FF2C400, 0x00000000, -/**/ 0x3F1E3432, 0x7004B11E, -/**/ 0xBFC46BAF, 0x0F9F6000, -/**/ 0x3D1249CD, 0x0790841A, -/**/ 0x3FF2C000, 0x00000000, -/**/ 0xBF30671A, 0x5C8EF02F, -/**/ 0xBFC4462B, 0x9DC9C000, -/**/ 0x3D384858, 0xA711B062, -/**/ 0x3FF2B800, 0x00000000, -/**/ 0x3F37D835, 0xD548D9AC, -/**/ 0xBFC420B3, 0x27410000, -/**/ 0x3D116282, 0xC85A0884, -/**/ 0x3FF2B400, 0x00000000, -/**/ 0x3ED2B404, 0xAD012B40, -/**/ 0xBFC3FB45, 0xA5992000, -/**/ 0xBD319713, 0xC0CAE559, -/**/ 0x3FF2B000, 0x00000000, -/**/ 0xBF370F78, 0x8E7302A1, -/**/ 0xBFC3D5E3, 0x126BC000, -/**/ 0xBD13FB2F, 0x85096C4B, -/**/ 0x3FF2A800, 0x00000000, -/**/ 0x3F31C92F, 0x3C1053F9, -/**/ 0xBFC3B08B, 0x67580000, -/**/ 0x3D3AADE8, 0xF29320FB, -/**/ 0x3FF2A400, 0x00000000, -/**/ 0xBF14AD94, 0x3DBE2E04, -/**/ 0xBFC38B3E, 0x9E028000, -/**/ 0x3D370EF0, 0x545C17F9, -/**/ 0x3FF2A000, 0x00000000, -/**/ 0xBF3BED61, 0xBED61BED, -/**/ 0xBFC365FC, 0xB015A000, -/**/ 0x3D3FD3A0, 0xAFB9691B, -/**/ 0x3FF29800, 0x00000000, -/**/ 0x3F2B061A, 0x26F004A6, -/**/ 0xBFC340C5, 0x97412000, -/**/ 0x3D37A3DC, 0xF7D9D386, -/**/ 0x3FF29400, 0x00000000, -/**/ 0xBF21B488, 0xFF6B646D, -/**/ 0xBFC31B99, 0x4D3A4000, -/**/ 0xBD3F098E, 0xE3A50810, -/**/ 0x3FF29000, 0x00000000, -/**/ 0xBF3F0582, 0x2CA5D5AC, -/**/ 0xBFC2F677, 0xCBBC0000, -/**/ 0xBD352B30, 0x2160F40D, -/**/ 0x3FF28800, 0x00000000, -/**/ 0x3F260251, 0x16025116, -/**/ 0xBFC2D161, 0x0C868000, -/**/ 0xBD039D6C, 0xCB81B4A1, -/**/ 0x3FF28400, 0x00000000, -/**/ 0xBF258CDF, 0x502065D2, -/**/ 0xBFC2AC55, 0x095F6000, -/**/ 0x3D1D3466, 0xD0C6C8A8, -/**/ 0x3FF27C00, 0x00000000, -/**/ 0x3F3FA38A, 0x1CE4D6F8, -/**/ 0xBFC28753, 0xBC11A000, -/**/ 0xBD37494E, 0x359302E6, -/**/ 0x3FF27800, 0x00000000, -/**/ 0x3F247DD5, 0xDCCA0781, -/**/ 0xBFC2625D, 0x1E6DE000, -/**/ 0x3CF52962, 0xF09E3D82, -/**/ 0x3FF27400, 0x00000000, -/**/ 0xBF25E8EF, 0xDB195E8F, -/**/ 0xBFC23D71, 0x2A49C000, -/**/ 0xBD100D23, 0x8FD3DF5C, -/**/ 0x3FF27000, 0x00000000, -/**/ 0xBF3FF6C8, 0xFFB647FE, -/**/ 0xBFC2188F, 0xD9808000, -/**/ 0x3D3B3A1E, 0x7F50C701, -/**/ 0x3FF26800, 0x00000000, -/**/ 0x3F266F9A, 0xC024D167, -/**/ 0xBFC1F3B9, 0x25F26000, -/**/ 0x3D15F74E, 0x9B083633, -/**/ 0x3FF26400, 0x00000000, -/**/ 0xBF22D1BD, 0xEABD0E14, -/**/ 0xBFC1CEED, 0x09854000, -/**/ 0x3D315C1C, 0x39192AF9, -/**/ 0x3FF26000, 0x00000000, -/**/ 0xBF3DD8F7, 0xF6D0EEC8, -/**/ 0xBFC1AA2B, 0x7E240000, -/**/ 0x3D31AC38, 0xDDE3B366, -/**/ 0x3FF25800, 0x00000000, -/**/ 0x3F2BCEB1, 0x2A241EF6, -/**/ 0xBFC18574, 0x7DBEC000, -/**/ 0xBD3E6744, 0x45BD9B49, -/**/ 0x3FF25400, 0x00000000, -/**/ 0xBF18A05B, 0xA21378D7, -/**/ 0xBFC160C8, 0x024B2000, -/**/ 0xBD2EC2D2, 0xA9009E3D, -/**/ 0x3FF25000, 0x00000000, -/**/ 0xBF3A076F, 0xD6CFA90C, -/**/ 0xBFC13C26, 0x05C3A000, -/**/ 0x3D2CF5FD, 0xD94F6509, -/**/ 0x3FF24800, 0x00000000, -/**/ 0x3F324924, 0x92492492, -/**/ 0xBFC1178E, 0x8227E000, -/**/ 0xBD21EF78, 0xCE2D07F2, -/**/ 0x3FF24400, 0x00000000, -/**/ 0xBEF3682B, 0x6151E899, -/**/ 0xBFC0F301, 0x717D0000, -/**/ 0x3D3E09B4, 0x41AE86C5, -/**/ 0x3FF24000, 0x00000000, -/**/ 0xBF34868E, 0x89FA4C67, -/**/ 0xBFC0CE7E, 0xCDCCC000, -/**/ 0xBD14652D, 0xABFF5447, -/**/ 0x3FF23800, 0x00000000, -/**/ 0x3F3858D8, 0x6B11F09F, -/**/ 0xBFC0AA06, 0x91268000, -/**/ 0x3D345519, 0xD7032129, -/**/ 0x3FF23400, 0x00000000, -/**/ 0x3F159E26, 0xAF37C049, -/**/ 0xBFC08598, 0xB59E4000, -/**/ 0x3D27E5DD, 0x7009902C, -/**/ 0x3FF23000, 0x00000000, -/**/ 0xBF2AB546, 0x2E076329, -/**/ 0xBFC06135, 0x354D4000, -/**/ 0xBD363046, 0x28340EE9, -/**/ 0x3FF22C00, 0x00000000, -/**/ 0xBF3FEDD5, 0xFEDD5FEE, -/**/ 0xBFC03CDC, 0x0A51E000, -/**/ 0xBD381A9C, 0xF169FC5C, -/**/ 0x3FF22400, 0x00000000, -/**/ 0x3F2B5B92, 0x009126D7, -/**/ 0xBFC0188D, 0x2ECF6000, -/**/ 0xBD03F965, 0x1CFF9DFE, -/**/ 0x3FF22000, 0x00000000, -/**/ 0xBF121FB7, 0x8121FB78, -/**/ 0xBFBFE891, 0x39DBC000, -/**/ 0xBD356594, 0xD82F7A82, -/**/ 0x3FF21C00, 0x00000000, -/**/ 0xBF368F22, 0x3A459635, -/**/ 0xBFBFA01C, 0x9DB58000, -/**/ 0x3D08F351, 0xFA48A730, -/**/ 0x3FF21400, 0x00000000, -/**/ 0x3F379804, 0x855E6012, -/**/ 0xBFBF57BC, 0x7D900000, -/**/ 0xBD176A6C, 0x9EA8B04E, -/**/ 0x3FF21000, 0x00000000, -/**/ 0x3F17B57C, 0x78CD7A37, -/**/ 0xBFBF0F70, 0xCDD98000, -/**/ 0xBD32E31F, 0x6C272C1E, -/**/ 0x3FF20C00, 0x00000000, -/**/ 0xBF271E73, 0x07E4EF15, -/**/ 0xBFBEC739, 0x830A0000, -/**/ 0xBD311FCB, 0xA80CDD10, -/**/ 0x3FF20800, 0x00000000, -/**/ 0xBF3CDDEC, 0x49392BA7, -/**/ 0xBFBE7F16, 0x91A34000, -/**/ 0x3D32C1C5, 0x9BC77BFA, -/**/ 0x3FF20000, 0x00000000, -/**/ 0x3F320120, 0x12012012, -/**/ 0xBFBE3707, 0xEE304000, -/**/ 0xBD20F684, 0xE6766ABD, -/**/ 0x3FF1FC00, 0x00000000, -/**/ 0x3EF0DC4F, 0xCE8AD1A2, -/**/ 0xBFBDEF0D, 0x8D468000, -/**/ 0x3D324750, 0x412E9A74, -/**/ 0x3FF1F800, 0x00000000, -/**/ 0xBF2F7047, 0xDC11F704, -/**/ 0xBFBDA727, 0x63844000, -/**/ 0xBD1A8940, 0x1FA71733, -/**/ 0x3FF1F000, 0x00000000, -/**/ 0x3F3FAF3F, 0x16B6419D, -/**/ 0xBFBD5F55, 0x65920000, -/**/ 0xBD30E239, 0xCC185469, -/**/ 0x3FF1EC00, 0x00000000, -/**/ 0x3F2E878F, 0xF70985E2, -/**/ 0xBFBD1797, 0x88218000, -/**/ 0xBD336433, 0xB5EFBEED, -/**/ 0x3FF1E800, 0x00000000, -/**/ 0xBEEF55E4, 0x94D7FDC3, -/**/ 0xBFBCCFED, 0xBFEE0000, -/**/ 0xBD33A823, 0x2FE71256, -/**/ 0x3FF1E400, 0x00000000, -/**/ 0xBF310C4C, 0x0478BBCF, -/**/ 0xBFBC8858, 0x01BC4000, -/**/ 0xBD2646D1, 0xC65AACD3, -/**/ 0x3FF1DC00, 0x00000000, -/**/ 0x3F3F0ECB, 0xCB840C49, -/**/ 0xBFBC40D6, 0x425A4000, -/**/ 0xBD3CB112, 0x1D1930DD, -/**/ 0x3FF1D800, 0x00000000, -/**/ 0x3F2EACE5, 0xC9579074, -/**/ 0xBFBBF968, 0x769FC000, -/**/ 0xBD24218C, 0x8D824283, -/**/ 0x3FF1D400, 0x00000000, -/**/ 0xBECABDFA, 0xFC60F0AE, -/**/ 0xBFBBB20E, 0x936D8000, -/**/ 0x3D368BA8, 0x35459B8E, -/**/ 0x3FF1D000, 0x00000000, -/**/ 0xBF2F2A4B, 0xAFDC61F3, -/**/ 0xBFBB6AC8, 0x8DAD4000, -/**/ 0xBD3B1BDF, 0xF50225C7, -/**/ 0x3FF1CC00, 0x00000000, -/**/ 0xBF3EC8AF, 0xAB802394, -/**/ 0xBFBB2396, 0x5A530000, -/**/ 0x3CEFF64E, 0xEA137079, -/**/ 0x3FF1C400, 0x00000000, -/**/ 0x3F322FC1, 0xCE058D9B, -/**/ 0xBFBADC77, 0xEE5B0000, -/**/ 0x3D3573B2, 0x09C31904, -/**/ 0x3FF1C000, 0x00000000, -/**/ 0x3F0AA04F, 0xE0EFA2CF, -/**/ 0xBFBA956D, 0x3ECAC000, -/**/ 0xBD3E6379, 0x4C02C4AF, -/**/ 0x3FF1BC00, 0x00000000, -/**/ 0xBF26B7F7, 0x225ADFDD, -/**/ 0xBFBA4E76, 0x40B1C000, -/**/ 0x3D0E42B6, 0xB94407C8, -/**/ 0x3FF1B800, 0x00000000, -/**/ 0xBF39E073, 0x217CD13A, -/**/ 0xBFBA0792, 0xE9278000, -/**/ 0x3D0A9CE6, 0xC9AD51BF, -/**/ 0x3FF1B000, 0x00000000, -/**/ 0x3F37C67F, 0x2BAE2B21, -/**/ 0xBFB9C0C3, 0x2D4D4000, -/**/ 0x3D3AB7C0, 0x9E838668, -/**/ 0x3FF1AC00, 0x00000000, -/**/ 0x3F23316E, 0xBD720DCF, -/**/ 0xBFB97A07, 0x024CC000, -/**/ 0x3CF8BCC1, 0x732093CE, -/**/ 0x3FF1A800, 0x00000000, -/**/ 0xBF11A7B9, 0x611A7B96, -/**/ 0xBFB9335E, 0x5D594000, -/**/ 0xBD23115C, 0x3ABD47DA, -/**/ 0x3FF1A400, 0x00000000, -/**/ 0xBF324195, 0xA1C1B8E7, -/**/ 0xBFB8ECC9, 0x33AEC000, -/**/ 0x3D222F39, 0xBE67F7AA, -/**/ 0x3FF1A000, 0x00000000, -/**/ 0xBF3FEE61, 0xFEE61FEE, -/**/ 0xBFB8A647, 0x7A91C000, -/**/ 0xBD3C28C0, 0xAF9BD6DF, -/**/ 0x3FF19800, 0x00000000, -/**/ 0x3F328F89, 0x362B721D, -/**/ 0xBFB85FD9, 0x27508000, -/**/ 0x3D35B818, 0x19970C1C, -/**/ 0x3FF19400, 0x00000000, -/**/ 0x3F14E023, 0x28A70119, -/**/ 0xBFB8197E, 0x2F410000, -/**/ 0x3D3C0FE4, 0x60D20041, -/**/ 0x3FF19000, 0x00000000, -/**/ 0xBF1FD419, 0x3E48FC6F, -/**/ 0xBFB7D336, 0x87C28000, -/**/ 0xBD33C88C, 0x3E706706, -/**/ 0x3FF18C00, 0x00000000, -/**/ 0xBF34F7C6, 0xFD42546B, -/**/ 0xBFB78D02, 0x263D8000, -/**/ 0xBD069B57, 0x94B69FB7, -/**/ 0x3FF18400, 0x00000000, -/**/ 0x3F3E2FA4, 0x01185E30, -/**/ 0xBFB746E1, 0x00228000, -/**/ 0x3D3126D1, 0x6E1E21D2, -/**/ 0x3FF18000, 0x00000000, -/**/ 0x3F318118, 0x11811812, -/**/ 0xBFB700D3, 0x0AEAC000, -/**/ 0xBCEC1E8D, 0xA99DED32, -/**/ 0x3FF17C00, 0x00000000, -/**/ 0x3F13F1CA, 0xFF2E2C43, -/**/ 0xBFB6BAD8, 0x3C188000, -/**/ 0xBD0DAF3C, 0xC08926AE, -/**/ 0x3FF17800, 0x00000000, -/**/ 0xBF1D79B9, 0x0A5EF9FF, -/**/ 0xBFB674F0, 0x89364000, -/**/ 0xBD3A7999, 0x4C9D3302, -/**/ 0x3FF17400, 0x00000000, -/**/ 0xBF338FAD, 0x1ECEA765, -/**/ 0xBFB62F1B, 0xE7D78000, -/**/ 0x3D217995, 0x7ED63C4E, -/**/ 0x3FF17000, 0x00000000, -/**/ 0xBF3F976B, 0xD8C8714B, -/**/ 0xBFB5E95A, 0x4D978000, -/**/ 0xBD31CB7C, 0xE1D17171, -/**/ 0x3FF16800, 0x00000000, -/**/ 0x3F348A33, 0xB08FA497, -/**/ 0xBFB5A3AB, 0xB01AC000, -/**/ 0xBD3E2574, 0x9E6AFA18, -/**/ 0x3FF16400, 0x00000000, -/**/ 0x3F21AA1F, 0x864022C9, -/**/ 0xBFB55E10, 0x050E0000, -/**/ 0xBD0C1D74, 0x0C53C72E, -/**/ 0x3FF16000, 0x00000000, -/**/ 0xBF05B7C9, 0xB487BCAD, -/**/ 0xBFB51887, 0x42260000, -/**/ 0xBD330A1D, 0x96258B3E, -/**/ 0x3FF15C00, 0x00000000, -/**/ 0xBF2C3411, 0x5B1E5F75, -/**/ 0xBFB4D311, 0x5D208000, -/**/ 0x3CF53A25, 0x82F4E1EF, -/**/ 0x3FF15800, 0x00000000, -/**/ 0xBF39543F, 0xEEA99544, -/**/ 0xBFB48DAE, 0x4BC30000, -/**/ 0xBD30185B, 0x208C200C, -/**/ 0x3FF15000, 0x00000000, -/**/ 0x3F3B9A3F, 0xDD5C8CB8, -/**/ 0xBFB4485E, 0x03DBC000, -/**/ 0xBD3FAD46, 0xE8D26AB7, -/**/ 0x3FF14C00, 0x00000000, -/**/ 0x3F30B155, 0xB19AE5C7, -/**/ 0xBFB40320, 0x7B414000, -/**/ 0xBD26FD84, 0xAA8157C0, -/**/ 0x3FF14800, 0x00000000, -/**/ 0x3F17C382, 0xB34EDA32, -/**/ 0xBFB3BDF5, 0xA7D20000, -/**/ 0x3D319BD0, 0xAD125895, -/**/ 0x3FF14400, 0x00000000, -/**/ 0xBF129CFF, 0xBAF129D0, -/**/ 0xBFB378DD, 0x7F748000, -/**/ 0xBD371411, 0x28F1FACA, -/**/ 0x3FF14000, 0x00000000, -/**/ 0xBF2E2E59, 0x771B7C7F, -/**/ 0xBFB333D7, 0xF8184000, -/**/ 0x3CE692B6, 0xA81B8848, -/**/ 0x3FF13C00, 0x00000000, -/**/ 0xBF395F06, 0x30FE1D9C, -/**/ 0xBFB2EEE5, 0x07B40000, -/**/ 0xBD08081E, 0xDD77C860, -/**/ 0x3FF13400, 0x00000000, -/**/ 0x3F3C8113, 0x5C81135D, -/**/ 0xBFB2AA04, 0xA4470000, -/**/ 0xBD37A48B, 0xA8B1CB41, -/**/ 0x3FF13000, 0x00000000, -/**/ 0x3F3288FF, 0xBB3B5DC0, -/**/ 0xBFB26536, 0xC3D8C000, -/**/ 0xBD0B4BAC, 0x097C5BA3, -/**/ 0x3FF12C00, 0x00000000, -/**/ 0x3F21713D, 0xB81577AE, -/**/ 0xBFB2207B, 0x5C784000, -/**/ 0xBD349D8C, 0xFC10C7BF, -/**/ 0x3FF12800, 0x00000000, -/**/ 0xBEEE05E5, 0xBAD6FC84, -/**/ 0xBFB1DBD2, 0x643D0000, -/**/ 0xBD390B24, 0xD977C494, -/**/ 0x3FF12400, 0x00000000, -/**/ 0xBF24E314, 0x59F992BF, -/**/ 0xBFB1973B, 0xD1464000, -/**/ 0xBD3566D1, 0x54F930B3, -/**/ 0x3FF12000, 0x00000000, -/**/ 0xBF33CB91, 0xC9F6E7A8, -/**/ 0xBFB152B7, 0x99BB4000, -/**/ 0x3D09BB29, 0x07030829, -/**/ 0x3FF11C00, 0x00000000, -/**/ 0xBF3CFE65, 0x8B7D9851, -/**/ 0xBFB10E45, 0xB3CB0000, -/**/ 0x3D37CF69, 0x284A3465, -/**/ 0x3FF11400, 0x00000000, -/**/ 0x3F39F5DB, 0x29605DF7, -/**/ 0xBFB0C9E6, 0x15AC4000, -/**/ 0xBD2C2DA8, 0x0974D976, -/**/ 0x3FF11000, 0x00000000, -/**/ 0x3F311111, 0x11111111, -/**/ 0xBFB08598, 0xB59E4000, -/**/ 0x3D17E5DD, 0x7009902C, -/**/ 0x3FF10C00, 0x00000000, -/**/ 0x3F20A63A, 0x12A5B1AE, -/**/ 0xBFB0415D, 0x89E74000, -/**/ 0xBD1111C0, 0x5CF1D753, -/**/ 0x3FF10800, 0x00000000, -/**/ 0xBED107FB, 0xBE011080, -/**/ 0xBFAFFA69, 0x11AB8000, -/**/ 0xBD23008C, 0x98381A8F, -/**/ 0x3FF10400, 0x00000000, -/**/ 0xBF216989, 0x6FEABBAE, -/**/ 0xBFAF723B, 0x51800000, -/**/ 0x3D3D6EB0, 0xDD5610D3, -/**/ 0x3FF10000, 0x00000000, -/**/ 0xBF30FEF0, 0x10FEF011, -/**/ 0xBFAEEA31, 0xC0068000, -/**/ 0xBD3C3DD8, 0x3606D891, -/**/ 0x3FF0FC00, 0x00000000, -/**/ 0xBF3922C0, 0x98CDDC74, -/**/ 0xBFAE624C, 0x4A0B8000, -/**/ 0x3D30F25C, 0x74676689, -/**/ 0x3FF0F400, 0x00000000, -/**/ 0x3F3EDFAB, 0x325A1A80, -/**/ 0xBFADDA8A, 0xDC680000, -/**/ 0x3D21B1AC, 0x64D9E42F, -/**/ 0x3FF0F000, 0x00000000, -/**/ 0x3F370834, 0xF27F9A57, -/**/ 0xBFAD52ED, 0x64060000, -/**/ 0x3D33C85D, 0x2A29BBD6, -/**/ 0x3FF0EC00, 0x00000000, -/**/ 0x3F2EAD7C, 0xD391FBC5, -/**/ 0xBFACCB73, 0xCDDD8000, -/**/ 0xBD3965C3, 0x6E09F5FE, -/**/ 0x3FF0E800, 0x00000000, -/**/ 0x3F1F2CA5, 0xE9479870, -/**/ 0xBFAC441E, 0x06F70000, -/**/ 0xBD354F1F, 0x49850D15, -/**/ 0x3FF0E400, 0x00000000, -/**/ 0x3ED95609, 0x80439019, -/**/ 0xBFABBCEB, 0xFC690000, -/**/ 0x3D17BF86, 0x8C317C2A, -/**/ 0x3FF0E000, 0x00000000, -/**/ 0xBF1B6B4D, 0xC6867596, -/**/ 0xBFAB35DD, 0x9B588000, -/**/ 0xBD3D5674, 0xD6CF558E, -/**/ 0x3FF0DC00, 0x00000000, -/**/ 0xBF2BEAEE, 0x172D4CE8, -/**/ 0xBFAAAEF2, 0xD0FB0000, -/**/ 0xBD20FC1A, 0x353BB42E, -/**/ 0x3FF0D800, 0x00000000, -/**/ 0xBF34EAB0, 0x479071A9, -/**/ 0xBFAA282B, 0x8A938000, -/**/ 0x3D2E8F59, 0x80EFC8E3, -/**/ 0x3FF0D400, 0x00000000, -/**/ 0xBF3BBA9C, 0xA61C62D3, -/**/ 0xBFA9A187, 0xB5740000, -/**/ 0x3D30C22E, 0x4EC4D90D, -/**/ 0x3FF0CC00, 0x00000000, -/**/ 0x3F3D9AA6, 0x77344011, -/**/ 0xBFA91B07, 0x3EFD8000, -/**/ 0x3D19D7C5, 0x3F76CA96, -/**/ 0x3FF0C800, 0x00000000, -/**/ 0x3F3714FB, 0xCDA3AC11, -/**/ 0xBFA894AA, 0x149F8000, -/**/ 0xBD39A19A, 0x8BE97661, -/**/ 0x3FF0C400, 0x00000000, -/**/ 0x3F30B446, 0x391F2E61, -/**/ 0xBFA80E70, 0x23D90000, -/**/ 0x3D399DC1, 0x6F28BF45, -/**/ 0x3FF0C000, 0x00000000, -/**/ 0x3F24F0D1, 0x682E11CD, -/**/ 0xBFA78859, 0x5A358000, -/**/ 0x3D108B0D, 0x083B3A4C, -/**/ 0x3FF0BC00, 0x00000000, -/**/ 0x3F118519, 0x5D5A36EA, -/**/ 0xBFA70265, 0xA5510000, -/**/ 0x3D2888DF, 0x11FD5CE7, -/**/ 0x3FF0B800, 0x00000000, -/**/ 0xBEF913DA, 0x62386CAB, -/**/ 0xBFA67C94, 0xF2D48000, -/**/ 0xBD3DAC20, 0x827CCA0C, -/**/ 0x3FF0B400, 0x00000000, -/**/ 0xBF1D7CFF, 0xBD31D7D0, -/**/ 0xBFA5F6E7, 0x30790000, -/**/ 0x3D20485A, 0x8012494C, -/**/ 0x3FF0B000, 0x00000000, -/**/ 0xBF2A11BA, 0x226951DC, -/**/ 0xBFA5715C, 0x4C040000, -/**/ 0x3D38888D, 0xDFC47628, -/**/ 0x3FF0AC00, 0x00000000, -/**/ 0xBF328E31, 0x7B2E9DD2, -/**/ 0xBFA4EBF4, 0x334A0000, -/**/ 0x3D2D9150, 0xF73BE773, -/**/ 0x3FF0A800, 0x00000000, -/**/ 0xBF37EF59, 0x7EF597EF, -/**/ 0xBFA466AE, 0xD42E0000, -/**/ 0x3D2C1673, 0x75BDFD28, -/**/ 0x3FF0A400, 0x00000000, -/**/ 0xBF3D2C71, 0x50D413C1, -/**/ 0xBFA3E18C, 0x1CA08000, -/**/ 0xBD3748ED, 0x3F6E378E, -/**/ 0x3FF09C00, 0x00000000, -/**/ 0x3F3DBA6A, 0xF836010A, -/**/ 0xBFA35C8B, 0xFAA10000, -/**/ 0xBD38357D, 0x5EF9EB35, -/**/ 0x3FF09800, 0x00000000, -/**/ 0x3F38C51F, 0x624D4AF5, -/**/ 0xBFA2D7AE, 0x5C3C8000, -/**/ 0x3D322939, 0x459DA66D, -/**/ 0x3FF09400, 0x00000000, -/**/ 0x3F33F390, 0x10953F39, -/**/ 0xBFA252F3, 0x2F8D0000, -/**/ 0xBD283E9A, 0xE021B67B, -/**/ 0x3FF09000, 0x00000000, -/**/ 0x3F2E8B42, 0x861539B9, -/**/ 0xBFA1CE5A, 0x62BC0000, -/**/ 0xBD3A9CC7, 0x8D8DF999, -/**/ 0x3FF08C00, 0x00000000, -/**/ 0x3F25766E, 0xACBC4021, -/**/ 0xBFA149E3, 0xE4008000, -/**/ 0x3D32B98A, 0x9A4168FD, -/**/ 0x3FF08800, 0x00000000, -/**/ 0x3F1950DB, 0x0F3DBD5A, -/**/ 0xBFA0C58F, 0xA19E0000, -/**/ 0x3D0559D1, 0x58B17913, -/**/ 0x3FF08400, 0x00000000, -/**/ 0x3F008421, 0x08421084, -/**/ 0xBFA0415D, 0x89E78000, -/**/ 0x3D3DDDC7, 0xF461C516, -/**/ 0x3FF08000, 0x00000000, -/**/ 0xBF007FDF, 0x0041FF7C, -/**/ 0xBF9F7A9B, 0x16780000, -/**/ 0xBD242AD9, 0x271BE7D7, -/**/ 0x3FF07C00, 0x00000000, -/**/ 0xBF183591, 0xC54798FB, -/**/ 0xBF9E72BF, 0x28140000, -/**/ 0x3D28D751, 0x49774D47, -/**/ 0x3FF07800, 0x00000000, -/**/ 0xBF23CFA1, 0x518F4EFD, -/**/ 0xBF9D6B27, 0x25980000, -/**/ 0x3D39FF7B, 0x50D1B838, -/**/ 0x3FF07400, 0x00000000, -/**/ 0xBF2B3EB7, 0x01073261, -/**/ 0xBF9C63D2, 0xEC150000, -/**/ 0x3D35439C, 0xE030A687, -/**/ 0x3FF07000, 0x00000000, -/**/ 0xBF31341F, 0xD6EAB025, -/**/ 0xBF9B5CC2, 0x58B70000, -/**/ 0xBD18E611, 0xB8AFBFE8, -/**/ 0x3FF06C00, 0x00000000, -/**/ 0xBF34A638, 0x6ED049E0, -/**/ 0xBF9A55F5, 0x48C60000, -/**/ 0x3D2DE070, 0x9F2D03C9, -/**/ 0x3FF06800, 0x00000000, -/**/ 0xBF37F5BF, 0xEF997F5C, -/**/ 0xBF994F6B, 0x99A20000, -/**/ 0xBD311D5E, 0xF96CF7F5, -/**/ 0x3FF06400, 0x00000000, -/**/ 0xBF3B22D0, 0xE5604189, -/**/ 0xBF984925, 0x28C90000, -/**/ 0x3D2AA0BA, 0x325A0C34, -/**/ 0x3FF06000, 0x00000000, -/**/ 0xBF3E2D85, 0xC1163FF0, -/**/ 0xBF974321, 0xD3D00000, -/**/ 0xBCFB4A69, 0x0FE94778, -/**/ 0x3FF05800, 0x00000000, -/**/ 0x3F3EEA07, 0x27586632, -/**/ 0xBF963D61, 0x78690000, -/**/ 0xBD07ABF3, 0x89596542, -/**/ 0x3FF05400, 0x00000000, -/**/ 0x3F3C23BB, 0x98E2A5E7, -/**/ 0xBF9537E3, 0xF45F0000, -/**/ 0xBD2AB259, 0xD2D7F253, -/**/ 0x3FF05000, 0x00000000, -/**/ 0x3F397F7D, 0x73404146, -/**/ 0xBF9432A9, 0x25980000, -/**/ 0xBD098139, 0x928637FE, -/**/ 0x3FF04C00, 0x00000000, -/**/ 0x3F36FD32, 0xB0C7B49A, -/**/ 0xBF932DB0, 0xEA130000, -/**/ 0xBD2710CB, 0x130895FC, -/**/ 0x3FF04800, 0x00000000, -/**/ 0x3F349CC1, 0x664C578A, -/**/ 0xBF9228FB, 0x1FEA0000, -/**/ 0xBD2713E3, 0x284991FE, -/**/ 0x3FF04400, 0x00000000, -/**/ 0x3F325E0F, 0xC2FCB1F4, -/**/ 0xBF912487, 0xA5500000, -/**/ 0xBD3FDBE5, 0xFED4B393, -/**/ 0x3FF04000, 0x00000000, -/**/ 0x3F304104, 0x10410410, -/**/ 0xBF902056, 0x58930000, -/**/ 0xBD3611D2, 0x7C8E8417, -/**/ 0x3FF03C00, 0x00000000, -/**/ 0x3F2C8B09, 0x6334030B, -/**/ 0xBF8E38CE, 0x30340000, -/**/ 0x3D39DE88, 0xA3DA281A, -/**/ 0x3FF03800, 0x00000000, -/**/ 0x3F28D6F0, 0x48FF7E3A, -/**/ 0xBF8C3173, 0x84C80000, -/**/ 0x3D341F33, 0xFCEFB9FE, -/**/ 0x3FF03400, 0x00000000, -/**/ 0x3F25658A, 0x0081A559, -/**/ 0xBF8A2A9C, 0x6C180000, -/**/ 0x3D3F73BC, 0x4D6D3472, -/**/ 0x3FF03000, 0x00000000, -/**/ 0x3F2236A3, 0xEBC349DE, -/**/ 0xBF882448, 0xA3880000, -/**/ 0xBD345544, 0x12C584E0, -/**/ 0x3FF02C00, 0x00000000, -/**/ 0x3F1E9417, 0x3FEFD386, -/**/ 0xBF861E77, 0xE8B60000, -/**/ 0x3D38073E, 0xEAF8EAF3, -/**/ 0x3FF02800, 0x00000000, -/**/ 0x3F193F1D, 0xCA7A317C, -/**/ 0xBF841929, 0xF9680000, -/**/ 0xBD1977C7, 0x55D01368, -/**/ 0x3FF02400, 0x00000000, -/**/ 0x3F146DF7, 0x6CB49652, -/**/ 0xBF82145E, 0x939E0000, -/**/ 0xBD3E3D12, 0x38C4EA00, -/**/ 0x3FF02000, 0x00000000, -/**/ 0x3F102040, 0x81020408, -/**/ 0xBF801015, 0x75880000, -/**/ 0xBD3BCE25, 0x1998B506, -/**/ 0x3FF01C00, 0x00000000, -/**/ 0x3F08AB2B, 0x8C355D63, -/**/ 0xBF7C189C, 0xBB100000, -/**/ 0x3D3D8055, 0x12588560, -/**/ 0x3FF01800, 0x00000000, -/**/ 0x3F021B28, 0xBD1BA97E, -/**/ 0xBF781212, 0x14580000, -/**/ 0xBD1AD503, 0x82973F27, -/**/ 0x3FF01400, 0x00000000, -/**/ 0x3EF91F67, 0x411155AB, -/**/ 0xBF740C8A, 0x74780000, -/**/ 0xBD1E3871, 0xDF070002, -/**/ 0x3FF01000, 0x00000000, -/**/ 0x3EF01010, 0x10101010, -/**/ 0xBF700805, 0x59580000, -/**/ 0xBD2166AF, 0xCB31C67B, -/**/ 0x3FF00C00, 0x00000000, -/**/ 0x3EE20D8A, 0x279DB649, -/**/ 0xBF680904, 0x82880000, -/**/ 0xBD285C06, 0x96A70C0C, -/**/ 0x3FF00800, 0x00000000, -/**/ 0x3ED00804, 0x02010080, -/**/ 0xBF600401, 0x55D80000, -/**/ 0x3D33BB10, 0xC7CC7089, -/**/ 0x3FF00400, 0x00000000, -/**/ 0x3EB00401, 0x00401004, -/**/ 0xBF500200, 0x55600000, -/**/ 0xBD356224, 0xCD5F35F8, -/**/ 0x3FF00000, 0x00000000, -/**/ 0x00000000, 0x00000000, -/**/ 0x00000000, 0x00000000, -/**/ 0x00000000, 0x00000000, -/**/ 0x3FEFF800, 0x00000000, -/**/ 0x3EAFF801, 0xFF801FF8, -/**/ 0x3F4FFC00, 0xAA800000, -/**/ 0x3D35621F, 0x7809A0A3, -/**/ 0x3FEFF000, 0x00000000, -/**/ 0x3ECFF007, 0xFC01FF00, -/**/ 0x3F5FF802, 0xA9B00000, -/**/ 0xBD33BC66, 0x1D61C5EB, -/**/ 0x3FEFE800, 0x00000000, -/**/ 0x3EE1F28A, 0x186DADBE, -/**/ 0x3F67F704, 0x7D780000, -/**/ 0x3D283DA6, 0x89D68648, -/**/ 0x3FEFE000, 0x00000000, -/**/ 0x3EEFE01F, 0xE01FE020, -/**/ 0x3F6FF00A, 0xA2B00000, -/**/ 0x3D20BC04, 0xA086B56A, -/**/ 0x3FEFD800, 0x00000000, -/**/ 0x3EF8E0E6, 0xDF68BD14, -/**/ 0x3F73F38A, 0x60F00000, -/**/ 0x3D192256, 0x93C93749, -/**/ 0x3FEFD000, 0x00000000, -/**/ 0x3F01E528, 0x439A981C, -/**/ 0x3F77EE11, 0xEBD80000, -/**/ 0x3D0749D3, 0xC2D23A07, -/**/ 0x3FEFC800, 0x00000000, -/**/ 0x3F08556A, 0x8596391C, -/**/ 0x3F7BE79C, 0x70040000, -/**/ 0x3D38EC8F, 0x9A6C0404, -/**/ 0x3FEFC000, 0x00000000, -/**/ 0x3F0FC07F, 0x01FC07F0, -/**/ 0x3F7FE02A, 0x6B100000, -/**/ 0x3D19E23F, 0x0DDA40E4, -/**/ 0x3FEFB800, 0x00000000, -/**/ 0x3F1412D5, 0x9F5976B5, -/**/ 0x3F81EBDE, 0x2D1A0000, -/**/ 0xBD2A0683, 0xFF48DC36, -/**/ 0x3FEFB000, 0x00000000, -/**/ 0x3F18C21A, 0xBD271E34, -/**/ 0x3F83E729, 0x5D260000, -/**/ 0xBD2609C1, 0xFF29A114, -/**/ 0x3FEFA800, 0x00000000, -/**/ 0x3F1DEDB2, 0x5594A734, -/**/ 0x3F85E1F7, 0x03EC0000, -/**/ 0x3D37CA09, 0xF585DA1B, -/**/ 0x3FEFA000, 0x00000000, -/**/ 0x3F21CAA0, 0x1FA11CAA, -/**/ 0x3F87DC47, 0x5F820000, -/**/ 0xBD3EB124, 0x5B5DA1F5, -/**/ 0x3FEF9800, 0x00000000, -/**/ 0x3F24DC34, 0x55E8CB6B, -/**/ 0x3F89D61A, 0xADC60000, -/**/ 0x3D37B196, 0x327B4257, -/**/ 0x3FEF9000, 0x00000000, -/**/ 0x3F282B68, 0x13BAF1B2, -/**/ 0x3F8BCF71, 0x2C740000, -/**/ 0x3D1C25E0, 0x97BD9771, -/**/ 0x3FEF8800, 0x00000000, -/**/ 0x3F2BB80D, 0xCC420861, -/**/ 0x3F8DC84B, 0x19120000, -/**/ 0x3D1C0A54, 0x1E3A5B30, -/**/ 0x3FEF8000, 0x00000000, -/**/ 0x3F2F81F8, 0x1F81F820, -/**/ 0x3F8FC0A8, 0xB0FC0000, -/**/ 0x3CDF1E7C, 0xF6D3A69C, -/**/ 0x3FEF7800, 0x00000000, -/**/ 0x3F31C47C, 0xED1079FA, -/**/ 0x3F90DC45, 0x18B00000, -/**/ 0xBD29BC2F, 0x380313FC, -/**/ 0x3FEF7000, 0x00000000, -/**/ 0x3F33E672, 0xFA98528D, -/**/ 0x3F91D7F7, 0xEB9F0000, -/**/ 0xBD14193A, 0x83FCC7A6, -/**/ 0x3FEF6800, 0x00000000, -/**/ 0x3F3626C7, 0xCAFBD3D2, -/**/ 0x3F92D36C, 0xEFB50000, -/**/ 0x3D35F0BB, 0x341706C3, -/**/ 0x3FEF6000, 0x00000000, -/**/ 0x3F388565, 0x06DDABA6, -/**/ 0x3F93CEA4, 0x43470000, -/**/ 0xBD36A2C4, 0x32D6A40B, -/**/ 0x3FEF5800, 0x00000000, -/**/ 0x3F3B0234, 0x6CC4F5F5, -/**/ 0x3F94C99E, 0x04900000, -/**/ 0x3D1DECC6, 0x5DF5F4A5, -/**/ 0x3FEF5000, 0x00000000, -/**/ 0x3F3D9D1F, 0xD102728A, -/**/ 0x3F95C45A, 0x51B90000, -/**/ 0xBD263BB6, 0x216D87D8, -/**/ 0x3FEF5000, 0x00000000, -/**/ 0xBF3FA9EE, 0xE26A1DD4, -/**/ 0x3F96BED9, 0x48D20000, -/**/ 0xBD320BC4, 0x160A43F8, -/**/ 0x3FEF4800, 0x00000000, -/**/ 0xBF3CD30D, 0xADEC7540, -/**/ 0x3F97B91B, 0x07D60000, -/**/ 0xBD33B955, 0xB602ACE4, -/**/ 0x3FEF4000, 0x00000000, -/**/ 0xBF39DE52, 0x7C761DC6, -/**/ 0x3F98B31F, 0xACAA0000, -/**/ 0xBD33FC78, 0xA96E4964, -/**/ 0x3FEF3800, 0x00000000, -/**/ 0xBF36CBD3, 0x23989FF0, -/**/ 0x3F99ACE7, 0x551D0000, -/**/ 0xBD2D75D9, 0x7EC7C410, -/**/ 0x3FEF3000, 0x00000000, -/**/ 0xBF339BA5, 0x639F8B15, -/**/ 0x3F9AA672, 0x1EE80000, -/**/ 0x3D2AD4EB, 0x5C5AF494, -/**/ 0x3FEF2800, 0x00000000, -/**/ 0xBF304DDE, 0xE7AA579B, -/**/ 0x3F9B9FC0, 0x27B00000, -/**/ 0xBD3B9A01, 0x0AE6922A, -/**/ 0x3FEF2000, 0x00000000, -/**/ 0xBF29C52A, 0x8B8C46FD, -/**/ 0x3F9C98D1, 0x8D010000, -/**/ 0xBD2BF615, 0x0589DF0F, -/**/ 0x3FEF1800, 0x00000000, -/**/ 0xBF22B3BB, 0xFE0E92B4, -/**/ 0x3F9D91A6, 0x6C540000, -/**/ 0x3D2E61F1, 0x658CFB9A, -/**/ 0x3FEF1000, 0x00000000, -/**/ 0xBF16CF39, 0xFE8B488E, -/**/ 0x3F9E8A3E, 0xE30D0000, -/**/ 0xBD21A9FA, 0x3DE53900, -/**/ 0x3FEF0800, 0x00000000, -/**/ 0xBEFF07C1, 0xF07C1F08, -/**/ 0x3F9F829B, 0x0E780000, -/**/ 0x3D298026, 0x7C7E09E4, -/**/ 0x3FEF0000, 0x00000000, -/**/ 0x3EFF003E, 0x007C00F8, -/**/ 0x3FA03D5D, 0x85E70000, -/**/ 0x3D3F7789, 0x60ED29CF, -/**/ 0x3FEEF800, 0x00000000, -/**/ 0x3F17B671, 0x3D759870, -/**/ 0x3FA0B94F, 0x7C198000, -/**/ 0xBD2E8989, 0x6F022783, -/**/ 0x3FEEF000, 0x00000000, -/**/ 0x3F241070, 0x2A8BB96A, -/**/ 0x3FA13523, 0x78598000, -/**/ 0xBD1C1AC3, 0xB71FA59B, -/**/ 0x3FEEE800, 0x00000000, -/**/ 0x3F2C7F84, 0x58E01EEA, -/**/ 0x3FA1B0D9, 0x89240000, -/**/ 0xBD33401E, 0x9AE889BB, -/**/ 0x3FEEE000, 0x00000000, -/**/ 0x3F329425, 0xA3D491BC, -/**/ 0x3FA22C71, 0xBCEA8000, -/**/ 0x3CFD2818, 0xF87F888F, -/**/ 0x3FEED800, 0x00000000, -/**/ 0x3F37054D, 0x9E9D2AE8, -/**/ 0x3FA2A7EC, 0x22150000, -/**/ 0xBD278CE7, 0x7A9163FE, -/**/ 0x3FEED000, 0x00000000, -/**/ 0x3F3B9325, 0x540C85E6, -/**/ 0x3FA32348, 0xC7000000, -/**/ 0x3D2696DB, 0x90B1E49F, -/**/ 0x3FEED000, 0x00000000, -/**/ 0xBF3FC267, 0xF099FC26, -/**/ 0x3FA39E87, 0xB9FE8000, -/**/ 0x3D3EAFD4, 0x80AD9015, -/**/ 0x3FEEC800, 0x00000000, -/**/ 0xBF3AFB6E, 0xD02A4E5D, -/**/ 0x3FA419A9, 0x09590000, -/**/ 0x3D3B5CDC, 0x67D48EA7, -/**/ 0x3FEEC000, 0x00000000, -/**/ 0xBF361803, 0xD7A79FF1, -/**/ 0x3FA494AC, 0xC34D8000, -/**/ 0x3D211C78, 0xA56FD247, -/**/ 0x3FEEB800, 0x00000000, -/**/ 0xBF31183B, 0x805C2197, -/**/ 0x3FA50F92, 0xF60F8000, -/**/ 0x3D296CFB, 0x0A91FFE3, -/**/ 0x3FEEB000, 0x00000000, -/**/ 0xBF27F854, 0x5FE15180, -/**/ 0x3FA58A5B, 0xAFC90000, -/**/ 0xBD2B2B73, 0x9570AD39, -/**/ 0x3FEEA800, 0x00000000, -/**/ 0xBF1B0F90, 0xE210C36A, -/**/ 0x3FA60506, 0xFE990000, -/**/ 0xBD32BA40, 0x8194E036, -/**/ 0x3FEEA000, 0x00000000, -/**/ 0xBEF6F7DD, 0x8C33ADB2, -/**/ 0x3FA67F94, 0xF0948000, -/**/ 0x3D3ECC1F, 0x3E7E4ED7, -/**/ 0x3FEE9800, 0x00000000, -/**/ 0x3F1003D3, 0x1003D310, -/**/ 0x3FA6FA05, 0x93C78000, -/**/ 0x3D3B415E, 0x41D634A1, -/**/ 0x3FEE9000, 0x00000000, -/**/ 0x3F231ABF, 0x0B7672A0, -/**/ 0x3FA77458, 0xF6330000, -/**/ 0xBD3181DC, 0xE586AF09, -/**/ 0x3FEE8800, 0x00000000, -/**/ 0x3F2E6B5C, 0xCF172481, -/**/ 0x3FA7EE8F, 0x25CD8000, -/**/ 0xBD3F4216, 0x11A5C1E9, -/**/ 0x3FEE8000, 0x00000000, -/**/ 0x3F34F9CD, 0x77A84876, -/**/ 0x3FA868A8, 0x30840000, -/**/ 0xBD12623A, 0x134AC693, -/**/ 0x3FEE7800, 0x00000000, -/**/ 0x3F3AD9A8, 0xD7473427, -/**/ 0x3FA8E2A4, 0x243A0000, -/**/ 0x3D2B9EEB, 0x01426490, -/**/ 0x3FEE7800, 0x00000000, -/**/ 0xBF3F2AD3, 0x4578DCCA, -/**/ 0x3FA95C83, 0x0EC90000, -/**/ 0xBD2C1482, 0x97C5FEB8, -/**/ 0x3FEE7000, 0x00000000, -/**/ 0xBF3913BA, 0x97A6A035, -/**/ 0x3FA9D644, 0xFDFF8000, -/**/ 0x3D313C90, 0x539A473B, -/**/ 0x3FEE6800, 0x00000000, -/**/ 0xBF32E120, 0xC594A915, -/**/ 0x3FAA4FE9, 0xFFA40000, -/**/ 0xBD36E584, 0xA0402925, -/**/ 0x3FEE6000, 0x00000000, -/**/ 0xBF292632, 0xC5DF4232, -/**/ 0x3FAAC972, 0x21710000, -/**/ 0x3D2F8D3E, 0xF013222C, -/**/ 0x3FEE5800, 0x00000000, -/**/ 0xBF18A6DF, 0xC3518A6E, -/**/ 0x3FAB42DD, 0x71198000, -/**/ 0xBD1C827A, 0xE5D6704C, -/**/ 0x3FEE5000, 0x00000000, -/**/ 0x3ED6BC08, 0x86833271, -/**/ 0x3FABBC2B, 0xFC450000, -/**/ 0xBD17D186, 0x91417DAF, -/**/ 0x3FEE4800, 0x00000000, -/**/ 0x3F1BEB2D, 0xE672838D, -/**/ 0x3FAC355D, 0xD0920000, -/**/ 0x3D2F2CCC, 0x9ABF8388, -/**/ 0x3FEE4000, 0x00000000, -/**/ 0x3F2B6B8D, 0x9785150A, -/**/ 0x3FACAE72, 0xFB960000, -/**/ 0xBD3EFABF, 0x2025B1BE, -/**/ 0x3FEE3800, 0x00000000, -/**/ 0x3F348BCE, 0xE0D399FA, -/**/ 0x3FAD276B, 0x8ADB0000, -/**/ 0x3D16A423, 0xC78A64B0, -/**/ 0x3FEE3000, 0x00000000, -/**/ 0x3F3B7CD0, 0x933AC00F, -/**/ 0x3FADA047, 0x8BE38000, -/**/ 0x3D2252C7, 0xB1F6FE05, -/**/ 0x3FEE3000, 0x00000000, -/**/ 0xBF3D7747, 0x308F5281, -/**/ 0x3FAE1907, 0x0C278000, -/**/ 0xBD2FEA46, 0x64629E86, -/**/ 0x3FEE2800, 0x00000000, -/**/ 0xBF36508B, 0x6C196F66, -/**/ 0x3FAE91AA, 0x19150000, -/**/ 0xBD0E82A0, 0x1DCC6A76, -/**/ 0x3FEE2000, 0x00000000, -/**/ 0xBF2E1E1E, 0x1E1E1E1E, -/**/ 0x3FAF0A30, 0xC0118000, -/**/ 0xBD2D599E, 0x83368E91, -/**/ 0x3FEE1800, 0x00000000, -/**/ 0xBF1ECB93, 0xDD355CDB, -/**/ 0x3FAF829B, 0x0E780000, -/**/ 0x3D398026, 0x7C7E09E4, -/**/ 0x3FEE1000, 0x00000000, -/**/ 0xBECE0FF8, 0x7C01E100, -/**/ 0x3FAFFAE9, 0x119B8000, -/**/ 0x3D230337, 0x4262C554, -/**/ 0x3FEE0800, 0x00000000, -/**/ 0x3F1D54B5, 0x25C73724, -/**/ 0x3FB0398D, 0x6B624000, -/**/ 0xBD3AB14D, 0xFCBFCD00, -/**/ 0x3FEE0000, 0x00000000, -/**/ 0x3F2E01E0, 0x1E01E01E, -/**/ 0x3FB07598, 0x35990000, -/**/ 0xBD3B8ECF, 0xE4B59987, -/**/ 0x3FEDF800, 0x00000000, -/**/ 0x3F36C715, 0xC84194BA, -/**/ 0x3FB0B194, 0xEE0D0000, -/**/ 0x3D3666EA, 0x4F69EDCC, -/**/ 0x3FEDF000, 0x00000000, -/**/ 0x3F3EA78B, 0xEF26D838, -/**/ 0x3FB0ED83, 0x9B554000, -/**/ 0xBD3901F4, 0x6D48ABB4, -/**/ 0x3FEDF000, 0x00000000, -/**/ 0xBF395DBF, 0xF10995DC, -/**/ 0x3FB12964, 0x44030000, -/**/ 0xBD3D53BB, 0x751AA773, -/**/ 0x3FEDE800, 0x00000000, -/**/ 0xBF3148E0, 0x3BCBADC8, -/**/ 0x3FB16536, 0xEEA38000, -/**/ 0xBD147C5E, 0x768FA309, -/**/ 0x3FEDE000, 0x00000000, -/**/ 0xBF2233CE, 0x86E25CE1, -/**/ 0x3FB1A0FB, 0xA1BF8000, -/**/ 0x3D24A3FC, 0xC319D6DC, -/**/ 0x3FEDD800, 0x00000000, -/**/ 0xBEEA1CE9, 0x26B3FE23, -/**/ 0x3FB1DCB2, 0x63DB0000, -/**/ 0x3D39444F, 0x5E9E8981, -/**/ 0x3FEDD000, 0x00000000, -/**/ 0x3F1E4836, 0x0AB71710, -/**/ 0x3FB2185B, 0x3B75C000, -/**/ 0xBD3E3189, 0xF8F32304, -/**/ 0x3FEDC800, 0x00000000, -/**/ 0x3F300EE5, 0x00EE500F, -/**/ 0x3FB253F6, 0x2F0A0000, -/**/ 0x3D3416F8, 0xFB69A701, -/**/ 0x3FEDC000, 0x00000000, -/**/ 0x3F38A58D, 0x231C226A, -/**/ 0x3FB28F83, 0x450EC000, -/**/ 0x3D3A8D75, 0xAA119769, -/**/ 0x3FEDC000, 0x00000000, -/**/ 0xBF3EAA0C, 0x14715D63, -/**/ 0x3FB2CB02, 0x83F5C000, -/**/ 0x3D3E1EE2, 0xCA657021, -/**/ 0x3FEDB800, 0x00000000, -/**/ 0xBF35DFF8, 0x92AEFFC5, -/**/ 0x3FB30673, 0xF22C8000, -/**/ 0x3D24C9E2, 0x9DCF0BA5, -/**/ 0x3FEDB000, 0x00000000, -/**/ 0xBF29F894, 0x67E251A0, -/**/ 0x3FB341D7, 0x961BC000, -/**/ 0x3D31D092, 0x99837610, -/**/ 0x3FEDA800, 0x00000000, -/**/ 0xBF0FF896, 0x1FF89620, -/**/ 0x3FB37D2D, 0x76284000, -/**/ 0xBD2C60AA, 0x9B7FF15C, -/**/ 0x3FEDA000, 0x00000000, -/**/ 0x3F145E70, 0x076828BD, -/**/ 0x3FB3B875, 0x98B1C000, -/**/ 0xBD222415, 0x94ACA313, -/**/ 0x3FED9800, 0x00000000, -/**/ 0x3F2C8F60, 0xE567D573, -/**/ 0x3FB3F3B0, 0x04140000, -/**/ 0x3CEE2474, 0xACDFCEC5, -/**/ 0x3FED9000, 0x00000000, -/**/ 0x3F379118, 0xF3FC4DA2, -/**/ 0x3FB42EDC, 0xBEA64000, -/**/ 0x3D1BC0EE, 0xEA7C9ACD, -/**/ 0x3FED9000, 0x00000000, -/**/ 0xBF3F0C3C, 0x049DE4C3, -/**/ 0x3FB469FB, 0xCEBB4000, -/**/ 0x3D3B663C, 0x4F257194, -/**/ 0x3FED8800, 0x00000000, -/**/ 0xBF35905F, 0xF13D5906, -/**/ 0x3FB4A50D, 0x3AA1C000, -/**/ 0xBD2F7FE1, 0x308973E2, -/**/ 0x3FED8000, 0x00000000, -/**/ 0xBF27F6C8, 0x77D1EA57, -/**/ 0x3FB4E011, 0x08A34000, -/**/ 0x3D3AE5CF, 0xDF2C5AE5, -/**/ 0x3FED7800, 0x00000000, -/**/ 0xBF026AD1, 0xF4F31BA0, -/**/ 0x3FB51B07, 0x3F060000, -/**/ 0x3D383F69, 0x278E686A, -/**/ 0x3FED7000, 0x00000000, -/**/ 0x3F1DE6B2, 0xF26DF1BD, -/**/ 0x3FB555EF, 0xE40B4000, -/**/ 0x3D30B497, 0x8C868E23, -/**/ 0x3FED6800, 0x00000000, -/**/ 0x3F31599F, 0x7BA23D96, -/**/ 0x3FB590CA, 0xFDF00000, -/**/ 0x3D3C284F, 0x5722ABAA, -/**/ 0x3FED6000, 0x00000000, -/**/ 0x3F3B526C, 0xD425A760, -/**/ 0x3FB5CB98, 0x92ED4000, -/**/ 0x3D17BE44, 0xA64FC52F, -/**/ 0x3FED6000, 0x00000000, -/**/ 0xBF3A9BFC, 0x546A6FF1, -/**/ 0x3FB60658, 0xA9374000, -/**/ 0x3D30C3B1, 0xDEE9C4F8, -/**/ 0x3FED5800, 0x00000000, -/**/ 0xBF3071AD, 0x08F02FAC, -/**/ 0x3FB6410B, 0x46FE8000, -/**/ 0xBD153F8F, 0x3CBD8D14, -/**/ 0x3FED5000, 0x00000000, -/**/ 0xBF18BAD9, 0x12C6C142, -/**/ 0x3FB67BB0, 0x726EC000, -/**/ 0x3CEF724B, 0x69EF5912, -/**/ 0x3FED4800, 0x00000000, -/**/ 0x3F10B35C, 0x3254A5A2, -/**/ 0x3FB6B648, 0x31B00000, -/**/ 0xBD3BF30A, 0x1377DE92, -/**/ 0x3FED4000, 0x00000000, -/**/ 0x3F2D41D4, 0x1D41D41D, -/**/ 0x3FB6F0D2, 0x8AE58000, -/**/ 0xBD34B464, 0x1B664613, -/**/ 0x3FED3800, 0x00000000, -/**/ 0x3F392D71, 0xF494E548, -/**/ 0x3FB72B4F, 0x842EC000, -/**/ 0xBD3704CC, 0xC00C9DD3, -/**/ 0x3FED3800, 0x00000000, -/**/ 0xBF3C2DA1, 0xFF165C2E, -/**/ 0x3FB765BF, 0x23A6C000, -/**/ 0xBCFECBC0, 0x35C4256A, -/**/ 0x3FED3000, 0x00000000, -/**/ 0xBF317062, 0x7AA49674, -/**/ 0x3FB7A021, 0x6F648000, -/**/ 0x3D3E124C, 0xA18418FF, -/**/ 0x3FED2800, 0x00000000, -/**/ 0xBF1A6B80, 0x749CB290, -/**/ 0x3FB7DA76, 0x6D7B0000, -/**/ 0x3D32CC84, 0x4480C89B, -/**/ 0x3FED2000, 0x00000000, -/**/ 0x3F114B52, 0x25C6336D, -/**/ 0x3FB814BE, 0x23F8C000, -/**/ 0x3CCB2381, 0xDA82FDFD, -/**/ 0x3FED1800, 0x00000000, -/**/ 0x3F2EB155, 0xF08A3B1D, -/**/ 0x3FB84EF8, 0x98E84000, -/**/ 0xBD37D5CD, 0x246977C9, -/**/ 0x3FED1000, 0x00000000, -/**/ 0x3F3A7692, 0xBD71CD93, -/**/ 0x3FB88925, 0xD24FC000, -/**/ 0xBD31D505, 0x44FBB806, -/**/ 0x3FED1000, 0x00000000, -/**/ 0xBF3A5384, 0x89FC5E69, -/**/ 0x3FB8C345, 0xD6318000, -/**/ 0x3D3B20F5, 0xACB42A66, -/**/ 0x3FED0800, 0x00000000, -/**/ 0xBF2E0B56, 0x6439240E, -/**/ 0x3FB8FD58, 0xAA8C4000, -/**/ 0xBD3EEC90, 0x1BCB725B, -/**/ 0x3FED0000, 0x00000000, -/**/ 0xBF0CFF8C, 0x01CFF8C0, -/**/ 0x3FB9375E, 0x55594000, -/**/ 0x3D3EDDC3, 0x7380C364, -/**/ 0x3FECF800, 0x00000000, -/**/ 0x3F1F7661, 0x546D8D78, -/**/ 0x3FB97156, 0xDC8F8000, -/**/ 0xBD3C1FC1, 0x9AFDB97B, -/**/ 0x3FECF000, 0x00000000, -/**/ 0x3F3372E2, 0x25FE30D9, -/**/ 0x3FB9AB42, 0x46204000, -/**/ 0xBD28A648, 0x26787061, -/**/ 0x3FECE800, 0x00000000, -/**/ 0x3F3F1FDB, 0xD92305A6, -/**/ 0x3FB9E520, 0x97F9C000, -/**/ 0x3D235FAC, 0xB52DD050, -/**/ 0x3FECE800, 0x00000000, -/**/ 0xBF351B8A, 0x9C37FC63, -/**/ 0x3FBA1EF1, 0xD8060000, -/**/ 0x3D3CD417, 0x6DF97BCB, -/**/ 0x3FECE000, 0x00000000, -/**/ 0xBF227EC2, 0x6CB725AB, -/**/ 0x3FBA58B6, 0x0C2B4000, -/**/ 0xBD3CDC73, 0x5C5C9F2A, -/**/ 0x3FECD800, 0x00000000, -/**/ 0x3F05A240, 0xE6C2B448, -/**/ 0x3FBA926D, 0x3A4AC000, -/**/ 0x3D356365, 0x0BD22A9C, -/**/ 0x3FECD000, 0x00000000, -/**/ 0x3F2D7EC2, 0xFBB8D9F3, -/**/ 0x3FBACC17, 0x68434000, -/**/ 0xBD2AA783, 0xA0B7FA4C, -/**/ 0x3FECC800, 0x00000000, -/**/ 0x3F3AE1DB, 0x1B71D3E9, -/**/ 0x3FBB05B4, 0x9BEE4000, -/**/ 0x3D0FF22C, 0x18F84A5E, -/**/ 0x3FECC800, 0x00000000, -/**/ 0xBF38E45A, 0xCD6DE82D, -/**/ 0x3FBB3F44, 0xDB220000, -/**/ 0x3D3FD153, 0xD8DE09AF, -/**/ 0x3FECC000, 0x00000000, -/**/ 0xBF29269F, 0xE341926A, -/**/ 0x3FBB78C8, 0x2BB10000, -/**/ 0xBD325EF7, 0xBC3987E7, -/**/ 0x3FECB800, 0x00000000, -/**/ 0xBEC589FB, 0xF620C1DA, -/**/ 0x3FBBB23E, 0x93690000, -/**/ 0xBD368B18, 0x3559DB8B, -/**/ 0x3FECB000, 0x00000000, -/**/ 0x3F28A893, 0x0DE5FF1A, -/**/ 0x3FBBEBA8, 0x18148000, -/**/ 0xBD389B78, 0xB6DF1F57, -/**/ 0x3FECA800, 0x00000000, -/**/ 0x3F38EAB9, 0x0039563B, -/**/ 0x3FBC2504, 0xBF79C000, -/**/ 0x3D3717C4, 0xD0EF4ADC, -/**/ 0x3FECA800, 0x00000000, -/**/ 0xBF3A67D5, 0x08F377F2, -/**/ 0x3FBC5E54, 0x8F5BC000, -/**/ 0x3D1D0C57, 0x585FBE06, -/**/ 0x3FECA000, 0x00000000, -/**/ 0xBF2B46E0, 0x072792E4, -/**/ 0x3FBC9797, 0x8D790000, -/**/ 0xBD36E010, 0x977D1884, -/**/ 0x3FEC9800, 0x00000000, -/**/ 0xBEE904EA, 0x1BB327C3, -/**/ 0x3FBCD0CD, 0xBF8C0000, -/**/ 0x3D33E14D, 0xB50DD743, -/**/ 0x3FEC9000, 0x00000000, -/**/ 0x3F2853EB, 0x77683AEC, -/**/ 0x3FBD09F7, 0x2B4C4000, -/**/ 0x3D2048C0, 0x00354E33, -/**/ 0x3FEC8800, 0x00000000, -/**/ 0x3F3932D7, 0xDC52100E, -/**/ 0x3FBD4313, 0xD66CC000, -/**/ 0xBD294543, 0x79135713, -/**/ 0x3FEC8800, 0x00000000, -/**/ 0xBF39AD90, 0x2736962B, -/**/ 0x3FBD7C23, 0xC69CC000, -/**/ 0xBD297EE4, 0xDD328771, -/**/ 0x3FEC8000, 0x00000000, -/**/ 0xBF28EEA2, 0xF316B4C2, -/**/ 0x3FBDB527, 0x0187C000, -/**/ 0x3D392778, 0x56AE181F, -/**/ 0x3FEC7800, 0x00000000, -/**/ 0x3EEAB099, 0x058F7536, -/**/ 0x3FBDEE1D, 0x8CD60000, -/**/ 0xBD328DA0, 0x729EFF89, -/**/ 0x3FEC7000, 0x00000000, -/**/ 0x3F2C71C7, 0x1C71C71C, -/**/ 0x3FBE2707, 0x6E2B0000, -/**/ 0xBD2A342C, 0x2AF0003C, -/**/ 0x3FEC6800, 0x00000000, -/**/ 0x3F3BB2BB, 0xD6422A30, -/**/ 0x3FBE5FE4, 0xAB274000, -/**/ 0xBD35FAE9, 0xF74FFE4D, -/**/ 0x3FEC6800, 0x00000000, -/**/ 0xBF36BD01, 0x54BDE47E, -/**/ 0x3FBE98B5, 0x49670000, -/**/ 0x3D346774, 0x89C50E97, -/**/ 0x3FEC6000, 0x00000000, -/**/ 0xBF222CC5, 0xB5157FE4, -/**/ 0x3FBED179, 0x4E838000, -/**/ 0xBD1FD143, 0x749D0484, -/**/ 0x3FEC5800, 0x00000000, -/**/ 0x3F129A21, 0xA930B840, -/**/ 0x3FBF0A30, 0xC0118000, -/**/ 0xBD3D599E, 0x83368E91, -/**/ 0x3FEC5000, 0x00000000, -/**/ 0x3F3279B1, 0xAC5CEE14, -/**/ 0x3FBF42DB, 0xA3A24000, -/**/ 0xBD3312B7, 0x32DF6C0D, -/**/ 0x3FEC5000, 0x00000000, -/**/ 0xBF3F9CF5, 0xD4AB8D0B, -/**/ 0x3FBF7B79, 0xFEC38000, -/**/ 0xBD010987, 0xE897ED01, -/**/ 0x3FEC4800, 0x00000000, -/**/ 0xBF319D7C, 0xCC17DAE4, -/**/ 0x3FBFB40B, 0xD6FF4000, -/**/ 0x3D2C0BEC, 0xB7B53B5B, -/**/ 0x3FEC4000, 0x00000000, -/**/ 0xBF0C3F8F, 0x01C3F8F0, -/**/ 0x3FBFEC91, 0x31DC0000, -/**/ 0xBD354555, 0xD1AE6607, -/**/ 0x3FEC3800, 0x00000000, -/**/ 0x3F254738, 0xAB1B8FFC, -/**/ 0x3FC01285, 0x0A6E0000, -/**/ 0xBD1A8619, 0x4805BF94, -/**/ 0x3FEC3000, 0x00000000, -/**/ 0x3F38E51F, 0x48B3C5D7, -/**/ 0x3FC02EBB, 0x42BF4000, -/**/ 0xBD15A8FA, 0x5CE00E5D, -/**/ 0x3FEC3000, 0x00000000, -/**/ 0xBF38C377, 0x867E595E, -/**/ 0x3FC04AEB, 0x449F6000, -/**/ 0x3D2AFA90, 0x65CCD35C, -/**/ 0x3FEC2800, 0x00000000, -/**/ 0xBF24AC6D, 0x15FE3D95, -/**/ 0x3FC06715, 0x12CA6000, -/**/ 0xBD2A4757, 0x9CDC0A3D, -/**/ 0x3FEC2000, 0x00000000, -/**/ 0x3F10B34F, 0x53B8CDAE, -/**/ 0x3FC08338, 0xAFFA2000, -/**/ 0x3D30533C, 0xAC823E27, -/**/ 0x3FEC1800, 0x00000000, -/**/ 0x3F32C599, 0x3FABB0F6, -/**/ 0x3FC09F56, 0x1EE72000, -/**/ 0xBD28F305, 0x7157D1A8, -/**/ 0x3FEC1800, 0x00000000, -/**/ 0xBF3E8BF4, 0x97CD1B6C, -/**/ 0x3FC0BB6D, 0x6247A000, -/**/ 0x3D35464F, 0x3CCD04B3, -/**/ 0x3FEC1000, 0x00000000, -/**/ 0xBF2F8FC7, 0xE3F1F8FC, -/**/ 0x3FC0D77E, 0x7CD08000, -/**/ 0x3D3CB2CD, 0x2EE2F482, -/**/ 0x3FEC0800, 0x00000000, -/**/ 0xBEEDC860, 0x5B199F35, -/**/ 0x3FC0F389, 0x7134C000, -/**/ 0xBD3DA359, 0xE893D6C6, -/**/ 0x3FEC0000, 0x00000000, -/**/ 0x3F2C01C0, 0x1C01C01C, -/**/ 0x3FC10F8E, 0x42254000, -/**/ 0xBD293B38, 0x43396307, -/**/ 0x3FEBF800, 0x00000000, -/**/ 0x3F3D0577, 0x256228AA, -/**/ 0x3FC12B8C, 0xF2518000, -/**/ 0x3D348A4A, 0x13C0A0FC, -/**/ 0x3FEBF800, 0x00000000, -/**/ 0xBF33E08B, 0xCB93A8A1, -/**/ 0x3FC14785, 0x84674000, -/**/ 0x3D156345, 0x1027C750, -/**/ 0x3FEBF000, 0x00000000, -/**/ 0xBF12C4DB, 0x1DE63F4A, -/**/ 0x3FC16377, 0xFB124000, -/**/ 0x3D091E1A, 0xBF41763E, -/**/ 0x3FEBE800, 0x00000000, -/**/ 0x3F2526D0, 0x769F9E4F, -/**/ 0x3FC17F64, 0x58FCA000, -/**/ 0x3D2843FA, 0xD093C8DC, -/**/ 0x3FEBE000, 0x00000000, -/**/ 0x3F39ED43, 0x5292D891, -/**/ 0x3FC19B4A, 0xA0CEE000, -/**/ 0xBD3D8824, 0x9621338B, -/**/ 0x3FEBE000, 0x00000000, -/**/ 0xBF36A3B3, 0x5FC845A9, -/**/ 0x3FC1B72A, 0xD52F6000, -/**/ 0x3D2E80A4, 0x1811A396, -/**/ 0x3FEBD800, 0x00000000, -/**/ 0xBF1C7E26, 0xB7230491, -/**/ 0x3FC1D304, 0xF8C36000, -/**/ 0xBD3A6D44, 0xDF451042, -/**/ 0x3FEBD000, 0x00000000, -/**/ 0x3F20F365, 0x451B61CB, -/**/ 0x3FC1EED9, 0x0E2DC000, -/**/ 0x3D161563, 0x7097648F, -/**/ 0x3FEBC800, 0x00000000, -/**/ 0x3F3827F3, 0xD72DD0AA, -/**/ 0x3FC20AA7, 0x18102000, -/**/ 0x3D3F2C94, 0x348552FE, -/**/ 0x3FEBC800, 0x00000000, -/**/ 0xBF3814D3, 0xBE0C262F, -/**/ 0x3FC2266F, 0x190A6000, -/**/ 0xBD24D20A, 0xB840E7F6, -/**/ 0x3FEBC000, 0x00000000, -/**/ 0xBF207963, 0x7ECECB53, -/**/ 0x3FC24231, 0x13BA6000, -/**/ 0xBD3E3A00, 0x78EE9D9C, -/**/ 0x3FEBB800, 0x00000000, -/**/ 0x3F1EC130, 0xF29268D3, -/**/ 0x3FC25DED, 0x0ABC6000, -/**/ 0x3D35A385, 0x4F176449, -/**/ 0x3FEBB000, 0x00000000, -/**/ 0x3F37B218, 0xAB6353BF, -/**/ 0x3FC279A3, 0x00AB4000, -/**/ 0x3D3EF432, 0xB3235108, -/**/ 0x3FEBB000, 0x00000000, -/**/ 0xBF383759, 0xF2298376, -/**/ 0x3FC29552, 0xF8200000, -/**/ 0xBD35B967, 0xF4471DFC, -/**/ 0x3FEBA800, 0x00000000, -/**/ 0xBF201832, 0x1EAD4253, -/**/ 0x3FC2B0FC, 0xF3B1A000, -/**/ 0x3D177CA3, 0xE30A59EA, -/**/ 0x3FEBA000, 0x00000000, -/**/ 0x3F20679B, 0xD84886B1, -/**/ 0x3FC2CCA0, 0xF5F60000, -/**/ 0xBD3B5EF1, 0x91AFF120, -/**/ 0x3FEB9800, 0x00000000, -/**/ 0x3F38884D, 0xA41FEB4C, -/**/ 0x3FC2E83F, 0x0180E000, -/**/ 0xBD3F0C2A, 0xC284E1CE, -/**/ 0x3FEB9800, 0x00000000, -/**/ 0xBF370EA7, 0x3806E548, -/**/ 0x3FC303D7, 0x18E48000, -/**/ 0xBCD680B5, 0xCE3ECB05, -/**/ 0x3FEB9000, 0x00000000, -/**/ 0xBF1A4477, 0xB5EF34C0, -/**/ 0x3FC31F69, 0x3EB1A000, -/**/ 0xBD2A6726, 0xE5A396FB, -/**/ 0x3FEB8800, 0x00000000, -/**/ 0x3F2401B8, 0x9401B894, -/**/ 0x3FC33AF5, 0x75770000, -/**/ 0x3D3C9ECC, 0xA2FE72A5, -/**/ 0x3FEB8000, 0x00000000, -/**/ 0x3F3AA73A, 0x400DC1AA, -/**/ 0x3FC3567B, 0xBFC22000, -/**/ 0x3D3250D2, 0x53991A1F, -/**/ 0x3FEB8000, 0x00000000, -/**/ 0xBF349E11, 0x2E63A6A8, -/**/ 0x3FC371FC, 0x201E8000, -/**/ 0x3D3EE877, 0x9B2D8ABC, -/**/ 0x3FEB7800, 0x00000000, -/**/ 0xBF0E7898, 0xC8DA04B9, -/**/ 0x3FC38D76, 0x99164000, -/**/ 0x3D1844A5, 0x9E39BB70, -/**/ 0x3FEB7000, 0x00000000, -/**/ 0x3F2A284E, 0xE6B33E2D, -/**/ 0x3FC3A8EB, 0x2D31A000, -/**/ 0x3D1BAFB7, 0x7D5D503E, -/**/ 0x3FEB6800, 0x00000000, -/**/ 0x3F3E0B91, 0x759C2BB4, -/**/ 0x3FC3C459, 0xDEF76000, -/**/ 0x3D3EDC86, 0xF6B70D33, -/**/ 0x3FEB6800, 0x00000000, -/**/ 0xBF30E8E2, 0x088FD6E7, -/**/ 0x3FC3DFC2, 0xB0ECC000, -/**/ 0x3D28A72A, 0x62B8C13F, -/**/ 0x3FEB6000, 0x00000000, -/**/ 0x3ECB6006, 0xD801B600, -/**/ 0x3FC3FB25, 0xA5952000, -/**/ 0x3D3195BE, 0x6B358FF7, -/**/ 0x3FEB5800, 0x00000000, -/**/ 0x3F316A6A, 0xD840F62C, -/**/ 0x3FC41682, 0xBF728000, -/**/ 0xBD210047, 0x081F849D, -/**/ 0x3FEB5800, 0x00000000, -/**/ 0xBF3D4DEE, 0x7DF8BD99, -/**/ 0x3FC431DA, 0x01050000, -/**/ 0x3D304837, 0x836E0391, -/**/ 0x3FEB5000, 0x00000000, -/**/ 0xBF27E4B1, 0x7E4B17E5, -/**/ 0x3FC44D2B, 0x6CCB8000, -/**/ 0xBD170CC1, 0x6135783C, -/**/ 0x3FEB4800, 0x00000000, -/**/ 0x3F15F47D, 0x55E6D8FE, -/**/ 0x3FC46877, 0x05430000, -/**/ 0xBD3D8145, 0xF8D5087E, -/**/ 0x3FEB4000, 0x00000000, -/**/ 0x3F37006D, 0x0B803686, -/**/ 0x3FC483BC, 0xCCE6E000, -/**/ 0x3D1EEA52, 0x723F6369, -/**/ 0x3FEB4000, 0x00000000, -/**/ 0xBF37687C, 0x46A66920, -/**/ 0x3FC49EFC, 0xC6314000, -/**/ 0xBD090F59, 0x9F55572B, -/**/ 0x3FEB3800, 0x00000000, -/**/ 0xBF16F6A4, 0xFF2645BE, -/**/ 0x3FC4BA36, 0xF39A6000, -/**/ 0xBD34354B, 0xB3F219E5, -/**/ 0x3FEB3000, 0x00000000, -/**/ 0x3F2801B3, 0x1801B318, -/**/ 0x3FC4D56B, 0x5798E000, -/**/ 0x3D380580, 0x15A96555, -/**/ 0x3FEB2800, 0x00000000, -/**/ 0x3F3DD2FF, 0x93511680, -/**/ 0x3FC4F099, 0xF4A24000, -/**/ 0xBD3E9BF2, 0xFAFEAF27, -/**/ 0x3FEB2800, 0x00000000, -/**/ 0xBF304743, 0xA89DCCAC, -/**/ 0x3FC50BC2, 0xCD29C000, -/**/ 0x3D1ADA57, 0x28DB8D4F, -/**/ 0x3FEB2000, 0x00000000, -/**/ 0x3EFB2036, 0x406C80D9, -/**/ 0x3FC526E5, 0xE3A1C000, -/**/ 0xBD3790BA, 0x37FC5238, -/**/ 0x3FEB1800, 0x00000000, -/**/ 0x3F33BEC8, 0x4F9DC00E, -/**/ 0x3FC54203, 0x3A7A8000, -/**/ 0x3D268D68, 0xED855F0E, -/**/ 0x3FEB1800, 0x00000000, -/**/ 0xBF3A2101, 0x44F8CE7E, -/**/ 0x3FC55D1A, 0xD4232000, -/**/ 0x3D3ADD94, 0xDDA647E8, -/**/ 0x3FEB1000, 0x00000000, -/**/ 0xBF1FB596, 0xB99AF3F3, -/**/ 0x3FC5782C, 0xB3092000, -/**/ 0xBD33A463, 0x51794442, -/**/ 0x3FEB0800, 0x00000000, -/**/ 0x3F24B31D, 0x922A3E85, -/**/ 0x3FC59338, 0xD9982000, -/**/ 0x3CF0BA68, 0xB7555D4A, -/**/ 0x3FEB0000, 0x00000000, -/**/ 0x3F3CB3CF, 0xE19BF6B7, -/**/ 0x3FC5AE3F, 0x4A3AA000, -/**/ 0x3D21EA25, 0xF012A8B9, -/**/ 0x3FEB0000, 0x00000000, -/**/ 0xBF30DEAE, 0x9A5BF0D1, -/**/ 0x3FC5C940, 0x07598000, -/**/ 0xBD3A8D94, 0x8CD23322, -/**/ 0x3FEAF800, 0x00000000, -/**/ 0x3EFA2072, 0x9EDE13CE, -/**/ 0x3FC5E43B, 0x135BE000, -/**/ 0xBD343AB4, 0xCEED9C31, -/**/ 0x3FEAF000, 0x00000000, -/**/ 0x3F3435E5, 0x0D79435E, -/**/ 0x3FC5FF30, 0x70A7A000, -/**/ 0xBD38586F, 0x183BEBF2, -/**/ 0x3FEAF000, 0x00000000, -/**/ 0xBF392321, 0x06855D30, -/**/ 0x3FC61A20, 0x21A0E000, -/**/ 0x3D3DD9DD, 0x1BDF3CDD, -/**/ 0x3FEAE800, 0x00000000, -/**/ 0xBF19A45C, 0x7ABED811, -/**/ 0x3FC6350A, 0x28AAA000, -/**/ 0x3D2D5EC0, 0xAB8163AF, -/**/ 0x3FEAE000, 0x00000000, -/**/ 0x3F28C7ED, 0x84EF68CB, -/**/ 0x3FC64FEE, 0x88260000, -/**/ 0xBD1DA40D, 0x759DDED6, -/**/ 0x3FEAD800, 0x00000000, -/**/ 0x3F3F43FC, 0xA482F00D, -/**/ 0x3FC66ACD, 0x4272A000, -/**/ 0x3D3AA1BD, 0xBFC6C785, -/**/ 0x3FEAD800, 0x00000000, -/**/ 0xBF2B9222, 0xCDE3E7AE, -/**/ 0x3FC685A6, 0x59EF0000, -/**/ 0xBD21F2A9, 0x6C103214, -/**/ 0x3FEAD000, 0x00000000, -/**/ 0x3F14F302, 0xEED254A3, -/**/ 0x3FC6A079, 0xD0F7A000, -/**/ 0x3D35A3F8, 0x448D14F5, -/**/ 0x3FEAC800, 0x00000000, -/**/ 0x3F385567, 0x32071DEF, -/**/ 0x3FC6BB47, 0xA9E80000, -/**/ 0x3D19F64D, 0x23EA3296, -/**/ 0x3FEAC800, 0x00000000, -/**/ 0xBF347F29, 0xD47F29D4, -/**/ 0x3FC6D60F, 0xE719E000, -/**/ 0xBD3BC6E5, 0x57134767, -/**/ 0x3FEAC000, 0x00000000, -/**/ 0xBEF40FE1, 0xE82D23BC, -/**/ 0x3FC6F0D2, 0x8AE56000, -/**/ 0x3D369737, 0xC93373DA, -/**/ 0x3FEAB800, 0x00000000, -/**/ 0x3F320FDE, 0x972D8538, -/**/ 0x3FC70B8F, 0x97A1A000, -/**/ 0x3D34EA64, 0xF6A95BEF, -/**/ 0x3FEAB800, 0x00000000, -/**/ 0xBF3A8C9F, 0x66711513, -/**/ 0x3FC72647, 0x0FA40000, -/**/ 0xBD3774DF, 0x0E743A45, -/**/ 0x3FEAB000, 0x00000000, -/**/ 0xBF1C5A0F, 0x02806ABC, -/**/ 0x3FC740F8, 0xF5404000, -/**/ 0xBD30B66C, 0x99018AA1, -/**/ 0x3FEAA800, 0x00000000, -/**/ 0x3F28E44B, 0xD22C937A, -/**/ 0x3FC75BA5, 0x4AC8E000, -/**/ 0x3D3DDCA5, 0x8BC4A7C0, -/**/ 0x3FEAA800, 0x00000000, -/**/ 0xBF3FF2AD, 0xFF2ADFF3, -/**/ 0x3FC7764C, 0x128F2000, -/**/ 0x3D027490, 0x3479E3D1, -/**/ 0x3FEAA000, 0x00000000, -/**/ 0xBF288A16, 0x0B3ADA5C, -/**/ 0x3FC790ED, 0x4EE26000, -/**/ 0x3D199BBD, 0x4E7746F6, -/**/ 0x3FEA9800, 0x00000000, -/**/ 0x3F1DEC0D, 0x4C77B035, -/**/ 0x3FC7AB89, 0x0210E000, -/**/ 0xBD2BDB90, 0x72534A58, -/**/ 0x3FEA9000, 0x00000000, -/**/ 0x3F3B4D71, 0x91F59E6B, -/**/ 0x3FC7C61F, 0x2E674000, -/**/ 0xBD32392D, 0xB31BE8E0, -/**/ 0x3FEA9000, 0x00000000, -/**/ 0xBF30CDCB, 0xB8A2A522, -/**/ 0x3FC7E0AF, 0xD630C000, -/**/ 0x3D139E7C, 0x1D8F1034, -/**/ 0x3FEA8800, 0x00000000, -/**/ 0x3F094A00, 0x6A2194A0, -/**/ 0x3FC7FB3A, 0xFBB76000, -/**/ 0xBD37DBF5, 0x24609D57, -/**/ 0x3FEA8000, 0x00000000, -/**/ 0x3F373289, 0x870AC52E, -/**/ 0x3FC815C0, 0xA1436000, -/**/ 0xBD302A52, 0xF9201CE8, -/**/ 0x3FEA8000, 0x00000000, -/**/ 0xBF34B1FA, 0x9E8684DD, -/**/ 0x3FC83040, 0xC91BC000, -/**/ 0x3D3E5B71, 0xC6E66F32, -/**/ 0x3FEA7800, 0x00000000, -/**/ 0xBEE08AF5, 0xA9267648, -/**/ 0x3FC84ABB, 0x75866000, -/**/ 0xBD3D8DAA, 0xDF4E2BD2, -/**/ 0x3FEA7000, 0x00000000, -/**/ 0x3F33BB67, 0x1A3D927E, -/**/ 0x3FC86530, 0xA8C70000, -/**/ 0x3D398BB0, 0xCB4EA3E3, -/**/ 0x3FEA7000, 0x00000000, -/**/ 0xBF37F2C9, 0x7F2C97F3, -/**/ 0x3FC87FA0, 0x6520C000, -/**/ 0x3D322120, 0x401202FC, -/**/ 0x3FEA6800, 0x00000000, -/**/ 0xBF0C77A5, 0x3C076D20, -/**/ 0x3FC89A0A, 0xACD4E000, -/**/ 0x3D2C0BFB, 0xDA8F5A72, -/**/ 0x3FEA6000, 0x00000000, -/**/ 0x3F30E6DA, 0x7C7EF82B, -/**/ 0x3FC8B46F, 0x82236000, -/**/ 0x3D12D9F2, 0x102DD7C9, -/**/ 0x3FEA6000, 0x00000000, -/**/ 0xBF3A9167, 0x2EC05C44, -/**/ 0x3FC8CECE, 0xE74AE000, -/**/ 0xBD3A5BA0, 0xAA429BB5, -/**/ 0x3FEA5800, 0x00000000, -/**/ 0xBF17DF12, 0xEEB6BD53, -/**/ 0x3FC8E928, 0xDE886000, -/**/ 0x3D3A8154, 0xB13D72D5, -/**/ 0x3FEA5000, 0x00000000, -/**/ 0x3F2D676D, 0x98C70AE6, -/**/ 0x3FC9037D, 0x6A180000, -/**/ 0x3D230DEA, 0x57C1C8D9, -/**/ 0x3FEA5000, 0x00000000, -/**/ 0xBF3C8EFF, 0x96CE4780, -/**/ 0x3FC91DCC, 0x8C340000, -/**/ 0x3D37BC6A, 0xBDDEFF46, -/**/ 0x3FEA4800, 0x00000000, -/**/ 0xBF1EFFCB, 0x71EFFCB7, -/**/ 0x3FC93816, 0x4715A000, -/**/ 0xBD34C63D, 0x6A3A39D9, -/**/ 0x3FEA4000, 0x00000000, -/**/ 0x3F2A41A4, 0x1A41A41A, -/**/ 0x3FC9525A, 0x9CF46000, -/**/ 0xBD329713, 0x7D9F158F, -/**/ 0x3FEA4000, 0x00000000, -/**/ 0xBF3DECBB, 0xBF3B3C0E, -/**/ 0x3FC96C99, 0x9006A000, -/**/ 0x3D2A88D5, 0x9CBB452C, -/**/ 0x3FEA3800, 0x00000000, -/**/ 0xBF21D14E, 0x3BCD35A8, -/**/ 0x3FC986D3, 0x22818000, -/**/ 0x3CF93B56, 0x4DD44000, -/**/ 0x3FEA3000, 0x00000000, -/**/ 0x3F285A0A, 0x3B5832C0, -/**/ 0x3FC9A107, 0x56988000, -/**/ 0x3D264AA6, 0x242CD098, -/**/ 0x3FEA3000, 0x00000000, -/**/ 0xBF3EABC1, 0xD71AFD8C, -/**/ 0x3FC9BB36, 0x2E7E0000, -/**/ 0xBD21F2A8, 0xA1CE0FFC, -/**/ 0x3FEA2800, 0x00000000, -/**/ 0xBF22E60D, 0x7C041611, -/**/ 0x3FC9D55F, 0xAC62E000, -/**/ 0xBD3F4669, 0xFC3B5BC3, -/**/ 0x3FEA2000, 0x00000000, -/**/ 0x3F27AE57, 0x5FF2EF43, -/**/ 0x3FC9EF83, 0xD276A000, -/**/ 0xBD2730B7, 0xB3F9CE00, -/**/ 0x3FEA2000, 0x00000000, -/**/ 0xBF3ECD35, 0x3D66322E, -/**/ 0x3FCA09A2, 0xA2E7A000, -/**/ 0xBD2DD99D, 0xCD411233, -/**/ 0x3FEA1800, 0x00000000, -/**/ 0xBF22C068, 0x5B4FE5E9, -/**/ 0x3FCA23BC, 0x1FE2C000, -/**/ 0xBD3539CD, 0x91DC9F0B, -/**/ 0x3FEA1000, 0x00000000, -/**/ 0x3F283C48, 0x80B67A9A, -/**/ 0x3FCA3DD0, 0x4B938000, -/**/ 0x3D297DA1, 0x366E2C5A, -/**/ 0x3FEA1000, 0x00000000, -/**/ 0xBF3E5236, 0x89907BBA, -/**/ 0x3FCA57DF, 0x28244000, -/**/ 0x3D3B99C8, 0xCA1D9ABB, -/**/ 0x3FEA0800, 0x00000000, -/**/ 0xBF21629E, 0x32054967, -/**/ 0x3FCA71E8, 0xB7BE0000, -/**/ 0xBD210ACA, 0x6EF05323, -/**/ 0x3FEA0000, 0x00000000, -/**/ 0x3F2A01A0, 0x1A01A01A, -/**/ 0x3FCA8BEC, 0xFC882000, -/**/ 0x3D3E3185, 0xCF21B9CF, -/**/ 0x3FEA0000, 0x00000000, -/**/ 0xBF3D3BE3, 0x93FF301D, -/**/ 0x3FCAA5EB, 0xF8A94000, -/**/ 0xBD32A0A9, 0x36951A8F, -/**/ 0x3FE9F800, 0x00000000, -/**/ 0xBF1D9DD1, 0xBFE608ED, -/**/ 0x3FCABFE5, 0xAE462000, -/**/ 0xBD3B68F5, 0x395F139D, -/**/ 0x3FE9F000, 0x00000000, -/**/ 0x3F2CFC26, 0x1B29257F, -/**/ 0x3FCAD9DA, 0x1F828000, -/**/ 0xBD3882B7, 0xC803F050, -/**/ 0x3FE9F000, 0x00000000, -/**/ 0xBF3B8B57, 0x7E613717, -/**/ 0x3FCAF3C9, 0x4E80C000, -/**/ 0xBCBA4E63, 0x3FCD9066, -/**/ 0x3FE9E800, 0x00000000, -/**/ 0xBF160EF9, 0xB9FABD04, -/**/ 0x3FCB0DB3, 0x3D620000, -/**/ 0x3D3FEE14, 0x38EAB906, -/**/ 0x3FE9E000, 0x00000000, -/**/ 0x3F3094D3, 0xEAF850E2, -/**/ 0x3FCB2797, 0xEE464000, -/**/ 0xBD3BE88A, 0x906D00A9, -/**/ 0x3FE9E000, 0x00000000, -/**/ 0xBF3941AA, 0xBBE88FDC, -/**/ 0x3FCB4177, 0x634BA000, -/**/ 0x3D355D01, 0x5666069F, -/**/ 0x3FE9D800, 0x00000000, -/**/ 0xBF083A25, 0x25F4B1AA, -/**/ 0x3FCB5B51, 0x9E8FC000, -/**/ 0xBD34B722, 0xEC011F31, -/**/ 0x3FE9D000, 0x00000000, -/**/ 0x3F3343FB, 0xF71FAC14, -/**/ 0x3FCB7526, 0xA22E4000, -/**/ 0x3D2C0DBF, 0x2E785490, -/**/ 0x3FE9D000, 0x00000000, -/**/ 0xBF365FF3, 0x1965FF32, -/**/ 0x3FCB8EF6, 0x70420000, -/**/ 0x3D387533, 0x321788E0, -/**/ 0x3FE9C800, 0x00000000, -/**/ 0x3EA9C801, 0x9C8019C8, -/**/ 0x3FCBA8C1, 0x0AE46000, -/**/ 0x3D3A32E2, 0x9EEE9D85, -/**/ 0x3FE9C000, 0x00000000, -/**/ 0x3F368A77, 0x25080CE1, -/**/ 0x3FCBC286, 0x742D8000, -/**/ 0x3D39AC53, 0xF39D121C, -/**/ 0x3FE9C000, 0x00000000, -/**/ 0xBF32E743, 0xC54763F2, -/**/ 0x3FCBDC46, 0xAE344000, -/**/ 0x3D3625B4, 0x023D6505, -/**/ 0x3FE9B800, 0x00000000, -/**/ 0x3F0DBD49, 0x8B7424F9, -/**/ 0x3FCBF601, 0xBB0E4000, -/**/ 0x3D2386A9, 0x47C378B5, -/**/ 0x3FE9B000, 0x00000000, -/**/ 0x3F3A6734, 0x00CD9A67, -/**/ 0x3FCC0FB7, 0x9CCFE000, -/**/ 0xBD346FFF, 0x99E8A558, -/**/ 0x3FE9B000, 0x00000000, -/**/ 0xBF2DB15A, 0xAEF25B7C, -/**/ 0x3FCC2968, 0x558C2000, -/**/ 0xBD2CFD73, 0xDEE38A40, -/**/ 0x3FE9A800, 0x00000000, -/**/ 0x3F1FDFEC, 0xC140C073, -/**/ 0x3FCC4313, 0xE754E000, -/**/ 0x3D3279BE, 0x74CAD7D6, -/**/ 0x3FE9A000, 0x00000000, -/**/ 0x3F3ED923, 0xA7DCBEB3, -/**/ 0x3FCC5CBA, 0x543AE000, -/**/ 0x3D20929D, 0xECB454FC, -/**/ 0x3FE9A000, 0x00000000, -/**/ 0xBF246A7B, 0xB256DE2C, -/**/ 0x3FCC765B, 0x9E4D6000, -/**/ 0x3D31AB6B, 0x36976F6C, -/**/ 0x3FE99800, 0x00000000, -/**/ 0x3F299999, 0x9999999A, -/**/ 0x3FCC8FF7, 0xC79AA000, -/**/ 0xBD27794F, 0x689F8434, -/**/ 0x3FE99800, 0x00000000, -/**/ 0xBF3C20C6, 0x3EC03FF3, -/**/ 0x3FCCA98E, 0xD22F6000, -/**/ 0xBCF698C1, 0x8CA209C8, -/**/ 0x3FE99000, 0x00000000, -/**/ 0xBF13F803, 0x31EC07FD, -/**/ 0x3FCCC320, 0xC0176000, -/**/ 0x3D240903, 0x9A653794, -/**/ 0x3FE98800, 0x00000000, -/**/ 0x3F323513, 0x5AC98715, -/**/ 0x3FCCDCAD, 0x935D2000, -/**/ 0xBD0A0FF0, 0x34C9A447, -/**/ 0x3FE98800, 0x00000000, -/**/ 0xBF368793, 0x89F80661, -/**/ 0x3FCCF635, 0x4E09C000, -/**/ 0x3D277123, 0x9A07D55B, -/**/ 0x3FE98000, 0x00000000, -/**/ 0x3EE98019, 0x8019801A, -/**/ 0x3FCD0FB7, 0xF2256000, -/**/ 0xBD0AF52B, 0x20633B29, -/**/ 0x3FE97800, 0x00000000, -/**/ 0x3F382FC6, 0xAB329020, -/**/ 0x3FCD2935, 0x81B6C000, -/**/ 0xBD383270, 0x128AAA5F, -/**/ 0x3FE97800, 0x00000000, -/**/ 0xBF305C4B, 0x962DBFF3, -/**/ 0x3FCD42AD, 0xFEC36000, -/**/ 0xBD175C00, 0xFD804272, -/**/ 0x3FE97000, 0x00000000, -/**/ 0x3F1C9F01, 0x970E4F81, -/**/ 0x3FCD5C21, 0x6B4FC000, -/**/ 0xBD21BA91, 0xBBCA681B, -/**/ 0x3FE96800, 0x00000000, -/**/ 0x3F3EBBE1, 0x049160B8, -/**/ 0x3FCD758F, 0xC95F0000, -/**/ 0xBD15A10A, 0x8B4162AA, -/**/ 0x3FE96800, 0x00000000, -/**/ 0xBF233FE6, 0x9933FE6A, -/**/ 0x3FCD8EF9, 0x1AF32000, -/**/ 0xBD15105F, 0xC364C784, -/**/ 0x3FE96000, 0x00000000, -/**/ 0x3F2C2873, 0xCE078906, -/**/ 0x3FCDA85D, 0x620CE000, -/**/ 0x3D240194, 0xC16CC7EC, -/**/ 0x3FE96000, 0x00000000, -/**/ 0xBF3A27A0, 0xE442936B, -/**/ 0x3FCDC1BC, 0xA0ABE000, -/**/ 0x3D38FAC1, 0xA628CCC6, -/**/ 0x3FE95800, 0x00000000, -/**/ 0xBF029C69, 0x548A97A9, -/**/ 0x3FCDDB16, 0xD8CEA000, -/**/ 0xBD1EEF79, 0x7104B8BC, -/**/ 0x3FE95000, 0x00000000, -/**/ 0x3F35906B, 0x9F74B92D, -/**/ 0x3FCDF46C, 0x0C722000, -/**/ 0x3D3A5E82, 0xB0B79039, -/**/ 0x3FE95000, 0x00000000, -/**/ 0xBF327BBF, 0xF35927BC, -/**/ 0x3FCE0DBC, 0x3D92A000, -/**/ 0x3D359233, 0xF0529BF1, -/**/ 0x3FE94800, 0x00000000, -/**/ 0x3F161F9A, 0xDD3C0CA4, -/**/ 0x3FCE2707, 0x6E2B0000, -/**/ 0xBD3A342C, 0x2AF0003C, -/**/ 0x3FE94000, 0x00000000, -/**/ 0x3F3D9B56, 0x41228A8F, -/**/ 0x3FCE404D, 0xA034C000, -/**/ 0xBD3187EE, 0xE09A2799, -/**/ 0x3FE94000, 0x00000000, -/**/ 0xBF2482F5, 0x598A73F8, -/**/ 0x3FCE598E, 0xD5A88000, -/**/ 0xBD0D134B, 0xCF1E98A1, -/**/ 0x3FE93800, 0x00000000, -/**/ 0x3F2BE2D5, 0x3C1B9728, -/**/ 0x3FCE72CB, 0x107DA000, -/**/ 0x3D1DD48C, 0xCDF5471C, -/**/ 0x3FE93800, 0x00000000, -/**/ 0xBF39CC03, 0x2698CFF3, -/**/ 0x3FCE8C02, 0x52AA6000, -/**/ 0xBD26805B, 0x80E8E6FF, -/**/ 0x3FE93000, 0x00000000, -/**/ 0xBEF79CD3, 0xB9F30358, -/**/ 0x3FCEA534, 0x9E23A000, -/**/ 0x3D381B93, 0x4C73CCB5, -/**/ 0x3FE92800, 0x00000000, -/**/ 0x3F36E803, 0x255BA00D, -/**/ 0x3FCEBE61, 0xF4DD8000, -/**/ 0xBD23D453, 0x30FDCA4D, -/**/ 0x3FE92800, 0x00000000, -/**/ 0xBF30A69B, 0x36077742, -/**/ 0x3FCED78A, 0x58CA8000, -/**/ 0x3D16F1B5, 0x3793387E, -/**/ 0x3FE92000, 0x00000000, -/**/ 0x3F1F693A, 0x1C451AB3, -/**/ 0x3FCEF0AD, 0xCBDC6000, -/**/ 0xBD2B26B7, 0x9C86AF24, -/**/ 0x3FE92000, 0x00000000, -/**/ 0xBF3F9548, 0xC74EA9E2, -/**/ 0x3FCF09CC, 0x50036000, -/**/ 0x3D3DA094, 0x18D999DB, -/**/ 0x3FE91800, 0x00000000, -/**/ 0xBF1BD5A8, 0xF7C46911, -/**/ 0x3FCF22E5, 0xE72F2000, -/**/ 0xBD3F454F, 0x1417E41F, -/**/ 0x3FE91000, 0x00000000, -/**/ 0x3F31B9E1, 0x0D83D1C6, -/**/ 0x3FCF3BFA, 0x934D6000, -/**/ 0x3D2D9F2A, 0x937B903B, -/**/ 0x3FE91000, 0x00000000, -/**/ 0xBF35876F, 0xF3795877, -/**/ 0x3FCF550A, 0x564B8000, -/**/ 0xBD2323E3, 0xA09202FE, -/**/ 0x3FE90800, 0x00000000, -/**/ 0x3F0A34CD, 0xBD1D87EC, -/**/ 0x3FCF6E15, 0x32154000, -/**/ 0xBD3C9A97, 0x7AC4EC74, -/**/ 0x3FE90000, 0x00000000, -/**/ 0x3F3C23F5, 0x0E760899, -/**/ 0x3FCF871B, 0x28956000, -/**/ 0xBD3F75FD, 0x6A526EFE, -/**/ 0x3FE90000, 0x00000000, -/**/ 0xBF25DECD, 0xD0BE9594, -/**/ 0x3FCFA01C, 0x3BB58000, -/**/ 0xBD1A1F71, 0xFAE1D786, -/**/ 0x3FE8F800, 0x00000000, -/**/ 0x3F2C18F9, 0xC18F9C19, -/**/ 0x3FCFB918, 0x6D5E4000, -/**/ 0xBD0D572A, 0xAB993C87, -/**/ 0x3FE8F800, 0x00000000, -/**/ 0xBF38E868, 0x8176594C, -/**/ 0x3FCFD20F, 0xBF770000, -/**/ 0xBD11C55B, 0x72C6FE70, -/**/ 0x3FE8F000, 0x00000000, -/**/ 0x3EC8F006, 0x3C018F00, -/**/ 0x3FCFEB02, 0x33E60000, -/**/ 0x3D2F316E, 0x32D5E8C7, -/**/ 0x3FE8E800, 0x00000000, -/**/ 0x3F395B4D, 0xAD115384, -/**/ 0x3FD001F7, 0xE6484000, -/**/ 0x3D38A957, 0x40C9ABBC, -/**/ 0x3FE8E800, 0x00000000, -/**/ 0xBF2AD850, 0xEC8C0F90, -/**/ 0x3FD00E6C, 0x45AD5000, -/**/ 0x3CDCC68D, 0x52E01203, -/**/ 0x3FE8E000, 0x00000000, -/**/ 0x3F27B6E9, 0xA56B1AA1, -/**/ 0x3FD01ADE, 0x3913A000, -/**/ 0xBD108930, 0xCCDC1521, -/**/ 0x3FE8E000, 0x00000000, -/**/ 0xBF3ACDE3, 0x40DFC1D8, -/**/ 0x3FD0274D, 0xC16C2000, -/**/ 0x3D2979E8, 0x9CF835C2, -/**/ 0x3FE8D800, 0x00000000, -/**/ 0xBEF68397, 0x317DF64C, -/**/ 0x3FD033BA, 0xDFA74000, -/**/ 0x3D0C30BC, 0x1485BDFF, -/**/ 0x3FE8D000, 0x00000000, -/**/ 0x3F380C69, 0x80C6980C, -/**/ 0x3FD04025, 0x94B4D000, -/**/ 0x3CF036B8, 0x9EF42D7F, -/**/ 0x3FE8D000, 0x00000000, -/**/ 0xBF2CE006, 0x338C7FE7, -/**/ 0x3FD04C8D, 0xE1842000, -/**/ 0xBD1FE6BA, 0x512CEB86, -/**/ 0x3FE8C800, 0x00000000, -/**/ 0x3F2644F0, 0x1EFBBD63, -/**/ 0x3FD058F3, 0xC703F000, -/**/ 0xBD30E866, 0xBCD236AD, -/**/ 0x3FE8C800, 0x00000000, -/**/ 0xBF3B3C2D, 0xAA79217A, -/**/ 0x3FD06557, 0x46227000, -/**/ 0x3D0131DF, 0xB4868D6A, -/**/ 0x3FE8C000, 0x00000000, -/**/ 0xBEF8BFCE, 0x8062FF3A, -/**/ 0x3FD071B8, 0x5FCD6000, -/**/ 0xBD3BCB8B, 0xA3E01A11, -/**/ 0x3FE8B800, 0x00000000, -/**/ 0x3F383301, 0xBD2672C4, -/**/ 0x3FD07E17, 0x14F1D000, -/**/ 0xBD3EFCC6, 0x4F384BD5, -/**/ 0x3FE8B800, 0x00000000, -/**/ 0xBF2BFE74, 0x9BFE749C, -/**/ 0x3FD08A73, 0x667C5000, -/**/ 0x3D3EBC1D, 0x40C5A329, -/**/ 0x3FE8B000, 0x00000000, -/**/ 0x3F27BA8C, 0xD4353EB3, -/**/ 0x3FD096CD, 0x55591000, -/**/ 0x3D3F998D, 0x20550A31, -/**/ 0x3FE8B000, 0x00000000, -/**/ 0xBF3A3784, 0xA062B2E4, -/**/ 0x3FD0A324, 0xE2739000, -/**/ 0x3D0C6BEE, 0x7EF4030E, -/**/ 0x3FE8A800, 0x00000000, -/**/ 0xBECED1F6, 0x5E630281, -/**/ 0x3FD0AF7A, 0x0EB6C000, -/**/ 0x3D23CCF9, 0x4945ADAD, -/**/ 0x3FE8A000, 0x00000000, -/**/ 0x3F39CAE0, 0x0C519CAE, -/**/ 0x3FD0BBCC, 0xDB0D2000, -/**/ 0x3D32F32C, 0xCC5DCDFB, -/**/ 0x3FE8A000, 0x00000000, -/**/ 0xBF283C02, 0x4EDBA5FD, -/**/ 0x3FD0C81D, 0x4860B000, -/**/ 0xBD3E5BCF, 0x401D1731, -/**/ 0x3FE89800, 0x00000000, -/**/ 0x3F2C0F60, 0x1899C0F6, -/**/ 0x3FD0D46B, 0x579AB000, -/**/ 0x3D3D2C81, 0xF640E1E6, -/**/ 0x3FE89800, 0x00000000, -/**/ 0xBF37C414, 0xBDBE51D0, -/**/ 0x3FD0E0B7, 0x09A43000, -/**/ 0x3D32A038, 0xA7862F2A, -/**/ 0x3FE89000, 0x00000000, -/**/ 0x3F03F540, 0xDD12CE7D, -/**/ 0x3FD0ED00, 0x5F658000, -/**/ 0xBD22DC75, 0x285AA803, -/**/ 0x3FE88800, 0x00000000, -/**/ 0x3F3CCFDE, 0x400C45CD, -/**/ 0x3FD0F947, 0x59C67000, -/**/ 0xBD395261, 0x7F0818B6, -/**/ 0x3FE88800, 0x00000000, -/**/ 0xBF21A0F5, 0x44FB66B5, -/**/ 0x3FD1058B, 0xF9AE5000, -/**/ 0xBD34AB9D, 0x817D52CD, -/**/ 0x3FE88000, 0x00000000, -/**/ 0x3F319D95, 0x2866A138, -/**/ 0x3FD111CE, 0x4003F000, -/**/ 0xBD1B3237, 0x096B4B6B, -/**/ 0x3FE88000, 0x00000000, -/**/ 0xBF33E5FA, 0xA48B49DA, -/**/ 0x3FD11E0E, 0x2DADA000, -/**/ 0xBD2A47F8, 0x8FCCE5BA, -/**/ 0x3FE87800, 0x00000000, -/**/ 0x3F1A9336, 0xDEECB0A8, -/**/ 0x3FD12A4B, 0xC3912000, -/**/ 0xBD35A750, 0x61473259, -/**/ 0x3FE87800, 0x00000000, -/**/ 0xBF3EC219, 0xFB6A388D, -/**/ 0x3FD13687, 0x0293B000, -/**/ 0xBD3D3E84, 0x99D67123, -/**/ 0x3FE87000, 0x00000000, -/**/ 0xBF106AE7, 0xC1625090, -/**/ 0x3FD142BF, 0xEB9A0000, -/**/ 0x3D31CE61, 0x85B58A9E, -/**/ 0x3FE86800, 0x00000000, -/**/ 0x3F369AE5, 0xACD4200C, -/**/ 0x3FD14EF6, 0x7F887000, -/**/ 0xBD3E97A6, 0x5DFC9794, -/**/ 0x3FE86800, 0x00000000, -/**/ 0xBF2D4286, 0x9389D11C, -/**/ 0x3FD15B2A, 0xBF429000, -/**/ 0xBD2D8E3B, 0x49B629B2, -/**/ 0x3FE86000, 0x00000000, -/**/ 0x3F286186, 0x18618618, -/**/ 0x3FD1675C, 0xABABA000, -/**/ 0x3D38380E, 0x731F55C4, -/**/ 0x3FE86000, 0x00000000, -/**/ 0xBF38EF0F, 0x6AC71708, -/**/ 0x3FD1738C, 0x45A67000, -/**/ 0xBD39C6E9, 0x0032C176, -/**/ 0x3FE85800, 0x00000000, -/**/ 0x3EFFF3D3, 0xE00C2C20, -/**/ 0x3FD17FB9, 0x8E151000, -/**/ 0xBD3A8A8B, 0xA74A2684, -/**/ 0x3FE85000, 0x00000000, -/**/ 0x3F3CFBA0, 0xF9592266, -/**/ 0x3FD18BE4, 0x85D93000, -/**/ 0x3D3C167F, 0x6F3604AB, -/**/ 0x3FE85000, 0x00000000, -/**/ 0xBF1FE7B0, 0xFF3D87FA, -/**/ 0x3FD1980D, 0x2DD42000, -/**/ 0x3D2B7B3A, 0x7A361C9A, -/**/ 0x3FE84800, 0x00000000, -/**/ 0x3F331E8D, 0x918DC223, -/**/ 0x3FD1A433, 0x86E68000, -/**/ 0xBD07A850, 0x634E0AAC, -/**/ 0x3FE84800, 0x00000000, -/**/ 0xBF31BAF9, 0x8D76B549, -/**/ 0x3FD1B057, 0x91F08000, -/**/ 0xBD32DD46, 0x6DC55E2D, -/**/ 0x3FE84000, 0x00000000, -/**/ 0x3F22F2EC, 0xDC90C512, -/**/ 0x3FD1BC79, 0x4FD1D000, -/**/ 0xBD3CCF0C, 0x747BA7BE, -/**/ 0x3FE84000, 0x00000000, -/**/ 0xBF3B442A, 0x6A0916B9, -/**/ 0x3FD1C898, 0xC169A000, -/**/ 0xBD381410, 0xE5C62AFF, -/**/ 0x3FE83800, 0x00000000, -/**/ 0x3EA83801, 0x83801838, -/**/ 0x3FD1D4B5, 0xE796A000, -/**/ 0x3D222A5B, 0xD197BAC2, -/**/ 0x3FE83000, 0x00000000, -/**/ 0x3F3B6A41, 0xCBD11C5C, -/**/ 0x3FD1E0D0, 0xC3371000, -/**/ 0x3D3AF8F2, 0xA9B0D4A0, -/**/ 0x3FE83000, 0x00000000, -/**/ 0xBF225381, 0xCB7A3CD6, -/**/ 0x3FD1ECE9, 0x5528B000, -/**/ 0xBD184E7B, 0x09B4A3B8, -/**/ 0x3FE82800, 0x00000000, -/**/ 0x3F32500C, 0x152500C1, -/**/ 0x3FD1F8FF, 0x9E48A000, -/**/ 0x3D27946C, 0x040CBE77, -/**/ 0x3FE82800, 0x00000000, -/**/ 0xBF32285F, 0x14902134, -/**/ 0x3FD20513, 0x9F73B000, -/**/ 0x3CF6E15E, 0x1609E0A4, -/**/ 0x3FE82000, 0x00000000, -/**/ 0x3F22D9EB, 0xA4018213, -/**/ 0x3FD21125, 0x59861000, -/**/ 0x3D382E78, 0xBA2950C4, -/**/ 0x3FE82000, 0x00000000, -/**/ 0xBF3AEFFC, 0xFC6BBFF4, -/**/ 0x3FD21D34, 0xCD5B9000, -/**/ 0x3D3B552F, 0xB28BADAA, -/**/ 0x3FE81800, 0x00000000, -/**/ 0x3EE81818, 0x18181818, -/**/ 0x3FD22941, 0xFBCF8000, -/**/ 0xBD3A6976, 0xF5EB0963, -/**/ 0x3FE81000, 0x00000000, -/**/ 0x3F3C7F27, 0x4FF0F3C6, -/**/ 0x3FD2354C, 0xE5BC9000, -/**/ 0xBD3D78ED, 0x0602A663, -/**/ 0x3FE81000, 0x00000000, -/**/ 0xBF1ED344, 0x0A86941D, -/**/ 0x3FD24155, 0x8BFD1000, -/**/ 0x3D300FFF, 0x3228FCAD, -/**/ 0x3FE80800, 0x00000000, -/**/ 0x3F3424D0, 0x1B0BD52D, -/**/ 0x3FD24D5B, 0xEF6AF000, -/**/ 0xBCBDD780, 0xFC9FABDD, -/**/ 0x3FE80800, 0x00000000, -/**/ 0xBF2FE7F9, 0xFE7F9FE8, -/**/ 0x3FD25960, 0x10DF7000, -/**/ 0x3D38E7BC, 0x224EA3E3, -/**/ 0x3FE80000, 0x00000000, -/**/ 0x3F280180, 0x18018018, -/**/ 0x3FD26561, 0xF1338000, -/**/ 0x3D38B488, 0x66FAA45F, -/**/ 0x3FE80000, 0x00000000, -/**/ 0xBF37FD00, 0x5FF40180, -/**/ 0x3FD27161, 0x913F8000, -/**/ 0x3D34F4F1, 0xF61564B4, -/**/ 0x3FE7F800, 0x00000000, -/**/ 0x3F104AE8, 0x9750B6C7, -/**/ 0x3FD27D5E, 0xF1DB6000, -/**/ 0xBD092374, 0x78CAC9F4, -/**/ 0x3FE7F800, 0x00000000, -/**/ 0xBF3FD017, 0xF405FD01, -/**/ 0x3FD2895A, 0x13DE8000, -/**/ 0x3D3A8D7A, 0xD24C13F0, -/**/ 0x3FE7F000, 0x00000000, -/**/ 0xBF0D2BF1, 0xC9C5485E, -/**/ 0x3FD29552, 0xF81FF000, -/**/ 0x3D348D30, 0x1771C408, -/**/ 0x3FE7E800, 0x00000000, -/**/ 0x3F38927F, 0xD029DB60, -/**/ 0x3FD2A149, 0x9F763000, -/**/ 0xBD30DBBF, 0x51F3AADC, -/**/ 0x3FE7E800, 0x00000000, -/**/ 0xBF26504A, 0xB0A45169, -/**/ 0x3FD2AD3E, 0x0AB73000, -/**/ 0x3D2B972E, 0x488C359F, -/**/ 0x3FE7E000, 0x00000000, -/**/ 0x3F312A8A, 0xD278E8DD, -/**/ 0x3FD2B930, 0x3AB8A000, -/**/ 0xBD26DB12, 0xD6BFB0A5, -/**/ 0x3FE7E000, 0x00000000, -/**/ 0xBF327577, 0x24BB32E7, -/**/ 0x3FD2C520, 0x304F8000, -/**/ 0x3D230852, 0x8C342F39, -/**/ 0x3FE7D800, 0x00000000, -/**/ 0x3F23EF9A, 0xA4B45AEC, -/**/ 0x3FD2D10D, 0xEC508000, -/**/ 0x3D360C61, 0xF7088353, -/**/ 0x3FE7D800, 0x00000000, -/**/ 0xBF398DAF, 0x32748CC1, -/**/ 0x3FD2DCF9, 0x6F8FD000, -/**/ 0x3D20B4A2, 0x8E33C9CE, -/**/ 0x3FE7D000, 0x00000000, -/**/ 0x3F07D05F, 0x417D05F4, -/**/ 0x3FD2E8E2, 0xBAE12000, -/**/ 0xBD267B1E, 0x99B72BD8, -/**/ 0x3FE7C800, 0x00000000, -/**/ 0x3F3F8EF7, 0x431D3027, -/**/ 0x3FD2F4C9, 0xCF17A000, -/**/ 0x3D371F04, 0x9374B87B, -/**/ 0x3FE7C800, 0x00000000, -/**/ 0xBF0E77A3, 0xDAD83E6C, -/**/ 0x3FD300AE, 0xAD063000, -/**/ 0x3D342F56, 0x8B75FCAC, -/**/ 0x3FE7C000, 0x00000000, -/**/ 0x3F38E041, 0x588D1676, -/**/ 0x3FD30C91, 0x557F2000, -/**/ 0xBD142958, 0xA1451755, -/**/ 0x3FE7C000, 0x00000000, -/**/ 0xBF24C6DD, 0x1FE8414C, -/**/ 0x3FD31871, 0xC9544000, -/**/ 0x3D184FAB, 0x94CECFD9, -/**/ 0x3FE7B800, 0x00000000, -/**/ 0x3F3265F4, 0x81C2D3B2, -/**/ 0x3FD32450, 0x09570000, -/**/ 0x3D3D271B, 0x9BDAE59D, -/**/ 0x3FE7B800, 0x00000000, -/**/ 0xBF30C39C, 0xB6466407, -/**/ 0x3FD3302C, 0x16586000, -/**/ 0x3D36217D, 0xC2A3E08B, -/**/ 0x3FE7B000, 0x00000000, -/**/ 0x3F283FAD, 0x12B21224, -/**/ 0x3FD33C05, 0xF128E000, -/**/ 0xBD22B906, 0x380E1A7D, -/**/ 0x3FE7B000, 0x00000000, -/**/ 0xBF36EFB8, 0xF899E55D, -/**/ 0x3FD347DD, 0x9A988000, -/**/ 0xBD25594D, 0xD4C58092, -/**/ 0x3FE7A800, 0x00000000, -/**/ 0x3F1836B6, 0x3FF42B9F, -/**/ 0x3FD353B3, 0x1376E000, -/**/ 0xBD1331AF, 0xE6C26D9B, -/**/ 0x3FE7A800, 0x00000000, -/**/ 0xBF3CE7FD, 0x0B739FF4, -/**/ 0x3FD35F86, 0x5C933000, -/**/ 0xBD3B07DE, 0x4EA1A54A, -/**/ 0x3FE7A000, 0x00000000, -/**/ 0x3EC7A005, 0xE8017A00, -/**/ 0x3FD36B57, 0x76BC1000, -/**/ 0x3D116978, 0x5A9C223F, -/**/ 0x3FE79800, 0x00000000, -/**/ 0x3F3D535D, 0xB1CC5B7B, -/**/ 0x3FD37726, 0x62BFE000, -/**/ 0xBD3E9436, 0xAC53B023, -/**/ 0x3FE79800, 0x00000000, -/**/ 0xBF15EEAC, 0xE0DA37A9, -/**/ 0x3FD382F3, 0x216C5000, -/**/ 0xBD1061D2, 0x1D1A7F6D, -/**/ 0x3FE79000, 0x00000000, -/**/ 0x3F37C21E, 0x344E16D6, -/**/ 0x3FD38EBD, 0xB38ED000, -/**/ 0x3D290582, 0xE67D4CA0, -/**/ 0x3FE79000, 0x00000000, -/**/ 0xBF25E69A, 0x39C9E465, -/**/ 0x3FD39A86, 0x19F45000, -/**/ 0x3D18EE51, 0x937354F5, -/**/ 0x3FE78800, 0x00000000, -/**/ 0x3F32640B, 0xC52640BC, -/**/ 0x3FD3A64C, 0x55694000, -/**/ 0x3D37A71C, 0xBCD735D0, -/**/ 0x3FE78800, 0x00000000, -/**/ 0xBF3037DE, 0x2F6A09ED, -/**/ 0x3FD3B210, 0x66B9C000, -/**/ 0xBD33C1ED, 0x9811560E, -/**/ 0x3FE78000, 0x00000000, -/**/ 0x3F2A71DC, 0x01781A72, -/**/ 0x3FD3BDD2, 0x4EB15000, -/**/ 0xBD3257B4, 0x970E6ED9, -/**/ 0x3FE78000, 0x00000000, -/**/ 0xBF354996, 0xA9EEBFF4, -/**/ 0x3FD3C992, 0x0E1B2000, -/**/ 0x3D141C28, 0xAA680B76, -/**/ 0x3FE77800, 0x00000000, -/**/ 0x3F208119, 0xAC60D341, -/**/ 0x3FD3D54F, 0xA5C1F000, -/**/ 0x3D3C3E1C, 0xD9A395E3, -/**/ 0x3FE77800, 0x00000000, -/**/ 0xBF3A28AE, 0x742E2DD0, -/**/ 0x3FD3E10B, 0x16701000, -/**/ 0x3D3F3BCF, 0x145429C7, -/**/ 0x3FE77000, 0x00000000, -/**/ 0x3F0BD584, 0x36340177, -/**/ 0x3FD3ECC4, 0x60EF6000, -/**/ 0xBD060286, 0x27C1300F, -/**/ 0x3FE77000, 0x00000000, -/**/ 0xBF3ED55D, 0x240C7174, -/**/ 0x3FD3F87B, 0x86094000, -/**/ 0xBD35DFD7, 0x54589889, -/**/ 0x3FE76800, 0x00000000, -/**/ 0xBEF18DE5, 0xAB277F45, -/**/ 0x3FD40430, 0x8686A000, -/**/ 0x3D3F8EF4, 0x3049F7D3, -/**/ 0x3FE76000, 0x00000000, -/**/ 0x3F3CB026, 0x01D3C7B8, -/**/ 0x3FD40FE3, 0x63303000, -/**/ 0x3D3E5C5F, 0xE79F05C6, -/**/ 0x3FE76000, 0x00000000, -/**/ 0xBF15E95B, 0xA9D08664, -/**/ 0x3FD41B94, 0x1CCE1000, -/**/ 0xBD304690, 0x13E43FC9, -/**/ 0x3FE75800, 0x00000000, -/**/ 0x3F3867A4, 0x097CFD43, -/**/ 0x3FD42742, 0xB427E000, -/**/ 0xBD398727, 0x02B82675, -/**/ 0x3FE75800, 0x00000000, -/**/ 0xBF2353DF, 0xE8A9353E, -/**/ 0x3FD432EF, 0x2A04F000, -/**/ 0xBD3FB129, 0x931715AD, -/**/ 0x3FE75000, 0x00000000, -/**/ 0x3F3450E6, 0x4F13DC4A, -/**/ 0x3FD43E99, 0x7F2C1000, -/**/ 0x3D1C3F72, 0x40C41A04, -/**/ 0x3FE75000, 0x00000000, -/**/ 0xBF2B4FBF, 0xE8B1B4FC, -/**/ 0x3FD44A41, 0xB463C000, -/**/ 0x3D31EE28, 0xF37CF612, -/**/ 0x3FE74800, 0x00000000, -/**/ 0x3F306BB6, 0x7E458100, -/**/ 0x3FD455E7, 0xCA720000, -/**/ 0x3D1AD8C6, 0x36629AED, -/**/ 0x3FE74800, 0x00000000, -/**/ 0xBF31745D, 0x1745D174, -/**/ 0x3FD4618B, 0xC21C6000, -/**/ 0xBD13D82F, 0x484C84CC, -/**/ 0x3FE74000, 0x00000000, -/**/ 0x3F296FBD, 0x236DEC04, -/**/ 0x3FD46D2D, 0x9C280000, -/**/ 0x3D359B27, 0x5F67F75A, -/**/ 0x3FE74000, 0x00000000, -/**/ 0xBF350F9D, 0x3B304B87, -/**/ 0x3FD478CD, 0x5959B000, -/**/ 0x3D2EC89B, 0xF0C8D098, -/**/ 0x3FE73800, 0x00000000, -/**/ 0x3F226A51, 0xA4EBDC70, -/**/ 0x3FD4846A, 0xFA75C000, -/**/ 0xBD263EA2, 0xE3798DCE, -/**/ 0x3FE73800, 0x00000000, -/**/ 0xBF3879D5, 0xF00B9A78, -/**/ 0x3FD49006, 0x80401000, -/**/ 0xBD38BCCF, 0xFE1A0F8C, -/**/ 0x3FE73000, 0x00000000, -/**/ 0x3F178D7F, 0x5DAAD90C, -/**/ 0x3FD49B9F, 0xEB7C1000, -/**/ 0x3D3DAC1C, 0x58AB60D7, -/**/ 0x3FE73000, 0x00000000, -/**/ 0xBF3BB33C, 0x783709C7, -/**/ 0x3FD4A737, 0x3CED0000, -/**/ 0xBD39A234, 0xEBF35449, -/**/ 0x3FE72800, 0x00000000, -/**/ 0x3F061274, 0x265AD23A, -/**/ 0x3FD4B2CC, 0x75556000, -/**/ 0xBD380FCB, 0xC78BFA4B, -/**/ 0x3FE72800, 0x00000000, -/**/ 0xBF3EBC05, 0xC90A1FD2, -/**/ 0x3FD4BE5F, 0x95778000, -/**/ 0xBD3D7C92, 0xCD9AD824, -/**/ 0x3FE72000, 0x00000000, -/**/ 0xBEC71FFA, 0x38017200, -/**/ 0x3FD4C9F0, 0x9E153000, -/**/ 0xBD2E1DDE, 0x70E02DE0, -/**/ 0x3FE71800, 0x00000000, -/**/ 0x3F3E6B99, 0x74A050E1, -/**/ 0x3FD4D57F, 0x8FEFE000, -/**/ 0x3D23F926, 0x7FD06868, -/**/ 0x3FE71800, 0x00000000, -/**/ 0xBF077400, 0xB8BD1180, -/**/ 0x3FD4E10C, 0x6BC8A000, -/**/ 0x3CF8283F, 0x1636F061, -/**/ 0x3FE71000, 0x00000000, -/**/ 0x3F3BC36C, 0xE3E0453A, -/**/ 0x3FD4EC97, 0x32600000, -/**/ 0x3D234D7A, 0xAF04D104, -/**/ 0x3FE71000, 0x00000000, -/**/ 0xBF15FA98, 0x6935DDC5, -/**/ 0x3FD4F81F, 0xE4764000, -/**/ 0xBD27FCF6, 0x434FF08D, -/**/ 0x3FE70800, 0x00000000, -/**/ 0x3F394B40, 0x7337CF08, -/**/ 0x3FD503A6, 0x82CB2000, -/**/ 0xBD2A68C8, 0xF16F9B5D, -/**/ 0x3FE70800, 0x00000000, -/**/ 0xBF1F7B97, 0xA835403A, -/**/ 0x3FD50F2B, 0x0E1E0000, -/**/ 0x3D3A0940, 0x8C47B8D8, -/**/ 0x3FE70000, 0x00000000, -/**/ 0x3F3702E0, 0x5C0B8170, -/**/ 0x3FD51AAD, 0x872E0000, -/**/ 0xBD3F4BD8, 0xDB0A7CC1, -/**/ 0x3FE70000, 0x00000000, -/**/ 0xBF241EE6, 0x4F67A855, -/**/ 0x3FD5262D, 0xEEB99000, -/**/ 0xBD3E1B9F, 0x70894A01, -/**/ 0x3FE6F800, 0x00000000, -/**/ 0x3F34EA19, 0x221C0170, -/**/ 0x3FD531AC, 0x457EE000, -/**/ 0x3D3DF83B, 0x7D931501, -/**/ 0x3FE6F800, 0x00000000, -/**/ 0xBF282102, 0x5508CA5C, -/**/ 0x3FD53D28, 0x8C3BE000, -/**/ 0xBD111397, 0xEB6DFAC5, -/**/ 0x3FE6F000, 0x00000000, -/**/ 0x3F3300B7, 0x9300B793, -/**/ 0x3FD548A2, 0xC3ADD000, -/**/ 0x3D23167E, 0x63081CF7, -/**/ 0x3FE6F000, 0x00000000, -/**/ 0xBF2BC486, 0x005BB90F, -/**/ 0x3FD5541A, 0xEC91C000, -/**/ 0xBCF816AA, 0xDC72EEBA, -/**/ 0x3FE6E800, 0x00000000, -/**/ 0x3F314688, 0xC5A3A00B, -/**/ 0x3FD55F91, 0x07A44000, -/**/ 0xBD11E647, 0x78DF4A62, -/**/ 0x3FE6E800, 0x00000000, -/**/ 0xBF2F09D6, 0xDA9C5AE1, -/**/ 0x3FD56B05, 0x15A18000, -/**/ 0x3D29247B, 0xBC4A23FC, -/**/ 0x3FE6E000, 0x00000000, -/**/ 0x3F2F76B4, 0x337C6CB1, -/**/ 0x3FD57677, 0x17456000, -/**/ 0xBD364EAD, 0x9524D7CA, -/**/ 0x3FE6E000, 0x00000000, -/**/ 0xBF30F8AC, 0xEDF4EC87, -/**/ 0x3FD581E7, 0x0D4B3000, -/**/ 0xBD1F31E1, 0xB12D8F1D, -/**/ 0x3FE6D800, 0x00000000, -/**/ 0x3F2CBDF2, 0x6EAEF381, -/**/ 0x3FD58D54, 0xF86E0000, -/**/ 0x3D2791F3, 0x0A795215, -/**/ 0x3FE6D800, 0x00000000, -/**/ 0xBF323DB9, 0xB624BFF5, -/**/ 0x3FD598C0, 0xD9688000, -/**/ 0xBD385F49, 0x70D96DA4, -/**/ 0x3FE6D000, 0x00000000, -/**/ 0x3F2A6268, 0x1C860FB0, -/**/ 0x3FD5A42A, 0xB0F4D000, -/**/ 0xBCDE63AF, 0x2DF7BA69, -/**/ 0x3FE6D000, 0x00000000, -/**/ 0xBF335443, 0xB253BAE1, -/**/ 0x3FD5AF92, 0x7FCCE000, -/**/ 0xBD1C032F, 0xF5FFC77A, -/**/ 0x3FE6C800, 0x00000000, -/**/ 0x3F2863B1, 0xAB4294D4, -/**/ 0x3FD5BAF8, 0x46AA2000, -/**/ 0xBD339AE8, 0xF873FA41, -/**/ 0x3FE6C800, 0x00000000, -/**/ 0xBF343C7C, 0x87EAA6DF, -/**/ 0x3FD5C65C, 0x0645A000, -/**/ 0xBD39FE06, 0x0180EE65, -/**/ 0x3FE6C000, 0x00000000, -/**/ 0x3F26C16C, 0x16C16C17, -/**/ 0x3FD5D1BD, 0xBF581000, -/**/ 0xBD38D6BD, 0xC9C7C238, -/**/ 0x3FE6C000, 0x00000000, -/**/ 0xBF34F695, 0x95C33E00, -/**/ 0x3FD5DD1D, 0x7299C000, -/**/ 0xBD38AF61, 0x8815CE17, -/**/ 0x3FE6B800, 0x00000000, -/**/ 0x3F257B34, 0xE7802D73, -/**/ 0x3FD5E87B, 0x20C29000, -/**/ 0x3D3527D1, 0x8F7738FA, -/**/ 0x3FE6B800, 0x00000000, -/**/ 0xBF3582BF, 0xF4A5582C, -/**/ 0x3FD5F3D6, 0xCA8A2000, -/**/ 0x3D37AF84, 0x8E19CC75, -/**/ 0x3FE6B000, 0x00000000, -/**/ 0x3F2490AA, 0x31A3CFC7, -/**/ 0x3FD5FF30, 0x70A79000, -/**/ 0x3D2E9E43, 0x9F105039, -/**/ 0x3FE6B000, 0x00000000, -/**/ 0xBF35E12C, 0x77C30E5A, -/**/ 0x3FD60A88, 0x13D1A000, -/**/ 0x3D36E9B9, 0xC879AF55, -/**/ 0x3FE6A800, 0x00000000, -/**/ 0x3F24016A, 0x94016A94, -/**/ 0x3FD615DD, 0xB4BEC000, -/**/ 0x3D13C7CA, 0x90BC04B2, -/**/ 0x3FE6A800, 0x00000000, -/**/ 0xBF36120B, 0xAD33D63F, -/**/ 0x3FD62131, 0x5424F000, -/**/ 0xBD3382FC, 0x4AA68669, -/**/ 0x3FE6A000, 0x00000000, -/**/ 0x3F23CD15, 0x3729043E, -/**/ 0x3FD62C82, 0xF2B9C000, -/**/ 0x3D3E54BD, 0xBD7C8A98 } }; - -static const union {int4 i[4350]; double x[2175]; } vj = { .i = { -/**/ 0x3F46A400, 0x7D161C28, -/**/ 0xBF46A200, 0x20600000, -/**/ 0x3D27DC4E, 0xAA7623D9, -/**/ 0x3F4693FA, 0xD596E639, -/**/ 0xBF4691FD, 0x4CE00000, -/**/ 0x3D26B0CF, 0x29C3F0AD, -/**/ 0x3F4683F5, 0x3219CE89, -/**/ 0xBF4681FA, 0x7B600000, -/**/ 0x3D22B290, 0x95B9FDCC, -/**/ 0x3F4673EF, 0x929ED397, -/**/ 0xBF4671F7, 0xABE00000, -/**/ 0x3D17C727, 0xFA2F2D87, -/**/ 0x3F4663E9, 0xF725F3E2, -/**/ 0xBF4661F4, 0xDE600000, -/**/ 0x3CF22ED3, 0x6EDBFF1C, -/**/ 0x3F4653E4, 0x5FAF2DE9, -/**/ 0xBF4651F2, 0x12E00000, -/**/ 0xBD144936, 0x157812BB, -/**/ 0x3F4643DE, 0xCC3A802B, -/**/ 0xBF4641EF, 0x49600000, -/**/ 0xBD2959CB, 0x60314E05, -/**/ 0x3F4633D9, 0x3CC7E927, -/**/ 0xBF4631EC, 0x81E00000, -/**/ 0xBD35ABDA, 0xC3638E99, -/**/ 0x3F4623D3, 0xB157675C, -/**/ 0xBF4621E9, 0xBC800000, -/**/ 0x3D3FF1D3, 0xC63F9A21, -/**/ 0x3F4613CE, 0x29E8F948, -/**/ 0xBF4611E6, 0xF9000000, -/**/ 0x3D342D26, 0x71EEE611, -/**/ 0x3F4603C8, 0xA67C9D6B, -/**/ 0xBF4601E4, 0x37800000, -/**/ 0x3D1C1C77, 0x11A09689, -/**/ 0x3F45F3C3, 0x27125244, -/**/ 0xBF45F1E1, 0x78000000, -/**/ 0xBD1DFD16, 0xF7DC643C, -/**/ 0x3F45E3BD, 0xABAA1651, -/**/ 0xBF45E1DE, 0xBA800000, -/**/ 0xBD376503, 0x91318A02, -/**/ 0x3F45D3B8, 0x3443E812, -/**/ 0xBF45D1DB, 0xFF200000, -/**/ 0x3D3756E4, 0xCE55DCDD, -/**/ 0x3F45C3B2, 0xC0DFC606, -/**/ 0xBF45C1D9, 0x45A00000, -/**/ 0x3D12D5CF, 0x8F6F8FA0, -/**/ 0x3F45B3AD, 0x517DAEAB, -/**/ 0xBF45B1D6, 0x8E200000, -/**/ 0xBD2E90AB, 0x9B85DC2C, -/**/ 0x3F45A3A7, 0xE61DA081, -/**/ 0xBF45A1D3, 0xD8C00000, -/**/ 0x3D3B5E88, 0x3BF5AC54, -/**/ 0x3F4593A2, 0x7EBF9A07, -/**/ 0xBF4591D1, 0x25400000, -/**/ 0x3D12AC3A, 0x0C86DDB1, -/**/ 0x3F45839D, 0x1B6399BB, -/**/ 0xBF4581CE, 0x73C00000, -/**/ 0xBD3361C2, 0x76830985, -/**/ 0x3F457397, 0xBC099E1C, -/**/ 0xBF4571CB, 0xC4600000, -/**/ 0x3D333915, 0xD062EBFF, -/**/ 0x3F456392, 0x60B1A5AA, -/**/ 0xBF4561C9, 0x16E00000, -/**/ 0xBD1E0DA0, 0x9CC4988F, -/**/ 0x3F45538D, 0x095BAEE4, -/**/ 0xBF4551C6, 0x6B800000, -/**/ 0x3D3C69C4, 0x235BC18A, -/**/ 0x3F454387, 0xB607B848, -/**/ 0xBF4541C3, 0xC2000000, -/**/ 0xBCEFCC99, 0xF7737723, -/**/ 0x3F453382, 0x66B5C056, -/**/ 0xBF4531C1, 0x1A800000, -/**/ 0xBD3FBAE2, 0x809CBCBB, -/**/ 0x3F45237D, 0x1B65C58C, -/**/ 0xBF4521BE, 0x75200000, -/**/ 0x3CCAA5C8, 0x194FEE63, -/**/ 0x3F451377, 0xD417C66A, -/**/ 0xBF4511BB, 0xD1C00000, -/**/ 0x3D3ED325, 0xE1CC7BBC, -/**/ 0x3F450372, 0x90CBC16E, -/**/ 0xBF4501B9, 0x30400000, -/**/ 0xBD0F0298, 0x68AB3742, -/**/ 0x3F44F36D, 0x5181B517, -/**/ 0xBF44F1B6, 0x90E00000, -/**/ 0x3D381BE1, 0x41E67AD9, -/**/ 0x3F44E368, 0x16399FE6, -/**/ 0xBF44E1B3, 0xF3600000, -/**/ 0xBD2A6E79, 0x668D3662, -/**/ 0x3F44D362, 0xDEF38058, -/**/ 0xBF44D1B1, 0x58000000, -/**/ 0x3D284EA7, 0x21F8B7C2, -/**/ 0x3F44C35D, 0xABAF54EC, -/**/ 0xBF44C1AE, 0xBE800000, -/**/ 0xBD3BC76D, 0x7417D9C5, -/**/ 0x3F44B358, 0x7C6D1C22, -/**/ 0xBF44B1AC, 0x27200000, -/**/ 0xBD1409FD, 0x16AAD1FC, -/**/ 0x3F44A353, 0x512CD479, -/**/ 0xBF44A1A9, 0x91C00000, -/**/ 0x3D30771E, 0x98BC14FD, -/**/ 0x3F44934E, 0x29EE7C70, -/**/ 0xBF4491A6, 0xFE400000, -/**/ 0xBD3B5993, 0x5CCB7232, -/**/ 0x3F448349, 0x06B21285, -/**/ 0xBF4481A4, 0x6CE00000, -/**/ 0xBD20E729, 0x5512F9C2, -/**/ 0x3F447343, 0xE7779538, -/**/ 0xBF4471A1, 0xDD800000, -/**/ 0x3D225436, 0x55B30899, -/**/ 0x3F44633E, 0xCC3F0308, -/**/ 0xBF44619F, 0x50200000, -/**/ 0x3D39807C, 0x9E54E31F, -/**/ 0x3F445339, 0xB5085A73, -/**/ 0xBF44519C, 0xC4A00000, -/**/ 0xBD376F6F, 0xD5804C0E, -/**/ 0x3F444334, 0xA1D399FA, -/**/ 0xBF44419A, 0x3B400000, -/**/ 0xBD234953, 0x6CDE6425, -/**/ 0x3F44332F, 0x92A0C01A, -/**/ 0xBF443197, 0xB3E00000, -/**/ 0x3D070E7B, 0xAAF6596F, -/**/ 0x3F44232A, 0x876FCB54, -/**/ 0xBF442195, 0x2E800000, -/**/ 0x3D2C49F8, 0x4EC011F1, -/**/ 0x3F441325, 0x8040BA25, -/**/ 0xBF441192, 0xAB200000, -/**/ 0x3D3825DC, 0xD8AAA7EB, -/**/ 0x3F440320, 0x7D138B0E, -/**/ 0xBF440190, 0x29A00000, -/**/ 0xBD3F1A8D, 0xFE0B73D6, -/**/ 0x3F43F31B, 0x7DE83C8C, -/**/ 0xBF43F18D, 0xAA400000, -/**/ 0xBD379B43, 0xE46CA26B, -/**/ 0x3F43E316, 0x82BECD20, -/**/ 0xBF43E18B, 0x2CE00000, -/**/ 0xBD315B44, 0x6283780D, -/**/ 0x3F43D311, 0x8B973B49, -/**/ 0xBF43D188, 0xB1800000, -/**/ 0xBD28B31E, 0x017589BE, -/**/ 0x3F43C30C, 0x98718584, -/**/ 0xBF43C186, 0x38200000, -/**/ 0xBD212A46, 0x8FBB296E, -/**/ 0x3F43B307, 0xA94DAA52, -/**/ 0xBF43B183, 0xC0C00000, -/**/ 0xBD183403, 0x045CBBD2, -/**/ 0x3F43A302, 0xBE2BA832, -/**/ 0xBF43A181, 0x4B600000, -/**/ 0xBD13009B, 0xD7CC5936, -/**/ 0x3F4392FD, 0xD70B7DA2, -/**/ 0xBF43917E, 0xD8000000, -/**/ 0xBD12B655, 0xC1742279, -/**/ 0x3F4382F8, 0xF3ED2921, -/**/ 0xBF43817C, 0x66A00000, -/**/ 0xBD17512E, 0xEA83FAE8, -/**/ 0x3F4372F4, 0x14D0A930, -/**/ 0xBF437179, 0xF7400000, -/**/ 0xBD206692, 0xBED65875, -/**/ 0x3F4362EF, 0x39B5FC4C, -/**/ 0xBF436177, 0x89E00000, -/**/ 0xBD27931B, 0xD38FFE9E, -/**/ 0x3F4352EA, 0x629D20F5, -/**/ 0xBF435175, 0x1E800000, -/**/ 0xBD309618, 0xE524208F, -/**/ 0x3F4342E5, 0x8F8615AA, -/**/ 0xBF434172, 0xB5200000, -/**/ 0xBD3697E9, 0xDD4C72C5, -/**/ 0x3F4332E0, 0xC070D8EB, -/**/ 0xBF433170, 0x4DC00000, -/**/ 0xBD3DCE00, 0x5E6E12C3, -/**/ 0x3F4322DB, 0xF55D6935, -/**/ 0xBF43216D, 0xE8800000, -/**/ 0x3D39C8A4, 0x0AE9A8CE, -/**/ 0x3F4312D7, 0x2E4BC509, -/**/ 0xBF43116B, 0x85200000, -/**/ 0x3D302D03, 0xD1CD2FA1, -/**/ 0x3F4302D2, 0x6B3BEAE5, -/**/ 0xBF430169, 0x23C00000, -/**/ 0x3D15807D, 0xA3BADFD1, -/**/ 0x3F42F2CD, 0xAC2DD949, -/**/ 0xBF42F166, 0xC4600000, -/**/ 0xBD1A7422, 0xF57F0504, -/**/ 0x3F42E2C8, 0xF1218EB3, -/**/ 0xBF42E164, 0x67000000, -/**/ 0xBD33C974, 0x2F2C781C, -/**/ 0x3F42D2C4, 0x3A1709A3, -/**/ 0xBF42D162, 0x0BC00000, -/**/ 0x3D3DDBDD, 0x851A1E61, -/**/ 0x3F42C2BF, 0x870E4898, -/**/ 0xBF42C15F, 0xB2600000, -/**/ 0x3D2CA7D9, 0xA14AA8FD, -/**/ 0x3F42B2BA, 0xD8074A10, -/**/ 0xBF42B15D, 0x5B000000, -/**/ 0xBD03022E, 0xDDCDDFF5, -/**/ 0x3F42A2B6, 0x2D020C8C, -/**/ 0xBF42A15B, 0x05A00000, -/**/ 0xBD343FBA, 0x0F9231A8, -/**/ 0x3F4292B1, 0x85FE8E8A, -/**/ 0xBF429158, 0xB2600000, -/**/ 0x3D38B690, 0xA52C9CCF, -/**/ 0x3F4282AC, 0xE2FCCE8A, -/**/ 0xBF428156, 0x61000000, -/**/ 0x3D120E6A, 0xC8CC82EB, -/**/ 0x3F4272A8, 0x43FCCB0A, -/**/ 0xBF427154, 0x11A00000, -/**/ 0xBD30D79B, 0x792E6C51, -/**/ 0x3F4262A3, 0xA8FE8289, -/**/ 0xBF426151, 0xC4600000, -/**/ 0x3D38A5EE, 0x91F7F7AA, -/**/ 0x3F42529F, 0x1201F387, -/**/ 0xBF42514F, 0x79000000, -/**/ 0x3CEFA728, 0x46C2E8BA, -/**/ 0x3F42429A, 0x7F071C84, -/**/ 0xBF42414D, 0x2FA00000, -/**/ 0xBD37D0BA, 0xFA447A17, -/**/ 0x3F423295, 0xF00DFBFD, -/**/ 0xBF42314A, 0xE8600000, -/**/ 0x3D2C7A24, 0x94AF3FED, -/**/ 0x3F422291, 0x65169072, -/**/ 0xBF422148, 0xA3000000, -/**/ 0xBD29B0BD, 0x050CEA04, -/**/ 0x3F42128C, 0xDE20D863, -/**/ 0xBF421146, 0x5FC00000, -/**/ 0x3D36EFF3, 0x0C3035EB, -/**/ 0x3F420288, 0x5B2CD24E, -/**/ 0xBF420144, 0x1E600000, -/**/ 0xBD19A3E2, 0x73569B27, -/**/ 0x3F41F283, 0xDC3A7CB2, -/**/ 0xBF41F141, 0xDF200000, -/**/ 0x3D3B1DDE, 0xEEB67715, -/**/ 0x3F41E27F, 0x6149D610, -/**/ 0xBF41E13F, 0xA1C00000, -/**/ 0xBD11EA17, 0x94F49154, -/**/ 0x3F41D27A, 0xEA5ADCE5, -/**/ 0xBF41D13D, 0x66800000, -/**/ 0x3D3ACED9, 0x52DD9D37, -/**/ 0x3F41C276, 0x776D8FB1, -/**/ 0xBF41C13B, 0x2D200000, -/**/ 0xBD1C140B, 0xF72D8EEB, -/**/ 0x3F41B272, 0x0881ECF4, -/**/ 0xBF41B138, 0xF5E00000, -/**/ 0x3D360AE5, 0x939583E1, -/**/ 0x3F41A26D, 0x9D97F32C, -/**/ 0xBF41A136, 0xC0800000, -/**/ 0xBD2C00D9, 0x1D246C7C, -/**/ 0x3F419269, 0x36AFA0D9, -/**/ 0xBF419134, 0x8D400000, -/**/ 0x3D29B40E, 0x0B955CFB, -/**/ 0x3F418264, 0xD3C8F479, -/**/ 0xBF418132, 0x5BE00000, -/**/ 0xBD3964BF, 0x45A6C249, -/**/ 0x3F417260, 0x74E3EC8D, -/**/ 0xBF417130, 0x2CA00000, -/**/ 0xBCE777E0, 0xF3363612, -/**/ 0x3F41625C, 0x1A008792, -/**/ 0xBF41612D, 0xFF600000, -/**/ 0x3D36D608, 0x28DE8296, -/**/ 0x3F415257, 0xC31EC409, -/**/ 0xBF41512B, 0xD4000000, -/**/ 0xBD32AE69, 0x4BB1B788, -/**/ 0x3F414253, 0x703EA071, -/**/ 0xBF414129, 0xAAC00000, -/**/ 0x3D05BF68, 0x170ECD8C, -/**/ 0x3F41324F, 0x21601B48, -/**/ 0xBF413127, 0x83800000, -/**/ 0x3D370A0B, 0x7C653BFC, -/**/ 0x3F41224A, 0xD683330E, -/**/ 0xBF412125, 0x5E200000, -/**/ 0xBD35B70D, 0x77BBBEBF, -/**/ 0x3F411246, 0x8FA7E642, -/**/ 0xBF411123, 0x3AE00000, -/**/ 0xBD0C52EB, 0x93ABC1CD, -/**/ 0x3F410242, 0x4CCE3363, -/**/ 0xBF410121, 0x19A00000, -/**/ 0x3D2B2237, 0xE5C6F4C7, -/**/ 0x3F40F23E, 0x0DF618F1, -/**/ 0xBF40F11E, 0xFA600000, -/**/ 0x3D3D9C5F, 0x1E9A50AD, -/**/ 0x3F40E239, 0xD31F956A, -/**/ 0xBF40E11C, 0xDD000000, -/**/ 0xBD336793, 0x8965F0DA, -/**/ 0x3F40D235, 0x9C4AA74E, -/**/ 0xBF40D11A, 0xC1C00000, -/**/ 0xBD15E6EE, 0x7E49E231, -/**/ 0x3F40C231, 0x69774D1D, -/**/ 0xBF40C118, 0xA8800000, -/**/ 0x3D1D9B9D, 0x04FD621C, -/**/ 0x3F40B22D, 0x3AA58554, -/**/ 0xBF40B116, 0x91400000, -/**/ 0x3D333B55, 0x7DD9EED3, -/**/ 0x3F40A229, 0x0FD54E74, -/**/ 0xBF40A114, 0x7C000000, -/**/ 0x3D3E048F, 0x7AA78478, -/**/ 0x3F409224, 0xE906A6FC, -/**/ 0xBF409112, 0x68A00000, -/**/ 0xBD383C6A, 0x644DDE88, -/**/ 0x3F408220, 0xC6398D6B, -/**/ 0xBF408110, 0x57600000, -/**/ 0xBD2F0D2F, 0x76B8C83A, -/**/ 0x3F40721C, 0xA76E0040, -/**/ 0xBF40710E, 0x48200000, -/**/ 0xBD1F63E0, 0x9CE99FD3, -/**/ 0x3F406218, 0x8CA3FDFB, -/**/ 0xBF40610C, 0x3AE00000, -/**/ 0xBCF328B4, 0x4FE774F2, -/**/ 0x3F405214, 0x75DB851A, -/**/ 0xBF40510A, 0x2FA00000, -/**/ 0x3D11B6BD, 0x3782BCD4, -/**/ 0x3F404210, 0x6314941D, -/**/ 0xBF404108, 0x26600000, -/**/ 0x3D22116F, 0xE7183792, -/**/ 0x3F40320C, 0x544F2983, -/**/ 0xBF403106, 0x1F200000, -/**/ 0x3D293F1E, 0x1B995B3D, -/**/ 0x3F402208, 0x498B43CB, -/**/ 0xBF402104, 0x19E00000, -/**/ 0x3D2E6669, 0xFC162630, -/**/ 0x3F401204, 0x42C8E175, -/**/ 0xBF401102, 0x16A00000, -/**/ 0x3D30C4AA, 0x254FC9F8, -/**/ 0x3F400200, 0x40080100, -/**/ 0xBF400100, 0x15600000, -/**/ 0x3D3154EE, 0xE4431F92, -/**/ 0x3F3FE3F8, 0x829141D6, -/**/ 0xBF3FE1FC, 0x2C400000, -/**/ 0x3D30E503, 0x9B2D30FB, -/**/ 0x3F3FC3F0, 0x8D157F6B, -/**/ 0xBF3FC1F8, 0x31C00000, -/**/ 0x3D2EEBD1, 0x53EBD670, -/**/ 0x3F3FA3E8, 0x9F9CB7BC, -/**/ 0xBF3FA1F4, 0x3B400000, -/**/ 0x3D2A113C, 0xE04A16E0, -/**/ 0x3F3F83E0, 0xBA26E7CA, -/**/ 0xBF3F81F0, 0x48C00000, -/**/ 0x3D233C4A, 0x99C43E34, -/**/ 0x3F3F63D8, 0xDCB40C91, -/**/ 0xBF3F61EC, 0x5A400000, -/**/ 0x3D14DDF6, 0x7BD210C1, -/**/ 0x3F3F43D1, 0x07442311, -/**/ 0xBF3F41E8, 0x6FC00000, -/**/ 0xBCC52C1D, 0x9E4B51C8, -/**/ 0x3F3F23C9, 0x39D72849, -/**/ 0xBF3F21E4, 0x89400000, -/**/ 0xBD1A196F, 0x8EA8C754, -/**/ 0x3F3F03C1, 0x746D1936, -/**/ 0xBF3F01E0, 0xA6C00000, -/**/ 0xBD2BB719, 0xF95AF98D, -/**/ 0x3F3EE3B9, 0xB705F2D8, -/**/ 0xBF3EE1DC, 0xC8400000, -/**/ 0xBD3628EB, 0x28FFD598, -/**/ 0x3F3EC3B2, 0x01A1B22C, -/**/ 0xBF3EC1D8, 0xEDC00000, -/**/ 0xBD3F6D76, 0x0BBAC8F8, -/**/ 0x3F3EA3AA, 0x54405432, -/**/ 0xBF3EA1D5, 0x17800000, -/**/ 0x3D3657D2, 0xB7A7EE0D, -/**/ 0x3F3E83A2, 0xAEE1D5E8, -/**/ 0xBF3E81D1, 0x45000000, -/**/ 0x3D264FDE, 0xFA9CCC78, -/**/ 0x3F3E639B, 0x1186344C, -/**/ 0xBF3E61CD, 0x76800000, -/**/ 0xBCEF83EB, 0xE02EF455, -/**/ 0x3F3E4393, 0x7C2D6C5E, -/**/ 0xBF3E41C9, 0xAC000000, -/**/ 0xBD2C26B3, 0x03C3E129, -/**/ 0x3F3E238B, 0xEED77B1B, -/**/ 0xBF3E21C5, 0xE5800000, -/**/ 0xBD3C1CBE, 0x904D773D, -/**/ 0x3F3E0384, 0x69845D83, -/**/ 0xBF3E01C2, 0x23400000, -/**/ 0x3D34E8B1, 0xD0615454, -/**/ 0x3F3DE37C, 0xEC341093, -/**/ 0xBF3DE1BE, 0x64C00000, -/**/ 0x3D13F7DF, 0xE9BE933E, -/**/ 0x3F3DC375, 0x76E6914B, -/**/ 0xBF3DC1BA, 0xAA400000, -/**/ 0xBD27B7D7, 0x707B004A, -/**/ 0x3F3DA36E, 0x099BDCA9, -/**/ 0xBF3DA1B6, 0xF3C00000, -/**/ 0xBD3DA3F8, 0xEE2141C3, -/**/ 0x3F3D8366, 0xA453EFAC, -/**/ 0xBF3D81B3, 0x41800000, -/**/ 0x3D2F4DA1, 0x63D21825, -/**/ 0x3F3D635F, 0x470EC752, -/**/ 0xBF3D61AF, 0x93000000, -/**/ 0xBD0FD473, 0xFAD0B844, -/**/ 0x3F3D4357, 0xF1CC609A, -/**/ 0xBF3D41AB, 0xE8800000, -/**/ 0xBD388716, 0x298657C2, -/**/ 0x3F3D2350, 0xA48CB882, -/**/ 0xBF3D21A8, 0x42400000, -/**/ 0x3D32023A, 0x0B68711A, -/**/ 0x3F3D0349, 0x5F4FCC0A, -/**/ 0xBF3D01A4, 0x9FC00000, -/**/ 0xBD117676, 0x23A704B0, -/**/ 0x3F3CE342, 0x22159830, -/**/ 0xBF3CE1A1, 0x01400000, -/**/ 0xBD3BA59C, 0x8F391F09, -/**/ 0x3F3CC33A, 0xECDE19F1, -/**/ 0xBF3CC19D, 0x67000000, -/**/ 0x3D28567A, 0x9EBBF706, -/**/ 0x3F3CA333, 0xBFA94E4E, -/**/ 0xBF3CA199, 0xD0800000, -/**/ 0xBD29D41F, 0x2D41F1CC, -/**/ 0x3F3C832C, 0x9A773245, -/**/ 0xBF3C8196, 0x3E400000, -/**/ 0x3D391B7D, 0x14ED5134, -/**/ 0x3F3C6325, 0x7D47C2D4, -/**/ 0xBF3C6192, 0xAFC00000, -/**/ 0xBCFC31C5, 0x83403B5B, -/**/ 0x3F3C431E, 0x681AFCFA, -/**/ 0xBF3C418F, 0x25400000, -/**/ 0xBD3D84DB, 0x88A1FFF3, -/**/ 0x3F3C2317, 0x5AF0DDB6, -/**/ 0xBF3C218B, 0x9F000000, -/**/ 0x3D175CFF, 0x6298A63B, -/**/ 0x3F3C0310, 0x55C96207, -/**/ 0xBF3C0188, 0x1C800000, -/**/ 0xBD37ADC9, 0xDFB8E489, -/**/ 0x3F3BE309, 0x58A486EA, -/**/ 0xBF3BE184, 0x9E400000, -/**/ 0x3D23DA0F, 0x45069C64, -/**/ 0x3F3BC302, 0x6382495F, -/**/ 0xBF3BC181, 0x23C00000, -/**/ 0xBD35574B, 0x4CC2EFE0, -/**/ 0x3F3BA2FB, 0x7662A665, -/**/ 0xBF3BA17D, 0xAD800000, -/**/ 0x3D250C7B, 0x4BED0B89, -/**/ 0x3F3B82F4, 0x91459AFA, -/**/ 0xBF3B817A, 0x3B000000, -/**/ 0xBD36795D, 0x322E5605, -/**/ 0x3F3B62ED, 0xB42B241D, -/**/ 0xBF3B6176, 0xCCC00000, -/**/ 0x3D1EAB91, 0xF6413886, -/**/ 0x3F3B42E6, 0xDF133ECC, -/**/ 0xBF3B4173, 0x62400000, -/**/ 0xBD3B0BFC, 0xF86BE5B5, -/**/ 0x3F3B22E0, 0x11FDE807, -/**/ 0xBF3B216F, 0xFC000000, -/**/ 0x3CF62FEB, 0xDDE8D701, -/**/ 0x3F3B02D9, 0x4CEB1CCC, -/**/ 0xBF3B016C, 0x99C00000, -/**/ 0x3D3CF8D7, 0xF210FD9E, -/**/ 0x3F3AE2D2, 0x8FDADA1A, -/**/ 0xBF3AE169, 0x3B400000, -/**/ 0xBD2092E2, 0x1526CFB0, -/**/ 0x3F3AC2CB, 0xDACD1CEF, -/**/ 0xBF3AC165, 0xE1000000, -/**/ 0x3D319D24, 0x18D261D5, -/**/ 0x3F3AA2C5, 0x2DC1E24A, -/**/ 0xBF3AA162, 0x8A800000, -/**/ 0xBD355268, 0x533CC8EC, -/**/ 0x3F3A82BE, 0x88B9272B, -/**/ 0xBF3A815F, 0x38400000, -/**/ 0x3D074750, 0x0AFE6139, -/**/ 0x3F3A62B7, 0xEBB2E88F, -/**/ 0xBF3A615B, 0xEA000000, -/**/ 0x3D3A501B, 0x6668AD57, -/**/ 0x3F3A42B1, 0x56AF2375, -/**/ 0xBF3A4158, 0x9F800000, -/**/ 0xBD2E37A7, 0xA98381BD, -/**/ 0x3F3A22AA, 0xC9ADD4DD, -/**/ 0xBF3A2155, 0x59400000, -/**/ 0x3D1A9872, 0x7B82F9AC, -/**/ 0x3F3A02A4, 0x44AEF9C5, -/**/ 0xBF3A0152, 0x17000000, -/**/ 0x3D3B96ED, 0x0FF040AD, -/**/ 0x3F39E29D, 0xC7B28F2C, -/**/ 0xBF39E14E, 0xD8800000, -/**/ 0xBD304862, 0x33534BD7, -/**/ 0x3F39C297, 0x52B89211, -/**/ 0xBF39C14B, 0x9E400000, -/**/ 0x3D084979, 0x17AF009B, -/**/ 0x3F39A290, 0xE5C0FF72, -/**/ 0xBF39A148, 0x68000000, -/**/ 0x3D358CA1, 0x604B64C9, -/**/ 0x3F39828A, 0x80CBD44E, -/**/ 0xBF398145, 0x35800000, -/**/ 0xBD38BD0B, 0x2E334404, -/**/ 0x3F396284, 0x23D90DA4, -/**/ 0xBF396142, 0x07400000, -/**/ 0xBD1F4B58, 0xEF1B1C68, -/**/ 0x3F39427D, 0xCEE8A873, -/**/ 0xBF39413E, 0xDD000000, -/**/ 0x3D209881, 0x07E010EC, -/**/ 0x3F392277, 0x81FAA1B9, -/**/ 0xBF39213B, 0xB6C00000, -/**/ 0x3D37A139, 0x5CF03181, -/**/ 0x3F390271, 0x3D0EF676, -/**/ 0xBF390138, 0x94400000, -/**/ 0xBD39D2EB, 0x65276B0B, -/**/ 0x3F38E26B, 0x0025A3A8, -/**/ 0xBF38E135, 0x76000000, -/**/ 0xBD281E5A, 0xEE3023F6, -/**/ 0x3F38C264, 0xCB3EA64F, -/**/ 0xBF38C132, 0x5BC00000, -/**/ 0x3CEDAE6E, 0x3F9A4B53, -/**/ 0x3F38A25E, 0x9E59FB68, -/**/ 0xBF38A12F, 0x45800000, -/**/ 0x3D2A47EF, 0x412B648E, -/**/ 0x3F388258, 0x79779FF3, -/**/ 0xBF38812C, 0x33400000, -/**/ 0x3D38955F, 0x5ED0D8F2, -/**/ 0x3F386252, 0x5C9790EE, -/**/ 0xBF386129, 0x24C00000, -/**/ 0xBD3CBD55, 0x09939374, -/**/ 0x3F38424C, 0x47B9CB5A, -/**/ 0xBF384126, 0x1A800000, -/**/ 0xBD32D325, 0x4F399186, -/**/ 0x3F382246, 0x3ADE4C33, -/**/ 0xBF382123, 0x14400000, -/**/ 0xBD235622, 0x524688EB, -/**/ 0x3F380240, 0x3605107A, -/**/ 0xBF380120, 0x12000000, -/**/ 0xBCF44184, 0xEB2F3DDC, -/**/ 0x3F37E23A, 0x392E152C, -/**/ 0xBF37E11D, 0x13C00000, -/**/ 0x3D198B16, 0x2153D1B8, -/**/ 0x3F37C234, 0x4459574A, -/**/ 0xBF37C11A, 0x19800000, -/**/ 0x3D2A9511, 0x47A3C923, -/**/ 0x3F37A22E, 0x5786D3D1, -/**/ 0xBF37A117, 0x23400000, -/**/ 0x3D337431, 0x4B4128D9, -/**/ 0x3F378228, 0x72B687C1, -/**/ 0xBF378114, 0x31000000, -/**/ 0x3D38E0BF, 0xC5BFE9E8, -/**/ 0x3F376222, 0x95E87019, -/**/ 0xBF376111, 0x42C00000, -/**/ 0x3D3D9134, 0x5A0B2CE9, -/**/ 0x3F37421C, 0xC11C89D8, -/**/ 0xBF37410E, 0x58400000, -/**/ 0xBD3E7970, 0xB1802C40, -/**/ 0x3F372216, 0xF452D1FB, -/**/ 0xBF37210B, 0x72000000, -/**/ 0xBD3B3E2F, 0x16E562C9, -/**/ 0x3F370211, 0x2F8B4583, -/**/ 0xBF370108, 0x8FC00000, -/**/ 0xBD38BC06, 0x9087DACD, -/**/ 0x3F36E20B, 0x72C5E16F, -/**/ 0xBF36E105, 0xB1800000, -/**/ 0xBD36F1F6, 0xD92B1B21, -/**/ 0x3F36C205, 0xBE02A2BC, -/**/ 0xBF36C102, 0xD7400000, -/**/ 0xBD35DEFF, 0xABF2CD23, -/**/ 0x3F36A200, 0x1141866B, -/**/ 0xBF36A100, 0x01000000, -/**/ 0xBD358220, 0xC462BC85, -/**/ 0x3F3681FA, 0x6C828979, -/**/ 0xBF3680FD, 0x2EC00000, -/**/ 0xBD35DA59, 0xDE5ED723, -/**/ 0x3F3661F4, 0xCFC5A8E7, -/**/ 0xBF3660FA, 0x60800000, -/**/ 0xBD36E6AA, 0xB62B2CD1, -/**/ 0x3F3641EF, 0x3B0AE1B2, -/**/ 0xBF3640F7, 0x96400000, -/**/ 0xBD38A613, 0x086BEF29, -/**/ 0x3F3621E9, 0xAE5230DA, -/**/ 0xBF3620F4, 0xD0000000, -/**/ 0xBD3B1792, 0x9225715D, -/**/ 0x3F3601E4, 0x299B935F, -/**/ 0xBF3600F2, 0x0DC00000, -/**/ 0xBD3E3A29, 0x10BC2805, -/**/ 0x3F35E1DE, 0xACE7063E, -/**/ 0xBF35E0EF, 0x4FC00000, -/**/ 0x3D3DF329, 0xBE0B570D, -/**/ 0x3F35C1D9, 0x38348676, -/**/ 0xBF35C0EC, 0x95800000, -/**/ 0x3D397166, 0x1C0C5502, -/**/ 0x3F35A1D3, 0xCB841108, -/**/ 0xBF35A0E9, 0xDF400000, -/**/ 0x3D34418C, 0x4AC1FA2D, -/**/ 0x3F3581CE, 0x66D5A2F1, -/**/ 0xBF3580E7, 0x2D000000, -/**/ 0x3D2CC939, 0x168E9C6E, -/**/ 0x3F3561C9, 0x0A293931, -/**/ 0xBF3560E4, 0x7EC00000, -/**/ 0x3D1F6E5C, 0x795CE154, -/**/ 0x3F3541C3, 0xB57ED0C7, -/**/ 0xBF3540E1, 0xD4800000, -/**/ 0x3CE4EF88, 0x898FEE67, -/**/ 0x3F3521BE, 0x68D666B1, -/**/ 0xBF3520DF, 0x2E400000, -/**/ 0xBD1CDACF, 0x0B78D65E, -/**/ 0x3F3501B9, 0x242FF7EF, -/**/ 0xBF3500DC, 0x8C000000, -/**/ 0xBD2F7BF1, 0x6F1CBFB8, -/**/ 0x3F34E1B3, 0xE78B8180, -/**/ 0xBF34E0D9, 0xEDC00000, -/**/ 0xBD38ED52, 0x5A899820, -/**/ 0x3F34C1AE, 0xB2E90063, -/**/ 0xBF34C0D7, 0x53C00000, -/**/ 0x3D3D3C3F, 0x930A694E, -/**/ 0x3F34A1A9, 0x86487196, -/**/ 0xBF34A0D4, 0xBD800000, -/**/ 0x3D32BFBD, 0x4FA7CCCB, -/**/ 0x3F3481A4, 0x61A9D219, -/**/ 0xBF3480D2, 0x2B400000, -/**/ 0x3D1E789C, 0x65A26E32, -/**/ 0x3F34619F, 0x450D1EEB, -/**/ 0xBF3460CF, 0x9D000000, -/**/ 0xBD109E0B, 0x47E500B5, -/**/ 0x3F34419A, 0x3072550B, -/**/ 0xBF3440CD, 0x12C00000, -/**/ 0xBD309040, 0x3523FAE9, -/**/ 0x3F342195, 0x23D97178, -/**/ 0xBF3420CA, 0x8C800000, -/**/ 0xBD3D9B10, 0xD31DE7C2, -/**/ 0x3F340190, 0x1F427131, -/**/ 0xBF3400C8, 0x0A800000, -/**/ 0x3D34B90B, 0x90B287C4, -/**/ 0x3F33E18B, 0x22AD5135, -/**/ 0xBF33E0C5, 0x8C400000, -/**/ 0x3D19B454, 0xCA1B0FC2, -/**/ 0x3F33C186, 0x2E1A0E83, -/**/ 0xBF33C0C3, 0x12000000, -/**/ 0xBD20FBE7, 0x638FC1F4, -/**/ 0x3F33A181, 0x4188A61A, -/**/ 0xBF33A0C0, 0x9BC00000, -/**/ 0xBD38070E, 0xE0C03290, -/**/ 0x3F33817C, 0x5CF914F9, -/**/ 0xBF3380BE, 0x29C00000, -/**/ 0x3D37D2C3, 0xE0B6E5F5, -/**/ 0x3F336177, 0x806B5820, -/**/ 0xBF3360BB, 0xBB800000, -/**/ 0x3D1C4213, 0x35598794, -/**/ 0x3F334172, 0xABDF6C8D, -/**/ 0xBF3340B9, 0x51400000, -/**/ 0xBD249997, 0xC111C569, -/**/ 0x3F33216D, 0xDF554F40, -/**/ 0xBF3320B6, 0xEB000000, -/**/ 0xBD3C442D, 0xEEEE28E2, -/**/ 0x3F330169, 0x1ACCFD37, -/**/ 0xBF3300B4, 0x89000000, -/**/ 0x3D312B5E, 0xDBBF316D, -/**/ 0x3F32E164, 0x5E467372, -/**/ 0xBF32E0B2, 0x2AC00000, -/**/ 0xBCFFD254, 0x7484E6E1, -/**/ 0x3F32C15F, 0xA9C1AEF0, -/**/ 0xBF32C0AF, 0xD0800000, -/**/ 0xBD35BCBA, 0x1F2C3F9D, -/**/ 0x3F32A15A, 0xFD3EACAF, -/**/ 0xBF32A0AD, 0x7A800000, -/**/ 0x3D35EDA0, 0x8C8BAA61, -/**/ 0x3F328156, 0x58BD69B0, -/**/ 0xBF3280AB, 0x28400000, -/**/ 0x3CF02EAF, 0x3F79FE5E, -/**/ 0x3F326151, 0xBC3DE2F1, -/**/ 0xBF3260A8, 0xDA000000, -/**/ 0xBD347BDA, 0xB1304AA8, -/**/ 0x3F32414D, 0x27C01572, -/**/ 0xBF3240A6, 0x90000000, -/**/ 0x3D35724F, 0xD46BE359, -/**/ 0x3F322148, 0x9B43FE30, -/**/ 0xBF3220A4, 0x49C00000, -/**/ 0xBCF31954, 0x43BF90C9, -/**/ 0x3F320144, 0x16C99A2D, -/**/ 0xBF3200A2, 0x07800000, -/**/ 0xBD386689, 0xC4901E30, -/**/ 0x3F31E13F, 0x9A50E666, -/**/ 0xBF31E09F, 0xC9800000, -/**/ 0x3D2FA8E5, 0x134E34BF, -/**/ 0x3F31C13B, 0x25D9DFDB, -/**/ 0xBF31C09D, 0x8F400000, -/**/ 0xBD20FF40, 0x477D87DF, -/**/ 0x3F31A136, 0xB964838C, -/**/ 0xBF31A09B, 0x59400000, -/**/ 0x3D3E9E3E, 0x68B5B77B, -/**/ 0x3F318132, 0x54F0CE76, -/**/ 0xBF318099, 0x27000000, -/**/ 0x3D14BC39, 0x906F8A53, -/**/ 0x3F31612D, 0xF87EBD9A, -/**/ 0xBF316096, 0xF8C00000, -/**/ 0xBD34CC2F, 0xFCD50724, -/**/ 0x3F314129, 0xA40E4DF7, -/**/ 0xBF314094, 0xCEC00000, -/**/ 0x3D30AD83, 0x7A3A1B8D, -/**/ 0x3F312125, 0x579F7C8B, -/**/ 0xBF312092, 0xA8800000, -/**/ 0xBD24C5AE, 0x057F5C66, -/**/ 0x3F310121, 0x13324657, -/**/ 0xBF310090, 0x86800000, -/**/ 0x3D3A03C0, 0xBFD488E0, -/**/ 0x3F30E11C, 0xD6C6A858, -/**/ 0xBF30E08E, 0x68400000, -/**/ 0xBD00EDA8, 0x56935D63, -/**/ 0x3F30C118, 0xA25C9F8F, -/**/ 0xBF30C08C, 0x4E000000, -/**/ 0xBD3EC638, 0x2FDDD1CE, -/**/ 0x3F30A114, 0x75F428FB, -/**/ 0xBF30A08A, 0x38000000, -/**/ 0x3D102CDE, 0x0CA3DCBE, -/**/ 0x3F308110, 0x518D419B, -/**/ 0xBF308088, 0x25C00000, -/**/ 0xBD39A865, 0xBFA78921, -/**/ 0x3F30610C, 0x3527E66D, -/**/ 0xBF306086, 0x17C00000, -/**/ 0x3D203FE0, 0x72CE37BD, -/**/ 0x3F304108, 0x20C41472, -/**/ 0xBF304084, 0x0D800000, -/**/ 0xBD369AC6, 0x6054C3FA, -/**/ 0x3F302104, 0x1461C8A9, -/**/ 0xBF302082, 0x07800000, -/**/ 0x3D2450ED, 0x4836293A, -/**/ 0x3F300100, 0x10010010, -/**/ 0xBF300080, 0x05400000, -/**/ 0xBD359558, 0x88B3357C, -/**/ 0x3F2FC1F8, 0x27436F4F, -/**/ 0xBF2FC0FC, 0x0E800000, -/**/ 0x3D245998, 0x92ECD4D1, -/**/ 0x3F2F81F0, 0x3E87D8DC, -/**/ 0xBF2F80F8, 0x1A000000, -/**/ 0xBD36901A, 0xB592170A, -/**/ 0x3F2F41E8, 0x65CF36C6, -/**/ 0xBF2F40F4, 0x2E000000, -/**/ 0x3D2069E5, 0x53524603, -/**/ 0x3F2F01E0, 0x9D19830B, -/**/ 0xBF2F00F0, 0x49800000, -/**/ 0xBD39830B, 0x69C22240, -/**/ 0x3F2EC1D8, 0xE466B7AB, -/**/ 0xBF2EC0EC, 0x6D800000, -/**/ 0x3D1123AC, 0xFB871BBA, -/**/ 0x3F2E81D1, 0x3BB6CEA4, -/**/ 0xBF2E80E8, 0x99000000, -/**/ 0xBD3E6629, 0x2E158AF6, -/**/ 0x3F2E41C9, 0xA309C1F4, -/**/ 0xBF2E40E4, 0xCD000000, -/**/ 0xBCF8F488, 0x2B29884E, -/**/ 0x3F2E01C2, 0x1A5F8B99, -/**/ 0xBF2E00E1, 0x09000000, -/**/ 0x3D3ACE8D, 0x6EA006C6, -/**/ 0x3F2DC1BA, 0xA1B82593, -/**/ 0xBF2DC0DD, 0x4C800000, -/**/ 0xBD22974E, 0x59D0B687, -/**/ 0x3F2D81B3, 0x391389E0, -/**/ 0xBF2D80D9, 0x98800000, -/**/ 0x3D322319, 0xD7897CAD, -/**/ 0x3F2D41AB, 0xE071B27F, -/**/ 0xBF2D40D5, 0xEC000000, -/**/ 0xBD32E42F, 0x57954C6E, -/**/ 0x3F2D01A4, 0x97D2996E, -/**/ 0xBF2D00D2, 0x48000000, -/**/ 0x3D1E7DF5, 0xC741610E, -/**/ 0x3F2CC19D, 0x5F3638AB, -/**/ 0xBF2CC0CE, 0xAB800000, -/**/ 0xBD3E50DF, 0xA0909C5A, -/**/ 0x3F2C8196, 0x369C8A37, -/**/ 0xBF2C80CB, 0x17800000, -/**/ 0xBD12D119, 0x8D8D1C8F, -/**/ 0x3F2C418F, 0x1E05880E, -/**/ 0xBF2C40C7, 0x8B800000, -/**/ 0x3D347649, 0x544D2574, -/**/ 0x3F2C0188, 0x15712C30, -/**/ 0xBF2C00C4, 0x07000000, -/**/ 0xBD32D030, 0x4EEA9E68, -/**/ 0x3F2BC181, 0x1CDF709C, -/**/ 0xBF2BC0C0, 0x8B000000, -/**/ 0x3D15E533, 0x74A84109, -/**/ 0x3F2B817A, 0x34504F50, -/**/ 0xBF2B80BD, 0x17000000, -/**/ 0x3D3D53C1, 0x025FBF68, -/**/ 0x3F2B4173, 0x5BC3C24B, -/**/ 0xBF2B40B9, 0xAA800000, -/**/ 0xBD267FA7, 0x6BAA2FA8, -/**/ 0x3F2B016C, 0x9339C38C, -/**/ 0xBF2B00B6, 0x46800000, -/**/ 0x3D277F1D, 0xBB3FDE1E, -/**/ 0x3F2AC165, 0xDAB24D11, -/**/ 0xBF2AC0B2, 0xEA000000, -/**/ 0xBD3DAD17, 0x1A8CDBE2, -/**/ 0x3F2A815F, 0x322D58D9, -/**/ 0xBF2A80AF, 0x96000000, -/**/ 0xBD1E1315, 0xD81CF36E, -/**/ 0x3F2A4158, 0x99AAE0E3, -/**/ 0xBF2A40AC, 0x4A000000, -/**/ 0x3D2C7307, 0xE649E7B4, -/**/ 0x3F2A0152, 0x112ADF2D, -/**/ 0xBF2A00A9, 0x05800000, -/**/ 0xBD3C713A, 0xB77435EC, -/**/ 0x3F29C14B, 0x98AD4DB7, -/**/ 0xBF29C0A5, 0xC9800000, -/**/ 0xBD1E1005, 0x3A7AE827, -/**/ 0x3F298145, 0x3032267F, -/**/ 0xBF2980A2, 0x95800000, -/**/ 0x3D2A0460, 0xA8F2A842, -/**/ 0x3F29413E, 0xD7B96385, -/**/ 0xBF29409F, 0x69000000, -/**/ 0xBD3EDDA5, 0xA7B8321E, -/**/ 0x3F290138, 0x8F42FEC5, -/**/ 0xBF29009C, 0x45000000, -/**/ 0xBD264506, 0x3A3F0D33, -/**/ 0x3F28C132, 0x56CEF241, -/**/ 0xBF28C099, 0x29000000, -/**/ 0x3D206930, 0x33EE13CD, -/**/ 0x3F28812C, 0x2E5D37F6, -/**/ 0xBF288096, 0x15000000, -/**/ 0x3D3B28AC, 0x22DF1FDA, -/**/ 0x3F284126, 0x15EDC9E3, -/**/ 0xBF284093, 0x08800000, -/**/ 0xBD324546, 0xDD73B6DB, -/**/ 0x3F280120, 0x0D80A208, -/**/ 0xBF280090, 0x04800000, -/**/ 0xBCB440C2, 0x6DFEB485, -/**/ 0x3F27C11A, 0x1515BA62, -/**/ 0xBF27C08D, 0x08800000, -/**/ 0x3D31BCBE, 0x9823B19D, -/**/ 0x3F278114, 0x2CAD0CF1, -/**/ 0xBF27808A, 0x14000000, -/**/ 0xBD3CD148, 0xA9EB4E97, -/**/ 0x3F27410E, 0x544693B4, -/**/ 0xBF274087, 0x28000000, -/**/ 0xBD277AAC, 0xCA4F73AA, -/**/ 0x3F270108, 0x8BE248AA, -/**/ 0xBF270084, 0x44000000, -/**/ 0x3D13E656, 0x26068EF7, -/**/ 0x3F26C102, 0xD38025D2, -/**/ 0xBF26C081, 0x68000000, -/**/ 0x3D35547B, 0x44C3EC8A, -/**/ 0x3F2680FD, 0x2B20252A, -/**/ 0xBF26807E, 0x93800000, -/**/ 0xBD3AABA5, 0x110DCE4B, -/**/ 0x3F2640F7, 0x92C240B1, -/**/ 0xBF26407B, 0xC7800000, -/**/ 0xBD260B96, 0xAC011956, -/**/ 0x3F2600F2, 0x0A667267, -/**/ 0xBF260079, 0x03800000, -/**/ 0x3D111C22, 0x5DFA826E, -/**/ 0x3F25C0EC, 0x920CB44A, -/**/ 0xBF25C076, 0x47800000, -/**/ 0x3D333BD6, 0xD8A2980A, -/**/ 0x3F2580E7, 0x29B5005A, -/**/ 0xBF258073, 0x93000000, -/**/ 0xBD3E2660, 0x71C1D861, -/**/ 0x3F2540E1, 0xD15F5095, -/**/ 0xBF254070, 0xE7000000, -/**/ 0xBD2FBD3A, 0x4E77E5EE, -/**/ 0x3F2500DC, 0x890B9EFA, -/**/ 0xBF25006E, 0x43000000, -/**/ 0xBCFEBDF2, 0x7B90A2D9, -/**/ 0x3F24C0D7, 0x50B9E589, -/**/ 0xBF24C06B, 0xA7000000, -/**/ 0x3D2765B3, 0x58F2FF2C, -/**/ 0x3F2480D2, 0x286A1E40, -/**/ 0xBF248069, 0x13000000, -/**/ 0x3D38FE8D, 0x74AE382C, -/**/ 0x3F2440CD, 0x101C431E, -/**/ 0xBF244066, 0x86800000, -/**/ 0xBD3A07C3, 0xB0286224, -/**/ 0x3F2400C8, 0x07D04E23, -/**/ 0xBF240064, 0x02800000, -/**/ 0xBD2ABE33, 0x46EFC0EC, -/**/ 0x3F23C0C3, 0x0F86394D, -/**/ 0xBF23C061, 0x86800000, -/**/ 0xBCF06744, 0x70DE3151, -/**/ 0x3F2380BE, 0x273DFE9C, -/**/ 0xBF23805F, 0x12800000, -/**/ 0x3D260659, 0x05CFCD61, -/**/ 0x3F2340B9, 0x4EF7980F, -/**/ 0xBF23405C, 0xA6800000, -/**/ 0x3D36BEC8, 0xD7DBBEBC, -/**/ 0x3F2300B4, 0x86B2FFA4, -/**/ 0xBF23005A, 0x42000000, -/**/ 0xBD3DD29F, 0x2B2027B4, -/**/ 0x3F22C0AF, 0xCE702F5C, -/**/ 0xBF22C057, 0xE6000000, -/**/ 0xBD32B00B, 0x6959A7D0, -/**/ 0x3F2280AB, 0x262F2134, -/**/ 0xBF228055, 0x92000000, -/**/ 0xBD1F61EF, 0x19FAAC2D, -/**/ 0x3F2240A6, 0x8DEFCF2C, -/**/ 0xBF224053, 0x46000000, -/**/ 0x3D05A87E, 0xCB16B8A8, -/**/ 0x3F2200A2, 0x05B23344, -/**/ 0xBF220051, 0x02000000, -/**/ 0x3D29F32F, 0x23B9B257, -/**/ 0x3F21C09D, 0x8D76477A, -/**/ 0xBF21C04E, 0xC6000000, -/**/ 0x3D36F61B, 0x7E214821, -/**/ 0x3F218099, 0x253C05CD, -/**/ 0xBF21804C, 0x91800000, -/**/ 0xBD3F5464, 0x46FDFCA2, -/**/ 0x3F214094, 0xCD03683D, -/**/ 0xBF21404A, 0x65800000, -/**/ 0xBD35E4E7, 0xA30F2308, -/**/ 0x3F210090, 0x84CC68C9, -/**/ 0xBF210048, 0x41800000, -/**/ 0xBD2974DC, 0xF800CC34, -/**/ 0x3F20C08C, 0x4C970171, -/**/ 0xBF20C046, 0x25800000, -/**/ 0xBD0E9FC5, 0xC1006E9D, -/**/ 0x3F208088, 0x24632C32, -/**/ 0xBF208044, 0x11800000, -/**/ 0x3D133DE7, 0x078E4438, -/**/ 0x3F204084, 0x0C30E30D, -/**/ 0xBF204042, 0x05800000, -/**/ 0x3D2A61D2, 0x15F82A7B, -/**/ 0x3F200080, 0x04002001, -/**/ 0xBF200040, 0x01800000, -/**/ 0x3D355155, 0x3BBB110C, -/**/ 0x3F1F80F8, 0x17A1BA1A, -/**/ 0xBF1F807C, 0x0B000000, -/**/ 0x3D3D31BE, 0x6C520A9B, -/**/ 0x3F1F00F0, 0x47462860, -/**/ 0xBF1F0078, 0x22000000, -/**/ 0xBD3B2CDB, 0x4B6D83F6, -/**/ 0x3F1E80E8, 0x96ED7ED3, -/**/ 0xBF1E8074, 0x4A000000, -/**/ 0xBD33C977, 0xD4122C5A, -/**/ 0x3F1E00E1, 0x0697B172, -/**/ 0xBF1E0070, 0x82000000, -/**/ 0xBD29462E, 0x2D1517C4, -/**/ 0x3F1D80D9, 0x9644B43B, -/**/ 0xBF1D806C, 0xCA000000, -/**/ 0xBD16E2E3, 0xF0952D45, -/**/ 0x3F1D00D2, 0x45F47B2C, -/**/ 0xBF1D0069, 0x22000000, -/**/ 0x3CEED452, 0x2DDC2A8D, -/**/ 0x3F1C80CB, 0x15A6FA46, -/**/ 0xBF1C8065, 0x8A000000, -/**/ 0x3D1DAFEE, 0xA08CEBE8, -/**/ 0x3F1C00C4, 0x055C2585, -/**/ 0xBF1C0062, 0x02000000, -/**/ 0x3D2B50A4, 0xBB11EF55, -/**/ 0x3F1B80BD, 0x1513F0E9, -/**/ 0xBF1B805E, 0x8A000000, -/**/ 0x3D33ACA6, 0xC6D142BF, -/**/ 0x3F1B00B6, 0x44CE5071, -/**/ 0xBF1B005B, 0x22000000, -/**/ 0x3D3979F8, 0xF8CD3D11, -/**/ 0x3F1A80AF, 0x948B381A, -/**/ 0xBF1A8057, 0xCA000000, -/**/ 0x3D3F1149, 0x07EDFD29, -/**/ 0x3F1A00A9, 0x044A9BE5, -/**/ 0xBF1A0054, 0x81000000, -/**/ 0xBD3B8C68, 0xF7BB7092, -/**/ 0x3F1980A2, 0x940C6FCF, -/**/ 0xBF198051, 0x49000000, -/**/ 0xBD365E1C, 0xF27E09A9, -/**/ 0x3F19009C, 0x43D0A7D8, -/**/ 0xBF19004E, 0x21000000, -/**/ 0xBD3162D2, 0xD508D564, -/**/ 0x3F188096, 0x139737FE, -/**/ 0xBF18804B, 0x09000000, -/**/ 0xBD293315, 0x18D5C93E, -/**/ 0x3F180090, 0x03601440, -/**/ 0xBF180048, 0x01000000, -/**/ 0xBD200288, 0x0C26A328, -/**/ 0x3F17808A, 0x132B309E, -/**/ 0xBF178045, 0x09000000, -/**/ 0xBD0CC7F9, 0x7E89FD6F, -/**/ 0x3F170084, 0x42F88115, -/**/ 0xBF170042, 0x21000000, -/**/ 0x3CE40881, 0x058494DC, -/**/ 0x3F16807E, 0x92C7F9A5, -/**/ 0xBF16803F, 0x49000000, -/**/ 0x3D12AE16, 0xCD5698B9, -/**/ 0x3F160079, 0x02998E4D, -/**/ 0xBF16003C, 0x81000000, -/**/ 0x3D21138B, 0xC5780E17, -/**/ 0x3F158073, 0x926D330B, -/**/ 0xBF158039, 0xC9000000, -/**/ 0x3D287809, 0x4E2001E2, -/**/ 0x3F15006E, 0x4242DBDF, -/**/ 0xBF150037, 0x21000000, -/**/ 0x3D2F8684, 0x21448AA2, -/**/ 0x3F148069, 0x121A7CC8, -/**/ 0xBF148034, 0x89000000, -/**/ 0x3D33207E, 0x2F637D8E, -/**/ 0x3F140064, 0x01F409C4, -/**/ 0xBF140032, 0x01000000, -/**/ 0x3D3654B9, 0x12E44B29, -/**/ 0x3F13805F, 0x11CF76D3, -/**/ 0xBF13802F, 0x89000000, -/**/ 0x3D3960F2, 0xCA5547F3, -/**/ 0x3F13005A, 0x41ACB7F4, -/**/ 0xBF13002D, 0x21000000, -/**/ 0x3D3C462B, 0x6487063D, -/**/ 0x3F128055, 0x918BC126, -/**/ 0xBF12802A, 0xC9000000, -/**/ 0x3D3F0562, 0xEFEA1107, -/**/ 0x3F120051, 0x016C8668, -/**/ 0xBF120028, 0x80000000, -/**/ 0xBD3E6066, 0x857113CE, -/**/ 0x3F11804C, 0x914EFBBA, -/**/ 0xBF118026, 0x48000000, -/**/ 0xBD3BEA30, 0xEDD9EB54, -/**/ 0x3F110048, 0x41331519, -/**/ 0xBF110024, 0x20000000, -/**/ 0xBD3996FC, 0x3BFFFF5A, -/**/ 0x3F108044, 0x1118C686, -/**/ 0xBF108022, 0x08000000, -/**/ 0xBD3765C8, 0x62F2E042, -/**/ 0x3F100040, 0x01000400, -/**/ 0xBF100020, 0x00000000, -/**/ 0xBD355595, 0x562224CD, -/**/ 0x3F0F0078, 0x21D1830C, -/**/ 0xBF0F003C, 0x10000000, -/**/ 0xBD336563, 0x095D69EB, -/**/ 0x3F0E0070, 0x81A5E62E, -/**/ 0xBF0E0038, 0x40000000, -/**/ 0xBD319431, 0x70D45290, -/**/ 0x3F0D0069, 0x217D1965, -/**/ 0xBF0D0034, 0x90000000, -/**/ 0xBD2FC201, 0x022D0EF6, -/**/ 0x3F0C0062, 0x015704B1, -/**/ 0xBF0C0031, 0x00000000, -/**/ 0xBD2C95A0, 0x5E276E21, -/**/ 0x3F0B005B, 0x2133900E, -/**/ 0xBF0B002D, 0x90000000, -/**/ 0xBD29A140, 0xE0372A42, -/**/ 0x3F0A0054, 0x8112A37D, -/**/ 0xBF0A002A, 0x40000000, -/**/ 0xBD26E2E2, 0x73BBB580, -/**/ 0x3F09004E, 0x20F426FB, -/**/ 0xBF090027, 0x10000000, -/**/ 0xBD245885, 0x04D48C20, -/**/ 0x3F080048, 0x00D80288, -/**/ 0xBF080024, 0x00000000, -/**/ 0xBD220028, 0x80613426, -/**/ 0x3F070042, 0x20BE1E23, -/**/ 0xBF070021, 0x10000000, -/**/ 0xBD1FAF99, 0xA80279F3, -/**/ 0x3F06003C, 0x80A661CA, -/**/ 0xBF06001E, 0x40000000, -/**/ 0xBD1BBAE3, 0xDC287DFE, -/**/ 0x3F050037, 0x2090B57C, -/**/ 0xBF05001B, 0x90000000, -/**/ 0xBD181E2F, 0x7B73B67C, -/**/ 0x3F040032, 0x007D0139, -/**/ 0xBF040019, 0x00000000, -/**/ 0xBD14D57C, 0x65A375F8, -/**/ 0x3F03002D, 0x206B2CFF, -/**/ 0xBF030016, 0x90000000, -/**/ 0xBD11DCCA, 0x7BF71EC1, -/**/ 0x3F020028, 0x805B20CD, -/**/ 0xBF020014, 0x40000000, -/**/ 0xBD0E6033, 0x425C4447, -/**/ 0x3F010024, 0x204CC4A3, -/**/ 0xBF010012, 0x10000000, -/**/ 0xBD0996D3, 0x730FFF5C, -/**/ 0x3F000020, 0x00400080, -/**/ 0xBF000010, 0x00000000, -/**/ 0xBD055575, 0x558888DE, -/**/ 0x3EFE0038, 0x406978C6, -/**/ 0xBEFE001C, 0x20000000, -/**/ 0xBD019418, 0xB845146A, -/**/ 0x3EFC0031, 0x0055C096, -/**/ 0xBEFC0018, 0x80000000, -/**/ 0xBCFC957A, 0xD989DB3C, -/**/ 0x3EFA002A, 0x4044A870, -/**/ 0xBEFA0015, 0x20000000, -/**/ 0xBCF6E2C6, 0x8F0EED2F, -/**/ 0x3EF80024, 0x00360051, -/**/ 0xBEF80012, 0x00000000, -/**/ 0xBCF20014, 0x40184CEB, -/**/ 0x3EF6001E, 0x40299839, -/**/ 0xBEF6000F, 0x20000000, -/**/ 0xBCEBBAC7, 0x434A1F5C, -/**/ 0x3EF40019, 0x001F4027, -/**/ 0xBEF4000C, 0x80000000, -/**/ 0xBCE4D568, 0xDD68DD6A, -/**/ 0x3EF20014, 0x4016C81A, -/**/ 0xBEF2000A, 0x20000000, -/**/ 0xBCDE6019, 0xA11710FC, -/**/ 0x3EF00010, 0x00100010, -/**/ 0xBEF00008, 0x00000000, -/**/ 0xBCD55565, 0x5562222D, -/**/ 0x3EEC0018, 0x80157013, -/**/ 0xBEEC000C, 0x40000000, -/**/ 0xBCCC9568, 0x176276C5, -/**/ 0x3EE80012, 0x000D800A, -/**/ 0xBEE80009, 0x00000000, -/**/ 0xBCC2000A, 0x20061337, -/**/ 0x3EE4000C, 0x8007D005, -/**/ 0xBEE40006, 0x40000000, -/**/ 0xBCB4D55F, 0x195A3758, -/**/ 0x3EE00008, 0x00040002, -/**/ 0xBEE00004, 0x00000000, -/**/ 0xBCA5555D, 0x5558888A, -/**/ 0x3ED80009, 0x00036001, -/**/ 0xBED80004, 0x80000000, -/**/ 0xBC920005, 0x100184CD, -/**/ 0x3ED00004, 0x00010000, -/**/ 0xBED00002, 0x00000000, -/**/ 0xBC755559, 0x55562222, -/**/ 0x3EC00002, 0x00004000, -/**/ 0xBEC00001, 0x00000000, -/**/ 0xBC455557, 0x55558889, -/**/ 0x00000000, 0x00000000, -/**/ 0x00000000, 0x00000000, -/**/ 0x00000000, 0x00000000, -/**/ 0xBEBFFFFC, 0x00008000, -/**/ 0x3EBFFFFE, 0x00000000, -/**/ 0x3C455553, 0x55558889, -/**/ 0xBECFFFF8, 0x00020000, -/**/ 0x3ECFFFFC, 0x00000000, -/**/ 0x3C755551, 0x55562222, -/**/ 0xBED7FFF7, 0x00035FFF, -/**/ 0x3ED7FFFB, 0x80000000, -/**/ 0x3C91FFFA, 0xF00184CC, -/**/ 0xBEDFFFF0, 0x0007FFFC, -/**/ 0x3EDFFFF8, 0x00000000, -/**/ 0x3CA5554D, 0x55588887, -/**/ 0xBEE3FFF3, 0x8007CFFB, -/**/ 0x3EE3FFF9, 0xC0000000, -/**/ 0x3CB4D54B, 0x915A3753, -/**/ 0xBEE7FFEE, 0x000D7FF6, -/**/ 0x3EE7FFF7, 0x00000000, -/**/ 0x3CC1FFF5, 0xE006132F, -/**/ 0xBEEBFFE7, 0x80156FED, -/**/ 0x3EEBFFF3, 0xC0000000, -/**/ 0x3CCC9542, 0x936276B2, -/**/ 0xBEEFFFE0, 0x001FFFE0, -/**/ 0x3EEFFFF0, 0x00000000, -/**/ 0x3CD55545, 0x55622217, -/**/ 0xBEF1FFEB, 0xC016C7E6, -/**/ 0x3EF1FFF5, 0xE0000000, -/**/ 0x3CDE5FE6, 0x5F1710D1, -/**/ 0xBEF3FFE7, 0x001F3FD9, -/**/ 0x3EF3FFF3, 0x80000000, -/**/ 0x3CE4D541, 0xCD68DD41, -/**/ 0xBEF5FFE1, 0xC02997C7, -/**/ 0x3EF5FFF0, 0xE0000000, -/**/ 0x3CEBBA8E, 0x124A1F13, -/**/ 0xBEF7FFDC, 0x0035FFAF, -/**/ 0x3EF7FFEE, 0x00000000, -/**/ 0x3CF1FFEB, 0xC0184CAE, -/**/ 0xBEF9FFD5, 0xC044A790, -/**/ 0x3EF9FFEA, 0xE0000000, -/**/ 0x3CF6E28E, 0xC68EECCD, -/**/ 0xBEFBFFCF, 0x0055BF6A, -/**/ 0x3EFBFFE7, 0x80000000, -/**/ 0x3CFC952F, 0xD189DAA2, -/**/ 0xBEFDFFC7, 0xC069773A, -/**/ 0x3EFDFFE3, 0xE0000000, -/**/ 0x3D0193E7, 0x480513F6, -/**/ 0xBEFFFFC0, 0x007FFF00, -/**/ 0x3EFFFFE0, 0x00000000, -/**/ 0x3D055535, 0x55888833, -/**/ 0xBF00FFDB, 0xE04CC35D, -/**/ 0x3F00FFED, 0xF0000000, -/**/ 0x3D099681, 0xE2CFFE66, -/**/ 0xBF01FFD7, 0x805B1F33, -/**/ 0x3F01FFEB, 0xC0000000, -/**/ 0x3D0E5FCC, 0xBE5C42ED, -/**/ 0xBF02FFD2, 0xE06B2B01, -/**/ 0x3F02FFE9, 0x70000000, -/**/ 0x3D11DC8A, 0xD9D71DD1, -/**/ 0xBF03FFCE, 0x007CFEC8, -/**/ 0x3F03FFE7, 0x00000000, -/**/ 0x3D14D52E, 0x45A374B3, -/**/ 0xBF04FFC8, 0xE090B284, -/**/ 0x3F04FFE4, 0x70000000, -/**/ 0x3D181DD0, 0x8553B4C7, -/**/ 0xBF05FFC3, 0x80A65E36, -/**/ 0x3F05FFE1, 0xC0000000, -/**/ 0x3D1BBA71, 0x7A287BBE, -/**/ 0xBF06FFBD, 0xE0BE19DD, -/**/ 0x3F06FFDE, 0xF0000000, -/**/ 0x3D1FAF11, 0x03E27702, -/**/ 0xBF07FFB8, 0x00D7FD78, -/**/ 0x3F07FFDC, 0x00000000, -/**/ 0x3D21FFD7, 0x80613240, -/**/ 0xBF08FFB1, 0xE0F42105, -/**/ 0x3F08FFD8, 0xF0000000, -/**/ 0x3D245825, 0xA6C489B3, -/**/ 0xBF09FFAB, 0x81129C84, -/**/ 0x3F09FFD5, 0xC0000000, -/**/ 0x3D26E272, 0xE2BBB26F, -/**/ 0xBF0AFFA4, 0xE13387F2, -/**/ 0x3F0AFFD2, 0x70000000, -/**/ 0x3D29A0BF, 0x21272669, -/**/ 0xBF0BFF9E, 0x0156FB50, -/**/ 0x3F0BFFCF, 0x00000000, -/**/ 0x3D2C950A, 0x4E276957, -/**/ 0xBF0CFF96, 0xE17D0E9B, -/**/ 0x3F0CFFCB, 0x70000000, -/**/ 0x3D2FC154, 0x551D090E, -/**/ 0xBF0DFF8F, 0x81A5D9D2, -/**/ 0x3F0DFFC7, 0xC0000000, -/**/ 0x3D3193CE, 0x90544EF1, -/**/ 0xBF0EFF87, 0xE1D174F4, -/**/ 0x3F0EFFC3, 0xF0000000, -/**/ 0x3D3364F2, 0x4D556583, -/**/ 0xBF0FFF80, 0x01FFF800, -/**/ 0x3F0FFFC0, 0x00000000, -/**/ 0x3D355515, 0x56221F78, -/**/ 0xBF107FBB, 0xF118BD7A, -/**/ 0x3F107FDD, 0xF8000000, -/**/ 0x3D376537, 0x9EEAD9D8, -/**/ 0xBF10FFB7, 0xC1330AE7, -/**/ 0x3F10FFDB, 0xE0000000, -/**/ 0x3D399659, 0x1B7FF7AE, -/**/ 0xBF117FB3, 0x714EF047, -/**/ 0x3F117FD9, 0xB8000000, -/**/ 0x3D3BE979, 0xBF51E233, -/**/ 0xBF11FFAF, 0x016C7998, -/**/ 0x3F11FFD7, 0x80000000, -/**/ 0x3D3E5F99, 0x7D7108FF, -/**/ 0xBF127FAA, 0x718BB2DA, -/**/ 0x3F127FD5, 0x39000000, -/**/ 0xBD3F0647, 0xB7721DC6, -/**/ 0xBF12FFA5, 0xC1ACA80C, -/**/ 0x3F12FFD2, 0xE1000000, -/**/ 0xBD3C4729, 0xED071532, -/**/ 0xBF137FA0, 0xF1CF652D, -/**/ 0x3F137FD0, 0x79000000, -/**/ 0xBD39620D, 0x315D596D, -/**/ 0xBF13FF9C, 0x01F3F63C, -/**/ 0x3F13FFCE, 0x01000000, -/**/ 0xBD3655F1, 0x92E45F81, -/**/ 0xBF147F96, 0xF21A6739, -/**/ 0x3F147FCB, 0x79000000, -/**/ 0xBD3321D7, 0x206B9526, -/**/ 0xBF14FF91, 0xC242C421, -/**/ 0x3F14FFC8, 0xE1000000, -/**/ 0xBD2F897B, 0xD244C12A, -/**/ 0xBF157F8C, 0x726D18F6, -/**/ 0x3F157FC6, 0x39000000, -/**/ 0xBD287B4B, 0xF93040AE, -/**/ 0xBF15FF87, 0x029971B4, -/**/ 0x3F15FFC3, 0x81000000, -/**/ 0xBD21171E, 0xD578562C, -/**/ 0xBF167F81, 0x72C7DA5C, -/**/ 0x3F167FC0, 0xB9000000, -/**/ 0xBD12B5E9, 0x0F773DB4, -/**/ 0xBF16FF7B, 0xC2F85EEC, -/**/ 0x3F16FFBD, 0xE1000000, -/**/ 0xBCE44CD3, 0x158A76C2, -/**/ 0xBF177F75, 0xF32B0B63, -/**/ 0x3F177FBA, 0xF9000000, -/**/ 0x3D0CB55C, 0x2E48511B, -/**/ 0xBF17FF70, 0x035FEBC0, -/**/ 0x3F17FFB8, 0x01000000, -/**/ 0x3D1FFAF0, 0x184C534F, -/**/ 0xBF187F69, 0xF3970C03, -/**/ 0x3F187FB4, 0xF9000000, -/**/ 0x3D292D95, 0xACC53FBE, -/**/ 0xBF18FF63, 0xC3D07829, -/**/ 0x3F18FFB1, 0xE1000000, -/**/ 0x3D315FD7, 0xE48887C8, -/**/ 0xBF197F5D, 0x740C3C32, -/**/ 0x3F197FAE, 0xB9000000, -/**/ 0x3D365AE3, 0x1DF5B242, -/**/ 0xBF19FF57, 0x044A641C, -/**/ 0x3F19FFAB, 0x81000000, -/**/ 0x3D3B88EC, 0x6FBB0E5F, -/**/ 0xBF1A7F50, 0x748AFBE7, -/**/ 0x3F1A7FA8, 0x3A000000, -/**/ 0xBD3F150C, 0x39766B40, -/**/ 0xBF1AFF49, 0xC4CE0F91, -/**/ 0x3F1AFFA4, 0xE2000000, -/**/ 0xBD397E06, 0xF14DB839, -/**/ 0xBF1B7F42, 0xF513AB19, -/**/ 0x3F1B7FA1, 0x7A000000, -/**/ 0xBD33B103, 0xCBD9CC3D, -/**/ 0xBF1BFF3C, 0x055BDA7D, -/**/ 0x3F1BFF9E, 0x02000000, -/**/ 0xBD2B5A05, 0xBB1321B5, -/**/ 0xBF1C7F34, 0xF5A6A9BD, -/**/ 0x3F1C7F9A, 0x7A000000, -/**/ 0xBD1DC410, 0xECAF9551, -/**/ 0xBF1CFF2D, 0xC5F424D6, -/**/ 0x3F1CFF96, 0xE2000000, -/**/ 0xBCEF80FF, 0x3DF3CD68, -/**/ 0xBF1D7F26, 0x764457C8, -/**/ 0x3F1D7F93, 0x3A000000, -/**/ 0x3D16CBC7, 0x4271E737, -/**/ 0xBF1DFF1F, 0x06974E91, -/**/ 0x3F1DFF8F, 0x82000000, -/**/ 0x3D2939D2, 0x1D134848, -/**/ 0xBF1E7F17, 0x76ED1530, -/**/ 0x3F1E7F8B, 0xBA000000, -/**/ 0x3D33C2DD, 0xA9892C73, -/**/ 0xBF1EFF0F, 0xC745B7A4, -/**/ 0x3F1EFF87, 0xE2000000, -/**/ 0x3D3B25CF, 0x8AEC69D5, -/**/ 0xBF1F7F07, 0xF7A141EA, -/**/ 0x3F1F7F83, 0xFB000000, -/**/ 0xBD3D3941, 0x645B412A, -/**/ 0xBF1FFF00, 0x07FFC002, -/**/ 0x3F1FFF80, 0x03000000, -/**/ 0xBD355955, 0x3BBC6662, -/**/ 0xBF203F7B, 0xFC309EF5, -/**/ 0x3F203FBD, 0xFD800000, -/**/ 0xBD2A72D8, 0x260B17B3, -/**/ 0xBF207F77, 0xE462E3D0, -/**/ 0x3F207FBB, 0xF1800000, -/**/ 0xBD136218, 0x0994AE68, -/**/ 0xBF20BF73, 0xBC96B492, -/**/ 0x3F20BFB9, 0xDD800000, -/**/ 0x3D0E52E6, 0xECB2641F, -/**/ 0xBF20FF6F, 0x84CC1739, -/**/ 0x3F20FFB7, 0xC1800000, -/**/ 0x3D296078, 0xE7FCF60B, -/**/ 0xBF213F6B, 0x3D0311C6, -/**/ 0x3F213FB5, 0x9D800000, -/**/ 0x3D35DA18, 0xA7850AFF, -/**/ 0xBF217F66, 0xE53BAA36, -/**/ 0x3F217FB3, 0x71800000, -/**/ 0x3D3F48F1, 0x5E7BB444, -/**/ 0xBF21BF62, 0x7D75E68A, -/**/ 0x3F21BFB1, 0x3E000000, -/**/ 0xBD370239, 0x812BC469, -/**/ 0xBF21FF5E, 0x05B1CCC0, -/**/ 0x3F21FFAF, 0x02000000, -/**/ 0xBD2A0CD0, 0x23BF1A4D, -/**/ 0xBF223F59, 0x7DEF62D8, -/**/ 0x3F223FAC, 0xBE000000, -/**/ 0xBD0614D3, 0x736E3623, -/**/ 0xBF227F54, 0xE62EAED0, -/**/ 0x3F227FAA, 0x72000000, -/**/ 0x3D1F28BD, 0x37EDEDB0, -/**/ 0xBF22BF50, 0x3E6FB6A9, -/**/ 0x3F22BFA8, 0x1E000000, -/**/ 0x3D32A0F5, 0x07CE33C8, -/**/ 0xBF22FF4B, 0x86B28060, -/**/ 0x3F22FFA5, 0xC2000000, -/**/ 0x3D3DC2B6, 0xA31C6A8D, -/**/ 0xBF233F46, 0xBEF711F6, -/**/ 0x3F233FA3, 0x5E800000, -/**/ 0xBD36CF8B, 0xFC67C9FB, -/**/ 0xBF237F41, 0xE73D7169, -/**/ 0x3F237FA0, 0xF2800000, -/**/ 0xBD2629A5, 0xE6D88A89, -/**/ 0xBF23BF3C, 0xFF85A4B8, -/**/ 0x3F23BF9E, 0x7E800000, -/**/ 0x3CEE7C34, 0x202574EC, -/**/ 0xBF23FF38, 0x07CFB1E3, -/**/ 0x3F23FF9C, 0x02800000, -/**/ 0x3D2A9723, 0x46E594C1, -/**/ 0xBF243F33, 0x001B9EE8, -/**/ 0x3F243F99, 0x7E800000, -/**/ 0x3D39F33C, 0xF61AE74C, -/**/ 0xBF247F2D, 0xE86971C7, -/**/ 0x3F247F96, 0xF3000000, -/**/ 0xBD39141C, 0x85341E31, -/**/ 0xBF24BF28, 0xC0B9307F, -/**/ 0x3F24BF94, 0x5F000000, -/**/ 0xBD2792F5, 0xDA0FAF09, -/**/ 0xBF24FF23, 0x890AE10E, -/**/ 0x3F24FF91, 0xC3000000, -/**/ 0x3CFD4219, 0xFB239430, -/**/ 0xBF253F1E, 0x415E8974, -/**/ 0x3F253F8F, 0x1F000000, -/**/ 0x3D2F8B72, 0x0359434A, -/**/ 0xBF257F18, 0xE9B42FAF, -/**/ 0x3F257F8C, 0x73000000, -/**/ 0x3D3E0C4B, 0x1939FEDF, -/**/ 0xBF25BF13, 0x820BD9BF, -/**/ 0x3F25BF89, 0xBF800000, -/**/ 0xBD335728, 0x39B301E2, -/**/ 0xBF25FF0E, 0x0A658DA3, -/**/ 0x3F25FF87, 0x03800000, -/**/ 0xBD118E84, 0x5E1E8D4F, -/**/ 0xBF263F08, 0x82C15159, -/**/ 0x3F263F84, 0x3F800000, -/**/ 0x3D25CFC0, 0xBDDDD045, -/**/ 0xBF267F02, 0xEB1F2AE1, -/**/ 0x3F267F81, 0x73800000, -/**/ 0x3D3A8C5C, 0x08837E99, -/**/ 0xBF26BEFD, 0x437F203A, -/**/ 0x3F26BF7E, 0xA0000000, -/**/ 0xBD35752E, 0x3C56F12D, -/**/ 0xBF26FEF7, 0x8BE13762, -/**/ 0x3F26FF7B, 0xC4000000, -/**/ 0xBD146EFA, 0x46359E28, -/**/ 0xBF273EF1, 0xC4457659, -/**/ 0x3F273F78, 0xE0000000, -/**/ 0x3D273355, 0xCD265865, -/**/ 0xBF277EEB, 0xECABE31C, -/**/ 0x3F277F75, 0xF4000000, -/**/ 0x3D3CAC0E, 0x095DEBF8, -/**/ 0xBF27BEE6, 0x051483AC, -/**/ 0x3F27BF73, 0x00800000, -/**/ 0xBD31E395, 0x4C39F4DB, -/**/ 0xBF27FEE0, 0x0D7F5E08, -/**/ 0x3F27FF70, 0x04800000, -/**/ 0xBCB43F3D, 0xA1314B81, -/**/ 0xBF283EDA, 0x05EC782D, -/**/ 0x3F283F6D, 0x00800000, -/**/ 0x3D321B10, 0x115B8D70, -/**/ 0xBF287ED3, 0xEE5BD81B, -/**/ 0x3F287F69, 0xF5000000, -/**/ 0xBD3B54A7, 0x83704FE1, -/**/ 0xBF28BECD, 0xC6CD83D1, -/**/ 0x3F28BF66, 0xE1000000, -/**/ 0xBD20C4CC, 0x41229C91, -/**/ 0xBF28FEC7, 0x8F41814D, -/**/ 0x3F28FF63, 0xC5000000, -/**/ 0x3D25E5A8, 0x2A183F17, -/**/ 0xBF293EC1, 0x47B7D68F, -/**/ 0x3F293F60, 0xA1000000, -/**/ 0x3D3EAC06, 0xF81B997D, -/**/ 0xBF297EBA, 0xF0308995, -/**/ 0x3F297F5D, 0x75800000, -/**/ 0xBD2A6B9B, 0x3A1E5BAD, -/**/ 0xBF29BEB4, 0x88ABA05E, -/**/ 0x3F29BF5A, 0x41800000, -/**/ 0x3D1D3958, 0xBDFE3C77, -/**/ 0xBF29FEAE, 0x112920E9, -/**/ 0x3F29FF57, 0x05800000, -/**/ 0x3D3C3972, 0x375BA904, -/**/ 0xBF2A3EA7, 0x89A91135, -/**/ 0x3F2A3F53, 0xC2000000, -/**/ 0xBD2CE6F3, 0x588DE85B, -/**/ 0xBF2A7EA0, 0xF22B7740, -/**/ 0x3F2A7F50, 0x76000000, -/**/ 0x3D1D2249, 0x75AEDBFD, -/**/ 0xBF2ABE9A, 0x4AB05909, -/**/ 0x3F2ABF4D, 0x22000000, -/**/ 0x3D3D6E96, 0x2CE7BDAC, -/**/ 0xBF2AFE93, 0x9337BC90, -/**/ 0x3F2AFF49, 0xC6800000, -/**/ 0xBD2800DC, 0xCB7D724C, -/**/ 0xBF2B3E8C, 0xCBC1A7D1, -/**/ 0x3F2B3F46, 0x62800000, -/**/ 0x3D25F908, 0xFA591B29, -/**/ 0xBF2B7E85, 0xF44E20CE, -/**/ 0x3F2B7F42, 0xF7000000, -/**/ 0xBD3D9991, 0x53021ED8, -/**/ 0xBF2BBE7F, 0x0CDD2D83, -/**/ 0x3F2BBF3F, 0x83000000, -/**/ 0xBD1706BF, 0xFD596AD6, -/**/ 0xBF2BFE78, 0x156ED3F0, -/**/ 0x3F2BFF3C, 0x07000000, -/**/ 0x3D328528, 0x4EC45253, -/**/ 0xBF2C3E71, 0x0E031A14, -/**/ 0x3F2C3F38, 0x83800000, -/**/ 0xBD34C408, 0x927D8A9E, -/**/ 0xBF2C7E69, 0xF69A05ED, -/**/ 0x3F2C7F34, 0xF7800000, -/**/ 0x3D118EF4, 0xCAE2C25F, -/**/ 0xBF2CBE62, 0xCF339D7A, -/**/ 0x3F2CBF31, 0x63800000, -/**/ 0x3D3DFD79, 0x73DBBB41, -/**/ 0xBF2CFE5B, 0x97CFE6B9, -/**/ 0x3F2CFF2D, 0xC8000000, -/**/ 0xBD1FD74F, 0xE7FE77E6, -/**/ 0xBF2D3E54, 0x506EE7AA, -/**/ 0x3F2D3F2A, 0x24000000, -/**/ 0x3D328AD4, 0xBDDB871F, -/**/ 0xBF2D7E4C, 0xF910A64A, -/**/ 0x3F2D7F26, 0x78800000, -/**/ 0xBD327F8C, 0x903DDD81, -/**/ 0xBF2DBE45, 0x91B52899, -/**/ 0x3F2DBF22, 0xC4800000, -/**/ 0x3D21D80F, 0xDF52840A, -/**/ 0xBF2DFE3E, 0x1A5C7495, -/**/ 0x3F2DFF1F, 0x09000000, -/**/ 0xBD3B316D, 0xEED9F651, -/**/ 0xBF2E3E36, 0x9306903D, -/**/ 0x3F2E3F1B, 0x45000000, -/**/ 0x3CF2911A, 0x76DB3C6B, -/**/ 0xBF2E7E2E, 0xFBB3818F, -/**/ 0x3F2E7F17, 0x79000000, -/**/ 0x3D3DFC86, 0x85559113, -/**/ 0xBF2EBE27, 0x54634E89, -/**/ 0x3F2EBF13, 0xA5800000, -/**/ 0xBD12D83E, 0x0AB3DBE7, -/**/ 0xBF2EFE1F, 0x9D15FD2B, -/**/ 0x3F2EFF0F, 0xC9800000, -/**/ 0x3D39124F, 0x617B99F1, -/**/ 0xBF2F3E17, 0xD5CB9373, -/**/ 0x3F2F3F0B, 0xE6000000, -/**/ 0xBD2152B9, 0xF8F64DA1, -/**/ 0xBF2F7E0F, 0xFE841760, -/**/ 0x3F2F7F07, 0xFA000000, -/**/ 0x3D3617EB, 0x34C4735B, -/**/ 0xBF2FBE08, 0x173F8EEF, -/**/ 0x3F2FBF04, 0x06800000, -/**/ 0xBD2551B0, 0x739FA712, -/**/ 0xBF2FFE00, 0x1FFE0020, -/**/ 0x3F2FFF00, 0x0A800000, -/**/ 0x3D351558, 0x885DE027, -/**/ 0xBF301EFC, 0x0C5FB879, -/**/ 0x3F301F7E, 0x03800000, -/**/ 0xBD255905, 0x68F8FC50, -/**/ 0xBF303EF8, 0x00C1F3B0, -/**/ 0x3F303F7B, 0xFD800000, -/**/ 0x3D361295, 0xDF771CF4, -/**/ 0xBF305EF3, 0xED25B4B7, -/**/ 0x3F305F79, 0xF3C00000, -/**/ 0xBD2158BB, 0xD8A255DB, -/**/ 0xBF307EEF, 0xD18AFE8B, -/**/ 0x3F307F77, 0xE5C00000, -/**/ 0x3D3917A1, 0xB740E625, -/**/ 0xBF309EEB, 0xADF1D42C, -/**/ 0x3F309F75, 0xD4000000, -/**/ 0xBD1281AD, 0x9C716D59, -/**/ 0xBF30BEE7, 0x825A3899, -/**/ 0x3F30BF73, 0xBE000000, -/**/ 0x3D3E2C7A, 0x86ED7DDC, -/**/ 0xBF30DEE3, 0x4EC42ED1, -/**/ 0x3F30DF71, 0xA4400000, -/**/ 0x3CF7F534, 0xF54F7E28, -/**/ 0xBF30FEDF, 0x132FB9D5, -/**/ 0x3F30FF6F, 0x86800000, -/**/ 0xBD3AA6E1, 0x404F4E01, -/**/ 0xBF311EDA, 0xCF9CDCA2, -/**/ 0x3F311F6D, 0x64800000, -/**/ 0x3D2375B9, 0x4A6EC981, -/**/ 0xBF313ED6, 0x840B9A38, -/**/ 0x3F313F6B, 0x3EC00000, -/**/ 0xBD315A73, 0x33401DD0, -/**/ 0xBF315ED2, 0x307BF596, -/**/ 0x3F315F69, 0x14C00000, -/**/ 0x3D341A2F, 0x02C11605, -/**/ 0xBF317ECD, 0xD4EDF1BC, -/**/ 0x3F317F66, 0xE7000000, -/**/ 0xBD1798F3, 0xB2B7E8C5, -/**/ 0xBF319EC9, 0x716191A8, -/**/ 0x3F319F64, 0xB5400000, -/**/ 0xBD3F5AB7, 0x35D62ED5, -/**/ 0xBF31BEC5, 0x05D6D85A, -/**/ 0x3F31BF62, 0x7F400000, -/**/ 0x3D1EF6FF, 0xCA7EC7CD, -/**/ 0xBF31DEC0, 0x924DC8D2, -/**/ 0x3F31DF60, 0x45800000, -/**/ 0xBD309BD7, 0xA8550396, -/**/ 0xBF31FEBC, 0x16C6660D, -/**/ 0x3F31FF5E, 0x07800000, -/**/ 0x3D379981, 0xC3E31F70, -/**/ 0xBF321EB7, 0x9340B30B, -/**/ 0x3F321F5B, 0xC5C00000, -/**/ 0x3CD7B300, 0x5FE92B94, -/**/ 0xBF323EB3, 0x07BCB2CC, -/**/ 0x3F323F59, 0x80000000, -/**/ 0xBD364AF9, 0x25A7CF34, -/**/ 0xBF325EAE, 0x743A684F, -/**/ 0x3F325F57, 0x36000000, -/**/ 0x3D339D32, 0x17E48399, -/**/ 0xBF327EA9, 0xD8B9D692, -/**/ 0x3F327F54, 0xE8400000, -/**/ 0xBCFE7B27, 0xCC387BD1, -/**/ 0xBF329EA5, 0x353B0095, -/**/ 0x3F329F52, 0x96800000, -/**/ 0xBD36D8A7, 0x1AE7FA80, -/**/ 0xBF32BEA0, 0x89BDE957, -/**/ 0x3F32BF50, 0x40800000, -/**/ 0x3D34CB54, 0x05CF3DC3, -/**/ 0xBF32DE9B, 0xD64293D7, -/**/ 0x3F32DF4D, 0xE6C00000, -/**/ 0x3CF053EA, 0xD5A4F691, -/**/ 0xBF32FE97, 0x1AC90315, -/**/ 0x3F32FF4B, 0x89000000, -/**/ 0xBD3229E7, 0x5CAE7B16, -/**/ 0xBF331E92, 0x57513A0F, -/**/ 0x3F331F49, 0x27000000, -/**/ 0x3D3B3EE1, 0xAEED4509, -/**/ 0xBF333E8D, 0x8BDB3BC4, -/**/ 0x3F333F46, 0xC1400000, -/**/ 0x3D228133, 0x2E0C2605, -/**/ 0xBF335E88, 0xB8670B34, -/**/ 0x3F335F44, 0x57800000, -/**/ 0xBD20477F, 0xBBD6E280, -/**/ 0xBF337E83, 0xDCF4AB5D, -/**/ 0x3F337F41, 0xE9C00000, -/**/ 0xBD38ED2A, 0xE9CE8AFC, -/**/ 0xBF339E7E, 0xF9841F3F, -/**/ 0x3F339F3F, 0x77C00000, -/**/ 0x3D36E558, 0x39159F9B, -/**/ 0xBF33BE7A, 0x0E1569D9, -/**/ 0x3F33BF3D, 0x02000000, -/**/ 0x3D1D5325, 0x40681634, -/**/ 0xBF33DE75, 0x1AA88E2A, -/**/ 0x3F33DF3A, 0x88400000, -/**/ 0xBD1E775F, 0x7F2112CE, -/**/ 0xBF33FE70, 0x1F3D8F31, -/**/ 0x3F33FF38, 0x0A800000, -/**/ 0xBD35F18B, 0x91F80D1B, -/**/ 0xBF341E6B, 0x1BD46FED, -/**/ 0x3F341F35, 0x88800000, -/**/ 0x3D3C5AAD, 0xFDC3FC2F, -/**/ 0xBF343E66, 0x106D335D, -/**/ 0x3F343F33, 0x02C00000, -/**/ 0x3D2E8FA9, 0x268A89F1, -/**/ 0xBF345E60, 0xFD07DC80, -/**/ 0x3F345F30, 0x79000000, -/**/ 0x3D06B73F, 0x902AC9EE, -/**/ 0xBF347E5B, 0xE1A46E55, -/**/ 0x3F347F2D, 0xEB400000, -/**/ 0xBD21EE30, 0x45C43959, -/**/ 0xBF349E56, 0xBE42EBDC, -/**/ 0x3F349F2B, 0x59800000, -/**/ 0xBD34212B, 0xE8B753E8, -/**/ 0xBF34BE51, 0x92E35813, -/**/ 0x3F34BF28, 0xC3C00000, -/**/ 0xBD3EA653, 0x9D2064DB, -/**/ 0xBF34DE4C, 0x5F85B5F9, -/**/ 0x3F34DF26, 0x29C00000, -/**/ 0x3D377A70, 0x81DCB6FB, -/**/ 0xBF34FE47, 0x242A088D, -/**/ 0x3F34FF23, 0x8C000000, -/**/ 0x3D2C8440, 0x6BB44A6D, -/**/ 0xBF351E41, 0xE0D052CF, -/**/ 0x3F351F20, 0xEA400000, -/**/ 0x3D16C6ED, 0x0048AAF8, -/**/ 0xBF353E3C, 0x957897BD, -/**/ 0x3F353F1E, 0x44800000, -/**/ 0xBD01ADF4, 0xF506A07E, -/**/ 0xBF355E37, 0x4222DA57, -/**/ 0x3F355F1B, 0x9AC00000, -/**/ 0xBD22E69B, 0x4B88A655, -/**/ 0xBF357E31, 0xE6CF1D9B, -/**/ 0x3F357F18, 0xED000000, -/**/ 0xBD3005F2, 0x153DAEB0, -/**/ 0xBF359E2C, 0x837D6488, -/**/ 0x3F359F16, 0x3B400000, -/**/ 0xBD35ECAC, 0x2D5222B4, -/**/ 0xBF35BE27, 0x182DB21E, -/**/ 0x3F35BF13, 0x85800000, -/**/ 0xBD3B267C, 0x2EA6CB14, -/**/ 0xBF35DE21, 0xA4E0095B, -/**/ 0x3F35DF10, 0xCBC00000, -/**/ 0xBD3FB262, 0x5A40A340, -/**/ 0xBF35FE1C, 0x29946D3F, -/**/ 0x3F35FF0E, 0x0DC00000, -/**/ 0x3D3C70A1, 0x0E7B79ED, -/**/ 0xBF361E16, 0xA64AE0C7, -/**/ 0x3F361F0B, 0x4C000000, -/**/ 0x3D39438D, 0xC9C8D263, -/**/ 0xBF363E11, 0x1B0366F4, -/**/ 0x3F363F08, 0x86400000, -/**/ 0x3D36C763, 0x9582CD0C, -/**/ 0xBF365E0B, 0x87BE02C5, -/**/ 0x3F365F05, 0xBC800000, -/**/ 0x3D34FD22, 0x2F24F1F9, -/**/ 0xBF367E05, 0xEC7AB737, -/**/ 0x3F367F02, 0xEEC00000, -/**/ 0x3D33E5C9, 0x53CAEA94, -/**/ 0xBF369E00, 0x4939874A, -/**/ 0x3F369F00, 0x1D000000, -/**/ 0x3D338258, 0xC03081D0, -/**/ 0xBF36BDFA, 0x9DFA75FE, -/**/ 0x3F36BEFD, 0x47400000, -/**/ 0x3D33D3D0, 0x30B1A458, -/**/ 0xBF36DDF4, 0xEABD8651, -/**/ 0x3F36DEFA, 0x6D800000, -/**/ 0x3D34DB2F, 0x614A60C1, -/**/ 0xBF36FDEF, 0x2F82BB41, -/**/ 0x3F36FEF7, 0x8FC00000, -/**/ 0x3D369976, 0x0D96E7B8, -/**/ 0xBF371DE9, 0x6C4A17CF, -/**/ 0x3F371EF4, 0xAE000000, -/**/ 0x3D390FA3, 0xF0D38C30, -/**/ 0xBF373DE3, 0xA1139EF8, -/**/ 0x3F373EF1, 0xC8400000, -/**/ 0x3D3C3EB8, 0xC5DCC397, -/**/ 0xBF375DDD, 0xCDDF53BC, -/**/ 0x3F375EEE, 0xDEC00000, -/**/ 0xBD3FD84B, 0xB8D0D9FD, -/**/ 0xBF377DD7, 0xF2AD3919, -/**/ 0x3F377EEB, 0xF1000000, -/**/ 0xBD3B3469, 0xD11891A0, -/**/ 0xBF379DD2, 0x0F7D520F, -/**/ 0x3F379EE8, 0xFF400000, -/**/ 0xBD35D4A1, 0xC93D855B, -/**/ 0xBF37BDCC, 0x244FA19D, -/**/ 0x3F37BEE6, 0x09800000, -/**/ 0xBD2F6FE7, 0xCFC56806, -/**/ 0xBF37DDC6, 0x31242AC1, -/**/ 0x3F37DEE3, 0x0FC00000, -/**/ 0xBD21BAC0, 0xE815F202, -/**/ 0xBF37FDC0, 0x35FAF079, -/**/ 0x3F37FEE0, 0x12000000, -/**/ 0xBCF43E7B, 0x5190C28B, -/**/ 0xBF381DBA, 0x32D3F5C6, -/**/ 0x3F381EDD, 0x10400000, -/**/ 0x3D1C55D8, 0x34C1F9E9, -/**/ 0xBF383DB4, 0x27AF3DA6, -/**/ 0x3F383EDA, 0x0A800000, -/**/ 0x3D302FB8, 0x8AAF36D4, -/**/ 0xBF385DAE, 0x148CCB18, -/**/ 0x3F385ED7, 0x00C00000, -/**/ 0x3D3A0BDF, 0x7AE0D0F8, -/**/ 0xBF387DA7, 0xF96CA11B, -/**/ 0x3F387ED3, 0xF3400000, -/**/ 0xBD3B5515, 0x6B1CDAAF, -/**/ 0xBF389DA1, 0xD64EC2AD, -/**/ 0x3F389ED0, 0xE1800000, -/**/ 0xBD2FE44C, 0xE1179E5E, -/**/ 0xBF38BD9B, 0xAB3332CD, -/**/ 0x3F38BECD, 0xCBC00000, -/**/ 0xBD0E529E, 0xF86F56EC, -/**/ 0xBF38DD95, 0x7819F47A, -/**/ 0x3F38DECA, 0xB2000000, -/**/ 0x3D2246C3, 0xFEB631AB, -/**/ 0xBF38FD8F, 0x3D030AB4, -/**/ 0x3F38FEC7, 0x94400000, -/**/ 0x3D36D7FA, 0xE04DA791, -/**/ 0xBF391D88, 0xF9EE7878, -/**/ 0x3F391EC4, 0x72C00000, -/**/ 0xBD3AAB89, 0x86F7ADBB, -/**/ 0xBF393D82, 0xAEDC40C7, -/**/ 0x3F393EC1, 0x4D000000, -/**/ 0xBD26CC57, 0x032C6155, -/**/ 0xBF395D7C, 0x5BCC669D, -/**/ 0x3F395EBE, 0x23400000, -/**/ 0x3D12A452, 0x93C3EB3D, -/**/ 0xBF397D76, 0x00BEECFB, -/**/ 0x3F397EBA, 0xF5800000, -/**/ 0x3D358336, 0xA0BCD695, -/**/ 0xBF399D6F, 0x9DB3D6E0, -/**/ 0x3F399EB7, 0xC4000000, -/**/ 0xBD38D6C5, 0xDA737570, -/**/ 0xBF39BD69, 0x32AB2749, -/**/ 0x3F39BEB4, 0x8E400000, -/**/ 0xBD198F84, 0x65026C7D, -/**/ 0xBF39DD62, 0xBFA4E136, -/**/ 0x3F39DEB1, 0x54800000, -/**/ 0x3D29B9C9, 0x2EA9B41A, -/**/ 0xBF39FD5C, 0x44A107A5, -/**/ 0x3F39FEAE, 0x17000000, -/**/ 0xBD3F1375, 0x16137ACF, -/**/ 0xBF3A1D55, 0xC19F9D96, -/**/ 0x3F3A1EAA, 0xD5400000, -/**/ 0xBD2467DC, 0xDE73AFA0, -/**/ 0xBF3A3D4F, 0x36A0A607, -/**/ 0x3F3A3EA7, 0x8F800000, -/**/ 0x3D26F8F0, 0x7B8357C6, -/**/ 0xBF3A5D48, 0xA3A423F7, -/**/ 0x3F3A5EA4, 0x46000000, -/**/ 0xBD3E0141, 0x5DA0DFB7, -/**/ 0xBF3A7D42, 0x08AA1A64, -/**/ 0x3F3A7EA0, 0xF8400000, -/**/ 0xBD1AB06E, 0x41050D29, -/**/ 0xBF3A9D3B, 0x65B28C4E, -/**/ 0x3F3A9E9D, 0xA6800000, -/**/ 0x3D317CE9, 0x56A0E005, -/**/ 0xBF3ABD34, 0xBABD7CB3, -/**/ 0x3F3ABE9A, 0x51000000, -/**/ 0xBD358532, 0xF899EF39, -/**/ 0xBF3ADD2E, 0x07CAEE92, -/**/ 0x3F3ADE96, 0xF7400000, -/**/ 0x3D113A3C, 0xC83BF5C2, -/**/ 0xBF3AFD27, 0x4CDAE4EA, -/**/ 0x3F3AFE93, 0x99800000, -/**/ 0x3D3EF92F, 0x863C7C8E, -/**/ 0xBF3B1D20, 0x89ED62B9, -/**/ 0x3F3B1E90, 0x38000000, -/**/ 0xBD161149, 0x3341CC3C, -/**/ 0xBF3B3D19, 0xBF026AFE, -/**/ 0x3F3B3E8C, 0xD2400000, -/**/ 0x3D36D709, 0x67C955DF, -/**/ 0xBF3B5D12, 0xEC1A00B8, -/**/ 0x3F3B5E89, 0x68C00000, -/**/ 0xBD27E77B, 0x5AE9B17A, -/**/ 0xBF3B7D0C, 0x113426E6, -/**/ 0x3F3B7E85, 0xFB000000, -/**/ 0x3D321C58, 0x219679DE, -/**/ 0xBF3B9D05, 0x2E50E086, -/**/ 0x3F3B9E82, 0x89800000, -/**/ 0xBD2DEF6A, 0xFAA62113, -/**/ 0xBF3BBCFE, 0x43703097, -/**/ 0x3F3BBE7F, 0x13C00000, -/**/ 0x3D30D119, 0x23305306, -/**/ 0xBF3BDCF7, 0x50921A17, -/**/ 0x3F3BDE7B, 0x9A400000, -/**/ 0xBD2D1078, 0x9FBACE27, -/**/ 0xBF3BFCF0, 0x55B6A006, -/**/ 0x3F3BFE78, 0x1C800000, -/**/ 0x3D32FD49, 0xD625DF1E, -/**/ 0xBF3C1CE9, 0x52DDC563, -/**/ 0x3F3C1E74, 0x9B000000, -/**/ 0xBD253AA9, 0x7D07255B, -/**/ 0xBF3C3CE2, 0x48078D2B, -/**/ 0x3F3C3E71, 0x15400000, -/**/ 0x3D38A8E7, 0x9E08B538, -/**/ 0xBF3C5CDB, 0x3533FA5D, -/**/ 0x3F3C5E6D, 0x8BC00000, -/**/ 0xBD09780B, 0x45956AFC, -/**/ 0xBF3C7CD4, 0x1A630FF9, -/**/ 0x3F3C7E69, 0xFE400000, -/**/ 0xBD3E2410, 0x2792F44E, -/**/ 0xBF3C9CCC, 0xF794D0FC, -/**/ 0x3F3C9E66, 0x6C800000, -/**/ 0x3D1F2AEC, 0x30AB4456, -/**/ 0xBF3CBCC5, 0xCCC94066, -/**/ 0x3F3CBE62, 0xD7000000, -/**/ 0xBD3161A0, 0x231641D5, -/**/ 0xBF3CDCBE, 0x9A006135, -/**/ 0x3F3CDE5F, 0x3D400000, -/**/ 0x3D3657DD, 0xF4AD1934, -/**/ 0xBF3CFCB7, 0x5F3A3668, -/**/ 0x3F3CFE5B, 0x9FC00000, -/**/ 0xBCF07CB0, 0x2E7AC798, -/**/ 0xBF3D1CB0, 0x1C76C2FD, -/**/ 0x3F3D1E57, 0xFE400000, -/**/ 0xBD377F9B, 0x6090F643, -/**/ 0xBF3D3CA8, 0xD1B609F3, -/**/ 0x3F3D3E54, 0x58800000, -/**/ 0x3D32F16C, 0x849503E6, -/**/ 0xBF3D5CA1, 0x7EF80E49, -/**/ 0x3F3D5E50, 0xAF000000, -/**/ 0xBCFB3B3A, 0xAF1CA4EA, -/**/ 0xBF3D7C9A, 0x243CD2FE, -/**/ 0x3F3D7E4D, 0x01800000, -/**/ 0xBD356DFC, 0x4701415B, -/**/ 0xBF3D9C92, 0xC1845B0F, -/**/ 0x3F3D9E49, 0x4FC00000, -/**/ 0x3D37C392, 0x582AEA48, -/**/ 0xBF3DBC8B, 0x56CEA97C, -/**/ 0x3F3DBE45, 0x9A400000, -/**/ 0x3D1787DF, 0x67DCC15E, -/**/ 0xBF3DDC83, 0xE41BC143, -/**/ 0x3F3DDE41, 0xE0C00000, -/**/ 0xBD262398, 0x352F961F, -/**/ 0xBF3DFC7C, 0x696BA563, -/**/ 0x3F3DFE3E, 0x23400000, -/**/ 0xBD3B16B9, 0xDEDD373A, -/**/ 0xBF3E1C74, 0xE6BE58DA, -/**/ 0x3F3E1E3A, 0x61800000, -/**/ 0x3D35D42E, 0x336BE94B, -/**/ 0xBF3E3C6D, 0x5C13DEA7, -/**/ 0x3F3E3E36, 0x9C000000, -/**/ 0x3D1EBFAF, 0x08A303A2, -/**/ 0xBF3E5C65, 0xC96C39C9, -/**/ 0x3F3E5E32, 0xD2800000, -/**/ 0xBD160A06, 0x34856362, -/**/ 0xBF3E7C5E, 0x2EC76D3D, -/**/ 0x3F3E7E2F, 0x05000000, -/**/ 0xBD31C21A, 0x154CDF1A, -/**/ 0xBF3E9C56, 0x8C257C04, -/**/ 0x3F3E9E2B, 0x33800000, -/**/ 0xBD3D0DDE, 0x31941F7F, -/**/ 0xBF3EBC4E, 0xE186691B, -/**/ 0x3F3EBE27, 0x5DC00000, -/**/ 0x3D389B31, 0xC26EC60D, -/**/ 0xBF3EDC47, 0x2EEA3781, -/**/ 0x3F3EDE23, 0x84400000, -/**/ 0x3D2E742A, 0xD583BEF8, -/**/ 0xBF3EFC3F, 0x7450EA34, -/**/ 0x3F3EFE1F, 0xA6C00000, -/**/ 0x3D1B3F31, 0xAC2DA351, -/**/ 0xBF3F1C37, 0xB1BA8433, -/**/ 0x3F3F1E1B, 0xC5400000, -/**/ 0xBCE45533, 0x2DC67430, -/**/ 0xBF3F3C2F, 0xE727087C, -/**/ 0x3F3F3E17, 0xDFC00000, -/**/ 0xBD1C7133, 0xFF1174AE, -/**/ 0xBF3F5C28, 0x14967A0F, -/**/ 0x3F3F5E13, 0xF6400000, -/**/ 0xBD29383C, 0x4AE098DC, -/**/ 0xBF3F7C20, 0x3A08DBE9, -/**/ 0x3F3F7E10, 0x08C00000, -/**/ 0xBD31211D, 0x684B0B3B, -/**/ 0xBF3F9C18, 0x577E3109, -/**/ 0x3F3F9E0C, 0x17400000, -/**/ 0xBD34AA4B, 0x268D7464, -/**/ 0xBF3FBC10, 0x6CF67C6E, -/**/ 0x3F3FBE08, 0x21C00000, -/**/ 0xBD3736A7, 0xBED03388, -/**/ 0xBF3FDC08, 0x7A71C116, -/**/ 0x3F3FDE04, 0x28400000, -/**/ 0xBD38C533, 0x900BC4E5, -/**/ 0xBF3FFC00, 0x7FF00200, -/**/ 0x3F3FFE00, 0x2AC00000, -/**/ 0xBD3954EE, 0xF9987527, -/**/ 0xBF400DFC, 0x3EB8A115, -/**/ 0x3F400EFE, 0x14A00000, -/**/ 0xBD38E4DA, 0x5B2E613B, -/**/ 0xBF401DF8, 0x397AC249, -/**/ 0x3F401EFC, 0x11E00000, -/**/ 0xBD3773F6, 0x14E5761B, -/**/ 0xBF402DF4, 0x303E661C, -/**/ 0x3F402EFA, 0x0D200000, -/**/ 0xBD350142, 0x873570A0, -/**/ 0xBF403DF0, 0x23038E0C, -/**/ 0x3F403EF8, 0x06600000, -/**/ 0xBD318BC0, 0x12F5DD53, -/**/ 0xBF404DEC, 0x11CA3B9A, -/**/ 0x3F404EF5, 0xFDA00000, -/**/ 0xBD2A24DE, 0x32BC307C, -/**/ 0xBF405DE7, 0xFC927044, -/**/ 0x3F405EF3, 0xF2E00000, -/**/ 0xBD1E513F, 0xF01532DA, -/**/ 0xBF406DE3, 0xE35C2D8A, -/**/ 0x3F406EF1, 0xE6200000, -/**/ 0xBCF10631, 0xCE27534E, -/**/ 0xBF407DDF, 0xC62774EA, -/**/ 0x3F407EEF, 0xD7600000, -/**/ 0x3D19E95C, 0x86CE9380, -/**/ 0xBF408DDB, 0xA4F447E4, -/**/ 0x3F408EED, 0xC6A00000, -/**/ 0x3D2E19BC, 0xBA0CD2C3, -/**/ 0xBF409DD7, 0x7FC2A7F8, -/**/ 0x3F409EEB, 0xB3E00000, -/**/ 0x3D38A832, 0x31FF7199, -/**/ 0xBF40ADD3, 0x569296A4, -/**/ 0x3F40AEE9, 0x9F400000, -/**/ 0xBD3CB2AD, 0xC2D77791, -/**/ 0xBF40BDCF, 0x29641567, -/**/ 0x3F40BEE7, 0x88800000, -/**/ 0xBD3102C1, 0xE5545563, -/**/ 0xBF40CDCA, 0xF83725C2, -/**/ 0x3F40CEE5, 0x6FC00000, -/**/ 0xBD111C2A, 0x66B3E48D, -/**/ 0xBF40DDC6, 0xC30BC932, -/**/ 0x3F40DEE3, 0x55000000, -/**/ 0x3D2302EF, 0x7711FC2A, -/**/ 0xBF40EDC2, 0x89E20138, -/**/ 0x3F40EEE1, 0x38400000, -/**/ 0x3D3857C4, 0xB558238E, -/**/ 0xBF40FDBE, 0x4CB9CF52, -/**/ 0x3F40FEDF, 0x19A00000, -/**/ 0xBD37C324, 0x1194C2E1, -/**/ 0xBF410DBA, 0x0B933501, -/**/ 0x3F410EDC, 0xF8E00000, -/**/ 0xBD1B390B, 0xFBCAF285, -/**/ 0xBF411DB5, 0xC66E33C2, -/**/ 0x3F411EDA, 0xD6200000, -/**/ 0x3D266ECF, 0x0E52C3A4, -/**/ 0xBF412DB1, 0x7D4ACD15, -/**/ 0x3F412ED8, 0xB1600000, -/**/ 0x3D3E4EDB, 0x1A4AF71D, -/**/ 0xBF413DAD, 0x30290279, -/**/ 0x3F413ED6, 0x8AC00000, -/**/ 0xBD2B0DD1, 0x58C4D599, -/**/ 0xBF414DA8, 0xDF08D56E, -/**/ 0x3F414ED4, 0x62000000, -/**/ 0x3D1EDC6F, 0x2FB4061D, -/**/ 0xBF415DA4, 0x89EA4773, -/**/ 0x3F415ED2, 0x37400000, -/**/ 0x3D3E09E8, 0x1BA53538, -/**/ 0xBF416DA0, 0x30CD5A06, -/**/ 0x3F416ED0, 0x0AA00000, -/**/ 0xBD251B08, 0x4A5B4574, -/**/ 0xBF417D9B, 0xD3B20EA8, -/**/ 0x3F417ECD, 0xDBE00000, -/**/ 0x3D2BE3AD, 0x4241B57B, -/**/ 0xBF418D97, 0x729866D7, -/**/ 0x3F418ECB, 0xAB400000, -/**/ 0xBD387707, 0xFA22BD16, -/**/ 0xBF419D93, 0x0D806412, -/**/ 0x3F419EC9, 0x78800000, -/**/ 0x3D01C6FC, 0xFFA2FC2F, -/**/ 0xBF41AD8E, 0xA46A07D9, -/**/ 0x3F41AEC7, 0x43C00000, -/**/ 0x3D3E028D, 0x05F32EE8, -/**/ 0xBF41BD8A, 0x375553AB, -/**/ 0x3F41BEC5, 0x0D200000, -/**/ 0xBD146400, 0xC7E46F2B, -/**/ 0xBF41CD85, 0xC6424907, -/**/ 0x3F41CEC2, 0xD4600000, -/**/ 0x3D38E737, 0x8DFCE791, -/**/ 0xBF41DD81, 0x5130E96B, -/**/ 0x3F41DEC0, 0x99C00000, -/**/ 0xBD1FEF30, 0x92F4A6CE, -/**/ 0xBF41ED7C, 0xD8213659, -/**/ 0x3F41EEBE, 0x5D000000, -/**/ 0x3D383EF4, 0x4AE68315, -/**/ 0xBF41FD78, 0x5B13314D, -/**/ 0x3F41FEBC, 0x1E600000, -/**/ 0xBD199E1E, 0x39A8276A, -/**/ 0xBF420D73, 0xDA06DBC8, -/**/ 0x3F420EB9, 0xDDA00000, -/**/ 0x3D3C11BF, 0xE39F6D77, -/**/ 0xBF421D6F, 0x54FC3749, -/**/ 0x3F421EB7, 0x9B000000, -/**/ 0xBCD50D72, 0xC3A8C440, -/**/ 0xBF422D6A, 0xCBF3454F, -/**/ 0x3F422EB5, 0x56600000, -/**/ 0xBD3B9869, 0x06E59170, -/**/ 0xBF423D66, 0x3EEC0759, -/**/ 0x3F423EB3, 0x0FA00000, -/**/ 0x3D248C4B, 0x86930551, -/**/ 0xBF424D61, 0xADE67EE6, -/**/ 0x3F424EB0, 0xC7000000, -/**/ 0xBD2D6F13, 0xB3649FF7, -/**/ 0xBF425D5D, 0x18E2AD76, -/**/ 0x3F425EAE, 0x7C400000, -/**/ 0x3D396F87, 0xB496441D, -/**/ 0xBF426D58, 0x7FE09487, -/**/ 0x3F426EAC, 0x2FA00000, -/**/ 0x3D05E2D0, 0x01961A2F, -/**/ 0xBF427D53, 0xE2E03598, -/**/ 0x3F427EA9, 0xE1000000, -/**/ 0xBD32D013, 0x652D1720, -/**/ 0xBF428D4F, 0x41E1922A, -/**/ 0x3F428EA7, 0x90400000, -/**/ 0x3D38CB3F, 0x15C6A78A, -/**/ 0xBF429D4A, 0x9CE4ABBA, -/**/ 0x3F429EA5, 0x3DA00000, -/**/ 0x3D163D44, 0x07F8A52A, -/**/ 0xBF42AD45, 0xF3E983C8, -/**/ 0x3F42AEA2, 0xE9000000, -/**/ 0xBD2905BC, 0x1FEC6070, -/**/ 0xBF42BD41, 0x46F01BD4, -/**/ 0x3F42BEA0, 0x92600000, -/**/ 0xBD3D6A4E, 0x8FE5CB8E, -/**/ 0xBF42CD3C, 0x95F8755C, -/**/ 0x3F42CE9E, 0x39A00000, -/**/ 0x3D32D9FF, 0x120028B6, -/**/ 0xBF42DD37, 0xE10291DF, -/**/ 0x3F42DE9B, 0xDF000000, -/**/ 0x3D112C29, 0x94B2D8A6, -/**/ 0xBF42ED33, 0x280E72DD, -/**/ 0x3F42EE99, 0x82600000, -/**/ 0xBD222C5A, 0x0E9DC27F, -/**/ 0xBF42FD2E, 0x6B1C19D4, -/**/ 0x3F42FE97, 0x23C00000, -/**/ 0xBD3548A7, 0xA4C12307, -/**/ 0xBF430D29, 0xAA2B8844, -/**/ 0x3F430E94, 0xC3000000, -/**/ 0x3D3FB49A, 0x1B27A40C, -/**/ 0xBF431D24, 0xE53CBFAC, -/**/ 0x3F431E92, 0x60600000, -/**/ 0x3D35E297, 0xC65D601D, -/**/ 0xBF432D20, 0x1C4FC18B, -/**/ 0x3F432E8F, 0xFBC00000, -/**/ 0x3D2A84A1, 0xD4E46CD5, -/**/ 0xBF433D1B, 0x4F648F60, -/**/ 0x3F433E8D, 0x95200000, -/**/ 0x3D175314, 0x526215F8, -/**/ 0xBF434D16, 0x7E7B2AAB, -/**/ 0x3F434E8B, 0x2C800000, -/**/ 0xBCD9430B, 0x9746A94C, -/**/ 0xBF435D11, 0xA99394E9, -/**/ 0x3F435E88, 0xC1E00000, -/**/ 0xBD15A88D, 0x47EF6144, -/**/ 0xBF436D0C, 0xD0ADCF9B, -/**/ 0x3F436E86, 0x55400000, -/**/ 0xBD227301, 0x94614FFB, -/**/ 0xBF437D07, 0xF3C9DC3F, -/**/ 0x3F437E83, 0xE6A00000, -/**/ 0xBD27A44A, 0x16908831, -/**/ 0xBF438D03, 0x12E7BC55, -/**/ 0x3F438E81, 0x76000000, -/**/ 0xBD2A6621, 0x13DE59AC, -/**/ 0xBF439CFE, 0x2E07715C, -/**/ 0x3F439E7F, 0x03600000, -/**/ 0xBD2AB687, 0x76635000, -/**/ 0xBF43ACF9, 0x4528FCD2, -/**/ 0x3F43AE7C, 0x8EC00000, -/**/ 0xBD28937E, 0x28F7818F, -/**/ 0xBF43BCF4, 0x584C6037, -/**/ 0x3F43BE7A, 0x18200000, -/**/ 0xBD23FB06, 0x17328F27, -/**/ 0xBF43CCEF, 0x67719D0A, -/**/ 0x3F43CE77, 0x9F800000, -/**/ 0xBD19D640, 0x5AD74747, -/**/ 0xBF43DCEA, 0x7298B4CA, -/**/ 0x3F43DE75, 0x24E00000, -/**/ 0xBCFB0E6A, 0xC5CB9C74, -/**/ 0xBF43ECE5, 0x79C1A8F6, -/**/ 0x3F43EE72, 0xA8400000, -/**/ 0x3D1145E2, 0xF21B8682, -/**/ 0xBF43FCE0, 0x7CEC7B0D, -/**/ 0x3F43FE70, 0x29A00000, -/**/ 0x3D27251B, 0x59543A06, -/**/ 0xBF440CDB, 0x7C192C8E, -/**/ 0x3F440E6D, 0xA9000000, -/**/ 0x3D341357, 0xAC6250B6, -/**/ 0xBF441CD6, 0x7747BEF8, -/**/ 0x3F441E6B, 0x26600000, -/**/ 0x3D3DD4D6, 0x43A510F7, -/**/ 0xBF442CD1, 0x6E7833CB, -/**/ 0x3F442E68, 0xA1E00000, -/**/ 0xBD3727F7, 0x05F7D1E1, -/**/ 0xBF443CCC, 0x61AA8C85, -/**/ 0x3F443E66, 0x1B400000, -/**/ 0xBD25C421, 0x527C9668, -/**/ 0xBF444CC7, 0x50DECAA5, -/**/ 0x3F444E63, 0x92A00000, -/**/ 0x3D053C47, 0x053F70AC, -/**/ 0xBF445CC2, 0x3C14EFAB, -/**/ 0x3F445E61, 0x08000000, -/**/ 0x3D3175D5, 0x1E315FBB, -/**/ 0xBF446CBD, 0x234CFD15, -/**/ 0x3F446E5E, 0x7B800000, -/**/ 0xBD3E762C, 0x6A8B33AC, -/**/ 0xBF447CB8, 0x0686F463, -/**/ 0x3F447E5B, 0xECE00000, -/**/ 0xBD2A36F8, 0x67AD9900, -/**/ 0xBF448CB2, 0xE5C2D713, -/**/ 0x3F448E59, 0x5C400000, -/**/ 0x3D161B95, 0x1E974853, -/**/ 0xBF449CAD, 0xC100A6A5, -/**/ 0x3F449E56, 0xC9A00000, -/**/ 0x3D3971F7, 0x8CE22250, -/**/ 0xBF44ACA8, 0x98406498, -/**/ 0x3F44AE54, 0x35200000, -/**/ 0xBD315945, 0xDF8A23F8, -/**/ 0xBF44BCA3, 0x6B82126A, -/**/ 0x3F44BE51, 0x9E800000, -/**/ 0x3D1498B2, 0x1A63D360, -/**/ 0xBF44CC9E, 0x3AC5B19B, -/**/ 0x3F44CE4F, 0x05E00000, -/**/ 0x3D3CF14E, 0x4323A054, -/**/ 0xBF44DC99, 0x060B43AA, -/**/ 0x3F44DE4C, 0x6B600000, -/**/ 0xBD23EDC2, 0x4CE35F94, -/**/ 0xBF44EC93, 0xCD52CA15, -/**/ 0x3F44EE49, 0xCEC00000, -/**/ 0x3D306E9D, 0xCCF1B48E, -/**/ 0xBF44FC8E, 0x909C465C, -/**/ 0x3F44FE47, 0x30400000, -/**/ 0xBD33DD35, 0x5FF9440B, -/**/ 0xBF450C89, 0x4FE7B9FF, -/**/ 0x3F450E44, 0x8FA00000, -/**/ 0x3D224D49, 0xAA4D276D, -/**/ 0xBF451C84, 0x0B35267A, -/**/ 0x3F451E41, 0xED200000, -/**/ 0xBD3884D4, 0x11B557F9, -/**/ 0xBF452C7E, 0xC2848D4F, -/**/ 0x3F452E3F, 0x48800000, -/**/ 0x3D1C857D, 0xB43290C4, -/**/ 0xBF453C79, 0x75D5EFFC, -/**/ 0x3F453E3C, 0xA2000000, -/**/ 0xBD37E5C1, 0x2D598D3C, -/**/ 0xBF454C74, 0x25294FFF, -/**/ 0x3F454E39, 0xF9600000, -/**/ 0x3D24CD93, 0x3FE47B89, -/**/ 0xBF455C6E, 0xD07EAED8, -/**/ 0x3F455E37, 0x4EE00000, -/**/ 0xBD31F800, 0xAA959122, -/**/ 0xBF456C69, 0x77D60E06, -/**/ 0x3F456E34, 0xA2400000, -/**/ 0x3D32FEDF, 0x7329AF92, -/**/ 0xBF457C64, 0x1B2F6F08, -/**/ 0x3F457E31, 0xF3C00000, -/**/ 0xBD1ACE5A, 0x1C545A6F, -/**/ 0xBF458C5E, 0xBA8AD35D, -/**/ 0x3F458E2F, 0x43400000, -/**/ 0xBD3F0E63, 0x19F6B9EF, -/**/ 0xBF459C59, 0x55E83C84, -/**/ 0x3F459E2C, 0x90A00000, -/**/ 0x3D23DEF2, 0x73005F6F, -/**/ 0xBF45AC53, 0xED47ABFB, -/**/ 0x3F45AE29, 0xDC200000, -/**/ 0xBD277204, 0x1C295DE7, -/**/ 0xBF45BC4E, 0x80A92343, -/**/ 0x3F45BE27, 0x25800000, -/**/ 0x3D3FF92A, 0x8D869589, -/**/ 0xBF45CC49, 0x100CA3D9, -/**/ 0x3F45CE24, 0x6D000000, -/**/ 0x3D2A0DFD, 0x145C5335, -/**/ 0xBF45DC43, 0x9B722F3C, -/**/ 0x3F45DE21, 0xB2800000, -/**/ 0xBD123A1A, 0x6A8614B3, -/**/ 0xBF45EC3E, 0x22D9C6ED, -/**/ 0x3F45EE1E, 0xF6000000, -/**/ 0xBD34C665, 0x63CBC7E7, -/**/ 0xBF45FC38, 0xA6436C69, -/**/ 0x3F45FE1C, 0x37600000, -/**/ 0x3D3C6061, 0xAB6C51D7, -/**/ 0xBF460C33, 0x25AF2130, -/**/ 0x3F460E19, 0x76E00000, -/**/ 0x3D2DCD9C, 0x1EC7F453, -/**/ 0xBF461C2D, 0xA11CE6C1, -/**/ 0x3F461E16, 0xB4600000, -/**/ 0x3D066EFA, 0x20C52899, -/**/ 0xBF462C28, 0x188CBE9A, -/**/ 0x3F462E13, 0xEFE00000, -/**/ 0xBD1FA5AC, 0xEB5FDD5C, -/**/ 0xBF463C22, 0x8BFEAA3B, -/**/ 0x3F463E11, 0x29600000, -/**/ 0xBD313E11, 0xF22FE2BC, -/**/ 0xBF464C1C, 0xFB72AB23, -/**/ 0x3F464E0E, 0x60E00000, -/**/ 0xBD392F15, 0x6710E251, -/**/ 0xBF465C17, 0x66E8C2D0, -/**/ 0x3F465E0B, 0x96600000, -/**/ 0xBD3FBB76, 0x1EFC78A7, -/**/ 0xBF466C11, 0xCE60F2C1, -/**/ 0x3F466E08, 0xC9C00000, -/**/ 0x3D3B1DCB, 0x602C1A84, -/**/ 0xBF467C0C, 0x31DB3C76, -/**/ 0x3F467E05, 0xFB400000, -/**/ 0x3D375DAE, 0x9027DA74, -/**/ 0xBF468C06, 0x9157A16E, -/**/ 0x3F468E03, 0x2AC00000, -/**/ 0x3D350532, 0xEA560DA0, -/**/ 0xBF469C00, 0xECD62326, -/**/ 0x3F469E00, 0x58400000, -/**/ 0x3D341557, 0xE7B63DE2 } }; - -#else -#ifdef LITTLE_ENDI -static const union {int4 i[5800]; double x[2900];} ui = { .i = { -/**/ 0x00000000, 0x3FF6A000, -/**/ 0x3729043E, 0x3F33CD15, -/**/ 0x0B3AB000, 0xBFD63003, -/**/ 0xE731AE00, 0x3D2DB623, -/**/ 0x00000000, 0x3FF69800, -/**/ 0xCC7267D0, 0x3F33F349, -/**/ 0xCDB03000, 0xBFD61965, -/**/ 0x603C488E, 0x3D2F08AD, -/**/ 0x00000000, 0x3FF69000, -/**/ 0x8D0BFD2E, 0x3F3473A8, -/**/ 0x8AF09000, 0xBFD602D0, -/**/ 0x76DF3F65, 0xBD1EBE91, -/**/ 0x00000000, 0x3FF68800, -/**/ 0x390B9ED0, 0x3F354DD2, -/**/ 0x3D5C3000, 0xBFD5EC43, -/**/ 0x1229D17F, 0xBD36B71A, -/**/ 0x00000000, 0x3FF68000, -/**/ 0x16816817, 0x3F368168, -/**/ 0xDF596000, 0xBFD5D5BD, -/**/ 0x08A465DC, 0x3D0A0B2A, -/**/ 0x00000000, 0x3FF67800, -/**/ 0xF08C7765, 0x3F380E0B, -/**/ 0x6B544000, 0xBFD5BF40, -/**/ 0xEB68981C, 0x3D227023, -/**/ 0x00000000, 0x3FF67000, -/**/ 0x16719F36, 0x3F39F360, -/**/ 0xDBBEE000, 0xBFD5A8CA, -/**/ 0x0AF7ECF8, 0x3CF7C79B, -/**/ 0x00000000, 0x3FF66800, -/**/ 0x5AB40167, 0x3F3C3107, -/**/ 0x2B113000, 0xBFD5925D, -/**/ 0xA7A56F34, 0x3D369BF5, -/**/ 0x00000000, 0x3FF66000, -/**/ 0x122F9016, 0x3F3EC6A5, -/**/ 0x53C8D000, 0xBFD57BF7, -/**/ 0xEE5D40EF, 0xBD1FADED, -/**/ 0x00000000, 0x3FF65C00, -/**/ 0xECCA9097, 0xBF3E4C22, -/**/ 0x50695000, 0xBFD56599, -/**/ 0x2BADC774, 0xBD14C5FD, -/**/ 0x00000000, 0x3FF65400, -/**/ 0x4B55CC62, 0xBF3B07AC, -/**/ 0x1B7BE000, 0xBFD54F43, -/**/ 0xC0910952, 0xBD1A8954, -/**/ 0x00000000, 0x3FF64C00, -/**/ 0x32DA090E, 0xBF376C52, -/**/ 0xAF8F7000, 0xBFD538F4, -/**/ 0xE45547CE, 0xBD27EC02, -/**/ 0x00000000, 0x3FF64400, -/**/ 0x4DE9BD38, 0xBF337A6F, -/**/ 0x0738A000, 0xBFD522AE, -/**/ 0x8164C759, 0xBD2EBE70, -/**/ 0x00000000, 0x3FF63C00, -/**/ 0x923C708B, 0xBF2E64BB, -/**/ 0x1D11C000, 0xBFD50C6F, -/**/ 0x7E827C2C, 0x3D3A0E6B, -/**/ 0x00000000, 0x3FF63400, -/**/ 0xA7E43FD4, 0xBF2528EE, -/**/ 0xEBBAA000, 0xBFD4F637, -/**/ 0xCB3124B9, 0x3D3FC158, -/**/ 0x00000000, 0x3FF62C00, -/**/ 0x86689DF7, 0xBF168454, -/**/ 0x6DD8C000, 0xBFD4E008, -/**/ 0xA1E44788, 0x3D34D692, -/**/ 0x00000000, 0x3FF62400, -/**/ 0x77016240, 0xBED623FA, -/**/ 0x9E173000, 0xBFD4C9E0, -/**/ 0x1B0AD8A4, 0x3D2E2089, -/**/ 0x00000000, 0x3FF61C00, -/**/ 0x58715130, 0x3F151300, -/**/ 0x77268000, 0xBFD4B3C0, -/**/ 0x81052B9F, 0x3D165B46, -/**/ 0x00000000, 0x3FF61400, -/**/ 0x35D2754E, 0x3F266D06, -/**/ 0xF3BCC000, 0xBFD49DA7, -/**/ 0x4DAF4B9A, 0xBD307B33, -/**/ 0x00000000, 0x3FF60C00, -/**/ 0xDA197F23, 0x3F317C61, -/**/ 0x0E958000, 0xBFD48797, -/**/ 0x465CF25F, 0xBD3DC1B8, -/**/ 0x00000000, 0x3FF60400, -/**/ 0x81605816, 0x3F381605, -/**/ 0xC271C000, 0xBFD4718D, -/**/ 0xFB4C14C5, 0xBD306C18, -/**/ 0x00000000, 0x3FF5FC00, -/**/ 0xB5C6F559, 0x3F3F0317, -/**/ 0x0A17E000, 0xBFD45B8C, -/**/ 0xE7D0A853, 0x3D0D9120, -/**/ 0x00000000, 0x3FF5F800, -/**/ 0x6D2041E3, 0xBF39BCBD, -/**/ 0xE053A000, 0xBFD44591, -/**/ 0x92923D88, 0x3D06E958, -/**/ 0x00000000, 0x3FF5F000, -/**/ 0x5604CC40, 0xBF3229CF, -/**/ 0x3FF62000, 0xBFD42F9F, -/**/ 0x0F7D3354, 0xBD390644, -/**/ 0x00000000, 0x3FF5E800, -/**/ 0xFD431489, 0xBF2488E5, -/**/ 0x23D5F000, 0xBFD419B4, -/**/ 0x226DE3EC, 0x3D3CE379, -/**/ 0x00000000, 0x3FF5E000, -/**/ 0x6424E9C9, 0xBF0067E7, -/**/ 0x86CEA000, 0xBFD403D0, -/**/ 0x74487308, 0xBD3E6EF5, -/**/ 0x00000000, 0x3FF5D800, -/**/ 0x38A94D24, 0x3F19F0FB, -/**/ 0x63C17000, 0xBFD3EDF4, -/**/ 0x297F2C3F, 0x3D3F067C, -/**/ 0x00000000, 0x3FF5D000, -/**/ 0x23CAD2AA, 0x3F2EADD9, -/**/ 0xB5947000, 0xBFD3D81F, -/**/ 0x2A9D37A4, 0x3D222C7C, -/**/ 0x00000000, 0x3FF5C800, -/**/ 0x31057262, 0x3F3882B9, -/**/ 0x77333000, 0xBFD3C252, -/**/ 0xB606BD5C, 0xBD183B54, -/**/ 0x00000000, 0x3FF5C400, -/**/ 0x10FFA8F8, 0xBF3E00AE, -/**/ 0xA38E6000, 0xBFD3AC8C, -/**/ 0xBC02BE4A, 0x3D2D0BEF, -/**/ 0x00000000, 0x3FF5BC00, -/**/ 0x8056EAF3, 0xBF34339B, -/**/ 0x359BC000, 0xBFD396CE, -/**/ 0x5663663D, 0x3D05839C, -/**/ 0x00000000, 0x3FF5B400, -/**/ 0xF31D7FD5, 0xBF242CC1, -/**/ 0x28565000, 0xBFD38117, -/**/ 0x93A0702B, 0x3D2A71E4, -/**/ 0x00000000, 0x3FF5AC00, -/**/ 0x6B015AC0, 0x3ED5AC05, -/**/ 0x76BE1000, 0xBFD36B67, -/**/ 0xB0F177C8, 0xBD116ECD, -/**/ 0x00000000, 0x3FF5A400, -/**/ 0x5BA55E5A, 0x3F26268D, -/**/ 0x1BD83000, 0xBFD355BF, -/**/ 0x8964F0E8, 0x3D2BA99B, -/**/ 0x00000000, 0x3FF59C00, -/**/ 0x3CCAA376, 0x3F361F12, -/**/ 0x12AED000, 0xBFD3401E, -/**/ 0x556E291D, 0x3D317C73, -/**/ 0x00000000, 0x3FF59800, -/**/ 0x62D32417, 0xBF3E863D, -/**/ 0x56512000, 0xBFD32A84, -/**/ 0x139AF5D6, 0xBD04F928, -/**/ 0x00000000, 0x3FF59000, -/**/ 0xEA712DCF, 0xBF32DCF7, -/**/ 0xE1D36000, 0xBFD314F1, -/**/ 0xD3213CB8, 0x3D28E27A, -/**/ 0x00000000, 0x3FF58800, -/**/ 0xA0CC87E8, 0xBF1B95B2, -/**/ 0xB04EB000, 0xBFD2FF66, -/**/ 0x541E6E2E, 0x3D38AED2, -/**/ 0x00000000, 0x3FF58000, -/**/ 0x01580560, 0x3F158056, -/**/ 0xBCE12000, 0xBFD2E9E2, -/**/ 0x128D1DC2, 0xBD24300C, -/**/ 0x00000000, 0x3FF57800, -/**/ 0x15791F34, 0x3F31F340, -/**/ 0x02ADD000, 0xBFD2D466, -/**/ 0xDCD54196, 0x3D288D0D, -/**/ 0x00000000, 0x3FF57000, -/**/ 0x06B39A23, 0x3F3ED3C5, -/**/ 0x7CDC9000, 0xBFD2BEF0, -/**/ 0x4A5004F4, 0xBD2A9CFA, -/**/ 0x00000000, 0x3FF56C00, -/**/ 0x53FEA954, 0xBF33FEA9, -/**/ 0x269A4000, 0xBFD2A982, -/**/ 0x557285CF, 0x3D22058E, -/**/ 0x00000000, 0x3FF56400, -/**/ 0xEB478503, 0xBF1A1160, -/**/ 0xFB187000, 0xBFD2941A, -/**/ 0xB730E28B, 0x3D3210C2, -/**/ 0x00000000, 0x3FF55C00, -/**/ 0xE4A18B2E, 0x3F1D09AD, -/**/ 0xF58D9000, 0xBFD27EBA, -/**/ 0x00B4BDA7, 0x3D2B1988, -/**/ 0x00000000, 0x3FF55400, -/**/ 0x55555555, 0x3F355555, -/**/ 0x1134E000, 0xBFD26962, -/**/ 0x10522625, 0x3D31B61F, -/**/ 0x00000000, 0x3FF55000, -/**/ 0xB319A21F, 0xBF3C4BE6, -/**/ 0x494E5000, 0xBFD25410, -/**/ 0xC0EF77F2, 0xBD3B1D7A, -/**/ 0x00000000, 0x3FF54800, -/**/ 0x8FA03FD5, 0xBF2B4328, -/**/ 0x991EC000, 0xBFD23EC5, -/**/ 0x48A2E522, 0x3D36DBE4, -/**/ 0x00000000, 0x3FF54000, -/**/ 0x40154015, 0x3EF54015, -/**/ 0xFBEF8000, 0xBFD22981, -/**/ 0x609580DA, 0x3D3A1421, -/**/ 0x00000000, 0x3FF53800, -/**/ 0x40FEAC6F, 0x3F30948F, -/**/ 0x6D0EC000, 0xBFD21445, -/**/ 0x28B728A3, 0x3D3CAF04, -/**/ 0x00000000, 0x3FF53400, -/**/ 0xFD04F7B8, 0xBF3FE034, -/**/ 0xE7CF4000, 0xBFD1FF0F, -/**/ 0x513FF0C1, 0xBD3E9D5B, -/**/ 0x00000000, 0x3FF52C00, -/**/ 0x7FAB5403, 0xBF300A95, -/**/ 0x6788A000, 0xBFD1E9E1, -/**/ 0xD3C8B65E, 0x3D382EAE, -/**/ 0x00000000, 0x3FF52400, -/**/ 0x52401524, 0x3EB52401, -/**/ 0xE796C000, 0xBFD1D4B9, -/**/ 0x7C42E56D, 0xBD222A66, -/**/ 0x00000000, 0x3FF51C00, -/**/ 0x2F8151D0, 0x3F307EAE, -/**/ 0x635A7000, 0xBFD1BF99, -/**/ 0x575C2125, 0x3D31AC89, -/**/ 0x00000000, 0x3FF51800, -/**/ 0xEAE9ECE4, 0xBF3ECE3F, -/**/ 0xD638D000, 0xBFD1AA7F, -/**/ 0x9616F7A0, 0xBD29F60A, -/**/ 0x00000000, 0x3FF51000, -/**/ 0xC7675243, 0xBF2BA3DD, -/**/ 0x3B9BC000, 0xBFD1956D, -/**/ 0x3AD1AA14, 0xBD27D2F7, -/**/ 0x00000000, 0x3FF50800, -/**/ 0x764E368D, 0x3F0B9AC8, -/**/ 0x8EF19000, 0xBFD18061, -/**/ 0xC86D38E5, 0x3D3482FF, -/**/ 0x00000000, 0x3FF50000, -/**/ 0x15015015, 0x3F350150, -/**/ 0xCBAD0000, 0xBFD16B5C, -/**/ 0x042D74BF, 0x3D323299, -/**/ 0x00000000, 0x3FF4FC00, -/**/ 0x4A683C50, 0xBF392851, -/**/ 0xED456000, 0xBFD1565E, -/**/ 0xFB6ABA25, 0x3CEE75AD, -/**/ 0x00000000, 0x3FF4F400, -/**/ 0xACD95EF0, 0xBF1C2748, -/**/ 0xEF367000, 0xBFD14167, -/**/ 0x824DAAF5, 0xBD3E0C07, -/**/ 0x00000000, 0x3FF4EC00, -/**/ 0x67A47465, 0x3F26B90D, -/**/ 0xCD007000, 0xBFD12C77, -/**/ 0x8A11F797, 0xBD13B294, -/**/ 0x00000000, 0x3FF4E400, -/**/ 0xF0539783, 0x3F3E0A72, -/**/ 0x8227E000, 0xBFD1178E, -/**/ 0xCE2D07F2, 0xBD31EF78, -/**/ 0x00000000, 0x3FF4E000, -/**/ 0xF87FD642, 0xBF2E00A6, -/**/ 0x0A35D000, 0xBFD102AC, -/**/ 0xDFDFD686, 0x3D2F1FBD, -/**/ 0x00000000, 0x3FF4D800, -/**/ 0x0B12E3FD, 0x3F10EFB7, -/**/ 0x60B78000, 0xBFD0EDD0, -/**/ 0x2D8435F5, 0xBD0019B5, -/**/ 0x00000000, 0x3FF4D000, -/**/ 0x5CB4DBE5, 0x3F37BEF1, -/**/ 0x813EB000, 0xBFD0D8FB, -/**/ 0x8753FA35, 0xBD1EE8C8, -/**/ 0x00000000, 0x3FF4CC00, -/**/ 0xA50918B1, 0xBF34778D, -/**/ 0x67616000, 0xBFD0C42D, -/**/ 0x163CEAE9, 0xBD27188B, -/**/ 0x00000000, 0x3FF4C400, -/**/ 0xE37288EC, 0xBED9F4F7, -/**/ 0x0EB9E000, 0xBFD0AF66, -/**/ 0xF528D80A, 0xBD23C7C3, -/**/ 0x00000000, 0x3FF4BC00, -/**/ 0x68FE0E42, 0x3F33EDDA, -/**/ 0x72E6C000, 0xBFD09AA5, -/**/ 0xE1734342, 0xBD3B50A1, -/**/ 0x00000000, 0x3FF4B800, -/**/ 0xB72E47D9, 0xBF3776C6, -/**/ 0x8F8AE000, 0xBFD085EB, -/**/ 0x3F45FE7B, 0xBD3E5D51, -/**/ 0x00000000, 0x3FF4B000, -/**/ 0xA052BF5B, 0xBF04AFD6, -/**/ 0x604D6000, 0xBFD07138, -/**/ 0x4E912B17, 0x3D3E7632, -/**/ 0x00000000, 0x3FF4A800, -/**/ 0xD5B5C015, 0x3F328FFA, -/**/ 0xE0D96000, 0xBFD05C8B, -/**/ 0xC77CCB58, 0xBD2AD0F1, -/**/ 0x00000000, 0x3FF4A400, -/**/ 0x9FEB5D80, 0xBF380528, -/**/ 0x0CDE8000, 0xBFD047E6, -/**/ 0x0D397F3C, 0xBD2DBDF1, -/**/ 0x00000000, 0x3FF49C00, -/**/ 0x25FF5B21, 0xBF02AD3E, -/**/ 0xE0106000, 0xBFD03346, -/**/ 0xA966395C, 0xBCF89FF8, -/**/ 0x00000000, 0x3FF49400, -/**/ 0x2D066EA2, 0x3F339E3B, -/**/ 0x5626C000, 0xBFD01EAE, -/**/ 0xFADE85AE, 0xBD3A43DC, -/**/ 0x00000000, 0x3FF49000, -/**/ 0xAFB2E932, 0xBF3629C1, -/**/ 0x6ADDA000, 0xBFD00A1C, -/**/ 0x688B9E18, 0xBD31CD8D, -/**/ 0x00000000, 0x3FF48800, -/**/ 0x22014880, 0x3ED48805, -/**/ 0x33EA0000, 0xBFCFEB22, -/**/ 0xDE00938B, 0xBD2F3418, -/**/ 0x00000000, 0x3FF48000, -/**/ 0x3D324D89, 0x3F37119F, -/**/ 0xBE620000, 0xBFCFC218, -/**/ 0x6F1CF6A0, 0xBD34BBA4, -/**/ 0x00000000, 0x3FF47C00, -/**/ 0x1EB851EC, 0xBF31EB85, -/**/ 0x6CB3C000, 0xBFCF991C, -/**/ 0xCD7CC834, 0x3D390D04, -/**/ 0x00000000, 0x3FF47400, -/**/ 0xAAFC7C01, 0x3F1569C9, -/**/ 0x36778000, 0xBFCF702D, -/**/ 0x16673E23, 0x3D108195, -/**/ 0x00000000, 0x3FF46C00, -/**/ 0x96066250, 0x3F3CE345, -/**/ 0x134E0000, 0xBFCF474B, -/**/ 0xF1DF7B5E, 0x3D3BAE49, -/**/ 0x00000000, 0x3FF46800, -/**/ 0x1D02DE87, 0xBF26A297, -/**/ 0xFADFA000, 0xBFCF1E75, -/**/ 0x25D83F6D, 0x3D20862B, -/**/ 0x00000000, 0x3FF46000, -/**/ 0xB9F34381, 0x3F2978FE, -/**/ 0xE4DD0000, 0xBFCEF5AD, -/**/ 0x65BB8E11, 0x3CCA2115, -/**/ 0x00000000, 0x3FF45C00, -/**/ 0xF6C71366, 0xBF3AF398, -/**/ 0xC8FEA000, 0xBFCECCF2, -/**/ 0xA3E75640, 0x3D3BEC63, -/**/ 0x00000000, 0x3FF45400, -/**/ 0x449AFF5D, 0xBF030E9C, -/**/ 0x9F04A000, 0xBFCEA444, -/**/ 0x63732A36, 0xBD35E916, -/**/ 0x00000000, 0x3FF44C00, -/**/ 0xF8B42EF3, 0x3F367190, -/**/ 0x5EB78000, 0xBFCE7BA3, -/**/ 0x23793649, 0x3D0D5EEE, -/**/ 0x00000000, 0x3FF44800, -/**/ 0xD260511C, 0xBF3079A9, -/**/ 0xFFE72000, 0xBFCE530E, -/**/ 0xB13F7C18, 0x3D3FDBDB, -/**/ 0x00000000, 0x3FF44000, -/**/ 0x0B644FBE, 0x3F21B87C, -/**/ 0x7A6B2000, 0xBFCE2A87, -/**/ 0x7787081A, 0xBD382381, -/**/ 0x00000000, 0x3FF43C00, -/**/ 0x411B2E25, 0xBF3D8CF5, -/**/ 0xC6236000, 0xBFCE020C, -/**/ 0xADB91424, 0x3D252B00, -/**/ 0x00000000, 0x3FF43400, -/**/ 0xD6A60978, 0xBF0DAC08, -/**/ 0xDAF6E000, 0xBFCDD99E, -/**/ 0x69C756EB, 0x3D302EC6, -/**/ 0x00000000, 0x3FF42C00, -/**/ 0x51F86EFA, 0x3F36625D, -/**/ 0xB0D48000, 0xBFCDB13D, -/**/ 0x847527E6, 0xBD32806A, -/**/ 0x00000000, 0x3FF42800, -/**/ 0xA8766564, 0xBF2E8B2D, -/**/ 0x3FB30000, 0xBFCD88E9, -/**/ 0x0234BF51, 0x3D375F28, -/**/ 0x00000000, 0x3FF42000, -/**/ 0xCB2A247B, 0x3F26A4CB, -/**/ 0x7F904000, 0xBFCD60A1, -/**/ 0x6FC20D39, 0x3D35D6E0, -/**/ 0x00000000, 0x3FF41C00, -/**/ 0xC17DF552, 0xBF39D5E8, -/**/ 0x68720000, 0xBFCD3866, -/**/ 0xB38932BC, 0x3D373650, -/**/ 0x00000000, 0x3FF41400, -/**/ 0x14141414, 0x3EF41414, -/**/ 0xF2656000, 0xBFCD1037, -/**/ 0x75B6F6E4, 0x3D084A7E, -/**/ 0x00000000, 0x3FF40C00, -/**/ 0x43AE87FD, 0x3F3C97A8, -/**/ 0x157F2000, 0xBFCCE816, -/**/ 0xA2099515, 0x3D29E0AB, -/**/ 0x00000000, 0x3FF40800, -/**/ 0x66A67E6F, 0xBF1F4BBC, -/**/ 0xC9DB4000, 0xBFCCC000, -/**/ 0x5D57AFF9, 0x3D1D6D58, -/**/ 0x00000000, 0x3FF40000, -/**/ 0x14014014, 0x3F340140, -/**/ 0x079D4000, 0xBFCC97F8, -/**/ 0xA8C6E6C5, 0xBD23B161, -/**/ 0x00000000, 0x3FF3FC00, -/**/ 0xFD809FD8, 0xBF2FD809, -/**/ 0xC6F00000, 0xBFCC6FFB, -/**/ 0xD3A69D43, 0xBD3EE138, -/**/ 0x00000000, 0x3FF3F400, -/**/ 0x57EE89D2, 0x3F28CA0E, -/**/ 0x0005C000, 0xBFCC480C, -/**/ 0xD5E44E76, 0xBD39A294, -/**/ 0x00000000, 0x3FF3F000, -/**/ 0xA50F9260, 0xBF370BD5, -/**/ 0xAB180000, 0xBFCC2028, -/**/ 0xE55C7AC6, 0x3D292E0E, -/**/ 0x00000000, 0x3FF3E800, -/**/ 0x75945FCE, 0x3F1704AA, -/**/ 0xC0676000, 0xBFCBF851, -/**/ 0x4C0854AD, 0x3D35420E, -/**/ 0x00000000, 0x3FF3E400, -/**/ 0xB56FD83C, 0xBF3D3431, -/**/ 0x383BE000, 0xBFCBD087, -/**/ 0x595412B6, 0x3D2D4BC4, -/**/ 0x00000000, 0x3FF3DC00, -/**/ 0x3DC013DC, 0x3EB3DC01, -/**/ 0x0AE4A000, 0xBFCBA8C9, -/**/ 0xF44432DA, 0xBD3A32E7, -/**/ 0x00000000, 0x3FF3D400, -/**/ 0xA75C5BBD, 0x3F3D991A, -/**/ 0x30B82000, 0xBFCB8117, -/**/ 0x3B9CD768, 0xBD1E9068, -/**/ 0x00000000, 0x3FF3D000, -/**/ 0x59C52F5D, 0xBF1292BA, -/**/ 0xA213A000, 0xBFCB5971, -/**/ 0x83AA91DF, 0xBD39B50E, -/**/ 0x00000000, 0x3FF3C800, -/**/ 0xBABE7440, 0x3F395A47, -/**/ 0x575BC000, 0xBFCB31D8, -/**/ 0x562A63CB, 0xBD3C794E, -/**/ 0x00000000, 0x3FF3C400, -/**/ 0x58A0943A, 0xBF20D475, -/**/ 0x48FC2000, 0xBFCB0A4B, -/**/ 0x5C3998ED, 0x3D22E72D, -/**/ 0x00000000, 0x3FF3BC00, -/**/ 0x3295482C, 0x3F360D92, -/**/ 0x6F672000, 0xBFCAE2CA, -/**/ 0xAE54F550, 0xBD37A8D5, -/**/ 0x00000000, 0x3FF3B800, -/**/ 0xCAB48651, 0xBF267D12, -/**/ 0xC316A000, 0xBFCABB55, -/**/ 0xCAF14CD8, 0x3D38A65A, -/**/ 0x00000000, 0x3FF3B000, -/**/ 0x13B13B14, 0x3F33B13B, -/**/ 0x3C8AE000, 0xBFCA93ED, -/**/ 0x50562169, 0x3D287243, -/**/ 0x00000000, 0x3FF3AC00, -/**/ 0x2C8FD3BF, 0xBF2A46AF, -/**/ 0xD44B8000, 0xBFCA6C90, -/**/ 0xF037B0C6, 0x3D3F63B7, -/**/ 0x00000000, 0x3FF3A400, -/**/ 0xAC822610, 0x3F324387, -/**/ 0x82E6A000, 0xBFCA4540, -/**/ 0xC81F7171, 0xBD360A77, -/**/ 0x00000000, 0x3FF3A000, -/**/ 0xA1923DEE, 0xBF2C34BB, -/**/ 0x40F1C000, 0xBFCA1DFC, -/**/ 0x004F3781, 0x3D301E0F, -/**/ 0x00000000, 0x3FF39800, -/**/ 0x87F63372, 0x3F31C2C1, -/**/ 0x0708A000, 0xBFC9F6C4, -/**/ 0x4BCD3F43, 0x3D3337D9, -/**/ 0x00000000, 0x3FF39400, -/**/ 0xE11BD52E, 0xBF2C4AA0, -/**/ 0xCDCE0000, 0xBFC9CF97, -/**/ 0x10C414E3, 0xBD3D862F, -/**/ 0x00000000, 0x3FF38C00, -/**/ 0x6088DBF4, 0x3F322D36, -/**/ 0x8DEBA000, 0xBFC9A877, -/**/ 0x3EFEC390, 0xBD3470FA, -/**/ 0x00000000, 0x3FF38800, -/**/ 0x503F774E, 0xBF2A8BBF, -/**/ 0x4011A000, 0xBFC98163, -/**/ 0x9E9045E2, 0xBD34EADD, -/**/ 0x00000000, 0x3FF38000, -/**/ 0x13813814, 0x3F338138, -/**/ 0xDCF70000, 0xBFC95A5A, -/**/ 0x58A0FF6F, 0xBD07F228, -/**/ 0x00000000, 0x3FF37C00, -/**/ 0x1B177053, 0xBF26FB6F, -/**/ 0x5D594000, 0xBFC9335E, -/**/ 0x3ABD47DA, 0xBD33115C, -/**/ 0x00000000, 0x3FF37400, -/**/ 0x945EDC20, 0x3F35BD1C, -/**/ 0xB9FCC000, 0xBFC90C6D, -/**/ 0x7718D7CA, 0x3D1935F5, -/**/ 0x00000000, 0x3FF37000, -/**/ 0x4DBDCC60, 0xBF219D00, -/**/ 0xEBAC2000, 0xBFC8E588, -/**/ 0xAB2D1140, 0xBD3B7D5C, -/**/ 0x00000000, 0x3FF36800, -/**/ 0xE0747954, 0x3F38DF3D, -/**/ 0xEB390000, 0xBFC8BEAF, -/**/ 0xAAE92CD1, 0x3D073D54, -/**/ 0x00000000, 0x3FF36400, -/**/ 0xD9D3C49F, 0xBF14E775, -/**/ 0xB17B2000, 0xBFC897E2, -/**/ 0x380CBE9E, 0x3D296B37, -/**/ 0x00000000, 0x3FF35C00, -/**/ 0xF2AF821E, 0x3F3CE5F9, -/**/ 0x3750E000, 0xBFC87121, -/**/ 0x42F9AF75, 0xBD3328EB, -/**/ 0x00000000, 0x3FF35800, -/**/ 0xE34971F2, 0xBEE82DF0, -/**/ 0x759F6000, 0xBFC84A6B, -/**/ 0x2ADF8609, 0x3D3DA280, -/**/ 0x00000000, 0x3FF35400, -/**/ 0x4873ECAE, 0xBF3E304D, -/**/ 0x6551A000, 0xBFC823C1, -/**/ 0x9A631E83, 0xBD1E0DDB, -/**/ 0x00000000, 0x3FF34C00, -/**/ 0x1FF659DB, 0x3F1264B6, -/**/ 0xFF59A000, 0xBFC7FD22, -/**/ 0xF457B7D2, 0x3D158BEB, -/**/ 0x00000000, 0x3FF34800, -/**/ 0xFECB9865, 0xBF386531, -/**/ 0x3CAF6000, 0xBFC7D690, -/**/ 0x17C301D7, 0x3D24C06B, -/**/ 0x00000000, 0x3FF34000, -/**/ 0xEEDA65AE, 0x3F25A8C2, -/**/ 0x16516000, 0xBFC7B009, -/**/ 0xCB067E57, 0x3D3AE75F, -/**/ 0x00000000, 0x3FF33C00, -/**/ 0x8434E1F4, 0xBF31BA4A, -/**/ 0x85444000, 0xBFC7898D, -/**/ 0xE3DBAF3F, 0xBD38E67B, -/**/ 0x00000000, 0x3FF33400, -/**/ 0xDBFC660A, 0x3F31EE97, -/**/ 0x82936000, 0xBFC7631D, -/**/ 0xC7C5F3E1, 0x3D25E77D, -/**/ 0x00000000, 0x3FF33000, -/**/ 0xBC40BFDA, 0xBF246252, -/**/ 0x074FE000, 0xBFC73CB9, -/**/ 0x0D0005A6, 0x3D3D66A9, -/**/ 0x00000000, 0x3FF32800, -/**/ 0x13299E64, 0x3F39E640, -/**/ 0x0C914000, 0xBFC71660, -/**/ 0x7CEC3838, 0xBCE51B15, -/**/ 0x00000000, 0x3FF32400, -/**/ 0xEF40991F, 0xBEFCB5D4, -/**/ 0x8B756000, 0xBFC6F012, -/**/ 0x0D31EF0F, 0xBD357739, -/**/ 0x00000000, 0x3FF32000, -/**/ 0xC823D892, 0xBF3D4632, -/**/ 0x7D204000, 0xBFC6C9D0, -/**/ 0xFD9B2DCA, 0x3CDC73FA, -/**/ 0x00000000, 0x3FF31800, -/**/ 0x7AED804C, 0x3F1DD63A, -/**/ 0xDABBE000, 0xBFC6A399, -/**/ 0xE66A15A6, 0x3D38F934, -/**/ 0x00000000, 0x3FF31400, -/**/ 0xE8C11E1A, 0xBF339849, -/**/ 0x9D786000, 0xBFC67D6E, -/**/ 0x30A706D3, 0x3D311E88, -/**/ 0x00000000, 0x3FF30C00, -/**/ 0x0D190131, 0x3F319013, -/**/ 0xBE8C2000, 0xBFC6574E, -/**/ 0x34F0F462, 0x3D398C1D, -/**/ 0x00000000, 0x3FF30800, -/**/ 0xB47A7FDA, 0xBF222315, -/**/ 0x37336000, 0xBFC6313A, -/**/ 0x4F21EA6D, 0x3D144DF5, -/**/ 0x00000000, 0x3FF30000, -/**/ 0x40260390, 0x3F3C82AC, -/**/ 0x00B0A000, 0xBFC60B31, -/**/ 0xC988F814, 0x3D371456, -/**/ 0x00000000, 0x3FF2FC00, -/**/ 0xA2430A62, 0x3F026443, -/**/ 0x144C2000, 0xBFC5E533, -/**/ 0xF3B290EA, 0x3D31CE0B, -/**/ 0x00000000, 0x3FF2F800, -/**/ 0xED097B42, 0xBF37B425, -/**/ 0x6B544000, 0xBFC5BF40, -/**/ 0xEB68981C, 0x3D127023, -/**/ 0x00000000, 0x3FF2F000, -/**/ 0x4AE0553C, 0x3F2D00E3, -/**/ 0xFF1D6000, 0xBFC59958, -/**/ 0x9769CA05, 0x3D3A1D05, -/**/ 0x00000000, 0x3FF2EC00, -/**/ 0x25D69D44, 0xBF262BC0, -/**/ 0xC9018000, 0xBFC5737C, -/**/ 0xA6B887F6, 0xBD39BAA7, -/**/ 0x00000000, 0x3FF2E400, -/**/ 0xE3103D6B, 0x3F3B88B5, -/**/ 0xC2610000, 0xBFC54DAB, -/**/ 0xE5C8D0D8, 0xBD2746FE, -/**/ 0x00000000, 0x3FF2E000, -/**/ 0xC04B8097, 0x3F02E025, -/**/ 0xE4A1C000, 0xBFC527E5, -/**/ 0x8D4B411D, 0x3D34E60B, -/**/ 0x00000000, 0x3FF2DC00, -/**/ 0x2C305021, 0xBF369C22, -/**/ 0x292F6000, 0xBFC5022B, -/**/ 0xFF36A25B, 0xBD348A05, -/**/ 0x00000000, 0x3FF2D400, -/**/ 0xD50A012D, 0x3F30A012, -/**/ 0x897BC000, 0xBFC4DC7B, -/**/ 0x0AE1FF0F, 0xBD0C79B6, -/**/ 0x00000000, 0x3FF2D000, -/**/ 0xBC66484E, 0xBF1FBE29, -/**/ 0xFEFE2000, 0xBFC4B6D6, -/**/ 0xF56E7952, 0xBD1522EC, -/**/ 0x00000000, 0x3FF2C800, -/**/ 0x12C9FB4E, 0x3F3FB4D8, -/**/ 0x8333C000, 0xBFC4913D, -/**/ 0x558124C4, 0x3D353E43, -/**/ 0x00000000, 0x3FF2C400, -/**/ 0x7004B11E, 0x3F1E3432, -/**/ 0x0F9F6000, 0xBFC46BAF, -/**/ 0x0790841A, 0x3D1249CD, -/**/ 0x00000000, 0x3FF2C000, -/**/ 0x5C8EF02F, 0xBF30671A, -/**/ 0x9DC9C000, 0xBFC4462B, -/**/ 0xA711B062, 0x3D384858, -/**/ 0x00000000, 0x3FF2B800, -/**/ 0xD548D9AC, 0x3F37D835, -/**/ 0x27410000, 0xBFC420B3, -/**/ 0xC85A0884, 0x3D116282, -/**/ 0x00000000, 0x3FF2B400, -/**/ 0xAD012B40, 0x3ED2B404, -/**/ 0xA5992000, 0xBFC3FB45, -/**/ 0xC0CAE559, 0xBD319713, -/**/ 0x00000000, 0x3FF2B000, -/**/ 0x8E7302A1, 0xBF370F78, -/**/ 0x126BC000, 0xBFC3D5E3, -/**/ 0x85096C4B, 0xBD13FB2F, -/**/ 0x00000000, 0x3FF2A800, -/**/ 0x3C1053F9, 0x3F31C92F, -/**/ 0x67580000, 0xBFC3B08B, -/**/ 0xF29320FB, 0x3D3AADE8, -/**/ 0x00000000, 0x3FF2A400, -/**/ 0x3DBE2E04, 0xBF14AD94, -/**/ 0x9E028000, 0xBFC38B3E, -/**/ 0x545C17F9, 0x3D370EF0, -/**/ 0x00000000, 0x3FF2A000, -/**/ 0xBED61BED, 0xBF3BED61, -/**/ 0xB015A000, 0xBFC365FC, -/**/ 0xAFB9691B, 0x3D3FD3A0, -/**/ 0x00000000, 0x3FF29800, -/**/ 0x26F004A6, 0x3F2B061A, -/**/ 0x97412000, 0xBFC340C5, -/**/ 0xF7D9D386, 0x3D37A3DC, -/**/ 0x00000000, 0x3FF29400, -/**/ 0xFF6B646D, 0xBF21B488, -/**/ 0x4D3A4000, 0xBFC31B99, -/**/ 0xE3A50810, 0xBD3F098E, -/**/ 0x00000000, 0x3FF29000, -/**/ 0x2CA5D5AC, 0xBF3F0582, -/**/ 0xCBBC0000, 0xBFC2F677, -/**/ 0x2160F40D, 0xBD352B30, -/**/ 0x00000000, 0x3FF28800, -/**/ 0x16025116, 0x3F260251, -/**/ 0x0C868000, 0xBFC2D161, -/**/ 0xCB81B4A1, 0xBD039D6C, -/**/ 0x00000000, 0x3FF28400, -/**/ 0x502065D2, 0xBF258CDF, -/**/ 0x095F6000, 0xBFC2AC55, -/**/ 0xD0C6C8A8, 0x3D1D3466, -/**/ 0x00000000, 0x3FF27C00, -/**/ 0x1CE4D6F8, 0x3F3FA38A, -/**/ 0xBC11A000, 0xBFC28753, -/**/ 0x359302E6, 0xBD37494E, -/**/ 0x00000000, 0x3FF27800, -/**/ 0xDCCA0781, 0x3F247DD5, -/**/ 0x1E6DE000, 0xBFC2625D, -/**/ 0xF09E3D82, 0x3CF52962, -/**/ 0x00000000, 0x3FF27400, -/**/ 0xDB195E8F, 0xBF25E8EF, -/**/ 0x2A49C000, 0xBFC23D71, -/**/ 0x8FD3DF5C, 0xBD100D23, -/**/ 0x00000000, 0x3FF27000, -/**/ 0xFFB647FE, 0xBF3FF6C8, -/**/ 0xD9808000, 0xBFC2188F, -/**/ 0x7F50C701, 0x3D3B3A1E, -/**/ 0x00000000, 0x3FF26800, -/**/ 0xC024D167, 0x3F266F9A, -/**/ 0x25F26000, 0xBFC1F3B9, -/**/ 0x9B083633, 0x3D15F74E, -/**/ 0x00000000, 0x3FF26400, -/**/ 0xEABD0E14, 0xBF22D1BD, -/**/ 0x09854000, 0xBFC1CEED, -/**/ 0x39192AF9, 0x3D315C1C, -/**/ 0x00000000, 0x3FF26000, -/**/ 0xF6D0EEC8, 0xBF3DD8F7, -/**/ 0x7E240000, 0xBFC1AA2B, -/**/ 0xDDE3B366, 0x3D31AC38, -/**/ 0x00000000, 0x3FF25800, -/**/ 0x2A241EF6, 0x3F2BCEB1, -/**/ 0x7DBEC000, 0xBFC18574, -/**/ 0x45BD9B49, 0xBD3E6744, -/**/ 0x00000000, 0x3FF25400, -/**/ 0xA21378D7, 0xBF18A05B, -/**/ 0x024B2000, 0xBFC160C8, -/**/ 0xA9009E3D, 0xBD2EC2D2, -/**/ 0x00000000, 0x3FF25000, -/**/ 0xD6CFA90C, 0xBF3A076F, -/**/ 0x05C3A000, 0xBFC13C26, -/**/ 0xD94F6509, 0x3D2CF5FD, -/**/ 0x00000000, 0x3FF24800, -/**/ 0x92492492, 0x3F324924, -/**/ 0x8227E000, 0xBFC1178E, -/**/ 0xCE2D07F2, 0xBD21EF78, -/**/ 0x00000000, 0x3FF24400, -/**/ 0x6151E899, 0xBEF3682B, -/**/ 0x717D0000, 0xBFC0F301, -/**/ 0x41AE86C5, 0x3D3E09B4, -/**/ 0x00000000, 0x3FF24000, -/**/ 0x89FA4C67, 0xBF34868E, -/**/ 0xCDCCC000, 0xBFC0CE7E, -/**/ 0xABFF5447, 0xBD14652D, -/**/ 0x00000000, 0x3FF23800, -/**/ 0x6B11F09F, 0x3F3858D8, -/**/ 0x91268000, 0xBFC0AA06, -/**/ 0xD7032129, 0x3D345519, -/**/ 0x00000000, 0x3FF23400, -/**/ 0xAF37C049, 0x3F159E26, -/**/ 0xB59E4000, 0xBFC08598, -/**/ 0x7009902C, 0x3D27E5DD, -/**/ 0x00000000, 0x3FF23000, -/**/ 0x2E076329, 0xBF2AB546, -/**/ 0x354D4000, 0xBFC06135, -/**/ 0x28340EE9, 0xBD363046, -/**/ 0x00000000, 0x3FF22C00, -/**/ 0xFEDD5FEE, 0xBF3FEDD5, -/**/ 0x0A51E000, 0xBFC03CDC, -/**/ 0xF169FC5C, 0xBD381A9C, -/**/ 0x00000000, 0x3FF22400, -/**/ 0x009126D7, 0x3F2B5B92, -/**/ 0x2ECF6000, 0xBFC0188D, -/**/ 0x1CFF9DFE, 0xBD03F965, -/**/ 0x00000000, 0x3FF22000, -/**/ 0x8121FB78, 0xBF121FB7, -/**/ 0x39DBC000, 0xBFBFE891, -/**/ 0xD82F7A82, 0xBD356594, -/**/ 0x00000000, 0x3FF21C00, -/**/ 0x3A459635, 0xBF368F22, -/**/ 0x9DB58000, 0xBFBFA01C, -/**/ 0xFA48A730, 0x3D08F351, -/**/ 0x00000000, 0x3FF21400, -/**/ 0x855E6012, 0x3F379804, -/**/ 0x7D900000, 0xBFBF57BC, -/**/ 0x9EA8B04E, 0xBD176A6C, -/**/ 0x00000000, 0x3FF21000, -/**/ 0x78CD7A37, 0x3F17B57C, -/**/ 0xCDD98000, 0xBFBF0F70, -/**/ 0x6C272C1E, 0xBD32E31F, -/**/ 0x00000000, 0x3FF20C00, -/**/ 0x07E4EF15, 0xBF271E73, -/**/ 0x830A0000, 0xBFBEC739, -/**/ 0xA80CDD10, 0xBD311FCB, -/**/ 0x00000000, 0x3FF20800, -/**/ 0x49392BA7, 0xBF3CDDEC, -/**/ 0x91A34000, 0xBFBE7F16, -/**/ 0x9BC77BFA, 0x3D32C1C5, -/**/ 0x00000000, 0x3FF20000, -/**/ 0x12012012, 0x3F320120, -/**/ 0xEE304000, 0xBFBE3707, -/**/ 0xE6766ABD, 0xBD20F684, -/**/ 0x00000000, 0x3FF1FC00, -/**/ 0xCE8AD1A2, 0x3EF0DC4F, -/**/ 0x8D468000, 0xBFBDEF0D, -/**/ 0x412E9A74, 0x3D324750, -/**/ 0x00000000, 0x3FF1F800, -/**/ 0xDC11F704, 0xBF2F7047, -/**/ 0x63844000, 0xBFBDA727, -/**/ 0x1FA71733, 0xBD1A8940, -/**/ 0x00000000, 0x3FF1F000, -/**/ 0x16B6419D, 0x3F3FAF3F, -/**/ 0x65920000, 0xBFBD5F55, -/**/ 0xCC185469, 0xBD30E239, -/**/ 0x00000000, 0x3FF1EC00, -/**/ 0xF70985E2, 0x3F2E878F, -/**/ 0x88218000, 0xBFBD1797, -/**/ 0xB5EFBEED, 0xBD336433, -/**/ 0x00000000, 0x3FF1E800, -/**/ 0x94D7FDC3, 0xBEEF55E4, -/**/ 0xBFEE0000, 0xBFBCCFED, -/**/ 0x2FE71256, 0xBD33A823, -/**/ 0x00000000, 0x3FF1E400, -/**/ 0x0478BBCF, 0xBF310C4C, -/**/ 0x01BC4000, 0xBFBC8858, -/**/ 0xC65AACD3, 0xBD2646D1, -/**/ 0x00000000, 0x3FF1DC00, -/**/ 0xCB840C49, 0x3F3F0ECB, -/**/ 0x425A4000, 0xBFBC40D6, -/**/ 0x1D1930DD, 0xBD3CB112, -/**/ 0x00000000, 0x3FF1D800, -/**/ 0xC9579074, 0x3F2EACE5, -/**/ 0x769FC000, 0xBFBBF968, -/**/ 0x8D824283, 0xBD24218C, -/**/ 0x00000000, 0x3FF1D400, -/**/ 0xFC60F0AE, 0xBECABDFA, -/**/ 0x936D8000, 0xBFBBB20E, -/**/ 0x35459B8E, 0x3D368BA8, -/**/ 0x00000000, 0x3FF1D000, -/**/ 0xAFDC61F3, 0xBF2F2A4B, -/**/ 0x8DAD4000, 0xBFBB6AC8, -/**/ 0xF50225C7, 0xBD3B1BDF, -/**/ 0x00000000, 0x3FF1CC00, -/**/ 0xAB802394, 0xBF3EC8AF, -/**/ 0x5A530000, 0xBFBB2396, -/**/ 0xEA137079, 0x3CEFF64E, -/**/ 0x00000000, 0x3FF1C400, -/**/ 0xCE058D9B, 0x3F322FC1, -/**/ 0xEE5B0000, 0xBFBADC77, -/**/ 0x09C31904, 0x3D3573B2, -/**/ 0x00000000, 0x3FF1C000, -/**/ 0xE0EFA2CF, 0x3F0AA04F, -/**/ 0x3ECAC000, 0xBFBA956D, -/**/ 0x4C02C4AF, 0xBD3E6379, -/**/ 0x00000000, 0x3FF1BC00, -/**/ 0x225ADFDD, 0xBF26B7F7, -/**/ 0x40B1C000, 0xBFBA4E76, -/**/ 0xB94407C8, 0x3D0E42B6, -/**/ 0x00000000, 0x3FF1B800, -/**/ 0x217CD13A, 0xBF39E073, -/**/ 0xE9278000, 0xBFBA0792, -/**/ 0xC9AD51BF, 0x3D0A9CE6, -/**/ 0x00000000, 0x3FF1B000, -/**/ 0x2BAE2B21, 0x3F37C67F, -/**/ 0x2D4D4000, 0xBFB9C0C3, -/**/ 0x9E838668, 0x3D3AB7C0, -/**/ 0x00000000, 0x3FF1AC00, -/**/ 0xBD720DCF, 0x3F23316E, -/**/ 0x024CC000, 0xBFB97A07, -/**/ 0x732093CE, 0x3CF8BCC1, -/**/ 0x00000000, 0x3FF1A800, -/**/ 0x611A7B96, 0xBF11A7B9, -/**/ 0x5D594000, 0xBFB9335E, -/**/ 0x3ABD47DA, 0xBD23115C, -/**/ 0x00000000, 0x3FF1A400, -/**/ 0xA1C1B8E7, 0xBF324195, -/**/ 0x33AEC000, 0xBFB8ECC9, -/**/ 0xBE67F7AA, 0x3D222F39, -/**/ 0x00000000, 0x3FF1A000, -/**/ 0xFEE61FEE, 0xBF3FEE61, -/**/ 0x7A91C000, 0xBFB8A647, -/**/ 0xAF9BD6DF, 0xBD3C28C0, -/**/ 0x00000000, 0x3FF19800, -/**/ 0x362B721D, 0x3F328F89, -/**/ 0x27508000, 0xBFB85FD9, -/**/ 0x19970C1C, 0x3D35B818, -/**/ 0x00000000, 0x3FF19400, -/**/ 0x28A70119, 0x3F14E023, -/**/ 0x2F410000, 0xBFB8197E, -/**/ 0x60D20041, 0x3D3C0FE4, -/**/ 0x00000000, 0x3FF19000, -/**/ 0x3E48FC6F, 0xBF1FD419, -/**/ 0x87C28000, 0xBFB7D336, -/**/ 0x3E706706, 0xBD33C88C, -/**/ 0x00000000, 0x3FF18C00, -/**/ 0xFD42546B, 0xBF34F7C6, -/**/ 0x263D8000, 0xBFB78D02, -/**/ 0x94B69FB7, 0xBD069B57, -/**/ 0x00000000, 0x3FF18400, -/**/ 0x01185E30, 0x3F3E2FA4, -/**/ 0x00228000, 0xBFB746E1, -/**/ 0x6E1E21D2, 0x3D3126D1, -/**/ 0x00000000, 0x3FF18000, -/**/ 0x11811812, 0x3F318118, -/**/ 0x0AEAC000, 0xBFB700D3, -/**/ 0xA99DED32, 0xBCEC1E8D, -/**/ 0x00000000, 0x3FF17C00, -/**/ 0xFF2E2C43, 0x3F13F1CA, -/**/ 0x3C188000, 0xBFB6BAD8, -/**/ 0xC08926AE, 0xBD0DAF3C, -/**/ 0x00000000, 0x3FF17800, -/**/ 0x0A5EF9FF, 0xBF1D79B9, -/**/ 0x89364000, 0xBFB674F0, -/**/ 0x4C9D3302, 0xBD3A7999, -/**/ 0x00000000, 0x3FF17400, -/**/ 0x1ECEA765, 0xBF338FAD, -/**/ 0xE7D78000, 0xBFB62F1B, -/**/ 0x7ED63C4E, 0x3D217995, -/**/ 0x00000000, 0x3FF17000, -/**/ 0xD8C8714B, 0xBF3F976B, -/**/ 0x4D978000, 0xBFB5E95A, -/**/ 0xE1D17171, 0xBD31CB7C, -/**/ 0x00000000, 0x3FF16800, -/**/ 0xB08FA497, 0x3F348A33, -/**/ 0xB01AC000, 0xBFB5A3AB, -/**/ 0x9E6AFA18, 0xBD3E2574, -/**/ 0x00000000, 0x3FF16400, -/**/ 0x864022C9, 0x3F21AA1F, -/**/ 0x050E0000, 0xBFB55E10, -/**/ 0x0C53C72E, 0xBD0C1D74, -/**/ 0x00000000, 0x3FF16000, -/**/ 0xB487BCAD, 0xBF05B7C9, -/**/ 0x42260000, 0xBFB51887, -/**/ 0x96258B3E, 0xBD330A1D, -/**/ 0x00000000, 0x3FF15C00, -/**/ 0x5B1E5F75, 0xBF2C3411, -/**/ 0x5D208000, 0xBFB4D311, -/**/ 0x82F4E1EF, 0x3CF53A25, -/**/ 0x00000000, 0x3FF15800, -/**/ 0xEEA99544, 0xBF39543F, -/**/ 0x4BC30000, 0xBFB48DAE, -/**/ 0x208C200C, 0xBD30185B, -/**/ 0x00000000, 0x3FF15000, -/**/ 0xDD5C8CB8, 0x3F3B9A3F, -/**/ 0x03DBC000, 0xBFB4485E, -/**/ 0xE8D26AB7, 0xBD3FAD46, -/**/ 0x00000000, 0x3FF14C00, -/**/ 0xB19AE5C7, 0x3F30B155, -/**/ 0x7B414000, 0xBFB40320, -/**/ 0xAA8157C0, 0xBD26FD84, -/**/ 0x00000000, 0x3FF14800, -/**/ 0xB34EDA32, 0x3F17C382, -/**/ 0xA7D20000, 0xBFB3BDF5, -/**/ 0xAD125895, 0x3D319BD0, -/**/ 0x00000000, 0x3FF14400, -/**/ 0xBAF129D0, 0xBF129CFF, -/**/ 0x7F748000, 0xBFB378DD, -/**/ 0x28F1FACA, 0xBD371411, -/**/ 0x00000000, 0x3FF14000, -/**/ 0x771B7C7F, 0xBF2E2E59, -/**/ 0xF8184000, 0xBFB333D7, -/**/ 0xA81B8848, 0x3CE692B6, -/**/ 0x00000000, 0x3FF13C00, -/**/ 0x30FE1D9C, 0xBF395F06, -/**/ 0x07B40000, 0xBFB2EEE5, -/**/ 0xDD77C860, 0xBD08081E, -/**/ 0x00000000, 0x3FF13400, -/**/ 0x5C81135D, 0x3F3C8113, -/**/ 0xA4470000, 0xBFB2AA04, -/**/ 0xA8B1CB41, 0xBD37A48B, -/**/ 0x00000000, 0x3FF13000, -/**/ 0xBB3B5DC0, 0x3F3288FF, -/**/ 0xC3D8C000, 0xBFB26536, -/**/ 0x097C5BA3, 0xBD0B4BAC, -/**/ 0x00000000, 0x3FF12C00, -/**/ 0xB81577AE, 0x3F21713D, -/**/ 0x5C784000, 0xBFB2207B, -/**/ 0xFC10C7BF, 0xBD349D8C, -/**/ 0x00000000, 0x3FF12800, -/**/ 0xBAD6FC84, 0xBEEE05E5, -/**/ 0x643D0000, 0xBFB1DBD2, -/**/ 0xD977C494, 0xBD390B24, -/**/ 0x00000000, 0x3FF12400, -/**/ 0x59F992BF, 0xBF24E314, -/**/ 0xD1464000, 0xBFB1973B, -/**/ 0x54F930B3, 0xBD3566D1, -/**/ 0x00000000, 0x3FF12000, -/**/ 0xC9F6E7A8, 0xBF33CB91, -/**/ 0x99BB4000, 0xBFB152B7, -/**/ 0x07030829, 0x3D09BB29, -/**/ 0x00000000, 0x3FF11C00, -/**/ 0x8B7D9851, 0xBF3CFE65, -/**/ 0xB3CB0000, 0xBFB10E45, -/**/ 0x284A3465, 0x3D37CF69, -/**/ 0x00000000, 0x3FF11400, -/**/ 0x29605DF7, 0x3F39F5DB, -/**/ 0x15AC4000, 0xBFB0C9E6, -/**/ 0x0974D976, 0xBD2C2DA8, -/**/ 0x00000000, 0x3FF11000, -/**/ 0x11111111, 0x3F311111, -/**/ 0xB59E4000, 0xBFB08598, -/**/ 0x7009902C, 0x3D17E5DD, -/**/ 0x00000000, 0x3FF10C00, -/**/ 0x12A5B1AE, 0x3F20A63A, -/**/ 0x89E74000, 0xBFB0415D, -/**/ 0x5CF1D753, 0xBD1111C0, -/**/ 0x00000000, 0x3FF10800, -/**/ 0xBE011080, 0xBED107FB, -/**/ 0x11AB8000, 0xBFAFFA69, -/**/ 0x98381A8F, 0xBD23008C, -/**/ 0x00000000, 0x3FF10400, -/**/ 0x6FEABBAE, 0xBF216989, -/**/ 0x51800000, 0xBFAF723B, -/**/ 0xDD5610D3, 0x3D3D6EB0, -/**/ 0x00000000, 0x3FF10000, -/**/ 0x10FEF011, 0xBF30FEF0, -/**/ 0xC0068000, 0xBFAEEA31, -/**/ 0x3606D891, 0xBD3C3DD8, -/**/ 0x00000000, 0x3FF0FC00, -/**/ 0x98CDDC74, 0xBF3922C0, -/**/ 0x4A0B8000, 0xBFAE624C, -/**/ 0x74676689, 0x3D30F25C, -/**/ 0x00000000, 0x3FF0F400, -/**/ 0x325A1A80, 0x3F3EDFAB, -/**/ 0xDC680000, 0xBFADDA8A, -/**/ 0x64D9E42F, 0x3D21B1AC, -/**/ 0x00000000, 0x3FF0F000, -/**/ 0xF27F9A57, 0x3F370834, -/**/ 0x64060000, 0xBFAD52ED, -/**/ 0x2A29BBD6, 0x3D33C85D, -/**/ 0x00000000, 0x3FF0EC00, -/**/ 0xD391FBC5, 0x3F2EAD7C, -/**/ 0xCDDD8000, 0xBFACCB73, -/**/ 0x6E09F5FE, 0xBD3965C3, -/**/ 0x00000000, 0x3FF0E800, -/**/ 0xE9479870, 0x3F1F2CA5, -/**/ 0x06F70000, 0xBFAC441E, -/**/ 0x49850D15, 0xBD354F1F, -/**/ 0x00000000, 0x3FF0E400, -/**/ 0x80439019, 0x3ED95609, -/**/ 0xFC690000, 0xBFABBCEB, -/**/ 0x8C317C2A, 0x3D17BF86, -/**/ 0x00000000, 0x3FF0E000, -/**/ 0xC6867596, 0xBF1B6B4D, -/**/ 0x9B588000, 0xBFAB35DD, -/**/ 0xD6CF558E, 0xBD3D5674, -/**/ 0x00000000, 0x3FF0DC00, -/**/ 0x172D4CE8, 0xBF2BEAEE, -/**/ 0xD0FB0000, 0xBFAAAEF2, -/**/ 0x353BB42E, 0xBD20FC1A, -/**/ 0x00000000, 0x3FF0D800, -/**/ 0x479071A9, 0xBF34EAB0, -/**/ 0x8A938000, 0xBFAA282B, -/**/ 0x80EFC8E3, 0x3D2E8F59, -/**/ 0x00000000, 0x3FF0D400, -/**/ 0xA61C62D3, 0xBF3BBA9C, -/**/ 0xB5740000, 0xBFA9A187, -/**/ 0x4EC4D90D, 0x3D30C22E, -/**/ 0x00000000, 0x3FF0CC00, -/**/ 0x77344011, 0x3F3D9AA6, -/**/ 0x3EFD8000, 0xBFA91B07, -/**/ 0x3F76CA96, 0x3D19D7C5, -/**/ 0x00000000, 0x3FF0C800, -/**/ 0xCDA3AC11, 0x3F3714FB, -/**/ 0x149F8000, 0xBFA894AA, -/**/ 0x8BE97661, 0xBD39A19A, -/**/ 0x00000000, 0x3FF0C400, -/**/ 0x391F2E61, 0x3F30B446, -/**/ 0x23D90000, 0xBFA80E70, -/**/ 0x6F28BF45, 0x3D399DC1, -/**/ 0x00000000, 0x3FF0C000, -/**/ 0x682E11CD, 0x3F24F0D1, -/**/ 0x5A358000, 0xBFA78859, -/**/ 0x083B3A4C, 0x3D108B0D, -/**/ 0x00000000, 0x3FF0BC00, -/**/ 0x5D5A36EA, 0x3F118519, -/**/ 0xA5510000, 0xBFA70265, -/**/ 0x11FD5CE7, 0x3D2888DF, -/**/ 0x00000000, 0x3FF0B800, -/**/ 0x62386CAB, 0xBEF913DA, -/**/ 0xF2D48000, 0xBFA67C94, -/**/ 0x827CCA0C, 0xBD3DAC20, -/**/ 0x00000000, 0x3FF0B400, -/**/ 0xBD31D7D0, 0xBF1D7CFF, -/**/ 0x30790000, 0xBFA5F6E7, -/**/ 0x8012494C, 0x3D20485A, -/**/ 0x00000000, 0x3FF0B000, -/**/ 0x226951DC, 0xBF2A11BA, -/**/ 0x4C040000, 0xBFA5715C, -/**/ 0xDFC47628, 0x3D38888D, -/**/ 0x00000000, 0x3FF0AC00, -/**/ 0x7B2E9DD2, 0xBF328E31, -/**/ 0x334A0000, 0xBFA4EBF4, -/**/ 0xF73BE773, 0x3D2D9150, -/**/ 0x00000000, 0x3FF0A800, -/**/ 0x7EF597EF, 0xBF37EF59, -/**/ 0xD42E0000, 0xBFA466AE, -/**/ 0x75BDFD28, 0x3D2C1673, -/**/ 0x00000000, 0x3FF0A400, -/**/ 0x50D413C1, 0xBF3D2C71, -/**/ 0x1CA08000, 0xBFA3E18C, -/**/ 0x3F6E378E, 0xBD3748ED, -/**/ 0x00000000, 0x3FF09C00, -/**/ 0xF836010A, 0x3F3DBA6A, -/**/ 0xFAA10000, 0xBFA35C8B, -/**/ 0x5EF9EB35, 0xBD38357D, -/**/ 0x00000000, 0x3FF09800, -/**/ 0x624D4AF5, 0x3F38C51F, -/**/ 0x5C3C8000, 0xBFA2D7AE, -/**/ 0x459DA66D, 0x3D322939, -/**/ 0x00000000, 0x3FF09400, -/**/ 0x10953F39, 0x3F33F390, -/**/ 0x2F8D0000, 0xBFA252F3, -/**/ 0xE021B67B, 0xBD283E9A, -/**/ 0x00000000, 0x3FF09000, -/**/ 0x861539B9, 0x3F2E8B42, -/**/ 0x62BC0000, 0xBFA1CE5A, -/**/ 0x8D8DF999, 0xBD3A9CC7, -/**/ 0x00000000, 0x3FF08C00, -/**/ 0xACBC4021, 0x3F25766E, -/**/ 0xE4008000, 0xBFA149E3, -/**/ 0x9A4168FD, 0x3D32B98A, -/**/ 0x00000000, 0x3FF08800, -/**/ 0x0F3DBD5A, 0x3F1950DB, -/**/ 0xA19E0000, 0xBFA0C58F, -/**/ 0x58B17913, 0x3D0559D1, -/**/ 0x00000000, 0x3FF08400, -/**/ 0x08421084, 0x3F008421, -/**/ 0x89E78000, 0xBFA0415D, -/**/ 0xF461C516, 0x3D3DDDC7, -/**/ 0x00000000, 0x3FF08000, -/**/ 0x0041FF7C, 0xBF007FDF, -/**/ 0x16780000, 0xBF9F7A9B, -/**/ 0x271BE7D7, 0xBD242AD9, -/**/ 0x00000000, 0x3FF07C00, -/**/ 0xC54798FB, 0xBF183591, -/**/ 0x28140000, 0xBF9E72BF, -/**/ 0x49774D47, 0x3D28D751, -/**/ 0x00000000, 0x3FF07800, -/**/ 0x518F4EFD, 0xBF23CFA1, -/**/ 0x25980000, 0xBF9D6B27, -/**/ 0x50D1B838, 0x3D39FF7B, -/**/ 0x00000000, 0x3FF07400, -/**/ 0x01073261, 0xBF2B3EB7, -/**/ 0xEC150000, 0xBF9C63D2, -/**/ 0xE030A687, 0x3D35439C, -/**/ 0x00000000, 0x3FF07000, -/**/ 0xD6EAB025, 0xBF31341F, -/**/ 0x58B70000, 0xBF9B5CC2, -/**/ 0xB8AFBFE8, 0xBD18E611, -/**/ 0x00000000, 0x3FF06C00, -/**/ 0x6ED049E0, 0xBF34A638, -/**/ 0x48C60000, 0xBF9A55F5, -/**/ 0x9F2D03C9, 0x3D2DE070, -/**/ 0x00000000, 0x3FF06800, -/**/ 0xEF997F5C, 0xBF37F5BF, -/**/ 0x99A20000, 0xBF994F6B, -/**/ 0xF96CF7F5, 0xBD311D5E, -/**/ 0x00000000, 0x3FF06400, -/**/ 0xE5604189, 0xBF3B22D0, -/**/ 0x28C90000, 0xBF984925, -/**/ 0x325A0C34, 0x3D2AA0BA, -/**/ 0x00000000, 0x3FF06000, -/**/ 0xC1163FF0, 0xBF3E2D85, -/**/ 0xD3D00000, 0xBF974321, -/**/ 0x0FE94778, 0xBCFB4A69, -/**/ 0x00000000, 0x3FF05800, -/**/ 0x27586632, 0x3F3EEA07, -/**/ 0x78690000, 0xBF963D61, -/**/ 0x89596542, 0xBD07ABF3, -/**/ 0x00000000, 0x3FF05400, -/**/ 0x98E2A5E7, 0x3F3C23BB, -/**/ 0xF45F0000, 0xBF9537E3, -/**/ 0xD2D7F253, 0xBD2AB259, -/**/ 0x00000000, 0x3FF05000, -/**/ 0x73404146, 0x3F397F7D, -/**/ 0x25980000, 0xBF9432A9, -/**/ 0x928637FE, 0xBD098139, -/**/ 0x00000000, 0x3FF04C00, -/**/ 0xB0C7B49A, 0x3F36FD32, -/**/ 0xEA130000, 0xBF932DB0, -/**/ 0x130895FC, 0xBD2710CB, -/**/ 0x00000000, 0x3FF04800, -/**/ 0x664C578A, 0x3F349CC1, -/**/ 0x1FEA0000, 0xBF9228FB, -/**/ 0x284991FE, 0xBD2713E3, -/**/ 0x00000000, 0x3FF04400, -/**/ 0xC2FCB1F4, 0x3F325E0F, -/**/ 0xA5500000, 0xBF912487, -/**/ 0xFED4B393, 0xBD3FDBE5, -/**/ 0x00000000, 0x3FF04000, -/**/ 0x10410410, 0x3F304104, -/**/ 0x58930000, 0xBF902056, -/**/ 0x7C8E8417, 0xBD3611D2, -/**/ 0x00000000, 0x3FF03C00, -/**/ 0x6334030B, 0x3F2C8B09, -/**/ 0x30340000, 0xBF8E38CE, -/**/ 0xA3DA281A, 0x3D39DE88, -/**/ 0x00000000, 0x3FF03800, -/**/ 0x48FF7E3A, 0x3F28D6F0, -/**/ 0x84C80000, 0xBF8C3173, -/**/ 0xFCEFB9FE, 0x3D341F33, -/**/ 0x00000000, 0x3FF03400, -/**/ 0x0081A559, 0x3F25658A, -/**/ 0x6C180000, 0xBF8A2A9C, -/**/ 0x4D6D3472, 0x3D3F73BC, -/**/ 0x00000000, 0x3FF03000, -/**/ 0xEBC349DE, 0x3F2236A3, -/**/ 0xA3880000, 0xBF882448, -/**/ 0x12C584E0, 0xBD345544, -/**/ 0x00000000, 0x3FF02C00, -/**/ 0x3FEFD386, 0x3F1E9417, -/**/ 0xE8B60000, 0xBF861E77, -/**/ 0xEAF8EAF3, 0x3D38073E, -/**/ 0x00000000, 0x3FF02800, -/**/ 0xCA7A317C, 0x3F193F1D, -/**/ 0xF9680000, 0xBF841929, -/**/ 0x55D01368, 0xBD1977C7, -/**/ 0x00000000, 0x3FF02400, -/**/ 0x6CB49652, 0x3F146DF7, -/**/ 0x939E0000, 0xBF82145E, -/**/ 0x38C4EA00, 0xBD3E3D12, -/**/ 0x00000000, 0x3FF02000, -/**/ 0x81020408, 0x3F102040, -/**/ 0x75880000, 0xBF801015, -/**/ 0x1998B506, 0xBD3BCE25, -/**/ 0x00000000, 0x3FF01C00, -/**/ 0x8C355D63, 0x3F08AB2B, -/**/ 0xBB100000, 0xBF7C189C, -/**/ 0x12588560, 0x3D3D8055, -/**/ 0x00000000, 0x3FF01800, -/**/ 0xBD1BA97E, 0x3F021B28, -/**/ 0x14580000, 0xBF781212, -/**/ 0x82973F27, 0xBD1AD503, -/**/ 0x00000000, 0x3FF01400, -/**/ 0x411155AB, 0x3EF91F67, -/**/ 0x74780000, 0xBF740C8A, -/**/ 0xDF070002, 0xBD1E3871, -/**/ 0x00000000, 0x3FF01000, -/**/ 0x10101010, 0x3EF01010, -/**/ 0x59580000, 0xBF700805, -/**/ 0xCB31C67B, 0xBD2166AF, -/**/ 0x00000000, 0x3FF00C00, -/**/ 0x279DB649, 0x3EE20D8A, -/**/ 0x82880000, 0xBF680904, -/**/ 0x96A70C0C, 0xBD285C06, -/**/ 0x00000000, 0x3FF00800, -/**/ 0x02010080, 0x3ED00804, -/**/ 0x55D80000, 0xBF600401, -/**/ 0xC7CC7089, 0x3D33BB10, -/**/ 0x00000000, 0x3FF00400, -/**/ 0x00401004, 0x3EB00401, -/**/ 0x55600000, 0xBF500200, -/**/ 0xCD5F35F8, 0xBD356224, -/**/ 0x00000000, 0x3FF00000, -/**/ 0x00000000, 0x00000000, -/**/ 0x00000000, 0x00000000, -/**/ 0x00000000, 0x00000000, -/**/ 0x00000000, 0x3FEFF800, -/**/ 0xFF801FF8, 0x3EAFF801, -/**/ 0xAA800000, 0x3F4FFC00, -/**/ 0x7809A0A3, 0x3D35621F, -/**/ 0x00000000, 0x3FEFF000, -/**/ 0xFC01FF00, 0x3ECFF007, -/**/ 0xA9B00000, 0x3F5FF802, -/**/ 0x1D61C5EB, 0xBD33BC66, -/**/ 0x00000000, 0x3FEFE800, -/**/ 0x186DADBE, 0x3EE1F28A, -/**/ 0x7D780000, 0x3F67F704, -/**/ 0x89D68648, 0x3D283DA6, -/**/ 0x00000000, 0x3FEFE000, -/**/ 0xE01FE020, 0x3EEFE01F, -/**/ 0xA2B00000, 0x3F6FF00A, -/**/ 0xA086B56A, 0x3D20BC04, -/**/ 0x00000000, 0x3FEFD800, -/**/ 0xDF68BD14, 0x3EF8E0E6, -/**/ 0x60F00000, 0x3F73F38A, -/**/ 0x93C93749, 0x3D192256, -/**/ 0x00000000, 0x3FEFD000, -/**/ 0x439A981C, 0x3F01E528, -/**/ 0xEBD80000, 0x3F77EE11, -/**/ 0xC2D23A07, 0x3D0749D3, -/**/ 0x00000000, 0x3FEFC800, -/**/ 0x8596391C, 0x3F08556A, -/**/ 0x70040000, 0x3F7BE79C, -/**/ 0x9A6C0404, 0x3D38EC8F, -/**/ 0x00000000, 0x3FEFC000, -/**/ 0x01FC07F0, 0x3F0FC07F, -/**/ 0x6B100000, 0x3F7FE02A, -/**/ 0x0DDA40E4, 0x3D19E23F, -/**/ 0x00000000, 0x3FEFB800, -/**/ 0x9F5976B5, 0x3F1412D5, -/**/ 0x2D1A0000, 0x3F81EBDE, -/**/ 0xFF48DC36, 0xBD2A0683, -/**/ 0x00000000, 0x3FEFB000, -/**/ 0xBD271E34, 0x3F18C21A, -/**/ 0x5D260000, 0x3F83E729, -/**/ 0xFF29A114, 0xBD2609C1, -/**/ 0x00000000, 0x3FEFA800, -/**/ 0x5594A734, 0x3F1DEDB2, -/**/ 0x03EC0000, 0x3F85E1F7, -/**/ 0xF585DA1B, 0x3D37CA09, -/**/ 0x00000000, 0x3FEFA000, -/**/ 0x1FA11CAA, 0x3F21CAA0, -/**/ 0x5F820000, 0x3F87DC47, -/**/ 0x5B5DA1F5, 0xBD3EB124, -/**/ 0x00000000, 0x3FEF9800, -/**/ 0x55E8CB6B, 0x3F24DC34, -/**/ 0xADC60000, 0x3F89D61A, -/**/ 0x327B4257, 0x3D37B196, -/**/ 0x00000000, 0x3FEF9000, -/**/ 0x13BAF1B2, 0x3F282B68, -/**/ 0x2C740000, 0x3F8BCF71, -/**/ 0x97BD9771, 0x3D1C25E0, -/**/ 0x00000000, 0x3FEF8800, -/**/ 0xCC420861, 0x3F2BB80D, -/**/ 0x19120000, 0x3F8DC84B, -/**/ 0x1E3A5B30, 0x3D1C0A54, -/**/ 0x00000000, 0x3FEF8000, -/**/ 0x1F81F820, 0x3F2F81F8, -/**/ 0xB0FC0000, 0x3F8FC0A8, -/**/ 0xF6D3A69C, 0x3CDF1E7C, -/**/ 0x00000000, 0x3FEF7800, -/**/ 0xED1079FA, 0x3F31C47C, -/**/ 0x18B00000, 0x3F90DC45, -/**/ 0x380313FC, 0xBD29BC2F, -/**/ 0x00000000, 0x3FEF7000, -/**/ 0xFA98528D, 0x3F33E672, -/**/ 0xEB9F0000, 0x3F91D7F7, -/**/ 0x83FCC7A6, 0xBD14193A, -/**/ 0x00000000, 0x3FEF6800, -/**/ 0xCAFBD3D2, 0x3F3626C7, -/**/ 0xEFB50000, 0x3F92D36C, -/**/ 0x341706C3, 0x3D35F0BB, -/**/ 0x00000000, 0x3FEF6000, -/**/ 0x06DDABA6, 0x3F388565, -/**/ 0x43470000, 0x3F93CEA4, -/**/ 0x32D6A40B, 0xBD36A2C4, -/**/ 0x00000000, 0x3FEF5800, -/**/ 0x6CC4F5F5, 0x3F3B0234, -/**/ 0x04900000, 0x3F94C99E, -/**/ 0x5DF5F4A5, 0x3D1DECC6, -/**/ 0x00000000, 0x3FEF5000, -/**/ 0xD102728A, 0x3F3D9D1F, -/**/ 0x51B90000, 0x3F95C45A, -/**/ 0x216D87D8, 0xBD263BB6, -/**/ 0x00000000, 0x3FEF5000, -/**/ 0xE26A1DD4, 0xBF3FA9EE, -/**/ 0x48D20000, 0x3F96BED9, -/**/ 0x160A43F8, 0xBD320BC4, -/**/ 0x00000000, 0x3FEF4800, -/**/ 0xADEC7540, 0xBF3CD30D, -/**/ 0x07D60000, 0x3F97B91B, -/**/ 0xB602ACE4, 0xBD33B955, -/**/ 0x00000000, 0x3FEF4000, -/**/ 0x7C761DC6, 0xBF39DE52, -/**/ 0xACAA0000, 0x3F98B31F, -/**/ 0xA96E4964, 0xBD33FC78, -/**/ 0x00000000, 0x3FEF3800, -/**/ 0x23989FF0, 0xBF36CBD3, -/**/ 0x551D0000, 0x3F99ACE7, -/**/ 0x7EC7C410, 0xBD2D75D9, -/**/ 0x00000000, 0x3FEF3000, -/**/ 0x639F8B15, 0xBF339BA5, -/**/ 0x1EE80000, 0x3F9AA672, -/**/ 0x5C5AF494, 0x3D2AD4EB, -/**/ 0x00000000, 0x3FEF2800, -/**/ 0xE7AA579B, 0xBF304DDE, -/**/ 0x27B00000, 0x3F9B9FC0, -/**/ 0x0AE6922A, 0xBD3B9A01, -/**/ 0x00000000, 0x3FEF2000, -/**/ 0x8B8C46FD, 0xBF29C52A, -/**/ 0x8D010000, 0x3F9C98D1, -/**/ 0x0589DF0F, 0xBD2BF615, -/**/ 0x00000000, 0x3FEF1800, -/**/ 0xFE0E92B4, 0xBF22B3BB, -/**/ 0x6C540000, 0x3F9D91A6, -/**/ 0x658CFB9A, 0x3D2E61F1, -/**/ 0x00000000, 0x3FEF1000, -/**/ 0xFE8B488E, 0xBF16CF39, -/**/ 0xE30D0000, 0x3F9E8A3E, -/**/ 0x3DE53900, 0xBD21A9FA, -/**/ 0x00000000, 0x3FEF0800, -/**/ 0xF07C1F08, 0xBEFF07C1, -/**/ 0x0E780000, 0x3F9F829B, -/**/ 0x7C7E09E4, 0x3D298026, -/**/ 0x00000000, 0x3FEF0000, -/**/ 0x007C00F8, 0x3EFF003E, -/**/ 0x85E70000, 0x3FA03D5D, -/**/ 0x60ED29CF, 0x3D3F7789, -/**/ 0x00000000, 0x3FEEF800, -/**/ 0x3D759870, 0x3F17B671, -/**/ 0x7C198000, 0x3FA0B94F, -/**/ 0x6F022783, 0xBD2E8989, -/**/ 0x00000000, 0x3FEEF000, -/**/ 0x2A8BB96A, 0x3F241070, -/**/ 0x78598000, 0x3FA13523, -/**/ 0xB71FA59B, 0xBD1C1AC3, -/**/ 0x00000000, 0x3FEEE800, -/**/ 0x58E01EEA, 0x3F2C7F84, -/**/ 0x89240000, 0x3FA1B0D9, -/**/ 0x9AE889BB, 0xBD33401E, -/**/ 0x00000000, 0x3FEEE000, -/**/ 0xA3D491BC, 0x3F329425, -/**/ 0xBCEA8000, 0x3FA22C71, -/**/ 0xF87F888F, 0x3CFD2818, -/**/ 0x00000000, 0x3FEED800, -/**/ 0x9E9D2AE8, 0x3F37054D, -/**/ 0x22150000, 0x3FA2A7EC, -/**/ 0x7A9163FE, 0xBD278CE7, -/**/ 0x00000000, 0x3FEED000, -/**/ 0x540C85E6, 0x3F3B9325, -/**/ 0xC7000000, 0x3FA32348, -/**/ 0x90B1E49F, 0x3D2696DB, -/**/ 0x00000000, 0x3FEED000, -/**/ 0xF099FC26, 0xBF3FC267, -/**/ 0xB9FE8000, 0x3FA39E87, -/**/ 0x80AD9015, 0x3D3EAFD4, -/**/ 0x00000000, 0x3FEEC800, -/**/ 0xD02A4E5D, 0xBF3AFB6E, -/**/ 0x09590000, 0x3FA419A9, -/**/ 0x67D48EA7, 0x3D3B5CDC, -/**/ 0x00000000, 0x3FEEC000, -/**/ 0xD7A79FF1, 0xBF361803, -/**/ 0xC34D8000, 0x3FA494AC, -/**/ 0xA56FD247, 0x3D211C78, -/**/ 0x00000000, 0x3FEEB800, -/**/ 0x805C2197, 0xBF31183B, -/**/ 0xF60F8000, 0x3FA50F92, -/**/ 0x0A91FFE3, 0x3D296CFB, -/**/ 0x00000000, 0x3FEEB000, -/**/ 0x5FE15180, 0xBF27F854, -/**/ 0xAFC90000, 0x3FA58A5B, -/**/ 0x9570AD39, 0xBD2B2B73, -/**/ 0x00000000, 0x3FEEA800, -/**/ 0xE210C36A, 0xBF1B0F90, -/**/ 0xFE990000, 0x3FA60506, -/**/ 0x8194E036, 0xBD32BA40, -/**/ 0x00000000, 0x3FEEA000, -/**/ 0x8C33ADB2, 0xBEF6F7DD, -/**/ 0xF0948000, 0x3FA67F94, -/**/ 0x3E7E4ED7, 0x3D3ECC1F, -/**/ 0x00000000, 0x3FEE9800, -/**/ 0x1003D310, 0x3F1003D3, -/**/ 0x93C78000, 0x3FA6FA05, -/**/ 0x41D634A1, 0x3D3B415E, -/**/ 0x00000000, 0x3FEE9000, -/**/ 0x0B7672A0, 0x3F231ABF, -/**/ 0xF6330000, 0x3FA77458, -/**/ 0xE586AF09, 0xBD3181DC, -/**/ 0x00000000, 0x3FEE8800, -/**/ 0xCF172481, 0x3F2E6B5C, -/**/ 0x25CD8000, 0x3FA7EE8F, -/**/ 0x11A5C1E9, 0xBD3F4216, -/**/ 0x00000000, 0x3FEE8000, -/**/ 0x77A84876, 0x3F34F9CD, -/**/ 0x30840000, 0x3FA868A8, -/**/ 0x134AC693, 0xBD12623A, -/**/ 0x00000000, 0x3FEE7800, -/**/ 0xD7473427, 0x3F3AD9A8, -/**/ 0x243A0000, 0x3FA8E2A4, -/**/ 0x01426490, 0x3D2B9EEB, -/**/ 0x00000000, 0x3FEE7800, -/**/ 0x4578DCCA, 0xBF3F2AD3, -/**/ 0x0EC90000, 0x3FA95C83, -/**/ 0x97C5FEB8, 0xBD2C1482, -/**/ 0x00000000, 0x3FEE7000, -/**/ 0x97A6A035, 0xBF3913BA, -/**/ 0xFDFF8000, 0x3FA9D644, -/**/ 0x539A473B, 0x3D313C90, -/**/ 0x00000000, 0x3FEE6800, -/**/ 0xC594A915, 0xBF32E120, -/**/ 0xFFA40000, 0x3FAA4FE9, -/**/ 0xA0402925, 0xBD36E584, -/**/ 0x00000000, 0x3FEE6000, -/**/ 0xC5DF4232, 0xBF292632, -/**/ 0x21710000, 0x3FAAC972, -/**/ 0xF013222C, 0x3D2F8D3E, -/**/ 0x00000000, 0x3FEE5800, -/**/ 0xC3518A6E, 0xBF18A6DF, -/**/ 0x71198000, 0x3FAB42DD, -/**/ 0xE5D6704C, 0xBD1C827A, -/**/ 0x00000000, 0x3FEE5000, -/**/ 0x86833271, 0x3ED6BC08, -/**/ 0xFC450000, 0x3FABBC2B, -/**/ 0x91417DAF, 0xBD17D186, -/**/ 0x00000000, 0x3FEE4800, -/**/ 0xE672838D, 0x3F1BEB2D, -/**/ 0xD0920000, 0x3FAC355D, -/**/ 0x9ABF8388, 0x3D2F2CCC, -/**/ 0x00000000, 0x3FEE4000, -/**/ 0x9785150A, 0x3F2B6B8D, -/**/ 0xFB960000, 0x3FACAE72, -/**/ 0x2025B1BE, 0xBD3EFABF, -/**/ 0x00000000, 0x3FEE3800, -/**/ 0xE0D399FA, 0x3F348BCE, -/**/ 0x8ADB0000, 0x3FAD276B, -/**/ 0xC78A64B0, 0x3D16A423, -/**/ 0x00000000, 0x3FEE3000, -/**/ 0x933AC00F, 0x3F3B7CD0, -/**/ 0x8BE38000, 0x3FADA047, -/**/ 0xB1F6FE05, 0x3D2252C7, -/**/ 0x00000000, 0x3FEE3000, -/**/ 0x308F5281, 0xBF3D7747, -/**/ 0x0C278000, 0x3FAE1907, -/**/ 0x64629E86, 0xBD2FEA46, -/**/ 0x00000000, 0x3FEE2800, -/**/ 0x6C196F66, 0xBF36508B, -/**/ 0x19150000, 0x3FAE91AA, -/**/ 0x1DCC6A76, 0xBD0E82A0, -/**/ 0x00000000, 0x3FEE2000, -/**/ 0x1E1E1E1E, 0xBF2E1E1E, -/**/ 0xC0118000, 0x3FAF0A30, -/**/ 0x83368E91, 0xBD2D599E, -/**/ 0x00000000, 0x3FEE1800, -/**/ 0xDD355CDB, 0xBF1ECB93, -/**/ 0x0E780000, 0x3FAF829B, -/**/ 0x7C7E09E4, 0x3D398026, -/**/ 0x00000000, 0x3FEE1000, -/**/ 0x7C01E100, 0xBECE0FF8, -/**/ 0x119B8000, 0x3FAFFAE9, -/**/ 0x4262C554, 0x3D230337, -/**/ 0x00000000, 0x3FEE0800, -/**/ 0x25C73724, 0x3F1D54B5, -/**/ 0x6B624000, 0x3FB0398D, -/**/ 0xFCBFCD00, 0xBD3AB14D, -/**/ 0x00000000, 0x3FEE0000, -/**/ 0x1E01E01E, 0x3F2E01E0, -/**/ 0x35990000, 0x3FB07598, -/**/ 0xE4B59987, 0xBD3B8ECF, -/**/ 0x00000000, 0x3FEDF800, -/**/ 0xC84194BA, 0x3F36C715, -/**/ 0xEE0D0000, 0x3FB0B194, -/**/ 0x4F69EDCC, 0x3D3666EA, -/**/ 0x00000000, 0x3FEDF000, -/**/ 0xEF26D838, 0x3F3EA78B, -/**/ 0x9B554000, 0x3FB0ED83, -/**/ 0x6D48ABB4, 0xBD3901F4, -/**/ 0x00000000, 0x3FEDF000, -/**/ 0xF10995DC, 0xBF395DBF, -/**/ 0x44030000, 0x3FB12964, -/**/ 0x751AA773, 0xBD3D53BB, -/**/ 0x00000000, 0x3FEDE800, -/**/ 0x3BCBADC8, 0xBF3148E0, -/**/ 0xEEA38000, 0x3FB16536, -/**/ 0x768FA309, 0xBD147C5E, -/**/ 0x00000000, 0x3FEDE000, -/**/ 0x86E25CE1, 0xBF2233CE, -/**/ 0xA1BF8000, 0x3FB1A0FB, -/**/ 0xC319D6DC, 0x3D24A3FC, -/**/ 0x00000000, 0x3FEDD800, -/**/ 0x26B3FE23, 0xBEEA1CE9, -/**/ 0x63DB0000, 0x3FB1DCB2, -/**/ 0x5E9E8981, 0x3D39444F, -/**/ 0x00000000, 0x3FEDD000, -/**/ 0x0AB71710, 0x3F1E4836, -/**/ 0x3B75C000, 0x3FB2185B, -/**/ 0xF8F32304, 0xBD3E3189, -/**/ 0x00000000, 0x3FEDC800, -/**/ 0x00EE500F, 0x3F300EE5, -/**/ 0x2F0A0000, 0x3FB253F6, -/**/ 0xFB69A701, 0x3D3416F8, -/**/ 0x00000000, 0x3FEDC000, -/**/ 0x231C226A, 0x3F38A58D, -/**/ 0x450EC000, 0x3FB28F83, -/**/ 0xAA119769, 0x3D3A8D75, -/**/ 0x00000000, 0x3FEDC000, -/**/ 0x14715D63, 0xBF3EAA0C, -/**/ 0x83F5C000, 0x3FB2CB02, -/**/ 0xCA657021, 0x3D3E1EE2, -/**/ 0x00000000, 0x3FEDB800, -/**/ 0x92AEFFC5, 0xBF35DFF8, -/**/ 0xF22C8000, 0x3FB30673, -/**/ 0x9DCF0BA5, 0x3D24C9E2, -/**/ 0x00000000, 0x3FEDB000, -/**/ 0x67E251A0, 0xBF29F894, -/**/ 0x961BC000, 0x3FB341D7, -/**/ 0x99837610, 0x3D31D092, -/**/ 0x00000000, 0x3FEDA800, -/**/ 0x1FF89620, 0xBF0FF896, -/**/ 0x76284000, 0x3FB37D2D, -/**/ 0x9B7FF15C, 0xBD2C60AA, -/**/ 0x00000000, 0x3FEDA000, -/**/ 0x076828BD, 0x3F145E70, -/**/ 0x98B1C000, 0x3FB3B875, -/**/ 0x94ACA313, 0xBD222415, -/**/ 0x00000000, 0x3FED9800, -/**/ 0xE567D573, 0x3F2C8F60, -/**/ 0x04140000, 0x3FB3F3B0, -/**/ 0xACDFCEC5, 0x3CEE2474, -/**/ 0x00000000, 0x3FED9000, -/**/ 0xF3FC4DA2, 0x3F379118, -/**/ 0xBEA64000, 0x3FB42EDC, -/**/ 0xEA7C9ACD, 0x3D1BC0EE, -/**/ 0x00000000, 0x3FED9000, -/**/ 0x049DE4C3, 0xBF3F0C3C, -/**/ 0xCEBB4000, 0x3FB469FB, -/**/ 0x4F257194, 0x3D3B663C, -/**/ 0x00000000, 0x3FED8800, -/**/ 0xF13D5906, 0xBF35905F, -/**/ 0x3AA1C000, 0x3FB4A50D, -/**/ 0x308973E2, 0xBD2F7FE1, -/**/ 0x00000000, 0x3FED8000, -/**/ 0x77D1EA57, 0xBF27F6C8, -/**/ 0x08A34000, 0x3FB4E011, -/**/ 0xDF2C5AE5, 0x3D3AE5CF, -/**/ 0x00000000, 0x3FED7800, -/**/ 0xF4F31BA0, 0xBF026AD1, -/**/ 0x3F060000, 0x3FB51B07, -/**/ 0x278E686A, 0x3D383F69, -/**/ 0x00000000, 0x3FED7000, -/**/ 0xF26DF1BD, 0x3F1DE6B2, -/**/ 0xE40B4000, 0x3FB555EF, -/**/ 0x8C868E23, 0x3D30B497, -/**/ 0x00000000, 0x3FED6800, -/**/ 0x7BA23D96, 0x3F31599F, -/**/ 0xFDF00000, 0x3FB590CA, -/**/ 0x5722ABAA, 0x3D3C284F, -/**/ 0x00000000, 0x3FED6000, -/**/ 0xD425A760, 0x3F3B526C, -/**/ 0x92ED4000, 0x3FB5CB98, -/**/ 0xA64FC52F, 0x3D17BE44, -/**/ 0x00000000, 0x3FED6000, -/**/ 0x546A6FF1, 0xBF3A9BFC, -/**/ 0xA9374000, 0x3FB60658, -/**/ 0xDEE9C4F8, 0x3D30C3B1, -/**/ 0x00000000, 0x3FED5800, -/**/ 0x08F02FAC, 0xBF3071AD, -/**/ 0x46FE8000, 0x3FB6410B, -/**/ 0x3CBD8D14, 0xBD153F8F, -/**/ 0x00000000, 0x3FED5000, -/**/ 0x12C6C142, 0xBF18BAD9, -/**/ 0x726EC000, 0x3FB67BB0, -/**/ 0x69EF5912, 0x3CEF724B, -/**/ 0x00000000, 0x3FED4800, -/**/ 0x3254A5A2, 0x3F10B35C, -/**/ 0x31B00000, 0x3FB6B648, -/**/ 0x1377DE92, 0xBD3BF30A, -/**/ 0x00000000, 0x3FED4000, -/**/ 0x1D41D41D, 0x3F2D41D4, -/**/ 0x8AE58000, 0x3FB6F0D2, -/**/ 0x1B664613, 0xBD34B464, -/**/ 0x00000000, 0x3FED3800, -/**/ 0xF494E548, 0x3F392D71, -/**/ 0x842EC000, 0x3FB72B4F, -/**/ 0xC00C9DD3, 0xBD3704CC, -/**/ 0x00000000, 0x3FED3800, -/**/ 0xFF165C2E, 0xBF3C2DA1, -/**/ 0x23A6C000, 0x3FB765BF, -/**/ 0x35C4256A, 0xBCFECBC0, -/**/ 0x00000000, 0x3FED3000, -/**/ 0x7AA49674, 0xBF317062, -/**/ 0x6F648000, 0x3FB7A021, -/**/ 0xA18418FF, 0x3D3E124C, -/**/ 0x00000000, 0x3FED2800, -/**/ 0x749CB290, 0xBF1A6B80, -/**/ 0x6D7B0000, 0x3FB7DA76, -/**/ 0x4480C89B, 0x3D32CC84, -/**/ 0x00000000, 0x3FED2000, -/**/ 0x25C6336D, 0x3F114B52, -/**/ 0x23F8C000, 0x3FB814BE, -/**/ 0xDA82FDFD, 0x3CCB2381, -/**/ 0x00000000, 0x3FED1800, -/**/ 0xF08A3B1D, 0x3F2EB155, -/**/ 0x98E84000, 0x3FB84EF8, -/**/ 0x246977C9, 0xBD37D5CD, -/**/ 0x00000000, 0x3FED1000, -/**/ 0xBD71CD93, 0x3F3A7692, -/**/ 0xD24FC000, 0x3FB88925, -/**/ 0x44FBB806, 0xBD31D505, -/**/ 0x00000000, 0x3FED1000, -/**/ 0x89FC5E69, 0xBF3A5384, -/**/ 0xD6318000, 0x3FB8C345, -/**/ 0xACB42A66, 0x3D3B20F5, -/**/ 0x00000000, 0x3FED0800, -/**/ 0x6439240E, 0xBF2E0B56, -/**/ 0xAA8C4000, 0x3FB8FD58, -/**/ 0x1BCB725B, 0xBD3EEC90, -/**/ 0x00000000, 0x3FED0000, -/**/ 0x01CFF8C0, 0xBF0CFF8C, -/**/ 0x55594000, 0x3FB9375E, -/**/ 0x7380C364, 0x3D3EDDC3, -/**/ 0x00000000, 0x3FECF800, -/**/ 0x546D8D78, 0x3F1F7661, -/**/ 0xDC8F8000, 0x3FB97156, -/**/ 0x9AFDB97B, 0xBD3C1FC1, -/**/ 0x00000000, 0x3FECF000, -/**/ 0x25FE30D9, 0x3F3372E2, -/**/ 0x46204000, 0x3FB9AB42, -/**/ 0x26787061, 0xBD28A648, -/**/ 0x00000000, 0x3FECE800, -/**/ 0xD92305A6, 0x3F3F1FDB, -/**/ 0x97F9C000, 0x3FB9E520, -/**/ 0xB52DD050, 0x3D235FAC, -/**/ 0x00000000, 0x3FECE800, -/**/ 0x9C37FC63, 0xBF351B8A, -/**/ 0xD8060000, 0x3FBA1EF1, -/**/ 0x6DF97BCB, 0x3D3CD417, -/**/ 0x00000000, 0x3FECE000, -/**/ 0x6CB725AB, 0xBF227EC2, -/**/ 0x0C2B4000, 0x3FBA58B6, -/**/ 0x5C5C9F2A, 0xBD3CDC73, -/**/ 0x00000000, 0x3FECD800, -/**/ 0xE6C2B448, 0x3F05A240, -/**/ 0x3A4AC000, 0x3FBA926D, -/**/ 0x0BD22A9C, 0x3D356365, -/**/ 0x00000000, 0x3FECD000, -/**/ 0xFBB8D9F3, 0x3F2D7EC2, -/**/ 0x68434000, 0x3FBACC17, -/**/ 0xA0B7FA4C, 0xBD2AA783, -/**/ 0x00000000, 0x3FECC800, -/**/ 0x1B71D3E9, 0x3F3AE1DB, -/**/ 0x9BEE4000, 0x3FBB05B4, -/**/ 0x18F84A5E, 0x3D0FF22C, -/**/ 0x00000000, 0x3FECC800, -/**/ 0xCD6DE82D, 0xBF38E45A, -/**/ 0xDB220000, 0x3FBB3F44, -/**/ 0xD8DE09AF, 0x3D3FD153, -/**/ 0x00000000, 0x3FECC000, -/**/ 0xE341926A, 0xBF29269F, -/**/ 0x2BB10000, 0x3FBB78C8, -/**/ 0xBC3987E7, 0xBD325EF7, -/**/ 0x00000000, 0x3FECB800, -/**/ 0xF620C1DA, 0xBEC589FB, -/**/ 0x93690000, 0x3FBBB23E, -/**/ 0x3559DB8B, 0xBD368B18, -/**/ 0x00000000, 0x3FECB000, -/**/ 0x0DE5FF1A, 0x3F28A893, -/**/ 0x18148000, 0x3FBBEBA8, -/**/ 0xB6DF1F57, 0xBD389B78, -/**/ 0x00000000, 0x3FECA800, -/**/ 0x0039563B, 0x3F38EAB9, -/**/ 0xBF79C000, 0x3FBC2504, -/**/ 0xD0EF4ADC, 0x3D3717C4, -/**/ 0x00000000, 0x3FECA800, -/**/ 0x08F377F2, 0xBF3A67D5, -/**/ 0x8F5BC000, 0x3FBC5E54, -/**/ 0x585FBE06, 0x3D1D0C57, -/**/ 0x00000000, 0x3FECA000, -/**/ 0x072792E4, 0xBF2B46E0, -/**/ 0x8D790000, 0x3FBC9797, -/**/ 0x977D1884, 0xBD36E010, -/**/ 0x00000000, 0x3FEC9800, -/**/ 0x1BB327C3, 0xBEE904EA, -/**/ 0xBF8C0000, 0x3FBCD0CD, -/**/ 0xB50DD743, 0x3D33E14D, -/**/ 0x00000000, 0x3FEC9000, -/**/ 0x77683AEC, 0x3F2853EB, -/**/ 0x2B4C4000, 0x3FBD09F7, -/**/ 0x00354E33, 0x3D2048C0, -/**/ 0x00000000, 0x3FEC8800, -/**/ 0xDC52100E, 0x3F3932D7, -/**/ 0xD66CC000, 0x3FBD4313, -/**/ 0x79135713, 0xBD294543, -/**/ 0x00000000, 0x3FEC8800, -/**/ 0x2736962B, 0xBF39AD90, -/**/ 0xC69CC000, 0x3FBD7C23, -/**/ 0xDD328771, 0xBD297EE4, -/**/ 0x00000000, 0x3FEC8000, -/**/ 0xF316B4C2, 0xBF28EEA2, -/**/ 0x0187C000, 0x3FBDB527, -/**/ 0x56AE181F, 0x3D392778, -/**/ 0x00000000, 0x3FEC7800, -/**/ 0x058F7536, 0x3EEAB099, -/**/ 0x8CD60000, 0x3FBDEE1D, -/**/ 0x729EFF89, 0xBD328DA0, -/**/ 0x00000000, 0x3FEC7000, -/**/ 0x1C71C71C, 0x3F2C71C7, -/**/ 0x6E2B0000, 0x3FBE2707, -/**/ 0x2AF0003C, 0xBD2A342C, -/**/ 0x00000000, 0x3FEC6800, -/**/ 0xD6422A30, 0x3F3BB2BB, -/**/ 0xAB274000, 0x3FBE5FE4, -/**/ 0xF74FFE4D, 0xBD35FAE9, -/**/ 0x00000000, 0x3FEC6800, -/**/ 0x54BDE47E, 0xBF36BD01, -/**/ 0x49670000, 0x3FBE98B5, -/**/ 0x89C50E97, 0x3D346774, -/**/ 0x00000000, 0x3FEC6000, -/**/ 0xB5157FE4, 0xBF222CC5, -/**/ 0x4E838000, 0x3FBED179, -/**/ 0x749D0484, 0xBD1FD143, -/**/ 0x00000000, 0x3FEC5800, -/**/ 0xA930B840, 0x3F129A21, -/**/ 0xC0118000, 0x3FBF0A30, -/**/ 0x83368E91, 0xBD3D599E, -/**/ 0x00000000, 0x3FEC5000, -/**/ 0xAC5CEE14, 0x3F3279B1, -/**/ 0xA3A24000, 0x3FBF42DB, -/**/ 0x32DF6C0D, 0xBD3312B7, -/**/ 0x00000000, 0x3FEC5000, -/**/ 0xD4AB8D0B, 0xBF3F9CF5, -/**/ 0xFEC38000, 0x3FBF7B79, -/**/ 0xE897ED01, 0xBD010987, -/**/ 0x00000000, 0x3FEC4800, -/**/ 0xCC17DAE4, 0xBF319D7C, -/**/ 0xD6FF4000, 0x3FBFB40B, -/**/ 0xB7B53B5B, 0x3D2C0BEC, -/**/ 0x00000000, 0x3FEC4000, -/**/ 0x01C3F8F0, 0xBF0C3F8F, -/**/ 0x31DC0000, 0x3FBFEC91, -/**/ 0xD1AE6607, 0xBD354555, -/**/ 0x00000000, 0x3FEC3800, -/**/ 0xAB1B8FFC, 0x3F254738, -/**/ 0x0A6E0000, 0x3FC01285, -/**/ 0x4805BF94, 0xBD1A8619, -/**/ 0x00000000, 0x3FEC3000, -/**/ 0x48B3C5D7, 0x3F38E51F, -/**/ 0x42BF4000, 0x3FC02EBB, -/**/ 0x5CE00E5D, 0xBD15A8FA, -/**/ 0x00000000, 0x3FEC3000, -/**/ 0x867E595E, 0xBF38C377, -/**/ 0x449F6000, 0x3FC04AEB, -/**/ 0x65CCD35C, 0x3D2AFA90, -/**/ 0x00000000, 0x3FEC2800, -/**/ 0x15FE3D95, 0xBF24AC6D, -/**/ 0x12CA6000, 0x3FC06715, -/**/ 0x9CDC0A3D, 0xBD2A4757, -/**/ 0x00000000, 0x3FEC2000, -/**/ 0x53B8CDAE, 0x3F10B34F, -/**/ 0xAFFA2000, 0x3FC08338, -/**/ 0xAC823E27, 0x3D30533C, -/**/ 0x00000000, 0x3FEC1800, -/**/ 0x3FABB0F6, 0x3F32C599, -/**/ 0x1EE72000, 0x3FC09F56, -/**/ 0x7157D1A8, 0xBD28F305, -/**/ 0x00000000, 0x3FEC1800, -/**/ 0x97CD1B6C, 0xBF3E8BF4, -/**/ 0x6247A000, 0x3FC0BB6D, -/**/ 0x3CCD04B3, 0x3D35464F, -/**/ 0x00000000, 0x3FEC1000, -/**/ 0xE3F1F8FC, 0xBF2F8FC7, -/**/ 0x7CD08000, 0x3FC0D77E, -/**/ 0x2EE2F482, 0x3D3CB2CD, -/**/ 0x00000000, 0x3FEC0800, -/**/ 0x5B199F35, 0xBEEDC860, -/**/ 0x7134C000, 0x3FC0F389, -/**/ 0xE893D6C6, 0xBD3DA359, -/**/ 0x00000000, 0x3FEC0000, -/**/ 0x1C01C01C, 0x3F2C01C0, -/**/ 0x42254000, 0x3FC10F8E, -/**/ 0x43396307, 0xBD293B38, -/**/ 0x00000000, 0x3FEBF800, -/**/ 0x256228AA, 0x3F3D0577, -/**/ 0xF2518000, 0x3FC12B8C, -/**/ 0x13C0A0FC, 0x3D348A4A, -/**/ 0x00000000, 0x3FEBF800, -/**/ 0xCB93A8A1, 0xBF33E08B, -/**/ 0x84674000, 0x3FC14785, -/**/ 0x1027C750, 0x3D156345, -/**/ 0x00000000, 0x3FEBF000, -/**/ 0x1DE63F4A, 0xBF12C4DB, -/**/ 0xFB124000, 0x3FC16377, -/**/ 0xBF41763E, 0x3D091E1A, -/**/ 0x00000000, 0x3FEBE800, -/**/ 0x769F9E4F, 0x3F2526D0, -/**/ 0x58FCA000, 0x3FC17F64, -/**/ 0xD093C8DC, 0x3D2843FA, -/**/ 0x00000000, 0x3FEBE000, -/**/ 0x5292D891, 0x3F39ED43, -/**/ 0xA0CEE000, 0x3FC19B4A, -/**/ 0x9621338B, 0xBD3D8824, -/**/ 0x00000000, 0x3FEBE000, -/**/ 0x5FC845A9, 0xBF36A3B3, -/**/ 0xD52F6000, 0x3FC1B72A, -/**/ 0x1811A396, 0x3D2E80A4, -/**/ 0x00000000, 0x3FEBD800, -/**/ 0xB7230491, 0xBF1C7E26, -/**/ 0xF8C36000, 0x3FC1D304, -/**/ 0xDF451042, 0xBD3A6D44, -/**/ 0x00000000, 0x3FEBD000, -/**/ 0x451B61CB, 0x3F20F365, -/**/ 0x0E2DC000, 0x3FC1EED9, -/**/ 0x7097648F, 0x3D161563, -/**/ 0x00000000, 0x3FEBC800, -/**/ 0xD72DD0AA, 0x3F3827F3, -/**/ 0x18102000, 0x3FC20AA7, -/**/ 0x348552FE, 0x3D3F2C94, -/**/ 0x00000000, 0x3FEBC800, -/**/ 0xBE0C262F, 0xBF3814D3, -/**/ 0x190A6000, 0x3FC2266F, -/**/ 0xB840E7F6, 0xBD24D20A, -/**/ 0x00000000, 0x3FEBC000, -/**/ 0x7ECECB53, 0xBF207963, -/**/ 0x13BA6000, 0x3FC24231, -/**/ 0x78EE9D9C, 0xBD3E3A00, -/**/ 0x00000000, 0x3FEBB800, -/**/ 0xF29268D3, 0x3F1EC130, -/**/ 0x0ABC6000, 0x3FC25DED, -/**/ 0x4F176449, 0x3D35A385, -/**/ 0x00000000, 0x3FEBB000, -/**/ 0xAB6353BF, 0x3F37B218, -/**/ 0x00AB4000, 0x3FC279A3, -/**/ 0xB3235108, 0x3D3EF432, -/**/ 0x00000000, 0x3FEBB000, -/**/ 0xF2298376, 0xBF383759, -/**/ 0xF8200000, 0x3FC29552, -/**/ 0xF4471DFC, 0xBD35B967, -/**/ 0x00000000, 0x3FEBA800, -/**/ 0x1EAD4253, 0xBF201832, -/**/ 0xF3B1A000, 0x3FC2B0FC, -/**/ 0xE30A59EA, 0x3D177CA3, -/**/ 0x00000000, 0x3FEBA000, -/**/ 0xD84886B1, 0x3F20679B, -/**/ 0xF5F60000, 0x3FC2CCA0, -/**/ 0x91AFF120, 0xBD3B5EF1, -/**/ 0x00000000, 0x3FEB9800, -/**/ 0xA41FEB4C, 0x3F38884D, -/**/ 0x0180E000, 0x3FC2E83F, -/**/ 0xC284E1CE, 0xBD3F0C2A, -/**/ 0x00000000, 0x3FEB9800, -/**/ 0x3806E548, 0xBF370EA7, -/**/ 0x18E48000, 0x3FC303D7, -/**/ 0xCE3ECB05, 0xBCD680B5, -/**/ 0x00000000, 0x3FEB9000, -/**/ 0xB5EF34C0, 0xBF1A4477, -/**/ 0x3EB1A000, 0x3FC31F69, -/**/ 0xE5A396FB, 0xBD2A6726, -/**/ 0x00000000, 0x3FEB8800, -/**/ 0x9401B894, 0x3F2401B8, -/**/ 0x75770000, 0x3FC33AF5, -/**/ 0xA2FE72A5, 0x3D3C9ECC, -/**/ 0x00000000, 0x3FEB8000, -/**/ 0x400DC1AA, 0x3F3AA73A, -/**/ 0xBFC22000, 0x3FC3567B, -/**/ 0x53991A1F, 0x3D3250D2, -/**/ 0x00000000, 0x3FEB8000, -/**/ 0x2E63A6A8, 0xBF349E11, -/**/ 0x201E8000, 0x3FC371FC, -/**/ 0x9B2D8ABC, 0x3D3EE877, -/**/ 0x00000000, 0x3FEB7800, -/**/ 0xC8DA04B9, 0xBF0E7898, -/**/ 0x99164000, 0x3FC38D76, -/**/ 0x9E39BB70, 0x3D1844A5, -/**/ 0x00000000, 0x3FEB7000, -/**/ 0xE6B33E2D, 0x3F2A284E, -/**/ 0x2D31A000, 0x3FC3A8EB, -/**/ 0x7D5D503E, 0x3D1BAFB7, -/**/ 0x00000000, 0x3FEB6800, -/**/ 0x759C2BB4, 0x3F3E0B91, -/**/ 0xDEF76000, 0x3FC3C459, -/**/ 0xF6B70D33, 0x3D3EDC86, -/**/ 0x00000000, 0x3FEB6800, -/**/ 0x088FD6E7, 0xBF30E8E2, -/**/ 0xB0ECC000, 0x3FC3DFC2, -/**/ 0x62B8C13F, 0x3D28A72A, -/**/ 0x00000000, 0x3FEB6000, -/**/ 0xD801B600, 0x3ECB6006, -/**/ 0xA5952000, 0x3FC3FB25, -/**/ 0x6B358FF7, 0x3D3195BE, -/**/ 0x00000000, 0x3FEB5800, -/**/ 0xD840F62C, 0x3F316A6A, -/**/ 0xBF728000, 0x3FC41682, -/**/ 0x081F849D, 0xBD210047, -/**/ 0x00000000, 0x3FEB5800, -/**/ 0x7DF8BD99, 0xBF3D4DEE, -/**/ 0x01050000, 0x3FC431DA, -/**/ 0x836E0391, 0x3D304837, -/**/ 0x00000000, 0x3FEB5000, -/**/ 0x7E4B17E5, 0xBF27E4B1, -/**/ 0x6CCB8000, 0x3FC44D2B, -/**/ 0x6135783C, 0xBD170CC1, -/**/ 0x00000000, 0x3FEB4800, -/**/ 0x55E6D8FE, 0x3F15F47D, -/**/ 0x05430000, 0x3FC46877, -/**/ 0xF8D5087E, 0xBD3D8145, -/**/ 0x00000000, 0x3FEB4000, -/**/ 0x0B803686, 0x3F37006D, -/**/ 0xCCE6E000, 0x3FC483BC, -/**/ 0x723F6369, 0x3D1EEA52, -/**/ 0x00000000, 0x3FEB4000, -/**/ 0x46A66920, 0xBF37687C, -/**/ 0xC6314000, 0x3FC49EFC, -/**/ 0x9F55572B, 0xBD090F59, -/**/ 0x00000000, 0x3FEB3800, -/**/ 0xFF2645BE, 0xBF16F6A4, -/**/ 0xF39A6000, 0x3FC4BA36, -/**/ 0xB3F219E5, 0xBD34354B, -/**/ 0x00000000, 0x3FEB3000, -/**/ 0x1801B318, 0x3F2801B3, -/**/ 0x5798E000, 0x3FC4D56B, -/**/ 0x15A96555, 0x3D380580, -/**/ 0x00000000, 0x3FEB2800, -/**/ 0x93511680, 0x3F3DD2FF, -/**/ 0xF4A24000, 0x3FC4F099, -/**/ 0xFAFEAF27, 0xBD3E9BF2, -/**/ 0x00000000, 0x3FEB2800, -/**/ 0xA89DCCAC, 0xBF304743, -/**/ 0xCD29C000, 0x3FC50BC2, -/**/ 0x28DB8D4F, 0x3D1ADA57, -/**/ 0x00000000, 0x3FEB2000, -/**/ 0x406C80D9, 0x3EFB2036, -/**/ 0xE3A1C000, 0x3FC526E5, -/**/ 0x37FC5238, 0xBD3790BA, -/**/ 0x00000000, 0x3FEB1800, -/**/ 0x4F9DC00E, 0x3F33BEC8, -/**/ 0x3A7A8000, 0x3FC54203, -/**/ 0xED855F0E, 0x3D268D68, -/**/ 0x00000000, 0x3FEB1800, -/**/ 0x44F8CE7E, 0xBF3A2101, -/**/ 0xD4232000, 0x3FC55D1A, -/**/ 0xDDA647E8, 0x3D3ADD94, -/**/ 0x00000000, 0x3FEB1000, -/**/ 0xB99AF3F3, 0xBF1FB596, -/**/ 0xB3092000, 0x3FC5782C, -/**/ 0x51794442, 0xBD33A463, -/**/ 0x00000000, 0x3FEB0800, -/**/ 0x922A3E85, 0x3F24B31D, -/**/ 0xD9982000, 0x3FC59338, -/**/ 0xB7555D4A, 0x3CF0BA68, -/**/ 0x00000000, 0x3FEB0000, -/**/ 0xE19BF6B7, 0x3F3CB3CF, -/**/ 0x4A3AA000, 0x3FC5AE3F, -/**/ 0xF012A8B9, 0x3D21EA25, -/**/ 0x00000000, 0x3FEB0000, -/**/ 0x9A5BF0D1, 0xBF30DEAE, -/**/ 0x07598000, 0x3FC5C940, -/**/ 0x8CD23322, 0xBD3A8D94, -/**/ 0x00000000, 0x3FEAF800, -/**/ 0x9EDE13CE, 0x3EFA2072, -/**/ 0x135BE000, 0x3FC5E43B, -/**/ 0xCEED9C31, 0xBD343AB4, -/**/ 0x00000000, 0x3FEAF000, -/**/ 0x0D79435E, 0x3F3435E5, -/**/ 0x70A7A000, 0x3FC5FF30, -/**/ 0x183BEBF2, 0xBD38586F, -/**/ 0x00000000, 0x3FEAF000, -/**/ 0x06855D30, 0xBF392321, -/**/ 0x21A0E000, 0x3FC61A20, -/**/ 0x1BDF3CDD, 0x3D3DD9DD, -/**/ 0x00000000, 0x3FEAE800, -/**/ 0x7ABED811, 0xBF19A45C, -/**/ 0x28AAA000, 0x3FC6350A, -/**/ 0xAB8163AF, 0x3D2D5EC0, -/**/ 0x00000000, 0x3FEAE000, -/**/ 0x84EF68CB, 0x3F28C7ED, -/**/ 0x88260000, 0x3FC64FEE, -/**/ 0x759DDED6, 0xBD1DA40D, -/**/ 0x00000000, 0x3FEAD800, -/**/ 0xA482F00D, 0x3F3F43FC, -/**/ 0x4272A000, 0x3FC66ACD, -/**/ 0xBFC6C785, 0x3D3AA1BD, -/**/ 0x00000000, 0x3FEAD800, -/**/ 0xCDE3E7AE, 0xBF2B9222, -/**/ 0x59EF0000, 0x3FC685A6, -/**/ 0x6C103214, 0xBD21F2A9, -/**/ 0x00000000, 0x3FEAD000, -/**/ 0xEED254A3, 0x3F14F302, -/**/ 0xD0F7A000, 0x3FC6A079, -/**/ 0x448D14F5, 0x3D35A3F8, -/**/ 0x00000000, 0x3FEAC800, -/**/ 0x32071DEF, 0x3F385567, -/**/ 0xA9E80000, 0x3FC6BB47, -/**/ 0x23EA3296, 0x3D19F64D, -/**/ 0x00000000, 0x3FEAC800, -/**/ 0xD47F29D4, 0xBF347F29, -/**/ 0xE719E000, 0x3FC6D60F, -/**/ 0x57134767, 0xBD3BC6E5, -/**/ 0x00000000, 0x3FEAC000, -/**/ 0xE82D23BC, 0xBEF40FE1, -/**/ 0x8AE56000, 0x3FC6F0D2, -/**/ 0xC93373DA, 0x3D369737, -/**/ 0x00000000, 0x3FEAB800, -/**/ 0x972D8538, 0x3F320FDE, -/**/ 0x97A1A000, 0x3FC70B8F, -/**/ 0xF6A95BEF, 0x3D34EA64, -/**/ 0x00000000, 0x3FEAB800, -/**/ 0x66711513, 0xBF3A8C9F, -/**/ 0x0FA40000, 0x3FC72647, -/**/ 0x0E743A45, 0xBD3774DF, -/**/ 0x00000000, 0x3FEAB000, -/**/ 0x02806ABC, 0xBF1C5A0F, -/**/ 0xF5404000, 0x3FC740F8, -/**/ 0x99018AA1, 0xBD30B66C, -/**/ 0x00000000, 0x3FEAA800, -/**/ 0xD22C937A, 0x3F28E44B, -/**/ 0x4AC8E000, 0x3FC75BA5, -/**/ 0x8BC4A7C0, 0x3D3DDCA5, -/**/ 0x00000000, 0x3FEAA800, -/**/ 0xFF2ADFF3, 0xBF3FF2AD, -/**/ 0x128F2000, 0x3FC7764C, -/**/ 0x3479E3D1, 0x3D027490, -/**/ 0x00000000, 0x3FEAA000, -/**/ 0x0B3ADA5C, 0xBF288A16, -/**/ 0x4EE26000, 0x3FC790ED, -/**/ 0x4E7746F6, 0x3D199BBD, -/**/ 0x00000000, 0x3FEA9800, -/**/ 0x4C77B035, 0x3F1DEC0D, -/**/ 0x0210E000, 0x3FC7AB89, -/**/ 0x72534A58, 0xBD2BDB90, -/**/ 0x00000000, 0x3FEA9000, -/**/ 0x91F59E6B, 0x3F3B4D71, -/**/ 0x2E674000, 0x3FC7C61F, -/**/ 0xB31BE8E0, 0xBD32392D, -/**/ 0x00000000, 0x3FEA9000, -/**/ 0xB8A2A522, 0xBF30CDCB, -/**/ 0xD630C000, 0x3FC7E0AF, -/**/ 0x1D8F1034, 0x3D139E7C, -/**/ 0x00000000, 0x3FEA8800, -/**/ 0x6A2194A0, 0x3F094A00, -/**/ 0xFBB76000, 0x3FC7FB3A, -/**/ 0x24609D57, 0xBD37DBF5, -/**/ 0x00000000, 0x3FEA8000, -/**/ 0x870AC52E, 0x3F373289, -/**/ 0xA1436000, 0x3FC815C0, -/**/ 0xF9201CE8, 0xBD302A52, -/**/ 0x00000000, 0x3FEA8000, -/**/ 0x9E8684DD, 0xBF34B1FA, -/**/ 0xC91BC000, 0x3FC83040, -/**/ 0xC6E66F32, 0x3D3E5B71, -/**/ 0x00000000, 0x3FEA7800, -/**/ 0xA9267648, 0xBEE08AF5, -/**/ 0x75866000, 0x3FC84ABB, -/**/ 0xDF4E2BD2, 0xBD3D8DAA, -/**/ 0x00000000, 0x3FEA7000, -/**/ 0x1A3D927E, 0x3F33BB67, -/**/ 0xA8C70000, 0x3FC86530, -/**/ 0xCB4EA3E3, 0x3D398BB0, -/**/ 0x00000000, 0x3FEA7000, -/**/ 0x7F2C97F3, 0xBF37F2C9, -/**/ 0x6520C000, 0x3FC87FA0, -/**/ 0x401202FC, 0x3D322120, -/**/ 0x00000000, 0x3FEA6800, -/**/ 0x3C076D20, 0xBF0C77A5, -/**/ 0xACD4E000, 0x3FC89A0A, -/**/ 0xDA8F5A72, 0x3D2C0BFB, -/**/ 0x00000000, 0x3FEA6000, -/**/ 0x7C7EF82B, 0x3F30E6DA, -/**/ 0x82236000, 0x3FC8B46F, -/**/ 0x102DD7C9, 0x3D12D9F2, -/**/ 0x00000000, 0x3FEA6000, -/**/ 0x2EC05C44, 0xBF3A9167, -/**/ 0xE74AE000, 0x3FC8CECE, -/**/ 0xAA429BB5, 0xBD3A5BA0, -/**/ 0x00000000, 0x3FEA5800, -/**/ 0xEEB6BD53, 0xBF17DF12, -/**/ 0xDE886000, 0x3FC8E928, -/**/ 0xB13D72D5, 0x3D3A8154, -/**/ 0x00000000, 0x3FEA5000, -/**/ 0x98C70AE6, 0x3F2D676D, -/**/ 0x6A180000, 0x3FC9037D, -/**/ 0x57C1C8D9, 0x3D230DEA, -/**/ 0x00000000, 0x3FEA5000, -/**/ 0x96CE4780, 0xBF3C8EFF, -/**/ 0x8C340000, 0x3FC91DCC, -/**/ 0xBDDEFF46, 0x3D37BC6A, -/**/ 0x00000000, 0x3FEA4800, -/**/ 0x71EFFCB7, 0xBF1EFFCB, -/**/ 0x4715A000, 0x3FC93816, -/**/ 0x6A3A39D9, 0xBD34C63D, -/**/ 0x00000000, 0x3FEA4000, -/**/ 0x1A41A41A, 0x3F2A41A4, -/**/ 0x9CF46000, 0x3FC9525A, -/**/ 0x7D9F158F, 0xBD329713, -/**/ 0x00000000, 0x3FEA4000, -/**/ 0xBF3B3C0E, 0xBF3DECBB, -/**/ 0x9006A000, 0x3FC96C99, -/**/ 0x9CBB452C, 0x3D2A88D5, -/**/ 0x00000000, 0x3FEA3800, -/**/ 0x3BCD35A8, 0xBF21D14E, -/**/ 0x22818000, 0x3FC986D3, -/**/ 0x4DD44000, 0x3CF93B56, -/**/ 0x00000000, 0x3FEA3000, -/**/ 0x3B5832C0, 0x3F285A0A, -/**/ 0x56988000, 0x3FC9A107, -/**/ 0x242CD098, 0x3D264AA6, -/**/ 0x00000000, 0x3FEA3000, -/**/ 0xD71AFD8C, 0xBF3EABC1, -/**/ 0x2E7E0000, 0x3FC9BB36, -/**/ 0xA1CE0FFC, 0xBD21F2A8, -/**/ 0x00000000, 0x3FEA2800, -/**/ 0x7C041611, 0xBF22E60D, -/**/ 0xAC62E000, 0x3FC9D55F, -/**/ 0xFC3B5BC3, 0xBD3F4669, -/**/ 0x00000000, 0x3FEA2000, -/**/ 0x5FF2EF43, 0x3F27AE57, -/**/ 0xD276A000, 0x3FC9EF83, -/**/ 0xB3F9CE00, 0xBD2730B7, -/**/ 0x00000000, 0x3FEA2000, -/**/ 0x3D66322E, 0xBF3ECD35, -/**/ 0xA2E7A000, 0x3FCA09A2, -/**/ 0xCD411233, 0xBD2DD99D, -/**/ 0x00000000, 0x3FEA1800, -/**/ 0x5B4FE5E9, 0xBF22C068, -/**/ 0x1FE2C000, 0x3FCA23BC, -/**/ 0x91DC9F0B, 0xBD3539CD, -/**/ 0x00000000, 0x3FEA1000, -/**/ 0x80B67A9A, 0x3F283C48, -/**/ 0x4B938000, 0x3FCA3DD0, -/**/ 0x366E2C5A, 0x3D297DA1, -/**/ 0x00000000, 0x3FEA1000, -/**/ 0x89907BBA, 0xBF3E5236, -/**/ 0x28244000, 0x3FCA57DF, -/**/ 0xCA1D9ABB, 0x3D3B99C8, -/**/ 0x00000000, 0x3FEA0800, -/**/ 0x32054967, 0xBF21629E, -/**/ 0xB7BE0000, 0x3FCA71E8, -/**/ 0x6EF05323, 0xBD210ACA, -/**/ 0x00000000, 0x3FEA0000, -/**/ 0x1A01A01A, 0x3F2A01A0, -/**/ 0xFC882000, 0x3FCA8BEC, -/**/ 0xCF21B9CF, 0x3D3E3185, -/**/ 0x00000000, 0x3FEA0000, -/**/ 0x93FF301D, 0xBF3D3BE3, -/**/ 0xF8A94000, 0x3FCAA5EB, -/**/ 0x36951A8F, 0xBD32A0A9, -/**/ 0x00000000, 0x3FE9F800, -/**/ 0xBFE608ED, 0xBF1D9DD1, -/**/ 0xAE462000, 0x3FCABFE5, -/**/ 0x395F139D, 0xBD3B68F5, -/**/ 0x00000000, 0x3FE9F000, -/**/ 0x1B29257F, 0x3F2CFC26, -/**/ 0x1F828000, 0x3FCAD9DA, -/**/ 0xC803F050, 0xBD3882B7, -/**/ 0x00000000, 0x3FE9F000, -/**/ 0x7E613717, 0xBF3B8B57, -/**/ 0x4E80C000, 0x3FCAF3C9, -/**/ 0x3FCD9066, 0xBCBA4E63, -/**/ 0x00000000, 0x3FE9E800, -/**/ 0xB9FABD04, 0xBF160EF9, -/**/ 0x3D620000, 0x3FCB0DB3, -/**/ 0x38EAB906, 0x3D3FEE14, -/**/ 0x00000000, 0x3FE9E000, -/**/ 0xEAF850E2, 0x3F3094D3, -/**/ 0xEE464000, 0x3FCB2797, -/**/ 0x906D00A9, 0xBD3BE88A, -/**/ 0x00000000, 0x3FE9E000, -/**/ 0xBBE88FDC, 0xBF3941AA, -/**/ 0x634BA000, 0x3FCB4177, -/**/ 0x5666069F, 0x3D355D01, -/**/ 0x00000000, 0x3FE9D800, -/**/ 0x25F4B1AA, 0xBF083A25, -/**/ 0x9E8FC000, 0x3FCB5B51, -/**/ 0xEC011F31, 0xBD34B722, -/**/ 0x00000000, 0x3FE9D000, -/**/ 0xF71FAC14, 0x3F3343FB, -/**/ 0xA22E4000, 0x3FCB7526, -/**/ 0x2E785490, 0x3D2C0DBF, -/**/ 0x00000000, 0x3FE9D000, -/**/ 0x1965FF32, 0xBF365FF3, -/**/ 0x70420000, 0x3FCB8EF6, -/**/ 0x321788E0, 0x3D387533, -/**/ 0x00000000, 0x3FE9C800, -/**/ 0x9C8019C8, 0x3EA9C801, -/**/ 0x0AE46000, 0x3FCBA8C1, -/**/ 0x9EEE9D85, 0x3D3A32E2, -/**/ 0x00000000, 0x3FE9C000, -/**/ 0x25080CE1, 0x3F368A77, -/**/ 0x742D8000, 0x3FCBC286, -/**/ 0xF39D121C, 0x3D39AC53, -/**/ 0x00000000, 0x3FE9C000, -/**/ 0xC54763F2, 0xBF32E743, -/**/ 0xAE344000, 0x3FCBDC46, -/**/ 0x023D6505, 0x3D3625B4, -/**/ 0x00000000, 0x3FE9B800, -/**/ 0x8B7424F9, 0x3F0DBD49, -/**/ 0xBB0E4000, 0x3FCBF601, -/**/ 0x47C378B5, 0x3D2386A9, -/**/ 0x00000000, 0x3FE9B000, -/**/ 0x00CD9A67, 0x3F3A6734, -/**/ 0x9CCFE000, 0x3FCC0FB7, -/**/ 0x99E8A558, 0xBD346FFF, -/**/ 0x00000000, 0x3FE9B000, -/**/ 0xAEF25B7C, 0xBF2DB15A, -/**/ 0x558C2000, 0x3FCC2968, -/**/ 0xDEE38A40, 0xBD2CFD73, -/**/ 0x00000000, 0x3FE9A800, -/**/ 0xC140C073, 0x3F1FDFEC, -/**/ 0xE754E000, 0x3FCC4313, -/**/ 0x74CAD7D6, 0x3D3279BE, -/**/ 0x00000000, 0x3FE9A000, -/**/ 0xA7DCBEB3, 0x3F3ED923, -/**/ 0x543AE000, 0x3FCC5CBA, -/**/ 0xECB454FC, 0x3D20929D, -/**/ 0x00000000, 0x3FE9A000, -/**/ 0xB256DE2C, 0xBF246A7B, -/**/ 0x9E4D6000, 0x3FCC765B, -/**/ 0x36976F6C, 0x3D31AB6B, -/**/ 0x00000000, 0x3FE99800, -/**/ 0x9999999A, 0x3F299999, -/**/ 0xC79AA000, 0x3FCC8FF7, -/**/ 0x689F8434, 0xBD27794F, -/**/ 0x00000000, 0x3FE99800, -/**/ 0x3EC03FF3, 0xBF3C20C6, -/**/ 0xD22F6000, 0x3FCCA98E, -/**/ 0x8CA209C8, 0xBCF698C1, -/**/ 0x00000000, 0x3FE99000, -/**/ 0x31EC07FD, 0xBF13F803, -/**/ 0xC0176000, 0x3FCCC320, -/**/ 0x9A653794, 0x3D240903, -/**/ 0x00000000, 0x3FE98800, -/**/ 0x5AC98715, 0x3F323513, -/**/ 0x935D2000, 0x3FCCDCAD, -/**/ 0x34C9A447, 0xBD0A0FF0, -/**/ 0x00000000, 0x3FE98800, -/**/ 0x89F80661, 0xBF368793, -/**/ 0x4E09C000, 0x3FCCF635, -/**/ 0x9A07D55B, 0x3D277123, -/**/ 0x00000000, 0x3FE98000, -/**/ 0x8019801A, 0x3EE98019, -/**/ 0xF2256000, 0x3FCD0FB7, -/**/ 0x20633B29, 0xBD0AF52B, -/**/ 0x00000000, 0x3FE97800, -/**/ 0xAB329020, 0x3F382FC6, -/**/ 0x81B6C000, 0x3FCD2935, -/**/ 0x128AAA5F, 0xBD383270, -/**/ 0x00000000, 0x3FE97800, -/**/ 0x962DBFF3, 0xBF305C4B, -/**/ 0xFEC36000, 0x3FCD42AD, -/**/ 0xFD804272, 0xBD175C00, -/**/ 0x00000000, 0x3FE97000, -/**/ 0x970E4F81, 0x3F1C9F01, -/**/ 0x6B4FC000, 0x3FCD5C21, -/**/ 0xBBCA681B, 0xBD21BA91, -/**/ 0x00000000, 0x3FE96800, -/**/ 0x049160B8, 0x3F3EBBE1, -/**/ 0xC95F0000, 0x3FCD758F, -/**/ 0x8B4162AA, 0xBD15A10A, -/**/ 0x00000000, 0x3FE96800, -/**/ 0x9933FE6A, 0xBF233FE6, -/**/ 0x1AF32000, 0x3FCD8EF9, -/**/ 0xC364C784, 0xBD15105F, -/**/ 0x00000000, 0x3FE96000, -/**/ 0xCE078906, 0x3F2C2873, -/**/ 0x620CE000, 0x3FCDA85D, -/**/ 0xC16CC7EC, 0x3D240194, -/**/ 0x00000000, 0x3FE96000, -/**/ 0xE442936B, 0xBF3A27A0, -/**/ 0xA0ABE000, 0x3FCDC1BC, -/**/ 0xA628CCC6, 0x3D38FAC1, -/**/ 0x00000000, 0x3FE95800, -/**/ 0x548A97A9, 0xBF029C69, -/**/ 0xD8CEA000, 0x3FCDDB16, -/**/ 0x7104B8BC, 0xBD1EEF79, -/**/ 0x00000000, 0x3FE95000, -/**/ 0x9F74B92D, 0x3F35906B, -/**/ 0x0C722000, 0x3FCDF46C, -/**/ 0xB0B79039, 0x3D3A5E82, -/**/ 0x00000000, 0x3FE95000, -/**/ 0xF35927BC, 0xBF327BBF, -/**/ 0x3D92A000, 0x3FCE0DBC, -/**/ 0xF0529BF1, 0x3D359233, -/**/ 0x00000000, 0x3FE94800, -/**/ 0xDD3C0CA4, 0x3F161F9A, -/**/ 0x6E2B0000, 0x3FCE2707, -/**/ 0x2AF0003C, 0xBD3A342C, -/**/ 0x00000000, 0x3FE94000, -/**/ 0x41228A8F, 0x3F3D9B56, -/**/ 0xA034C000, 0x3FCE404D, -/**/ 0xE09A2799, 0xBD3187EE, -/**/ 0x00000000, 0x3FE94000, -/**/ 0x598A73F8, 0xBF2482F5, -/**/ 0xD5A88000, 0x3FCE598E, -/**/ 0xCF1E98A1, 0xBD0D134B, -/**/ 0x00000000, 0x3FE93800, -/**/ 0x3C1B9728, 0x3F2BE2D5, -/**/ 0x107DA000, 0x3FCE72CB, -/**/ 0xCDF5471C, 0x3D1DD48C, -/**/ 0x00000000, 0x3FE93800, -/**/ 0x2698CFF3, 0xBF39CC03, -/**/ 0x52AA6000, 0x3FCE8C02, -/**/ 0x80E8E6FF, 0xBD26805B, -/**/ 0x00000000, 0x3FE93000, -/**/ 0xB9F30358, 0xBEF79CD3, -/**/ 0x9E23A000, 0x3FCEA534, -/**/ 0x4C73CCB5, 0x3D381B93, -/**/ 0x00000000, 0x3FE92800, -/**/ 0x255BA00D, 0x3F36E803, -/**/ 0xF4DD8000, 0x3FCEBE61, -/**/ 0x30FDCA4D, 0xBD23D453, -/**/ 0x00000000, 0x3FE92800, -/**/ 0x36077742, 0xBF30A69B, -/**/ 0x58CA8000, 0x3FCED78A, -/**/ 0x3793387E, 0x3D16F1B5, -/**/ 0x00000000, 0x3FE92000, -/**/ 0x1C451AB3, 0x3F1F693A, -/**/ 0xCBDC6000, 0x3FCEF0AD, -/**/ 0x9C86AF24, 0xBD2B26B7, -/**/ 0x00000000, 0x3FE92000, -/**/ 0xC74EA9E2, 0xBF3F9548, -/**/ 0x50036000, 0x3FCF09CC, -/**/ 0x18D999DB, 0x3D3DA094, -/**/ 0x00000000, 0x3FE91800, -/**/ 0xF7C46911, 0xBF1BD5A8, -/**/ 0xE72F2000, 0x3FCF22E5, -/**/ 0x1417E41F, 0xBD3F454F, -/**/ 0x00000000, 0x3FE91000, -/**/ 0x0D83D1C6, 0x3F31B9E1, -/**/ 0x934D6000, 0x3FCF3BFA, -/**/ 0x937B903B, 0x3D2D9F2A, -/**/ 0x00000000, 0x3FE91000, -/**/ 0xF3795877, 0xBF35876F, -/**/ 0x564B8000, 0x3FCF550A, -/**/ 0xA09202FE, 0xBD2323E3, -/**/ 0x00000000, 0x3FE90800, -/**/ 0xBD1D87EC, 0x3F0A34CD, -/**/ 0x32154000, 0x3FCF6E15, -/**/ 0x7AC4EC74, 0xBD3C9A97, -/**/ 0x00000000, 0x3FE90000, -/**/ 0x0E760899, 0x3F3C23F5, -/**/ 0x28956000, 0x3FCF871B, -/**/ 0x6A526EFE, 0xBD3F75FD, -/**/ 0x00000000, 0x3FE90000, -/**/ 0xD0BE9594, 0xBF25DECD, -/**/ 0x3BB58000, 0x3FCFA01C, -/**/ 0xFAE1D786, 0xBD1A1F71, -/**/ 0x00000000, 0x3FE8F800, -/**/ 0xC18F9C19, 0x3F2C18F9, -/**/ 0x6D5E4000, 0x3FCFB918, -/**/ 0xAB993C87, 0xBD0D572A, -/**/ 0x00000000, 0x3FE8F800, -/**/ 0x8176594C, 0xBF38E868, -/**/ 0xBF770000, 0x3FCFD20F, -/**/ 0x72C6FE70, 0xBD11C55B, -/**/ 0x00000000, 0x3FE8F000, -/**/ 0x3C018F00, 0x3EC8F006, -/**/ 0x33E60000, 0x3FCFEB02, -/**/ 0x32D5E8C7, 0x3D2F316E, -/**/ 0x00000000, 0x3FE8E800, -/**/ 0xAD115384, 0x3F395B4D, -/**/ 0xE6484000, 0x3FD001F7, -/**/ 0x40C9ABBC, 0x3D38A957, -/**/ 0x00000000, 0x3FE8E800, -/**/ 0xEC8C0F90, 0xBF2AD850, -/**/ 0x45AD5000, 0x3FD00E6C, -/**/ 0x52E01203, 0x3CDCC68D, -/**/ 0x00000000, 0x3FE8E000, -/**/ 0xA56B1AA1, 0x3F27B6E9, -/**/ 0x3913A000, 0x3FD01ADE, -/**/ 0xCCDC1521, 0xBD108930, -/**/ 0x00000000, 0x3FE8E000, -/**/ 0x40DFC1D8, 0xBF3ACDE3, -/**/ 0xC16C2000, 0x3FD0274D, -/**/ 0x9CF835C2, 0x3D2979E8, -/**/ 0x00000000, 0x3FE8D800, -/**/ 0x317DF64C, 0xBEF68397, -/**/ 0xDFA74000, 0x3FD033BA, -/**/ 0x1485BDFF, 0x3D0C30BC, -/**/ 0x00000000, 0x3FE8D000, -/**/ 0x80C6980C, 0x3F380C69, -/**/ 0x94B4D000, 0x3FD04025, -/**/ 0x9EF42D7F, 0x3CF036B8, -/**/ 0x00000000, 0x3FE8D000, -/**/ 0x338C7FE7, 0xBF2CE006, -/**/ 0xE1842000, 0x3FD04C8D, -/**/ 0x512CEB86, 0xBD1FE6BA, -/**/ 0x00000000, 0x3FE8C800, -/**/ 0x1EFBBD63, 0x3F2644F0, -/**/ 0xC703F000, 0x3FD058F3, -/**/ 0xBCD236AD, 0xBD30E866, -/**/ 0x00000000, 0x3FE8C800, -/**/ 0xAA79217A, 0xBF3B3C2D, -/**/ 0x46227000, 0x3FD06557, -/**/ 0xB4868D6A, 0x3D0131DF, -/**/ 0x00000000, 0x3FE8C000, -/**/ 0x8062FF3A, 0xBEF8BFCE, -/**/ 0x5FCD6000, 0x3FD071B8, -/**/ 0xA3E01A11, 0xBD3BCB8B, -/**/ 0x00000000, 0x3FE8B800, -/**/ 0xBD2672C4, 0x3F383301, -/**/ 0x14F1D000, 0x3FD07E17, -/**/ 0x4F384BD5, 0xBD3EFCC6, -/**/ 0x00000000, 0x3FE8B800, -/**/ 0x9BFE749C, 0xBF2BFE74, -/**/ 0x667C5000, 0x3FD08A73, -/**/ 0x40C5A329, 0x3D3EBC1D, -/**/ 0x00000000, 0x3FE8B000, -/**/ 0xD4353EB3, 0x3F27BA8C, -/**/ 0x55591000, 0x3FD096CD, -/**/ 0x20550A31, 0x3D3F998D, -/**/ 0x00000000, 0x3FE8B000, -/**/ 0xA062B2E4, 0xBF3A3784, -/**/ 0xE2739000, 0x3FD0A324, -/**/ 0x7EF4030E, 0x3D0C6BEE, -/**/ 0x00000000, 0x3FE8A800, -/**/ 0x5E630281, 0xBECED1F6, -/**/ 0x0EB6C000, 0x3FD0AF7A, -/**/ 0x4945ADAD, 0x3D23CCF9, -/**/ 0x00000000, 0x3FE8A000, -/**/ 0x0C519CAE, 0x3F39CAE0, -/**/ 0xDB0D2000, 0x3FD0BBCC, -/**/ 0xCC5DCDFB, 0x3D32F32C, -/**/ 0x00000000, 0x3FE8A000, -/**/ 0x4EDBA5FD, 0xBF283C02, -/**/ 0x4860B000, 0x3FD0C81D, -/**/ 0x401D1731, 0xBD3E5BCF, -/**/ 0x00000000, 0x3FE89800, -/**/ 0x1899C0F6, 0x3F2C0F60, -/**/ 0x579AB000, 0x3FD0D46B, -/**/ 0xF640E1E6, 0x3D3D2C81, -/**/ 0x00000000, 0x3FE89800, -/**/ 0xBDBE51D0, 0xBF37C414, -/**/ 0x09A43000, 0x3FD0E0B7, -/**/ 0xA7862F2A, 0x3D32A038, -/**/ 0x00000000, 0x3FE89000, -/**/ 0xDD12CE7D, 0x3F03F540, -/**/ 0x5F658000, 0x3FD0ED00, -/**/ 0x285AA803, 0xBD22DC75, -/**/ 0x00000000, 0x3FE88800, -/**/ 0x400C45CD, 0x3F3CCFDE, -/**/ 0x59C67000, 0x3FD0F947, -/**/ 0x7F0818B6, 0xBD395261, -/**/ 0x00000000, 0x3FE88800, -/**/ 0x44FB66B5, 0xBF21A0F5, -/**/ 0xF9AE5000, 0x3FD1058B, -/**/ 0x817D52CD, 0xBD34AB9D, -/**/ 0x00000000, 0x3FE88000, -/**/ 0x2866A138, 0x3F319D95, -/**/ 0x4003F000, 0x3FD111CE, -/**/ 0x096B4B6B, 0xBD1B3237, -/**/ 0x00000000, 0x3FE88000, -/**/ 0xA48B49DA, 0xBF33E5FA, -/**/ 0x2DADA000, 0x3FD11E0E, -/**/ 0x8FCCE5BA, 0xBD2A47F8, -/**/ 0x00000000, 0x3FE87800, -/**/ 0xDEECB0A8, 0x3F1A9336, -/**/ 0xC3912000, 0x3FD12A4B, -/**/ 0x61473259, 0xBD35A750, -/**/ 0x00000000, 0x3FE87800, -/**/ 0xFB6A388D, 0xBF3EC219, -/**/ 0x0293B000, 0x3FD13687, -/**/ 0x99D67123, 0xBD3D3E84, -/**/ 0x00000000, 0x3FE87000, -/**/ 0xC1625090, 0xBF106AE7, -/**/ 0xEB9A0000, 0x3FD142BF, -/**/ 0x85B58A9E, 0x3D31CE61, -/**/ 0x00000000, 0x3FE86800, -/**/ 0xACD4200C, 0x3F369AE5, -/**/ 0x7F887000, 0x3FD14EF6, -/**/ 0x5DFC9794, 0xBD3E97A6, -/**/ 0x00000000, 0x3FE86800, -/**/ 0x9389D11C, 0xBF2D4286, -/**/ 0xBF429000, 0x3FD15B2A, -/**/ 0x49B629B2, 0xBD2D8E3B, -/**/ 0x00000000, 0x3FE86000, -/**/ 0x18618618, 0x3F286186, -/**/ 0xABABA000, 0x3FD1675C, -/**/ 0x731F55C4, 0x3D38380E, -/**/ 0x00000000, 0x3FE86000, -/**/ 0x6AC71708, 0xBF38EF0F, -/**/ 0x45A67000, 0x3FD1738C, -/**/ 0x0032C176, 0xBD39C6E9, -/**/ 0x00000000, 0x3FE85800, -/**/ 0xE00C2C20, 0x3EFFF3D3, -/**/ 0x8E151000, 0x3FD17FB9, -/**/ 0xA74A2684, 0xBD3A8A8B, -/**/ 0x00000000, 0x3FE85000, -/**/ 0xF9592266, 0x3F3CFBA0, -/**/ 0x85D93000, 0x3FD18BE4, -/**/ 0x6F3604AB, 0x3D3C167F, -/**/ 0x00000000, 0x3FE85000, -/**/ 0xFF3D87FA, 0xBF1FE7B0, -/**/ 0x2DD42000, 0x3FD1980D, -/**/ 0x7A361C9A, 0x3D2B7B3A, -/**/ 0x00000000, 0x3FE84800, -/**/ 0x918DC223, 0x3F331E8D, -/**/ 0x86E68000, 0x3FD1A433, -/**/ 0x634E0AAC, 0xBD07A850, -/**/ 0x00000000, 0x3FE84800, -/**/ 0x8D76B549, 0xBF31BAF9, -/**/ 0x91F08000, 0x3FD1B057, -/**/ 0x6DC55E2D, 0xBD32DD46, -/**/ 0x00000000, 0x3FE84000, -/**/ 0xDC90C512, 0x3F22F2EC, -/**/ 0x4FD1D000, 0x3FD1BC79, -/**/ 0x747BA7BE, 0xBD3CCF0C, -/**/ 0x00000000, 0x3FE84000, -/**/ 0x6A0916B9, 0xBF3B442A, -/**/ 0xC169A000, 0x3FD1C898, -/**/ 0xE5C62AFF, 0xBD381410, -/**/ 0x00000000, 0x3FE83800, -/**/ 0x83801838, 0x3EA83801, -/**/ 0xE796A000, 0x3FD1D4B5, -/**/ 0xD197BAC2, 0x3D222A5B, -/**/ 0x00000000, 0x3FE83000, -/**/ 0xCBD11C5C, 0x3F3B6A41, -/**/ 0xC3371000, 0x3FD1E0D0, -/**/ 0xA9B0D4A0, 0x3D3AF8F2, -/**/ 0x00000000, 0x3FE83000, -/**/ 0xCB7A3CD6, 0xBF225381, -/**/ 0x5528B000, 0x3FD1ECE9, -/**/ 0x09B4A3B8, 0xBD184E7B, -/**/ 0x00000000, 0x3FE82800, -/**/ 0x152500C1, 0x3F32500C, -/**/ 0x9E48A000, 0x3FD1F8FF, -/**/ 0x040CBE77, 0x3D27946C, -/**/ 0x00000000, 0x3FE82800, -/**/ 0x14902134, 0xBF32285F, -/**/ 0x9F73B000, 0x3FD20513, -/**/ 0x1609E0A4, 0x3CF6E15E, -/**/ 0x00000000, 0x3FE82000, -/**/ 0xA4018213, 0x3F22D9EB, -/**/ 0x59861000, 0x3FD21125, -/**/ 0xBA2950C4, 0x3D382E78, -/**/ 0x00000000, 0x3FE82000, -/**/ 0xFC6BBFF4, 0xBF3AEFFC, -/**/ 0xCD5B9000, 0x3FD21D34, -/**/ 0xB28BADAA, 0x3D3B552F, -/**/ 0x00000000, 0x3FE81800, -/**/ 0x18181818, 0x3EE81818, -/**/ 0xFBCF8000, 0x3FD22941, -/**/ 0xF5EB0963, 0xBD3A6976, -/**/ 0x00000000, 0x3FE81000, -/**/ 0x4FF0F3C6, 0x3F3C7F27, -/**/ 0xE5BC9000, 0x3FD2354C, -/**/ 0x0602A663, 0xBD3D78ED, -/**/ 0x00000000, 0x3FE81000, -/**/ 0x0A86941D, 0xBF1ED344, -/**/ 0x8BFD1000, 0x3FD24155, -/**/ 0x3228FCAD, 0x3D300FFF, -/**/ 0x00000000, 0x3FE80800, -/**/ 0x1B0BD52D, 0x3F3424D0, -/**/ 0xEF6AF000, 0x3FD24D5B, -/**/ 0xFC9FABDD, 0xBCBDD780, -/**/ 0x00000000, 0x3FE80800, -/**/ 0xFE7F9FE8, 0xBF2FE7F9, -/**/ 0x10DF7000, 0x3FD25960, -/**/ 0x224EA3E3, 0x3D38E7BC, -/**/ 0x00000000, 0x3FE80000, -/**/ 0x18018018, 0x3F280180, -/**/ 0xF1338000, 0x3FD26561, -/**/ 0x66FAA45F, 0x3D38B488, -/**/ 0x00000000, 0x3FE80000, -/**/ 0x5FF40180, 0xBF37FD00, -/**/ 0x913F8000, 0x3FD27161, -/**/ 0xF61564B4, 0x3D34F4F1, -/**/ 0x00000000, 0x3FE7F800, -/**/ 0x9750B6C7, 0x3F104AE8, -/**/ 0xF1DB6000, 0x3FD27D5E, -/**/ 0x78CAC9F4, 0xBD092374, -/**/ 0x00000000, 0x3FE7F800, -/**/ 0xF405FD01, 0xBF3FD017, -/**/ 0x13DE8000, 0x3FD2895A, -/**/ 0xD24C13F0, 0x3D3A8D7A, -/**/ 0x00000000, 0x3FE7F000, -/**/ 0xC9C5485E, 0xBF0D2BF1, -/**/ 0xF81FF000, 0x3FD29552, -/**/ 0x1771C408, 0x3D348D30, -/**/ 0x00000000, 0x3FE7E800, -/**/ 0xD029DB60, 0x3F38927F, -/**/ 0x9F763000, 0x3FD2A149, -/**/ 0x51F3AADC, 0xBD30DBBF, -/**/ 0x00000000, 0x3FE7E800, -/**/ 0xB0A45169, 0xBF26504A, -/**/ 0x0AB73000, 0x3FD2AD3E, -/**/ 0x488C359F, 0x3D2B972E, -/**/ 0x00000000, 0x3FE7E000, -/**/ 0xD278E8DD, 0x3F312A8A, -/**/ 0x3AB8A000, 0x3FD2B930, -/**/ 0xD6BFB0A5, 0xBD26DB12, -/**/ 0x00000000, 0x3FE7E000, -/**/ 0x24BB32E7, 0xBF327577, -/**/ 0x304F8000, 0x3FD2C520, -/**/ 0x8C342F39, 0x3D230852, -/**/ 0x00000000, 0x3FE7D800, -/**/ 0xA4B45AEC, 0x3F23EF9A, -/**/ 0xEC508000, 0x3FD2D10D, -/**/ 0xF7088353, 0x3D360C61, -/**/ 0x00000000, 0x3FE7D800, -/**/ 0x32748CC1, 0xBF398DAF, -/**/ 0x6F8FD000, 0x3FD2DCF9, -/**/ 0x8E33C9CE, 0x3D20B4A2, -/**/ 0x00000000, 0x3FE7D000, -/**/ 0x417D05F4, 0x3F07D05F, -/**/ 0xBAE12000, 0x3FD2E8E2, -/**/ 0x99B72BD8, 0xBD267B1E, -/**/ 0x00000000, 0x3FE7C800, -/**/ 0x431D3027, 0x3F3F8EF7, -/**/ 0xCF17A000, 0x3FD2F4C9, -/**/ 0x9374B87B, 0x3D371F04, -/**/ 0x00000000, 0x3FE7C800, -/**/ 0xDAD83E6C, 0xBF0E77A3, -/**/ 0xAD063000, 0x3FD300AE, -/**/ 0x8B75FCAC, 0x3D342F56, -/**/ 0x00000000, 0x3FE7C000, -/**/ 0x588D1676, 0x3F38E041, -/**/ 0x557F2000, 0x3FD30C91, -/**/ 0xA1451755, 0xBD142958, -/**/ 0x00000000, 0x3FE7C000, -/**/ 0x1FE8414C, 0xBF24C6DD, -/**/ 0xC9544000, 0x3FD31871, -/**/ 0x94CECFD9, 0x3D184FAB, -/**/ 0x00000000, 0x3FE7B800, -/**/ 0x81C2D3B2, 0x3F3265F4, -/**/ 0x09570000, 0x3FD32450, -/**/ 0x9BDAE59D, 0x3D3D271B, -/**/ 0x00000000, 0x3FE7B800, -/**/ 0xB6466407, 0xBF30C39C, -/**/ 0x16586000, 0x3FD3302C, -/**/ 0xC2A3E08B, 0x3D36217D, -/**/ 0x00000000, 0x3FE7B000, -/**/ 0x12B21224, 0x3F283FAD, -/**/ 0xF128E000, 0x3FD33C05, -/**/ 0x380E1A7D, 0xBD22B906, -/**/ 0x00000000, 0x3FE7B000, -/**/ 0xF899E55D, 0xBF36EFB8, -/**/ 0x9A988000, 0x3FD347DD, -/**/ 0xD4C58092, 0xBD25594D, -/**/ 0x00000000, 0x3FE7A800, -/**/ 0x3FF42B9F, 0x3F1836B6, -/**/ 0x1376E000, 0x3FD353B3, -/**/ 0xE6C26D9B, 0xBD1331AF, -/**/ 0x00000000, 0x3FE7A800, -/**/ 0x0B739FF4, 0xBF3CE7FD, -/**/ 0x5C933000, 0x3FD35F86, -/**/ 0x4EA1A54A, 0xBD3B07DE, -/**/ 0x00000000, 0x3FE7A000, -/**/ 0xE8017A00, 0x3EC7A005, -/**/ 0x76BC1000, 0x3FD36B57, -/**/ 0x5A9C223F, 0x3D116978, -/**/ 0x00000000, 0x3FE79800, -/**/ 0xB1CC5B7B, 0x3F3D535D, -/**/ 0x62BFE000, 0x3FD37726, -/**/ 0xAC53B023, 0xBD3E9436, -/**/ 0x00000000, 0x3FE79800, -/**/ 0xE0DA37A9, 0xBF15EEAC, -/**/ 0x216C5000, 0x3FD382F3, -/**/ 0x1D1A7F6D, 0xBD1061D2, -/**/ 0x00000000, 0x3FE79000, -/**/ 0x344E16D6, 0x3F37C21E, -/**/ 0xB38ED000, 0x3FD38EBD, -/**/ 0xE67D4CA0, 0x3D290582, -/**/ 0x00000000, 0x3FE79000, -/**/ 0x39C9E465, 0xBF25E69A, -/**/ 0x19F45000, 0x3FD39A86, -/**/ 0x937354F5, 0x3D18EE51, -/**/ 0x00000000, 0x3FE78800, -/**/ 0xC52640BC, 0x3F32640B, -/**/ 0x55694000, 0x3FD3A64C, -/**/ 0xBCD735D0, 0x3D37A71C, -/**/ 0x00000000, 0x3FE78800, -/**/ 0x2F6A09ED, 0xBF3037DE, -/**/ 0x66B9C000, 0x3FD3B210, -/**/ 0x9811560E, 0xBD33C1ED, -/**/ 0x00000000, 0x3FE78000, -/**/ 0x01781A72, 0x3F2A71DC, -/**/ 0x4EB15000, 0x3FD3BDD2, -/**/ 0x970E6ED9, 0xBD3257B4, -/**/ 0x00000000, 0x3FE78000, -/**/ 0xA9EEBFF4, 0xBF354996, -/**/ 0x0E1B2000, 0x3FD3C992, -/**/ 0xAA680B76, 0x3D141C28, -/**/ 0x00000000, 0x3FE77800, -/**/ 0xAC60D341, 0x3F208119, -/**/ 0xA5C1F000, 0x3FD3D54F, -/**/ 0xD9A395E3, 0x3D3C3E1C, -/**/ 0x00000000, 0x3FE77800, -/**/ 0x742E2DD0, 0xBF3A28AE, -/**/ 0x16701000, 0x3FD3E10B, -/**/ 0x145429C7, 0x3D3F3BCF, -/**/ 0x00000000, 0x3FE77000, -/**/ 0x36340177, 0x3F0BD584, -/**/ 0x60EF6000, 0x3FD3ECC4, -/**/ 0x27C1300F, 0xBD060286, -/**/ 0x00000000, 0x3FE77000, -/**/ 0x240C7174, 0xBF3ED55D, -/**/ 0x86094000, 0x3FD3F87B, -/**/ 0x54589889, 0xBD35DFD7, -/**/ 0x00000000, 0x3FE76800, -/**/ 0xAB277F45, 0xBEF18DE5, -/**/ 0x8686A000, 0x3FD40430, -/**/ 0x3049F7D3, 0x3D3F8EF4, -/**/ 0x00000000, 0x3FE76000, -/**/ 0x01D3C7B8, 0x3F3CB026, -/**/ 0x63303000, 0x3FD40FE3, -/**/ 0xE79F05C6, 0x3D3E5C5F, -/**/ 0x00000000, 0x3FE76000, -/**/ 0xA9D08664, 0xBF15E95B, -/**/ 0x1CCE1000, 0x3FD41B94, -/**/ 0x13E43FC9, 0xBD304690, -/**/ 0x00000000, 0x3FE75800, -/**/ 0x097CFD43, 0x3F3867A4, -/**/ 0xB427E000, 0x3FD42742, -/**/ 0x02B82675, 0xBD398727, -/**/ 0x00000000, 0x3FE75800, -/**/ 0xE8A9353E, 0xBF2353DF, -/**/ 0x2A04F000, 0x3FD432EF, -/**/ 0x931715AD, 0xBD3FB129, -/**/ 0x00000000, 0x3FE75000, -/**/ 0x4F13DC4A, 0x3F3450E6, -/**/ 0x7F2C1000, 0x3FD43E99, -/**/ 0x40C41A04, 0x3D1C3F72, -/**/ 0x00000000, 0x3FE75000, -/**/ 0xE8B1B4FC, 0xBF2B4FBF, -/**/ 0xB463C000, 0x3FD44A41, -/**/ 0xF37CF612, 0x3D31EE28, -/**/ 0x00000000, 0x3FE74800, -/**/ 0x7E458100, 0x3F306BB6, -/**/ 0xCA720000, 0x3FD455E7, -/**/ 0x36629AED, 0x3D1AD8C6, -/**/ 0x00000000, 0x3FE74800, -/**/ 0x1745D174, 0xBF31745D, -/**/ 0xC21C6000, 0x3FD4618B, -/**/ 0x484C84CC, 0xBD13D82F, -/**/ 0x00000000, 0x3FE74000, -/**/ 0x236DEC04, 0x3F296FBD, -/**/ 0x9C280000, 0x3FD46D2D, -/**/ 0x5F67F75A, 0x3D359B27, -/**/ 0x00000000, 0x3FE74000, -/**/ 0x3B304B87, 0xBF350F9D, -/**/ 0x5959B000, 0x3FD478CD, -/**/ 0xF0C8D098, 0x3D2EC89B, -/**/ 0x00000000, 0x3FE73800, -/**/ 0xA4EBDC70, 0x3F226A51, -/**/ 0xFA75C000, 0x3FD4846A, -/**/ 0xE3798DCE, 0xBD263EA2, -/**/ 0x00000000, 0x3FE73800, -/**/ 0xF00B9A78, 0xBF3879D5, -/**/ 0x80401000, 0x3FD49006, -/**/ 0xFE1A0F8C, 0xBD38BCCF, -/**/ 0x00000000, 0x3FE73000, -/**/ 0x5DAAD90C, 0x3F178D7F, -/**/ 0xEB7C1000, 0x3FD49B9F, -/**/ 0x58AB60D7, 0x3D3DAC1C, -/**/ 0x00000000, 0x3FE73000, -/**/ 0x783709C7, 0xBF3BB33C, -/**/ 0x3CED0000, 0x3FD4A737, -/**/ 0xEBF35449, 0xBD39A234, -/**/ 0x00000000, 0x3FE72800, -/**/ 0x265AD23A, 0x3F061274, -/**/ 0x75556000, 0x3FD4B2CC, -/**/ 0xC78BFA4B, 0xBD380FCB, -/**/ 0x00000000, 0x3FE72800, -/**/ 0xC90A1FD2, 0xBF3EBC05, -/**/ 0x95778000, 0x3FD4BE5F, -/**/ 0xCD9AD824, 0xBD3D7C92, -/**/ 0x00000000, 0x3FE72000, -/**/ 0x38017200, 0xBEC71FFA, -/**/ 0x9E153000, 0x3FD4C9F0, -/**/ 0x70E02DE0, 0xBD2E1DDE, -/**/ 0x00000000, 0x3FE71800, -/**/ 0x74A050E1, 0x3F3E6B99, -/**/ 0x8FEFE000, 0x3FD4D57F, -/**/ 0x7FD06868, 0x3D23F926, -/**/ 0x00000000, 0x3FE71800, -/**/ 0xB8BD1180, 0xBF077400, -/**/ 0x6BC8A000, 0x3FD4E10C, -/**/ 0x1636F061, 0x3CF8283F, -/**/ 0x00000000, 0x3FE71000, -/**/ 0xE3E0453A, 0x3F3BC36C, -/**/ 0x32600000, 0x3FD4EC97, -/**/ 0xAF04D104, 0x3D234D7A, -/**/ 0x00000000, 0x3FE71000, -/**/ 0x6935DDC5, 0xBF15FA98, -/**/ 0xE4764000, 0x3FD4F81F, -/**/ 0x434FF08D, 0xBD27FCF6, -/**/ 0x00000000, 0x3FE70800, -/**/ 0x7337CF08, 0x3F394B40, -/**/ 0x82CB2000, 0x3FD503A6, -/**/ 0xF16F9B5D, 0xBD2A68C8, -/**/ 0x00000000, 0x3FE70800, -/**/ 0xA835403A, 0xBF1F7B97, -/**/ 0x0E1E0000, 0x3FD50F2B, -/**/ 0x8C47B8D8, 0x3D3A0940, -/**/ 0x00000000, 0x3FE70000, -/**/ 0x5C0B8170, 0x3F3702E0, -/**/ 0x872E0000, 0x3FD51AAD, -/**/ 0xDB0A7CC1, 0xBD3F4BD8, -/**/ 0x00000000, 0x3FE70000, -/**/ 0x4F67A855, 0xBF241EE6, -/**/ 0xEEB99000, 0x3FD5262D, -/**/ 0x70894A01, 0xBD3E1B9F, -/**/ 0x00000000, 0x3FE6F800, -/**/ 0x221C0170, 0x3F34EA19, -/**/ 0x457EE000, 0x3FD531AC, -/**/ 0x7D931501, 0x3D3DF83B, -/**/ 0x00000000, 0x3FE6F800, -/**/ 0x5508CA5C, 0xBF282102, -/**/ 0x8C3BE000, 0x3FD53D28, -/**/ 0xEB6DFAC5, 0xBD111397, -/**/ 0x00000000, 0x3FE6F000, -/**/ 0x9300B793, 0x3F3300B7, -/**/ 0xC3ADD000, 0x3FD548A2, -/**/ 0x63081CF7, 0x3D23167E, -/**/ 0x00000000, 0x3FE6F000, -/**/ 0x005BB90F, 0xBF2BC486, -/**/ 0xEC91C000, 0x3FD5541A, -/**/ 0xDC72EEBA, 0xBCF816AA, -/**/ 0x00000000, 0x3FE6E800, -/**/ 0xC5A3A00B, 0x3F314688, -/**/ 0x07A44000, 0x3FD55F91, -/**/ 0x78DF4A62, 0xBD11E647, -/**/ 0x00000000, 0x3FE6E800, -/**/ 0xDA9C5AE1, 0xBF2F09D6, -/**/ 0x15A18000, 0x3FD56B05, -/**/ 0xBC4A23FC, 0x3D29247B, -/**/ 0x00000000, 0x3FE6E000, -/**/ 0x337C6CB1, 0x3F2F76B4, -/**/ 0x17456000, 0x3FD57677, -/**/ 0x9524D7CA, 0xBD364EAD, -/**/ 0x00000000, 0x3FE6E000, -/**/ 0xEDF4EC87, 0xBF30F8AC, -/**/ 0x0D4B3000, 0x3FD581E7, -/**/ 0xB12D8F1D, 0xBD1F31E1, -/**/ 0x00000000, 0x3FE6D800, -/**/ 0x6EAEF381, 0x3F2CBDF2, -/**/ 0xF86E0000, 0x3FD58D54, -/**/ 0x0A795215, 0x3D2791F3, -/**/ 0x00000000, 0x3FE6D800, -/**/ 0xB624BFF5, 0xBF323DB9, -/**/ 0xD9688000, 0x3FD598C0, -/**/ 0x70D96DA4, 0xBD385F49, -/**/ 0x00000000, 0x3FE6D000, -/**/ 0x1C860FB0, 0x3F2A6268, -/**/ 0xB0F4D000, 0x3FD5A42A, -/**/ 0x2DF7BA69, 0xBCDE63AF, -/**/ 0x00000000, 0x3FE6D000, -/**/ 0xB253BAE1, 0xBF335443, -/**/ 0x7FCCE000, 0x3FD5AF92, -/**/ 0xF5FFC77A, 0xBD1C032F, -/**/ 0x00000000, 0x3FE6C800, -/**/ 0xAB4294D4, 0x3F2863B1, -/**/ 0x46AA2000, 0x3FD5BAF8, -/**/ 0xF873FA41, 0xBD339AE8, -/**/ 0x00000000, 0x3FE6C800, -/**/ 0x87EAA6DF, 0xBF343C7C, -/**/ 0x0645A000, 0x3FD5C65C, -/**/ 0x0180EE65, 0xBD39FE06, -/**/ 0x00000000, 0x3FE6C000, -/**/ 0x16C16C17, 0x3F26C16C, -/**/ 0xBF581000, 0x3FD5D1BD, -/**/ 0xC9C7C238, 0xBD38D6BD, -/**/ 0x00000000, 0x3FE6C000, -/**/ 0x95C33E00, 0xBF34F695, -/**/ 0x7299C000, 0x3FD5DD1D, -/**/ 0x8815CE17, 0xBD38AF61, -/**/ 0x00000000, 0x3FE6B800, -/**/ 0xE7802D73, 0x3F257B34, -/**/ 0x20C29000, 0x3FD5E87B, -/**/ 0x8F7738FA, 0x3D3527D1, -/**/ 0x00000000, 0x3FE6B800, -/**/ 0xF4A5582C, 0xBF3582BF, -/**/ 0xCA8A2000, 0x3FD5F3D6, -/**/ 0x8E19CC75, 0x3D37AF84, -/**/ 0x00000000, 0x3FE6B000, -/**/ 0x31A3CFC7, 0x3F2490AA, -/**/ 0x70A79000, 0x3FD5FF30, -/**/ 0x9F105039, 0x3D2E9E43, -/**/ 0x00000000, 0x3FE6B000, -/**/ 0x77C30E5A, 0xBF35E12C, -/**/ 0x13D1A000, 0x3FD60A88, -/**/ 0xC879AF55, 0x3D36E9B9, -/**/ 0x00000000, 0x3FE6A800, -/**/ 0x94016A94, 0x3F24016A, -/**/ 0xB4BEC000, 0x3FD615DD, -/**/ 0x90BC04B2, 0x3D13C7CA, -/**/ 0x00000000, 0x3FE6A800, -/**/ 0xAD33D63F, 0xBF36120B, -/**/ 0x5424F000, 0x3FD62131, -/**/ 0x4AA68669, 0xBD3382FC, -/**/ 0x00000000, 0x3FE6A000, -/**/ 0x3729043E, 0x3F23CD15, -/**/ 0xF2B9C000, 0x3FD62C82, -/**/ 0xBD7C8A98, 0x3D3E54BD } }; - -static const union {int4 i[4350]; double x[2175]; } vj = { .i = { -/**/ 0x7D161C28, 0x3F46A400, -/**/ 0x20600000, 0xBF46A200, -/**/ 0xAA7623D9, 0x3D27DC4E, -/**/ 0xD596E639, 0x3F4693FA, -/**/ 0x4CE00000, 0xBF4691FD, -/**/ 0x29C3F0AD, 0x3D26B0CF, -/**/ 0x3219CE89, 0x3F4683F5, -/**/ 0x7B600000, 0xBF4681FA, -/**/ 0x95B9FDCC, 0x3D22B290, -/**/ 0x929ED397, 0x3F4673EF, -/**/ 0xABE00000, 0xBF4671F7, -/**/ 0xFA2F2D87, 0x3D17C727, -/**/ 0xF725F3E2, 0x3F4663E9, -/**/ 0xDE600000, 0xBF4661F4, -/**/ 0x6EDBFF1C, 0x3CF22ED3, -/**/ 0x5FAF2DE9, 0x3F4653E4, -/**/ 0x12E00000, 0xBF4651F2, -/**/ 0x157812BB, 0xBD144936, -/**/ 0xCC3A802B, 0x3F4643DE, -/**/ 0x49600000, 0xBF4641EF, -/**/ 0x60314E05, 0xBD2959CB, -/**/ 0x3CC7E927, 0x3F4633D9, -/**/ 0x81E00000, 0xBF4631EC, -/**/ 0xC3638E99, 0xBD35ABDA, -/**/ 0xB157675C, 0x3F4623D3, -/**/ 0xBC800000, 0xBF4621E9, -/**/ 0xC63F9A21, 0x3D3FF1D3, -/**/ 0x29E8F948, 0x3F4613CE, -/**/ 0xF9000000, 0xBF4611E6, -/**/ 0x71EEE611, 0x3D342D26, -/**/ 0xA67C9D6B, 0x3F4603C8, -/**/ 0x37800000, 0xBF4601E4, -/**/ 0x11A09689, 0x3D1C1C77, -/**/ 0x27125244, 0x3F45F3C3, -/**/ 0x78000000, 0xBF45F1E1, -/**/ 0xF7DC643C, 0xBD1DFD16, -/**/ 0xABAA1651, 0x3F45E3BD, -/**/ 0xBA800000, 0xBF45E1DE, -/**/ 0x91318A02, 0xBD376503, -/**/ 0x3443E812, 0x3F45D3B8, -/**/ 0xFF200000, 0xBF45D1DB, -/**/ 0xCE55DCDD, 0x3D3756E4, -/**/ 0xC0DFC606, 0x3F45C3B2, -/**/ 0x45A00000, 0xBF45C1D9, -/**/ 0x8F6F8FA0, 0x3D12D5CF, -/**/ 0x517DAEAB, 0x3F45B3AD, -/**/ 0x8E200000, 0xBF45B1D6, -/**/ 0x9B85DC2C, 0xBD2E90AB, -/**/ 0xE61DA081, 0x3F45A3A7, -/**/ 0xD8C00000, 0xBF45A1D3, -/**/ 0x3BF5AC54, 0x3D3B5E88, -/**/ 0x7EBF9A07, 0x3F4593A2, -/**/ 0x25400000, 0xBF4591D1, -/**/ 0x0C86DDB1, 0x3D12AC3A, -/**/ 0x1B6399BB, 0x3F45839D, -/**/ 0x73C00000, 0xBF4581CE, -/**/ 0x76830985, 0xBD3361C2, -/**/ 0xBC099E1C, 0x3F457397, -/**/ 0xC4600000, 0xBF4571CB, -/**/ 0xD062EBFF, 0x3D333915, -/**/ 0x60B1A5AA, 0x3F456392, -/**/ 0x16E00000, 0xBF4561C9, -/**/ 0x9CC4988F, 0xBD1E0DA0, -/**/ 0x095BAEE4, 0x3F45538D, -/**/ 0x6B800000, 0xBF4551C6, -/**/ 0x235BC18A, 0x3D3C69C4, -/**/ 0xB607B848, 0x3F454387, -/**/ 0xC2000000, 0xBF4541C3, -/**/ 0xF7737723, 0xBCEFCC99, -/**/ 0x66B5C056, 0x3F453382, -/**/ 0x1A800000, 0xBF4531C1, -/**/ 0x809CBCBB, 0xBD3FBAE2, -/**/ 0x1B65C58C, 0x3F45237D, -/**/ 0x75200000, 0xBF4521BE, -/**/ 0x194FEE63, 0x3CCAA5C8, -/**/ 0xD417C66A, 0x3F451377, -/**/ 0xD1C00000, 0xBF4511BB, -/**/ 0xE1CC7BBC, 0x3D3ED325, -/**/ 0x90CBC16E, 0x3F450372, -/**/ 0x30400000, 0xBF4501B9, -/**/ 0x68AB3742, 0xBD0F0298, -/**/ 0x5181B517, 0x3F44F36D, -/**/ 0x90E00000, 0xBF44F1B6, -/**/ 0x41E67AD9, 0x3D381BE1, -/**/ 0x16399FE6, 0x3F44E368, -/**/ 0xF3600000, 0xBF44E1B3, -/**/ 0x668D3662, 0xBD2A6E79, -/**/ 0xDEF38058, 0x3F44D362, -/**/ 0x58000000, 0xBF44D1B1, -/**/ 0x21F8B7C2, 0x3D284EA7, -/**/ 0xABAF54EC, 0x3F44C35D, -/**/ 0xBE800000, 0xBF44C1AE, -/**/ 0x7417D9C5, 0xBD3BC76D, -/**/ 0x7C6D1C22, 0x3F44B358, -/**/ 0x27200000, 0xBF44B1AC, -/**/ 0x16AAD1FC, 0xBD1409FD, -/**/ 0x512CD479, 0x3F44A353, -/**/ 0x91C00000, 0xBF44A1A9, -/**/ 0x98BC14FD, 0x3D30771E, -/**/ 0x29EE7C70, 0x3F44934E, -/**/ 0xFE400000, 0xBF4491A6, -/**/ 0x5CCB7232, 0xBD3B5993, -/**/ 0x06B21285, 0x3F448349, -/**/ 0x6CE00000, 0xBF4481A4, -/**/ 0x5512F9C2, 0xBD20E729, -/**/ 0xE7779538, 0x3F447343, -/**/ 0xDD800000, 0xBF4471A1, -/**/ 0x55B30899, 0x3D225436, -/**/ 0xCC3F0308, 0x3F44633E, -/**/ 0x50200000, 0xBF44619F, -/**/ 0x9E54E31F, 0x3D39807C, -/**/ 0xB5085A73, 0x3F445339, -/**/ 0xC4A00000, 0xBF44519C, -/**/ 0xD5804C0E, 0xBD376F6F, -/**/ 0xA1D399FA, 0x3F444334, -/**/ 0x3B400000, 0xBF44419A, -/**/ 0x6CDE6425, 0xBD234953, -/**/ 0x92A0C01A, 0x3F44332F, -/**/ 0xB3E00000, 0xBF443197, -/**/ 0xAAF6596F, 0x3D070E7B, -/**/ 0x876FCB54, 0x3F44232A, -/**/ 0x2E800000, 0xBF442195, -/**/ 0x4EC011F1, 0x3D2C49F8, -/**/ 0x8040BA25, 0x3F441325, -/**/ 0xAB200000, 0xBF441192, -/**/ 0xD8AAA7EB, 0x3D3825DC, -/**/ 0x7D138B0E, 0x3F440320, -/**/ 0x29A00000, 0xBF440190, -/**/ 0xFE0B73D6, 0xBD3F1A8D, -/**/ 0x7DE83C8C, 0x3F43F31B, -/**/ 0xAA400000, 0xBF43F18D, -/**/ 0xE46CA26B, 0xBD379B43, -/**/ 0x82BECD20, 0x3F43E316, -/**/ 0x2CE00000, 0xBF43E18B, -/**/ 0x6283780D, 0xBD315B44, -/**/ 0x8B973B49, 0x3F43D311, -/**/ 0xB1800000, 0xBF43D188, -/**/ 0x017589BE, 0xBD28B31E, -/**/ 0x98718584, 0x3F43C30C, -/**/ 0x38200000, 0xBF43C186, -/**/ 0x8FBB296E, 0xBD212A46, -/**/ 0xA94DAA52, 0x3F43B307, -/**/ 0xC0C00000, 0xBF43B183, -/**/ 0x045CBBD2, 0xBD183403, -/**/ 0xBE2BA832, 0x3F43A302, -/**/ 0x4B600000, 0xBF43A181, -/**/ 0xD7CC5936, 0xBD13009B, -/**/ 0xD70B7DA2, 0x3F4392FD, -/**/ 0xD8000000, 0xBF43917E, -/**/ 0xC1742279, 0xBD12B655, -/**/ 0xF3ED2921, 0x3F4382F8, -/**/ 0x66A00000, 0xBF43817C, -/**/ 0xEA83FAE8, 0xBD17512E, -/**/ 0x14D0A930, 0x3F4372F4, -/**/ 0xF7400000, 0xBF437179, -/**/ 0xBED65875, 0xBD206692, -/**/ 0x39B5FC4C, 0x3F4362EF, -/**/ 0x89E00000, 0xBF436177, -/**/ 0xD38FFE9E, 0xBD27931B, -/**/ 0x629D20F5, 0x3F4352EA, -/**/ 0x1E800000, 0xBF435175, -/**/ 0xE524208F, 0xBD309618, -/**/ 0x8F8615AA, 0x3F4342E5, -/**/ 0xB5200000, 0xBF434172, -/**/ 0xDD4C72C5, 0xBD3697E9, -/**/ 0xC070D8EB, 0x3F4332E0, -/**/ 0x4DC00000, 0xBF433170, -/**/ 0x5E6E12C3, 0xBD3DCE00, -/**/ 0xF55D6935, 0x3F4322DB, -/**/ 0xE8800000, 0xBF43216D, -/**/ 0x0AE9A8CE, 0x3D39C8A4, -/**/ 0x2E4BC509, 0x3F4312D7, -/**/ 0x85200000, 0xBF43116B, -/**/ 0xD1CD2FA1, 0x3D302D03, -/**/ 0x6B3BEAE5, 0x3F4302D2, -/**/ 0x23C00000, 0xBF430169, -/**/ 0xA3BADFD1, 0x3D15807D, -/**/ 0xAC2DD949, 0x3F42F2CD, -/**/ 0xC4600000, 0xBF42F166, -/**/ 0xF57F0504, 0xBD1A7422, -/**/ 0xF1218EB3, 0x3F42E2C8, -/**/ 0x67000000, 0xBF42E164, -/**/ 0x2F2C781C, 0xBD33C974, -/**/ 0x3A1709A3, 0x3F42D2C4, -/**/ 0x0BC00000, 0xBF42D162, -/**/ 0x851A1E61, 0x3D3DDBDD, -/**/ 0x870E4898, 0x3F42C2BF, -/**/ 0xB2600000, 0xBF42C15F, -/**/ 0xA14AA8FD, 0x3D2CA7D9, -/**/ 0xD8074A10, 0x3F42B2BA, -/**/ 0x5B000000, 0xBF42B15D, -/**/ 0xDDCDDFF5, 0xBD03022E, -/**/ 0x2D020C8C, 0x3F42A2B6, -/**/ 0x05A00000, 0xBF42A15B, -/**/ 0x0F9231A8, 0xBD343FBA, -/**/ 0x85FE8E8A, 0x3F4292B1, -/**/ 0xB2600000, 0xBF429158, -/**/ 0xA52C9CCF, 0x3D38B690, -/**/ 0xE2FCCE8A, 0x3F4282AC, -/**/ 0x61000000, 0xBF428156, -/**/ 0xC8CC82EB, 0x3D120E6A, -/**/ 0x43FCCB0A, 0x3F4272A8, -/**/ 0x11A00000, 0xBF427154, -/**/ 0x792E6C51, 0xBD30D79B, -/**/ 0xA8FE8289, 0x3F4262A3, -/**/ 0xC4600000, 0xBF426151, -/**/ 0x91F7F7AA, 0x3D38A5EE, -/**/ 0x1201F387, 0x3F42529F, -/**/ 0x79000000, 0xBF42514F, -/**/ 0x46C2E8BA, 0x3CEFA728, -/**/ 0x7F071C84, 0x3F42429A, -/**/ 0x2FA00000, 0xBF42414D, -/**/ 0xFA447A17, 0xBD37D0BA, -/**/ 0xF00DFBFD, 0x3F423295, -/**/ 0xE8600000, 0xBF42314A, -/**/ 0x94AF3FED, 0x3D2C7A24, -/**/ 0x65169072, 0x3F422291, -/**/ 0xA3000000, 0xBF422148, -/**/ 0x050CEA04, 0xBD29B0BD, -/**/ 0xDE20D863, 0x3F42128C, -/**/ 0x5FC00000, 0xBF421146, -/**/ 0x0C3035EB, 0x3D36EFF3, -/**/ 0x5B2CD24E, 0x3F420288, -/**/ 0x1E600000, 0xBF420144, -/**/ 0x73569B27, 0xBD19A3E2, -/**/ 0xDC3A7CB2, 0x3F41F283, -/**/ 0xDF200000, 0xBF41F141, -/**/ 0xEEB67715, 0x3D3B1DDE, -/**/ 0x6149D610, 0x3F41E27F, -/**/ 0xA1C00000, 0xBF41E13F, -/**/ 0x94F49154, 0xBD11EA17, -/**/ 0xEA5ADCE5, 0x3F41D27A, -/**/ 0x66800000, 0xBF41D13D, -/**/ 0x52DD9D37, 0x3D3ACED9, -/**/ 0x776D8FB1, 0x3F41C276, -/**/ 0x2D200000, 0xBF41C13B, -/**/ 0xF72D8EEB, 0xBD1C140B, -/**/ 0x0881ECF4, 0x3F41B272, -/**/ 0xF5E00000, 0xBF41B138, -/**/ 0x939583E1, 0x3D360AE5, -/**/ 0x9D97F32C, 0x3F41A26D, -/**/ 0xC0800000, 0xBF41A136, -/**/ 0x1D246C7C, 0xBD2C00D9, -/**/ 0x36AFA0D9, 0x3F419269, -/**/ 0x8D400000, 0xBF419134, -/**/ 0x0B955CFB, 0x3D29B40E, -/**/ 0xD3C8F479, 0x3F418264, -/**/ 0x5BE00000, 0xBF418132, -/**/ 0x45A6C249, 0xBD3964BF, -/**/ 0x74E3EC8D, 0x3F417260, -/**/ 0x2CA00000, 0xBF417130, -/**/ 0xF3363612, 0xBCE777E0, -/**/ 0x1A008792, 0x3F41625C, -/**/ 0xFF600000, 0xBF41612D, -/**/ 0x28DE8296, 0x3D36D608, -/**/ 0xC31EC409, 0x3F415257, -/**/ 0xD4000000, 0xBF41512B, -/**/ 0x4BB1B788, 0xBD32AE69, -/**/ 0x703EA071, 0x3F414253, -/**/ 0xAAC00000, 0xBF414129, -/**/ 0x170ECD8C, 0x3D05BF68, -/**/ 0x21601B48, 0x3F41324F, -/**/ 0x83800000, 0xBF413127, -/**/ 0x7C653BFC, 0x3D370A0B, -/**/ 0xD683330E, 0x3F41224A, -/**/ 0x5E200000, 0xBF412125, -/**/ 0x77BBBEBF, 0xBD35B70D, -/**/ 0x8FA7E642, 0x3F411246, -/**/ 0x3AE00000, 0xBF411123, -/**/ 0x93ABC1CD, 0xBD0C52EB, -/**/ 0x4CCE3363, 0x3F410242, -/**/ 0x19A00000, 0xBF410121, -/**/ 0xE5C6F4C7, 0x3D2B2237, -/**/ 0x0DF618F1, 0x3F40F23E, -/**/ 0xFA600000, 0xBF40F11E, -/**/ 0x1E9A50AD, 0x3D3D9C5F, -/**/ 0xD31F956A, 0x3F40E239, -/**/ 0xDD000000, 0xBF40E11C, -/**/ 0x8965F0DA, 0xBD336793, -/**/ 0x9C4AA74E, 0x3F40D235, -/**/ 0xC1C00000, 0xBF40D11A, -/**/ 0x7E49E231, 0xBD15E6EE, -/**/ 0x69774D1D, 0x3F40C231, -/**/ 0xA8800000, 0xBF40C118, -/**/ 0x04FD621C, 0x3D1D9B9D, -/**/ 0x3AA58554, 0x3F40B22D, -/**/ 0x91400000, 0xBF40B116, -/**/ 0x7DD9EED3, 0x3D333B55, -/**/ 0x0FD54E74, 0x3F40A229, -/**/ 0x7C000000, 0xBF40A114, -/**/ 0x7AA78478, 0x3D3E048F, -/**/ 0xE906A6FC, 0x3F409224, -/**/ 0x68A00000, 0xBF409112, -/**/ 0x644DDE88, 0xBD383C6A, -/**/ 0xC6398D6B, 0x3F408220, -/**/ 0x57600000, 0xBF408110, -/**/ 0x76B8C83A, 0xBD2F0D2F, -/**/ 0xA76E0040, 0x3F40721C, -/**/ 0x48200000, 0xBF40710E, -/**/ 0x9CE99FD3, 0xBD1F63E0, -/**/ 0x8CA3FDFB, 0x3F406218, -/**/ 0x3AE00000, 0xBF40610C, -/**/ 0x4FE774F2, 0xBCF328B4, -/**/ 0x75DB851A, 0x3F405214, -/**/ 0x2FA00000, 0xBF40510A, -/**/ 0x3782BCD4, 0x3D11B6BD, -/**/ 0x6314941D, 0x3F404210, -/**/ 0x26600000, 0xBF404108, -/**/ 0xE7183792, 0x3D22116F, -/**/ 0x544F2983, 0x3F40320C, -/**/ 0x1F200000, 0xBF403106, -/**/ 0x1B995B3D, 0x3D293F1E, -/**/ 0x498B43CB, 0x3F402208, -/**/ 0x19E00000, 0xBF402104, -/**/ 0xFC162630, 0x3D2E6669, -/**/ 0x42C8E175, 0x3F401204, -/**/ 0x16A00000, 0xBF401102, -/**/ 0x254FC9F8, 0x3D30C4AA, -/**/ 0x40080100, 0x3F400200, -/**/ 0x15600000, 0xBF400100, -/**/ 0xE4431F92, 0x3D3154EE, -/**/ 0x829141D6, 0x3F3FE3F8, -/**/ 0x2C400000, 0xBF3FE1FC, -/**/ 0x9B2D30FB, 0x3D30E503, -/**/ 0x8D157F6B, 0x3F3FC3F0, -/**/ 0x31C00000, 0xBF3FC1F8, -/**/ 0x53EBD670, 0x3D2EEBD1, -/**/ 0x9F9CB7BC, 0x3F3FA3E8, -/**/ 0x3B400000, 0xBF3FA1F4, -/**/ 0xE04A16E0, 0x3D2A113C, -/**/ 0xBA26E7CA, 0x3F3F83E0, -/**/ 0x48C00000, 0xBF3F81F0, -/**/ 0x99C43E34, 0x3D233C4A, -/**/ 0xDCB40C91, 0x3F3F63D8, -/**/ 0x5A400000, 0xBF3F61EC, -/**/ 0x7BD210C1, 0x3D14DDF6, -/**/ 0x07442311, 0x3F3F43D1, -/**/ 0x6FC00000, 0xBF3F41E8, -/**/ 0x9E4B51C8, 0xBCC52C1D, -/**/ 0x39D72849, 0x3F3F23C9, -/**/ 0x89400000, 0xBF3F21E4, -/**/ 0x8EA8C754, 0xBD1A196F, -/**/ 0x746D1936, 0x3F3F03C1, -/**/ 0xA6C00000, 0xBF3F01E0, -/**/ 0xF95AF98D, 0xBD2BB719, -/**/ 0xB705F2D8, 0x3F3EE3B9, -/**/ 0xC8400000, 0xBF3EE1DC, -/**/ 0x28FFD598, 0xBD3628EB, -/**/ 0x01A1B22C, 0x3F3EC3B2, -/**/ 0xEDC00000, 0xBF3EC1D8, -/**/ 0x0BBAC8F8, 0xBD3F6D76, -/**/ 0x54405432, 0x3F3EA3AA, -/**/ 0x17800000, 0xBF3EA1D5, -/**/ 0xB7A7EE0D, 0x3D3657D2, -/**/ 0xAEE1D5E8, 0x3F3E83A2, -/**/ 0x45000000, 0xBF3E81D1, -/**/ 0xFA9CCC78, 0x3D264FDE, -/**/ 0x1186344C, 0x3F3E639B, -/**/ 0x76800000, 0xBF3E61CD, -/**/ 0xE02EF455, 0xBCEF83EB, -/**/ 0x7C2D6C5E, 0x3F3E4393, -/**/ 0xAC000000, 0xBF3E41C9, -/**/ 0x03C3E129, 0xBD2C26B3, -/**/ 0xEED77B1B, 0x3F3E238B, -/**/ 0xE5800000, 0xBF3E21C5, -/**/ 0x904D773D, 0xBD3C1CBE, -/**/ 0x69845D83, 0x3F3E0384, -/**/ 0x23400000, 0xBF3E01C2, -/**/ 0xD0615454, 0x3D34E8B1, -/**/ 0xEC341093, 0x3F3DE37C, -/**/ 0x64C00000, 0xBF3DE1BE, -/**/ 0xE9BE933E, 0x3D13F7DF, -/**/ 0x76E6914B, 0x3F3DC375, -/**/ 0xAA400000, 0xBF3DC1BA, -/**/ 0x707B004A, 0xBD27B7D7, -/**/ 0x099BDCA9, 0x3F3DA36E, -/**/ 0xF3C00000, 0xBF3DA1B6, -/**/ 0xEE2141C3, 0xBD3DA3F8, -/**/ 0xA453EFAC, 0x3F3D8366, -/**/ 0x41800000, 0xBF3D81B3, -/**/ 0x63D21825, 0x3D2F4DA1, -/**/ 0x470EC752, 0x3F3D635F, -/**/ 0x93000000, 0xBF3D61AF, -/**/ 0xFAD0B844, 0xBD0FD473, -/**/ 0xF1CC609A, 0x3F3D4357, -/**/ 0xE8800000, 0xBF3D41AB, -/**/ 0x298657C2, 0xBD388716, -/**/ 0xA48CB882, 0x3F3D2350, -/**/ 0x42400000, 0xBF3D21A8, -/**/ 0x0B68711A, 0x3D32023A, -/**/ 0x5F4FCC0A, 0x3F3D0349, -/**/ 0x9FC00000, 0xBF3D01A4, -/**/ 0x23A704B0, 0xBD117676, -/**/ 0x22159830, 0x3F3CE342, -/**/ 0x01400000, 0xBF3CE1A1, -/**/ 0x8F391F09, 0xBD3BA59C, -/**/ 0xECDE19F1, 0x3F3CC33A, -/**/ 0x67000000, 0xBF3CC19D, -/**/ 0x9EBBF706, 0x3D28567A, -/**/ 0xBFA94E4E, 0x3F3CA333, -/**/ 0xD0800000, 0xBF3CA199, -/**/ 0x2D41F1CC, 0xBD29D41F, -/**/ 0x9A773245, 0x3F3C832C, -/**/ 0x3E400000, 0xBF3C8196, -/**/ 0x14ED5134, 0x3D391B7D, -/**/ 0x7D47C2D4, 0x3F3C6325, -/**/ 0xAFC00000, 0xBF3C6192, -/**/ 0x83403B5B, 0xBCFC31C5, -/**/ 0x681AFCFA, 0x3F3C431E, -/**/ 0x25400000, 0xBF3C418F, -/**/ 0x88A1FFF3, 0xBD3D84DB, -/**/ 0x5AF0DDB6, 0x3F3C2317, -/**/ 0x9F000000, 0xBF3C218B, -/**/ 0x6298A63B, 0x3D175CFF, -/**/ 0x55C96207, 0x3F3C0310, -/**/ 0x1C800000, 0xBF3C0188, -/**/ 0xDFB8E489, 0xBD37ADC9, -/**/ 0x58A486EA, 0x3F3BE309, -/**/ 0x9E400000, 0xBF3BE184, -/**/ 0x45069C64, 0x3D23DA0F, -/**/ 0x6382495F, 0x3F3BC302, -/**/ 0x23C00000, 0xBF3BC181, -/**/ 0x4CC2EFE0, 0xBD35574B, -/**/ 0x7662A665, 0x3F3BA2FB, -/**/ 0xAD800000, 0xBF3BA17D, -/**/ 0x4BED0B89, 0x3D250C7B, -/**/ 0x91459AFA, 0x3F3B82F4, -/**/ 0x3B000000, 0xBF3B817A, -/**/ 0x322E5605, 0xBD36795D, -/**/ 0xB42B241D, 0x3F3B62ED, -/**/ 0xCCC00000, 0xBF3B6176, -/**/ 0xF6413886, 0x3D1EAB91, -/**/ 0xDF133ECC, 0x3F3B42E6, -/**/ 0x62400000, 0xBF3B4173, -/**/ 0xF86BE5B5, 0xBD3B0BFC, -/**/ 0x11FDE807, 0x3F3B22E0, -/**/ 0xFC000000, 0xBF3B216F, -/**/ 0xDDE8D701, 0x3CF62FEB, -/**/ 0x4CEB1CCC, 0x3F3B02D9, -/**/ 0x99C00000, 0xBF3B016C, -/**/ 0xF210FD9E, 0x3D3CF8D7, -/**/ 0x8FDADA1A, 0x3F3AE2D2, -/**/ 0x3B400000, 0xBF3AE169, -/**/ 0x1526CFB0, 0xBD2092E2, -/**/ 0xDACD1CEF, 0x3F3AC2CB, -/**/ 0xE1000000, 0xBF3AC165, -/**/ 0x18D261D5, 0x3D319D24, -/**/ 0x2DC1E24A, 0x3F3AA2C5, -/**/ 0x8A800000, 0xBF3AA162, -/**/ 0x533CC8EC, 0xBD355268, -/**/ 0x88B9272B, 0x3F3A82BE, -/**/ 0x38400000, 0xBF3A815F, -/**/ 0x0AFE6139, 0x3D074750, -/**/ 0xEBB2E88F, 0x3F3A62B7, -/**/ 0xEA000000, 0xBF3A615B, -/**/ 0x6668AD57, 0x3D3A501B, -/**/ 0x56AF2375, 0x3F3A42B1, -/**/ 0x9F800000, 0xBF3A4158, -/**/ 0xA98381BD, 0xBD2E37A7, -/**/ 0xC9ADD4DD, 0x3F3A22AA, -/**/ 0x59400000, 0xBF3A2155, -/**/ 0x7B82F9AC, 0x3D1A9872, -/**/ 0x44AEF9C5, 0x3F3A02A4, -/**/ 0x17000000, 0xBF3A0152, -/**/ 0x0FF040AD, 0x3D3B96ED, -/**/ 0xC7B28F2C, 0x3F39E29D, -/**/ 0xD8800000, 0xBF39E14E, -/**/ 0x33534BD7, 0xBD304862, -/**/ 0x52B89211, 0x3F39C297, -/**/ 0x9E400000, 0xBF39C14B, -/**/ 0x17AF009B, 0x3D084979, -/**/ 0xE5C0FF72, 0x3F39A290, -/**/ 0x68000000, 0xBF39A148, -/**/ 0x604B64C9, 0x3D358CA1, -/**/ 0x80CBD44E, 0x3F39828A, -/**/ 0x35800000, 0xBF398145, -/**/ 0x2E334404, 0xBD38BD0B, -/**/ 0x23D90DA4, 0x3F396284, -/**/ 0x07400000, 0xBF396142, -/**/ 0xEF1B1C68, 0xBD1F4B58, -/**/ 0xCEE8A873, 0x3F39427D, -/**/ 0xDD000000, 0xBF39413E, -/**/ 0x07E010EC, 0x3D209881, -/**/ 0x81FAA1B9, 0x3F392277, -/**/ 0xB6C00000, 0xBF39213B, -/**/ 0x5CF03181, 0x3D37A139, -/**/ 0x3D0EF676, 0x3F390271, -/**/ 0x94400000, 0xBF390138, -/**/ 0x65276B0B, 0xBD39D2EB, -/**/ 0x0025A3A8, 0x3F38E26B, -/**/ 0x76000000, 0xBF38E135, -/**/ 0xEE3023F6, 0xBD281E5A, -/**/ 0xCB3EA64F, 0x3F38C264, -/**/ 0x5BC00000, 0xBF38C132, -/**/ 0x3F9A4B53, 0x3CEDAE6E, -/**/ 0x9E59FB68, 0x3F38A25E, -/**/ 0x45800000, 0xBF38A12F, -/**/ 0x412B648E, 0x3D2A47EF, -/**/ 0x79779FF3, 0x3F388258, -/**/ 0x33400000, 0xBF38812C, -/**/ 0x5ED0D8F2, 0x3D38955F, -/**/ 0x5C9790EE, 0x3F386252, -/**/ 0x24C00000, 0xBF386129, -/**/ 0x09939374, 0xBD3CBD55, -/**/ 0x47B9CB5A, 0x3F38424C, -/**/ 0x1A800000, 0xBF384126, -/**/ 0x4F399186, 0xBD32D325, -/**/ 0x3ADE4C33, 0x3F382246, -/**/ 0x14400000, 0xBF382123, -/**/ 0x524688EB, 0xBD235622, -/**/ 0x3605107A, 0x3F380240, -/**/ 0x12000000, 0xBF380120, -/**/ 0xEB2F3DDC, 0xBCF44184, -/**/ 0x392E152C, 0x3F37E23A, -/**/ 0x13C00000, 0xBF37E11D, -/**/ 0x2153D1B8, 0x3D198B16, -/**/ 0x4459574A, 0x3F37C234, -/**/ 0x19800000, 0xBF37C11A, -/**/ 0x47A3C923, 0x3D2A9511, -/**/ 0x5786D3D1, 0x3F37A22E, -/**/ 0x23400000, 0xBF37A117, -/**/ 0x4B4128D9, 0x3D337431, -/**/ 0x72B687C1, 0x3F378228, -/**/ 0x31000000, 0xBF378114, -/**/ 0xC5BFE9E8, 0x3D38E0BF, -/**/ 0x95E87019, 0x3F376222, -/**/ 0x42C00000, 0xBF376111, -/**/ 0x5A0B2CE9, 0x3D3D9134, -/**/ 0xC11C89D8, 0x3F37421C, -/**/ 0x58400000, 0xBF37410E, -/**/ 0xB1802C40, 0xBD3E7970, -/**/ 0xF452D1FB, 0x3F372216, -/**/ 0x72000000, 0xBF37210B, -/**/ 0x16E562C9, 0xBD3B3E2F, -/**/ 0x2F8B4583, 0x3F370211, -/**/ 0x8FC00000, 0xBF370108, -/**/ 0x9087DACD, 0xBD38BC06, -/**/ 0x72C5E16F, 0x3F36E20B, -/**/ 0xB1800000, 0xBF36E105, -/**/ 0xD92B1B21, 0xBD36F1F6, -/**/ 0xBE02A2BC, 0x3F36C205, -/**/ 0xD7400000, 0xBF36C102, -/**/ 0xABF2CD23, 0xBD35DEFF, -/**/ 0x1141866B, 0x3F36A200, -/**/ 0x01000000, 0xBF36A100, -/**/ 0xC462BC85, 0xBD358220, -/**/ 0x6C828979, 0x3F3681FA, -/**/ 0x2EC00000, 0xBF3680FD, -/**/ 0xDE5ED723, 0xBD35DA59, -/**/ 0xCFC5A8E7, 0x3F3661F4, -/**/ 0x60800000, 0xBF3660FA, -/**/ 0xB62B2CD1, 0xBD36E6AA, -/**/ 0x3B0AE1B2, 0x3F3641EF, -/**/ 0x96400000, 0xBF3640F7, -/**/ 0x086BEF29, 0xBD38A613, -/**/ 0xAE5230DA, 0x3F3621E9, -/**/ 0xD0000000, 0xBF3620F4, -/**/ 0x9225715D, 0xBD3B1792, -/**/ 0x299B935F, 0x3F3601E4, -/**/ 0x0DC00000, 0xBF3600F2, -/**/ 0x10BC2805, 0xBD3E3A29, -/**/ 0xACE7063E, 0x3F35E1DE, -/**/ 0x4FC00000, 0xBF35E0EF, -/**/ 0xBE0B570D, 0x3D3DF329, -/**/ 0x38348676, 0x3F35C1D9, -/**/ 0x95800000, 0xBF35C0EC, -/**/ 0x1C0C5502, 0x3D397166, -/**/ 0xCB841108, 0x3F35A1D3, -/**/ 0xDF400000, 0xBF35A0E9, -/**/ 0x4AC1FA2D, 0x3D34418C, -/**/ 0x66D5A2F1, 0x3F3581CE, -/**/ 0x2D000000, 0xBF3580E7, -/**/ 0x168E9C6E, 0x3D2CC939, -/**/ 0x0A293931, 0x3F3561C9, -/**/ 0x7EC00000, 0xBF3560E4, -/**/ 0x795CE154, 0x3D1F6E5C, -/**/ 0xB57ED0C7, 0x3F3541C3, -/**/ 0xD4800000, 0xBF3540E1, -/**/ 0x898FEE67, 0x3CE4EF88, -/**/ 0x68D666B1, 0x3F3521BE, -/**/ 0x2E400000, 0xBF3520DF, -/**/ 0x0B78D65E, 0xBD1CDACF, -/**/ 0x242FF7EF, 0x3F3501B9, -/**/ 0x8C000000, 0xBF3500DC, -/**/ 0x6F1CBFB8, 0xBD2F7BF1, -/**/ 0xE78B8180, 0x3F34E1B3, -/**/ 0xEDC00000, 0xBF34E0D9, -/**/ 0x5A899820, 0xBD38ED52, -/**/ 0xB2E90063, 0x3F34C1AE, -/**/ 0x53C00000, 0xBF34C0D7, -/**/ 0x930A694E, 0x3D3D3C3F, -/**/ 0x86487196, 0x3F34A1A9, -/**/ 0xBD800000, 0xBF34A0D4, -/**/ 0x4FA7CCCB, 0x3D32BFBD, -/**/ 0x61A9D219, 0x3F3481A4, -/**/ 0x2B400000, 0xBF3480D2, -/**/ 0x65A26E32, 0x3D1E789C, -/**/ 0x450D1EEB, 0x3F34619F, -/**/ 0x9D000000, 0xBF3460CF, -/**/ 0x47E500B5, 0xBD109E0B, -/**/ 0x3072550B, 0x3F34419A, -/**/ 0x12C00000, 0xBF3440CD, -/**/ 0x3523FAE9, 0xBD309040, -/**/ 0x23D97178, 0x3F342195, -/**/ 0x8C800000, 0xBF3420CA, -/**/ 0xD31DE7C2, 0xBD3D9B10, -/**/ 0x1F427131, 0x3F340190, -/**/ 0x0A800000, 0xBF3400C8, -/**/ 0x90B287C4, 0x3D34B90B, -/**/ 0x22AD5135, 0x3F33E18B, -/**/ 0x8C400000, 0xBF33E0C5, -/**/ 0xCA1B0FC2, 0x3D19B454, -/**/ 0x2E1A0E83, 0x3F33C186, -/**/ 0x12000000, 0xBF33C0C3, -/**/ 0x638FC1F4, 0xBD20FBE7, -/**/ 0x4188A61A, 0x3F33A181, -/**/ 0x9BC00000, 0xBF33A0C0, -/**/ 0xE0C03290, 0xBD38070E, -/**/ 0x5CF914F9, 0x3F33817C, -/**/ 0x29C00000, 0xBF3380BE, -/**/ 0xE0B6E5F5, 0x3D37D2C3, -/**/ 0x806B5820, 0x3F336177, -/**/ 0xBB800000, 0xBF3360BB, -/**/ 0x35598794, 0x3D1C4213, -/**/ 0xABDF6C8D, 0x3F334172, -/**/ 0x51400000, 0xBF3340B9, -/**/ 0xC111C569, 0xBD249997, -/**/ 0xDF554F40, 0x3F33216D, -/**/ 0xEB000000, 0xBF3320B6, -/**/ 0xEEEE28E2, 0xBD3C442D, -/**/ 0x1ACCFD37, 0x3F330169, -/**/ 0x89000000, 0xBF3300B4, -/**/ 0xDBBF316D, 0x3D312B5E, -/**/ 0x5E467372, 0x3F32E164, -/**/ 0x2AC00000, 0xBF32E0B2, -/**/ 0x7484E6E1, 0xBCFFD254, -/**/ 0xA9C1AEF0, 0x3F32C15F, -/**/ 0xD0800000, 0xBF32C0AF, -/**/ 0x1F2C3F9D, 0xBD35BCBA, -/**/ 0xFD3EACAF, 0x3F32A15A, -/**/ 0x7A800000, 0xBF32A0AD, -/**/ 0x8C8BAA61, 0x3D35EDA0, -/**/ 0x58BD69B0, 0x3F328156, -/**/ 0x28400000, 0xBF3280AB, -/**/ 0x3F79FE5E, 0x3CF02EAF, -/**/ 0xBC3DE2F1, 0x3F326151, -/**/ 0xDA000000, 0xBF3260A8, -/**/ 0xB1304AA8, 0xBD347BDA, -/**/ 0x27C01572, 0x3F32414D, -/**/ 0x90000000, 0xBF3240A6, -/**/ 0xD46BE359, 0x3D35724F, -/**/ 0x9B43FE30, 0x3F322148, -/**/ 0x49C00000, 0xBF3220A4, -/**/ 0x43BF90C9, 0xBCF31954, -/**/ 0x16C99A2D, 0x3F320144, -/**/ 0x07800000, 0xBF3200A2, -/**/ 0xC4901E30, 0xBD386689, -/**/ 0x9A50E666, 0x3F31E13F, -/**/ 0xC9800000, 0xBF31E09F, -/**/ 0x134E34BF, 0x3D2FA8E5, -/**/ 0x25D9DFDB, 0x3F31C13B, -/**/ 0x8F400000, 0xBF31C09D, -/**/ 0x477D87DF, 0xBD20FF40, -/**/ 0xB964838C, 0x3F31A136, -/**/ 0x59400000, 0xBF31A09B, -/**/ 0x68B5B77B, 0x3D3E9E3E, -/**/ 0x54F0CE76, 0x3F318132, -/**/ 0x27000000, 0xBF318099, -/**/ 0x906F8A53, 0x3D14BC39, -/**/ 0xF87EBD9A, 0x3F31612D, -/**/ 0xF8C00000, 0xBF316096, -/**/ 0xFCD50724, 0xBD34CC2F, -/**/ 0xA40E4DF7, 0x3F314129, -/**/ 0xCEC00000, 0xBF314094, -/**/ 0x7A3A1B8D, 0x3D30AD83, -/**/ 0x579F7C8B, 0x3F312125, -/**/ 0xA8800000, 0xBF312092, -/**/ 0x057F5C66, 0xBD24C5AE, -/**/ 0x13324657, 0x3F310121, -/**/ 0x86800000, 0xBF310090, -/**/ 0xBFD488E0, 0x3D3A03C0, -/**/ 0xD6C6A858, 0x3F30E11C, -/**/ 0x68400000, 0xBF30E08E, -/**/ 0x56935D63, 0xBD00EDA8, -/**/ 0xA25C9F8F, 0x3F30C118, -/**/ 0x4E000000, 0xBF30C08C, -/**/ 0x2FDDD1CE, 0xBD3EC638, -/**/ 0x75F428FB, 0x3F30A114, -/**/ 0x38000000, 0xBF30A08A, -/**/ 0x0CA3DCBE, 0x3D102CDE, -/**/ 0x518D419B, 0x3F308110, -/**/ 0x25C00000, 0xBF308088, -/**/ 0xBFA78921, 0xBD39A865, -/**/ 0x3527E66D, 0x3F30610C, -/**/ 0x17C00000, 0xBF306086, -/**/ 0x72CE37BD, 0x3D203FE0, -/**/ 0x20C41472, 0x3F304108, -/**/ 0x0D800000, 0xBF304084, -/**/ 0x6054C3FA, 0xBD369AC6, -/**/ 0x1461C8A9, 0x3F302104, -/**/ 0x07800000, 0xBF302082, -/**/ 0x4836293A, 0x3D2450ED, -/**/ 0x10010010, 0x3F300100, -/**/ 0x05400000, 0xBF300080, -/**/ 0x88B3357C, 0xBD359558, -/**/ 0x27436F4F, 0x3F2FC1F8, -/**/ 0x0E800000, 0xBF2FC0FC, -/**/ 0x92ECD4D1, 0x3D245998, -/**/ 0x3E87D8DC, 0x3F2F81F0, -/**/ 0x1A000000, 0xBF2F80F8, -/**/ 0xB592170A, 0xBD36901A, -/**/ 0x65CF36C6, 0x3F2F41E8, -/**/ 0x2E000000, 0xBF2F40F4, -/**/ 0x53524603, 0x3D2069E5, -/**/ 0x9D19830B, 0x3F2F01E0, -/**/ 0x49800000, 0xBF2F00F0, -/**/ 0x69C22240, 0xBD39830B, -/**/ 0xE466B7AB, 0x3F2EC1D8, -/**/ 0x6D800000, 0xBF2EC0EC, -/**/ 0xFB871BBA, 0x3D1123AC, -/**/ 0x3BB6CEA4, 0x3F2E81D1, -/**/ 0x99000000, 0xBF2E80E8, -/**/ 0x2E158AF6, 0xBD3E6629, -/**/ 0xA309C1F4, 0x3F2E41C9, -/**/ 0xCD000000, 0xBF2E40E4, -/**/ 0x2B29884E, 0xBCF8F488, -/**/ 0x1A5F8B99, 0x3F2E01C2, -/**/ 0x09000000, 0xBF2E00E1, -/**/ 0x6EA006C6, 0x3D3ACE8D, -/**/ 0xA1B82593, 0x3F2DC1BA, -/**/ 0x4C800000, 0xBF2DC0DD, -/**/ 0x59D0B687, 0xBD22974E, -/**/ 0x391389E0, 0x3F2D81B3, -/**/ 0x98800000, 0xBF2D80D9, -/**/ 0xD7897CAD, 0x3D322319, -/**/ 0xE071B27F, 0x3F2D41AB, -/**/ 0xEC000000, 0xBF2D40D5, -/**/ 0x57954C6E, 0xBD32E42F, -/**/ 0x97D2996E, 0x3F2D01A4, -/**/ 0x48000000, 0xBF2D00D2, -/**/ 0xC741610E, 0x3D1E7DF5, -/**/ 0x5F3638AB, 0x3F2CC19D, -/**/ 0xAB800000, 0xBF2CC0CE, -/**/ 0xA0909C5A, 0xBD3E50DF, -/**/ 0x369C8A37, 0x3F2C8196, -/**/ 0x17800000, 0xBF2C80CB, -/**/ 0x8D8D1C8F, 0xBD12D119, -/**/ 0x1E05880E, 0x3F2C418F, -/**/ 0x8B800000, 0xBF2C40C7, -/**/ 0x544D2574, 0x3D347649, -/**/ 0x15712C30, 0x3F2C0188, -/**/ 0x07000000, 0xBF2C00C4, -/**/ 0x4EEA9E68, 0xBD32D030, -/**/ 0x1CDF709C, 0x3F2BC181, -/**/ 0x8B000000, 0xBF2BC0C0, -/**/ 0x74A84109, 0x3D15E533, -/**/ 0x34504F50, 0x3F2B817A, -/**/ 0x17000000, 0xBF2B80BD, -/**/ 0x025FBF68, 0x3D3D53C1, -/**/ 0x5BC3C24B, 0x3F2B4173, -/**/ 0xAA800000, 0xBF2B40B9, -/**/ 0x6BAA2FA8, 0xBD267FA7, -/**/ 0x9339C38C, 0x3F2B016C, -/**/ 0x46800000, 0xBF2B00B6, -/**/ 0xBB3FDE1E, 0x3D277F1D, -/**/ 0xDAB24D11, 0x3F2AC165, -/**/ 0xEA000000, 0xBF2AC0B2, -/**/ 0x1A8CDBE2, 0xBD3DAD17, -/**/ 0x322D58D9, 0x3F2A815F, -/**/ 0x96000000, 0xBF2A80AF, -/**/ 0xD81CF36E, 0xBD1E1315, -/**/ 0x99AAE0E3, 0x3F2A4158, -/**/ 0x4A000000, 0xBF2A40AC, -/**/ 0xE649E7B4, 0x3D2C7307, -/**/ 0x112ADF2D, 0x3F2A0152, -/**/ 0x05800000, 0xBF2A00A9, -/**/ 0xB77435EC, 0xBD3C713A, -/**/ 0x98AD4DB7, 0x3F29C14B, -/**/ 0xC9800000, 0xBF29C0A5, -/**/ 0x3A7AE827, 0xBD1E1005, -/**/ 0x3032267F, 0x3F298145, -/**/ 0x95800000, 0xBF2980A2, -/**/ 0xA8F2A842, 0x3D2A0460, -/**/ 0xD7B96385, 0x3F29413E, -/**/ 0x69000000, 0xBF29409F, -/**/ 0xA7B8321E, 0xBD3EDDA5, -/**/ 0x8F42FEC5, 0x3F290138, -/**/ 0x45000000, 0xBF29009C, -/**/ 0x3A3F0D33, 0xBD264506, -/**/ 0x56CEF241, 0x3F28C132, -/**/ 0x29000000, 0xBF28C099, -/**/ 0x33EE13CD, 0x3D206930, -/**/ 0x2E5D37F6, 0x3F28812C, -/**/ 0x15000000, 0xBF288096, -/**/ 0x22DF1FDA, 0x3D3B28AC, -/**/ 0x15EDC9E3, 0x3F284126, -/**/ 0x08800000, 0xBF284093, -/**/ 0xDD73B6DB, 0xBD324546, -/**/ 0x0D80A208, 0x3F280120, -/**/ 0x04800000, 0xBF280090, -/**/ 0x6DFEB485, 0xBCB440C2, -/**/ 0x1515BA62, 0x3F27C11A, -/**/ 0x08800000, 0xBF27C08D, -/**/ 0x9823B19D, 0x3D31BCBE, -/**/ 0x2CAD0CF1, 0x3F278114, -/**/ 0x14000000, 0xBF27808A, -/**/ 0xA9EB4E97, 0xBD3CD148, -/**/ 0x544693B4, 0x3F27410E, -/**/ 0x28000000, 0xBF274087, -/**/ 0xCA4F73AA, 0xBD277AAC, -/**/ 0x8BE248AA, 0x3F270108, -/**/ 0x44000000, 0xBF270084, -/**/ 0x26068EF7, 0x3D13E656, -/**/ 0xD38025D2, 0x3F26C102, -/**/ 0x68000000, 0xBF26C081, -/**/ 0x44C3EC8A, 0x3D35547B, -/**/ 0x2B20252A, 0x3F2680FD, -/**/ 0x93800000, 0xBF26807E, -/**/ 0x110DCE4B, 0xBD3AABA5, -/**/ 0x92C240B1, 0x3F2640F7, -/**/ 0xC7800000, 0xBF26407B, -/**/ 0xAC011956, 0xBD260B96, -/**/ 0x0A667267, 0x3F2600F2, -/**/ 0x03800000, 0xBF260079, -/**/ 0x5DFA826E, 0x3D111C22, -/**/ 0x920CB44A, 0x3F25C0EC, -/**/ 0x47800000, 0xBF25C076, -/**/ 0xD8A2980A, 0x3D333BD6, -/**/ 0x29B5005A, 0x3F2580E7, -/**/ 0x93000000, 0xBF258073, -/**/ 0x71C1D861, 0xBD3E2660, -/**/ 0xD15F5095, 0x3F2540E1, -/**/ 0xE7000000, 0xBF254070, -/**/ 0x4E77E5EE, 0xBD2FBD3A, -/**/ 0x890B9EFA, 0x3F2500DC, -/**/ 0x43000000, 0xBF25006E, -/**/ 0x7B90A2D9, 0xBCFEBDF2, -/**/ 0x50B9E589, 0x3F24C0D7, -/**/ 0xA7000000, 0xBF24C06B, -/**/ 0x58F2FF2C, 0x3D2765B3, -/**/ 0x286A1E40, 0x3F2480D2, -/**/ 0x13000000, 0xBF248069, -/**/ 0x74AE382C, 0x3D38FE8D, -/**/ 0x101C431E, 0x3F2440CD, -/**/ 0x86800000, 0xBF244066, -/**/ 0xB0286224, 0xBD3A07C3, -/**/ 0x07D04E23, 0x3F2400C8, -/**/ 0x02800000, 0xBF240064, -/**/ 0x46EFC0EC, 0xBD2ABE33, -/**/ 0x0F86394D, 0x3F23C0C3, -/**/ 0x86800000, 0xBF23C061, -/**/ 0x70DE3151, 0xBCF06744, -/**/ 0x273DFE9C, 0x3F2380BE, -/**/ 0x12800000, 0xBF23805F, -/**/ 0x05CFCD61, 0x3D260659, -/**/ 0x4EF7980F, 0x3F2340B9, -/**/ 0xA6800000, 0xBF23405C, -/**/ 0xD7DBBEBC, 0x3D36BEC8, -/**/ 0x86B2FFA4, 0x3F2300B4, -/**/ 0x42000000, 0xBF23005A, -/**/ 0x2B2027B4, 0xBD3DD29F, -/**/ 0xCE702F5C, 0x3F22C0AF, -/**/ 0xE6000000, 0xBF22C057, -/**/ 0x6959A7D0, 0xBD32B00B, -/**/ 0x262F2134, 0x3F2280AB, -/**/ 0x92000000, 0xBF228055, -/**/ 0x19FAAC2D, 0xBD1F61EF, -/**/ 0x8DEFCF2C, 0x3F2240A6, -/**/ 0x46000000, 0xBF224053, -/**/ 0xCB16B8A8, 0x3D05A87E, -/**/ 0x05B23344, 0x3F2200A2, -/**/ 0x02000000, 0xBF220051, -/**/ 0x23B9B257, 0x3D29F32F, -/**/ 0x8D76477A, 0x3F21C09D, -/**/ 0xC6000000, 0xBF21C04E, -/**/ 0x7E214821, 0x3D36F61B, -/**/ 0x253C05CD, 0x3F218099, -/**/ 0x91800000, 0xBF21804C, -/**/ 0x46FDFCA2, 0xBD3F5464, -/**/ 0xCD03683D, 0x3F214094, -/**/ 0x65800000, 0xBF21404A, -/**/ 0xA30F2308, 0xBD35E4E7, -/**/ 0x84CC68C9, 0x3F210090, -/**/ 0x41800000, 0xBF210048, -/**/ 0xF800CC34, 0xBD2974DC, -/**/ 0x4C970171, 0x3F20C08C, -/**/ 0x25800000, 0xBF20C046, -/**/ 0xC1006E9D, 0xBD0E9FC5, -/**/ 0x24632C32, 0x3F208088, -/**/ 0x11800000, 0xBF208044, -/**/ 0x078E4438, 0x3D133DE7, -/**/ 0x0C30E30D, 0x3F204084, -/**/ 0x05800000, 0xBF204042, -/**/ 0x15F82A7B, 0x3D2A61D2, -/**/ 0x04002001, 0x3F200080, -/**/ 0x01800000, 0xBF200040, -/**/ 0x3BBB110C, 0x3D355155, -/**/ 0x17A1BA1A, 0x3F1F80F8, -/**/ 0x0B000000, 0xBF1F807C, -/**/ 0x6C520A9B, 0x3D3D31BE, -/**/ 0x47462860, 0x3F1F00F0, -/**/ 0x22000000, 0xBF1F0078, -/**/ 0x4B6D83F6, 0xBD3B2CDB, -/**/ 0x96ED7ED3, 0x3F1E80E8, -/**/ 0x4A000000, 0xBF1E8074, -/**/ 0xD4122C5A, 0xBD33C977, -/**/ 0x0697B172, 0x3F1E00E1, -/**/ 0x82000000, 0xBF1E0070, -/**/ 0x2D1517C4, 0xBD29462E, -/**/ 0x9644B43B, 0x3F1D80D9, -/**/ 0xCA000000, 0xBF1D806C, -/**/ 0xF0952D45, 0xBD16E2E3, -/**/ 0x45F47B2C, 0x3F1D00D2, -/**/ 0x22000000, 0xBF1D0069, -/**/ 0x2DDC2A8D, 0x3CEED452, -/**/ 0x15A6FA46, 0x3F1C80CB, -/**/ 0x8A000000, 0xBF1C8065, -/**/ 0xA08CEBE8, 0x3D1DAFEE, -/**/ 0x055C2585, 0x3F1C00C4, -/**/ 0x02000000, 0xBF1C0062, -/**/ 0xBB11EF55, 0x3D2B50A4, -/**/ 0x1513F0E9, 0x3F1B80BD, -/**/ 0x8A000000, 0xBF1B805E, -/**/ 0xC6D142BF, 0x3D33ACA6, -/**/ 0x44CE5071, 0x3F1B00B6, -/**/ 0x22000000, 0xBF1B005B, -/**/ 0xF8CD3D11, 0x3D3979F8, -/**/ 0x948B381A, 0x3F1A80AF, -/**/ 0xCA000000, 0xBF1A8057, -/**/ 0x07EDFD29, 0x3D3F1149, -/**/ 0x044A9BE5, 0x3F1A00A9, -/**/ 0x81000000, 0xBF1A0054, -/**/ 0xF7BB7092, 0xBD3B8C68, -/**/ 0x940C6FCF, 0x3F1980A2, -/**/ 0x49000000, 0xBF198051, -/**/ 0xF27E09A9, 0xBD365E1C, -/**/ 0x43D0A7D8, 0x3F19009C, -/**/ 0x21000000, 0xBF19004E, -/**/ 0xD508D564, 0xBD3162D2, -/**/ 0x139737FE, 0x3F188096, -/**/ 0x09000000, 0xBF18804B, -/**/ 0x18D5C93E, 0xBD293315, -/**/ 0x03601440, 0x3F180090, -/**/ 0x01000000, 0xBF180048, -/**/ 0x0C26A328, 0xBD200288, -/**/ 0x132B309E, 0x3F17808A, -/**/ 0x09000000, 0xBF178045, -/**/ 0x7E89FD6F, 0xBD0CC7F9, -/**/ 0x42F88115, 0x3F170084, -/**/ 0x21000000, 0xBF170042, -/**/ 0x058494DC, 0x3CE40881, -/**/ 0x92C7F9A5, 0x3F16807E, -/**/ 0x49000000, 0xBF16803F, -/**/ 0xCD5698B9, 0x3D12AE16, -/**/ 0x02998E4D, 0x3F160079, -/**/ 0x81000000, 0xBF16003C, -/**/ 0xC5780E17, 0x3D21138B, -/**/ 0x926D330B, 0x3F158073, -/**/ 0xC9000000, 0xBF158039, -/**/ 0x4E2001E2, 0x3D287809, -/**/ 0x4242DBDF, 0x3F15006E, -/**/ 0x21000000, 0xBF150037, -/**/ 0x21448AA2, 0x3D2F8684, -/**/ 0x121A7CC8, 0x3F148069, -/**/ 0x89000000, 0xBF148034, -/**/ 0x2F637D8E, 0x3D33207E, -/**/ 0x01F409C4, 0x3F140064, -/**/ 0x01000000, 0xBF140032, -/**/ 0x12E44B29, 0x3D3654B9, -/**/ 0x11CF76D3, 0x3F13805F, -/**/ 0x89000000, 0xBF13802F, -/**/ 0xCA5547F3, 0x3D3960F2, -/**/ 0x41ACB7F4, 0x3F13005A, -/**/ 0x21000000, 0xBF13002D, -/**/ 0x6487063D, 0x3D3C462B, -/**/ 0x918BC126, 0x3F128055, -/**/ 0xC9000000, 0xBF12802A, -/**/ 0xEFEA1107, 0x3D3F0562, -/**/ 0x016C8668, 0x3F120051, -/**/ 0x80000000, 0xBF120028, -/**/ 0x857113CE, 0xBD3E6066, -/**/ 0x914EFBBA, 0x3F11804C, -/**/ 0x48000000, 0xBF118026, -/**/ 0xEDD9EB54, 0xBD3BEA30, -/**/ 0x41331519, 0x3F110048, -/**/ 0x20000000, 0xBF110024, -/**/ 0x3BFFFF5A, 0xBD3996FC, -/**/ 0x1118C686, 0x3F108044, -/**/ 0x08000000, 0xBF108022, -/**/ 0x62F2E042, 0xBD3765C8, -/**/ 0x01000400, 0x3F100040, -/**/ 0x00000000, 0xBF100020, -/**/ 0x562224CD, 0xBD355595, -/**/ 0x21D1830C, 0x3F0F0078, -/**/ 0x10000000, 0xBF0F003C, -/**/ 0x095D69EB, 0xBD336563, -/**/ 0x81A5E62E, 0x3F0E0070, -/**/ 0x40000000, 0xBF0E0038, -/**/ 0x70D45290, 0xBD319431, -/**/ 0x217D1965, 0x3F0D0069, -/**/ 0x90000000, 0xBF0D0034, -/**/ 0x022D0EF6, 0xBD2FC201, -/**/ 0x015704B1, 0x3F0C0062, -/**/ 0x00000000, 0xBF0C0031, -/**/ 0x5E276E21, 0xBD2C95A0, -/**/ 0x2133900E, 0x3F0B005B, -/**/ 0x90000000, 0xBF0B002D, -/**/ 0xE0372A42, 0xBD29A140, -/**/ 0x8112A37D, 0x3F0A0054, -/**/ 0x40000000, 0xBF0A002A, -/**/ 0x73BBB580, 0xBD26E2E2, -/**/ 0x20F426FB, 0x3F09004E, -/**/ 0x10000000, 0xBF090027, -/**/ 0x04D48C20, 0xBD245885, -/**/ 0x00D80288, 0x3F080048, -/**/ 0x00000000, 0xBF080024, -/**/ 0x80613426, 0xBD220028, -/**/ 0x20BE1E23, 0x3F070042, -/**/ 0x10000000, 0xBF070021, -/**/ 0xA80279F3, 0xBD1FAF99, -/**/ 0x80A661CA, 0x3F06003C, -/**/ 0x40000000, 0xBF06001E, -/**/ 0xDC287DFE, 0xBD1BBAE3, -/**/ 0x2090B57C, 0x3F050037, -/**/ 0x90000000, 0xBF05001B, -/**/ 0x7B73B67C, 0xBD181E2F, -/**/ 0x007D0139, 0x3F040032, -/**/ 0x00000000, 0xBF040019, -/**/ 0x65A375F8, 0xBD14D57C, -/**/ 0x206B2CFF, 0x3F03002D, -/**/ 0x90000000, 0xBF030016, -/**/ 0x7BF71EC1, 0xBD11DCCA, -/**/ 0x805B20CD, 0x3F020028, -/**/ 0x40000000, 0xBF020014, -/**/ 0x425C4447, 0xBD0E6033, -/**/ 0x204CC4A3, 0x3F010024, -/**/ 0x10000000, 0xBF010012, -/**/ 0x730FFF5C, 0xBD0996D3, -/**/ 0x00400080, 0x3F000020, -/**/ 0x00000000, 0xBF000010, -/**/ 0x558888DE, 0xBD055575, -/**/ 0x406978C6, 0x3EFE0038, -/**/ 0x20000000, 0xBEFE001C, -/**/ 0xB845146A, 0xBD019418, -/**/ 0x0055C096, 0x3EFC0031, -/**/ 0x80000000, 0xBEFC0018, -/**/ 0xD989DB3C, 0xBCFC957A, -/**/ 0x4044A870, 0x3EFA002A, -/**/ 0x20000000, 0xBEFA0015, -/**/ 0x8F0EED2F, 0xBCF6E2C6, -/**/ 0x00360051, 0x3EF80024, -/**/ 0x00000000, 0xBEF80012, -/**/ 0x40184CEB, 0xBCF20014, -/**/ 0x40299839, 0x3EF6001E, -/**/ 0x20000000, 0xBEF6000F, -/**/ 0x434A1F5C, 0xBCEBBAC7, -/**/ 0x001F4027, 0x3EF40019, -/**/ 0x80000000, 0xBEF4000C, -/**/ 0xDD68DD6A, 0xBCE4D568, -/**/ 0x4016C81A, 0x3EF20014, -/**/ 0x20000000, 0xBEF2000A, -/**/ 0xA11710FC, 0xBCDE6019, -/**/ 0x00100010, 0x3EF00010, -/**/ 0x00000000, 0xBEF00008, -/**/ 0x5562222D, 0xBCD55565, -/**/ 0x80157013, 0x3EEC0018, -/**/ 0x40000000, 0xBEEC000C, -/**/ 0x176276C5, 0xBCCC9568, -/**/ 0x000D800A, 0x3EE80012, -/**/ 0x00000000, 0xBEE80009, -/**/ 0x20061337, 0xBCC2000A, -/**/ 0x8007D005, 0x3EE4000C, -/**/ 0x40000000, 0xBEE40006, -/**/ 0x195A3758, 0xBCB4D55F, -/**/ 0x00040002, 0x3EE00008, -/**/ 0x00000000, 0xBEE00004, -/**/ 0x5558888A, 0xBCA5555D, -/**/ 0x00036001, 0x3ED80009, -/**/ 0x80000000, 0xBED80004, -/**/ 0x100184CD, 0xBC920005, -/**/ 0x00010000, 0x3ED00004, -/**/ 0x00000000, 0xBED00002, -/**/ 0x55562222, 0xBC755559, -/**/ 0x00004000, 0x3EC00002, -/**/ 0x00000000, 0xBEC00001, -/**/ 0x55558889, 0xBC455557, -/**/ 0x00000000, 0x00000000, -/**/ 0x00000000, 0x00000000, -/**/ 0x00000000, 0x00000000, -/**/ 0x00008000, 0xBEBFFFFC, -/**/ 0x00000000, 0x3EBFFFFE, -/**/ 0x55558889, 0x3C455553, -/**/ 0x00020000, 0xBECFFFF8, -/**/ 0x00000000, 0x3ECFFFFC, -/**/ 0x55562222, 0x3C755551, -/**/ 0x00035FFF, 0xBED7FFF7, -/**/ 0x80000000, 0x3ED7FFFB, -/**/ 0xF00184CC, 0x3C91FFFA, -/**/ 0x0007FFFC, 0xBEDFFFF0, -/**/ 0x00000000, 0x3EDFFFF8, -/**/ 0x55588887, 0x3CA5554D, -/**/ 0x8007CFFB, 0xBEE3FFF3, -/**/ 0xC0000000, 0x3EE3FFF9, -/**/ 0x915A3753, 0x3CB4D54B, -/**/ 0x000D7FF6, 0xBEE7FFEE, -/**/ 0x00000000, 0x3EE7FFF7, -/**/ 0xE006132F, 0x3CC1FFF5, -/**/ 0x80156FED, 0xBEEBFFE7, -/**/ 0xC0000000, 0x3EEBFFF3, -/**/ 0x936276B2, 0x3CCC9542, -/**/ 0x001FFFE0, 0xBEEFFFE0, -/**/ 0x00000000, 0x3EEFFFF0, -/**/ 0x55622217, 0x3CD55545, -/**/ 0xC016C7E6, 0xBEF1FFEB, -/**/ 0xE0000000, 0x3EF1FFF5, -/**/ 0x5F1710D1, 0x3CDE5FE6, -/**/ 0x001F3FD9, 0xBEF3FFE7, -/**/ 0x80000000, 0x3EF3FFF3, -/**/ 0xCD68DD41, 0x3CE4D541, -/**/ 0xC02997C7, 0xBEF5FFE1, -/**/ 0xE0000000, 0x3EF5FFF0, -/**/ 0x124A1F13, 0x3CEBBA8E, -/**/ 0x0035FFAF, 0xBEF7FFDC, -/**/ 0x00000000, 0x3EF7FFEE, -/**/ 0xC0184CAE, 0x3CF1FFEB, -/**/ 0xC044A790, 0xBEF9FFD5, -/**/ 0xE0000000, 0x3EF9FFEA, -/**/ 0xC68EECCD, 0x3CF6E28E, -/**/ 0x0055BF6A, 0xBEFBFFCF, -/**/ 0x80000000, 0x3EFBFFE7, -/**/ 0xD189DAA2, 0x3CFC952F, -/**/ 0xC069773A, 0xBEFDFFC7, -/**/ 0xE0000000, 0x3EFDFFE3, -/**/ 0x480513F6, 0x3D0193E7, -/**/ 0x007FFF00, 0xBEFFFFC0, -/**/ 0x00000000, 0x3EFFFFE0, -/**/ 0x55888833, 0x3D055535, -/**/ 0xE04CC35D, 0xBF00FFDB, -/**/ 0xF0000000, 0x3F00FFED, -/**/ 0xE2CFFE66, 0x3D099681, -/**/ 0x805B1F33, 0xBF01FFD7, -/**/ 0xC0000000, 0x3F01FFEB, -/**/ 0xBE5C42ED, 0x3D0E5FCC, -/**/ 0xE06B2B01, 0xBF02FFD2, -/**/ 0x70000000, 0x3F02FFE9, -/**/ 0xD9D71DD1, 0x3D11DC8A, -/**/ 0x007CFEC8, 0xBF03FFCE, -/**/ 0x00000000, 0x3F03FFE7, -/**/ 0x45A374B3, 0x3D14D52E, -/**/ 0xE090B284, 0xBF04FFC8, -/**/ 0x70000000, 0x3F04FFE4, -/**/ 0x8553B4C7, 0x3D181DD0, -/**/ 0x80A65E36, 0xBF05FFC3, -/**/ 0xC0000000, 0x3F05FFE1, -/**/ 0x7A287BBE, 0x3D1BBA71, -/**/ 0xE0BE19DD, 0xBF06FFBD, -/**/ 0xF0000000, 0x3F06FFDE, -/**/ 0x03E27702, 0x3D1FAF11, -/**/ 0x00D7FD78, 0xBF07FFB8, -/**/ 0x00000000, 0x3F07FFDC, -/**/ 0x80613240, 0x3D21FFD7, -/**/ 0xE0F42105, 0xBF08FFB1, -/**/ 0xF0000000, 0x3F08FFD8, -/**/ 0xA6C489B3, 0x3D245825, -/**/ 0x81129C84, 0xBF09FFAB, -/**/ 0xC0000000, 0x3F09FFD5, -/**/ 0xE2BBB26F, 0x3D26E272, -/**/ 0xE13387F2, 0xBF0AFFA4, -/**/ 0x70000000, 0x3F0AFFD2, -/**/ 0x21272669, 0x3D29A0BF, -/**/ 0x0156FB50, 0xBF0BFF9E, -/**/ 0x00000000, 0x3F0BFFCF, -/**/ 0x4E276957, 0x3D2C950A, -/**/ 0xE17D0E9B, 0xBF0CFF96, -/**/ 0x70000000, 0x3F0CFFCB, -/**/ 0x551D090E, 0x3D2FC154, -/**/ 0x81A5D9D2, 0xBF0DFF8F, -/**/ 0xC0000000, 0x3F0DFFC7, -/**/ 0x90544EF1, 0x3D3193CE, -/**/ 0xE1D174F4, 0xBF0EFF87, -/**/ 0xF0000000, 0x3F0EFFC3, -/**/ 0x4D556583, 0x3D3364F2, -/**/ 0x01FFF800, 0xBF0FFF80, -/**/ 0x00000000, 0x3F0FFFC0, -/**/ 0x56221F78, 0x3D355515, -/**/ 0xF118BD7A, 0xBF107FBB, -/**/ 0xF8000000, 0x3F107FDD, -/**/ 0x9EEAD9D8, 0x3D376537, -/**/ 0xC1330AE7, 0xBF10FFB7, -/**/ 0xE0000000, 0x3F10FFDB, -/**/ 0x1B7FF7AE, 0x3D399659, -/**/ 0x714EF047, 0xBF117FB3, -/**/ 0xB8000000, 0x3F117FD9, -/**/ 0xBF51E233, 0x3D3BE979, -/**/ 0x016C7998, 0xBF11FFAF, -/**/ 0x80000000, 0x3F11FFD7, -/**/ 0x7D7108FF, 0x3D3E5F99, -/**/ 0x718BB2DA, 0xBF127FAA, -/**/ 0x39000000, 0x3F127FD5, -/**/ 0xB7721DC6, 0xBD3F0647, -/**/ 0xC1ACA80C, 0xBF12FFA5, -/**/ 0xE1000000, 0x3F12FFD2, -/**/ 0xED071532, 0xBD3C4729, -/**/ 0xF1CF652D, 0xBF137FA0, -/**/ 0x79000000, 0x3F137FD0, -/**/ 0x315D596D, 0xBD39620D, -/**/ 0x01F3F63C, 0xBF13FF9C, -/**/ 0x01000000, 0x3F13FFCE, -/**/ 0x92E45F81, 0xBD3655F1, -/**/ 0xF21A6739, 0xBF147F96, -/**/ 0x79000000, 0x3F147FCB, -/**/ 0x206B9526, 0xBD3321D7, -/**/ 0xC242C421, 0xBF14FF91, -/**/ 0xE1000000, 0x3F14FFC8, -/**/ 0xD244C12A, 0xBD2F897B, -/**/ 0x726D18F6, 0xBF157F8C, -/**/ 0x39000000, 0x3F157FC6, -/**/ 0xF93040AE, 0xBD287B4B, -/**/ 0x029971B4, 0xBF15FF87, -/**/ 0x81000000, 0x3F15FFC3, -/**/ 0xD578562C, 0xBD21171E, -/**/ 0x72C7DA5C, 0xBF167F81, -/**/ 0xB9000000, 0x3F167FC0, -/**/ 0x0F773DB4, 0xBD12B5E9, -/**/ 0xC2F85EEC, 0xBF16FF7B, -/**/ 0xE1000000, 0x3F16FFBD, -/**/ 0x158A76C2, 0xBCE44CD3, -/**/ 0xF32B0B63, 0xBF177F75, -/**/ 0xF9000000, 0x3F177FBA, -/**/ 0x2E48511B, 0x3D0CB55C, -/**/ 0x035FEBC0, 0xBF17FF70, -/**/ 0x01000000, 0x3F17FFB8, -/**/ 0x184C534F, 0x3D1FFAF0, -/**/ 0xF3970C03, 0xBF187F69, -/**/ 0xF9000000, 0x3F187FB4, -/**/ 0xACC53FBE, 0x3D292D95, -/**/ 0xC3D07829, 0xBF18FF63, -/**/ 0xE1000000, 0x3F18FFB1, -/**/ 0xE48887C8, 0x3D315FD7, -/**/ 0x740C3C32, 0xBF197F5D, -/**/ 0xB9000000, 0x3F197FAE, -/**/ 0x1DF5B242, 0x3D365AE3, -/**/ 0x044A641C, 0xBF19FF57, -/**/ 0x81000000, 0x3F19FFAB, -/**/ 0x6FBB0E5F, 0x3D3B88EC, -/**/ 0x748AFBE7, 0xBF1A7F50, -/**/ 0x3A000000, 0x3F1A7FA8, -/**/ 0x39766B40, 0xBD3F150C, -/**/ 0xC4CE0F91, 0xBF1AFF49, -/**/ 0xE2000000, 0x3F1AFFA4, -/**/ 0xF14DB839, 0xBD397E06, -/**/ 0xF513AB19, 0xBF1B7F42, -/**/ 0x7A000000, 0x3F1B7FA1, -/**/ 0xCBD9CC3D, 0xBD33B103, -/**/ 0x055BDA7D, 0xBF1BFF3C, -/**/ 0x02000000, 0x3F1BFF9E, -/**/ 0xBB1321B5, 0xBD2B5A05, -/**/ 0xF5A6A9BD, 0xBF1C7F34, -/**/ 0x7A000000, 0x3F1C7F9A, -/**/ 0xECAF9551, 0xBD1DC410, -/**/ 0xC5F424D6, 0xBF1CFF2D, -/**/ 0xE2000000, 0x3F1CFF96, -/**/ 0x3DF3CD68, 0xBCEF80FF, -/**/ 0x764457C8, 0xBF1D7F26, -/**/ 0x3A000000, 0x3F1D7F93, -/**/ 0x4271E737, 0x3D16CBC7, -/**/ 0x06974E91, 0xBF1DFF1F, -/**/ 0x82000000, 0x3F1DFF8F, -/**/ 0x1D134848, 0x3D2939D2, -/**/ 0x76ED1530, 0xBF1E7F17, -/**/ 0xBA000000, 0x3F1E7F8B, -/**/ 0xA9892C73, 0x3D33C2DD, -/**/ 0xC745B7A4, 0xBF1EFF0F, -/**/ 0xE2000000, 0x3F1EFF87, -/**/ 0x8AEC69D5, 0x3D3B25CF, -/**/ 0xF7A141EA, 0xBF1F7F07, -/**/ 0xFB000000, 0x3F1F7F83, -/**/ 0x645B412A, 0xBD3D3941, -/**/ 0x07FFC002, 0xBF1FFF00, -/**/ 0x03000000, 0x3F1FFF80, -/**/ 0x3BBC6662, 0xBD355955, -/**/ 0xFC309EF5, 0xBF203F7B, -/**/ 0xFD800000, 0x3F203FBD, -/**/ 0x260B17B3, 0xBD2A72D8, -/**/ 0xE462E3D0, 0xBF207F77, -/**/ 0xF1800000, 0x3F207FBB, -/**/ 0x0994AE68, 0xBD136218, -/**/ 0xBC96B492, 0xBF20BF73, -/**/ 0xDD800000, 0x3F20BFB9, -/**/ 0xECB2641F, 0x3D0E52E6, -/**/ 0x84CC1739, 0xBF20FF6F, -/**/ 0xC1800000, 0x3F20FFB7, -/**/ 0xE7FCF60B, 0x3D296078, -/**/ 0x3D0311C6, 0xBF213F6B, -/**/ 0x9D800000, 0x3F213FB5, -/**/ 0xA7850AFF, 0x3D35DA18, -/**/ 0xE53BAA36, 0xBF217F66, -/**/ 0x71800000, 0x3F217FB3, -/**/ 0x5E7BB444, 0x3D3F48F1, -/**/ 0x7D75E68A, 0xBF21BF62, -/**/ 0x3E000000, 0x3F21BFB1, -/**/ 0x812BC469, 0xBD370239, -/**/ 0x05B1CCC0, 0xBF21FF5E, -/**/ 0x02000000, 0x3F21FFAF, -/**/ 0x23BF1A4D, 0xBD2A0CD0, -/**/ 0x7DEF62D8, 0xBF223F59, -/**/ 0xBE000000, 0x3F223FAC, -/**/ 0x736E3623, 0xBD0614D3, -/**/ 0xE62EAED0, 0xBF227F54, -/**/ 0x72000000, 0x3F227FAA, -/**/ 0x37EDEDB0, 0x3D1F28BD, -/**/ 0x3E6FB6A9, 0xBF22BF50, -/**/ 0x1E000000, 0x3F22BFA8, -/**/ 0x07CE33C8, 0x3D32A0F5, -/**/ 0x86B28060, 0xBF22FF4B, -/**/ 0xC2000000, 0x3F22FFA5, -/**/ 0xA31C6A8D, 0x3D3DC2B6, -/**/ 0xBEF711F6, 0xBF233F46, -/**/ 0x5E800000, 0x3F233FA3, -/**/ 0xFC67C9FB, 0xBD36CF8B, -/**/ 0xE73D7169, 0xBF237F41, -/**/ 0xF2800000, 0x3F237FA0, -/**/ 0xE6D88A89, 0xBD2629A5, -/**/ 0xFF85A4B8, 0xBF23BF3C, -/**/ 0x7E800000, 0x3F23BF9E, -/**/ 0x202574EC, 0x3CEE7C34, -/**/ 0x07CFB1E3, 0xBF23FF38, -/**/ 0x02800000, 0x3F23FF9C, -/**/ 0x46E594C1, 0x3D2A9723, -/**/ 0x001B9EE8, 0xBF243F33, -/**/ 0x7E800000, 0x3F243F99, -/**/ 0xF61AE74C, 0x3D39F33C, -/**/ 0xE86971C7, 0xBF247F2D, -/**/ 0xF3000000, 0x3F247F96, -/**/ 0x85341E31, 0xBD39141C, -/**/ 0xC0B9307F, 0xBF24BF28, -/**/ 0x5F000000, 0x3F24BF94, -/**/ 0xDA0FAF09, 0xBD2792F5, -/**/ 0x890AE10E, 0xBF24FF23, -/**/ 0xC3000000, 0x3F24FF91, -/**/ 0xFB239430, 0x3CFD4219, -/**/ 0x415E8974, 0xBF253F1E, -/**/ 0x1F000000, 0x3F253F8F, -/**/ 0x0359434A, 0x3D2F8B72, -/**/ 0xE9B42FAF, 0xBF257F18, -/**/ 0x73000000, 0x3F257F8C, -/**/ 0x1939FEDF, 0x3D3E0C4B, -/**/ 0x820BD9BF, 0xBF25BF13, -/**/ 0xBF800000, 0x3F25BF89, -/**/ 0x39B301E2, 0xBD335728, -/**/ 0x0A658DA3, 0xBF25FF0E, -/**/ 0x03800000, 0x3F25FF87, -/**/ 0x5E1E8D4F, 0xBD118E84, -/**/ 0x82C15159, 0xBF263F08, -/**/ 0x3F800000, 0x3F263F84, -/**/ 0xBDDDD045, 0x3D25CFC0, -/**/ 0xEB1F2AE1, 0xBF267F02, -/**/ 0x73800000, 0x3F267F81, -/**/ 0x08837E99, 0x3D3A8C5C, -/**/ 0x437F203A, 0xBF26BEFD, -/**/ 0xA0000000, 0x3F26BF7E, -/**/ 0x3C56F12D, 0xBD35752E, -/**/ 0x8BE13762, 0xBF26FEF7, -/**/ 0xC4000000, 0x3F26FF7B, -/**/ 0x46359E28, 0xBD146EFA, -/**/ 0xC4457659, 0xBF273EF1, -/**/ 0xE0000000, 0x3F273F78, -/**/ 0xCD265865, 0x3D273355, -/**/ 0xECABE31C, 0xBF277EEB, -/**/ 0xF4000000, 0x3F277F75, -/**/ 0x095DEBF8, 0x3D3CAC0E, -/**/ 0x051483AC, 0xBF27BEE6, -/**/ 0x00800000, 0x3F27BF73, -/**/ 0x4C39F4DB, 0xBD31E395, -/**/ 0x0D7F5E08, 0xBF27FEE0, -/**/ 0x04800000, 0x3F27FF70, -/**/ 0xA1314B81, 0xBCB43F3D, -/**/ 0x05EC782D, 0xBF283EDA, -/**/ 0x00800000, 0x3F283F6D, -/**/ 0x115B8D70, 0x3D321B10, -/**/ 0xEE5BD81B, 0xBF287ED3, -/**/ 0xF5000000, 0x3F287F69, -/**/ 0x83704FE1, 0xBD3B54A7, -/**/ 0xC6CD83D1, 0xBF28BECD, -/**/ 0xE1000000, 0x3F28BF66, -/**/ 0x41229C91, 0xBD20C4CC, -/**/ 0x8F41814D, 0xBF28FEC7, -/**/ 0xC5000000, 0x3F28FF63, -/**/ 0x2A183F17, 0x3D25E5A8, -/**/ 0x47B7D68F, 0xBF293EC1, -/**/ 0xA1000000, 0x3F293F60, -/**/ 0xF81B997D, 0x3D3EAC06, -/**/ 0xF0308995, 0xBF297EBA, -/**/ 0x75800000, 0x3F297F5D, -/**/ 0x3A1E5BAD, 0xBD2A6B9B, -/**/ 0x88ABA05E, 0xBF29BEB4, -/**/ 0x41800000, 0x3F29BF5A, -/**/ 0xBDFE3C77, 0x3D1D3958, -/**/ 0x112920E9, 0xBF29FEAE, -/**/ 0x05800000, 0x3F29FF57, -/**/ 0x375BA904, 0x3D3C3972, -/**/ 0x89A91135, 0xBF2A3EA7, -/**/ 0xC2000000, 0x3F2A3F53, -/**/ 0x588DE85B, 0xBD2CE6F3, -/**/ 0xF22B7740, 0xBF2A7EA0, -/**/ 0x76000000, 0x3F2A7F50, -/**/ 0x75AEDBFD, 0x3D1D2249, -/**/ 0x4AB05909, 0xBF2ABE9A, -/**/ 0x22000000, 0x3F2ABF4D, -/**/ 0x2CE7BDAC, 0x3D3D6E96, -/**/ 0x9337BC90, 0xBF2AFE93, -/**/ 0xC6800000, 0x3F2AFF49, -/**/ 0xCB7D724C, 0xBD2800DC, -/**/ 0xCBC1A7D1, 0xBF2B3E8C, -/**/ 0x62800000, 0x3F2B3F46, -/**/ 0xFA591B29, 0x3D25F908, -/**/ 0xF44E20CE, 0xBF2B7E85, -/**/ 0xF7000000, 0x3F2B7F42, -/**/ 0x53021ED8, 0xBD3D9991, -/**/ 0x0CDD2D83, 0xBF2BBE7F, -/**/ 0x83000000, 0x3F2BBF3F, -/**/ 0xFD596AD6, 0xBD1706BF, -/**/ 0x156ED3F0, 0xBF2BFE78, -/**/ 0x07000000, 0x3F2BFF3C, -/**/ 0x4EC45253, 0x3D328528, -/**/ 0x0E031A14, 0xBF2C3E71, -/**/ 0x83800000, 0x3F2C3F38, -/**/ 0x927D8A9E, 0xBD34C408, -/**/ 0xF69A05ED, 0xBF2C7E69, -/**/ 0xF7800000, 0x3F2C7F34, -/**/ 0xCAE2C25F, 0x3D118EF4, -/**/ 0xCF339D7A, 0xBF2CBE62, -/**/ 0x63800000, 0x3F2CBF31, -/**/ 0x73DBBB41, 0x3D3DFD79, -/**/ 0x97CFE6B9, 0xBF2CFE5B, -/**/ 0xC8000000, 0x3F2CFF2D, -/**/ 0xE7FE77E6, 0xBD1FD74F, -/**/ 0x506EE7AA, 0xBF2D3E54, -/**/ 0x24000000, 0x3F2D3F2A, -/**/ 0xBDDB871F, 0x3D328AD4, -/**/ 0xF910A64A, 0xBF2D7E4C, -/**/ 0x78800000, 0x3F2D7F26, -/**/ 0x903DDD81, 0xBD327F8C, -/**/ 0x91B52899, 0xBF2DBE45, -/**/ 0xC4800000, 0x3F2DBF22, -/**/ 0xDF52840A, 0x3D21D80F, -/**/ 0x1A5C7495, 0xBF2DFE3E, -/**/ 0x09000000, 0x3F2DFF1F, -/**/ 0xEED9F651, 0xBD3B316D, -/**/ 0x9306903D, 0xBF2E3E36, -/**/ 0x45000000, 0x3F2E3F1B, -/**/ 0x76DB3C6B, 0x3CF2911A, -/**/ 0xFBB3818F, 0xBF2E7E2E, -/**/ 0x79000000, 0x3F2E7F17, -/**/ 0x85559113, 0x3D3DFC86, -/**/ 0x54634E89, 0xBF2EBE27, -/**/ 0xA5800000, 0x3F2EBF13, -/**/ 0x0AB3DBE7, 0xBD12D83E, -/**/ 0x9D15FD2B, 0xBF2EFE1F, -/**/ 0xC9800000, 0x3F2EFF0F, -/**/ 0x617B99F1, 0x3D39124F, -/**/ 0xD5CB9373, 0xBF2F3E17, -/**/ 0xE6000000, 0x3F2F3F0B, -/**/ 0xF8F64DA1, 0xBD2152B9, -/**/ 0xFE841760, 0xBF2F7E0F, -/**/ 0xFA000000, 0x3F2F7F07, -/**/ 0x34C4735B, 0x3D3617EB, -/**/ 0x173F8EEF, 0xBF2FBE08, -/**/ 0x06800000, 0x3F2FBF04, -/**/ 0x739FA712, 0xBD2551B0, -/**/ 0x1FFE0020, 0xBF2FFE00, -/**/ 0x0A800000, 0x3F2FFF00, -/**/ 0x885DE027, 0x3D351558, -/**/ 0x0C5FB879, 0xBF301EFC, -/**/ 0x03800000, 0x3F301F7E, -/**/ 0x68F8FC50, 0xBD255905, -/**/ 0x00C1F3B0, 0xBF303EF8, -/**/ 0xFD800000, 0x3F303F7B, -/**/ 0xDF771CF4, 0x3D361295, -/**/ 0xED25B4B7, 0xBF305EF3, -/**/ 0xF3C00000, 0x3F305F79, -/**/ 0xD8A255DB, 0xBD2158BB, -/**/ 0xD18AFE8B, 0xBF307EEF, -/**/ 0xE5C00000, 0x3F307F77, -/**/ 0xB740E625, 0x3D3917A1, -/**/ 0xADF1D42C, 0xBF309EEB, -/**/ 0xD4000000, 0x3F309F75, -/**/ 0x9C716D59, 0xBD1281AD, -/**/ 0x825A3899, 0xBF30BEE7, -/**/ 0xBE000000, 0x3F30BF73, -/**/ 0x86ED7DDC, 0x3D3E2C7A, -/**/ 0x4EC42ED1, 0xBF30DEE3, -/**/ 0xA4400000, 0x3F30DF71, -/**/ 0xF54F7E28, 0x3CF7F534, -/**/ 0x132FB9D5, 0xBF30FEDF, -/**/ 0x86800000, 0x3F30FF6F, -/**/ 0x404F4E01, 0xBD3AA6E1, -/**/ 0xCF9CDCA2, 0xBF311EDA, -/**/ 0x64800000, 0x3F311F6D, -/**/ 0x4A6EC981, 0x3D2375B9, -/**/ 0x840B9A38, 0xBF313ED6, -/**/ 0x3EC00000, 0x3F313F6B, -/**/ 0x33401DD0, 0xBD315A73, -/**/ 0x307BF596, 0xBF315ED2, -/**/ 0x14C00000, 0x3F315F69, -/**/ 0x02C11605, 0x3D341A2F, -/**/ 0xD4EDF1BC, 0xBF317ECD, -/**/ 0xE7000000, 0x3F317F66, -/**/ 0xB2B7E8C5, 0xBD1798F3, -/**/ 0x716191A8, 0xBF319EC9, -/**/ 0xB5400000, 0x3F319F64, -/**/ 0x35D62ED5, 0xBD3F5AB7, -/**/ 0x05D6D85A, 0xBF31BEC5, -/**/ 0x7F400000, 0x3F31BF62, -/**/ 0xCA7EC7CD, 0x3D1EF6FF, -/**/ 0x924DC8D2, 0xBF31DEC0, -/**/ 0x45800000, 0x3F31DF60, -/**/ 0xA8550396, 0xBD309BD7, -/**/ 0x16C6660D, 0xBF31FEBC, -/**/ 0x07800000, 0x3F31FF5E, -/**/ 0xC3E31F70, 0x3D379981, -/**/ 0x9340B30B, 0xBF321EB7, -/**/ 0xC5C00000, 0x3F321F5B, -/**/ 0x5FE92B94, 0x3CD7B300, -/**/ 0x07BCB2CC, 0xBF323EB3, -/**/ 0x80000000, 0x3F323F59, -/**/ 0x25A7CF34, 0xBD364AF9, -/**/ 0x743A684F, 0xBF325EAE, -/**/ 0x36000000, 0x3F325F57, -/**/ 0x17E48399, 0x3D339D32, -/**/ 0xD8B9D692, 0xBF327EA9, -/**/ 0xE8400000, 0x3F327F54, -/**/ 0xCC387BD1, 0xBCFE7B27, -/**/ 0x353B0095, 0xBF329EA5, -/**/ 0x96800000, 0x3F329F52, -/**/ 0x1AE7FA80, 0xBD36D8A7, -/**/ 0x89BDE957, 0xBF32BEA0, -/**/ 0x40800000, 0x3F32BF50, -/**/ 0x05CF3DC3, 0x3D34CB54, -/**/ 0xD64293D7, 0xBF32DE9B, -/**/ 0xE6C00000, 0x3F32DF4D, -/**/ 0xD5A4F691, 0x3CF053EA, -/**/ 0x1AC90315, 0xBF32FE97, -/**/ 0x89000000, 0x3F32FF4B, -/**/ 0x5CAE7B16, 0xBD3229E7, -/**/ 0x57513A0F, 0xBF331E92, -/**/ 0x27000000, 0x3F331F49, -/**/ 0xAEED4509, 0x3D3B3EE1, -/**/ 0x8BDB3BC4, 0xBF333E8D, -/**/ 0xC1400000, 0x3F333F46, -/**/ 0x2E0C2605, 0x3D228133, -/**/ 0xB8670B34, 0xBF335E88, -/**/ 0x57800000, 0x3F335F44, -/**/ 0xBBD6E280, 0xBD20477F, -/**/ 0xDCF4AB5D, 0xBF337E83, -/**/ 0xE9C00000, 0x3F337F41, -/**/ 0xE9CE8AFC, 0xBD38ED2A, -/**/ 0xF9841F3F, 0xBF339E7E, -/**/ 0x77C00000, 0x3F339F3F, -/**/ 0x39159F9B, 0x3D36E558, -/**/ 0x0E1569D9, 0xBF33BE7A, -/**/ 0x02000000, 0x3F33BF3D, -/**/ 0x40681634, 0x3D1D5325, -/**/ 0x1AA88E2A, 0xBF33DE75, -/**/ 0x88400000, 0x3F33DF3A, -/**/ 0x7F2112CE, 0xBD1E775F, -/**/ 0x1F3D8F31, 0xBF33FE70, -/**/ 0x0A800000, 0x3F33FF38, -/**/ 0x91F80D1B, 0xBD35F18B, -/**/ 0x1BD46FED, 0xBF341E6B, -/**/ 0x88800000, 0x3F341F35, -/**/ 0xFDC3FC2F, 0x3D3C5AAD, -/**/ 0x106D335D, 0xBF343E66, -/**/ 0x02C00000, 0x3F343F33, -/**/ 0x268A89F1, 0x3D2E8FA9, -/**/ 0xFD07DC80, 0xBF345E60, -/**/ 0x79000000, 0x3F345F30, -/**/ 0x902AC9EE, 0x3D06B73F, -/**/ 0xE1A46E55, 0xBF347E5B, -/**/ 0xEB400000, 0x3F347F2D, -/**/ 0x45C43959, 0xBD21EE30, -/**/ 0xBE42EBDC, 0xBF349E56, -/**/ 0x59800000, 0x3F349F2B, -/**/ 0xE8B753E8, 0xBD34212B, -/**/ 0x92E35813, 0xBF34BE51, -/**/ 0xC3C00000, 0x3F34BF28, -/**/ 0x9D2064DB, 0xBD3EA653, -/**/ 0x5F85B5F9, 0xBF34DE4C, -/**/ 0x29C00000, 0x3F34DF26, -/**/ 0x81DCB6FB, 0x3D377A70, -/**/ 0x242A088D, 0xBF34FE47, -/**/ 0x8C000000, 0x3F34FF23, -/**/ 0x6BB44A6D, 0x3D2C8440, -/**/ 0xE0D052CF, 0xBF351E41, -/**/ 0xEA400000, 0x3F351F20, -/**/ 0x0048AAF8, 0x3D16C6ED, -/**/ 0x957897BD, 0xBF353E3C, -/**/ 0x44800000, 0x3F353F1E, -/**/ 0xF506A07E, 0xBD01ADF4, -/**/ 0x4222DA57, 0xBF355E37, -/**/ 0x9AC00000, 0x3F355F1B, -/**/ 0x4B88A655, 0xBD22E69B, -/**/ 0xE6CF1D9B, 0xBF357E31, -/**/ 0xED000000, 0x3F357F18, -/**/ 0x153DAEB0, 0xBD3005F2, -/**/ 0x837D6488, 0xBF359E2C, -/**/ 0x3B400000, 0x3F359F16, -/**/ 0x2D5222B4, 0xBD35ECAC, -/**/ 0x182DB21E, 0xBF35BE27, -/**/ 0x85800000, 0x3F35BF13, -/**/ 0x2EA6CB14, 0xBD3B267C, -/**/ 0xA4E0095B, 0xBF35DE21, -/**/ 0xCBC00000, 0x3F35DF10, -/**/ 0x5A40A340, 0xBD3FB262, -/**/ 0x29946D3F, 0xBF35FE1C, -/**/ 0x0DC00000, 0x3F35FF0E, -/**/ 0x0E7B79ED, 0x3D3C70A1, -/**/ 0xA64AE0C7, 0xBF361E16, -/**/ 0x4C000000, 0x3F361F0B, -/**/ 0xC9C8D263, 0x3D39438D, -/**/ 0x1B0366F4, 0xBF363E11, -/**/ 0x86400000, 0x3F363F08, -/**/ 0x9582CD0C, 0x3D36C763, -/**/ 0x87BE02C5, 0xBF365E0B, -/**/ 0xBC800000, 0x3F365F05, -/**/ 0x2F24F1F9, 0x3D34FD22, -/**/ 0xEC7AB737, 0xBF367E05, -/**/ 0xEEC00000, 0x3F367F02, -/**/ 0x53CAEA94, 0x3D33E5C9, -/**/ 0x4939874A, 0xBF369E00, -/**/ 0x1D000000, 0x3F369F00, -/**/ 0xC03081D0, 0x3D338258, -/**/ 0x9DFA75FE, 0xBF36BDFA, -/**/ 0x47400000, 0x3F36BEFD, -/**/ 0x30B1A458, 0x3D33D3D0, -/**/ 0xEABD8651, 0xBF36DDF4, -/**/ 0x6D800000, 0x3F36DEFA, -/**/ 0x614A60C1, 0x3D34DB2F, -/**/ 0x2F82BB41, 0xBF36FDEF, -/**/ 0x8FC00000, 0x3F36FEF7, -/**/ 0x0D96E7B8, 0x3D369976, -/**/ 0x6C4A17CF, 0xBF371DE9, -/**/ 0xAE000000, 0x3F371EF4, -/**/ 0xF0D38C30, 0x3D390FA3, -/**/ 0xA1139EF8, 0xBF373DE3, -/**/ 0xC8400000, 0x3F373EF1, -/**/ 0xC5DCC397, 0x3D3C3EB8, -/**/ 0xCDDF53BC, 0xBF375DDD, -/**/ 0xDEC00000, 0x3F375EEE, -/**/ 0xB8D0D9FD, 0xBD3FD84B, -/**/ 0xF2AD3919, 0xBF377DD7, -/**/ 0xF1000000, 0x3F377EEB, -/**/ 0xD11891A0, 0xBD3B3469, -/**/ 0x0F7D520F, 0xBF379DD2, -/**/ 0xFF400000, 0x3F379EE8, -/**/ 0xC93D855B, 0xBD35D4A1, -/**/ 0x244FA19D, 0xBF37BDCC, -/**/ 0x09800000, 0x3F37BEE6, -/**/ 0xCFC56806, 0xBD2F6FE7, -/**/ 0x31242AC1, 0xBF37DDC6, -/**/ 0x0FC00000, 0x3F37DEE3, -/**/ 0xE815F202, 0xBD21BAC0, -/**/ 0x35FAF079, 0xBF37FDC0, -/**/ 0x12000000, 0x3F37FEE0, -/**/ 0x5190C28B, 0xBCF43E7B, -/**/ 0x32D3F5C6, 0xBF381DBA, -/**/ 0x10400000, 0x3F381EDD, -/**/ 0x34C1F9E9, 0x3D1C55D8, -/**/ 0x27AF3DA6, 0xBF383DB4, -/**/ 0x0A800000, 0x3F383EDA, -/**/ 0x8AAF36D4, 0x3D302FB8, -/**/ 0x148CCB18, 0xBF385DAE, -/**/ 0x00C00000, 0x3F385ED7, -/**/ 0x7AE0D0F8, 0x3D3A0BDF, -/**/ 0xF96CA11B, 0xBF387DA7, -/**/ 0xF3400000, 0x3F387ED3, -/**/ 0x6B1CDAAF, 0xBD3B5515, -/**/ 0xD64EC2AD, 0xBF389DA1, -/**/ 0xE1800000, 0x3F389ED0, -/**/ 0xE1179E5E, 0xBD2FE44C, -/**/ 0xAB3332CD, 0xBF38BD9B, -/**/ 0xCBC00000, 0x3F38BECD, -/**/ 0xF86F56EC, 0xBD0E529E, -/**/ 0x7819F47A, 0xBF38DD95, -/**/ 0xB2000000, 0x3F38DECA, -/**/ 0xFEB631AB, 0x3D2246C3, -/**/ 0x3D030AB4, 0xBF38FD8F, -/**/ 0x94400000, 0x3F38FEC7, -/**/ 0xE04DA791, 0x3D36D7FA, -/**/ 0xF9EE7878, 0xBF391D88, -/**/ 0x72C00000, 0x3F391EC4, -/**/ 0x86F7ADBB, 0xBD3AAB89, -/**/ 0xAEDC40C7, 0xBF393D82, -/**/ 0x4D000000, 0x3F393EC1, -/**/ 0x032C6155, 0xBD26CC57, -/**/ 0x5BCC669D, 0xBF395D7C, -/**/ 0x23400000, 0x3F395EBE, -/**/ 0x93C3EB3D, 0x3D12A452, -/**/ 0x00BEECFB, 0xBF397D76, -/**/ 0xF5800000, 0x3F397EBA, -/**/ 0xA0BCD695, 0x3D358336, -/**/ 0x9DB3D6E0, 0xBF399D6F, -/**/ 0xC4000000, 0x3F399EB7, -/**/ 0xDA737570, 0xBD38D6C5, -/**/ 0x32AB2749, 0xBF39BD69, -/**/ 0x8E400000, 0x3F39BEB4, -/**/ 0x65026C7D, 0xBD198F84, -/**/ 0xBFA4E136, 0xBF39DD62, -/**/ 0x54800000, 0x3F39DEB1, -/**/ 0x2EA9B41A, 0x3D29B9C9, -/**/ 0x44A107A5, 0xBF39FD5C, -/**/ 0x17000000, 0x3F39FEAE, -/**/ 0x16137ACF, 0xBD3F1375, -/**/ 0xC19F9D96, 0xBF3A1D55, -/**/ 0xD5400000, 0x3F3A1EAA, -/**/ 0xDE73AFA0, 0xBD2467DC, -/**/ 0x36A0A607, 0xBF3A3D4F, -/**/ 0x8F800000, 0x3F3A3EA7, -/**/ 0x7B8357C6, 0x3D26F8F0, -/**/ 0xA3A423F7, 0xBF3A5D48, -/**/ 0x46000000, 0x3F3A5EA4, -/**/ 0x5DA0DFB7, 0xBD3E0141, -/**/ 0x08AA1A64, 0xBF3A7D42, -/**/ 0xF8400000, 0x3F3A7EA0, -/**/ 0x41050D29, 0xBD1AB06E, -/**/ 0x65B28C4E, 0xBF3A9D3B, -/**/ 0xA6800000, 0x3F3A9E9D, -/**/ 0x56A0E005, 0x3D317CE9, -/**/ 0xBABD7CB3, 0xBF3ABD34, -/**/ 0x51000000, 0x3F3ABE9A, -/**/ 0xF899EF39, 0xBD358532, -/**/ 0x07CAEE92, 0xBF3ADD2E, -/**/ 0xF7400000, 0x3F3ADE96, -/**/ 0xC83BF5C2, 0x3D113A3C, -/**/ 0x4CDAE4EA, 0xBF3AFD27, -/**/ 0x99800000, 0x3F3AFE93, -/**/ 0x863C7C8E, 0x3D3EF92F, -/**/ 0x89ED62B9, 0xBF3B1D20, -/**/ 0x38000000, 0x3F3B1E90, -/**/ 0x3341CC3C, 0xBD161149, -/**/ 0xBF026AFE, 0xBF3B3D19, -/**/ 0xD2400000, 0x3F3B3E8C, -/**/ 0x67C955DF, 0x3D36D709, -/**/ 0xEC1A00B8, 0xBF3B5D12, -/**/ 0x68C00000, 0x3F3B5E89, -/**/ 0x5AE9B17A, 0xBD27E77B, -/**/ 0x113426E6, 0xBF3B7D0C, -/**/ 0xFB000000, 0x3F3B7E85, -/**/ 0x219679DE, 0x3D321C58, -/**/ 0x2E50E086, 0xBF3B9D05, -/**/ 0x89800000, 0x3F3B9E82, -/**/ 0xFAA62113, 0xBD2DEF6A, -/**/ 0x43703097, 0xBF3BBCFE, -/**/ 0x13C00000, 0x3F3BBE7F, -/**/ 0x23305306, 0x3D30D119, -/**/ 0x50921A17, 0xBF3BDCF7, -/**/ 0x9A400000, 0x3F3BDE7B, -/**/ 0x9FBACE27, 0xBD2D1078, -/**/ 0x55B6A006, 0xBF3BFCF0, -/**/ 0x1C800000, 0x3F3BFE78, -/**/ 0xD625DF1E, 0x3D32FD49, -/**/ 0x52DDC563, 0xBF3C1CE9, -/**/ 0x9B000000, 0x3F3C1E74, -/**/ 0x7D07255B, 0xBD253AA9, -/**/ 0x48078D2B, 0xBF3C3CE2, -/**/ 0x15400000, 0x3F3C3E71, -/**/ 0x9E08B538, 0x3D38A8E7, -/**/ 0x3533FA5D, 0xBF3C5CDB, -/**/ 0x8BC00000, 0x3F3C5E6D, -/**/ 0x45956AFC, 0xBD09780B, -/**/ 0x1A630FF9, 0xBF3C7CD4, -/**/ 0xFE400000, 0x3F3C7E69, -/**/ 0x2792F44E, 0xBD3E2410, -/**/ 0xF794D0FC, 0xBF3C9CCC, -/**/ 0x6C800000, 0x3F3C9E66, -/**/ 0x30AB4456, 0x3D1F2AEC, -/**/ 0xCCC94066, 0xBF3CBCC5, -/**/ 0xD7000000, 0x3F3CBE62, -/**/ 0x231641D5, 0xBD3161A0, -/**/ 0x9A006135, 0xBF3CDCBE, -/**/ 0x3D400000, 0x3F3CDE5F, -/**/ 0xF4AD1934, 0x3D3657DD, -/**/ 0x5F3A3668, 0xBF3CFCB7, -/**/ 0x9FC00000, 0x3F3CFE5B, -/**/ 0x2E7AC798, 0xBCF07CB0, -/**/ 0x1C76C2FD, 0xBF3D1CB0, -/**/ 0xFE400000, 0x3F3D1E57, -/**/ 0x6090F643, 0xBD377F9B, -/**/ 0xD1B609F3, 0xBF3D3CA8, -/**/ 0x58800000, 0x3F3D3E54, -/**/ 0x849503E6, 0x3D32F16C, -/**/ 0x7EF80E49, 0xBF3D5CA1, -/**/ 0xAF000000, 0x3F3D5E50, -/**/ 0xAF1CA4EA, 0xBCFB3B3A, -/**/ 0x243CD2FE, 0xBF3D7C9A, -/**/ 0x01800000, 0x3F3D7E4D, -/**/ 0x4701415B, 0xBD356DFC, -/**/ 0xC1845B0F, 0xBF3D9C92, -/**/ 0x4FC00000, 0x3F3D9E49, -/**/ 0x582AEA48, 0x3D37C392, -/**/ 0x56CEA97C, 0xBF3DBC8B, -/**/ 0x9A400000, 0x3F3DBE45, -/**/ 0x67DCC15E, 0x3D1787DF, -/**/ 0xE41BC143, 0xBF3DDC83, -/**/ 0xE0C00000, 0x3F3DDE41, -/**/ 0x352F961F, 0xBD262398, -/**/ 0x696BA563, 0xBF3DFC7C, -/**/ 0x23400000, 0x3F3DFE3E, -/**/ 0xDEDD373A, 0xBD3B16B9, -/**/ 0xE6BE58DA, 0xBF3E1C74, -/**/ 0x61800000, 0x3F3E1E3A, -/**/ 0x336BE94B, 0x3D35D42E, -/**/ 0x5C13DEA7, 0xBF3E3C6D, -/**/ 0x9C000000, 0x3F3E3E36, -/**/ 0x08A303A2, 0x3D1EBFAF, -/**/ 0xC96C39C9, 0xBF3E5C65, -/**/ 0xD2800000, 0x3F3E5E32, -/**/ 0x34856362, 0xBD160A06, -/**/ 0x2EC76D3D, 0xBF3E7C5E, -/**/ 0x05000000, 0x3F3E7E2F, -/**/ 0x154CDF1A, 0xBD31C21A, -/**/ 0x8C257C04, 0xBF3E9C56, -/**/ 0x33800000, 0x3F3E9E2B, -/**/ 0x31941F7F, 0xBD3D0DDE, -/**/ 0xE186691B, 0xBF3EBC4E, -/**/ 0x5DC00000, 0x3F3EBE27, -/**/ 0xC26EC60D, 0x3D389B31, -/**/ 0x2EEA3781, 0xBF3EDC47, -/**/ 0x84400000, 0x3F3EDE23, -/**/ 0xD583BEF8, 0x3D2E742A, -/**/ 0x7450EA34, 0xBF3EFC3F, -/**/ 0xA6C00000, 0x3F3EFE1F, -/**/ 0xAC2DA351, 0x3D1B3F31, -/**/ 0xB1BA8433, 0xBF3F1C37, -/**/ 0xC5400000, 0x3F3F1E1B, -/**/ 0x2DC67430, 0xBCE45533, -/**/ 0xE727087C, 0xBF3F3C2F, -/**/ 0xDFC00000, 0x3F3F3E17, -/**/ 0xFF1174AE, 0xBD1C7133, -/**/ 0x14967A0F, 0xBF3F5C28, -/**/ 0xF6400000, 0x3F3F5E13, -/**/ 0x4AE098DC, 0xBD29383C, -/**/ 0x3A08DBE9, 0xBF3F7C20, -/**/ 0x08C00000, 0x3F3F7E10, -/**/ 0x684B0B3B, 0xBD31211D, -/**/ 0x577E3109, 0xBF3F9C18, -/**/ 0x17400000, 0x3F3F9E0C, -/**/ 0x268D7464, 0xBD34AA4B, -/**/ 0x6CF67C6E, 0xBF3FBC10, -/**/ 0x21C00000, 0x3F3FBE08, -/**/ 0xBED03388, 0xBD3736A7, -/**/ 0x7A71C116, 0xBF3FDC08, -/**/ 0x28400000, 0x3F3FDE04, -/**/ 0x900BC4E5, 0xBD38C533, -/**/ 0x7FF00200, 0xBF3FFC00, -/**/ 0x2AC00000, 0x3F3FFE00, -/**/ 0xF9987527, 0xBD3954EE, -/**/ 0x3EB8A115, 0xBF400DFC, -/**/ 0x14A00000, 0x3F400EFE, -/**/ 0x5B2E613B, 0xBD38E4DA, -/**/ 0x397AC249, 0xBF401DF8, -/**/ 0x11E00000, 0x3F401EFC, -/**/ 0x14E5761B, 0xBD3773F6, -/**/ 0x303E661C, 0xBF402DF4, -/**/ 0x0D200000, 0x3F402EFA, -/**/ 0x873570A0, 0xBD350142, -/**/ 0x23038E0C, 0xBF403DF0, -/**/ 0x06600000, 0x3F403EF8, -/**/ 0x12F5DD53, 0xBD318BC0, -/**/ 0x11CA3B9A, 0xBF404DEC, -/**/ 0xFDA00000, 0x3F404EF5, -/**/ 0x32BC307C, 0xBD2A24DE, -/**/ 0xFC927044, 0xBF405DE7, -/**/ 0xF2E00000, 0x3F405EF3, -/**/ 0xF01532DA, 0xBD1E513F, -/**/ 0xE35C2D8A, 0xBF406DE3, -/**/ 0xE6200000, 0x3F406EF1, -/**/ 0xCE27534E, 0xBCF10631, -/**/ 0xC62774EA, 0xBF407DDF, -/**/ 0xD7600000, 0x3F407EEF, -/**/ 0x86CE9380, 0x3D19E95C, -/**/ 0xA4F447E4, 0xBF408DDB, -/**/ 0xC6A00000, 0x3F408EED, -/**/ 0xBA0CD2C3, 0x3D2E19BC, -/**/ 0x7FC2A7F8, 0xBF409DD7, -/**/ 0xB3E00000, 0x3F409EEB, -/**/ 0x31FF7199, 0x3D38A832, -/**/ 0x569296A4, 0xBF40ADD3, -/**/ 0x9F400000, 0x3F40AEE9, -/**/ 0xC2D77791, 0xBD3CB2AD, -/**/ 0x29641567, 0xBF40BDCF, -/**/ 0x88800000, 0x3F40BEE7, -/**/ 0xE5545563, 0xBD3102C1, -/**/ 0xF83725C2, 0xBF40CDCA, -/**/ 0x6FC00000, 0x3F40CEE5, -/**/ 0x66B3E48D, 0xBD111C2A, -/**/ 0xC30BC932, 0xBF40DDC6, -/**/ 0x55000000, 0x3F40DEE3, -/**/ 0x7711FC2A, 0x3D2302EF, -/**/ 0x89E20138, 0xBF40EDC2, -/**/ 0x38400000, 0x3F40EEE1, -/**/ 0xB558238E, 0x3D3857C4, -/**/ 0x4CB9CF52, 0xBF40FDBE, -/**/ 0x19A00000, 0x3F40FEDF, -/**/ 0x1194C2E1, 0xBD37C324, -/**/ 0x0B933501, 0xBF410DBA, -/**/ 0xF8E00000, 0x3F410EDC, -/**/ 0xFBCAF285, 0xBD1B390B, -/**/ 0xC66E33C2, 0xBF411DB5, -/**/ 0xD6200000, 0x3F411EDA, -/**/ 0x0E52C3A4, 0x3D266ECF, -/**/ 0x7D4ACD15, 0xBF412DB1, -/**/ 0xB1600000, 0x3F412ED8, -/**/ 0x1A4AF71D, 0x3D3E4EDB, -/**/ 0x30290279, 0xBF413DAD, -/**/ 0x8AC00000, 0x3F413ED6, -/**/ 0x58C4D599, 0xBD2B0DD1, -/**/ 0xDF08D56E, 0xBF414DA8, -/**/ 0x62000000, 0x3F414ED4, -/**/ 0x2FB4061D, 0x3D1EDC6F, -/**/ 0x89EA4773, 0xBF415DA4, -/**/ 0x37400000, 0x3F415ED2, -/**/ 0x1BA53538, 0x3D3E09E8, -/**/ 0x30CD5A06, 0xBF416DA0, -/**/ 0x0AA00000, 0x3F416ED0, -/**/ 0x4A5B4574, 0xBD251B08, -/**/ 0xD3B20EA8, 0xBF417D9B, -/**/ 0xDBE00000, 0x3F417ECD, -/**/ 0x4241B57B, 0x3D2BE3AD, -/**/ 0x729866D7, 0xBF418D97, -/**/ 0xAB400000, 0x3F418ECB, -/**/ 0xFA22BD16, 0xBD387707, -/**/ 0x0D806412, 0xBF419D93, -/**/ 0x78800000, 0x3F419EC9, -/**/ 0xFFA2FC2F, 0x3D01C6FC, -/**/ 0xA46A07D9, 0xBF41AD8E, -/**/ 0x43C00000, 0x3F41AEC7, -/**/ 0x05F32EE8, 0x3D3E028D, -/**/ 0x375553AB, 0xBF41BD8A, -/**/ 0x0D200000, 0x3F41BEC5, -/**/ 0xC7E46F2B, 0xBD146400, -/**/ 0xC6424907, 0xBF41CD85, -/**/ 0xD4600000, 0x3F41CEC2, -/**/ 0x8DFCE791, 0x3D38E737, -/**/ 0x5130E96B, 0xBF41DD81, -/**/ 0x99C00000, 0x3F41DEC0, -/**/ 0x92F4A6CE, 0xBD1FEF30, -/**/ 0xD8213659, 0xBF41ED7C, -/**/ 0x5D000000, 0x3F41EEBE, -/**/ 0x4AE68315, 0x3D383EF4, -/**/ 0x5B13314D, 0xBF41FD78, -/**/ 0x1E600000, 0x3F41FEBC, -/**/ 0x39A8276A, 0xBD199E1E, -/**/ 0xDA06DBC8, 0xBF420D73, -/**/ 0xDDA00000, 0x3F420EB9, -/**/ 0xE39F6D77, 0x3D3C11BF, -/**/ 0x54FC3749, 0xBF421D6F, -/**/ 0x9B000000, 0x3F421EB7, -/**/ 0xC3A8C440, 0xBCD50D72, -/**/ 0xCBF3454F, 0xBF422D6A, -/**/ 0x56600000, 0x3F422EB5, -/**/ 0x06E59170, 0xBD3B9869, -/**/ 0x3EEC0759, 0xBF423D66, -/**/ 0x0FA00000, 0x3F423EB3, -/**/ 0x86930551, 0x3D248C4B, -/**/ 0xADE67EE6, 0xBF424D61, -/**/ 0xC7000000, 0x3F424EB0, -/**/ 0xB3649FF7, 0xBD2D6F13, -/**/ 0x18E2AD76, 0xBF425D5D, -/**/ 0x7C400000, 0x3F425EAE, -/**/ 0xB496441D, 0x3D396F87, -/**/ 0x7FE09487, 0xBF426D58, -/**/ 0x2FA00000, 0x3F426EAC, -/**/ 0x01961A2F, 0x3D05E2D0, -/**/ 0xE2E03598, 0xBF427D53, -/**/ 0xE1000000, 0x3F427EA9, -/**/ 0x652D1720, 0xBD32D013, -/**/ 0x41E1922A, 0xBF428D4F, -/**/ 0x90400000, 0x3F428EA7, -/**/ 0x15C6A78A, 0x3D38CB3F, -/**/ 0x9CE4ABBA, 0xBF429D4A, -/**/ 0x3DA00000, 0x3F429EA5, -/**/ 0x07F8A52A, 0x3D163D44, -/**/ 0xF3E983C8, 0xBF42AD45, -/**/ 0xE9000000, 0x3F42AEA2, -/**/ 0x1FEC6070, 0xBD2905BC, -/**/ 0x46F01BD4, 0xBF42BD41, -/**/ 0x92600000, 0x3F42BEA0, -/**/ 0x8FE5CB8E, 0xBD3D6A4E, -/**/ 0x95F8755C, 0xBF42CD3C, -/**/ 0x39A00000, 0x3F42CE9E, -/**/ 0x120028B6, 0x3D32D9FF, -/**/ 0xE10291DF, 0xBF42DD37, -/**/ 0xDF000000, 0x3F42DE9B, -/**/ 0x94B2D8A6, 0x3D112C29, -/**/ 0x280E72DD, 0xBF42ED33, -/**/ 0x82600000, 0x3F42EE99, -/**/ 0x0E9DC27F, 0xBD222C5A, -/**/ 0x6B1C19D4, 0xBF42FD2E, -/**/ 0x23C00000, 0x3F42FE97, -/**/ 0xA4C12307, 0xBD3548A7, -/**/ 0xAA2B8844, 0xBF430D29, -/**/ 0xC3000000, 0x3F430E94, -/**/ 0x1B27A40C, 0x3D3FB49A, -/**/ 0xE53CBFAC, 0xBF431D24, -/**/ 0x60600000, 0x3F431E92, -/**/ 0xC65D601D, 0x3D35E297, -/**/ 0x1C4FC18B, 0xBF432D20, -/**/ 0xFBC00000, 0x3F432E8F, -/**/ 0xD4E46CD5, 0x3D2A84A1, -/**/ 0x4F648F60, 0xBF433D1B, -/**/ 0x95200000, 0x3F433E8D, -/**/ 0x526215F8, 0x3D175314, -/**/ 0x7E7B2AAB, 0xBF434D16, -/**/ 0x2C800000, 0x3F434E8B, -/**/ 0x9746A94C, 0xBCD9430B, -/**/ 0xA99394E9, 0xBF435D11, -/**/ 0xC1E00000, 0x3F435E88, -/**/ 0x47EF6144, 0xBD15A88D, -/**/ 0xD0ADCF9B, 0xBF436D0C, -/**/ 0x55400000, 0x3F436E86, -/**/ 0x94614FFB, 0xBD227301, -/**/ 0xF3C9DC3F, 0xBF437D07, -/**/ 0xE6A00000, 0x3F437E83, -/**/ 0x16908831, 0xBD27A44A, -/**/ 0x12E7BC55, 0xBF438D03, -/**/ 0x76000000, 0x3F438E81, -/**/ 0x13DE59AC, 0xBD2A6621, -/**/ 0x2E07715C, 0xBF439CFE, -/**/ 0x03600000, 0x3F439E7F, -/**/ 0x76635000, 0xBD2AB687, -/**/ 0x4528FCD2, 0xBF43ACF9, -/**/ 0x8EC00000, 0x3F43AE7C, -/**/ 0x28F7818F, 0xBD28937E, -/**/ 0x584C6037, 0xBF43BCF4, -/**/ 0x18200000, 0x3F43BE7A, -/**/ 0x17328F27, 0xBD23FB06, -/**/ 0x67719D0A, 0xBF43CCEF, -/**/ 0x9F800000, 0x3F43CE77, -/**/ 0x5AD74747, 0xBD19D640, -/**/ 0x7298B4CA, 0xBF43DCEA, -/**/ 0x24E00000, 0x3F43DE75, -/**/ 0xC5CB9C74, 0xBCFB0E6A, -/**/ 0x79C1A8F6, 0xBF43ECE5, -/**/ 0xA8400000, 0x3F43EE72, -/**/ 0xF21B8682, 0x3D1145E2, -/**/ 0x7CEC7B0D, 0xBF43FCE0, -/**/ 0x29A00000, 0x3F43FE70, -/**/ 0x59543A06, 0x3D27251B, -/**/ 0x7C192C8E, 0xBF440CDB, -/**/ 0xA9000000, 0x3F440E6D, -/**/ 0xAC6250B6, 0x3D341357, -/**/ 0x7747BEF8, 0xBF441CD6, -/**/ 0x26600000, 0x3F441E6B, -/**/ 0x43A510F7, 0x3D3DD4D6, -/**/ 0x6E7833CB, 0xBF442CD1, -/**/ 0xA1E00000, 0x3F442E68, -/**/ 0x05F7D1E1, 0xBD3727F7, -/**/ 0x61AA8C85, 0xBF443CCC, -/**/ 0x1B400000, 0x3F443E66, -/**/ 0x527C9668, 0xBD25C421, -/**/ 0x50DECAA5, 0xBF444CC7, -/**/ 0x92A00000, 0x3F444E63, -/**/ 0x053F70AC, 0x3D053C47, -/**/ 0x3C14EFAB, 0xBF445CC2, -/**/ 0x08000000, 0x3F445E61, -/**/ 0x1E315FBB, 0x3D3175D5, -/**/ 0x234CFD15, 0xBF446CBD, -/**/ 0x7B800000, 0x3F446E5E, -/**/ 0x6A8B33AC, 0xBD3E762C, -/**/ 0x0686F463, 0xBF447CB8, -/**/ 0xECE00000, 0x3F447E5B, -/**/ 0x67AD9900, 0xBD2A36F8, -/**/ 0xE5C2D713, 0xBF448CB2, -/**/ 0x5C400000, 0x3F448E59, -/**/ 0x1E974853, 0x3D161B95, -/**/ 0xC100A6A5, 0xBF449CAD, -/**/ 0xC9A00000, 0x3F449E56, -/**/ 0x8CE22250, 0x3D3971F7, -/**/ 0x98406498, 0xBF44ACA8, -/**/ 0x35200000, 0x3F44AE54, -/**/ 0xDF8A23F8, 0xBD315945, -/**/ 0x6B82126A, 0xBF44BCA3, -/**/ 0x9E800000, 0x3F44BE51, -/**/ 0x1A63D360, 0x3D1498B2, -/**/ 0x3AC5B19B, 0xBF44CC9E, -/**/ 0x05E00000, 0x3F44CE4F, -/**/ 0x4323A054, 0x3D3CF14E, -/**/ 0x060B43AA, 0xBF44DC99, -/**/ 0x6B600000, 0x3F44DE4C, -/**/ 0x4CE35F94, 0xBD23EDC2, -/**/ 0xCD52CA15, 0xBF44EC93, -/**/ 0xCEC00000, 0x3F44EE49, -/**/ 0xCCF1B48E, 0x3D306E9D, -/**/ 0x909C465C, 0xBF44FC8E, -/**/ 0x30400000, 0x3F44FE47, -/**/ 0x5FF9440B, 0xBD33DD35, -/**/ 0x4FE7B9FF, 0xBF450C89, -/**/ 0x8FA00000, 0x3F450E44, -/**/ 0xAA4D276D, 0x3D224D49, -/**/ 0x0B35267A, 0xBF451C84, -/**/ 0xED200000, 0x3F451E41, -/**/ 0x11B557F9, 0xBD3884D4, -/**/ 0xC2848D4F, 0xBF452C7E, -/**/ 0x48800000, 0x3F452E3F, -/**/ 0xB43290C4, 0x3D1C857D, -/**/ 0x75D5EFFC, 0xBF453C79, -/**/ 0xA2000000, 0x3F453E3C, -/**/ 0x2D598D3C, 0xBD37E5C1, -/**/ 0x25294FFF, 0xBF454C74, -/**/ 0xF9600000, 0x3F454E39, -/**/ 0x3FE47B89, 0x3D24CD93, -/**/ 0xD07EAED8, 0xBF455C6E, -/**/ 0x4EE00000, 0x3F455E37, -/**/ 0xAA959122, 0xBD31F800, -/**/ 0x77D60E06, 0xBF456C69, -/**/ 0xA2400000, 0x3F456E34, -/**/ 0x7329AF92, 0x3D32FEDF, -/**/ 0x1B2F6F08, 0xBF457C64, -/**/ 0xF3C00000, 0x3F457E31, -/**/ 0x1C545A6F, 0xBD1ACE5A, -/**/ 0xBA8AD35D, 0xBF458C5E, -/**/ 0x43400000, 0x3F458E2F, -/**/ 0x19F6B9EF, 0xBD3F0E63, -/**/ 0x55E83C84, 0xBF459C59, -/**/ 0x90A00000, 0x3F459E2C, -/**/ 0x73005F6F, 0x3D23DEF2, -/**/ 0xED47ABFB, 0xBF45AC53, -/**/ 0xDC200000, 0x3F45AE29, -/**/ 0x1C295DE7, 0xBD277204, -/**/ 0x80A92343, 0xBF45BC4E, -/**/ 0x25800000, 0x3F45BE27, -/**/ 0x8D869589, 0x3D3FF92A, -/**/ 0x100CA3D9, 0xBF45CC49, -/**/ 0x6D000000, 0x3F45CE24, -/**/ 0x145C5335, 0x3D2A0DFD, -/**/ 0x9B722F3C, 0xBF45DC43, -/**/ 0xB2800000, 0x3F45DE21, -/**/ 0x6A8614B3, 0xBD123A1A, -/**/ 0x22D9C6ED, 0xBF45EC3E, -/**/ 0xF6000000, 0x3F45EE1E, -/**/ 0x63CBC7E7, 0xBD34C665, -/**/ 0xA6436C69, 0xBF45FC38, -/**/ 0x37600000, 0x3F45FE1C, -/**/ 0xAB6C51D7, 0x3D3C6061, -/**/ 0x25AF2130, 0xBF460C33, -/**/ 0x76E00000, 0x3F460E19, -/**/ 0x1EC7F453, 0x3D2DCD9C, -/**/ 0xA11CE6C1, 0xBF461C2D, -/**/ 0xB4600000, 0x3F461E16, -/**/ 0x20C52899, 0x3D066EFA, -/**/ 0x188CBE9A, 0xBF462C28, -/**/ 0xEFE00000, 0x3F462E13, -/**/ 0xEB5FDD5C, 0xBD1FA5AC, -/**/ 0x8BFEAA3B, 0xBF463C22, -/**/ 0x29600000, 0x3F463E11, -/**/ 0xF22FE2BC, 0xBD313E11, -/**/ 0xFB72AB23, 0xBF464C1C, -/**/ 0x60E00000, 0x3F464E0E, -/**/ 0x6710E251, 0xBD392F15, -/**/ 0x66E8C2D0, 0xBF465C17, -/**/ 0x96600000, 0x3F465E0B, -/**/ 0x1EFC78A7, 0xBD3FBB76, -/**/ 0xCE60F2C1, 0xBF466C11, -/**/ 0xC9C00000, 0x3F466E08, -/**/ 0x602C1A84, 0x3D3B1DCB, -/**/ 0x31DB3C76, 0xBF467C0C, -/**/ 0xFB400000, 0x3F467E05, -/**/ 0x9027DA74, 0x3D375DAE, -/**/ 0x9157A16E, 0xBF468C06, -/**/ 0x2AC00000, 0x3F468E03, -/**/ 0xEA560DA0, 0x3D350532, -/**/ 0xECD62326, 0xBF469C00, -/**/ 0x58400000, 0x3F469E00, -/**/ 0xE7B63DE2, 0x3D341557 } }; - -#endif -#endif diff --git a/libgcc-math/dbl-64/urem.h b/libgcc-math/dbl-64/urem.h deleted file mode 100644 index 3713dd90d8a..00000000000 --- a/libgcc-math/dbl-64/urem.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/************************************************************************/ -/* MODULE_NAME: urem.h */ -/* */ -/* */ -/* common data and variables definition for BIG or LITTLE ENDIAN */ -/************************************************************************/ - -#ifndef UREM_H -#define UREM_H - -#ifdef BIG_ENDI -static const mynumber big = {{0x43380000, 0}}, /* 6755399441055744 */ - t128 = {{0x47f00000, 0}}, /* 2^ 128 */ - tm128 = {{0x37f00000, 0}}, /* 2^-128 */ - ZERO = {{0, 0}}, /* 0.0 */ - nZERO = {{0x80000000, 0}}, /* -0.0 */ - NAN = {{0x7ff80000, 0}}, /* NaN */ - nNAN = {{0xfff80000, 0}}; /* -NaN */ -#else -#ifdef LITTLE_ENDI -static const mynumber big = {{0, 0x43380000}}, /* 6755399441055744 */ - t128 = {{0, 0x47f00000}}, /* 2^ 128 */ - tm128 = {{0, 0x37f00000}}, /* 2^-128 */ - ZERO = {{0, 0}}, /* 0.0 */ - nZERO = {{0, 0x80000000}}, /* -0.0 */ - NAN = {{0, 0x7ff80000}}, /* NaN */ - nNAN = {{0, 0xfff80000}}; /* -NaN */ -#endif -#endif - -#endif diff --git a/libgcc-math/dbl-64/uroot.h b/libgcc-math/dbl-64/uroot.h deleted file mode 100644 index 02b74cb262e..00000000000 --- a/libgcc-math/dbl-64/uroot.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/******************************************************************/ -/* */ -/* MODULE_NAME:uroot.h */ -/* */ -/* common data and variables prototype and definition */ -/******************************************************************/ - -#ifndef UROOT_H -#define UROOT_H - -#ifdef BIG_ENDI - static const mynumber -/**/ t512 = {{0x5ff00000, 0x00000000 }}, /* 2^512 */ -/**/ tm256 = {{0x2ff00000, 0x00000000 }}; /* 2^-256 */ - -#else -#ifdef LITTLE_ENDI - static const mynumber -/**/ t512 = {{0x00000000, 0x5ff00000 }}, /* 2^512 */ -/**/ tm256 = {{0x00000000, 0x2ff00000 }}; /* 2^-256 */ -#endif -#endif - -#endif diff --git a/libgcc-math/dbl-64/usncs.h b/libgcc-math/dbl-64/usncs.h deleted file mode 100644 index 6c80f0cf958..00000000000 --- a/libgcc-math/dbl-64/usncs.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/************************************************************************/ -/* MODULE_NAME: dosincos.h */ -/* */ -/* */ -/* common data and variables definition for BIG or LITTLE ENDIAN */ -/************************************************************************/ - -#ifndef USNCS_H -#define USNCS_H - -#ifdef BIG_ENDI -static const mynumber - -/**/ NAN = {{0x7ff80000, 0x00000000 }}, /* NaN */ -/**/ s1 = {{0xBFC55555, 0x55555555 }}, /* -0.16666666666666666 */ -/**/ s2 = {{0x3F811111, 0x11110ECE }}, /* 0.0083333333333323288 */ -/**/ s3 = {{0xBF2A01A0, 0x19DB08B8 }}, /* -0.00019841269834414642 */ -/**/ s4 = {{0x3EC71DE2, 0x7B9A7ED9 }}, /* 2.755729806860771e-06 */ -/**/ s5 = {{0xBE5ADDFF, 0xC2FCDF59 }}, /* -2.5022014848318398e-08 */ -/**/ aa = {{0xBFC55580, 0x00000000 }}, /* -0.1666717529296875 */ -/**/ bb = {{0x3ED55555, 0x55556E24 }}, /* 5.0862630208387126e-06 */ -/**/ big = {{0x42c80000, 0x00000000 }}, /* 52776558133248 */ -/**/ hp0 = {{0x3FF921FB, 0x54442D18 }}, /* 1.5707963267948966 */ -/**/ hp1 = {{0x3C91A626, 0x33145C07 }}, /* 6.123233995736766e-17 */ -/**/ mp1 = {{0x3FF921FB, 0x58000000 }}, /* 1.5707963407039642 */ -/**/ mp2 = {{0xBE4DDE97, 0x3C000000 }}, /* -1.3909067564377153e-08 */ -/**/ mp3 = {{0xBC8CB3B3, 0x99D747F2 }}, /* -4.9789962505147994e-17 */ -/**/ pp3 = {{0xBC8CB3B3, 0x98000000 }}, /* -4.9789962314799099e-17 */ -/**/ pp4 = {{0xbacd747f, 0x23e32ed7 }}, /* -1.9034889620193266e-25 */ -/**/ hpinv = {{0x3FE45F30, 0x6DC9C883 }}, /* 0.63661977236758138 */ -/**/ toint = {{0x43380000, 0x00000000 }}; /* 6755399441055744 */ - -#else -#ifdef LITTLE_ENDI -static const mynumber - -/**/ NAN = {{0x00000000, 0x7ff80000 }},/* NaN */ -/**/ s1 = {{0x55555555, 0xBFC55555 }},/* -0.16666666666666666 */ -/**/ s2 = {{0x11110ECE, 0x3F811111 }},/* 0.0083333333333323288 */ -/**/ s3 = {{0x19DB08B8, 0xBF2A01A0 }},/* -0.00019841269834414642 */ -/**/ s4 = {{0x7B9A7ED9, 0x3EC71DE2 }},/* 2.755729806860771e-06 */ -/**/ s5 = {{0xC2FCDF59, 0xBE5ADDFF }},/* -2.5022014848318398e-08 */ -/**/ aa = {{0x00000000, 0xBFC55580 }},/* -0.1666717529296875 */ -/**/ bb = {{0x55556E24, 0x3ED55555 }},/* 5.0862630208387126e-06 */ -/**/ big = {{0x00000000, 0x42c80000 }},/* 52776558133248 */ -/**/ hp0 = {{0x54442D18, 0x3FF921FB }},/* 1.5707963267948966 */ -/**/ hp1 = {{0x33145C07, 0x3C91A626 }},/* 6.123233995736766e-17 */ -/**/ mp1 = {{0x58000000, 0x3FF921FB }},/* 1.5707963407039642 */ -/**/ mp2 = {{0x3C000000, 0xBE4DDE97 }},/* -1.3909067564377153e-08 */ -/**/ mp3 = {{0x99D747F2, 0xBC8CB3B3 }},/* -4.9789962505147994e-17 */ -/**/ pp3 = {{0x98000000, 0xBC8CB3B3 }},/* -4.9789962314799099e-17 */ -/**/ pp4 = {{0x23e32ed7, 0xbacd747f }},/* -1.9034889620193266e-25 */ -/**/ hpinv = {{0x6DC9C883, 0x3FE45F30 }},/* 0.63661977236758138 */ -/**/ toint = {{0x00000000, 0x43380000 }};/* 6755399441055744 */ - - -#endif -#endif - -#endif diff --git a/libgcc-math/dbl-64/utan.h b/libgcc-math/dbl-64/utan.h deleted file mode 100644 index c866e88edc8..00000000000 --- a/libgcc-math/dbl-64/utan.h +++ /dev/null @@ -1,280 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/******************************************************************/ -/* */ -/* MODULE_NAME:utan.h */ -/* */ -/* common data and variables prototype and definition */ -/******************************************************************/ - -#ifndef UTAN_H -#define UTAN_H - -#ifdef BIG_ENDI - static const number - /* polynomial I */ -/**/ d3 = {{0x3FD55555, 0x55555555} }, /* 0.333... */ -/**/ d5 = {{0x3FC11111, 0x111107C6} }, /* 0.133... */ -/**/ d7 = {{0x3FABA1BA, 0x1CDB8745} }, /* . */ -/**/ d9 = {{0x3F9664ED, 0x49CFC666} }, /* . */ -/**/ d11 = {{0x3F82385A, 0x3CF2E4EA} }, /* . */ - /* polynomial II */ -/**/ a3 = {{0x3fd55555, 0x55555555} }, /* 1/3 */ -/**/ aa3 = {{0x3c755555, 0x55555555} }, /* 1/3-a3 */ -/**/ a5 = {{0x3fc11111, 0x11111111} }, /* 2/15 */ -/**/ aa5 = {{0x3c411111, 0x11111111} }, /* 2/15-a5 */ -/**/ a7 = {{0x3faba1ba, 0x1ba1ba1c} }, /* 17/315 */ -/**/ aa7 = {{0xbc479179, 0x17917918} }, /* ()-a7 */ -/**/ a9 = {{0x3f9664f4, 0x882c10fa} }, /* 62/2835 */ -/**/ aa9 = {{0xbc09a528, 0x8b6c44fd} }, /* ()-a9 */ -/**/ a11 = {{0x3f8226e3, 0x55e6c23d} }, /* . */ -/**/ aa11 = {{0xbc2c292b, 0x8f1a2c13} }, /* . */ -/**/ a13 = {{0x3f6d6d3d, 0x0e157de0} }, /* . */ -/**/ aa13 = {{0xbc0280cf, 0xc968d971} }, /* . */ -/**/ a15 = {{0x3f57da36, 0x452b75e3} }, /* . */ -#if 0 -/**/ aa15 = {{0xbbf25789, 0xb285d2ed} }, /* . */ -#endif -/**/ a17 = {{0x3f435582, 0x48036744} }, /* . */ -#if 0 -/**/ aa17 = {{0x3be488d9, 0x563f1f23} }, /* . */ -#endif -/**/ a19 = {{0x3f2f57d7, 0x734d1664} }, /* . */ -#if 0 -/**/ aa19 = {{0x3bb0d55a, 0x913ccb50} }, /* . */ -#endif -/**/ a21 = {{0x3f1967e1, 0x8afcafad} }, /* . */ -#if 0 -/**/ aa21 = {{0xbbbd7614, 0xa42d44e6} }, /* . */ -#endif -/**/ a23 = {{0x3f0497d8, 0xeea25259} }, /* . */ -#if 0 -/**/ aa23 = {{0x3b99f2d0, 0x2e4d2863} }, /* . */ -#endif -/**/ a25 = {{0x3ef0b132, 0xd39a6050} }, /* . */ -#if 0 -/**/ aa25 = {{0x3b93b274, 0xc2c19614} }, /* . */ -#endif -/**/ a27 = {{0x3edb0f72, 0xd3ee24e9} }, /* . */ -#if 0 -/**/ aa27 = {{0x3b61688d, 0xdd595609} }, /* . */ -#endif - /* polynomial III */ -/**/ e0 = {{0x3FD55555, 0x55554DBD} }, /* . */ -/**/ e1 = {{0x3FC11112, 0xE0A6B45F} }, /* . */ - - /* constants */ -/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */ -/**/ one = {{0x3ff00000, 0x00000000} }, /* 1 */ -/**/ mone = {{0xbff00000, 0x00000000} }, /*-1 */ -/**/ mfftnhf = {{0xc02f0000, 0x00000000} }, /*-15.5 */ -/**/ two8 = {{0x40700000, 0x00000000} }, /* 256 */ - -/**/ g1 = {{0x3e4b096c, 0x00000000} }, /* 1.259e-8 */ -/**/ g2 = {{0x3faf212d, 0x00000000} }, /* 0.0608 */ -/**/ g3 = {{0x3fe92f1a, 0x00000000} }, /* 0.787 */ -/**/ g4 = {{0x40390000, 0x00000000} }, /* 25.0 */ -/**/ g5 = {{0x4197d784, 0x00000000} }, /* 1e8 */ -/**/ gy1 = {{0x3e7ad7f2, 0x9abcaf48} }, /* 1e-7 */ -/**/ gy2 = {{0x3faf212d, 0x00000000} }, /* 0.0608 */ - -/**/ u1 = {{0x3cc8c33a, 0x00000000} }, /* 6.873e-16 */ -/**/ u2 = {{0x3983dc4d, 0x00000000} }, /* 1.224e-31 */ -/**/ u3 = {{0x3c78e14b, 0x00000000} }, /* 2.158e-17 */ -/**/ ua3 = {{0x3bfd8b58, 0x00000000} }, /* 1.001e-19 */ -/**/ ub3 = {{0x3cc81898, 0x00000000} }, /* 6.688e-16 */ -/**/ u4 = {{0x399856c2, 0x00000000} }, /* 3e-31 */ -/**/ u5 = {{0x3c39d80a, 0x00000000} }, /* 1.401e-18 */ -/**/ u6 = {{0x3c374c5a, 0x00000000} }, /* 1.263e-18 */ -/**/ u7 = {{0x39903beb, 0x00000000} }, /* 2.001e-31 */ -/**/ u8 = {{0x399c56ae, 0x00000000} }, /* 3.493e-31 */ -/**/ u9 = {{0x3c7d0ac7, 0x00000000} }, /* 2.519e-17 */ -/**/ ua9 = {{0x3bfd8b58, 0x00000000} }, /* 1.001e-19 */ -/**/ ub9 = {{0x3ccc2375, 0x00000000} }, /* 7.810e-16 */ -/**/ u10 = {{0x3c7e40af, 0x00000000} }, /* 2.624e-17 */ -/**/ ua10 = {{0x3bfd8b58, 0x00000000} }, /* 1.001e-19 */ -/**/ ub10 = {{0x3ccc6405, 0x00000000} }, /* 7.880e-16 */ -/**/ u11 = {{0x39e509b6, 0x00000000} }, /* 8.298e-30 */ -/**/ u12 = {{0x39e509b6, 0x00000000} }, /* 8.298e-30 */ -/**/ u13 = {{0x3c39d80a, 0x00000000} }, /* 1.401e-18 */ -/**/ u14 = {{0x3c374c5a, 0x00000000} }, /* 1.263e-18 */ -/**/ u15 = {{0x3ab5767a, 0x00000000} }, /* 6.935e-26 */ -/**/ u16 = {{0x3ab57744, 0x00000000} }, /* 6.936e-26 */ -/**/ u17 = {{0x3c7d0ac7, 0x00000000} }, /* 2.519e-17 */ -/**/ ua17 = {{0x3bfdb11f, 0x00000000} }, /* 1.006e-19 */ -/**/ ub17 = {{0x3ccc2375, 0x00000000} }, /* 7.810e-16 */ -/**/ u18 = {{0x3c7e40af, 0x00000000} }, /* 2.624e-17 */ -/**/ ua18 = {{0x3bfdb11f, 0x00000000} }, /* 1.006e-19 */ -/**/ ub18 = {{0x3ccc6405, 0x00000000} }, /* 7.880e-16 */ -/**/ u19 = {{0x39a13b61, 0x00000000} }, /* 4.248e-31 */ -/**/ u20 = {{0x39a13b61, 0x00000000} }, /* 4.248e-31 */ -/**/ u21 = {{0x3c3bb9b8, 0x00000000} }, /* 1.503e-18 */ -/**/ u22 = {{0x3c392e08, 0x00000000} }, /* 1.365e-18 */ -/**/ u23 = {{0x3a0ce706, 0x00000000} }, /* 4.560e-29 */ -/**/ u24 = {{0x3a0cff5d, 0x00000000} }, /* 4.575e-29 */ -/**/ u25 = {{0x3c7d0ac7, 0x00000000} }, /* 2.519e-17 */ -/**/ ua25 = {{0x3bfd8b58, 0x00000000} }, /* 1.001e-19 */ -/**/ ub25 = {{0x3ccc2375, 0x00000000} }, /* 7.810e-16 */ -/**/ u26 = {{0x3c7e40af, 0x00000000} }, /* 2.624e-17 */ -/**/ ua26 = {{0x3bfd8b58, 0x00000000} }, /* 1.001e-19 */ -/**/ ub26 = {{0x3ccc6405, 0x00000000} }, /* 7.880e-16 */ -/**/ u27 = {{0x3ad421cb, 0x00000000} }, /* 2.602e-25 */ -/**/ u28 = {{0x3ad421cb, 0x00000000} }, /* 2.602e-25 */ - -/**/ mp1 = {{0x3FF921FB, 0x58000000} }, -/**/ mp2 = {{0xBE4DDE97, 0x3C000000} }, -/**/ mp3 = {{0xBC8CB3B3, 0x99D747F2} }, -/**/ pp3 = {{0xBC8CB3B3, 0x98000000} }, -/**/ pp4 = {{0xbacd747f, 0x23e32ed7} }, -/**/ hpinv = {{0x3FE45F30, 0x6DC9C883} }, -/**/ toint = {{0x43380000, 0x00000000} }; - -#else -#ifdef LITTLE_ENDI - - static const number - /* polynomial I */ -/**/ d3 = {{0x55555555, 0x3FD55555} }, /* 0.333... */ -/**/ d5 = {{0x111107C6, 0x3FC11111} }, /* 0.133... */ -/**/ d7 = {{0x1CDB8745, 0x3FABA1BA} }, /* . */ -/**/ d9 = {{0x49CFC666, 0x3F9664ED} }, /* . */ -/**/ d11 = {{0x3CF2E4EA, 0x3F82385A} }, /* . */ - /* polynomial II */ -/**/ a3 = {{0x55555555, 0x3fd55555} }, /* 1/3 */ -/**/ aa3 = {{0x55555555, 0x3c755555} }, /* 1/3-a3 */ -/**/ a5 = {{0x11111111, 0x3fc11111} }, /* 2/15 */ -/**/ aa5 = {{0x11111111, 0x3c411111} }, /* 2/15-a5 */ -/**/ a7 = {{0x1ba1ba1c, 0x3faba1ba} }, /* 17/315 */ -/**/ aa7 = {{0x17917918, 0xbc479179} }, /* ()-a7 */ -/**/ a9 = {{0x882c10fa, 0x3f9664f4} }, /* 62/2835 */ -/**/ aa9 = {{0x8b6c44fd, 0xbc09a528} }, /* ()-a9 */ -/**/ a11 = {{0x55e6c23d, 0x3f8226e3} }, /* . */ -/**/ aa11 = {{0x8f1a2c13, 0xbc2c292b} }, /* . */ -/**/ a13 = {{0x0e157de0, 0x3f6d6d3d} }, /* . */ -/**/ aa13 = {{0xc968d971, 0xbc0280cf} }, /* . */ -/**/ a15 = {{0x452b75e3, 0x3f57da36} }, /* . */ -#if 0 -/**/ aa15 = {{0xb285d2ed, 0xbbf25789} }, /* . */ -#endif -/**/ a17 = {{0x48036744, 0x3f435582} }, /* . */ -#if 0 -/**/ aa17 = {{0x563f1f23, 0x3be488d9} }, /* . */ -#endif -/**/ a19 = {{0x734d1664, 0x3f2f57d7} }, /* . */ -#if 0 -/**/ aa19 = {{0x913ccb50, 0x3bb0d55a} }, /* . */ -#endif -/**/ a21 = {{0x8afcafad, 0x3f1967e1} }, /* . */ -#if 0 -/**/ aa21 = {{0xa42d44e6, 0xbbbd7614} }, /* . */ -#endif -/**/ a23 = {{0xeea25259, 0x3f0497d8} }, /* . */ -#if 0 -/**/ aa23 = {{0x2e4d2863, 0x3b99f2d0} }, /* . */ -#endif -/**/ a25 = {{0xd39a6050, 0x3ef0b132} }, /* . */ -#if 0 -/**/ aa25 = {{0xc2c19614, 0x3b93b274} }, /* . */ -#endif -/**/ a27 = {{0xd3ee24e9, 0x3edb0f72} }, /* . */ -#if 0 -/**/ aa27 = {{0xdd595609, 0x3b61688d} }, /* . */ -#endif - /* polynomial III */ -/**/ e0 = {{0x55554DBD, 0x3FD55555} }, /* . */ -/**/ e1 = {{0xE0A6B45F, 0x3FC11112} }, /* . */ - - /* constants */ -/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */ -/**/ one = {{0x00000000, 0x3ff00000} }, /* 1 */ -/**/ mone = {{0x00000000, 0xbff00000} }, /*-1 */ -/**/ mfftnhf = {{0x00000000, 0xc02f0000} }, /*-15.5 */ -/**/ two8 = {{0x00000000, 0x40700000} }, /* 256 */ - -/**/ g1 = {{0x00000000, 0x3e4b096c} }, /* 1.259e-8 */ -/**/ g2 = {{0x00000000, 0x3faf212d} }, /* 0.0608 */ -/**/ g3 = {{0x00000000, 0x3fe92f1a} }, /* 0.787 */ -/**/ g4 = {{0x00000000, 0x40390000} }, /* 25.0 */ -/**/ g5 = {{0x00000000, 0x4197d784} }, /* 1e8 */ -/**/ gy1 = {{0x9abcaf48, 0x3e7ad7f2} }, /* 1e-7 */ -/**/ gy2 = {{0x00000000, 0x3faf212d} }, /* 0.0608 */ - -/**/ u1 = {{0x00000000, 0x3cc8c33a} }, /* 6.873e-16 */ -/**/ u2 = {{0x00000000, 0x3983dc4d} }, /* 1.224e-31 */ -/**/ u3 = {{0x00000000, 0x3c78e14b} }, /* 2.158e-17 */ -/**/ ua3 = {{0x00000000, 0x3bfd8b58} }, /* 1.001e-19 */ -/**/ ub3 = {{0x00000000, 0x3cc81898} }, /* 6.688e-16 */ -/**/ u4 = {{0x00000000, 0x399856c2} }, /* 3e-31 */ -/**/ u5 = {{0x00000000, 0x3c39d80a} }, /* 1.401e-18 */ -/**/ u6 = {{0x00000000, 0x3c374c5a} }, /* 1.263e-18 */ -/**/ u7 = {{0x00000000, 0x39903beb} }, /* 2.001e-31 */ -/**/ u8 = {{0x00000000, 0x399c56ae} }, /* 3.493e-31 */ -/**/ u9 = {{0x00000000, 0x3c7d0ac7} }, /* 2.519e-17 */ -/**/ ua9 = {{0x00000000, 0x3bfd8b58} }, /* 1.001e-19 */ -/**/ ub9 = {{0x00000000, 0x3ccc2375} }, /* 7.810e-16 */ -/**/ u10 = {{0x00000000, 0x3c7e40af} }, /* 2.624e-17 */ -/**/ ua10 = {{0x00000000, 0x3bfd8b58} }, /* 1.001e-19 */ -/**/ ub10 = {{0x00000000, 0x3ccc6405} }, /* 7.880e-16 */ -/**/ u11 = {{0x00000000, 0x39e509b6} }, /* 8.298e-30 */ -/**/ u12 = {{0x00000000, 0x39e509b6} }, /* 8.298e-30 */ -/**/ u13 = {{0x00000000, 0x3c39d80a} }, /* 1.401e-18 */ -/**/ u14 = {{0x00000000, 0x3c374c5a} }, /* 1.263e-18 */ -/**/ u15 = {{0x00000000, 0x3ab5767a} }, /* 6.935e-26 */ -/**/ u16 = {{0x00000000, 0x3ab57744} }, /* 6.936e-26 */ -/**/ u17 = {{0x00000000, 0x3c7d0ac7} }, /* 2.519e-17 */ -/**/ ua17 = {{0x00000000, 0x3bfdb11f} }, /* 1.006e-19 */ -/**/ ub17 = {{0x00000000, 0x3ccc2375} }, /* 7.810e-16 */ -/**/ u18 = {{0x00000000, 0x3c7e40af} }, /* 2.624e-17 */ -/**/ ua18 = {{0x00000000, 0x3bfdb11f} }, /* 1.006e-19 */ -/**/ ub18 = {{0x00000000, 0x3ccc6405} }, /* 7.880e-16 */ -/**/ u19 = {{0x00000000, 0x39a13b61} }, /* 4.248e-31 */ -/**/ u20 = {{0x00000000, 0x39a13b61} }, /* 4.248e-31 */ -/**/ u21 = {{0x00000000, 0x3c3bb9b8} }, /* 1.503e-18 */ -/**/ u22 = {{0x00000000, 0x3c392e08} }, /* 1.365e-18 */ -/**/ u23 = {{0x00000000, 0x3a0ce706} }, /* 4.560e-29 */ -/**/ u24 = {{0x00000000, 0x3a0cff5d} }, /* 4.575e-29 */ -/**/ u25 = {{0x00000000, 0x3c7d0ac7} }, /* 2.519e-17 */ -/**/ ua25 = {{0x00000000, 0x3bfd8b58} }, /* 1.001e-19 */ -/**/ ub25 = {{0x00000000, 0x3ccc2375} }, /* 7.810e-16 */ -/**/ u26 = {{0x00000000, 0x3c7e40af} }, /* 2.624e-17 */ -/**/ ua26 = {{0x00000000, 0x3bfd8b58} }, /* 1.001e-19 */ -/**/ ub26 = {{0x00000000, 0x3ccc6405} }, /* 7.880e-16 */ -/**/ u27 = {{0x00000000, 0x3ad421cb} }, /* 2.602e-25 */ -/**/ u28 = {{0x00000000, 0x3ad421cb} }, /* 2.602e-25 */ - -/**/ mp1 = {{0x58000000, 0x3FF921FB} }, -/**/ mp2 = {{0x3C000000, 0xBE4DDE97} }, -/**/ mp3 = {{0x99D747F2, 0xBC8CB3B3} }, -/**/ pp3 = {{0x98000000, 0xBC8CB3B3} }, -/**/ pp4 = {{0x23e32ed7, 0xbacd747f} }, -/**/ hpinv = {{0x6DC9C883, 0x3FE45F30} }, -/**/ toint = {{0x00000000, 0x43380000} }; - -#endif -#endif - - -#define ZERO zero.d -#define ONE one.d -#define MONE mone.d -#define TWO8 two8.d - -#endif diff --git a/libgcc-math/dbl-64/utan.tbl b/libgcc-math/dbl-64/utan.tbl deleted file mode 100644 index eb248bada9b..00000000000 --- a/libgcc-math/dbl-64/utan.tbl +++ /dev/null @@ -1,1526 +0,0 @@ -/* - * IBM Accurate Mathematical Library - * Written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/****************************************************************/ -/* TABLES FOR THE utan() FUNCTION */ -/****************************************************************/ - - -#ifdef BIG_ENDI -static const number - xfg[186][4] = { /* xi,Fi,Gi,FFi, i=16..201 */ -/**/ {{{0x3fb00000, 0x1e519d60} }, -/**/ {{0x3fb00557, 0x96c4e240} }, -/**/ {{0x402ff554, 0x628127b7} }, -/**/ {{0xbb9a1dee, 0x9e355b06} },}, -/**/ {{{0x3fb10000, 0x1b1a7010} }, -/**/ {{0x3fb10668, 0xaab892b7} }, -/**/ {{0x402e12c7, 0xbe3fdf74} }, -/**/ {{0x3ba89234, 0x037da741} },}, -/**/ {{{0x3fb20000, 0x2505e350} }, -/**/ {{0x3fb2079b, 0xff547824} }, -/**/ {{0x402c65c5, 0xde853633} }, -/**/ {{0x3bb7486e, 0xe9614250} },}, -/**/ {{{0x3fb2ffff, 0xfcdc4252} }, -/**/ {{0x3fb308f3, 0x5eb16c68} }, -/**/ {{0x402ae5da, 0xe56be74f} }, -/**/ {{0xbb82c726, 0x91a23034} },}, -/**/ {{{0x3fb3ffff, 0xe3ff849f} }, -/**/ {{0x3fb40a71, 0x154999cc} }, -/**/ {{0x40298c43, 0x046b7352} }, -/**/ {{0x3b9aceaf, 0x3843738f} },}, -/**/ {{{0x3fb4ffff, 0xedc9590f} }, -/**/ {{0x3fb50c17, 0x429bdd80} }, -/**/ {{0x40285384, 0x91b5d674} }, -/**/ {{0xbbc1d02d, 0xb4403d22} },}, -/**/ {{{0x3fb60000, 0x00ee83f7} }, -/**/ {{0x3fb60de7, 0xda80cc21} }, -/**/ {{0x40273724, 0xef21a2a7} }, -/**/ {{0xbb95e53c, 0x72523ffd} },}, -/**/ {{{0x3fb6ffff, 0xeb05ea41} }, -/**/ {{0x3fb70fe4, 0xb8c51bea} }, -/**/ {{0x40263370, 0xfae562ff} }, -/**/ {{0xbb99ad0e, 0x8ffe0626} },}, -/**/ {{{0x3fb7ffff, 0xdc0515f7} }, -/**/ {{0x3fb81210, 0x1db54498} }, -/**/ {{0x40254553, 0x0e7eab5c} }, -/**/ {{0xbb914c87, 0xd62ed686} },}, -/**/ {{{0x3fb8ffff, 0xe384d7ab} }, -/**/ {{0x3fb9146c, 0x2a8d3727} }, -/**/ {{0x40246a33, 0xfd57f3fd} }, -/**/ {{0xbbbbda8d, 0x5381e06d} },}, -/**/ {{{0x3fb9ffff, 0xe4832347} }, -/**/ {{0x3fba16fa, 0xd50e1050} }, -/**/ {{0x40239fe2, 0xc5537a96} }, -/**/ {{0x3bc7f695, 0xc111eabb} },}, -/**/ {{{0x3fbb0000, 0x274540e3} }, -/**/ {{0x3fbb19be, 0x7ae68517} }, -/**/ {{0x4022e481, 0x3637e946} }, -/**/ {{0x3bc307f8, 0x8dbd9d93} },}, -/**/ {{{0x3fbbffff, 0xfebf2e9b} }, -/**/ {{0x3fbc1cb8, 0x8369cd19} }, -/**/ {{0x40223676, 0x17aef223} }, -/**/ {{0x3bc50038, 0x424a9cf3} },}, -/**/ {{{0x3fbd0000, 0x23529045} }, -/**/ {{0x3fbd1feb, 0xc11d7ef7} }, -/**/ {{0x4021945f, 0xb8e43d4e} }, -/**/ {{0x3b812007, 0x52a6f224} },}, -/**/ {{{0x3fbdffff, 0xd872a829} }, -/**/ {{0x3fbe2359, 0x8ee4d6b7} }, -/**/ {{0x4020fd0c, 0x76195d5f} }, -/**/ {{0xbbb4d9ab, 0x85fdca85} },}, -/**/ {{{0x3fbeffff, 0xff323b84} }, -/**/ {{0x3fbf2704, 0xec9073e5} }, -/**/ {{0x40206f71, 0x3020200f} }, -/**/ {{0x3bb77aa2, 0x12836992} },}, -/**/ {{{0x3fc00000, 0x0ce79195} }, -/**/ {{0x3fc01577, 0xbc30cc61} }, -/**/ {{0x401fd549, 0xd6564a88} }, -/**/ {{0xbbc8926f, 0x965c0ad0} },}, -/**/ {{{0x3fc07fff, 0xee40e918} }, -/**/ {{0x3fc0978d, 0x8279ac01} }, -/**/ {{0x401edbb5, 0x9294bc03} }, -/**/ {{0xbb80a533, 0x4aae45d6} },}, -/**/ {{{0x3fc10000, 0x0cc091fd} }, -/**/ {{0x3fc119c5, 0x44dfb2f7} }, -/**/ {{0x401df0bb, 0x067d8e18} }, -/**/ {{0xbbcc2c18, 0x4ff642a4} },}, -/**/ {{{0x3fc18000, 0x0d9936a1} }, -/**/ {{0x3fc19c1f, 0xb9085a4b} }, -/**/ {{0x401d131a, 0x71ce3629} }, -/**/ {{0xbbc36553, 0x0669355b} },}, -/**/ {{{0x3fc1ffff, 0xed5f3188} }, -/**/ {{0x3fc21e9d, 0xee74bf2d} }, -/**/ {{0x401c41b6, 0xff0cd655} }, -/**/ {{0x3b8867f5, 0x478ecfc5} },}, -/**/ {{{0x3fc28000, 0x05f06a51} }, -/**/ {{0x3fc2a141, 0x550b313f} }, -/**/ {{0x401b7b92, 0x1702e6d2} }, -/**/ {{0xbbadab51, 0x380131fe} },}, -/**/ {{{0x3fc2ffff, 0xfe3d339e} }, -/**/ {{0x3fc3240a, 0xa75f76df} }, -/**/ {{0x401abfc8, 0xfcb6409d} }, -/**/ {{0x3bc60bcf, 0x0d291d83} },}, -/**/ {{{0x3fc37fff, 0xed888d6f} }, -/**/ {{0x3fc3a6fb, 0x13cc5db7} }, -/**/ {{0x401a0d8f, 0x8ed5320d} }, -/**/ {{0x3bb8a48e, 0x4eef03ab} },}, -/**/ {{{0x3fc40000, 0x02ca050d} }, -/**/ {{0x3fc42a13, 0xe25776bb} }, -/**/ {{0x4019642d, 0xfa84c2bc} }, -/**/ {{0xbbd0bd5d, 0xcc56516f} },}, -/**/ {{{0x3fc47fff, 0xf2531f5c} }, -/**/ {{0x3fc4ad55, 0xdeb73404} }, -/**/ {{0x4018c2fe, 0xf86e9035} }, -/**/ {{0x3b9cffe7, 0x5aa287c8} },}, -/**/ {{{0x3fc50000, 0x13774992} }, -/**/ {{0x3fc530c2, 0x7d0ee307} }, -/**/ {{0x4018296c, 0x370caf35} }, -/**/ {{0xbbcf75d1, 0xf91d6532} },}, -/**/ {{{0x3fc57fff, 0xedddcb2d} }, -/**/ {{0x3fc5b45a, 0x5db4347d} }, -/**/ {{0x401796ee, 0x52190c0e} }, -/**/ {{0x3b88a25f, 0x17d5d076} },}, -/**/ {{{0x3fc5ffff, 0xf41949a0} }, -/**/ {{0x3fc6381f, 0x13bf986a} }, -/**/ {{0x40170b09, 0x2d2255fd} }, -/**/ {{0xbb9bfb23, 0xb1bcd5e7} },}, -/**/ {{{0x3fc67fff, 0xf834d3a1} }, -/**/ {{0x3fc6bc11, 0x8ec85952} }, -/**/ {{0x4016854c, 0x62cf2268} }, -/**/ {{0x3b9ee53b, 0x82e39e04} },}, -/**/ {{{0x3fc6ffff, 0xfd9106ea} }, -/**/ {{0x3fc74032, 0xf298f6f7} }, -/**/ {{0x40160551, 0x1f4f84a9} }, -/**/ {{0xbbb59c4a, 0x112634b8} },}, -/**/ {{{0x3fc78000, 0x0f649a4f} }, -/**/ {{0x3fc7c484, 0x6ca53abc} }, -/**/ {{0x40158ab9, 0x4809d175} }, -/**/ {{0x3bc91c75, 0x73d3cd2e} },}, -/**/ {{{0x3fc7ffff, 0xef06bbd8} }, -/**/ {{0x3fc84906, 0xdf7d76ad} }, -/**/ {{0x4015152e, 0xdd2b30a6} }, -/**/ {{0xbbbfa2da, 0x084c3eef} },}, -/**/ {{{0x3fc88000, 0x021c6334} }, -/**/ {{0x3fc8cdbb, 0xd965f986} }, -/**/ {{0x4014a462, 0x51b74296} }, -/**/ {{0xbb9ec02e, 0x74dcfe0b} },}, -/**/ {{{0x3fc8ffff, 0xf38d0756} }, -/**/ {{0x3fc952a4, 0x28e173c7} }, -/**/ {{0x4014380b, 0x17b59ebd} }, -/**/ {{0xbbcd0f1c, 0xb77589f0} },}, -/**/ {{{0x3fc98000, 0x104efca1} }, -/**/ {{0x3fc9d7c1, 0x4644d23c} }, -/**/ {{0x4013cfe5, 0xcb1eabd5} }, -/**/ {{0xbbd5d6f7, 0xea188d9e} },}, -/**/ {{{0x3fca0000, 0x09417b30} }, -/**/ {{0x3fca5d14, 0x096d76aa} }, -/**/ {{0x40136bb4, 0xb3723db0} }, -/**/ {{0x3bbe3e0d, 0xfbf3979c} },}, -/**/ {{{0x3fca7fff, 0xeb1c23ec} }, -/**/ {{0x3fcae29d, 0xab60288d} }, -/**/ {{0x40130b3e, 0x783071d7} }, -/**/ {{0xbbc7dd82, 0x3d5384bf} },}, -/**/ {{{0x3fcaffff, 0xfb171c13} }, -/**/ {{0x3fcb685f, 0xa221a96b} }, -/**/ {{0x4012ae4d, 0xd8c0747d} }, -/**/ {{0x3bd4644b, 0xd5554972} },}, -/**/ {{{0x3fcb8000, 0x0aba44be} }, -/**/ {{0x3fcbee5a, 0xecdf241f} }, -/**/ {{0x401254b1, 0xc6fad63b} }, -/**/ {{0x3ba41916, 0xd092b85a} },}, -/**/ {{{0x3fcc0000, 0x113d2a3e} }, -/**/ {{0x3fcc7490, 0xb3e92543} }, -/**/ {{0x4011fe3c, 0x9a62c035} }, -/**/ {{0xbba3cc39, 0x41a03739} },}, -/**/ {{{0x3fcc7fff, 0xf49e00ce} }, -/**/ {{0x3fccfb02, 0x0f59eab0} }, -/**/ {{0x4011aac3, 0xe956a631} }, -/**/ {{0xbbb7a383, 0xbfa8cb5b} },}, -/**/ {{{0x3fcd0000, 0x05f611ab} }, -/**/ {{0x3fcd81b0, 0x89e6844e} }, -/**/ {{0x40115a1f, 0xf391268d} }, -/**/ {{0x3bd39b5c, 0xb2dc91f3} },}, -/**/ {{{0x3fcd8000, 0x14764ceb} }, -/**/ {{0x3fce089d, 0x27debf0d} }, -/**/ {{0x40110c2b, 0xfbc84740} }, -/**/ {{0x3bc14d4d, 0x84712510} },}, -/**/ {{{0x3fce0000, 0x14bcea76} }, -/**/ {{0x3fce8fc9, 0x16dbc820} }, -/**/ {{0x4010c0c5, 0xa00ca48e} }, -/**/ {{0xbbd33788, 0x640f1b9e} },}, -/**/ {{{0x3fce7fff, 0xfd7995bd} }, -/**/ {{0x3fcf1735, 0x88b50424} }, -/**/ {{0x401077cc, 0xbe02169a} }, -/**/ {{0xbbb61fee, 0x221fdf77} },}, -/**/ {{{0x3fcf0000, 0x0cc35436} }, -/**/ {{0x3fcf9ee3, 0xfd21a40b} }, -/**/ {{0x40103123, 0x1ee7ffe8} }, -/**/ {{0x3bd427e3, 0xc79ff5c1} },}, -/**/ {{{0x3fcf8000, 0x01d1da33} }, -/**/ {{0x3fd0136a, 0xb7dbe15c} }, -/**/ {{0x400fd959, 0x77d559e5} }, -/**/ {{0x3bb0c6a1, 0xd67948d7} },}, -/**/ {{{0x3fd00000, 0x060c13b2} }, -/**/ {{0x3fd05785, 0xaaad4f18} }, -/**/ {{0x400f549e, 0x2675d182} }, -/**/ {{0xbbc15208, 0x18f0dd10} },}, -/**/ {{{0x3fd04000, 0x03885492} }, -/**/ {{0x3fd09bc3, 0x660542d7} }, -/**/ {{0x400ed3e2, 0xdf3f5fec} }, -/**/ {{0xbbd95657, 0xb883ae62} },}, -/**/ {{{0x3fd08000, 0x052f5a13} }, -/**/ {{0x3fd0e024, 0x9a195045} }, -/**/ {{0x400e56f8, 0xfa68f2c8} }, -/**/ {{0x3bded7ba, 0x5a543e8e} },}, -/**/ {{{0x3fd0c000, 0x02ba1af5} }, -/**/ {{0x3fd124a9, 0xe2e7f24b} }, -/**/ {{0x400dddb4, 0xbffe633f} }, -/**/ {{0xbbdcba86, 0x0c60278f} },}, -/**/ {{{0x3fd0ffff, 0xf76642c1} }, -/**/ {{0x3fd16953, 0xe162ffe6} }, -/**/ {{0x400d67ed, 0x0311d5d5} }, -/**/ {{0x3b7b1f4a, 0xe40c5f9e} },}, -/**/ {{{0x3fd14000, 0x033602f0} }, -/**/ {{0x3fd1ae23, 0x5f49508e} }, -/**/ {{0x400cf57a, 0xb8708266} }, -/**/ {{0xbbd6a6c2, 0x8620f301} },}, -/**/ {{{0x3fd17fff, 0xfefd1a13} }, -/**/ {{0x3fd1f318, 0xdb2a9ba1} }, -/**/ {{0x400c8639, 0x8d11009e} }, -/**/ {{0x3bd3a9c6, 0x69b21d3b} },}, -/**/ {{{0x3fd1bfff, 0xf718365d} }, -/**/ {{0x3fd23835, 0x0c41e3ac} }, -/**/ {{0x400c1a06, 0xe02be47c} }, -/**/ {{0x3bdb961a, 0x129e8cd1} },}, -/**/ {{{0x3fd1ffff, 0xff001e00} }, -/**/ {{0x3fd27d78, 0xb2f6395e} }, -/**/ {{0x400bb0c1, 0xf2fe9a85} }, -/**/ {{0x3be074a9, 0xe68fd7d8} },}, -/**/ {{{0x3fd23fff, 0xfe425a6a} }, -/**/ {{0x3fd2c2e4, 0x618faabe} }, -/**/ {{0x400b4a4c, 0x190b18df} }, -/**/ {{0xbbdf0d1f, 0xf615aad1} },}, -/**/ {{{0x3fd28000, 0x059ec1db} }, -/**/ {{0x3fd30878, 0xd8583884} }, -/**/ {{0x400ae688, 0x0cd82bc2} }, -/**/ {{0xbbd563c3, 0x141c1f8d} },}, -/**/ {{{0x3fd2c000, 0x000dd081} }, -/**/ {{0x3fd34e36, 0xaffdb6d8} }, -/**/ {{0x400a855a, 0x5270fc15} }, -/**/ {{0xbbc6d88d, 0x9f2cdafd} },}, -/**/ {{{0x3fd2ffff, 0xfc1dcd2b} }, -/**/ {{0x3fd3941e, 0xa95875bc} }, -/**/ {{0x400a26a8, 0xaa9502b6} }, -/**/ {{0xbbe13cad, 0x8389b15c} },}, -/**/ {{{0x3fd33fff, 0xf6c0d4a0} }, -/**/ {{0x3fd3da31, 0x739845f5} }, -/**/ {{0x4009ca5a, 0x4d2573a0} }, -/**/ {{0xbbc71636, 0xacaee379} },}, -/**/ {{{0x3fd38000, 0x06b16793} }, -/**/ {{0x3fd4206f, 0xdbc088f0} }, -/**/ {{0x40097057, 0x9344e33a} }, -/**/ {{0xbbc2c052, 0x1d7a4f81} },}, -/**/ {{{0x3fd3c000, 0x07358fa3} }, -/**/ {{0x3fd466da, 0x6f23311d} }, -/**/ {{0x4009188a, 0x5aa612ea} }, -/**/ {{0x3b8653a5, 0x685e8edc} },}, -/**/ {{{0x3fd3ffff, 0xfc3b18cf} }, -/**/ {{0x3fd4ad71, 0xe9282e6b} }, -/**/ {{0x4008c2dd, 0x641e643d} }, -/**/ {{0x3b95f0ef, 0x3f567c64} },}, -/**/ {{{0x3fd44000, 0x000dd2a8} }, -/**/ {{0x3fd4f437, 0x1fa3f2d1} }, -/**/ {{0x40086f3c, 0x6072f821} }, -/**/ {{0x3bb68efa, 0x95ff68b5} },}, -/**/ {{{0x3fd47fff, 0xfbb43713} }, -/**/ {{0x3fd53b2a, 0xb3ac333c} }, -/**/ {{0x40081d94, 0x3da56692} }, -/**/ {{0xbbbf4d7f, 0x2985fd3f} },}, -/**/ {{{0x3fd4bfff, 0xfb113bf4} }, -/**/ {{0x3fd5824d, 0x6e8ed9c2} }, -/**/ {{0x4007cdd2, 0xa8add00f} }, -/**/ {{0x3bcf478a, 0x1c9b3657} },}, -/**/ {{{0x3fd4ffff, 0xf7f087c9} }, -/**/ {{0x3fd5c9a0, 0x07446496} }, -/**/ {{0x40077fe6, 0x444588eb} }, -/**/ {{0xbbc177dc, 0xa4eabb0c} },}, -/**/ {{{0x3fd54000, 0x088b3814} }, -/**/ {{0x3fd61123, 0x564125f9} }, -/**/ {{0x400733be, 0x6281a765} }, -/**/ {{0xbbc2c52c, 0xf57051c4} },}, -/**/ {{{0x3fd57fff, 0xf7d55966} }, -/**/ {{0x3fd658d7, 0xe194a5d5} }, -/**/ {{0x4006e94b, 0x73b47d1f} }, -/**/ {{0x3bda2fcf, 0xf9996dc6} },}, -/**/ {{{0x3fd5c000, 0x08bf2490} }, -/**/ {{0x3fd6a0be, 0xb775b28d} }, -/**/ {{0x4006a07e, 0x15b6ec28} }, -/**/ {{0xbbe0ca90, 0xaa5285b8} },}, -/**/ {{{0x3fd60000, 0x09fa853f} }, -/**/ {{0x3fd6e8d8, 0x65a66cfd} }, -/**/ {{0x40065948, 0x1c701269} }, -/**/ {{0x3bd9ea95, 0x8591e13a} },}, -/**/ {{{0x3fd64000, 0x07595fca} }, -/**/ {{0x3fd73125, 0xc0556a7c} }, -/**/ {{0x4006139b, 0xbaae9d02} }, -/**/ {{0x3bd88aff, 0x40152b83} },}, -/**/ {{{0x3fd68000, 0x031687da} }, -/**/ {{0x3fd779a7, 0x92e2cfd0} }, -/**/ {{0x4005cf6b, 0xcae0882b} }, -/**/ {{0xbbd8a4a2, 0x9f439451} },}, -/**/ {{{0x3fd6bfff, 0xf5c8cfe2} }, -/**/ {{0x3fd7c25e, 0x9fb452ed} }, -/**/ {{0x40058cab, 0xc561f1cd} }, -/**/ {{0xbbe371a6, 0xf6a37d74} },}, -/**/ {{{0x3fd6ffff, 0xf81df231} }, -/**/ {{0x3fd80b4b, 0xcfb4dab5} }, -/**/ {{0x40054b4f, 0x8d3ca5d3} }, -/**/ {{0x3bcb4686, 0x679dc99f} },}, -/**/ {{{0x3fd73fff, 0xfa71385e} }, -/**/ {{0x3fd8546f, 0xe007a9b6} }, -/**/ {{0x40050b4b, 0xb3b22176} }, -/**/ {{0xbbcd1540, 0xa5c73477} },}, -/**/ {{{0x3fd78000, 0x024a9c2b} }, -/**/ {{0x3fd89dcb, 0xa7fcf5cf} }, -/**/ {{0x4004cc95, 0x3159cbe1} }, -/**/ {{0xbbdc25ea, 0xd58a6ad0} },}, -/**/ {{{0x3fd7c000, 0x02eb62b8} }, -/**/ {{0x3fd8e75f, 0xec0ba5cf} }, -/**/ {{0x40048f21, 0x8731eeea} }, -/**/ {{0xbbc1cb73, 0xcc1adafb} },}, -/**/ {{{0x3fd80000, 0x054a52d1} }, -/**/ {{0x3fd9312d, 0x8bb822e9} }, -/**/ {{0x400452e6, 0x9170a729} }, -/**/ {{0xbbd8bb17, 0xeac002ee} },}, -/**/ {{{0x3fd83fff, 0xf93a00a3} }, -/**/ {{0x3fd97b35, 0x4bb9ad2a} }, -/**/ {{0x400417da, 0xae924e7f} }, -/**/ {{0x3bd4b800, 0x9a378cc7} },}, -/**/ {{{0x3fd87fff, 0xfbdc91c1} }, -/**/ {{0x3fd9c578, 0x2771b601} }, -/**/ {{0x4003ddf4, 0x78855799} }, -/**/ {{0x3bd9077d, 0xa00445d9} },}, -/**/ {{{0x3fd8bfff, 0xf6d215e6} }, -/**/ {{0x3fda0ff6, 0xe0ea4a0b} }, -/**/ {{0x4003a52b, 0x189a0989} }, -/**/ {{0xbbda6831, 0x89c0613d} },}, -/**/ {{{0x3fd90000, 0x02f734ef} }, -/**/ {{0x3fda5ab2, 0x736bf579} }, -/**/ {{0x40036d75, 0xe9244ca6} }, -/**/ {{0x3be3a6d8, 0x4b722377} },}, -/**/ {{{0x3fd94000, 0x04eef8b4} }, -/**/ {{0x3fdaa5ab, 0x9fb6e3d0} }, -/**/ {{0x400336cc, 0xc9089cb7} }, -/**/ {{0x3b9f6963, 0x22cc00bb} },}, -/**/ {{{0x3fd98000, 0x041ec76a} }, -/**/ {{0x3fdaf0e3, 0x5176c7e4} }, -/**/ {{0x40030127, 0xcb0b9506} }, -/**/ {{0x3bb1ffdb, 0x5385a849} },}, -/**/ {{{0x3fd9c000, 0x08044e47} }, -/**/ {{0x3fdb3c5a, 0x77071224} }, -/**/ {{0x4002cc7f, 0x50d75ec7} }, -/**/ {{0xbbb0fade, 0x78effc8a} },}, -/**/ {{{0x3fda0000, 0x01f8235b} }, -/**/ {{0x3fdb8811, 0xe725782e} }, -/**/ {{0x400298cc, 0x18fbfb37} }, -/**/ {{0xbbe55ed3, 0x3b50e71b} },}, -/**/ {{{0x3fda3fff, 0xfb8c6f08} }, -/**/ {{0x3fdbd40a, 0x97b086f3} }, -/**/ {{0x40026607, 0x154de04b} }, -/**/ {{0xbbdec65e, 0x455faae3} },}, -/**/ {{{0x3fda7fff, 0xfb3d63e1} }, -/**/ {{0x3fdc2045, 0x7d9a3b8a} }, -/**/ {{0x40023429, 0x7e60bfbb} }, -/**/ {{0x3be3001c, 0x154ebd33} },}, -/**/ {{{0x3fdabfff, 0xf5f45c48} }, -/**/ {{0x3fdc6cc3, 0x7b8d45e6} }, -/**/ {{0x4002032c, 0xdb1ace69} }, -/**/ {{0xbbe5ebf8, 0x3ed33616} },}, -/**/ {{{0x3fdb0000, 0x0508b34c} }, -/**/ {{0x3fdcb985, 0xa27e8d37} }, -/**/ {{0x4001d30a, 0xd4459a2b} }, -/**/ {{0xbbd01432, 0xae61e2d1} },}, -/**/ {{{0x3fdb4000, 0x0a84710c} }, -/**/ {{0x3fdd068c, 0xc3e50155} }, -/**/ {{0x4001a3bd, 0x775034dd} }, -/**/ {{0xbbe80b1e, 0x58e0e228} },}, -/**/ {{{0x3fdb7fff, 0xf692e9d8} }, -/**/ {{0x3fdd53d9, 0xc49d6627} }, -/**/ {{0x4001753e, 0xfe18066a} }, -/**/ {{0xbbb004c8, 0xf760d33e} },}, -/**/ {{{0x3fdbc000, 0x0280f14d} }, -/**/ {{0x3fdda16d, 0xe4e81013} }, -/**/ {{0x40014789, 0xa38ea052} }, -/**/ {{0x3be848bc, 0x27c9c4ea} },}, -/**/ {{{0x3fdc0000, 0x001121d1} }, -/**/ {{0x3fddef49, 0xeac018f0} }, -/**/ {{0x40011a98, 0x20b8be0c} }, -/**/ {{0xbbe1527e, 0xd0d6010e} },}, -/**/ {{{0x3fdc3fff, 0xfef662aa} }, -/**/ {{0x3fde3d6e, 0xea0c7070} }, -/**/ {{0x4000ee65, 0x32f46ccd} }, -/**/ {{0x3be8d241, 0x189a000d} },}, -/**/ {{{0x3fdc8000, 0x09845818} }, -/**/ {{0x3fde8bdd, 0xf36a8b1b} }, -/**/ {{0x4000c2eb, 0xcac73476} }, -/**/ {{0x3bd221f7, 0x12bed284} },}, -/**/ {{{0x3fdcbfff, 0xfb0493bf} }, -/**/ {{0x3fdeda97, 0xe0c60d10} }, -/**/ {{0x40009827, 0x251c7836} }, -/**/ {{0xbbe0bd54, 0x6eec41b7} },}, -/**/ {{{0x3fdcffff, 0xfd52961f} }, -/**/ {{0x3fdf299d, 0xefb3e44b} }, -/**/ {{0x40006e12, 0x74e459f5} }, -/**/ {{0xbbd93f77, 0xe969c82f} },}, -/**/ {{{0x3fdd3fff, 0xfe2319a4} }, -/**/ {{0x3fdf78f1, 0x17139490} }, -/**/ {{0x400044a9, 0x3e737e94} }, -/**/ {{0xbb91e7cc, 0x49594b7a} },}, -/**/ {{{0x3fdd7fff, 0xfa4de596} }, -/**/ {{0x3fdfc892, 0x638f49e8} }, -/**/ {{0x40001be7, 0x231057a5} }, -/**/ {{0x3bd482b0, 0xf5af9f5f} },}, -/**/ {{{0x3fddbfff, 0xfe729a69} }, -/**/ {{0x3fe00c41, 0x7c6ab019} }, -/**/ {{0x3fffe78f, 0xbf612660} }, -/**/ {{0x3bea5cda, 0x00da681e} },}, -/**/ {{{0x3fde0000, 0x09d66802} }, -/**/ {{0x3fe03461, 0xf6b883cf} }, -/**/ {{0x3fff988e, 0xbc05a87c} }, -/**/ {{0xbbe06c33, 0xf2372669} },}, -/**/ {{{0x3fde3fff, 0xfb211657} }, -/**/ {{0x3fe05cab, 0x191db8e8} }, -/**/ {{0x3fff4ac3, 0x7bcfe6be} }, -/**/ {{0xbbd5d51f, 0x5ed8d35b} },}, -/**/ {{{0x3fde8000, 0x0a3f068a} }, -/**/ {{0x3fe0851d, 0x95fb54f0} }, -/**/ {{0x3ffefe26, 0x144ca408} }, -/**/ {{0xbbc7c894, 0xa2c169c5} },}, -/**/ {{{0x3fdec000, 0x01adb060} }, -/**/ {{0x3fe0adb9, 0xdc7b54f9} }, -/**/ {{0x3ffeb2af, 0x5ebe52a7} }, -/**/ {{0x3bd4e740, 0x312c5ffd} },}, -/**/ {{{0x3fdeffff, 0xff5c0d01} }, -/**/ {{0x3fe0d680, 0x92550a8d} }, -/**/ {{0x3ffe6858, 0x0d71fdf0} }, -/**/ {{0x3bddd8a6, 0x96b35499} },}, -/**/ {{{0x3fdf3fff, 0xf93d5fcc} }, -/**/ {{0x3fe0ff72, 0x45cb4374} }, -/**/ {{0x3ffe1f19, 0x3cce5040} }, -/**/ {{0xbbc9f0ec, 0x7c1efab4} },}, -/**/ {{{0x3fdf7fff, 0xfa0dd18f} }, -/**/ {{0x3fe1288f, 0x944dd508} }, -/**/ {{0x3ffdd6ec, 0x298b874d} }, -/**/ {{0x3bea6ebd, 0x9642a0a6} },}, -/**/ {{{0x3fdfbfff, 0xfd3a9f1a} }, -/**/ {{0x3fe151d9, 0x13750f3e} }, -/**/ {{0x3ffd8fca, 0x5806a27e} }, -/**/ {{0x3bda2a03, 0xfc65ac7a} },}, -/**/ {{{0x3fdfffff, 0xfc481400} }, -/**/ {{0x3fe17b4f, 0x598944ca} }, -/**/ {{0x3ffd49ad, 0x82532170} }, -/**/ {{0x3bc4412e, 0x3d236dc3} },}, -/**/ {{{0x3fe01fff, 0xff53786c} }, -/**/ {{0x3fe1a4f3, 0x07d83d47} }, -/**/ {{0x3ffd048f, 0x851bffeb} }, -/**/ {{0x3bd1589d, 0x29f81b14} },}, -/**/ {{{0x3fe03fff, 0xfee301b7} }, -/**/ {{0x3fe1cec4, 0xb8a6a382} }, -/**/ {{0x3ffcc06a, 0x7c519db6} }, -/**/ {{0x3bd370e6, 0x5b24d6b2} },}, -/**/ {{{0x3fe06000, 0x006e36bf} }, -/**/ {{0x3fe1f8c5, 0x114eb8be} }, -/**/ {{0x3ffc7d38, 0xa34d6786} }, -/**/ {{0xbbea92de, 0x4b98c1d4} },}, -/**/ {{{0x3fe07fff, 0xfd60aa43} }, -/**/ {{0x3fe222f4, 0xabeccecb} }, -/**/ {{0x3ffc3af4, 0x77342ac4} }, -/**/ {{0xbbdd47f6, 0x03a5c2c2} },}, -/**/ {{{0x3fe0a000, 0x037762e8} }, -/**/ {{0x3fe24d54, 0x3f99efe8} }, -/**/ {{0x3ffbf998, 0x75f54fab} }, -/**/ {{0x3bedf7f4, 0x15771a46} },}, -/**/ {{{0x3fe0bfff, 0xff1c6921} }, -/**/ {{0x3fe277e4, 0x598e35d0} }, -/**/ {{0x3ffbb91f, 0x8addd186} }, -/**/ {{0x3be0f16c, 0x5e0e5a73} },}, -/**/ {{{0x3fe0dfff, 0xff07154b} }, -/**/ {{0x3fe2a2a5, 0xb6bc3986} }, -/**/ {{0x3ffb7984, 0x8301646d} }, -/**/ {{0xbbf02dd0, 0xbbaa5310} },}, -/**/ {{{0x3fe10000, 0x02fcdda4} }, -/**/ {{0x3fe2cd99, 0x02a59f1e} }, -/**/ {{0x3ffb3ac2, 0x705219bf} }, -/**/ {{0xbbe59357, 0x112fa616} },}, -/**/ {{{0x3fe12000, 0x01ce1140} }, -/**/ {{0x3fe2f8be, 0xdf0a67c2} }, -/**/ {{0x3ffafcd4, 0x9ab8ae2a} }, -/**/ {{0x3be2c542, 0x9303f346} },}, -/**/ {{{0x3fe14000, 0x04d0f355} }, -/**/ {{0x3fe32418, 0x08fcc7bf} }, -/**/ {{0x3ffabfb6, 0x497b9a36} }, -/**/ {{0x3bebc044, 0xb5a59234} },}, -/**/ {{{0x3fe16000, 0x00fb0c8a} }, -/**/ {{0x3fe34fa5, 0x2471618b} }, -/**/ {{0x3ffa8363, 0x0d26d117} }, -/**/ {{0xbbdbfbb2, 0x3f7bb7c9} },}, -/**/ {{{0x3fe18000, 0x026f10b3} }, -/**/ {{0x3fe37b66, 0xf7579056} }, -/**/ {{0x3ffa47d6, 0x6b4cf4b1} }, -/**/ {{0x3bf0f6b4, 0xaf0b5de9} },}, -/**/ {{{0x3fe19fff, 0xfd0978f8} }, -/**/ {{0x3fe3a75e, 0x290cc78c} }, -/**/ {{0x3ffa0d0c, 0x36c21315} }, -/**/ {{0x3beb2129, 0xa296b262} },}, -/**/ {{{0x3fe1bfff, 0xfd94840b} }, -/**/ {{0x3fe3d38b, 0x85b4e4a4} }, -/**/ {{0x3ff9d300, 0x32f2ecef} }, -/**/ {{0xbbdbab1a, 0xb9bb7d74} },}, -/**/ {{{0x3fe1dfff, 0xfbda1ea1} }, -/**/ {{0x3fe3ffef, 0xbf3cee2f} }, -/**/ {{0x3ff999ae, 0x6770fed8} }, -/**/ {{0x3bda0bdc, 0xb4ace9a4} },}, -/**/ {{{0x3fe1ffff, 0xfc989533} }, -/**/ {{0x3fe42c8b, 0x9c27900c} }, -/**/ {{0x3ff96112, 0xe0d9f1ac} }, -/**/ {{0xbbee19eb, 0x2fa2d81a} },}, -/**/ {{{0x3fe22000, 0x012b8d26} }, -/**/ {{0x3fe4595f, 0xe11975ca} }, -/**/ {{0x3ff92929, 0xcdaa4e80} }, -/**/ {{0x3bf23382, 0xacc82d4b} },}, -/**/ {{{0x3fe24000, 0x04f4d6af} }, -/**/ {{0x3fe4866d, 0x4d224131} }, -/**/ {{0x3ff8f1ef, 0x815c34e8} }, -/**/ {{0xbbd0c6ff, 0x3b740a99} },}, -/**/ {{{0x3fe25fff, 0xfcc07bda} }, -/**/ {{0x3fe4b3b4, 0x98b7d010} }, -/**/ {{0x3ff8bb60, 0x73e7ffa1} }, -/**/ {{0x3bebc31b, 0x1ad7a9c2} },}, -/**/ {{{0x3fe28000, 0x042d9639} }, -/**/ {{0x3fe4e136, 0xb64540d1} }, -/**/ {{0x3ff88578, 0xf4374938} }, -/**/ {{0x3be36de9, 0x1b85e901} },}, -/**/ {{{0x3fe2a000, 0x03be29a0} }, -/**/ {{0x3fe50ef4, 0x52bffd96} }, -/**/ {{0x3ff85035, 0xc0042c06} }, -/**/ {{0x3be15d01, 0x76f5efbd} },}, -/**/ {{{0x3fe2bfff, 0xfaa91f12} }, -/**/ {{0x3fe53cee, 0x3e2f4e0d} }, -/**/ {{0x3ff81b93, 0x8542df07} }, -/**/ {{0x3be555cd, 0x17662a2b} },}, -/**/ {{{0x3fe2dfff, 0xfe884891} }, -/**/ {{0x3fe56b25, 0x6c1a2470} }, -/**/ {{0x3ff7e78e, 0xe422ea70} }, -/**/ {{0x3bf03504, 0xbd030c11} },}, -/**/ {{{0x3fe2ffff, 0xfe87152b} }, -/**/ {{0x3fe5999a, 0x9beaaaa1} }, -/**/ {{0x3ff7b424, 0xd18fe9b3} }, -/**/ {{0xbb649a5f, 0x773e0e64} },}, -/**/ {{{0x3fe31fff, 0xffc1a721} }, -/**/ {{0x3fe5c84e, 0xafe0e564} }, -/**/ {{0x3ff78152, 0x338db8d4} }, -/**/ {{0x3beaf428, 0x5da8e935} },}, -/**/ {{{0x3fe33fff, 0xff70a372} }, -/**/ {{0x3fe5f742, 0x82191d64} }, -/**/ {{0x3ff74f14, 0x1122bcae} }, -/**/ {{0x3bdb1c4b, 0xdee4bfaf} },}, -/**/ {{{0x3fe36000, 0x0436e836} }, -/**/ {{0x3fe62676, 0xfde6ccff} }, -/**/ {{0x3ff71d67, 0x7644252c} }, -/**/ {{0xbbec3d10, 0xe08c3afb} },}, -/**/ {{{0x3fe37fff, 0xfcbe9641} }, -/**/ {{0x3fe655ec, 0xee9ffdaf} }, -/**/ {{0x3ff6ec49, 0xa6fc0515} }, -/**/ {{0x3bdda453, 0x2ed29567} },}, -/**/ {{{0x3fe39fff, 0xffb6d6ca} }, -/**/ {{0x3fe685a5, 0x5e67a1e1} }, -/**/ {{0x3ff6bbb7, 0xbc2ae969} }, -/**/ {{0x3becbf7b, 0x2ef43882} },}, -/**/ {{{0x3fe3c000, 0x04934fec} }, -/**/ {{0x3fe6b5a1, 0x2cc07d75} }, -/**/ {{0x3ff68baf, 0x10b02ef8} }, -/**/ {{0xbbe7c8fb, 0xfeb7cabd} },}, -/**/ {{{0x3fe3e000, 0x03f5cf7f} }, -/**/ {{0x3fe6e5e1, 0x3e59def6} }, -/**/ {{0x3ff65c2d, 0x0e61500f} }, -/**/ {{0xbbe30ba4, 0x035f7845} },}, -/**/ {{{0x3fe40000, 0x05280ad9} }, -/**/ {{0x3fe71666, 0x91ab4c3e} }, -/**/ {{0x3ff62d2f, 0x19f01c90} }, -/**/ {{0xbbf1e9f5, 0xffe95f6a} },}, -/**/ {{{0x3fe42000, 0x049efb65} }, -/**/ {{0x3fe74732, 0x18af3b9d} }, -/**/ {{0x3ff5feb2, 0xb86465e4} }, -/**/ {{0x3bc4cad7, 0x280d591e} },}, -/**/ {{{0x3fe44000, 0x0035ccb6} }, -/**/ {{0x3fe77844, 0xcb4ff1e5} }, -/**/ {{0x3ff5d0b5, 0x7c455428} }, -/**/ {{0x3bed8c18, 0x7ba5617c} },}, -/**/ {{{0x3fe46000, 0x03346717} }, -/**/ {{0x3fe7a99f, 0xba258778} }, -/**/ {{0x3ff5a334, 0xf4392254} }, -/**/ {{0xbbefd14a, 0xfc84a570} },}, -/**/ {{{0x3fe48000, 0x03002575} }, -/**/ {{0x3fe7db43, 0xd836768f} }, -/**/ {{0x3ff5762e, 0xdcf97e0c} }, -/**/ {{0xbbdd7eba, 0x5f5df49e} },}, -/**/ {{{0x3fe4a000, 0x055bf381} }, -/**/ {{0x3fe80d32, 0x35edeefa} }, -/**/ {{0x3ff549a0, 0xea46e31f} }, -/**/ {{0xbbdba522, 0x76823eac} },}, -/**/ {{{0x3fe4c000, 0x04ce10e3} }, -/**/ {{0x3fe83f6b, 0xd67dc1a8} }, -/**/ {{0x3ff51d88, 0xed82bcc4} }, -/**/ {{0xbbeae92d, 0x077d29ea} },}, -/**/ {{{0x3fe4e000, 0x016c60e1} }, -/**/ {{0x3fe871f1, 0xca0aaf31} }, -/**/ {{0x3ff4f1e4, 0xbdacbf16} }, -/**/ {{0x3be82958, 0x46ee425e} },}, -/**/ {{{0x3fe4ffff, 0xff966f0a} }, -/**/ {{0x3fe8a4c5, 0x2bff2dae} }, -/**/ {{0x3ff4c6b2, 0x3917657e} }, -/**/ {{0xbbf127c2, 0x5c86c705} },}, -/**/ {{{0x3fe52000, 0x0076e6eb} }, -/**/ {{0x3fe8d7e7, 0x175651e8} }, -/**/ {{0x3ff49bef, 0x4f459b05} }, -/**/ {{0xbbb1e9d1, 0x4181bbfc} },}, -/**/ {{{0x3fe54000, 0x03d12d3b} }, -/**/ {{0x3fe90b58, 0xa976ed56} }, -/**/ {{0x3ff47199, 0xfdf24af4} }, -/**/ {{0x3be38c17, 0xc30decaf} },}, -/**/ {{{0x3fe55fff, 0xfce7fa8d} }, -/**/ {{0x3fe93f1a, 0xf03a3a09} }, -/**/ {{0x3ff447b0, 0x5f13234b} }, -/**/ {{0x3bf1b8b2, 0x70df7e20} },}, -/**/ {{{0x3fe58000, 0x0331b46a} }, -/**/ {{0x3fe9732f, 0x38e83134} }, -/**/ {{0x3ff41e30, 0x68d8b41b} }, -/**/ {{0xbbee24d8, 0xb90bc28b} },}, -/**/ {{{0x3fe59fff, 0xfc14848e} }, -/**/ {{0x3fe9a796, 0x8471b489} }, -/**/ {{0x3ff3f518, 0x5de3aa73} }, -/**/ {{0xbbecacd9, 0xe0761536} },}, -/**/ {{{0x3fe5bfff, 0xfb7cd395} }, -/**/ {{0x3fe9dc52, 0x24a8b955} }, -/**/ {{0x3ff3cc66, 0x4f8fff15} }, -/**/ {{0xbbf67c97, 0x82045611} },}, -/**/ {{{0x3fe5e000, 0x000dcc40} }, -/**/ {{0x3fea1163, 0x4df5b93e} }, -/**/ {{0x3ff3a418, 0x75853228} }, -/**/ {{0xbbf585da, 0xd481f350} },}, -/**/ {{{0x3fe60000, 0x02efd2fc} }, -/**/ {{0x3fea46cb, 0x30d16323} }, -/**/ {{0x3ff37c2d, 0x187962ae} }, -/**/ {{0x3bf004c3, 0xa5f77bb0} },}, -/**/ {{{0x3fe61fff, 0xfeb8088a} }, -/**/ {{0x3fea7c8b, 0x053920c0} }, -/**/ {{0x3ff354a2, 0x891769a9} }, -/**/ {{0x3bbc6b30, 0x3fee3029} },}, -/**/ {{{0x3fe64000, 0x00f3ca06} }, -/**/ {{0x3feab2a4, 0x28a1911a} }, -/**/ {{0x3ff32d77, 0x0a6f0a4a} }, -/**/ {{0x3bf2a6f8, 0xfac5081a} },}, -/**/ {{{0x3fe65fff, 0xfe9ec2f4} }, -/**/ {{0x3feae917, 0xd4ce7239} }, -/**/ {{0x3ff306a9, 0x0751a948} }, -/**/ {{0xbbe950b5, 0x51ab9dbd} },}, -/**/ {{{0x3fe68000, 0x03d43966} }, -/**/ {{0x3feb1fe7, 0x708b998a} }, -/**/ {{0x3ff2e036, 0xd7a153c7} }, -/**/ {{0x3bdd36e2, 0xa1e4a14e} },}, -/**/ {{{0x3fe69fff, 0xfab67783} }, -/**/ {{0x3feb5714, 0x2e575464} }, -/**/ {{0x3ff2ba1f, 0x05006cb6} }, -/**/ {{0x3bea9a4a, 0x473c2e31} },}, -/**/ {{{0x3fe6bfff, 0xfcb65f89} }, -/**/ {{0x3feb8e9f, 0x981efd2f} }, -/**/ {{0x3ff2945f, 0xe948d9f7} }, -/**/ {{0xbbca5294, 0xe802df72} },}, -/**/ {{{0x3fe6dfff, 0xfc5609a9} }, -/**/ {{0x3febc68a, 0xfaed6ff1} }, -/**/ {{0x3ff26ef8, 0x1533411e} }, -/**/ {{0xbbf89153, 0xf51bc566} },}, -/**/ {{{0x3fe6ffff, 0xfc4eef86} }, -/**/ {{0x3febfed7, 0xc62205fe} }, -/**/ {{0x3ff249e6, 0x0e70978c} }, -/**/ {{0x3bc39021, 0xa2b9ff56} },}, -/**/ {{{0x3fe72000, 0x004d98b3} }, -/**/ {{0x3fec3787, 0x716968ad} }, -/**/ {{0x3ff22528, 0x61be7751} }, -/**/ {{0x3befc9c5, 0x74ee2211} },}, -/**/ {{{0x3fe73fff, 0xfc155075} }, -/**/ {{0x3fec709b, 0x5ec6fd4e} }, -/**/ {{0x3ff200bd, 0xb5d53311} }, -/**/ {{0x3be28a4d, 0xa269ae63} },}, -/**/ {{{0x3fe76000, 0x0498c203} }, -/**/ {{0x3fecaa15, 0x323d08c1} }, -/**/ {{0x3ff1dca4, 0x93433f65} }, -/**/ {{0x3bf8cae4, 0x14a28fb7} },}, -/**/ {{{0x3fe77fff, 0xff1e5636} }, -/**/ {{0x3fece3f6, 0x4147c12c} }, -/**/ {{0x3ff1b8db, 0xbfe294a8} }, -/**/ {{0xbbe7e19c, 0x4b56a744} },}, -/**/ {{{0x3fe7a000, 0x0226d45a} }, -/**/ {{0x3fed1e40, 0x4120eb7f} }, -/**/ {{0x3ff19561, 0xd15f8278} }, -/**/ {{0x3be64b28, 0x032c5d4c} },}, -/**/ {{{0x3fe7c000, 0x0250a5aa} }, -/**/ {{0x3fed58f4, 0xb112a1e1} }, -/**/ {{0x3ff17235, 0x8a59d565} }, -/**/ {{0xbbe716de, 0xb8dc7867} },}, -/**/ {{{0x3fe7e000, 0x0482f82e} }, -/**/ {{0x3fed9415, 0x3576bdf0} }, -/**/ {{0x3ff14f55, 0xa22a1c5b} }, -/**/ {{0x3bf207e1, 0xe1305604} },}, -/**/ {{{0x3fe80000, 0x0205003e} }, -/**/ {{0x3fedcfa3, 0x64d69ff7} }, -/**/ {{0x3ff12cc0, 0xe37eb26f} }, -/**/ {{0xbbd52ec6, 0xe32395f8} },}, -/**/ {{{0x3fe81fff, 0xfbf99411} }, -/**/ {{0x3fee0ba0, 0xebf98f51} }, -/**/ {{0x3ff10a76, 0x16ddd5d6} }, -/**/ {{0xbbece0d6, 0x59866045} },}, -/**/ {{{0x3fe84000, 0x0248e3a3} }, -/**/ {{0x3fee480f, 0x9bb7f565} }, -/**/ {{0x3ff0e873, 0xfb84e05c} }, -/**/ {{0x3bf4e5e8, 0x1595df92} },}, -/**/ {{{0x3fe86000, 0x0145c157} }, -/**/ {{0x3fee84f1, 0x0a10b3ab} }, -/**/ {{0x3ff0c6b9, 0x7cbd7b1e} }, -/**/ {{0xbbe19de6, 0xd5f121d0} },}, -/**/ {{{0x3fe88000, 0x022631b9} }, -/**/ {{0x3feec247, 0x0be1f047} }, -/**/ {{0x3ff0a545, 0x6d0b3ee6} }, -/**/ {{0xbbc272b1, 0xa3ba2c6f} },}, -/**/ {{{0x3fe8a000, 0x045f7828} }, -/**/ {{0x3fef0013, 0x6c45ba1c} }, -/**/ {{0x3ff08416, 0xaf2a0f09} }, -/**/ {{0x3be82b56, 0x5b63c799} },}, -/**/ {{{0x3fe8bfff, 0xffc686cf} }, -/**/ {{0x3fef3e57, 0xf03c824b} }, -/**/ {{0x3ff0632c, 0x33502220} }, -/**/ {{0xbbd039ad, 0x2dbeeb25} },}, -/**/ {{{0x3fe8dfff, 0xfd8644c6} }, -/**/ {{0x3fef7d16, 0x8774261d} }, -/**/ {{0x3ff04284, 0xdd5b3019} }, -/**/ {{0x3bd79f33, 0xe1eba933} },}, -/**/ {{{0x3fe8ffff, 0xfe4e7937} }, -/**/ {{0x3fefbc51, 0x1a99a641} }, -/**/ {{0x3ff0221f, 0x9f69840b} }, -/**/ {{0xbbea9e84, 0x7beee018} },}, -/**/ {{{0x3fe92000, 0x0435251f} }, -/**/ {{0x3feffc09, 0x9eb22390} }, -/**/ {{0x3ff001fb, 0x6f7c51e8} }, -/**/ {{0xbb5a12e7, 0x31032e0a} },}, - }; - -#else -#ifdef LITTLE_ENDI -static const number - xfg[186][4] = { /* xi,Fi,Gi,FFi, i=16..201 */ -/**/ {{{0x1e519d60, 0x3fb00000} }, -/**/ {{0x96c4e240, 0x3fb00557} }, -/**/ {{0x628127b7, 0x402ff554} }, -/**/ {{0x9e355b06, 0xbb9a1dee} },}, -/**/ {{{0x1b1a7010, 0x3fb10000} }, -/**/ {{0xaab892b7, 0x3fb10668} }, -/**/ {{0xbe3fdf74, 0x402e12c7} }, -/**/ {{0x037da741, 0x3ba89234} },}, -/**/ {{{0x2505e350, 0x3fb20000} }, -/**/ {{0xff547824, 0x3fb2079b} }, -/**/ {{0xde853633, 0x402c65c5} }, -/**/ {{0xe9614250, 0x3bb7486e} },}, -/**/ {{{0xfcdc4252, 0x3fb2ffff} }, -/**/ {{0x5eb16c68, 0x3fb308f3} }, -/**/ {{0xe56be74f, 0x402ae5da} }, -/**/ {{0x91a23034, 0xbb82c726} },}, -/**/ {{{0xe3ff849f, 0x3fb3ffff} }, -/**/ {{0x154999cc, 0x3fb40a71} }, -/**/ {{0x046b7352, 0x40298c43} }, -/**/ {{0x3843738f, 0x3b9aceaf} },}, -/**/ {{{0xedc9590f, 0x3fb4ffff} }, -/**/ {{0x429bdd80, 0x3fb50c17} }, -/**/ {{0x91b5d674, 0x40285384} }, -/**/ {{0xb4403d22, 0xbbc1d02d} },}, -/**/ {{{0x00ee83f7, 0x3fb60000} }, -/**/ {{0xda80cc21, 0x3fb60de7} }, -/**/ {{0xef21a2a7, 0x40273724} }, -/**/ {{0x72523ffd, 0xbb95e53c} },}, -/**/ {{{0xeb05ea41, 0x3fb6ffff} }, -/**/ {{0xb8c51bea, 0x3fb70fe4} }, -/**/ {{0xfae562ff, 0x40263370} }, -/**/ {{0x8ffe0626, 0xbb99ad0e} },}, -/**/ {{{0xdc0515f7, 0x3fb7ffff} }, -/**/ {{0x1db54498, 0x3fb81210} }, -/**/ {{0x0e7eab5c, 0x40254553} }, -/**/ {{0xd62ed686, 0xbb914c87} },}, -/**/ {{{0xe384d7ab, 0x3fb8ffff} }, -/**/ {{0x2a8d3727, 0x3fb9146c} }, -/**/ {{0xfd57f3fd, 0x40246a33} }, -/**/ {{0x5381e06d, 0xbbbbda8d} },}, -/**/ {{{0xe4832347, 0x3fb9ffff} }, -/**/ {{0xd50e1050, 0x3fba16fa} }, -/**/ {{0xc5537a96, 0x40239fe2} }, -/**/ {{0xc111eabb, 0x3bc7f695} },}, -/**/ {{{0x274540e3, 0x3fbb0000} }, -/**/ {{0x7ae68517, 0x3fbb19be} }, -/**/ {{0x3637e946, 0x4022e481} }, -/**/ {{0x8dbd9d93, 0x3bc307f8} },}, -/**/ {{{0xfebf2e9b, 0x3fbbffff} }, -/**/ {{0x8369cd19, 0x3fbc1cb8} }, -/**/ {{0x17aef223, 0x40223676} }, -/**/ {{0x424a9cf3, 0x3bc50038} },}, -/**/ {{{0x23529045, 0x3fbd0000} }, -/**/ {{0xc11d7ef7, 0x3fbd1feb} }, -/**/ {{0xb8e43d4e, 0x4021945f} }, -/**/ {{0x52a6f224, 0x3b812007} },}, -/**/ {{{0xd872a829, 0x3fbdffff} }, -/**/ {{0x8ee4d6b7, 0x3fbe2359} }, -/**/ {{0x76195d5f, 0x4020fd0c} }, -/**/ {{0x85fdca85, 0xbbb4d9ab} },}, -/**/ {{{0xff323b84, 0x3fbeffff} }, -/**/ {{0xec9073e5, 0x3fbf2704} }, -/**/ {{0x3020200f, 0x40206f71} }, -/**/ {{0x12836992, 0x3bb77aa2} },}, -/**/ {{{0x0ce79195, 0x3fc00000} }, -/**/ {{0xbc30cc61, 0x3fc01577} }, -/**/ {{0xd6564a88, 0x401fd549} }, -/**/ {{0x965c0ad0, 0xbbc8926f} },}, -/**/ {{{0xee40e918, 0x3fc07fff} }, -/**/ {{0x8279ac01, 0x3fc0978d} }, -/**/ {{0x9294bc03, 0x401edbb5} }, -/**/ {{0x4aae45d6, 0xbb80a533} },}, -/**/ {{{0x0cc091fd, 0x3fc10000} }, -/**/ {{0x44dfb2f7, 0x3fc119c5} }, -/**/ {{0x067d8e18, 0x401df0bb} }, -/**/ {{0x4ff642a4, 0xbbcc2c18} },}, -/**/ {{{0x0d9936a1, 0x3fc18000} }, -/**/ {{0xb9085a4b, 0x3fc19c1f} }, -/**/ {{0x71ce3629, 0x401d131a} }, -/**/ {{0x0669355b, 0xbbc36553} },}, -/**/ {{{0xed5f3188, 0x3fc1ffff} }, -/**/ {{0xee74bf2d, 0x3fc21e9d} }, -/**/ {{0xff0cd655, 0x401c41b6} }, -/**/ {{0x478ecfc5, 0x3b8867f5} },}, -/**/ {{{0x05f06a51, 0x3fc28000} }, -/**/ {{0x550b313f, 0x3fc2a141} }, -/**/ {{0x1702e6d2, 0x401b7b92} }, -/**/ {{0x380131fe, 0xbbadab51} },}, -/**/ {{{0xfe3d339e, 0x3fc2ffff} }, -/**/ {{0xa75f76df, 0x3fc3240a} }, -/**/ {{0xfcb6409d, 0x401abfc8} }, -/**/ {{0x0d291d83, 0x3bc60bcf} },}, -/**/ {{{0xed888d6f, 0x3fc37fff} }, -/**/ {{0x13cc5db7, 0x3fc3a6fb} }, -/**/ {{0x8ed5320d, 0x401a0d8f} }, -/**/ {{0x4eef03ab, 0x3bb8a48e} },}, -/**/ {{{0x02ca050d, 0x3fc40000} }, -/**/ {{0xe25776bb, 0x3fc42a13} }, -/**/ {{0xfa84c2bc, 0x4019642d} }, -/**/ {{0xcc56516f, 0xbbd0bd5d} },}, -/**/ {{{0xf2531f5c, 0x3fc47fff} }, -/**/ {{0xdeb73404, 0x3fc4ad55} }, -/**/ {{0xf86e9035, 0x4018c2fe} }, -/**/ {{0x5aa287c8, 0x3b9cffe7} },}, -/**/ {{{0x13774992, 0x3fc50000} }, -/**/ {{0x7d0ee307, 0x3fc530c2} }, -/**/ {{0x370caf35, 0x4018296c} }, -/**/ {{0xf91d6532, 0xbbcf75d1} },}, -/**/ {{{0xedddcb2d, 0x3fc57fff} }, -/**/ {{0x5db4347d, 0x3fc5b45a} }, -/**/ {{0x52190c0e, 0x401796ee} }, -/**/ {{0x17d5d076, 0x3b88a25f} },}, -/**/ {{{0xf41949a0, 0x3fc5ffff} }, -/**/ {{0x13bf986a, 0x3fc6381f} }, -/**/ {{0x2d2255fd, 0x40170b09} }, -/**/ {{0xb1bcd5e7, 0xbb9bfb23} },}, -/**/ {{{0xf834d3a1, 0x3fc67fff} }, -/**/ {{0x8ec85952, 0x3fc6bc11} }, -/**/ {{0x62cf2268, 0x4016854c} }, -/**/ {{0x82e39e04, 0x3b9ee53b} },}, -/**/ {{{0xfd9106ea, 0x3fc6ffff} }, -/**/ {{0xf298f6f7, 0x3fc74032} }, -/**/ {{0x1f4f84a9, 0x40160551} }, -/**/ {{0x112634b8, 0xbbb59c4a} },}, -/**/ {{{0x0f649a4f, 0x3fc78000} }, -/**/ {{0x6ca53abc, 0x3fc7c484} }, -/**/ {{0x4809d175, 0x40158ab9} }, -/**/ {{0x73d3cd2e, 0x3bc91c75} },}, -/**/ {{{0xef06bbd8, 0x3fc7ffff} }, -/**/ {{0xdf7d76ad, 0x3fc84906} }, -/**/ {{0xdd2b30a6, 0x4015152e} }, -/**/ {{0x084c3eef, 0xbbbfa2da} },}, -/**/ {{{0x021c6334, 0x3fc88000} }, -/**/ {{0xd965f986, 0x3fc8cdbb} }, -/**/ {{0x51b74296, 0x4014a462} }, -/**/ {{0x74dcfe0b, 0xbb9ec02e} },}, -/**/ {{{0xf38d0756, 0x3fc8ffff} }, -/**/ {{0x28e173c7, 0x3fc952a4} }, -/**/ {{0x17b59ebd, 0x4014380b} }, -/**/ {{0xb77589f0, 0xbbcd0f1c} },}, -/**/ {{{0x104efca1, 0x3fc98000} }, -/**/ {{0x4644d23c, 0x3fc9d7c1} }, -/**/ {{0xcb1eabd5, 0x4013cfe5} }, -/**/ {{0xea188d9e, 0xbbd5d6f7} },}, -/**/ {{{0x09417b30, 0x3fca0000} }, -/**/ {{0x096d76aa, 0x3fca5d14} }, -/**/ {{0xb3723db0, 0x40136bb4} }, -/**/ {{0xfbf3979c, 0x3bbe3e0d} },}, -/**/ {{{0xeb1c23ec, 0x3fca7fff} }, -/**/ {{0xab60288d, 0x3fcae29d} }, -/**/ {{0x783071d7, 0x40130b3e} }, -/**/ {{0x3d5384bf, 0xbbc7dd82} },}, -/**/ {{{0xfb171c13, 0x3fcaffff} }, -/**/ {{0xa221a96b, 0x3fcb685f} }, -/**/ {{0xd8c0747d, 0x4012ae4d} }, -/**/ {{0xd5554972, 0x3bd4644b} },}, -/**/ {{{0x0aba44be, 0x3fcb8000} }, -/**/ {{0xecdf241f, 0x3fcbee5a} }, -/**/ {{0xc6fad63b, 0x401254b1} }, -/**/ {{0xd092b85a, 0x3ba41916} },}, -/**/ {{{0x113d2a3e, 0x3fcc0000} }, -/**/ {{0xb3e92543, 0x3fcc7490} }, -/**/ {{0x9a62c035, 0x4011fe3c} }, -/**/ {{0x41a03739, 0xbba3cc39} },}, -/**/ {{{0xf49e00ce, 0x3fcc7fff} }, -/**/ {{0x0f59eab0, 0x3fccfb02} }, -/**/ {{0xe956a631, 0x4011aac3} }, -/**/ {{0xbfa8cb5b, 0xbbb7a383} },}, -/**/ {{{0x05f611ab, 0x3fcd0000} }, -/**/ {{0x89e6844e, 0x3fcd81b0} }, -/**/ {{0xf391268d, 0x40115a1f} }, -/**/ {{0xb2dc91f3, 0x3bd39b5c} },}, -/**/ {{{0x14764ceb, 0x3fcd8000} }, -/**/ {{0x27debf0d, 0x3fce089d} }, -/**/ {{0xfbc84740, 0x40110c2b} }, -/**/ {{0x84712510, 0x3bc14d4d} },}, -/**/ {{{0x14bcea76, 0x3fce0000} }, -/**/ {{0x16dbc820, 0x3fce8fc9} }, -/**/ {{0xa00ca48e, 0x4010c0c5} }, -/**/ {{0x640f1b9e, 0xbbd33788} },}, -/**/ {{{0xfd7995bd, 0x3fce7fff} }, -/**/ {{0x88b50424, 0x3fcf1735} }, -/**/ {{0xbe02169a, 0x401077cc} }, -/**/ {{0x221fdf77, 0xbbb61fee} },}, -/**/ {{{0x0cc35436, 0x3fcf0000} }, -/**/ {{0xfd21a40b, 0x3fcf9ee3} }, -/**/ {{0x1ee7ffe8, 0x40103123} }, -/**/ {{0xc79ff5c1, 0x3bd427e3} },}, -/**/ {{{0x01d1da33, 0x3fcf8000} }, -/**/ {{0xb7dbe15c, 0x3fd0136a} }, -/**/ {{0x77d559e5, 0x400fd959} }, -/**/ {{0xd67948d7, 0x3bb0c6a1} },}, -/**/ {{{0x060c13b2, 0x3fd00000} }, -/**/ {{0xaaad4f18, 0x3fd05785} }, -/**/ {{0x2675d182, 0x400f549e} }, -/**/ {{0x18f0dd10, 0xbbc15208} },}, -/**/ {{{0x03885492, 0x3fd04000} }, -/**/ {{0x660542d7, 0x3fd09bc3} }, -/**/ {{0xdf3f5fec, 0x400ed3e2} }, -/**/ {{0xb883ae62, 0xbbd95657} },}, -/**/ {{{0x052f5a13, 0x3fd08000} }, -/**/ {{0x9a195045, 0x3fd0e024} }, -/**/ {{0xfa68f2c8, 0x400e56f8} }, -/**/ {{0x5a543e8e, 0x3bded7ba} },}, -/**/ {{{0x02ba1af5, 0x3fd0c000} }, -/**/ {{0xe2e7f24b, 0x3fd124a9} }, -/**/ {{0xbffe633f, 0x400dddb4} }, -/**/ {{0x0c60278f, 0xbbdcba86} },}, -/**/ {{{0xf76642c1, 0x3fd0ffff} }, -/**/ {{0xe162ffe6, 0x3fd16953} }, -/**/ {{0x0311d5d5, 0x400d67ed} }, -/**/ {{0xe40c5f9e, 0x3b7b1f4a} },}, -/**/ {{{0x033602f0, 0x3fd14000} }, -/**/ {{0x5f49508e, 0x3fd1ae23} }, -/**/ {{0xb8708266, 0x400cf57a} }, -/**/ {{0x8620f301, 0xbbd6a6c2} },}, -/**/ {{{0xfefd1a13, 0x3fd17fff} }, -/**/ {{0xdb2a9ba1, 0x3fd1f318} }, -/**/ {{0x8d11009e, 0x400c8639} }, -/**/ {{0x69b21d3b, 0x3bd3a9c6} },}, -/**/ {{{0xf718365d, 0x3fd1bfff} }, -/**/ {{0x0c41e3ac, 0x3fd23835} }, -/**/ {{0xe02be47c, 0x400c1a06} }, -/**/ {{0x129e8cd1, 0x3bdb961a} },}, -/**/ {{{0xff001e00, 0x3fd1ffff} }, -/**/ {{0xb2f6395e, 0x3fd27d78} }, -/**/ {{0xf2fe9a85, 0x400bb0c1} }, -/**/ {{0xe68fd7d8, 0x3be074a9} },}, -/**/ {{{0xfe425a6a, 0x3fd23fff} }, -/**/ {{0x618faabe, 0x3fd2c2e4} }, -/**/ {{0x190b18df, 0x400b4a4c} }, -/**/ {{0xf615aad1, 0xbbdf0d1f} },}, -/**/ {{{0x059ec1db, 0x3fd28000} }, -/**/ {{0xd8583884, 0x3fd30878} }, -/**/ {{0x0cd82bc2, 0x400ae688} }, -/**/ {{0x141c1f8d, 0xbbd563c3} },}, -/**/ {{{0x000dd081, 0x3fd2c000} }, -/**/ {{0xaffdb6d8, 0x3fd34e36} }, -/**/ {{0x5270fc15, 0x400a855a} }, -/**/ {{0x9f2cdafd, 0xbbc6d88d} },}, -/**/ {{{0xfc1dcd2b, 0x3fd2ffff} }, -/**/ {{0xa95875bc, 0x3fd3941e} }, -/**/ {{0xaa9502b6, 0x400a26a8} }, -/**/ {{0x8389b15c, 0xbbe13cad} },}, -/**/ {{{0xf6c0d4a0, 0x3fd33fff} }, -/**/ {{0x739845f5, 0x3fd3da31} }, -/**/ {{0x4d2573a0, 0x4009ca5a} }, -/**/ {{0xacaee379, 0xbbc71636} },}, -/**/ {{{0x06b16793, 0x3fd38000} }, -/**/ {{0xdbc088f0, 0x3fd4206f} }, -/**/ {{0x9344e33a, 0x40097057} }, -/**/ {{0x1d7a4f81, 0xbbc2c052} },}, -/**/ {{{0x07358fa3, 0x3fd3c000} }, -/**/ {{0x6f23311d, 0x3fd466da} }, -/**/ {{0x5aa612ea, 0x4009188a} }, -/**/ {{0x685e8edc, 0x3b8653a5} },}, -/**/ {{{0xfc3b18cf, 0x3fd3ffff} }, -/**/ {{0xe9282e6b, 0x3fd4ad71} }, -/**/ {{0x641e643d, 0x4008c2dd} }, -/**/ {{0x3f567c64, 0x3b95f0ef} },}, -/**/ {{{0x000dd2a8, 0x3fd44000} }, -/**/ {{0x1fa3f2d1, 0x3fd4f437} }, -/**/ {{0x6072f821, 0x40086f3c} }, -/**/ {{0x95ff68b5, 0x3bb68efa} },}, -/**/ {{{0xfbb43713, 0x3fd47fff} }, -/**/ {{0xb3ac333c, 0x3fd53b2a} }, -/**/ {{0x3da56692, 0x40081d94} }, -/**/ {{0x2985fd3f, 0xbbbf4d7f} },}, -/**/ {{{0xfb113bf4, 0x3fd4bfff} }, -/**/ {{0x6e8ed9c2, 0x3fd5824d} }, -/**/ {{0xa8add00f, 0x4007cdd2} }, -/**/ {{0x1c9b3657, 0x3bcf478a} },}, -/**/ {{{0xf7f087c9, 0x3fd4ffff} }, -/**/ {{0x07446496, 0x3fd5c9a0} }, -/**/ {{0x444588eb, 0x40077fe6} }, -/**/ {{0xa4eabb0c, 0xbbc177dc} },}, -/**/ {{{0x088b3814, 0x3fd54000} }, -/**/ {{0x564125f9, 0x3fd61123} }, -/**/ {{0x6281a765, 0x400733be} }, -/**/ {{0xf57051c4, 0xbbc2c52c} },}, -/**/ {{{0xf7d55966, 0x3fd57fff} }, -/**/ {{0xe194a5d5, 0x3fd658d7} }, -/**/ {{0x73b47d1f, 0x4006e94b} }, -/**/ {{0xf9996dc6, 0x3bda2fcf} },}, -/**/ {{{0x08bf2490, 0x3fd5c000} }, -/**/ {{0xb775b28d, 0x3fd6a0be} }, -/**/ {{0x15b6ec28, 0x4006a07e} }, -/**/ {{0xaa5285b8, 0xbbe0ca90} },}, -/**/ {{{0x09fa853f, 0x3fd60000} }, -/**/ {{0x65a66cfd, 0x3fd6e8d8} }, -/**/ {{0x1c701269, 0x40065948} }, -/**/ {{0x8591e13a, 0x3bd9ea95} },}, -/**/ {{{0x07595fca, 0x3fd64000} }, -/**/ {{0xc0556a7c, 0x3fd73125} }, -/**/ {{0xbaae9d02, 0x4006139b} }, -/**/ {{0x40152b83, 0x3bd88aff} },}, -/**/ {{{0x031687da, 0x3fd68000} }, -/**/ {{0x92e2cfd0, 0x3fd779a7} }, -/**/ {{0xcae0882b, 0x4005cf6b} }, -/**/ {{0x9f439451, 0xbbd8a4a2} },}, -/**/ {{{0xf5c8cfe2, 0x3fd6bfff} }, -/**/ {{0x9fb452ed, 0x3fd7c25e} }, -/**/ {{0xc561f1cd, 0x40058cab} }, -/**/ {{0xf6a37d74, 0xbbe371a6} },}, -/**/ {{{0xf81df231, 0x3fd6ffff} }, -/**/ {{0xcfb4dab5, 0x3fd80b4b} }, -/**/ {{0x8d3ca5d3, 0x40054b4f} }, -/**/ {{0x679dc99f, 0x3bcb4686} },}, -/**/ {{{0xfa71385e, 0x3fd73fff} }, -/**/ {{0xe007a9b6, 0x3fd8546f} }, -/**/ {{0xb3b22176, 0x40050b4b} }, -/**/ {{0xa5c73477, 0xbbcd1540} },}, -/**/ {{{0x024a9c2b, 0x3fd78000} }, -/**/ {{0xa7fcf5cf, 0x3fd89dcb} }, -/**/ {{0x3159cbe1, 0x4004cc95} }, -/**/ {{0xd58a6ad0, 0xbbdc25ea} },}, -/**/ {{{0x02eb62b8, 0x3fd7c000} }, -/**/ {{0xec0ba5cf, 0x3fd8e75f} }, -/**/ {{0x8731eeea, 0x40048f21} }, -/**/ {{0xcc1adafb, 0xbbc1cb73} },}, -/**/ {{{0x054a52d1, 0x3fd80000} }, -/**/ {{0x8bb822e9, 0x3fd9312d} }, -/**/ {{0x9170a729, 0x400452e6} }, -/**/ {{0xeac002ee, 0xbbd8bb17} },}, -/**/ {{{0xf93a00a3, 0x3fd83fff} }, -/**/ {{0x4bb9ad2a, 0x3fd97b35} }, -/**/ {{0xae924e7f, 0x400417da} }, -/**/ {{0x9a378cc7, 0x3bd4b800} },}, -/**/ {{{0xfbdc91c1, 0x3fd87fff} }, -/**/ {{0x2771b601, 0x3fd9c578} }, -/**/ {{0x78855799, 0x4003ddf4} }, -/**/ {{0xa00445d9, 0x3bd9077d} },}, -/**/ {{{0xf6d215e6, 0x3fd8bfff} }, -/**/ {{0xe0ea4a0b, 0x3fda0ff6} }, -/**/ {{0x189a0989, 0x4003a52b} }, -/**/ {{0x89c0613d, 0xbbda6831} },}, -/**/ {{{0x02f734ef, 0x3fd90000} }, -/**/ {{0x736bf579, 0x3fda5ab2} }, -/**/ {{0xe9244ca6, 0x40036d75} }, -/**/ {{0x4b722377, 0x3be3a6d8} },}, -/**/ {{{0x04eef8b4, 0x3fd94000} }, -/**/ {{0x9fb6e3d0, 0x3fdaa5ab} }, -/**/ {{0xc9089cb7, 0x400336cc} }, -/**/ {{0x22cc00bb, 0x3b9f6963} },}, -/**/ {{{0x041ec76a, 0x3fd98000} }, -/**/ {{0x5176c7e4, 0x3fdaf0e3} }, -/**/ {{0xcb0b9506, 0x40030127} }, -/**/ {{0x5385a849, 0x3bb1ffdb} },}, -/**/ {{{0x08044e47, 0x3fd9c000} }, -/**/ {{0x77071224, 0x3fdb3c5a} }, -/**/ {{0x50d75ec7, 0x4002cc7f} }, -/**/ {{0x78effc8a, 0xbbb0fade} },}, -/**/ {{{0x01f8235b, 0x3fda0000} }, -/**/ {{0xe725782e, 0x3fdb8811} }, -/**/ {{0x18fbfb37, 0x400298cc} }, -/**/ {{0x3b50e71b, 0xbbe55ed3} },}, -/**/ {{{0xfb8c6f08, 0x3fda3fff} }, -/**/ {{0x97b086f3, 0x3fdbd40a} }, -/**/ {{0x154de04b, 0x40026607} }, -/**/ {{0x455faae3, 0xbbdec65e} },}, -/**/ {{{0xfb3d63e1, 0x3fda7fff} }, -/**/ {{0x7d9a3b8a, 0x3fdc2045} }, -/**/ {{0x7e60bfbb, 0x40023429} }, -/**/ {{0x154ebd33, 0x3be3001c} },}, -/**/ {{{0xf5f45c48, 0x3fdabfff} }, -/**/ {{0x7b8d45e6, 0x3fdc6cc3} }, -/**/ {{0xdb1ace69, 0x4002032c} }, -/**/ {{0x3ed33616, 0xbbe5ebf8} },}, -/**/ {{{0x0508b34c, 0x3fdb0000} }, -/**/ {{0xa27e8d37, 0x3fdcb985} }, -/**/ {{0xd4459a2b, 0x4001d30a} }, -/**/ {{0xae61e2d1, 0xbbd01432} },}, -/**/ {{{0x0a84710c, 0x3fdb4000} }, -/**/ {{0xc3e50155, 0x3fdd068c} }, -/**/ {{0x775034dd, 0x4001a3bd} }, -/**/ {{0x58e0e228, 0xbbe80b1e} },}, -/**/ {{{0xf692e9d8, 0x3fdb7fff} }, -/**/ {{0xc49d6627, 0x3fdd53d9} }, -/**/ {{0xfe18066a, 0x4001753e} }, -/**/ {{0xf760d33e, 0xbbb004c8} },}, -/**/ {{{0x0280f14d, 0x3fdbc000} }, -/**/ {{0xe4e81013, 0x3fdda16d} }, -/**/ {{0xa38ea052, 0x40014789} }, -/**/ {{0x27c9c4ea, 0x3be848bc} },}, -/**/ {{{0x001121d1, 0x3fdc0000} }, -/**/ {{0xeac018f0, 0x3fddef49} }, -/**/ {{0x20b8be0c, 0x40011a98} }, -/**/ {{0xd0d6010e, 0xbbe1527e} },}, -/**/ {{{0xfef662aa, 0x3fdc3fff} }, -/**/ {{0xea0c7070, 0x3fde3d6e} }, -/**/ {{0x32f46ccd, 0x4000ee65} }, -/**/ {{0x189a000d, 0x3be8d241} },}, -/**/ {{{0x09845818, 0x3fdc8000} }, -/**/ {{0xf36a8b1b, 0x3fde8bdd} }, -/**/ {{0xcac73476, 0x4000c2eb} }, -/**/ {{0x12bed284, 0x3bd221f7} },}, -/**/ {{{0xfb0493bf, 0x3fdcbfff} }, -/**/ {{0xe0c60d10, 0x3fdeda97} }, -/**/ {{0x251c7836, 0x40009827} }, -/**/ {{0x6eec41b7, 0xbbe0bd54} },}, -/**/ {{{0xfd52961f, 0x3fdcffff} }, -/**/ {{0xefb3e44b, 0x3fdf299d} }, -/**/ {{0x74e459f5, 0x40006e12} }, -/**/ {{0xe969c82f, 0xbbd93f77} },}, -/**/ {{{0xfe2319a4, 0x3fdd3fff} }, -/**/ {{0x17139490, 0x3fdf78f1} }, -/**/ {{0x3e737e94, 0x400044a9} }, -/**/ {{0x49594b7a, 0xbb91e7cc} },}, -/**/ {{{0xfa4de596, 0x3fdd7fff} }, -/**/ {{0x638f49e8, 0x3fdfc892} }, -/**/ {{0x231057a5, 0x40001be7} }, -/**/ {{0xf5af9f5f, 0x3bd482b0} },}, -/**/ {{{0xfe729a69, 0x3fddbfff} }, -/**/ {{0x7c6ab019, 0x3fe00c41} }, -/**/ {{0xbf612660, 0x3fffe78f} }, -/**/ {{0x00da681e, 0x3bea5cda} },}, -/**/ {{{0x09d66802, 0x3fde0000} }, -/**/ {{0xf6b883cf, 0x3fe03461} }, -/**/ {{0xbc05a87c, 0x3fff988e} }, -/**/ {{0xf2372669, 0xbbe06c33} },}, -/**/ {{{0xfb211657, 0x3fde3fff} }, -/**/ {{0x191db8e8, 0x3fe05cab} }, -/**/ {{0x7bcfe6be, 0x3fff4ac3} }, -/**/ {{0x5ed8d35b, 0xbbd5d51f} },}, -/**/ {{{0x0a3f068a, 0x3fde8000} }, -/**/ {{0x95fb54f0, 0x3fe0851d} }, -/**/ {{0x144ca408, 0x3ffefe26} }, -/**/ {{0xa2c169c5, 0xbbc7c894} },}, -/**/ {{{0x01adb060, 0x3fdec000} }, -/**/ {{0xdc7b54f9, 0x3fe0adb9} }, -/**/ {{0x5ebe52a7, 0x3ffeb2af} }, -/**/ {{0x312c5ffd, 0x3bd4e740} },}, -/**/ {{{0xff5c0d01, 0x3fdeffff} }, -/**/ {{0x92550a8d, 0x3fe0d680} }, -/**/ {{0x0d71fdf0, 0x3ffe6858} }, -/**/ {{0x96b35499, 0x3bddd8a6} },}, -/**/ {{{0xf93d5fcc, 0x3fdf3fff} }, -/**/ {{0x45cb4374, 0x3fe0ff72} }, -/**/ {{0x3cce5040, 0x3ffe1f19} }, -/**/ {{0x7c1efab4, 0xbbc9f0ec} },}, -/**/ {{{0xfa0dd18f, 0x3fdf7fff} }, -/**/ {{0x944dd508, 0x3fe1288f} }, -/**/ {{0x298b874d, 0x3ffdd6ec} }, -/**/ {{0x9642a0a6, 0x3bea6ebd} },}, -/**/ {{{0xfd3a9f1a, 0x3fdfbfff} }, -/**/ {{0x13750f3e, 0x3fe151d9} }, -/**/ {{0x5806a27e, 0x3ffd8fca} }, -/**/ {{0xfc65ac7a, 0x3bda2a03} },}, -/**/ {{{0xfc481400, 0x3fdfffff} }, -/**/ {{0x598944ca, 0x3fe17b4f} }, -/**/ {{0x82532170, 0x3ffd49ad} }, -/**/ {{0x3d236dc3, 0x3bc4412e} },}, -/**/ {{{0xff53786c, 0x3fe01fff} }, -/**/ {{0x07d83d47, 0x3fe1a4f3} }, -/**/ {{0x851bffeb, 0x3ffd048f} }, -/**/ {{0x29f81b14, 0x3bd1589d} },}, -/**/ {{{0xfee301b7, 0x3fe03fff} }, -/**/ {{0xb8a6a382, 0x3fe1cec4} }, -/**/ {{0x7c519db6, 0x3ffcc06a} }, -/**/ {{0x5b24d6b2, 0x3bd370e6} },}, -/**/ {{{0x006e36bf, 0x3fe06000} }, -/**/ {{0x114eb8be, 0x3fe1f8c5} }, -/**/ {{0xa34d6786, 0x3ffc7d38} }, -/**/ {{0x4b98c1d4, 0xbbea92de} },}, -/**/ {{{0xfd60aa43, 0x3fe07fff} }, -/**/ {{0xabeccecb, 0x3fe222f4} }, -/**/ {{0x77342ac4, 0x3ffc3af4} }, -/**/ {{0x03a5c2c2, 0xbbdd47f6} },}, -/**/ {{{0x037762e8, 0x3fe0a000} }, -/**/ {{0x3f99efe8, 0x3fe24d54} }, -/**/ {{0x75f54fab, 0x3ffbf998} }, -/**/ {{0x15771a46, 0x3bedf7f4} },}, -/**/ {{{0xff1c6921, 0x3fe0bfff} }, -/**/ {{0x598e35d0, 0x3fe277e4} }, -/**/ {{0x8addd186, 0x3ffbb91f} }, -/**/ {{0x5e0e5a73, 0x3be0f16c} },}, -/**/ {{{0xff07154b, 0x3fe0dfff} }, -/**/ {{0xb6bc3986, 0x3fe2a2a5} }, -/**/ {{0x8301646d, 0x3ffb7984} }, -/**/ {{0xbbaa5310, 0xbbf02dd0} },}, -/**/ {{{0x02fcdda4, 0x3fe10000} }, -/**/ {{0x02a59f1e, 0x3fe2cd99} }, -/**/ {{0x705219bf, 0x3ffb3ac2} }, -/**/ {{0x112fa616, 0xbbe59357} },}, -/**/ {{{0x01ce1140, 0x3fe12000} }, -/**/ {{0xdf0a67c2, 0x3fe2f8be} }, -/**/ {{0x9ab8ae2a, 0x3ffafcd4} }, -/**/ {{0x9303f346, 0x3be2c542} },}, -/**/ {{{0x04d0f355, 0x3fe14000} }, -/**/ {{0x08fcc7bf, 0x3fe32418} }, -/**/ {{0x497b9a36, 0x3ffabfb6} }, -/**/ {{0xb5a59234, 0x3bebc044} },}, -/**/ {{{0x00fb0c8a, 0x3fe16000} }, -/**/ {{0x2471618b, 0x3fe34fa5} }, -/**/ {{0x0d26d117, 0x3ffa8363} }, -/**/ {{0x3f7bb7c9, 0xbbdbfbb2} },}, -/**/ {{{0x026f10b3, 0x3fe18000} }, -/**/ {{0xf7579056, 0x3fe37b66} }, -/**/ {{0x6b4cf4b1, 0x3ffa47d6} }, -/**/ {{0xaf0b5de9, 0x3bf0f6b4} },}, -/**/ {{{0xfd0978f8, 0x3fe19fff} }, -/**/ {{0x290cc78c, 0x3fe3a75e} }, -/**/ {{0x36c21315, 0x3ffa0d0c} }, -/**/ {{0xa296b262, 0x3beb2129} },}, -/**/ {{{0xfd94840b, 0x3fe1bfff} }, -/**/ {{0x85b4e4a4, 0x3fe3d38b} }, -/**/ {{0x32f2ecef, 0x3ff9d300} }, -/**/ {{0xb9bb7d74, 0xbbdbab1a} },}, -/**/ {{{0xfbda1ea1, 0x3fe1dfff} }, -/**/ {{0xbf3cee2f, 0x3fe3ffef} }, -/**/ {{0x6770fed8, 0x3ff999ae} }, -/**/ {{0xb4ace9a4, 0x3bda0bdc} },}, -/**/ {{{0xfc989533, 0x3fe1ffff} }, -/**/ {{0x9c27900c, 0x3fe42c8b} }, -/**/ {{0xe0d9f1ac, 0x3ff96112} }, -/**/ {{0x2fa2d81a, 0xbbee19eb} },}, -/**/ {{{0x012b8d26, 0x3fe22000} }, -/**/ {{0xe11975ca, 0x3fe4595f} }, -/**/ {{0xcdaa4e80, 0x3ff92929} }, -/**/ {{0xacc82d4b, 0x3bf23382} },}, -/**/ {{{0x04f4d6af, 0x3fe24000} }, -/**/ {{0x4d224131, 0x3fe4866d} }, -/**/ {{0x815c34e8, 0x3ff8f1ef} }, -/**/ {{0x3b740a99, 0xbbd0c6ff} },}, -/**/ {{{0xfcc07bda, 0x3fe25fff} }, -/**/ {{0x98b7d010, 0x3fe4b3b4} }, -/**/ {{0x73e7ffa1, 0x3ff8bb60} }, -/**/ {{0x1ad7a9c2, 0x3bebc31b} },}, -/**/ {{{0x042d9639, 0x3fe28000} }, -/**/ {{0xb64540d1, 0x3fe4e136} }, -/**/ {{0xf4374938, 0x3ff88578} }, -/**/ {{0x1b85e901, 0x3be36de9} },}, -/**/ {{{0x03be29a0, 0x3fe2a000} }, -/**/ {{0x52bffd96, 0x3fe50ef4} }, -/**/ {{0xc0042c06, 0x3ff85035} }, -/**/ {{0x76f5efbd, 0x3be15d01} },}, -/**/ {{{0xfaa91f12, 0x3fe2bfff} }, -/**/ {{0x3e2f4e0d, 0x3fe53cee} }, -/**/ {{0x8542df07, 0x3ff81b93} }, -/**/ {{0x17662a2b, 0x3be555cd} },}, -/**/ {{{0xfe884891, 0x3fe2dfff} }, -/**/ {{0x6c1a2470, 0x3fe56b25} }, -/**/ {{0xe422ea70, 0x3ff7e78e} }, -/**/ {{0xbd030c11, 0x3bf03504} },}, -/**/ {{{0xfe87152b, 0x3fe2ffff} }, -/**/ {{0x9beaaaa1, 0x3fe5999a} }, -/**/ {{0xd18fe9b3, 0x3ff7b424} }, -/**/ {{0x773e0e64, 0xbb649a5f} },}, -/**/ {{{0xffc1a721, 0x3fe31fff} }, -/**/ {{0xafe0e564, 0x3fe5c84e} }, -/**/ {{0x338db8d4, 0x3ff78152} }, -/**/ {{0x5da8e935, 0x3beaf428} },}, -/**/ {{{0xff70a372, 0x3fe33fff} }, -/**/ {{0x82191d64, 0x3fe5f742} }, -/**/ {{0x1122bcae, 0x3ff74f14} }, -/**/ {{0xdee4bfaf, 0x3bdb1c4b} },}, -/**/ {{{0x0436e836, 0x3fe36000} }, -/**/ {{0xfde6ccff, 0x3fe62676} }, -/**/ {{0x7644252c, 0x3ff71d67} }, -/**/ {{0xe08c3afb, 0xbbec3d10} },}, -/**/ {{{0xfcbe9641, 0x3fe37fff} }, -/**/ {{0xee9ffdaf, 0x3fe655ec} }, -/**/ {{0xa6fc0515, 0x3ff6ec49} }, -/**/ {{0x2ed29567, 0x3bdda453} },}, -/**/ {{{0xffb6d6ca, 0x3fe39fff} }, -/**/ {{0x5e67a1e1, 0x3fe685a5} }, -/**/ {{0xbc2ae969, 0x3ff6bbb7} }, -/**/ {{0x2ef43882, 0x3becbf7b} },}, -/**/ {{{0x04934fec, 0x3fe3c000} }, -/**/ {{0x2cc07d75, 0x3fe6b5a1} }, -/**/ {{0x10b02ef8, 0x3ff68baf} }, -/**/ {{0xfeb7cabd, 0xbbe7c8fb} },}, -/**/ {{{0x03f5cf7f, 0x3fe3e000} }, -/**/ {{0x3e59def6, 0x3fe6e5e1} }, -/**/ {{0x0e61500f, 0x3ff65c2d} }, -/**/ {{0x035f7845, 0xbbe30ba4} },}, -/**/ {{{0x05280ad9, 0x3fe40000} }, -/**/ {{0x91ab4c3e, 0x3fe71666} }, -/**/ {{0x19f01c90, 0x3ff62d2f} }, -/**/ {{0xffe95f6a, 0xbbf1e9f5} },}, -/**/ {{{0x049efb65, 0x3fe42000} }, -/**/ {{0x18af3b9d, 0x3fe74732} }, -/**/ {{0xb86465e4, 0x3ff5feb2} }, -/**/ {{0x280d591e, 0x3bc4cad7} },}, -/**/ {{{0x0035ccb6, 0x3fe44000} }, -/**/ {{0xcb4ff1e5, 0x3fe77844} }, -/**/ {{0x7c455428, 0x3ff5d0b5} }, -/**/ {{0x7ba5617c, 0x3bed8c18} },}, -/**/ {{{0x03346717, 0x3fe46000} }, -/**/ {{0xba258778, 0x3fe7a99f} }, -/**/ {{0xf4392254, 0x3ff5a334} }, -/**/ {{0xfc84a570, 0xbbefd14a} },}, -/**/ {{{0x03002575, 0x3fe48000} }, -/**/ {{0xd836768f, 0x3fe7db43} }, -/**/ {{0xdcf97e0c, 0x3ff5762e} }, -/**/ {{0x5f5df49e, 0xbbdd7eba} },}, -/**/ {{{0x055bf381, 0x3fe4a000} }, -/**/ {{0x35edeefa, 0x3fe80d32} }, -/**/ {{0xea46e31f, 0x3ff549a0} }, -/**/ {{0x76823eac, 0xbbdba522} },}, -/**/ {{{0x04ce10e3, 0x3fe4c000} }, -/**/ {{0xd67dc1a8, 0x3fe83f6b} }, -/**/ {{0xed82bcc4, 0x3ff51d88} }, -/**/ {{0x077d29ea, 0xbbeae92d} },}, -/**/ {{{0x016c60e1, 0x3fe4e000} }, -/**/ {{0xca0aaf31, 0x3fe871f1} }, -/**/ {{0xbdacbf16, 0x3ff4f1e4} }, -/**/ {{0x46ee425e, 0x3be82958} },}, -/**/ {{{0xff966f0a, 0x3fe4ffff} }, -/**/ {{0x2bff2dae, 0x3fe8a4c5} }, -/**/ {{0x3917657e, 0x3ff4c6b2} }, -/**/ {{0x5c86c705, 0xbbf127c2} },}, -/**/ {{{0x0076e6eb, 0x3fe52000} }, -/**/ {{0x175651e8, 0x3fe8d7e7} }, -/**/ {{0x4f459b05, 0x3ff49bef} }, -/**/ {{0x4181bbfc, 0xbbb1e9d1} },}, -/**/ {{{0x03d12d3b, 0x3fe54000} }, -/**/ {{0xa976ed56, 0x3fe90b58} }, -/**/ {{0xfdf24af4, 0x3ff47199} }, -/**/ {{0xc30decaf, 0x3be38c17} },}, -/**/ {{{0xfce7fa8d, 0x3fe55fff} }, -/**/ {{0xf03a3a09, 0x3fe93f1a} }, -/**/ {{0x5f13234b, 0x3ff447b0} }, -/**/ {{0x70df7e20, 0x3bf1b8b2} },}, -/**/ {{{0x0331b46a, 0x3fe58000} }, -/**/ {{0x38e83134, 0x3fe9732f} }, -/**/ {{0x68d8b41b, 0x3ff41e30} }, -/**/ {{0xb90bc28b, 0xbbee24d8} },}, -/**/ {{{0xfc14848e, 0x3fe59fff} }, -/**/ {{0x8471b489, 0x3fe9a796} }, -/**/ {{0x5de3aa73, 0x3ff3f518} }, -/**/ {{0xe0761536, 0xbbecacd9} },}, -/**/ {{{0xfb7cd395, 0x3fe5bfff} }, -/**/ {{0x24a8b955, 0x3fe9dc52} }, -/**/ {{0x4f8fff15, 0x3ff3cc66} }, -/**/ {{0x82045611, 0xbbf67c97} },}, -/**/ {{{0x000dcc40, 0x3fe5e000} }, -/**/ {{0x4df5b93e, 0x3fea1163} }, -/**/ {{0x75853228, 0x3ff3a418} }, -/**/ {{0xd481f350, 0xbbf585da} },}, -/**/ {{{0x02efd2fc, 0x3fe60000} }, -/**/ {{0x30d16323, 0x3fea46cb} }, -/**/ {{0x187962ae, 0x3ff37c2d} }, -/**/ {{0xa5f77bb0, 0x3bf004c3} },}, -/**/ {{{0xfeb8088a, 0x3fe61fff} }, -/**/ {{0x053920c0, 0x3fea7c8b} }, -/**/ {{0x891769a9, 0x3ff354a2} }, -/**/ {{0x3fee3029, 0x3bbc6b30} },}, -/**/ {{{0x00f3ca06, 0x3fe64000} }, -/**/ {{0x28a1911a, 0x3feab2a4} }, -/**/ {{0x0a6f0a4a, 0x3ff32d77} }, -/**/ {{0xfac5081a, 0x3bf2a6f8} },}, -/**/ {{{0xfe9ec2f4, 0x3fe65fff} }, -/**/ {{0xd4ce7239, 0x3feae917} }, -/**/ {{0x0751a948, 0x3ff306a9} }, -/**/ {{0x51ab9dbd, 0xbbe950b5} },}, -/**/ {{{0x03d43966, 0x3fe68000} }, -/**/ {{0x708b998a, 0x3feb1fe7} }, -/**/ {{0xd7a153c7, 0x3ff2e036} }, -/**/ {{0xa1e4a14e, 0x3bdd36e2} },}, -/**/ {{{0xfab67783, 0x3fe69fff} }, -/**/ {{0x2e575464, 0x3feb5714} }, -/**/ {{0x05006cb6, 0x3ff2ba1f} }, -/**/ {{0x473c2e31, 0x3bea9a4a} },}, -/**/ {{{0xfcb65f89, 0x3fe6bfff} }, -/**/ {{0x981efd2f, 0x3feb8e9f} }, -/**/ {{0xe948d9f7, 0x3ff2945f} }, -/**/ {{0xe802df72, 0xbbca5294} },}, -/**/ {{{0xfc5609a9, 0x3fe6dfff} }, -/**/ {{0xfaed6ff1, 0x3febc68a} }, -/**/ {{0x1533411e, 0x3ff26ef8} }, -/**/ {{0xf51bc566, 0xbbf89153} },}, -/**/ {{{0xfc4eef86, 0x3fe6ffff} }, -/**/ {{0xc62205fe, 0x3febfed7} }, -/**/ {{0x0e70978c, 0x3ff249e6} }, -/**/ {{0xa2b9ff56, 0x3bc39021} },}, -/**/ {{{0x004d98b3, 0x3fe72000} }, -/**/ {{0x716968ad, 0x3fec3787} }, -/**/ {{0x61be7751, 0x3ff22528} }, -/**/ {{0x74ee2211, 0x3befc9c5} },}, -/**/ {{{0xfc155075, 0x3fe73fff} }, -/**/ {{0x5ec6fd4e, 0x3fec709b} }, -/**/ {{0xb5d53311, 0x3ff200bd} }, -/**/ {{0xa269ae63, 0x3be28a4d} },}, -/**/ {{{0x0498c203, 0x3fe76000} }, -/**/ {{0x323d08c1, 0x3fecaa15} }, -/**/ {{0x93433f65, 0x3ff1dca4} }, -/**/ {{0x14a28fb7, 0x3bf8cae4} },}, -/**/ {{{0xff1e5636, 0x3fe77fff} }, -/**/ {{0x4147c12c, 0x3fece3f6} }, -/**/ {{0xbfe294a8, 0x3ff1b8db} }, -/**/ {{0x4b56a744, 0xbbe7e19c} },}, -/**/ {{{0x0226d45a, 0x3fe7a000} }, -/**/ {{0x4120eb7f, 0x3fed1e40} }, -/**/ {{0xd15f8278, 0x3ff19561} }, -/**/ {{0x032c5d4c, 0x3be64b28} },}, -/**/ {{{0x0250a5aa, 0x3fe7c000} }, -/**/ {{0xb112a1e1, 0x3fed58f4} }, -/**/ {{0x8a59d565, 0x3ff17235} }, -/**/ {{0xb8dc7867, 0xbbe716de} },}, -/**/ {{{0x0482f82e, 0x3fe7e000} }, -/**/ {{0x3576bdf0, 0x3fed9415} }, -/**/ {{0xa22a1c5b, 0x3ff14f55} }, -/**/ {{0xe1305604, 0x3bf207e1} },}, -/**/ {{{0x0205003e, 0x3fe80000} }, -/**/ {{0x64d69ff7, 0x3fedcfa3} }, -/**/ {{0xe37eb26f, 0x3ff12cc0} }, -/**/ {{0xe32395f8, 0xbbd52ec6} },}, -/**/ {{{0xfbf99411, 0x3fe81fff} }, -/**/ {{0xebf98f51, 0x3fee0ba0} }, -/**/ {{0x16ddd5d6, 0x3ff10a76} }, -/**/ {{0x59866045, 0xbbece0d6} },}, -/**/ {{{0x0248e3a3, 0x3fe84000} }, -/**/ {{0x9bb7f565, 0x3fee480f} }, -/**/ {{0xfb84e05c, 0x3ff0e873} }, -/**/ {{0x1595df92, 0x3bf4e5e8} },}, -/**/ {{{0x0145c157, 0x3fe86000} }, -/**/ {{0x0a10b3ab, 0x3fee84f1} }, -/**/ {{0x7cbd7b1e, 0x3ff0c6b9} }, -/**/ {{0xd5f121d0, 0xbbe19de6} },}, -/**/ {{{0x022631b9, 0x3fe88000} }, -/**/ {{0x0be1f047, 0x3feec247} }, -/**/ {{0x6d0b3ee6, 0x3ff0a545} }, -/**/ {{0xa3ba2c6f, 0xbbc272b1} },}, -/**/ {{{0x045f7828, 0x3fe8a000} }, -/**/ {{0x6c45ba1c, 0x3fef0013} }, -/**/ {{0xaf2a0f09, 0x3ff08416} }, -/**/ {{0x5b63c799, 0x3be82b56} },}, -/**/ {{{0xffc686cf, 0x3fe8bfff} }, -/**/ {{0xf03c824b, 0x3fef3e57} }, -/**/ {{0x33502220, 0x3ff0632c} }, -/**/ {{0x2dbeeb25, 0xbbd039ad} },}, -/**/ {{{0xfd8644c6, 0x3fe8dfff} }, -/**/ {{0x8774261d, 0x3fef7d16} }, -/**/ {{0xdd5b3019, 0x3ff04284} }, -/**/ {{0xe1eba933, 0x3bd79f33} },}, -/**/ {{{0xfe4e7937, 0x3fe8ffff} }, -/**/ {{0x1a99a641, 0x3fefbc51} }, -/**/ {{0x9f69840b, 0x3ff0221f} }, -/**/ {{0x7beee018, 0xbbea9e84} },}, -/**/ {{{0x0435251f, 0x3fe92000} }, -/**/ {{0x9eb22390, 0x3feffc09} }, -/**/ {{0x6f7c51e8, 0x3ff001fb} }, -/**/ {{0x31032e0a, 0xbb5a12e7} },}, - }; - -#endif -#endif diff --git a/libgcc-math/i386/Makefile.am b/libgcc-math/i386/Makefile.am index b75705a374f..22de5461dc9 100644 --- a/libgcc-math/i386/Makefile.am +++ b/libgcc-math/i386/Makefile.am @@ -35,37 +35,7 @@ libsse2_la_SOURCES = \ @srcdir@/../flt-32/e_sqrtf.c \ @srcdir@/../flt-32/s_scalbnf.c \ @srcdir@/../flt-32/s_floorf.c \ - @srcdir@/../flt-32/s_isinff.c \ - @srcdir@/../dbl-64/t_exp.c \ - @srcdir@/../dbl-64/e_asin.c \ - @srcdir@/../dbl-64/e_atan2.c \ - @srcdir@/../dbl-64/s_atan.c \ - @srcdir@/../dbl-64/branred.c \ - @srcdir@/../dbl-64/doasin.c \ - @srcdir@/../dbl-64/dosincos.c \ - @srcdir@/../dbl-64/e_exp.c \ - @srcdir@/../dbl-64/halfulp.c \ - @srcdir@/../dbl-64/k_rem_pio2.c \ - @srcdir@/../dbl-64/e_log10.c \ - @srcdir@/../dbl-64/e_log.c \ - @srcdir@/../dbl-64/mpa.c \ - @srcdir@/../dbl-64/mpatan2.c \ - @srcdir@/../dbl-64/mpatan.c \ - @srcdir@/../dbl-64/mpexp.c \ - @srcdir@/../dbl-64/mplog.c \ - @srcdir@/../dbl-64/mpsqrt.c \ - @srcdir@/../dbl-64/mptan.c \ - @srcdir@/../dbl-64/e_pow.c \ - @srcdir@/../dbl-64/e_rem_pio2.c \ - @srcdir@/../dbl-64/s_sin.c \ - @srcdir@/../dbl-64/sincos32.c \ - @srcdir@/../dbl-64/slowexp.c \ - @srcdir@/../dbl-64/slowpow.c \ - @srcdir@/../dbl-64/e_sqrt.c \ - @srcdir@/../dbl-64/s_tan.c \ - @srcdir@/../dbl-64/s_scalbn.c \ - @srcdir@/../dbl-64/s_floor.c \ - @srcdir@/../dbl-64/s_isinf.c + @srcdir@/../flt-32/s_isinff.c # XXX hack alert diff --git a/libgcc-math/i386/Makefile.in b/libgcc-math/i386/Makefile.in index 075bdbc71f0..c824a62a0e5 100644 --- a/libgcc-math/i386/Makefile.in +++ b/libgcc-math/i386/Makefile.in @@ -59,20 +59,7 @@ am_libsse2_la_OBJECTS = libsse2_la-e_acosf.lo libsse2_la-e_asinf.lo \ libsse2_la-k_sinf.lo libsse2_la-k_tanf.lo \ libsse2_la-e_rem_pio2f.lo libsse2_la-e_sqrtf.lo \ libsse2_la-s_scalbnf.lo libsse2_la-s_floorf.lo \ - libsse2_la-s_isinff.lo libsse2_la-t_exp.lo \ - libsse2_la-e_asin.lo libsse2_la-e_atan2.lo \ - libsse2_la-s_atan.lo libsse2_la-branred.lo \ - libsse2_la-doasin.lo libsse2_la-dosincos.lo \ - libsse2_la-e_exp.lo libsse2_la-halfulp.lo \ - libsse2_la-k_rem_pio2.lo libsse2_la-e_log10.lo \ - libsse2_la-e_log.lo libsse2_la-mpa.lo libsse2_la-mpatan2.lo \ - libsse2_la-mpatan.lo libsse2_la-mpexp.lo libsse2_la-mplog.lo \ - libsse2_la-mpsqrt.lo libsse2_la-mptan.lo libsse2_la-e_pow.lo \ - libsse2_la-e_rem_pio2.lo libsse2_la-s_sin.lo \ - libsse2_la-sincos32.lo libsse2_la-slowexp.lo \ - libsse2_la-slowpow.lo libsse2_la-e_sqrt.lo libsse2_la-s_tan.lo \ - libsse2_la-s_scalbn.lo libsse2_la-s_floor.lo \ - libsse2_la-s_isinf.lo + libsse2_la-s_isinff.lo libsse2_la_OBJECTS = $(am_libsse2_la_OBJECTS) DEFAULT_INCLUDES = -I. -I$(srcdir) depcomp = $(SHELL) $(top_srcdir)/../depcomp @@ -224,37 +211,7 @@ libsse2_la_SOURCES = \ @srcdir@/../flt-32/e_sqrtf.c \ @srcdir@/../flt-32/s_scalbnf.c \ @srcdir@/../flt-32/s_floorf.c \ - @srcdir@/../flt-32/s_isinff.c \ - @srcdir@/../dbl-64/t_exp.c \ - @srcdir@/../dbl-64/e_asin.c \ - @srcdir@/../dbl-64/e_atan2.c \ - @srcdir@/../dbl-64/s_atan.c \ - @srcdir@/../dbl-64/branred.c \ - @srcdir@/../dbl-64/doasin.c \ - @srcdir@/../dbl-64/dosincos.c \ - @srcdir@/../dbl-64/e_exp.c \ - @srcdir@/../dbl-64/halfulp.c \ - @srcdir@/../dbl-64/k_rem_pio2.c \ - @srcdir@/../dbl-64/e_log10.c \ - @srcdir@/../dbl-64/e_log.c \ - @srcdir@/../dbl-64/mpa.c \ - @srcdir@/../dbl-64/mpatan2.c \ - @srcdir@/../dbl-64/mpatan.c \ - @srcdir@/../dbl-64/mpexp.c \ - @srcdir@/../dbl-64/mplog.c \ - @srcdir@/../dbl-64/mpsqrt.c \ - @srcdir@/../dbl-64/mptan.c \ - @srcdir@/../dbl-64/e_pow.c \ - @srcdir@/../dbl-64/e_rem_pio2.c \ - @srcdir@/../dbl-64/s_sin.c \ - @srcdir@/../dbl-64/sincos32.c \ - @srcdir@/../dbl-64/slowexp.c \ - @srcdir@/../dbl-64/slowpow.c \ - @srcdir@/../dbl-64/e_sqrt.c \ - @srcdir@/../dbl-64/s_tan.c \ - @srcdir@/../dbl-64/s_scalbn.c \ - @srcdir@/../dbl-64/s_floor.c \ - @srcdir@/../dbl-64/s_isinf.c + @srcdir@/../flt-32/s_isinff.c # XXX hack alert @@ -352,56 +309,26 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-branred.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-doasin.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-dosincos.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_acosf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_asin.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_asinf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_atan2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_atan2f.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_exp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_expf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_log.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_log10.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_log10f.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_logf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_pow.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_powf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_rem_pio2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_rem_pio2f.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_sqrt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_sqrtf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-halfulp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-k_cosf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-k_rem_pio2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-k_rem_pio2f.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-k_sinf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-k_tanf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-mpa.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-mpatan.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-mpatan2.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-mpexp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-mplog.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-mpsqrt.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-mptan.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_atan.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_atanf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_cosf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_floor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_floorf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_isinf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_isinff.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_scalbn.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_scalbnf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_sin.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_sinf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_tan.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_tanf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-sincos32.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-slowexp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-slowpow.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-t_exp.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ @@ -564,216 +491,6 @@ libsse2_la-s_isinff.lo: @srcdir@/../flt-32/s_isinff.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-s_isinff.lo `test -f '@srcdir@/../flt-32/s_isinff.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/s_isinff.c -libsse2_la-t_exp.lo: @srcdir@/../dbl-64/t_exp.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-t_exp.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-t_exp.Tpo" -c -o libsse2_la-t_exp.lo `test -f '@srcdir@/../dbl-64/t_exp.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/t_exp.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-t_exp.Tpo" "$(DEPDIR)/libsse2_la-t_exp.Plo"; else rm -f "$(DEPDIR)/libsse2_la-t_exp.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/t_exp.c' object='libsse2_la-t_exp.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-t_exp.lo `test -f '@srcdir@/../dbl-64/t_exp.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/t_exp.c - -libsse2_la-e_asin.lo: @srcdir@/../dbl-64/e_asin.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_asin.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_asin.Tpo" -c -o libsse2_la-e_asin.lo `test -f '@srcdir@/../dbl-64/e_asin.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_asin.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_asin.Tpo" "$(DEPDIR)/libsse2_la-e_asin.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_asin.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/e_asin.c' object='libsse2_la-e_asin.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_asin.lo `test -f '@srcdir@/../dbl-64/e_asin.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_asin.c - -libsse2_la-e_atan2.lo: @srcdir@/../dbl-64/e_atan2.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_atan2.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_atan2.Tpo" -c -o libsse2_la-e_atan2.lo `test -f '@srcdir@/../dbl-64/e_atan2.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_atan2.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_atan2.Tpo" "$(DEPDIR)/libsse2_la-e_atan2.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_atan2.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/e_atan2.c' object='libsse2_la-e_atan2.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_atan2.lo `test -f '@srcdir@/../dbl-64/e_atan2.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_atan2.c - -libsse2_la-s_atan.lo: @srcdir@/../dbl-64/s_atan.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-s_atan.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-s_atan.Tpo" -c -o libsse2_la-s_atan.lo `test -f '@srcdir@/../dbl-64/s_atan.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_atan.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-s_atan.Tpo" "$(DEPDIR)/libsse2_la-s_atan.Plo"; else rm -f "$(DEPDIR)/libsse2_la-s_atan.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/s_atan.c' object='libsse2_la-s_atan.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-s_atan.lo `test -f '@srcdir@/../dbl-64/s_atan.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_atan.c - -libsse2_la-branred.lo: @srcdir@/../dbl-64/branred.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-branred.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-branred.Tpo" -c -o libsse2_la-branred.lo `test -f '@srcdir@/../dbl-64/branred.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/branred.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-branred.Tpo" "$(DEPDIR)/libsse2_la-branred.Plo"; else rm -f "$(DEPDIR)/libsse2_la-branred.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/branred.c' object='libsse2_la-branred.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-branred.lo `test -f '@srcdir@/../dbl-64/branred.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/branred.c - -libsse2_la-doasin.lo: @srcdir@/../dbl-64/doasin.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-doasin.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-doasin.Tpo" -c -o libsse2_la-doasin.lo `test -f '@srcdir@/../dbl-64/doasin.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/doasin.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-doasin.Tpo" "$(DEPDIR)/libsse2_la-doasin.Plo"; else rm -f "$(DEPDIR)/libsse2_la-doasin.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/doasin.c' object='libsse2_la-doasin.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-doasin.lo `test -f '@srcdir@/../dbl-64/doasin.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/doasin.c - -libsse2_la-dosincos.lo: @srcdir@/../dbl-64/dosincos.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-dosincos.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-dosincos.Tpo" -c -o libsse2_la-dosincos.lo `test -f '@srcdir@/../dbl-64/dosincos.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/dosincos.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-dosincos.Tpo" "$(DEPDIR)/libsse2_la-dosincos.Plo"; else rm -f "$(DEPDIR)/libsse2_la-dosincos.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/dosincos.c' object='libsse2_la-dosincos.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-dosincos.lo `test -f '@srcdir@/../dbl-64/dosincos.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/dosincos.c - -libsse2_la-e_exp.lo: @srcdir@/../dbl-64/e_exp.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_exp.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_exp.Tpo" -c -o libsse2_la-e_exp.lo `test -f '@srcdir@/../dbl-64/e_exp.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_exp.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_exp.Tpo" "$(DEPDIR)/libsse2_la-e_exp.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_exp.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/e_exp.c' object='libsse2_la-e_exp.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_exp.lo `test -f '@srcdir@/../dbl-64/e_exp.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_exp.c - -libsse2_la-halfulp.lo: @srcdir@/../dbl-64/halfulp.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-halfulp.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-halfulp.Tpo" -c -o libsse2_la-halfulp.lo `test -f '@srcdir@/../dbl-64/halfulp.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/halfulp.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-halfulp.Tpo" "$(DEPDIR)/libsse2_la-halfulp.Plo"; else rm -f "$(DEPDIR)/libsse2_la-halfulp.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/halfulp.c' object='libsse2_la-halfulp.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-halfulp.lo `test -f '@srcdir@/../dbl-64/halfulp.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/halfulp.c - -libsse2_la-k_rem_pio2.lo: @srcdir@/../dbl-64/k_rem_pio2.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-k_rem_pio2.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-k_rem_pio2.Tpo" -c -o libsse2_la-k_rem_pio2.lo `test -f '@srcdir@/../dbl-64/k_rem_pio2.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/k_rem_pio2.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-k_rem_pio2.Tpo" "$(DEPDIR)/libsse2_la-k_rem_pio2.Plo"; else rm -f "$(DEPDIR)/libsse2_la-k_rem_pio2.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/k_rem_pio2.c' object='libsse2_la-k_rem_pio2.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-k_rem_pio2.lo `test -f '@srcdir@/../dbl-64/k_rem_pio2.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/k_rem_pio2.c - -libsse2_la-e_log10.lo: @srcdir@/../dbl-64/e_log10.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_log10.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_log10.Tpo" -c -o libsse2_la-e_log10.lo `test -f '@srcdir@/../dbl-64/e_log10.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_log10.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_log10.Tpo" "$(DEPDIR)/libsse2_la-e_log10.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_log10.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/e_log10.c' object='libsse2_la-e_log10.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_log10.lo `test -f '@srcdir@/../dbl-64/e_log10.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_log10.c - -libsse2_la-e_log.lo: @srcdir@/../dbl-64/e_log.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_log.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_log.Tpo" -c -o libsse2_la-e_log.lo `test -f '@srcdir@/../dbl-64/e_log.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_log.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_log.Tpo" "$(DEPDIR)/libsse2_la-e_log.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_log.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/e_log.c' object='libsse2_la-e_log.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_log.lo `test -f '@srcdir@/../dbl-64/e_log.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_log.c - -libsse2_la-mpa.lo: @srcdir@/../dbl-64/mpa.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-mpa.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-mpa.Tpo" -c -o libsse2_la-mpa.lo `test -f '@srcdir@/../dbl-64/mpa.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mpa.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-mpa.Tpo" "$(DEPDIR)/libsse2_la-mpa.Plo"; else rm -f "$(DEPDIR)/libsse2_la-mpa.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/mpa.c' object='libsse2_la-mpa.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-mpa.lo `test -f '@srcdir@/../dbl-64/mpa.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mpa.c - -libsse2_la-mpatan2.lo: @srcdir@/../dbl-64/mpatan2.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-mpatan2.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-mpatan2.Tpo" -c -o libsse2_la-mpatan2.lo `test -f '@srcdir@/../dbl-64/mpatan2.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mpatan2.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-mpatan2.Tpo" "$(DEPDIR)/libsse2_la-mpatan2.Plo"; else rm -f "$(DEPDIR)/libsse2_la-mpatan2.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/mpatan2.c' object='libsse2_la-mpatan2.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-mpatan2.lo `test -f '@srcdir@/../dbl-64/mpatan2.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mpatan2.c - -libsse2_la-mpatan.lo: @srcdir@/../dbl-64/mpatan.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-mpatan.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-mpatan.Tpo" -c -o libsse2_la-mpatan.lo `test -f '@srcdir@/../dbl-64/mpatan.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mpatan.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-mpatan.Tpo" "$(DEPDIR)/libsse2_la-mpatan.Plo"; else rm -f "$(DEPDIR)/libsse2_la-mpatan.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/mpatan.c' object='libsse2_la-mpatan.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-mpatan.lo `test -f '@srcdir@/../dbl-64/mpatan.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mpatan.c - -libsse2_la-mpexp.lo: @srcdir@/../dbl-64/mpexp.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-mpexp.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-mpexp.Tpo" -c -o libsse2_la-mpexp.lo `test -f '@srcdir@/../dbl-64/mpexp.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mpexp.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-mpexp.Tpo" "$(DEPDIR)/libsse2_la-mpexp.Plo"; else rm -f "$(DEPDIR)/libsse2_la-mpexp.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/mpexp.c' object='libsse2_la-mpexp.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-mpexp.lo `test -f '@srcdir@/../dbl-64/mpexp.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mpexp.c - -libsse2_la-mplog.lo: @srcdir@/../dbl-64/mplog.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-mplog.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-mplog.Tpo" -c -o libsse2_la-mplog.lo `test -f '@srcdir@/../dbl-64/mplog.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mplog.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-mplog.Tpo" "$(DEPDIR)/libsse2_la-mplog.Plo"; else rm -f "$(DEPDIR)/libsse2_la-mplog.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/mplog.c' object='libsse2_la-mplog.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-mplog.lo `test -f '@srcdir@/../dbl-64/mplog.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mplog.c - -libsse2_la-mpsqrt.lo: @srcdir@/../dbl-64/mpsqrt.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-mpsqrt.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-mpsqrt.Tpo" -c -o libsse2_la-mpsqrt.lo `test -f '@srcdir@/../dbl-64/mpsqrt.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mpsqrt.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-mpsqrt.Tpo" "$(DEPDIR)/libsse2_la-mpsqrt.Plo"; else rm -f "$(DEPDIR)/libsse2_la-mpsqrt.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/mpsqrt.c' object='libsse2_la-mpsqrt.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-mpsqrt.lo `test -f '@srcdir@/../dbl-64/mpsqrt.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mpsqrt.c - -libsse2_la-mptan.lo: @srcdir@/../dbl-64/mptan.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-mptan.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-mptan.Tpo" -c -o libsse2_la-mptan.lo `test -f '@srcdir@/../dbl-64/mptan.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mptan.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-mptan.Tpo" "$(DEPDIR)/libsse2_la-mptan.Plo"; else rm -f "$(DEPDIR)/libsse2_la-mptan.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/mptan.c' object='libsse2_la-mptan.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-mptan.lo `test -f '@srcdir@/../dbl-64/mptan.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mptan.c - -libsse2_la-e_pow.lo: @srcdir@/../dbl-64/e_pow.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_pow.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_pow.Tpo" -c -o libsse2_la-e_pow.lo `test -f '@srcdir@/../dbl-64/e_pow.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_pow.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_pow.Tpo" "$(DEPDIR)/libsse2_la-e_pow.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_pow.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/e_pow.c' object='libsse2_la-e_pow.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_pow.lo `test -f '@srcdir@/../dbl-64/e_pow.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_pow.c - -libsse2_la-e_rem_pio2.lo: @srcdir@/../dbl-64/e_rem_pio2.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_rem_pio2.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_rem_pio2.Tpo" -c -o libsse2_la-e_rem_pio2.lo `test -f '@srcdir@/../dbl-64/e_rem_pio2.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_rem_pio2.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_rem_pio2.Tpo" "$(DEPDIR)/libsse2_la-e_rem_pio2.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_rem_pio2.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/e_rem_pio2.c' object='libsse2_la-e_rem_pio2.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_rem_pio2.lo `test -f '@srcdir@/../dbl-64/e_rem_pio2.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_rem_pio2.c - -libsse2_la-s_sin.lo: @srcdir@/../dbl-64/s_sin.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-s_sin.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-s_sin.Tpo" -c -o libsse2_la-s_sin.lo `test -f '@srcdir@/../dbl-64/s_sin.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_sin.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-s_sin.Tpo" "$(DEPDIR)/libsse2_la-s_sin.Plo"; else rm -f "$(DEPDIR)/libsse2_la-s_sin.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/s_sin.c' object='libsse2_la-s_sin.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-s_sin.lo `test -f '@srcdir@/../dbl-64/s_sin.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_sin.c - -libsse2_la-sincos32.lo: @srcdir@/../dbl-64/sincos32.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-sincos32.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-sincos32.Tpo" -c -o libsse2_la-sincos32.lo `test -f '@srcdir@/../dbl-64/sincos32.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/sincos32.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-sincos32.Tpo" "$(DEPDIR)/libsse2_la-sincos32.Plo"; else rm -f "$(DEPDIR)/libsse2_la-sincos32.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/sincos32.c' object='libsse2_la-sincos32.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-sincos32.lo `test -f '@srcdir@/../dbl-64/sincos32.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/sincos32.c - -libsse2_la-slowexp.lo: @srcdir@/../dbl-64/slowexp.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-slowexp.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-slowexp.Tpo" -c -o libsse2_la-slowexp.lo `test -f '@srcdir@/../dbl-64/slowexp.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/slowexp.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-slowexp.Tpo" "$(DEPDIR)/libsse2_la-slowexp.Plo"; else rm -f "$(DEPDIR)/libsse2_la-slowexp.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/slowexp.c' object='libsse2_la-slowexp.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-slowexp.lo `test -f '@srcdir@/../dbl-64/slowexp.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/slowexp.c - -libsse2_la-slowpow.lo: @srcdir@/../dbl-64/slowpow.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-slowpow.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-slowpow.Tpo" -c -o libsse2_la-slowpow.lo `test -f '@srcdir@/../dbl-64/slowpow.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/slowpow.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-slowpow.Tpo" "$(DEPDIR)/libsse2_la-slowpow.Plo"; else rm -f "$(DEPDIR)/libsse2_la-slowpow.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/slowpow.c' object='libsse2_la-slowpow.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-slowpow.lo `test -f '@srcdir@/../dbl-64/slowpow.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/slowpow.c - -libsse2_la-e_sqrt.lo: @srcdir@/../dbl-64/e_sqrt.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_sqrt.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_sqrt.Tpo" -c -o libsse2_la-e_sqrt.lo `test -f '@srcdir@/../dbl-64/e_sqrt.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_sqrt.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_sqrt.Tpo" "$(DEPDIR)/libsse2_la-e_sqrt.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_sqrt.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/e_sqrt.c' object='libsse2_la-e_sqrt.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_sqrt.lo `test -f '@srcdir@/../dbl-64/e_sqrt.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_sqrt.c - -libsse2_la-s_tan.lo: @srcdir@/../dbl-64/s_tan.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-s_tan.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-s_tan.Tpo" -c -o libsse2_la-s_tan.lo `test -f '@srcdir@/../dbl-64/s_tan.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_tan.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-s_tan.Tpo" "$(DEPDIR)/libsse2_la-s_tan.Plo"; else rm -f "$(DEPDIR)/libsse2_la-s_tan.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/s_tan.c' object='libsse2_la-s_tan.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-s_tan.lo `test -f '@srcdir@/../dbl-64/s_tan.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_tan.c - -libsse2_la-s_scalbn.lo: @srcdir@/../dbl-64/s_scalbn.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-s_scalbn.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-s_scalbn.Tpo" -c -o libsse2_la-s_scalbn.lo `test -f '@srcdir@/../dbl-64/s_scalbn.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_scalbn.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-s_scalbn.Tpo" "$(DEPDIR)/libsse2_la-s_scalbn.Plo"; else rm -f "$(DEPDIR)/libsse2_la-s_scalbn.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/s_scalbn.c' object='libsse2_la-s_scalbn.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-s_scalbn.lo `test -f '@srcdir@/../dbl-64/s_scalbn.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_scalbn.c - -libsse2_la-s_floor.lo: @srcdir@/../dbl-64/s_floor.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-s_floor.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-s_floor.Tpo" -c -o libsse2_la-s_floor.lo `test -f '@srcdir@/../dbl-64/s_floor.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_floor.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-s_floor.Tpo" "$(DEPDIR)/libsse2_la-s_floor.Plo"; else rm -f "$(DEPDIR)/libsse2_la-s_floor.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/s_floor.c' object='libsse2_la-s_floor.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-s_floor.lo `test -f '@srcdir@/../dbl-64/s_floor.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_floor.c - -libsse2_la-s_isinf.lo: @srcdir@/../dbl-64/s_isinf.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-s_isinf.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-s_isinf.Tpo" -c -o libsse2_la-s_isinf.lo `test -f '@srcdir@/../dbl-64/s_isinf.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_isinf.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-s_isinf.Tpo" "$(DEPDIR)/libsse2_la-s_isinf.Plo"; else rm -f "$(DEPDIR)/libsse2_la-s_isinf.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/s_isinf.c' object='libsse2_la-s_isinf.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-s_isinf.lo `test -f '@srcdir@/../dbl-64/s_isinf.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_isinf.c - mostlyclean-libtool: -rm -f *.lo diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index c83a01fed84..280f520af31 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,230 @@ +2006-04-03 Jerry DeLisle + + * io/write.c (output_float): Update condition to not error when + decimal precision in format specifier is zero. + +2006-04-01 Francois-Xavier Coudert + + * config/fpu-387.h: Use previously added SSE code in all + cases, as it really is the right thing to do. + +2006-03-30 Jerry DeLisle + + PR libgfortran/26890 + * io/io.h: Add size_used to st_parameter_dt, adjust pad size. + *io/transfer.c (data_transfer_init): Initialize size_used to zero. + (read_sf): Use size_used. + (read_block): Likewise. + (read_block_direct): Likewise. + (write_block): Likewise. + (write_buf): Likewise and eliminate erroneous FAILURE return. + (finalize_transfer): Assign value of size_used to *dtp->size. + +2006-03-30 Francois-Xavier Coudert + + PR libfortran/26712 + * config/fpu-387.h: Add special case for handling of SSE + control bit on i386-darwin. + +2006-03-30 Thomas Koenig + + PR fortran/25031 + * runtime/memory.c (allocate_array): If stat is present and + the variable is already allocated, free the variable, do + the allocation and set stat. + (allocate_array_64): Likewise. Whitespace fix. + +2006-03-26 Jerry DeLisle + + PR libgfortran/26880 + * io/file_pos.c (st_rewind): Clear read_bad flag. + +2006-03-25 Jerry DeLisle + + PR libgfortran/26661 + * io/io.h: Add read_sf so it can be used by read_x. + * io/transfer.c (read_sf): Pass no_error flag to read_sf. Use it to + break out rather than error on EOF or EOR conditions. + (read_block): Update call to read_sf. + (read_block_direct): Ditto. + * io/read.c (read_x): Use the modified read_sf instead of read_block. + +2006-03-25 Thomas Koenig + + PR libfortran/26735 + * io/transfer.c (data_transfer_init): Set u_flags.convert + on an unopened unit if specified by environment variable + (via get_unformatted_convert) or by compile-time option. + +2006-03-25 Thomas Koenig + + PR fortran/26769 + * Makefile.am: Add transpose_r10.c and reshape_r10.c. + * aclocal.m4: Regenerate using aclocal 1.9.3. + * Makefile.in: Regenerate using automake 1.9.3. + * m4/iparm.m4 (rtype_ccode): If rtype_letter is `i', + evaluate to rtype_kind, otherwise to rtype_code. + * generated/transpose_r10.c: Add. + * generated/reshape_r10.c: Add. + +2006-03-22 Thomas Koenig + + PR fortran/19303 + * libgfortran.h (compile_options_t): Add record_marker. + * runtime/compile_options.c (set_record_marker): + New function. + * io/open.c: If we have four-byte record markers, use + GFC_INTEGER_4_HUGE as default record length. + * io/file_pos.c (unformatted_backspace): Handle + different size record markers. + * io/transfer.c (us_read): Likewise. + (us_write): Likewise. + (next_record_r): Likewise. + (write_us_marker): Likewise. + (next_record_w): Likewise. + +2006-03-20 Thomas Koenig + + PR fortran/20935 + * m4/iforeach.m4: Add SCALAR_FOREACH_FUNCTION macro. + * m4/ifunction.m4: Add SCALAR_ARRAY_FUNCTION macro. + * m4/minloc0.m4: Use SCALAR_FOREACH_FUNCTION. + * m4/minloc1.m4: Use SCALAR_ARRAY_FUNCTION. + * m4/maxloc0.m4: Use SCALAR_FOREACH_FUNCTION. + * m4/maxloc1.m4: Use SCALAR_ARRAY_FUNCTION. + * m4/minval.m4: Likewise. + * m4/maxval.m4: Likewise. + * m4/product.m4: Likewise. + * m4/sum.m4: Likewise. + * minloc0_16_i16.c : Regenerated. + * minloc0_16_i4.c : Regenerated. + * minloc0_16_i8.c : Regenerated. + * minloc0_16_r10.c : Regenerated. + * minloc0_16_r16.c : Regenerated. + * minloc0_16_r4.c : Regenerated. + * minloc0_16_r8.c : Regenerated. + * minloc0_4_i16.c : Regenerated. + * minloc0_4_i4.c : Regenerated. + * minloc0_4_i8.c : Regenerated. + * minloc0_4_r10.c : Regenerated. + * minloc0_4_r16.c : Regenerated. + * minloc0_4_r4.c : Regenerated. + * minloc0_4_r8.c : Regenerated. + * minloc0_8_i16.c : Regenerated. + * minloc0_8_i4.c : Regenerated. + * minloc0_8_i8.c : Regenerated. + * minloc0_8_r10.c : Regenerated. + * minloc0_8_r16.c : Regenerated. + * minloc0_8_r4.c : Regenerated. + * minloc0_8_r8.c : Regenerated. + * minloc1_16_i16.c : Regenerated. + * minloc1_16_i4.c : Regenerated. + * minloc1_16_i8.c : Regenerated. + * minloc1_16_r10.c : Regenerated. + * minloc1_16_r16.c : Regenerated. + * minloc1_16_r4.c : Regenerated. + * minloc1_16_r8.c : Regenerated. + * minloc1_4_i16.c : Regenerated. + * minloc1_4_i4.c : Regenerated. + * minloc1_4_i8.c : Regenerated. + * minloc1_4_r10.c : Regenerated. + * minloc1_4_r16.c : Regenerated. + * minloc1_4_r4.c : Regenerated. + * minloc1_4_r8.c : Regenerated. + * minloc1_8_i16.c : Regenerated. + * minloc1_8_i4.c : Regenerated. + * minloc1_8_i8.c : Regenerated. + * minloc1_8_r10.c : Regenerated. + * minloc1_8_r16.c : Regenerated. + * minloc1_8_r4.c : Regenerated. + * minloc1_8_r8.c : Regenerated. + * maxloc0_16_i16.c : Regenerated. + * maxloc0_16_i4.c : Regenerated. + * maxloc0_16_i8.c : Regenerated. + * maxloc0_16_r10.c : Regenerated. + * maxloc0_16_r16.c : Regenerated. + * maxloc0_16_r4.c : Regenerated. + * maxloc0_16_r8.c : Regenerated. + * maxloc0_4_i16.c : Regenerated. + * maxloc0_4_i4.c : Regenerated. + * maxloc0_4_i8.c : Regenerated. + * maxloc0_4_r10.c : Regenerated. + * maxloc0_4_r16.c : Regenerated. + * maxloc0_4_r4.c : Regenerated. + * maxloc0_4_r8.c : Regenerated. + * maxloc0_8_i16.c : Regenerated. + * maxloc0_8_i4.c : Regenerated. + * maxloc0_8_i8.c : Regenerated. + * maxloc0_8_r10.c : Regenerated. + * maxloc0_8_r16.c : Regenerated. + * maxloc0_8_r4.c : Regenerated. + * maxloc0_8_r8.c : Regenerated. + * maxloc1_16_i16.c : Regenerated. + * maxloc1_16_i4.c : Regenerated. + * maxloc1_16_i8.c : Regenerated. + * maxloc1_16_r10.c : Regenerated. + * maxloc1_16_r16.c : Regenerated. + * maxloc1_16_r4.c : Regenerated. + * maxloc1_16_r8.c : Regenerated. + * maxloc1_4_i16.c : Regenerated. + * maxloc1_4_i4.c : Regenerated. + * maxloc1_4_i8.c : Regenerated. + * maxloc1_4_r10.c : Regenerated. + * maxloc1_4_r16.c : Regenerated. + * maxloc1_4_r4.c : Regenerated. + * maxloc1_4_r8.c : Regenerated. + * maxloc1_8_i16.c : Regenerated. + * maxloc1_8_i4.c : Regenerated. + * maxloc1_8_i8.c : Regenerated. + * maxloc1_8_r10.c : Regenerated. + * maxloc1_8_r16.c : Regenerated. + * maxloc1_8_r4.c : Regenerated. + * maxloc1_8_r8.c : Regenerated. + * maxval_i16.c : Regenerated. + * maxval_i4.c : Regenerated. + * maxval_i8.c : Regenerated. + * maxval_r10.c : Regenerated. + * maxval_r16.c : Regenerated. + * maxval_r4.c : Regenerated. + * maxval_r8.c : Regenerated. + * minval_i16.c : Regenerated. + * minval_i4.c : Regenerated. + * minval_i8.c : Regenerated. + * minval_r10.c : Regenerated. + * minval_r16.c : Regenerated. + * minval_r4.c : Regenerated. + * minval_r8.c : Regenerated. + * sum_c10.c : Regenerated. + * sum_c16.c : Regenerated. + * sum_c4.c : Regenerated. + * sum_c8.c : Regenerated. + * sum_i16.c : Regenerated. + * sum_i4.c : Regenerated. + * sum_i8.c : Regenerated. + * sum_r10.c : Regenerated. + * sum_r16.c : Regenerated. + * sum_r4.c : Regenerated. + * sum_r8.c : Regenerated. + * product_c10.c : Regenerated. + * product_c16.c : Regenerated. + * product_c4.c : Regenerated. + * product_c8.c : Regenerated. + * product_i16.c : Regenerated. + * product_i4.c : Regenerated. + * product_i8.c : Regenerated. + * product_r10.c : Regenerated. + * product_r16.c : Regenerated. + * product_r4.c : Regenerated. + * product_r8.c : Regenerated. + +2006-03-17 Jerry DeLisle + + PR libgfortran/26509 + * libgfortran.h: Add ERROR_DIRECT_EOR. + * runtime/error.c (translate_error): Add translation for new error. + * io/transfer.c (write_buf): Add check for EOR when mode is + direct access. + 2006-03-13 Paul Thomas PR fortran/25378 diff --git a/libgfortran/Makefile.am b/libgfortran/Makefile.am index c5f1abb4f8c..0584922f1de 100644 --- a/libgfortran/Makefile.am +++ b/libgfortran/Makefile.am @@ -312,6 +312,7 @@ i_transpose_c= \ generated/transpose_i4.c \ generated/transpose_i8.c \ generated/transpose_i16.c \ +generated/transpose_r10.c \ generated/transpose_c4.c \ generated/transpose_c8.c \ generated/transpose_c10.c \ @@ -326,6 +327,7 @@ i_reshape_c= \ generated/reshape_i4.c \ generated/reshape_i8.c \ generated/reshape_i16.c \ +generated/reshape_r10.c \ generated/reshape_c4.c \ generated/reshape_c8.c \ generated/reshape_c10.c \ diff --git a/libgfortran/Makefile.in b/libgfortran/Makefile.in index 087df38d97d..6f4f68b654f 100644 --- a/libgfortran/Makefile.in +++ b/libgfortran/Makefile.in @@ -1,8 +1,8 @@ -# Makefile.in generated by automake 1.9.6 from Makefile.am. +# Makefile.in generated by automake 1.9.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -14,6 +14,8 @@ @SET_MAKE@ +SOURCES = $(libgfortran_la_SOURCES) $(libgfortranbegin_la_SOURCES) + srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ @@ -45,8 +47,7 @@ DIST_COMMON = $(am__configure_deps) $(srcdir)/../config.guess \ $(top_srcdir)/configure ChangeLog subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../config/lead-dot.m4 \ - $(top_srcdir)/../config/stdint.m4 $(top_srcdir)/acinclude.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/no-executables.m4 \ $(top_srcdir)/../libtool.m4 $(top_srcdir)/configure.ac @@ -122,14 +123,15 @@ am__objects_16 = matmul_i4.lo matmul_i8.lo matmul_i16.lo matmul_r4.lo \ matmul_c8.lo matmul_c10.lo matmul_c16.lo am__objects_17 = matmul_l4.lo matmul_l8.lo matmul_l16.lo am__objects_18 = transpose_i4.lo transpose_i8.lo transpose_i16.lo \ - transpose_c4.lo transpose_c8.lo transpose_c10.lo \ - transpose_c16.lo + transpose_r10.lo transpose_c4.lo transpose_c8.lo \ + transpose_c10.lo transpose_c16.lo am__objects_19 = shape_i4.lo shape_i8.lo shape_i16.lo am__objects_20 = eoshift1_4.lo eoshift1_8.lo eoshift1_16.lo am__objects_21 = eoshift3_4.lo eoshift3_8.lo eoshift3_16.lo am__objects_22 = cshift1_4.lo cshift1_8.lo cshift1_16.lo am__objects_23 = reshape_i4.lo reshape_i8.lo reshape_i16.lo \ - reshape_c4.lo reshape_c8.lo reshape_c10.lo reshape_c16.lo + reshape_r10.lo reshape_c4.lo reshape_c8.lo reshape_c10.lo \ + reshape_c16.lo am__objects_24 = in_pack_i4.lo in_pack_i8.lo in_pack_i16.lo \ in_pack_c4.lo in_pack_c8.lo in_pack_c10.lo in_pack_c16.lo am__objects_25 = in_unpack_i4.lo in_unpack_i8.lo in_unpack_i16.lo \ @@ -222,7 +224,7 @@ LTPPFCCOMPILE = $(LIBTOOL) --mode=compile $(FC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_FCFLAGS) $(FCFLAGS) FCLD = $(FC) -FCLINK = $(LIBTOOL) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \ +FCLINK = $(LIBTOOL) --mode=link $(FCLD) $(AM_FFLAGS) $(FCFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -658,6 +660,7 @@ i_transpose_c = \ generated/transpose_i4.c \ generated/transpose_i8.c \ generated/transpose_i16.c \ +generated/transpose_r10.c \ generated/transpose_c4.c \ generated/transpose_c8.c \ generated/transpose_c10.c \ @@ -672,6 +675,7 @@ i_reshape_c = \ generated/reshape_i4.c \ generated/reshape_i8.c \ generated/reshape_i16.c \ +generated/reshape_r10.c \ generated/reshape_c4.c \ generated/reshape_c8.c \ generated/reshape_c10.c \ @@ -1928,6 +1932,9 @@ transpose_i8.lo: generated/transpose_i8.c transpose_i16.lo: generated/transpose_i16.c $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o transpose_i16.lo `test -f 'generated/transpose_i16.c' || echo '$(srcdir)/'`generated/transpose_i16.c +transpose_r10.lo: generated/transpose_r10.c + $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o transpose_r10.lo `test -f 'generated/transpose_r10.c' || echo '$(srcdir)/'`generated/transpose_r10.c + transpose_c4.lo: generated/transpose_c4.c $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o transpose_c4.lo `test -f 'generated/transpose_c4.c' || echo '$(srcdir)/'`generated/transpose_c4.c @@ -1985,6 +1992,9 @@ reshape_i8.lo: generated/reshape_i8.c reshape_i16.lo: generated/reshape_i16.c $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o reshape_i16.lo `test -f 'generated/reshape_i16.c' || echo '$(srcdir)/'`generated/reshape_i16.c +reshape_r10.lo: generated/reshape_r10.c + $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o reshape_r10.lo `test -f 'generated/reshape_r10.c' || echo '$(srcdir)/'`generated/reshape_r10.c + reshape_c4.lo: generated/reshape_c4.c $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o reshape_c4.lo `test -f 'generated/reshape_c4.c' || echo '$(srcdir)/'`generated/reshape_c4.c diff --git a/fastjar/aclocal.m4 b/libgfortran/aclocal.m4 similarity index 70% rename from fastjar/aclocal.m4 rename to libgfortran/aclocal.m4 index 1759af44871..0111a59f978 100644 --- a/fastjar/aclocal.m4 +++ b/libgfortran/aclocal.m4 @@ -149,277 +149,6 @@ AC_CONFIG_COMMANDS_PRE( Usually this means the macro was only invoked conditionally.]]) fi])]) -# serial 7 -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 -# 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 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH]) -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 -# 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 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -#serial 2 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 2000, 2001, 2003 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 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 7 - -# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. -AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) - # Do all the work for Automake. -*- Autoconf -*- # This macro actually does too much some checks are only needed if @@ -644,69 +373,6 @@ AC_DEFUN([AM_MAINTAINER_MODE], AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003 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 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 2 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo done -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - # -*- Autoconf -*- @@ -827,6 +493,75 @@ else fi AC_SUBST([mkdir_p])]) +# Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004 +# 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 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 4 + +# AM_ENABLE_MULTILIB([MAKEFILE], [REL-TO-TOP-SRCDIR]) +# --------------------------------------------------- +# Add --enable-multilib to configure. +AC_DEFUN([AM_ENABLE_MULTILIB], +[# Default to --enable-multilib +AC_ARG_ENABLE(multilib, +[ --enable-multilib build many library versions (default)], +[case "$enableval" in + yes) multilib=yes ;; + no) multilib=no ;; + *) AC_MSG_ERROR([bad value $enableval for multilib option]) ;; + esac], + [multilib=yes]) + +# We may get other options which we leave undocumented: +# --with-target-subdir, --with-multisrctop, --with-multisubdir +# See config-ml.in if you want the gory details. + +if test "$srcdir" = "."; then + if test "$with_target_subdir" != "."; then + multi_basedir="$srcdir/$with_multisrctop../$2" + else + multi_basedir="$srcdir/$with_multisrctop$2" + fi +else + multi_basedir="$srcdir/$2" +fi +AC_SUBST(multi_basedir) + +AC_OUTPUT_COMMANDS([ +# Only add multilib support code if we just rebuilt the top-level +# Makefile. +case " $CONFIG_FILES " in + *" ]m4_default([$1],Makefile)[ "*) + ac_file=]m4_default([$1],Makefile)[ . ${multi_basedir}/config-ml.in + ;; +esac], + [ +srcdir="$srcdir" +host="$host" +target="$target" +with_multisubdir="$with_multisubdir" +with_multisrctop="$with_multisrctop" +with_target_subdir="$with_target_subdir" +ac_configure_args="${multilib_arg} ${ac_configure_args}" +multi_basedir="$multi_basedir" +CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} +CC="$CC"])])dnl + # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. diff --git a/libgfortran/config/fpu-387.h b/libgfortran/config/fpu-387.h index bf9fbc8efce..5678ade3f6a 100644 --- a/libgfortran/config/fpu-387.h +++ b/libgfortran/config/fpu-387.h @@ -93,12 +93,14 @@ void set_fpu (void) /* SSE */ asm volatile ("stmxcsr %0" : "=m" (cw_sse)); cw_sse &= 0xFFFF0000; - if (options.fpe & GFC_FPE_INVALID) cw_sse |= 1 << 7; - if (options.fpe & GFC_FPE_DENORMAL) cw_sse |= 1 << 8; - if (options.fpe & GFC_FPE_ZERO) cw_sse |= 1 << 9; - if (options.fpe & GFC_FPE_OVERFLOW) cw_sse |= 1 << 10; - if (options.fpe & GFC_FPE_UNDERFLOW) cw_sse |= 1 << 11; - if (options.fpe & GFC_FPE_PRECISION) cw_sse |= 1 << 12; + cw_sse |= (_FPU_MASK_IM | _FPU_MASK_DM | _FPU_MASK_ZM | _FPU_MASK_OM + | _FPU_MASK_UM | _FPU_MASK_PM ) << 7; + if (options.fpe & GFC_FPE_INVALID) cw_sse &= ~(_FPU_MASK_IM << 7); + if (options.fpe & GFC_FPE_DENORMAL) cw_sse &= ~(_FPU_MASK_DM << 7); + if (options.fpe & GFC_FPE_ZERO) cw_sse &= ~(_FPU_MASK_ZM << 7); + if (options.fpe & GFC_FPE_OVERFLOW) cw_sse &= ~(_FPU_MASK_OM << 7); + if (options.fpe & GFC_FPE_UNDERFLOW) cw_sse &= ~(_FPU_MASK_UM << 7); + if (options.fpe & GFC_FPE_PRECISION) cw_sse &= ~(_FPU_MASK_PM << 7); asm volatile ("ldmxcsr %0" : : "m" (cw_sse)); } } diff --git a/libgfortran/generated/maxloc0_16_i16.c b/libgfortran/generated/maxloc0_16_i16.c index 93ad9e4ebd1..ab341d8bea9 100644 --- a/libgfortran/generated/maxloc0_16_i16.c +++ b/libgfortran/generated/maxloc0_16_i16.c @@ -293,4 +293,56 @@ mmaxloc0_16_i16 (gfc_array_i16 * const restrict retarray, } } + +extern void smaxloc0_16_i16 (gfc_array_i16 * const restrict, + gfc_array_i16 * const restrict, GFC_LOGICAL_4 *); +export_proto(smaxloc0_16_i16); + +void +smaxloc0_16_i16 (gfc_array_i16 * const restrict retarray, + gfc_array_i16 * const restrict array, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type dstride; + index_type n; + GFC_INTEGER_16 *dest; + + if (*mask) + { + maxloc0_16_i16 (retarray, array); + return; + } + + rank = GFC_DESCRIPTOR_RANK (array); + + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxloc1_16_i4.c b/libgfortran/generated/maxloc1_16_i4.c index cd668bbd6ee..7810033dfd2 100644 --- a/libgfortran/generated/maxloc1_16_i4.c +++ b/libgfortran/generated/maxloc1_16_i4.c @@ -350,4 +350,58 @@ mmaxloc1_16_i4 (gfc_array_i16 * const restrict retarray, } } + +extern void smaxloc1_16_i4 (gfc_array_i16 * const restrict, + gfc_array_i4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxloc1_16_i4); + +void +smaxloc1_16_i4 (gfc_array_i16 * const restrict retarray, + gfc_array_i4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_16 *dest; + + if (*mask) + { + maxloc1_16_i4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxloc1_16_i8.c b/libgfortran/generated/maxloc1_16_i8.c index ab665986b09..6c6a790a93c 100644 --- a/libgfortran/generated/maxloc1_16_i8.c +++ b/libgfortran/generated/maxloc1_16_i8.c @@ -350,4 +350,58 @@ mmaxloc1_16_i8 (gfc_array_i16 * const restrict retarray, } } + +extern void smaxloc1_16_i8 (gfc_array_i16 * const restrict, + gfc_array_i8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxloc1_16_i8); + +void +smaxloc1_16_i8 (gfc_array_i16 * const restrict retarray, + gfc_array_i8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_16 *dest; + + if (*mask) + { + maxloc1_16_i8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxloc1_16_r10.c b/libgfortran/generated/maxloc1_16_r10.c index 90606dd86e1..d122223ff37 100644 --- a/libgfortran/generated/maxloc1_16_r10.c +++ b/libgfortran/generated/maxloc1_16_r10.c @@ -350,4 +350,58 @@ mmaxloc1_16_r10 (gfc_array_i16 * const restrict retarray, } } + +extern void smaxloc1_16_r10 (gfc_array_i16 * const restrict, + gfc_array_r10 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxloc1_16_r10); + +void +smaxloc1_16_r10 (gfc_array_i16 * const restrict retarray, + gfc_array_r10 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_16 *dest; + + if (*mask) + { + maxloc1_16_r10 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxloc1_16_r16.c b/libgfortran/generated/maxloc1_16_r16.c index 0a1939c9cde..18d12256049 100644 --- a/libgfortran/generated/maxloc1_16_r16.c +++ b/libgfortran/generated/maxloc1_16_r16.c @@ -350,4 +350,58 @@ mmaxloc1_16_r16 (gfc_array_i16 * const restrict retarray, } } + +extern void smaxloc1_16_r16 (gfc_array_i16 * const restrict, + gfc_array_r16 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxloc1_16_r16); + +void +smaxloc1_16_r16 (gfc_array_i16 * const restrict retarray, + gfc_array_r16 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_16 *dest; + + if (*mask) + { + maxloc1_16_r16 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxloc1_16_r4.c b/libgfortran/generated/maxloc1_16_r4.c index 445e8b093b7..f5fbcac366f 100644 --- a/libgfortran/generated/maxloc1_16_r4.c +++ b/libgfortran/generated/maxloc1_16_r4.c @@ -350,4 +350,58 @@ mmaxloc1_16_r4 (gfc_array_i16 * const restrict retarray, } } + +extern void smaxloc1_16_r4 (gfc_array_i16 * const restrict, + gfc_array_r4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxloc1_16_r4); + +void +smaxloc1_16_r4 (gfc_array_i16 * const restrict retarray, + gfc_array_r4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_16 *dest; + + if (*mask) + { + maxloc1_16_r4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxloc1_16_r8.c b/libgfortran/generated/maxloc1_16_r8.c index 3a663bb1094..40922e389e0 100644 --- a/libgfortran/generated/maxloc1_16_r8.c +++ b/libgfortran/generated/maxloc1_16_r8.c @@ -350,4 +350,58 @@ mmaxloc1_16_r8 (gfc_array_i16 * const restrict retarray, } } + +extern void smaxloc1_16_r8 (gfc_array_i16 * const restrict, + gfc_array_r8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxloc1_16_r8); + +void +smaxloc1_16_r8 (gfc_array_i16 * const restrict retarray, + gfc_array_r8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_16 *dest; + + if (*mask) + { + maxloc1_16_r8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxloc1_4_i16.c b/libgfortran/generated/maxloc1_4_i16.c index b881504cbe0..1dfb06d9cde 100644 --- a/libgfortran/generated/maxloc1_4_i16.c +++ b/libgfortran/generated/maxloc1_4_i16.c @@ -350,4 +350,58 @@ mmaxloc1_4_i16 (gfc_array_i4 * const restrict retarray, } } + +extern void smaxloc1_4_i16 (gfc_array_i4 * const restrict, + gfc_array_i16 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxloc1_4_i16); + +void +smaxloc1_4_i16 (gfc_array_i4 * const restrict retarray, + gfc_array_i16 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_4 *dest; + + if (*mask) + { + maxloc1_4_i16 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxloc1_4_i4.c b/libgfortran/generated/maxloc1_4_i4.c index e8a053ec04a..ae016accbc2 100644 --- a/libgfortran/generated/maxloc1_4_i4.c +++ b/libgfortran/generated/maxloc1_4_i4.c @@ -350,4 +350,58 @@ mmaxloc1_4_i4 (gfc_array_i4 * const restrict retarray, } } + +extern void smaxloc1_4_i4 (gfc_array_i4 * const restrict, + gfc_array_i4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxloc1_4_i4); + +void +smaxloc1_4_i4 (gfc_array_i4 * const restrict retarray, + gfc_array_i4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_4 *dest; + + if (*mask) + { + maxloc1_4_i4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxloc1_4_i8.c b/libgfortran/generated/maxloc1_4_i8.c index ff5b7b9fe19..d55059bbe2a 100644 --- a/libgfortran/generated/maxloc1_4_i8.c +++ b/libgfortran/generated/maxloc1_4_i8.c @@ -350,4 +350,58 @@ mmaxloc1_4_i8 (gfc_array_i4 * const restrict retarray, } } + +extern void smaxloc1_4_i8 (gfc_array_i4 * const restrict, + gfc_array_i8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxloc1_4_i8); + +void +smaxloc1_4_i8 (gfc_array_i4 * const restrict retarray, + gfc_array_i8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_4 *dest; + + if (*mask) + { + maxloc1_4_i8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxloc1_4_r10.c b/libgfortran/generated/maxloc1_4_r10.c index 306cfe98671..70a0b7b2b78 100644 --- a/libgfortran/generated/maxloc1_4_r10.c +++ b/libgfortran/generated/maxloc1_4_r10.c @@ -350,4 +350,58 @@ mmaxloc1_4_r10 (gfc_array_i4 * const restrict retarray, } } + +extern void smaxloc1_4_r10 (gfc_array_i4 * const restrict, + gfc_array_r10 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxloc1_4_r10); + +void +smaxloc1_4_r10 (gfc_array_i4 * const restrict retarray, + gfc_array_r10 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_4 *dest; + + if (*mask) + { + maxloc1_4_r10 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxloc1_4_r16.c b/libgfortran/generated/maxloc1_4_r16.c index 6f6cd22b27a..e3abb9c02ba 100644 --- a/libgfortran/generated/maxloc1_4_r16.c +++ b/libgfortran/generated/maxloc1_4_r16.c @@ -350,4 +350,58 @@ mmaxloc1_4_r16 (gfc_array_i4 * const restrict retarray, } } + +extern void smaxloc1_4_r16 (gfc_array_i4 * const restrict, + gfc_array_r16 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxloc1_4_r16); + +void +smaxloc1_4_r16 (gfc_array_i4 * const restrict retarray, + gfc_array_r16 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_4 *dest; + + if (*mask) + { + maxloc1_4_r16 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxloc1_4_r4.c b/libgfortran/generated/maxloc1_4_r4.c index 3795ed80d55..bcecc57d02e 100644 --- a/libgfortran/generated/maxloc1_4_r4.c +++ b/libgfortran/generated/maxloc1_4_r4.c @@ -350,4 +350,58 @@ mmaxloc1_4_r4 (gfc_array_i4 * const restrict retarray, } } + +extern void smaxloc1_4_r4 (gfc_array_i4 * const restrict, + gfc_array_r4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxloc1_4_r4); + +void +smaxloc1_4_r4 (gfc_array_i4 * const restrict retarray, + gfc_array_r4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_4 *dest; + + if (*mask) + { + maxloc1_4_r4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxloc1_4_r8.c b/libgfortran/generated/maxloc1_4_r8.c index 82d4a6710c9..5bcf032557d 100644 --- a/libgfortran/generated/maxloc1_4_r8.c +++ b/libgfortran/generated/maxloc1_4_r8.c @@ -350,4 +350,58 @@ mmaxloc1_4_r8 (gfc_array_i4 * const restrict retarray, } } + +extern void smaxloc1_4_r8 (gfc_array_i4 * const restrict, + gfc_array_r8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxloc1_4_r8); + +void +smaxloc1_4_r8 (gfc_array_i4 * const restrict retarray, + gfc_array_r8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_4 *dest; + + if (*mask) + { + maxloc1_4_r8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxloc1_8_i16.c b/libgfortran/generated/maxloc1_8_i16.c index 69cb35ec5f9..8d5491a4b6d 100644 --- a/libgfortran/generated/maxloc1_8_i16.c +++ b/libgfortran/generated/maxloc1_8_i16.c @@ -350,4 +350,58 @@ mmaxloc1_8_i16 (gfc_array_i8 * const restrict retarray, } } + +extern void smaxloc1_8_i16 (gfc_array_i8 * const restrict, + gfc_array_i16 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxloc1_8_i16); + +void +smaxloc1_8_i16 (gfc_array_i8 * const restrict retarray, + gfc_array_i16 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_8 *dest; + + if (*mask) + { + maxloc1_8_i16 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxloc1_8_i4.c b/libgfortran/generated/maxloc1_8_i4.c index 6857896d5b5..5c187e25daa 100644 --- a/libgfortran/generated/maxloc1_8_i4.c +++ b/libgfortran/generated/maxloc1_8_i4.c @@ -350,4 +350,58 @@ mmaxloc1_8_i4 (gfc_array_i8 * const restrict retarray, } } + +extern void smaxloc1_8_i4 (gfc_array_i8 * const restrict, + gfc_array_i4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxloc1_8_i4); + +void +smaxloc1_8_i4 (gfc_array_i8 * const restrict retarray, + gfc_array_i4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_8 *dest; + + if (*mask) + { + maxloc1_8_i4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxloc1_8_i8.c b/libgfortran/generated/maxloc1_8_i8.c index 5c5f8368b53..ea123178940 100644 --- a/libgfortran/generated/maxloc1_8_i8.c +++ b/libgfortran/generated/maxloc1_8_i8.c @@ -350,4 +350,58 @@ mmaxloc1_8_i8 (gfc_array_i8 * const restrict retarray, } } + +extern void smaxloc1_8_i8 (gfc_array_i8 * const restrict, + gfc_array_i8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxloc1_8_i8); + +void +smaxloc1_8_i8 (gfc_array_i8 * const restrict retarray, + gfc_array_i8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_8 *dest; + + if (*mask) + { + maxloc1_8_i8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxloc1_8_r10.c b/libgfortran/generated/maxloc1_8_r10.c index e4f17d49b8e..40972e64840 100644 --- a/libgfortran/generated/maxloc1_8_r10.c +++ b/libgfortran/generated/maxloc1_8_r10.c @@ -350,4 +350,58 @@ mmaxloc1_8_r10 (gfc_array_i8 * const restrict retarray, } } + +extern void smaxloc1_8_r10 (gfc_array_i8 * const restrict, + gfc_array_r10 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxloc1_8_r10); + +void +smaxloc1_8_r10 (gfc_array_i8 * const restrict retarray, + gfc_array_r10 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_8 *dest; + + if (*mask) + { + maxloc1_8_r10 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxloc1_8_r16.c b/libgfortran/generated/maxloc1_8_r16.c index 0a5dd515e9d..11f3e05aa75 100644 --- a/libgfortran/generated/maxloc1_8_r16.c +++ b/libgfortran/generated/maxloc1_8_r16.c @@ -350,4 +350,58 @@ mmaxloc1_8_r16 (gfc_array_i8 * const restrict retarray, } } + +extern void smaxloc1_8_r16 (gfc_array_i8 * const restrict, + gfc_array_r16 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxloc1_8_r16); + +void +smaxloc1_8_r16 (gfc_array_i8 * const restrict retarray, + gfc_array_r16 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_8 *dest; + + if (*mask) + { + maxloc1_8_r16 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxloc1_8_r4.c b/libgfortran/generated/maxloc1_8_r4.c index 15a82f24921..10bd416338e 100644 --- a/libgfortran/generated/maxloc1_8_r4.c +++ b/libgfortran/generated/maxloc1_8_r4.c @@ -350,4 +350,58 @@ mmaxloc1_8_r4 (gfc_array_i8 * const restrict retarray, } } + +extern void smaxloc1_8_r4 (gfc_array_i8 * const restrict, + gfc_array_r4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxloc1_8_r4); + +void +smaxloc1_8_r4 (gfc_array_i8 * const restrict retarray, + gfc_array_r4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_8 *dest; + + if (*mask) + { + maxloc1_8_r4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxloc1_8_r8.c b/libgfortran/generated/maxloc1_8_r8.c index c89135e2f3a..534e6cd80d6 100644 --- a/libgfortran/generated/maxloc1_8_r8.c +++ b/libgfortran/generated/maxloc1_8_r8.c @@ -350,4 +350,58 @@ mmaxloc1_8_r8 (gfc_array_i8 * const restrict retarray, } } + +extern void smaxloc1_8_r8 (gfc_array_i8 * const restrict, + gfc_array_r8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxloc1_8_r8); + +void +smaxloc1_8_r8 (gfc_array_i8 * const restrict retarray, + gfc_array_r8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_8 *dest; + + if (*mask) + { + maxloc1_8_r8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/maxval_i16.c b/libgfortran/generated/maxval_i16.c index 9ae812ed7ea..2b505803daf 100644 --- a/libgfortran/generated/maxval_i16.c +++ b/libgfortran/generated/maxval_i16.c @@ -339,4 +339,58 @@ mmaxval_i16 (gfc_array_i16 * const restrict retarray, } } + +extern void smaxval_i16 (gfc_array_i16 * const restrict, + gfc_array_i16 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxval_i16); + +void +smaxval_i16 (gfc_array_i16 * const restrict retarray, + gfc_array_i16 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_16 *dest; + + if (*mask) + { + maxval_i16 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = -GFC_INTEGER_16_HUGE ; +} + #endif diff --git a/libgfortran/generated/maxval_i4.c b/libgfortran/generated/maxval_i4.c index 3ee7ce04edd..65136953239 100644 --- a/libgfortran/generated/maxval_i4.c +++ b/libgfortran/generated/maxval_i4.c @@ -339,4 +339,58 @@ mmaxval_i4 (gfc_array_i4 * const restrict retarray, } } + +extern void smaxval_i4 (gfc_array_i4 * const restrict, + gfc_array_i4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxval_i4); + +void +smaxval_i4 (gfc_array_i4 * const restrict retarray, + gfc_array_i4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_4 *dest; + + if (*mask) + { + maxval_i4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = -GFC_INTEGER_4_HUGE ; +} + #endif diff --git a/libgfortran/generated/maxval_i8.c b/libgfortran/generated/maxval_i8.c index f2cf7fc908f..fe78be161a6 100644 --- a/libgfortran/generated/maxval_i8.c +++ b/libgfortran/generated/maxval_i8.c @@ -339,4 +339,58 @@ mmaxval_i8 (gfc_array_i8 * const restrict retarray, } } + +extern void smaxval_i8 (gfc_array_i8 * const restrict, + gfc_array_i8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxval_i8); + +void +smaxval_i8 (gfc_array_i8 * const restrict retarray, + gfc_array_i8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_8 *dest; + + if (*mask) + { + maxval_i8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = -GFC_INTEGER_8_HUGE ; +} + #endif diff --git a/libgfortran/generated/maxval_r10.c b/libgfortran/generated/maxval_r10.c index 9efa92aac8d..5f9c5db89fe 100644 --- a/libgfortran/generated/maxval_r10.c +++ b/libgfortran/generated/maxval_r10.c @@ -339,4 +339,58 @@ mmaxval_r10 (gfc_array_r10 * const restrict retarray, } } + +extern void smaxval_r10 (gfc_array_r10 * const restrict, + gfc_array_r10 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxval_r10); + +void +smaxval_r10 (gfc_array_r10 * const restrict retarray, + gfc_array_r10 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_REAL_10 *dest; + + if (*mask) + { + maxval_r10 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_REAL_10) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = -GFC_REAL_10_HUGE ; +} + #endif diff --git a/libgfortran/generated/maxval_r16.c b/libgfortran/generated/maxval_r16.c index a4d27be7316..a52669164cc 100644 --- a/libgfortran/generated/maxval_r16.c +++ b/libgfortran/generated/maxval_r16.c @@ -339,4 +339,58 @@ mmaxval_r16 (gfc_array_r16 * const restrict retarray, } } + +extern void smaxval_r16 (gfc_array_r16 * const restrict, + gfc_array_r16 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxval_r16); + +void +smaxval_r16 (gfc_array_r16 * const restrict retarray, + gfc_array_r16 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_REAL_16 *dest; + + if (*mask) + { + maxval_r16 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_REAL_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = -GFC_REAL_16_HUGE ; +} + #endif diff --git a/libgfortran/generated/maxval_r4.c b/libgfortran/generated/maxval_r4.c index 42f95a18adb..23cee97d5e0 100644 --- a/libgfortran/generated/maxval_r4.c +++ b/libgfortran/generated/maxval_r4.c @@ -339,4 +339,58 @@ mmaxval_r4 (gfc_array_r4 * const restrict retarray, } } + +extern void smaxval_r4 (gfc_array_r4 * const restrict, + gfc_array_r4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxval_r4); + +void +smaxval_r4 (gfc_array_r4 * const restrict retarray, + gfc_array_r4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_REAL_4 *dest; + + if (*mask) + { + maxval_r4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_REAL_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = -GFC_REAL_4_HUGE ; +} + #endif diff --git a/libgfortran/generated/maxval_r8.c b/libgfortran/generated/maxval_r8.c index f70442506dc..2fd37e5fa9b 100644 --- a/libgfortran/generated/maxval_r8.c +++ b/libgfortran/generated/maxval_r8.c @@ -339,4 +339,58 @@ mmaxval_r8 (gfc_array_r8 * const restrict retarray, } } + +extern void smaxval_r8 (gfc_array_r8 * const restrict, + gfc_array_r8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(smaxval_r8); + +void +smaxval_r8 (gfc_array_r8 * const restrict retarray, + gfc_array_r8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_REAL_8 *dest; + + if (*mask) + { + maxval_r8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_REAL_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = -GFC_REAL_8_HUGE ; +} + #endif diff --git a/libgfortran/generated/minloc0_16_i16.c b/libgfortran/generated/minloc0_16_i16.c index 7bf58e32789..d41276d9230 100644 --- a/libgfortran/generated/minloc0_16_i16.c +++ b/libgfortran/generated/minloc0_16_i16.c @@ -293,4 +293,56 @@ mminloc0_16_i16 (gfc_array_i16 * const restrict retarray, } } + +extern void sminloc0_16_i16 (gfc_array_i16 * const restrict, + gfc_array_i16 * const restrict, GFC_LOGICAL_4 *); +export_proto(sminloc0_16_i16); + +void +sminloc0_16_i16 (gfc_array_i16 * const restrict retarray, + gfc_array_i16 * const restrict array, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type dstride; + index_type n; + GFC_INTEGER_16 *dest; + + if (*mask) + { + minloc0_16_i16 (retarray, array); + return; + } + + rank = GFC_DESCRIPTOR_RANK (array); + + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minloc1_16_i4.c b/libgfortran/generated/minloc1_16_i4.c index d2fdd541483..cba6b90cfb8 100644 --- a/libgfortran/generated/minloc1_16_i4.c +++ b/libgfortran/generated/minloc1_16_i4.c @@ -350,4 +350,58 @@ mminloc1_16_i4 (gfc_array_i16 * const restrict retarray, } } + +extern void sminloc1_16_i4 (gfc_array_i16 * const restrict, + gfc_array_i4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminloc1_16_i4); + +void +sminloc1_16_i4 (gfc_array_i16 * const restrict retarray, + gfc_array_i4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_16 *dest; + + if (*mask) + { + minloc1_16_i4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minloc1_16_i8.c b/libgfortran/generated/minloc1_16_i8.c index 19ac6d77352..ba8be3987ad 100644 --- a/libgfortran/generated/minloc1_16_i8.c +++ b/libgfortran/generated/minloc1_16_i8.c @@ -350,4 +350,58 @@ mminloc1_16_i8 (gfc_array_i16 * const restrict retarray, } } + +extern void sminloc1_16_i8 (gfc_array_i16 * const restrict, + gfc_array_i8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminloc1_16_i8); + +void +sminloc1_16_i8 (gfc_array_i16 * const restrict retarray, + gfc_array_i8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_16 *dest; + + if (*mask) + { + minloc1_16_i8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minloc1_16_r10.c b/libgfortran/generated/minloc1_16_r10.c index cc3d59b0256..3553c224faa 100644 --- a/libgfortran/generated/minloc1_16_r10.c +++ b/libgfortran/generated/minloc1_16_r10.c @@ -350,4 +350,58 @@ mminloc1_16_r10 (gfc_array_i16 * const restrict retarray, } } + +extern void sminloc1_16_r10 (gfc_array_i16 * const restrict, + gfc_array_r10 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminloc1_16_r10); + +void +sminloc1_16_r10 (gfc_array_i16 * const restrict retarray, + gfc_array_r10 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_16 *dest; + + if (*mask) + { + minloc1_16_r10 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minloc1_16_r16.c b/libgfortran/generated/minloc1_16_r16.c index 76e8787ad62..258a5e21561 100644 --- a/libgfortran/generated/minloc1_16_r16.c +++ b/libgfortran/generated/minloc1_16_r16.c @@ -350,4 +350,58 @@ mminloc1_16_r16 (gfc_array_i16 * const restrict retarray, } } + +extern void sminloc1_16_r16 (gfc_array_i16 * const restrict, + gfc_array_r16 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminloc1_16_r16); + +void +sminloc1_16_r16 (gfc_array_i16 * const restrict retarray, + gfc_array_r16 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_16 *dest; + + if (*mask) + { + minloc1_16_r16 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minloc1_16_r4.c b/libgfortran/generated/minloc1_16_r4.c index 46ed3b63280..86ba6670040 100644 --- a/libgfortran/generated/minloc1_16_r4.c +++ b/libgfortran/generated/minloc1_16_r4.c @@ -350,4 +350,58 @@ mminloc1_16_r4 (gfc_array_i16 * const restrict retarray, } } + +extern void sminloc1_16_r4 (gfc_array_i16 * const restrict, + gfc_array_r4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminloc1_16_r4); + +void +sminloc1_16_r4 (gfc_array_i16 * const restrict retarray, + gfc_array_r4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_16 *dest; + + if (*mask) + { + minloc1_16_r4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minloc1_16_r8.c b/libgfortran/generated/minloc1_16_r8.c index 2d8bbf915f6..1fe86e5019c 100644 --- a/libgfortran/generated/minloc1_16_r8.c +++ b/libgfortran/generated/minloc1_16_r8.c @@ -350,4 +350,58 @@ mminloc1_16_r8 (gfc_array_i16 * const restrict retarray, } } + +extern void sminloc1_16_r8 (gfc_array_i16 * const restrict, + gfc_array_r8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminloc1_16_r8); + +void +sminloc1_16_r8 (gfc_array_i16 * const restrict retarray, + gfc_array_r8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_16 *dest; + + if (*mask) + { + minloc1_16_r8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minloc1_4_i16.c b/libgfortran/generated/minloc1_4_i16.c index 94712f4ecec..5952d216005 100644 --- a/libgfortran/generated/minloc1_4_i16.c +++ b/libgfortran/generated/minloc1_4_i16.c @@ -350,4 +350,58 @@ mminloc1_4_i16 (gfc_array_i4 * const restrict retarray, } } + +extern void sminloc1_4_i16 (gfc_array_i4 * const restrict, + gfc_array_i16 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminloc1_4_i16); + +void +sminloc1_4_i16 (gfc_array_i4 * const restrict retarray, + gfc_array_i16 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_4 *dest; + + if (*mask) + { + minloc1_4_i16 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minloc1_4_i4.c b/libgfortran/generated/minloc1_4_i4.c index a80d2c68d07..79321f14a81 100644 --- a/libgfortran/generated/minloc1_4_i4.c +++ b/libgfortran/generated/minloc1_4_i4.c @@ -350,4 +350,58 @@ mminloc1_4_i4 (gfc_array_i4 * const restrict retarray, } } + +extern void sminloc1_4_i4 (gfc_array_i4 * const restrict, + gfc_array_i4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminloc1_4_i4); + +void +sminloc1_4_i4 (gfc_array_i4 * const restrict retarray, + gfc_array_i4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_4 *dest; + + if (*mask) + { + minloc1_4_i4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minloc1_4_i8.c b/libgfortran/generated/minloc1_4_i8.c index 55c837034e4..625328beac9 100644 --- a/libgfortran/generated/minloc1_4_i8.c +++ b/libgfortran/generated/minloc1_4_i8.c @@ -350,4 +350,58 @@ mminloc1_4_i8 (gfc_array_i4 * const restrict retarray, } } + +extern void sminloc1_4_i8 (gfc_array_i4 * const restrict, + gfc_array_i8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminloc1_4_i8); + +void +sminloc1_4_i8 (gfc_array_i4 * const restrict retarray, + gfc_array_i8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_4 *dest; + + if (*mask) + { + minloc1_4_i8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minloc1_4_r10.c b/libgfortran/generated/minloc1_4_r10.c index 1d9b7547ec2..ab4d5b415b7 100644 --- a/libgfortran/generated/minloc1_4_r10.c +++ b/libgfortran/generated/minloc1_4_r10.c @@ -350,4 +350,58 @@ mminloc1_4_r10 (gfc_array_i4 * const restrict retarray, } } + +extern void sminloc1_4_r10 (gfc_array_i4 * const restrict, + gfc_array_r10 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminloc1_4_r10); + +void +sminloc1_4_r10 (gfc_array_i4 * const restrict retarray, + gfc_array_r10 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_4 *dest; + + if (*mask) + { + minloc1_4_r10 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minloc1_4_r16.c b/libgfortran/generated/minloc1_4_r16.c index df903cb2d3d..9ffdd331dda 100644 --- a/libgfortran/generated/minloc1_4_r16.c +++ b/libgfortran/generated/minloc1_4_r16.c @@ -350,4 +350,58 @@ mminloc1_4_r16 (gfc_array_i4 * const restrict retarray, } } + +extern void sminloc1_4_r16 (gfc_array_i4 * const restrict, + gfc_array_r16 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminloc1_4_r16); + +void +sminloc1_4_r16 (gfc_array_i4 * const restrict retarray, + gfc_array_r16 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_4 *dest; + + if (*mask) + { + minloc1_4_r16 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minloc1_4_r4.c b/libgfortran/generated/minloc1_4_r4.c index e723e92d20c..a91ee8da0de 100644 --- a/libgfortran/generated/minloc1_4_r4.c +++ b/libgfortran/generated/minloc1_4_r4.c @@ -350,4 +350,58 @@ mminloc1_4_r4 (gfc_array_i4 * const restrict retarray, } } + +extern void sminloc1_4_r4 (gfc_array_i4 * const restrict, + gfc_array_r4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminloc1_4_r4); + +void +sminloc1_4_r4 (gfc_array_i4 * const restrict retarray, + gfc_array_r4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_4 *dest; + + if (*mask) + { + minloc1_4_r4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minloc1_4_r8.c b/libgfortran/generated/minloc1_4_r8.c index 5fbf3ec0482..355333d20a5 100644 --- a/libgfortran/generated/minloc1_4_r8.c +++ b/libgfortran/generated/minloc1_4_r8.c @@ -350,4 +350,58 @@ mminloc1_4_r8 (gfc_array_i4 * const restrict retarray, } } + +extern void sminloc1_4_r8 (gfc_array_i4 * const restrict, + gfc_array_r8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminloc1_4_r8); + +void +sminloc1_4_r8 (gfc_array_i4 * const restrict retarray, + gfc_array_r8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_4 *dest; + + if (*mask) + { + minloc1_4_r8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minloc1_8_i16.c b/libgfortran/generated/minloc1_8_i16.c index 07cbf78c511..4e78589fc60 100644 --- a/libgfortran/generated/minloc1_8_i16.c +++ b/libgfortran/generated/minloc1_8_i16.c @@ -350,4 +350,58 @@ mminloc1_8_i16 (gfc_array_i8 * const restrict retarray, } } + +extern void sminloc1_8_i16 (gfc_array_i8 * const restrict, + gfc_array_i16 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminloc1_8_i16); + +void +sminloc1_8_i16 (gfc_array_i8 * const restrict retarray, + gfc_array_i16 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_8 *dest; + + if (*mask) + { + minloc1_8_i16 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minloc1_8_i4.c b/libgfortran/generated/minloc1_8_i4.c index 917c0b274ba..ae71c33ff50 100644 --- a/libgfortran/generated/minloc1_8_i4.c +++ b/libgfortran/generated/minloc1_8_i4.c @@ -350,4 +350,58 @@ mminloc1_8_i4 (gfc_array_i8 * const restrict retarray, } } + +extern void sminloc1_8_i4 (gfc_array_i8 * const restrict, + gfc_array_i4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminloc1_8_i4); + +void +sminloc1_8_i4 (gfc_array_i8 * const restrict retarray, + gfc_array_i4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_8 *dest; + + if (*mask) + { + minloc1_8_i4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minloc1_8_i8.c b/libgfortran/generated/minloc1_8_i8.c index c9a15276176..31cc82213a0 100644 --- a/libgfortran/generated/minloc1_8_i8.c +++ b/libgfortran/generated/minloc1_8_i8.c @@ -350,4 +350,58 @@ mminloc1_8_i8 (gfc_array_i8 * const restrict retarray, } } + +extern void sminloc1_8_i8 (gfc_array_i8 * const restrict, + gfc_array_i8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminloc1_8_i8); + +void +sminloc1_8_i8 (gfc_array_i8 * const restrict retarray, + gfc_array_i8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_8 *dest; + + if (*mask) + { + minloc1_8_i8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minloc1_8_r10.c b/libgfortran/generated/minloc1_8_r10.c index c36838c10d8..3dd3b1eca1c 100644 --- a/libgfortran/generated/minloc1_8_r10.c +++ b/libgfortran/generated/minloc1_8_r10.c @@ -350,4 +350,58 @@ mminloc1_8_r10 (gfc_array_i8 * const restrict retarray, } } + +extern void sminloc1_8_r10 (gfc_array_i8 * const restrict, + gfc_array_r10 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminloc1_8_r10); + +void +sminloc1_8_r10 (gfc_array_i8 * const restrict retarray, + gfc_array_r10 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_8 *dest; + + if (*mask) + { + minloc1_8_r10 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minloc1_8_r16.c b/libgfortran/generated/minloc1_8_r16.c index 93352946319..9de92d07d3e 100644 --- a/libgfortran/generated/minloc1_8_r16.c +++ b/libgfortran/generated/minloc1_8_r16.c @@ -350,4 +350,58 @@ mminloc1_8_r16 (gfc_array_i8 * const restrict retarray, } } + +extern void sminloc1_8_r16 (gfc_array_i8 * const restrict, + gfc_array_r16 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminloc1_8_r16); + +void +sminloc1_8_r16 (gfc_array_i8 * const restrict retarray, + gfc_array_r16 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_8 *dest; + + if (*mask) + { + minloc1_8_r16 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minloc1_8_r4.c b/libgfortran/generated/minloc1_8_r4.c index 69ebc29e0d0..a47ef259afa 100644 --- a/libgfortran/generated/minloc1_8_r4.c +++ b/libgfortran/generated/minloc1_8_r4.c @@ -350,4 +350,58 @@ mminloc1_8_r4 (gfc_array_i8 * const restrict retarray, } } + +extern void sminloc1_8_r4 (gfc_array_i8 * const restrict, + gfc_array_r4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminloc1_8_r4); + +void +sminloc1_8_r4 (gfc_array_i8 * const restrict retarray, + gfc_array_r4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_8 *dest; + + if (*mask) + { + minloc1_8_r4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minloc1_8_r8.c b/libgfortran/generated/minloc1_8_r8.c index 7d662d5016b..2637fe6351f 100644 --- a/libgfortran/generated/minloc1_8_r8.c +++ b/libgfortran/generated/minloc1_8_r8.c @@ -350,4 +350,58 @@ mminloc1_8_r8 (gfc_array_i8 * const restrict retarray, } } + +extern void sminloc1_8_r8 (gfc_array_i8 * const restrict, + gfc_array_r8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminloc1_8_r8); + +void +sminloc1_8_r8 (gfc_array_i8 * const restrict retarray, + gfc_array_r8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_8 *dest; + + if (*mask) + { + minloc1_8_r8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/minval_i16.c b/libgfortran/generated/minval_i16.c index 5b34eafaaf7..f1c2e3852e6 100644 --- a/libgfortran/generated/minval_i16.c +++ b/libgfortran/generated/minval_i16.c @@ -339,4 +339,58 @@ mminval_i16 (gfc_array_i16 * const restrict retarray, } } + +extern void sminval_i16 (gfc_array_i16 * const restrict, + gfc_array_i16 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminval_i16); + +void +sminval_i16 (gfc_array_i16 * const restrict retarray, + gfc_array_i16 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_16 *dest; + + if (*mask) + { + minval_i16 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = GFC_INTEGER_16_HUGE ; +} + #endif diff --git a/libgfortran/generated/minval_i4.c b/libgfortran/generated/minval_i4.c index bcdb55f3120..bb79787119d 100644 --- a/libgfortran/generated/minval_i4.c +++ b/libgfortran/generated/minval_i4.c @@ -339,4 +339,58 @@ mminval_i4 (gfc_array_i4 * const restrict retarray, } } + +extern void sminval_i4 (gfc_array_i4 * const restrict, + gfc_array_i4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminval_i4); + +void +sminval_i4 (gfc_array_i4 * const restrict retarray, + gfc_array_i4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_4 *dest; + + if (*mask) + { + minval_i4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = GFC_INTEGER_4_HUGE ; +} + #endif diff --git a/libgfortran/generated/minval_i8.c b/libgfortran/generated/minval_i8.c index eb37d4824b9..deb53391221 100644 --- a/libgfortran/generated/minval_i8.c +++ b/libgfortran/generated/minval_i8.c @@ -339,4 +339,58 @@ mminval_i8 (gfc_array_i8 * const restrict retarray, } } + +extern void sminval_i8 (gfc_array_i8 * const restrict, + gfc_array_i8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminval_i8); + +void +sminval_i8 (gfc_array_i8 * const restrict retarray, + gfc_array_i8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_8 *dest; + + if (*mask) + { + minval_i8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = GFC_INTEGER_8_HUGE ; +} + #endif diff --git a/libgfortran/generated/minval_r10.c b/libgfortran/generated/minval_r10.c index a52e5a1b35a..be02a66dab9 100644 --- a/libgfortran/generated/minval_r10.c +++ b/libgfortran/generated/minval_r10.c @@ -339,4 +339,58 @@ mminval_r10 (gfc_array_r10 * const restrict retarray, } } + +extern void sminval_r10 (gfc_array_r10 * const restrict, + gfc_array_r10 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminval_r10); + +void +sminval_r10 (gfc_array_r10 * const restrict retarray, + gfc_array_r10 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_REAL_10 *dest; + + if (*mask) + { + minval_r10 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_REAL_10) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = GFC_REAL_10_HUGE ; +} + #endif diff --git a/libgfortran/generated/minval_r16.c b/libgfortran/generated/minval_r16.c index 61ecd81746f..cacd524fff0 100644 --- a/libgfortran/generated/minval_r16.c +++ b/libgfortran/generated/minval_r16.c @@ -339,4 +339,58 @@ mminval_r16 (gfc_array_r16 * const restrict retarray, } } + +extern void sminval_r16 (gfc_array_r16 * const restrict, + gfc_array_r16 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminval_r16); + +void +sminval_r16 (gfc_array_r16 * const restrict retarray, + gfc_array_r16 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_REAL_16 *dest; + + if (*mask) + { + minval_r16 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_REAL_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = GFC_REAL_16_HUGE ; +} + #endif diff --git a/libgfortran/generated/minval_r4.c b/libgfortran/generated/minval_r4.c index 4eafed2eda1..0f383d97a4c 100644 --- a/libgfortran/generated/minval_r4.c +++ b/libgfortran/generated/minval_r4.c @@ -339,4 +339,58 @@ mminval_r4 (gfc_array_r4 * const restrict retarray, } } + +extern void sminval_r4 (gfc_array_r4 * const restrict, + gfc_array_r4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminval_r4); + +void +sminval_r4 (gfc_array_r4 * const restrict retarray, + gfc_array_r4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_REAL_4 *dest; + + if (*mask) + { + minval_r4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_REAL_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = GFC_REAL_4_HUGE ; +} + #endif diff --git a/libgfortran/generated/minval_r8.c b/libgfortran/generated/minval_r8.c index 6b83f9b05d3..31ba6193565 100644 --- a/libgfortran/generated/minval_r8.c +++ b/libgfortran/generated/minval_r8.c @@ -339,4 +339,58 @@ mminval_r8 (gfc_array_r8 * const restrict retarray, } } + +extern void sminval_r8 (gfc_array_r8 * const restrict, + gfc_array_r8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sminval_r8); + +void +sminval_r8 (gfc_array_r8 * const restrict retarray, + gfc_array_r8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_REAL_8 *dest; + + if (*mask) + { + minval_r8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_REAL_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = GFC_REAL_8_HUGE ; +} + #endif diff --git a/libgfortran/generated/product_c10.c b/libgfortran/generated/product_c10.c index bc1e9f0aef2..59552f276d5 100644 --- a/libgfortran/generated/product_c10.c +++ b/libgfortran/generated/product_c10.c @@ -337,4 +337,58 @@ mproduct_c10 (gfc_array_c10 * const restrict retarray, } } + +extern void sproduct_c10 (gfc_array_c10 * const restrict, + gfc_array_c10 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sproduct_c10); + +void +sproduct_c10 (gfc_array_c10 * const restrict retarray, + gfc_array_c10 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_COMPLEX_10 *dest; + + if (*mask) + { + product_c10 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_COMPLEX_10) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 1 ; +} + #endif diff --git a/libgfortran/generated/product_c16.c b/libgfortran/generated/product_c16.c index c5ac52fb834..97b6ac1a219 100644 --- a/libgfortran/generated/product_c16.c +++ b/libgfortran/generated/product_c16.c @@ -337,4 +337,58 @@ mproduct_c16 (gfc_array_c16 * const restrict retarray, } } + +extern void sproduct_c16 (gfc_array_c16 * const restrict, + gfc_array_c16 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sproduct_c16); + +void +sproduct_c16 (gfc_array_c16 * const restrict retarray, + gfc_array_c16 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_COMPLEX_16 *dest; + + if (*mask) + { + product_c16 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_COMPLEX_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 1 ; +} + #endif diff --git a/libgfortran/generated/product_c4.c b/libgfortran/generated/product_c4.c index c8e932bdde2..14dc21eaabe 100644 --- a/libgfortran/generated/product_c4.c +++ b/libgfortran/generated/product_c4.c @@ -337,4 +337,58 @@ mproduct_c4 (gfc_array_c4 * const restrict retarray, } } + +extern void sproduct_c4 (gfc_array_c4 * const restrict, + gfc_array_c4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sproduct_c4); + +void +sproduct_c4 (gfc_array_c4 * const restrict retarray, + gfc_array_c4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_COMPLEX_4 *dest; + + if (*mask) + { + product_c4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_COMPLEX_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 1 ; +} + #endif diff --git a/libgfortran/generated/product_c8.c b/libgfortran/generated/product_c8.c index 56485797edb..3313f2ab174 100644 --- a/libgfortran/generated/product_c8.c +++ b/libgfortran/generated/product_c8.c @@ -337,4 +337,58 @@ mproduct_c8 (gfc_array_c8 * const restrict retarray, } } + +extern void sproduct_c8 (gfc_array_c8 * const restrict, + gfc_array_c8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sproduct_c8); + +void +sproduct_c8 (gfc_array_c8 * const restrict retarray, + gfc_array_c8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_COMPLEX_8 *dest; + + if (*mask) + { + product_c8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_COMPLEX_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 1 ; +} + #endif diff --git a/libgfortran/generated/product_i16.c b/libgfortran/generated/product_i16.c index 2b2f314f5cc..7079dc43413 100644 --- a/libgfortran/generated/product_i16.c +++ b/libgfortran/generated/product_i16.c @@ -337,4 +337,58 @@ mproduct_i16 (gfc_array_i16 * const restrict retarray, } } + +extern void sproduct_i16 (gfc_array_i16 * const restrict, + gfc_array_i16 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sproduct_i16); + +void +sproduct_i16 (gfc_array_i16 * const restrict retarray, + gfc_array_i16 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_16 *dest; + + if (*mask) + { + product_i16 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 1 ; +} + #endif diff --git a/libgfortran/generated/product_i4.c b/libgfortran/generated/product_i4.c index 19a7858e414..da88e97556e 100644 --- a/libgfortran/generated/product_i4.c +++ b/libgfortran/generated/product_i4.c @@ -337,4 +337,58 @@ mproduct_i4 (gfc_array_i4 * const restrict retarray, } } + +extern void sproduct_i4 (gfc_array_i4 * const restrict, + gfc_array_i4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sproduct_i4); + +void +sproduct_i4 (gfc_array_i4 * const restrict retarray, + gfc_array_i4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_4 *dest; + + if (*mask) + { + product_i4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 1 ; +} + #endif diff --git a/libgfortran/generated/product_i8.c b/libgfortran/generated/product_i8.c index 22b513530de..c60e8f76572 100644 --- a/libgfortran/generated/product_i8.c +++ b/libgfortran/generated/product_i8.c @@ -337,4 +337,58 @@ mproduct_i8 (gfc_array_i8 * const restrict retarray, } } + +extern void sproduct_i8 (gfc_array_i8 * const restrict, + gfc_array_i8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sproduct_i8); + +void +sproduct_i8 (gfc_array_i8 * const restrict retarray, + gfc_array_i8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_8 *dest; + + if (*mask) + { + product_i8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 1 ; +} + #endif diff --git a/libgfortran/generated/product_r10.c b/libgfortran/generated/product_r10.c index 9777df66a29..710216fff83 100644 --- a/libgfortran/generated/product_r10.c +++ b/libgfortran/generated/product_r10.c @@ -337,4 +337,58 @@ mproduct_r10 (gfc_array_r10 * const restrict retarray, } } + +extern void sproduct_r10 (gfc_array_r10 * const restrict, + gfc_array_r10 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sproduct_r10); + +void +sproduct_r10 (gfc_array_r10 * const restrict retarray, + gfc_array_r10 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_REAL_10 *dest; + + if (*mask) + { + product_r10 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_REAL_10) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 1 ; +} + #endif diff --git a/libgfortran/generated/product_r16.c b/libgfortran/generated/product_r16.c index e9d84eab314..b6df4ddbb2a 100644 --- a/libgfortran/generated/product_r16.c +++ b/libgfortran/generated/product_r16.c @@ -337,4 +337,58 @@ mproduct_r16 (gfc_array_r16 * const restrict retarray, } } + +extern void sproduct_r16 (gfc_array_r16 * const restrict, + gfc_array_r16 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sproduct_r16); + +void +sproduct_r16 (gfc_array_r16 * const restrict retarray, + gfc_array_r16 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_REAL_16 *dest; + + if (*mask) + { + product_r16 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_REAL_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 1 ; +} + #endif diff --git a/libgfortran/generated/product_r4.c b/libgfortran/generated/product_r4.c index 8b421d36539..e31b3945279 100644 --- a/libgfortran/generated/product_r4.c +++ b/libgfortran/generated/product_r4.c @@ -337,4 +337,58 @@ mproduct_r4 (gfc_array_r4 * const restrict retarray, } } + +extern void sproduct_r4 (gfc_array_r4 * const restrict, + gfc_array_r4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sproduct_r4); + +void +sproduct_r4 (gfc_array_r4 * const restrict retarray, + gfc_array_r4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_REAL_4 *dest; + + if (*mask) + { + product_r4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_REAL_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 1 ; +} + #endif diff --git a/libgfortran/generated/product_r8.c b/libgfortran/generated/product_r8.c index 57094cf6f0a..a2e805c0d33 100644 --- a/libgfortran/generated/product_r8.c +++ b/libgfortran/generated/product_r8.c @@ -337,4 +337,58 @@ mproduct_r8 (gfc_array_r8 * const restrict retarray, } } + +extern void sproduct_r8 (gfc_array_r8 * const restrict, + gfc_array_r8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(sproduct_r8); + +void +sproduct_r8 (gfc_array_r8 * const restrict retarray, + gfc_array_r8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_REAL_8 *dest; + + if (*mask) + { + product_r8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_REAL_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 1 ; +} + #endif diff --git a/libgfortran/generated/reshape_r10.c b/libgfortran/generated/reshape_r10.c new file mode 100644 index 00000000000..faf8b22913e --- /dev/null +++ b/libgfortran/generated/reshape_r10.c @@ -0,0 +1,268 @@ +/* Implementation of the RESHAPE + Copyright 2002 Free Software Foundation, Inc. + Contributed by Paul Brook + +This file is part of the GNU Fortran 95 runtime library (libgfortran). + +Libgfortran 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. + +In addition to the permissions in the GNU General Public License, the +Free Software Foundation gives you unlimited permission to link the +compiled version of this file into combinations with other programs, +and to distribute those combinations without any restriction coming +from the use of this file. (The General Public License restrictions +do apply in other respects; for example, they cover modification of +the file, and distribution when not linked into a combine +executable.) + +Libgfortran 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 libgfortran; see the file COPYING. If not, +write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +#include "config.h" +#include +#include +#include "libgfortran.h" + +#if defined (HAVE_GFC_REAL_10) + +typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type; + +/* The shape parameter is ignored. We can currently deduce the shape from the + return array. */ + +extern void reshape_r10 (gfc_array_r10 * const restrict, + gfc_array_r10 * const restrict, + shape_type * const restrict, + gfc_array_r10 * const restrict, + shape_type * const restrict); +export_proto(reshape_r10); + +void +reshape_r10 (gfc_array_r10 * const restrict ret, + gfc_array_r10 * const restrict source, + shape_type * const restrict shape, + gfc_array_r10 * const restrict pad, + shape_type * const restrict order) +{ + /* r.* indicates the return array. */ + index_type rcount[GFC_MAX_DIMENSIONS]; + index_type rextent[GFC_MAX_DIMENSIONS]; + index_type rstride[GFC_MAX_DIMENSIONS]; + index_type rstride0; + index_type rdim; + index_type rsize; + index_type rs; + index_type rex; + GFC_REAL_10 *rptr; + /* s.* indicates the source array. */ + index_type scount[GFC_MAX_DIMENSIONS]; + index_type sextent[GFC_MAX_DIMENSIONS]; + index_type sstride[GFC_MAX_DIMENSIONS]; + index_type sstride0; + index_type sdim; + index_type ssize; + const GFC_REAL_10 *sptr; + /* p.* indicates the pad array. */ + index_type pcount[GFC_MAX_DIMENSIONS]; + index_type pextent[GFC_MAX_DIMENSIONS]; + index_type pstride[GFC_MAX_DIMENSIONS]; + index_type pdim; + index_type psize; + const GFC_REAL_10 *pptr; + + const GFC_REAL_10 *src; + int n; + int dim; + + if (source->dim[0].stride == 0) + source->dim[0].stride = 1; + if (shape->dim[0].stride == 0) + shape->dim[0].stride = 1; + if (pad && pad->dim[0].stride == 0) + pad->dim[0].stride = 1; + if (order && order->dim[0].stride == 0) + order->dim[0].stride = 1; + + if (ret->data == NULL) + { + rdim = shape->dim[0].ubound - shape->dim[0].lbound + 1; + rs = 1; + for (n=0; n < rdim; n++) + { + ret->dim[n].lbound = 0; + rex = shape->data[n * shape->dim[0].stride]; + ret->dim[n].ubound = rex - 1; + ret->dim[n].stride = rs; + rs *= rex; + } + ret->offset = 0; + ret->data = internal_malloc_size ( rs * sizeof (GFC_REAL_10)); + ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rdim; + } + else + { + rdim = GFC_DESCRIPTOR_RANK (ret); + if (ret->dim[0].stride == 0) + ret->dim[0].stride = 1; + } + + rsize = 1; + for (n = 0; n < rdim; n++) + { + if (order) + dim = order->data[n * order->dim[0].stride] - 1; + else + dim = n; + + rcount[n] = 0; + rstride[n] = ret->dim[dim].stride; + rextent[n] = ret->dim[dim].ubound + 1 - ret->dim[dim].lbound; + + if (rextent[n] != shape->data[dim * shape->dim[0].stride]) + runtime_error ("shape and target do not conform"); + + if (rsize == rstride[n]) + rsize *= rextent[n]; + else + rsize = 0; + if (rextent[n] <= 0) + return; + } + + sdim = GFC_DESCRIPTOR_RANK (source); + ssize = 1; + for (n = 0; n < sdim; n++) + { + scount[n] = 0; + sstride[n] = source->dim[n].stride; + sextent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound; + if (sextent[n] <= 0) + abort (); + + if (ssize == sstride[n]) + ssize *= sextent[n]; + else + ssize = 0; + } + + if (pad) + { + pdim = GFC_DESCRIPTOR_RANK (pad); + psize = 1; + for (n = 0; n < pdim; n++) + { + pcount[n] = 0; + pstride[n] = pad->dim[n].stride; + pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound; + if (pextent[n] <= 0) + abort (); + if (psize == pstride[n]) + psize *= pextent[n]; + else + psize = 0; + } + pptr = pad->data; + } + else + { + pdim = 0; + psize = 1; + pptr = NULL; + } + + if (rsize != 0 && ssize != 0 && psize != 0) + { + rsize *= sizeof (GFC_REAL_10); + ssize *= sizeof (GFC_REAL_10); + psize *= sizeof (GFC_REAL_10); + reshape_packed ((char *)ret->data, rsize, (char *)source->data, + ssize, pad ? (char *)pad->data : NULL, psize); + return; + } + rptr = ret->data; + src = sptr = source->data; + rstride0 = rstride[0]; + sstride0 = sstride[0]; + + while (rptr) + { + /* Select between the source and pad arrays. */ + *rptr = *src; + /* Advance to the next element. */ + rptr += rstride0; + src += sstride0; + rcount[0]++; + scount[0]++; + /* Advance to the next destination element. */ + n = 0; + while (rcount[n] == rextent[n]) + { + /* When we get to the end of a dimension, reset it and increment + the next dimension. */ + rcount[n] = 0; + /* We could precalculate these products, but this is a less + frequently used path so proabably not worth it. */ + rptr -= rstride[n] * rextent[n]; + n++; + if (n == rdim) + { + /* Break out of the loop. */ + rptr = NULL; + break; + } + else + { + rcount[n]++; + rptr += rstride[n]; + } + } + /* Advance to the next source element. */ + n = 0; + while (scount[n] == sextent[n]) + { + /* When we get to the end of a dimension, reset it and increment + the next dimension. */ + scount[n] = 0; + /* We could precalculate these products, but this is a less + frequently used path so proabably not worth it. */ + src -= sstride[n] * sextent[n]; + n++; + if (n == sdim) + { + if (sptr && pad) + { + /* Switch to the pad array. */ + sptr = NULL; + sdim = pdim; + for (dim = 0; dim < pdim; dim++) + { + scount[dim] = pcount[dim]; + sextent[dim] = pextent[dim]; + sstride[dim] = pstride[dim]; + sstride0 = sstride[0]; + } + } + /* We now start again from the beginning of the pad array. */ + src = pptr; + break; + } + else + { + scount[n]++; + src += sstride[n]; + } + } + } +} + +#endif diff --git a/libgfortran/generated/sum_c10.c b/libgfortran/generated/sum_c10.c index 393f04ece4c..344fd3ff386 100644 --- a/libgfortran/generated/sum_c10.c +++ b/libgfortran/generated/sum_c10.c @@ -337,4 +337,58 @@ msum_c10 (gfc_array_c10 * const restrict retarray, } } + +extern void ssum_c10 (gfc_array_c10 * const restrict, + gfc_array_c10 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(ssum_c10); + +void +ssum_c10 (gfc_array_c10 * const restrict retarray, + gfc_array_c10 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_COMPLEX_10 *dest; + + if (*mask) + { + sum_c10 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_COMPLEX_10) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/sum_c16.c b/libgfortran/generated/sum_c16.c index 9e5c8edb138..8cdf9766c53 100644 --- a/libgfortran/generated/sum_c16.c +++ b/libgfortran/generated/sum_c16.c @@ -337,4 +337,58 @@ msum_c16 (gfc_array_c16 * const restrict retarray, } } + +extern void ssum_c16 (gfc_array_c16 * const restrict, + gfc_array_c16 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(ssum_c16); + +void +ssum_c16 (gfc_array_c16 * const restrict retarray, + gfc_array_c16 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_COMPLEX_16 *dest; + + if (*mask) + { + sum_c16 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_COMPLEX_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/sum_c4.c b/libgfortran/generated/sum_c4.c index 72d28f8afa0..1e113ad85ce 100644 --- a/libgfortran/generated/sum_c4.c +++ b/libgfortran/generated/sum_c4.c @@ -337,4 +337,58 @@ msum_c4 (gfc_array_c4 * const restrict retarray, } } + +extern void ssum_c4 (gfc_array_c4 * const restrict, + gfc_array_c4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(ssum_c4); + +void +ssum_c4 (gfc_array_c4 * const restrict retarray, + gfc_array_c4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_COMPLEX_4 *dest; + + if (*mask) + { + sum_c4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_COMPLEX_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/sum_c8.c b/libgfortran/generated/sum_c8.c index 485b46d75fb..eec1b783826 100644 --- a/libgfortran/generated/sum_c8.c +++ b/libgfortran/generated/sum_c8.c @@ -337,4 +337,58 @@ msum_c8 (gfc_array_c8 * const restrict retarray, } } + +extern void ssum_c8 (gfc_array_c8 * const restrict, + gfc_array_c8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(ssum_c8); + +void +ssum_c8 (gfc_array_c8 * const restrict retarray, + gfc_array_c8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_COMPLEX_8 *dest; + + if (*mask) + { + sum_c8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_COMPLEX_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/sum_i16.c b/libgfortran/generated/sum_i16.c index 00446895d0a..2a378361ff3 100644 --- a/libgfortran/generated/sum_i16.c +++ b/libgfortran/generated/sum_i16.c @@ -337,4 +337,58 @@ msum_i16 (gfc_array_i16 * const restrict retarray, } } + +extern void ssum_i16 (gfc_array_i16 * const restrict, + gfc_array_i16 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(ssum_i16); + +void +ssum_i16 (gfc_array_i16 * const restrict retarray, + gfc_array_i16 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_16 *dest; + + if (*mask) + { + sum_i16 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/sum_i4.c b/libgfortran/generated/sum_i4.c index f00c4ea3f15..4062a3bbe15 100644 --- a/libgfortran/generated/sum_i4.c +++ b/libgfortran/generated/sum_i4.c @@ -337,4 +337,58 @@ msum_i4 (gfc_array_i4 * const restrict retarray, } } + +extern void ssum_i4 (gfc_array_i4 * const restrict, + gfc_array_i4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(ssum_i4); + +void +ssum_i4 (gfc_array_i4 * const restrict retarray, + gfc_array_i4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_4 *dest; + + if (*mask) + { + sum_i4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/sum_i8.c b/libgfortran/generated/sum_i8.c index 78505da9865..ce02c063488 100644 --- a/libgfortran/generated/sum_i8.c +++ b/libgfortran/generated/sum_i8.c @@ -337,4 +337,58 @@ msum_i8 (gfc_array_i8 * const restrict retarray, } } + +extern void ssum_i8 (gfc_array_i8 * const restrict, + gfc_array_i8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(ssum_i8); + +void +ssum_i8 (gfc_array_i8 * const restrict retarray, + gfc_array_i8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_INTEGER_8 *dest; + + if (*mask) + { + sum_i8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/sum_r10.c b/libgfortran/generated/sum_r10.c index 49071021f0d..07f6ae397fc 100644 --- a/libgfortran/generated/sum_r10.c +++ b/libgfortran/generated/sum_r10.c @@ -337,4 +337,58 @@ msum_r10 (gfc_array_r10 * const restrict retarray, } } + +extern void ssum_r10 (gfc_array_r10 * const restrict, + gfc_array_r10 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(ssum_r10); + +void +ssum_r10 (gfc_array_r10 * const restrict retarray, + gfc_array_r10 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_REAL_10 *dest; + + if (*mask) + { + sum_r10 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_REAL_10) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/sum_r16.c b/libgfortran/generated/sum_r16.c index eddd45b8646..975bc258536 100644 --- a/libgfortran/generated/sum_r16.c +++ b/libgfortran/generated/sum_r16.c @@ -337,4 +337,58 @@ msum_r16 (gfc_array_r16 * const restrict retarray, } } + +extern void ssum_r16 (gfc_array_r16 * const restrict, + gfc_array_r16 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(ssum_r16); + +void +ssum_r16 (gfc_array_r16 * const restrict retarray, + gfc_array_r16 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_REAL_16 *dest; + + if (*mask) + { + sum_r16 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_REAL_16) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/sum_r4.c b/libgfortran/generated/sum_r4.c index 97bf717ba5a..db905ae4c13 100644 --- a/libgfortran/generated/sum_r4.c +++ b/libgfortran/generated/sum_r4.c @@ -337,4 +337,58 @@ msum_r4 (gfc_array_r4 * const restrict retarray, } } + +extern void ssum_r4 (gfc_array_r4 * const restrict, + gfc_array_r4 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(ssum_r4); + +void +ssum_r4 (gfc_array_r4 * const restrict retarray, + gfc_array_r4 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_REAL_4 *dest; + + if (*mask) + { + sum_r4 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_REAL_4) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/sum_r8.c b/libgfortran/generated/sum_r8.c index 0f3b49c278b..ed2440be39a 100644 --- a/libgfortran/generated/sum_r8.c +++ b/libgfortran/generated/sum_r8.c @@ -337,4 +337,58 @@ msum_r8 (gfc_array_r8 * const restrict retarray, } } + +extern void ssum_r8 (gfc_array_r8 * const restrict, + gfc_array_r8 * const restrict, const index_type * const restrict, + GFC_LOGICAL_4 *); +export_proto(ssum_r8); + +void +ssum_r8 (gfc_array_r8 * const restrict retarray, + gfc_array_r8 * const restrict array, + const index_type * const restrict pdim, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type n; + index_type dstride; + GFC_REAL_8 *dest; + + if (*mask) + { + sum_r8 (retarray, array, pdim); + return; + } + rank = GFC_DESCRIPTOR_RANK (array); + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (GFC_REAL_8) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = 0 ; +} + #endif diff --git a/libgfortran/generated/transpose_r10.c b/libgfortran/generated/transpose_r10.c new file mode 100644 index 00000000000..9a588b84123 --- /dev/null +++ b/libgfortran/generated/transpose_r10.c @@ -0,0 +1,104 @@ +/* Implementation of the TRANSPOSE intrinsic + Copyright 2003, 2005 Free Software Foundation, Inc. + Contributed by Tobias Schlüter + +This file is part of the GNU Fortran 95 runtime library (libgfortran). + +Libgfortran 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. + +In addition to the permissions in the GNU General Public License, the +Free Software Foundation gives you unlimited permission to link the +compiled version of this file into combinations with other programs, +and to distribute those combinations without any restriction coming +from the use of this file. (The General Public License restrictions +do apply in other respects; for example, they cover modification of +the file, and distribution when not linked into a combine +executable.) + +Libgfortran 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 libgfortran; see the file COPYING. If not, +write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +#include "config.h" +#include +#include "libgfortran.h" + +#if defined (HAVE_GFC_REAL_10) + +extern void transpose_r10 (gfc_array_r10 * const restrict ret, + gfc_array_r10 * const restrict source); +export_proto(transpose_r10); + +void +transpose_r10 (gfc_array_r10 * const restrict ret, + gfc_array_r10 * const restrict source) +{ + /* r.* indicates the return array. */ + index_type rxstride, rystride; + GFC_REAL_10 *rptr; + /* s.* indicates the source array. */ + index_type sxstride, systride; + const GFC_REAL_10 *sptr; + + index_type xcount, ycount; + index_type x, y; + + assert (GFC_DESCRIPTOR_RANK (source) == 2); + + if (ret->data == NULL) + { + assert (GFC_DESCRIPTOR_RANK (ret) == 2); + assert (ret->dtype == source->dtype); + + ret->dim[0].lbound = 0; + ret->dim[0].ubound = source->dim[1].ubound - source->dim[1].lbound; + ret->dim[0].stride = 1; + + ret->dim[1].lbound = 0; + ret->dim[1].ubound = source->dim[0].ubound - source->dim[0].lbound; + ret->dim[1].stride = ret->dim[0].ubound+1; + + ret->data = internal_malloc_size (sizeof (GFC_REAL_10) * size0 ((array_t *) ret)); + ret->offset = 0; + } + + if (ret->dim[0].stride == 0) + ret->dim[0].stride = 1; + if (source->dim[0].stride == 0) + source->dim[0].stride = 1; + + sxstride = source->dim[0].stride; + systride = source->dim[1].stride; + xcount = source->dim[0].ubound + 1 - source->dim[0].lbound; + ycount = source->dim[1].ubound + 1 - source->dim[1].lbound; + + rxstride = ret->dim[0].stride; + rystride = ret->dim[1].stride; + + rptr = ret->data; + sptr = source->data; + + for (y=0; y < ycount; y++) + { + for (x=0; x < xcount; x++) + { + *rptr = *sptr; + + sptr += sxstride; + rptr += rystride; + } + sptr += systride - (sxstride * xcount); + rptr += rxstride - (rystride * xcount); + } +} + +#endif diff --git a/libgfortran/io/file_pos.c b/libgfortran/io/file_pos.c index 5d247d9c6b3..e9697bb7ede 100644 --- a/libgfortran/io/file_pos.c +++ b/libgfortran/io/file_pos.c @@ -104,21 +104,71 @@ static void unformatted_backspace (st_parameter_filepos *fpp, gfc_unit *u) { gfc_offset m, new; - int length; + GFC_INTEGER_4 m4; + GFC_INTEGER_8 m8; + int length, length_read; char *p; - length = sizeof (gfc_offset); + if (compile_options.record_marker == 0) + length = sizeof (gfc_offset); + else + length = compile_options.record_marker; + + length_read = length; - p = salloc_r_at (u->s, &length, + p = salloc_r_at (u->s, &length_read, file_position (u->s) - length); - if (p == NULL) + if (p == NULL || length_read != length) goto io_error; /* Only CONVERT_NATIVE and CONVERT_SWAP are valid here. */ if (u->flags.convert == CONVERT_NATIVE) - memcpy (&m, p, sizeof (gfc_offset)); + { + switch (compile_options.record_marker) + { + case 0: + memcpy (&m, p, sizeof(gfc_offset)); + break; + + case sizeof(GFC_INTEGER_4): + memcpy (&m4, p, sizeof (m4)); + m = m4; + break; + + case sizeof(GFC_INTEGER_8): + memcpy (&m8, p, sizeof (m8)); + m = m8; + break; + + default: + runtime_error ("Illegal value for record marker"); + break; + } + } else - reverse_memcpy (&m, p, sizeof (gfc_offset)); + { + switch (compile_options.record_marker) + { + case 0: + reverse_memcpy (&m, p, sizeof(gfc_offset)); + break; + + case sizeof(GFC_INTEGER_4): + reverse_memcpy (&m4, p, sizeof (m4)); + m = m4; + break; + + case sizeof(GFC_INTEGER_8): + reverse_memcpy (&m8, p, sizeof (m8)); + m = m8; + break; + + default: + runtime_error ("Illegal value for record marker"); + break; + } + + } if ((new = file_position (u->s) - m - 2*length) < 0) new = 0; @@ -262,6 +312,7 @@ st_rewind (st_parameter_filepos *fpp) u->endfile = NO_ENDFILE; u->current_record = 0; u->bytes_left = 0; + u->read_bad = 0; test_endfile (u); } /* Update position for INQUIRE. */ diff --git a/libgfortran/io/io.h b/libgfortran/io/io.h index e36debbbaee..b14576c5c0f 100644 --- a/libgfortran/io/io.h +++ b/libgfortran/io/io.h @@ -412,7 +412,7 @@ typedef struct st_parameter_dt formatted field width. */ unsigned sf_read_comma : 1; /* A namelist specific flag used to enable reading input from - line_buffer for logical reads. */ + line_buffer for logical reads. */ unsigned line_buffer_enabled : 1; /* 18 unused bits. */ @@ -434,8 +434,9 @@ typedef struct st_parameter_dt enough to hold a complex value (two reals) of the largest kind. */ char value[32]; + gfc_offset size_used; } p; - char pad[16 * sizeof (char *) + 34 * sizeof (int)]; + char pad[16 * sizeof (char *) + 34 * sizeof (int) - sizeof (gfc_offset)]; } u; } st_parameter_dt; @@ -743,6 +744,9 @@ internal_proto(type_name); extern void *read_block (st_parameter_dt *, int *); internal_proto(read_block); +extern char *read_sf (st_parameter_dt *, int *, int); +internal_proto(read_sf); + extern void *write_block (st_parameter_dt *, int); internal_proto(write_block); diff --git a/libgfortran/io/open.c b/libgfortran/io/open.c index 528188bce9f..24713b76f49 100644 --- a/libgfortran/io/open.c +++ b/libgfortran/io/open.c @@ -399,7 +399,26 @@ new_unit (st_parameter_open *opp, gfc_unit *u, unit_flags * flags) if ((opp->common.flags & IOPARM_OPEN_HAS_RECL_IN)) u->recl = opp->recl_in; else - u->recl = max_offset; + { + switch (compile_options.record_marker) + { + case 0: + u->recl = max_offset; + break; + + case sizeof (GFC_INTEGER_4): + u->recl = GFC_INTEGER_4_HUGE; + break; + + case sizeof (GFC_INTEGER_8): + u->recl = max_offset; + break; + + default: + runtime_error ("Illegal value for record marker"); + break; + } + } /* If the file is direct access, calculate the maximum record number via a division now instead of letting the multiplication overflow diff --git a/libgfortran/io/read.c b/libgfortran/io/read.c index e1e61ee30da..9db5d583078 100644 --- a/libgfortran/io/read.c +++ b/libgfortran/io/read.c @@ -847,7 +847,7 @@ read_x (st_parameter_dt *dtp, int n) dtp->u.p.sf_read_comma = 0; if (n > 0) - read_block (dtp, &n); + read_sf (dtp, &n, 1); dtp->u.p.sf_read_comma = 1; } diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c index 8c43efc26f6..6097c35d8a4 100644 --- a/libgfortran/io/transfer.c +++ b/libgfortran/io/transfer.c @@ -132,8 +132,8 @@ current_mode (st_parameter_dt *dtp) For larger allocations, we are forced to allocate memory on the heap. Hopefully this won't happen very often. */ -static char * -read_sf (st_parameter_dt *dtp, int *length) +char * +read_sf (st_parameter_dt *dtp, int *length, int no_error) { char *base, *p, *q; int n, readlen, crlf; @@ -171,6 +171,8 @@ read_sf (st_parameter_dt *dtp, int *length) EOR below. */ if (readlen < 1 && n == 0) { + if (no_error) + break; generate_error (&dtp->common, ERROR_END, NULL); return NULL; } @@ -202,6 +204,8 @@ read_sf (st_parameter_dt *dtp, int *length) so we can just continue with a short read. */ if (dtp->u.p.current_unit->flags.pad == PAD_NO) { + if (no_error) + break; generate_error (&dtp->common, ERROR_EOR, NULL); return NULL; } @@ -229,7 +233,7 @@ read_sf (st_parameter_dt *dtp, int *length) dtp->u.p.current_unit->bytes_left -= *length; if ((dtp->common.flags & IOPARM_DT_HAS_SIZE) != 0) - *dtp->size += *length; + dtp->u.p.size_used += (gfc_offset) *length; return base; } @@ -265,7 +269,7 @@ read_block (st_parameter_dt *dtp, int *length) if (dtp->u.p.current_unit->flags.form == FORM_FORMATTED && dtp->u.p.current_unit->flags.access == ACCESS_SEQUENTIAL) - return read_sf (dtp, length); /* Special case. */ + return read_sf (dtp, length, 0); /* Special case. */ dtp->u.p.current_unit->bytes_left -= *length; @@ -273,7 +277,7 @@ read_block (st_parameter_dt *dtp, int *length) source = salloc_r (dtp->u.p.current_unit->s, &nread); if ((dtp->common.flags & IOPARM_DT_HAS_SIZE) != 0) - *dtp->size += nread; + dtp->u.p.size_used += (gfc_offset) nread; if (nread != *length) { /* Short read, this shouldn't happen. */ @@ -315,7 +319,7 @@ read_block_direct (st_parameter_dt *dtp, void *buf, size_t *nbytes) dtp->u.p.current_unit->flags.access == ACCESS_SEQUENTIAL) { length = (int *) nbytes; - data = read_sf (dtp, length); /* Special case. */ + data = read_sf (dtp, length, 0); /* Special case. */ memcpy (buf, data, (size_t) *length); return; } @@ -330,7 +334,7 @@ read_block_direct (st_parameter_dt *dtp, void *buf, size_t *nbytes) } if ((dtp->common.flags & IOPARM_DT_HAS_SIZE) != 0) - *dtp->size += (GFC_INTEGER_4) nread; + dtp->u.p.size_used += (gfc_offset) nread; if (nread != *nbytes) { /* Short read, e.g. if we hit EOF. */ @@ -371,7 +375,7 @@ write_block (st_parameter_dt *dtp, int length) } if ((dtp->common.flags & IOPARM_DT_HAS_SIZE) != 0) - *dtp->size += length; + dtp->u.p.size_used += (gfc_offset) length; return dest; } @@ -384,7 +388,10 @@ write_buf (st_parameter_dt *dtp, void *buf, size_t nbytes) { if (dtp->u.p.current_unit->bytes_left < nbytes) { - generate_error (&dtp->common, ERROR_EOR, NULL); + if (dtp->u.p.current_unit->flags.access == ACCESS_DIRECT) + generate_error (&dtp->common, ERROR_DIRECT_EOR, NULL); + else + generate_error (&dtp->common, ERROR_EOR, NULL); return FAILURE; } @@ -397,10 +404,7 @@ write_buf (st_parameter_dt *dtp, void *buf, size_t nbytes) } if ((dtp->common.flags & IOPARM_DT_HAS_SIZE) != 0) - { - *dtp->size += (GFC_INTEGER_4) nbytes; - return FAILURE; - } + dtp->u.p.size_used += (gfc_offset) nbytes; return SUCCESS; } @@ -1227,12 +1231,21 @@ us_read (st_parameter_dt *dtp) { char *p; int n; + int nr; + GFC_INTEGER_4 i4; + GFC_INTEGER_8 i8; gfc_offset i; if (dtp->u.p.current_unit->endfile == AT_ENDFILE) return; - n = sizeof (gfc_offset); + if (compile_options.record_marker == 0) + n = sizeof (gfc_offset); + else + n = compile_options.record_marker; + + nr = n; + p = salloc_r (dtp->u.p.current_unit->s, &n); if (n == 0) @@ -1241,7 +1254,7 @@ us_read (st_parameter_dt *dtp) return; /* end of file */ } - if (p == NULL || n != sizeof (gfc_offset)) + if (p == NULL || n != nr) { generate_error (&dtp->common, ERROR_BAD_US, NULL); return; @@ -1249,10 +1262,50 @@ us_read (st_parameter_dt *dtp) /* Only CONVERT_NATIVE and CONVERT_SWAP are valid here. */ if (dtp->u.p.current_unit->flags.convert == CONVERT_NATIVE) - memcpy (&i, p, sizeof (gfc_offset)); + { + switch (compile_options.record_marker) + { + case 0: + memcpy (&i, p, sizeof(gfc_offset)); + break; + + case sizeof(GFC_INTEGER_4): + memcpy (&i4, p, sizeof (i4)); + i = i4; + break; + + case sizeof(GFC_INTEGER_8): + memcpy (&i8, p, sizeof (i8)); + i = i8; + break; + + default: + runtime_error ("Illegal value for record marker"); + break; + } + } else - reverse_memcpy (&i, p, sizeof (gfc_offset)); - + switch (compile_options.record_marker) + { + case 0: + reverse_memcpy (&i, p, sizeof(gfc_offset)); + break; + + case sizeof(GFC_INTEGER_4): + reverse_memcpy (&i4, p, sizeof (i4)); + i = i4; + break; + + case sizeof(GFC_INTEGER_8): + reverse_memcpy (&i8, p, sizeof (i8)); + i = i8; + break; + + default: + runtime_error ("Illegal value for record marker"); + break; + } + dtp->u.p.current_unit->bytes_left = i; } @@ -1267,7 +1320,11 @@ us_write (st_parameter_dt *dtp) gfc_offset dummy; dummy = 0; - nbytes = sizeof (gfc_offset); + + if (compile_options.record_marker == 0) + nbytes = sizeof (gfc_offset); + else + nbytes = compile_options.record_marker ; if (swrite (dtp->u.p.current_unit->s, &dummy, &nbytes) != 0) generate_error (&dtp->common, ERROR_OS, NULL); @@ -1328,12 +1385,14 @@ data_transfer_init (st_parameter_dt *dtp, int read_flag) dtp->u.p.mode = read_flag ? READING : WRITING; if ((cf & IOPARM_DT_HAS_SIZE) != 0) - *dtp->size = 0; /* Initialize the count. */ + dtp->u.p.size_used = 0; /* Initialize the count. */ dtp->u.p.current_unit = get_unit (dtp, 1); if (dtp->u.p.current_unit->s == NULL) { /* Open the unit with some default flags. */ st_parameter_open opp; + unit_convert conv; + if (dtp->common.unit < 0) { close_unit (dtp->u.p.current_unit); @@ -1357,6 +1416,35 @@ data_transfer_init (st_parameter_dt *dtp, int read_flag) u_flags.blank = BLANK_UNSPECIFIED; u_flags.pad = PAD_UNSPECIFIED; u_flags.status = STATUS_UNKNOWN; + + conv = get_unformatted_convert (dtp->common.unit); + + if (conv == CONVERT_NONE) + conv = compile_options.convert; + + /* We use l8_to_l4_offset, which is 0 on little-endian machines + and 1 on big-endian machines. */ + switch (conv) + { + case CONVERT_NATIVE: + case CONVERT_SWAP: + break; + + case CONVERT_BIG: + conv = l8_to_l4_offset ? CONVERT_NATIVE : CONVERT_SWAP; + break; + + case CONVERT_LITTLE: + conv = l8_to_l4_offset ? CONVERT_SWAP : CONVERT_NATIVE; + break; + + default: + internal_error (&opp.common, "Illegal value for CONVERT"); + break; + } + + u_flags.convert = conv; + opp.common = dtp->common; opp.common.flags &= IOPARM_COMMON_MASK; dtp->u.p.current_unit = new_unit (&opp, dtp->u.p.current_unit, &u_flags); @@ -1670,7 +1758,9 @@ next_record_r (st_parameter_dt *dtp) case UNFORMATTED_SEQUENTIAL: /* Skip over tail */ - dtp->u.p.current_unit->bytes_left += sizeof (gfc_offset); + dtp->u.p.current_unit->bytes_left += + compile_options.record_marker == 0 ? + sizeof (gfc_offset) : compile_options.record_marker; /* Fall through... */ @@ -1770,20 +1860,72 @@ next_record_r (st_parameter_dt *dtp) /* Small utility function to write a record marker, taking care of - byte swapping. */ + byte swapping and of choosing the correct size. */ inline static int write_us_marker (st_parameter_dt *dtp, const gfc_offset buf) { - size_t len = sizeof (gfc_offset); + size_t len; + GFC_INTEGER_4 buf4; + GFC_INTEGER_8 buf8; + char p[sizeof (GFC_INTEGER_8)]; + + if (compile_options.record_marker == 0) + len = sizeof (gfc_offset); + else + len = compile_options.record_marker; + /* Only CONVERT_NATIVE and CONVERT_SWAP are valid here. */ if (dtp->u.p.current_unit->flags.convert == CONVERT_NATIVE) - return swrite (dtp->u.p.current_unit->s, &buf, &len); - else { - gfc_offset p; - reverse_memcpy (&p, &buf, sizeof (gfc_offset)); - return swrite (dtp->u.p.current_unit->s, &p, &len); - } + { + switch (compile_options.record_marker) + { + case 0: + return swrite (dtp->u.p.current_unit->s, &buf, &len); + break; + + case sizeof (GFC_INTEGER_4): + buf4 = buf; + return swrite (dtp->u.p.current_unit->s, &buf4, &len); + break; + + case sizeof (GFC_INTEGER_8): + buf8 = buf; + return swrite (dtp->u.p.current_unit->s, &buf8, &len); + break; + + default: + runtime_error ("Illegal value for record marker"); + break; + } + } + else + { + switch (compile_options.record_marker) + { + case 0: + reverse_memcpy (p, &buf, sizeof (gfc_offset)); + return swrite (dtp->u.p.current_unit->s, p, &len); + break; + + case sizeof (GFC_INTEGER_4): + buf4 = buf; + reverse_memcpy (p, &buf4, sizeof (GFC_INTEGER_4)); + return swrite (dtp->u.p.current_unit->s, p, &len); + break; + + case sizeof (GFC_INTEGER_8): + buf8 = buf; + reverse_memcpy (p, &buf8, sizeof (GFC_INTEGER_4)); + return swrite (dtp->u.p.current_unit->s, p, &len); + break; + + default: + runtime_error ("Illegal value for record marker"); + break; + } + } + } @@ -1795,6 +1937,7 @@ next_record_w (st_parameter_dt *dtp, int done) gfc_offset c, m, record, max_pos; int length; char *p; + size_t record_marker; /* Zero counters for X- and T-editing. */ max_pos = dtp->u.p.max_pos; @@ -1827,11 +1970,16 @@ next_record_w (st_parameter_dt *dtp, int done) if (write_us_marker (dtp, m) != 0) goto io_error; + if (compile_options.record_marker == 4) + record_marker = sizeof(GFC_INTEGER_4); + else + record_marker = sizeof (gfc_offset); + /* Seek to the head and overwrite the bogus length with the real length. */ - if (sseek (dtp->u.p.current_unit->s, c - m - sizeof (gfc_offset)) - == FAILURE) + if (sseek (dtp->u.p.current_unit->s, c - m - record_marker) + == FAILURE) goto io_error; if (write_us_marker (dtp, m) != 0) @@ -1839,7 +1987,7 @@ next_record_w (st_parameter_dt *dtp, int done) /* Seek past the end of the current record. */ - if (sseek (dtp->u.p.current_unit->s, c + sizeof (gfc_offset)) == FAILURE) + if (sseek (dtp->u.p.current_unit->s, c + record_marker) == FAILURE) goto io_error; break; @@ -1996,6 +2144,9 @@ finalize_transfer (st_parameter_dt *dtp) jmp_buf eof_jump; GFC_INTEGER_4 cf = dtp->common.flags; + if ((dtp->common.flags & IOPARM_DT_HAS_SIZE) != 0) + *dtp->size = (GFC_INTEGER_4) dtp->u.p.size_used; + if (dtp->u.p.eor_condition) { generate_error (&dtp->common, ERROR_EOR, NULL); diff --git a/libgfortran/io/write.c b/libgfortran/io/write.c index edd2933c3de..39192dde7cd 100644 --- a/libgfortran/io/write.c +++ b/libgfortran/io/write.c @@ -473,7 +473,7 @@ output_float (st_parameter_dt *dtp, const fnode *f, GFC_REAL_LARGEST value) ndigits - 1, value); /* Check the resulting string has punctuation in the correct places. */ - if (buffer[2] != '.' || buffer[ndigits + 2] != 'e') + if (d != 0 && (buffer[2] != '.' || buffer[ndigits + 2] != 'e')) internal_error (&dtp->common, "printf is broken"); /* Read the exponent back in. */ diff --git a/libgfortran/libgfortran.h b/libgfortran/libgfortran.h index 5efc8ae2e0e..8a57bfaf17c 100644 --- a/libgfortran/libgfortran.h +++ b/libgfortran/libgfortran.h @@ -338,6 +338,7 @@ typedef struct int allow_std; int pedantic; int convert; + size_t record_marker; } compile_options_t; @@ -380,6 +381,7 @@ typedef enum ERROR_INTERNAL, ERROR_INTERNAL_UNIT, ERROR_ALLOCATION, + ERROR_DIRECT_EOR, ERROR_LAST /* Not a real error, the last error # + 1. */ } error_codes; diff --git a/libgfortran/m4/iforeach.m4 b/libgfortran/m4/iforeach.m4 index cfe563952bb..7d20213e9aa 100644 --- a/libgfortran/m4/iforeach.m4 +++ b/libgfortran/m4/iforeach.m4 @@ -248,3 +248,56 @@ $1 START_MASKED_FOREACH_BLOCK $2 FINISH_MASKED_FOREACH_FUNCTION')dnl +define(SCALAR_FOREACH_FUNCTION, +` +extern void `s'name`'rtype_qual`_'atype_code (rtype * const restrict, + atype * const restrict, GFC_LOGICAL_4 *); +export_proto(`s'name`'rtype_qual`_'atype_code); + +void +`s'name`'rtype_qual`_'atype_code (rtype * const restrict retarray, + atype * const restrict array, + GFC_LOGICAL_4 * mask) +{ + index_type rank; + index_type dstride; + index_type n; + rtype_name *dest; + + if (*mask) + { + name`'rtype_qual`_'atype_code (retarray, array); + return; + } + + rank = GFC_DESCRIPTOR_RANK (array); + + if (rank <= 0) + runtime_error ("Rank of array needs to be > 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (rtype_name) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + for (n = 0; n 0"); + + if (retarray->data == NULL) + { + retarray->dim[0].lbound = 0; + retarray->dim[0].ubound = rank-1; + retarray->dim[0].stride = 1; + retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1; + retarray->offset = 0; + retarray->data = internal_malloc_size (sizeof (rtype_name) * rank); + } + else + { + if (GFC_DESCRIPTOR_RANK (retarray) != 1) + runtime_error ("rank of return array does not equal 1"); + + if (retarray->dim[0].ubound + 1 - retarray->dim[0].lbound != rank) + runtime_error ("dimension of return array incorrect"); + + if (retarray->dim[0].stride == 0) + retarray->dim[0].stride = 1; + } + + dstride = retarray->dim[0].stride; + dest = retarray->data; + + for (n = 0; n < rank; n++) + dest[n * dstride] = $1 ; +}')dnl define(ARRAY_FUNCTION, `START_ARRAY_FUNCTION $2 diff --git a/libgfortran/m4/iparm.m4 b/libgfortran/m4/iparm.m4 index 810f78c3428..950962113b0 100644 --- a/libgfortran/m4/iparm.m4 +++ b/libgfortran/m4/iparm.m4 @@ -30,4 +30,4 @@ define(rtype_qual,`_'rtype_kind)dnl define(atype_max, atype_name`_HUGE')dnl define(atype_min, `-'atype_max)dnl define(name, regexp(regexp(file, `[^/]*$', `\&'), `^\([^_]*\)_', `\1'))dnl -define(rtype_ccode,ifelse(rtype_letter,`c',rtype_code,rtype_kind))dnl +define(rtype_ccode,ifelse(rtype_letter,`i',rtype_kind,rtype_code))dnl diff --git a/libgfortran/m4/maxloc0.m4 b/libgfortran/m4/maxloc0.m4 index 9feaa4b99b8..a7e88f0b2ce 100644 --- a/libgfortran/m4/maxloc0.m4 +++ b/libgfortran/m4/maxloc0.m4 @@ -64,4 +64,5 @@ MASKED_FOREACH_FUNCTION( dest[n * dstride] = count[n] + 1; }') +SCALAR_FOREACH_FUNCTION(`0') #endif diff --git a/libgfortran/m4/maxloc1.m4 b/libgfortran/m4/maxloc1.m4 index 161368482f6..3a6ed5ad974 100644 --- a/libgfortran/m4/maxloc1.m4 +++ b/libgfortran/m4/maxloc1.m4 @@ -60,4 +60,6 @@ MASKED_ARRAY_FUNCTION(0, result = (rtype_name)n + 1; }') +SCALAR_ARRAY_FUNCTION(0) + #endif diff --git a/libgfortran/m4/maxval.m4 b/libgfortran/m4/maxval.m4 index 9bdf0d07cdd..07cbbdd6ac6 100644 --- a/libgfortran/m4/maxval.m4 +++ b/libgfortran/m4/maxval.m4 @@ -49,4 +49,6 @@ MASKED_ARRAY_FUNCTION(atype_min, ` if (*msrc && *src > result) result = *src;') +SCALAR_ARRAY_FUNCTION(atype_min) + #endif diff --git a/libgfortran/m4/minloc0.m4 b/libgfortran/m4/minloc0.m4 index 1c2aa18cf08..33bfe312a54 100644 --- a/libgfortran/m4/minloc0.m4 +++ b/libgfortran/m4/minloc0.m4 @@ -64,4 +64,5 @@ MASKED_FOREACH_FUNCTION( dest[n * dstride] = count[n] + 1; }') +SCALAR_FOREACH_FUNCTION(`0') #endif diff --git a/libgfortran/m4/minloc1.m4 b/libgfortran/m4/minloc1.m4 index 0c116eb63be..f923ca80410 100644 --- a/libgfortran/m4/minloc1.m4 +++ b/libgfortran/m4/minloc1.m4 @@ -60,4 +60,6 @@ MASKED_ARRAY_FUNCTION(0, result = (rtype_name)n + 1; }') +SCALAR_ARRAY_FUNCTION(0) + #endif diff --git a/libgfortran/m4/minval.m4 b/libgfortran/m4/minval.m4 index 9bd37f4d1fb..af02319c1dd 100644 --- a/libgfortran/m4/minval.m4 +++ b/libgfortran/m4/minval.m4 @@ -49,4 +49,6 @@ MASKED_ARRAY_FUNCTION(atype_max, ` if (*msrc && *src < result) result = *src;') +SCALAR_ARRAY_FUNCTION(atype_max) + #endif diff --git a/libgfortran/m4/product.m4 b/libgfortran/m4/product.m4 index df77372e8b0..47ee25b8b80 100644 --- a/libgfortran/m4/product.m4 +++ b/libgfortran/m4/product.m4 @@ -47,4 +47,6 @@ MASKED_ARRAY_FUNCTION(1, ` if (*msrc) result *= *src;') +SCALAR_ARRAY_FUNCTION(1) + #endif diff --git a/libgfortran/m4/sum.m4 b/libgfortran/m4/sum.m4 index 1d91c0d5100..a9406882cfa 100644 --- a/libgfortran/m4/sum.m4 +++ b/libgfortran/m4/sum.m4 @@ -47,4 +47,6 @@ MASKED_ARRAY_FUNCTION(0, ` if (*msrc) result += *src;') +SCALAR_ARRAY_FUNCTION(0) + #endif diff --git a/libgfortran/runtime/compile_options.c b/libgfortran/runtime/compile_options.c index ce5e52a34da..fb6ac509f13 100644 --- a/libgfortran/runtime/compile_options.c +++ b/libgfortran/runtime/compile_options.c @@ -74,3 +74,29 @@ set_convert (int conv) { compile_options.convert = conv; } + +extern void set_record_marker (int); +export_proto (set_record_marker); + + +void +set_record_marker (int val) +{ + + switch(val) + { + case 4: + if (sizeof (GFC_INTEGER_4) != sizeof (gfc_offset)) + compile_options.record_marker = sizeof (GFC_INTEGER_4); + break; + + case 8: + if (sizeof (GFC_INTEGER_8) != sizeof (gfc_offset)) + compile_options.record_marker = sizeof (GFC_INTEGER_8); + break; + + default: + runtime_error ("Invalid value for record marker"); + break; + } +} diff --git a/libgfortran/runtime/error.c b/libgfortran/runtime/error.c index e102449cec5..8ccb381a650 100644 --- a/libgfortran/runtime/error.c +++ b/libgfortran/runtime/error.c @@ -431,6 +431,10 @@ translate_error (int code) p = "Internal unit I/O error"; break; + case ERROR_DIRECT_EOR: + p = "Write exceeds length of DIRECT access record"; + break; + default: p = "Unknown error code"; break; diff --git a/libgfortran/runtime/memory.c b/libgfortran/runtime/memory.c index 34d70f2f17b..db55a552168 100644 --- a/libgfortran/runtime/memory.c +++ b/libgfortran/runtime/memory.c @@ -249,7 +249,12 @@ allocate_array (void **mem, GFC_INTEGER_4 size, GFC_INTEGER_4 * stat) return; } if (stat) - *stat = ERROR_ALLOCATION; + { + free (*mem); + allocate (mem, size, stat); + *stat = ERROR_ALLOCATION; + return; + } else runtime_error ("Attempting to allocate already allocated array."); @@ -272,10 +277,15 @@ allocate64_array (void **mem, GFC_INTEGER_8 size, GFC_INTEGER_4 * stat) return; } if (stat) - *stat = ERROR_ALLOCATION; + { + free (*mem); + allocate (mem, size, stat); + *stat = ERROR_ALLOCATION; + return; + } else runtime_error ("Attempting to allocate already allocated array."); - + return; } diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index f93bfa56371..33d1e78da2e 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,8 @@ +2006-03-21 Jakub Jelinek + + PR c++/26691 + * testsuite/libgomp.c++/pr26691.C: New test. + 2006-03-13 Jakub Jelinek * testsuite/libgomp.fortran/retval2.f90: New test. diff --git a/libgomp/testsuite/libgomp.c++/pr26691.C b/libgomp/testsuite/libgomp.c++/pr26691.C new file mode 100644 index 00000000000..776b31e24fb --- /dev/null +++ b/libgomp/testsuite/libgomp.c++/pr26691.C @@ -0,0 +1,20 @@ +// PR c++/26691 + +struct A +{ + int n; + A (int i = 3) : n (i) {} +}; + +int +main () +{ + A a; + int err = 0; +#pragma omp parallel private (a) reduction (+:err) + if (a.n != 3) + err++; + + return err; + } + diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 68f6f385923..c12f9ca6d31 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,20 @@ +2006-03-31 Mark Mitchell + + * pex-win32.c (): Include. + (fix_argv): Remove. + (argv_to_cmdline): New function. + (std_suffixes): New variable. + (no_suffixes): Likewise. + (find_executable): New function. + (win32_spawn): Likewise. + (spawn_script): Use win32_spawn instead of _spawnv[p]. + (pex_win32_exec_child): Replace MSVCRT calls with Win32 API calls. + (pex_win32_wait): Likewise. + +2006-03-24 Jim Blandy + + * pex-common.c (pex_run): Simplify output name handling. + 2006-03-12 Jim Blandy * pex-common.h (struct pex_obj): Doc fixes. diff --git a/libiberty/pex-common.c b/libiberty/pex-common.c index b2ca6e08ce2..db842aed243 100644 --- a/libiberty/pex-common.c +++ b/libiberty/pex-common.c @@ -211,17 +211,10 @@ pex_run (struct pex_obj *obj, int flags, const char *executable, outname_allocated = 0; } - if (!outname_allocated) - { - obj->next_input_name = outname; - obj->next_input_name_allocated = 0; - } - else - { - obj->next_input_name = outname; - outname_allocated = 0; - obj->next_input_name_allocated = 1; - } + /* Hand off ownership of outname to the next stage. */ + obj->next_input_name = outname; + obj->next_input_name_allocated = outname_allocated; + outname_allocated = 0; } else { diff --git a/libiberty/pex-win32.c b/libiberty/pex-win32.c index ed45e5b8bb8..3a75c5be004 100644 --- a/libiberty/pex-win32.c +++ b/libiberty/pex-win32.c @@ -41,6 +41,7 @@ Boston, MA 02110-1301, USA. */ #include #include #include +#include /* mingw32 headers may not define the following. */ @@ -72,115 +73,6 @@ backslashify (char *s) return; } -/* This is a kludge to get around the Microsoft C spawn functions' propensity - to remove the outermost set of double quotes from all arguments. */ - -static const char * const * -fix_argv (char * const *argvec) -{ - char **argv; - int i; - char *command0; - - /* See whether we need to change anything. */ - for (command0 = argvec[0]; *command0 != '\0'; command0++) - if (*command0 == '/') - break; - if (*command0 == '\0') - { - for (i = 1; argvec[i] != NULL; i++) - if (strpbrk (argvec[i], "\" \t") != NULL) - break; - - if (argvec[i] == NULL) - return (const char * const *) argvec; - } - - for (i = 0; argvec[i] != NULL; i++) - ; - argv = XNEWVEC (char *, i + 2); - - argv++; /* Leave space at the beginning of argv - for potential #! handling */ - - for (i = 0; argvec[i] != NULL; i++) - argv[i] = xstrdup (argvec[i]); - argv[i] = NULL; - - backslashify (argv[0]); - - for (i = 1; argv[i] != 0; i++) - { - int len, j; - char *temp, *newtemp; - - temp = argv[i]; - len = strlen (temp); - for (j = 0; j < len; j++) - { - if (temp[j] == '"') - { - newtemp = XNEWVEC (char, len + 2); - strncpy (newtemp, temp, j); - newtemp [j] = '\\'; - strncpy (&newtemp [j+1], &temp [j], len-j); - newtemp [len+1] = 0; - temp = newtemp; - len++; - j++; - } - } - - if (argv[i] != temp) - { - free (argv[i]); - argv[i] = temp; - } - } - - for (i = 0; argv[i] != 0; i++) - { - if (strpbrk (argv[i], " \t")) - { - int len, trailing_backslash; - char *temp; - - len = strlen (argv[i]); - trailing_backslash = 0; - - /* There is an added complication when an arg with embedded white - space ends in a backslash (such as in the case of -iprefix arg - passed to cpp). The resulting quoted strings gets misinterpreted - by the command interpreter -- it thinks that the ending quote - is escaped by the trailing backslash and things get confused. - We handle this case by escaping the trailing backslash, provided - it was not escaped in the first place. */ - if (len > 1 - && argv[i][len-1] == '\\' - && argv[i][len-2] != '\\') - { - trailing_backslash = 1; - ++len; /* to escape the final backslash. */ - } - - len += 2; /* and for the enclosing quotes. */ - - temp = XNEWVEC (char, len + 1); - temp[0] = '"'; - strcpy (temp + 1, argv[i]); - if (trailing_backslash) - temp[len - 2] = '\\'; - temp[len - 1] = '"'; - temp[len] = '\0'; - - free (argv[i]); - argv[i] = temp; - } - } - - return (const char * const *) argv; -} - static int pex_win32_open_read (struct pex_obj *, const char *, int); static int pex_win32_open_write (struct pex_obj *, const char *, int); static long pex_win32_exec_child (struct pex_obj *, int, const char *, @@ -422,8 +314,225 @@ msys_rootify (const char *executable) } #endif +/* Return a Windows command-line from ARGV. It is the caller's + responsibility to free the string returned. */ + +static char * +argv_to_cmdline (char *const *argv) +{ + char *cmdline; + char *p; + size_t cmdline_len; + int i, j, k; + + cmdline_len = 0; + for (i = 0; argv[i]; i++) + { + /* We quote every last argument. This simplifies the problem; + we need only escape embedded double-quotes and immediately + preceeding backslash characters. A sequence of backslach characters + that is not follwed by a double quote character will not be + escaped. */ + for (j = 0; argv[i][j]; j++) + { + if (argv[i][j] == '"') + { + /* Escape preceeding backslashes. */ + for (k = j - 1; k >= 0 && argv[i][k] == '\\'; k--) + cmdline_len++; + /* Escape the qote character. */ + cmdline_len++; + } + } + /* Trailing backslashes also need to be escaped because they will be + followed by the terminating quote. */ + for (k = j - 1; k >= 0 && argv[i][k] == '\\'; k--) + cmdline_len++; + cmdline_len += j; + cmdline_len += 3; /* for leading and trailing quotes and space */ + } + cmdline = xmalloc (cmdline_len); + p = cmdline; + for (i = 0; argv[i]; i++) + { + *p++ = '"'; + for (j = 0; argv[i][j]; j++) + { + if (argv[i][j] == '"') + { + for (k = j - 1; k >= 0 && argv[i][k] == '\\'; k--) + *p++ = '\\'; + *p++ = '\\'; + } + *p++ = argv[i][j]; + } + for (k = j - 1; k >= 0 && argv[i][k] == '\\'; k--) + *p++ = '\\'; + *p++ = '"'; + *p++ = ' '; + } + p[-1] = '\0'; + return cmdline; +} + +static const char *const +std_suffixes[] = { + ".com", + ".exe", + ".bat", + ".cmd", + 0 +}; +static const char *const +no_suffixes[] = { + "", + 0 +}; + +/* Returns the full path to PROGRAM. If SEARCH is true, look for + PROGRAM in each directory in PATH. */ + +static char * +find_executable (const char *program, BOOL search) +{ + char *full_executable; + char *e; + size_t fe_len; + const char *path = 0; + const char *const *ext; + const char *p, *q; + size_t proglen = strlen (program); + int has_extension = !!strchr (program, '.'); + int has_slash = (strchr (program, '/') || strchr (program, '\\')); + HANDLE h; + + if (has_slash) + search = FALSE; + + if (search) + path = getenv ("PATH"); + if (!path) + path = ""; + + fe_len = 0; + for (p = path; *p; p = q) + { + q = p; + while (*q != ';' && *q != '\0') + q++; + if ((size_t)(q - p) > fe_len) + fe_len = q - p; + if (*q == ';') + q++; + } + fe_len = fe_len + 1 + proglen + (has_extension ? 1 : 5); + full_executable = xmalloc (fe_len); + + p = path; + do + { + q = p; + while (*q != ';' && *q != '\0') + q++; + + e = full_executable; + memcpy (e, p, q - p); + e += (q - p); + if (q - p) + *e++ = '\\'; + strcpy (e, program); + + if (*q == ';') + q++; + + for (e = full_executable; *e; e++) + if (*e == '/') + *e = '\\'; + + /* At this point, e points to the terminating NUL character for + full_executable. */ + for (ext = has_extension ? no_suffixes : std_suffixes; *ext; ext++) + { + /* Remove any current extension. */ + *e = '\0'; + /* Add the new one. */ + strcat (full_executable, *ext); + + /* Attempt to open this file. */ + h = CreateFile (full_executable, GENERIC_READ, + FILE_SHARE_READ | FILE_SHARE_WRITE, + 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); + if (h != INVALID_HANDLE_VALUE) + goto found; + } + p = q; + } + while (*p); + free (full_executable); + return 0; + + found: + CloseHandle (h); + return full_executable; +} + +/* Low-level process creation function. */ + +static long +win32_spawn (const char *executable, + BOOL search, + char *const *argv, + DWORD dwCreationFlags, + LPSTARTUPINFO si, + LPPROCESS_INFORMATION pi) +{ + char *full_executable; + char *cmdline; + + full_executable = NULL; + cmdline = NULL; + + full_executable = find_executable (executable, search); + if (!full_executable) + goto error; + cmdline = argv_to_cmdline (argv); + if (!cmdline) + goto error; + + /* Create the child process. */ + if (!CreateProcess (full_executable, cmdline, + /*lpProcessAttributes=*/NULL, + /*lpThreadAttributes=*/NULL, + /*bInheritHandles=*/TRUE, + dwCreationFlags, + /*lpEnvironment=*/NULL, + /*lpCurrentDirectory=*/NULL, + si, + pi)) + { + free (full_executable); + return -1; + } + + /* Clean up. */ + CloseHandle (pi->hThread); + free (full_executable); + + return (long) pi->hProcess; + + error: + if (cmdline) + free (cmdline); + if (full_executable) + free (full_executable); + return -1; +} + static long -spawn_script (const char *executable, const char * const * argv) +spawn_script (const char *executable, char *const *argv, + DWORD dwCreationFlags, + LPSTARTUPINFO si, + LPPROCESS_INFORMATION pi) { int pid = -1; int save_errno = errno; @@ -455,17 +564,21 @@ spawn_script (const char *executable, const char * const * argv) executable = strrchr (executable1, '\\') + 1; if (!executable) executable = executable1; - pid = _spawnvp (_P_NOWAIT, executable, argv); + pid = win32_spawn (executable, TRUE, argv, + dwCreationFlags, si, pi); #else if (strchr (executable1, '\\') == NULL) - pid = _spawnvp (_P_NOWAIT, executable1, argv); + pid = win32_spawn (executable1, TRUE, argv, + dwCreationFlags, si, pi); else if (executable1[0] != '\\') - pid = _spawnv (_P_NOWAIT, executable1, argv); + pid = win32_spawn (executable1, FALSE, argv, + dwCreationFlags, si, pi); else { const char *newex = mingw_rootify (executable1); *avhere = newex; - pid = _spawnv (_P_NOWAIT, newex, argv); + pid = win32_spawn (newex, FALSE, argv, + dwCreationFlags, si, pi); if (executable1 != newex) free ((char *) newex); if (pid < 0) @@ -474,7 +587,8 @@ spawn_script (const char *executable, const char * const * argv) if (newex != executable1) { *avhere = newex; - pid = _spawnv (_P_NOWAIT, newex, argv); + pid = win32_spawn (newex, FALSE, argv, + dwCreationFlags, si, pi); free ((char *) newex); } } @@ -496,149 +610,95 @@ pex_win32_exec_child (struct pex_obj *obj ATTRIBUTE_UNUSED, int flags, int in, int out, int errdes, const char **errmsg, int *err) { - int org_in, org_out, org_errdes; long pid; - const char * const * newargv; - - org_in = -1; - org_out = -1; - org_errdes = -1; - - if (in != STDIN_FILE_NO) - { - org_in = _dup (STDIN_FILE_NO); - if (org_in < 0) - { - *err = errno; - *errmsg = "_dup"; - return -1; - } - if (_dup2 (in, STDIN_FILE_NO) < 0) - { - *err = errno; - *errmsg = "_dup2"; - return -1; - } - if (_close (in) < 0) - { - *err = errno; - *errmsg = "_close"; - return -1; - } - } - - if (out != STDOUT_FILE_NO) - { - org_out = _dup (STDOUT_FILE_NO); - if (org_out < 0) - { - *err = errno; - *errmsg = "_dup"; - return -1; - } - if (_dup2 (out, STDOUT_FILE_NO) < 0) - { - *err = errno; - *errmsg = "_dup2"; - return -1; - } - if (_close (out) < 0) - { - *err = errno; - *errmsg = "_close"; - return -1; - } - } - - if (errdes != STDERR_FILE_NO - || (flags & PEX_STDERR_TO_STDOUT) != 0) + HANDLE stdin_handle; + HANDLE stdout_handle; + HANDLE stderr_handle; + DWORD dwCreationFlags; + OSVERSIONINFO version_info; + STARTUPINFO si; + PROCESS_INFORMATION pi; + + stdin_handle = INVALID_HANDLE_VALUE; + stdout_handle = INVALID_HANDLE_VALUE; + stderr_handle = INVALID_HANDLE_VALUE; + + stdin_handle = (HANDLE) _get_osfhandle (in); + stdout_handle = (HANDLE) _get_osfhandle (out); + if (!(flags & PEX_STDERR_TO_STDOUT)) + stderr_handle = (HANDLE) _get_osfhandle (errdes); + else + stderr_handle = stdout_handle; + + /* Determine the version of Windows we are running on. */ + version_info.dwOSVersionInfoSize = sizeof (version_info); + GetVersionEx (&version_info); + if (version_info.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) + /* On Windows 95/98/ME the CREATE_NO_WINDOW flag is not + supported, so we cannot avoid creating a console window. */ + dwCreationFlags = 0; + else { - org_errdes = _dup (STDERR_FILE_NO); - if (org_errdes < 0) + HANDLE conout_handle; + + /* Determine whether or not we have an associated console. */ + conout_handle = CreateFile("CONOUT$", + GENERIC_WRITE, + FILE_SHARE_WRITE, + /*lpSecurityAttributes=*/NULL, + OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL, + /*hTemplateFile=*/NULL); + if (conout_handle == INVALID_HANDLE_VALUE) + /* There is no console associated with this process. Since + the child is a console process, the OS would normally + create a new console Window for the child. Since we'll be + redirecting the child's standard streams, we do not need + the console window. */ + dwCreationFlags = CREATE_NO_WINDOW; + else { - *err = errno; - *errmsg = "_dup"; - return -1; - } - if (_dup2 ((flags & PEX_STDERR_TO_STDOUT) != 0 ? STDOUT_FILE_NO : errdes, - STDERR_FILE_NO) < 0) - { - *err = errno; - *errmsg = "_dup2"; - return -1; - } - if (errdes != STDERR_FILE_NO) - { - if (_close (errdes) < 0) - { - *err = errno; - *errmsg = "_close"; - return -1; - } + /* There is a console associated with the process, so the OS + will not create a new console. And, if we use + CREATE_NO_WINDOW in this situation, the child will have + no associated console. Therefore, if the child's + standard streams are connected to the console, the output + will be discarded. */ + CloseHandle(conout_handle); + dwCreationFlags = 0; } } - newargv = fix_argv (argv); - pid = (((flags & PEX_SEARCH) != 0 ? _spawnvp : _spawnv) - (_P_NOWAIT, executable, newargv)); - + /* Since the child will be a console process, it will, by default, + connect standard input/output to its console. However, we want + the child to use the handles specifically designated above. In + addition, if there is no console (such as when we are running in + a Cygwin X window), then we must redirect the child's + input/output, as there is no console for the child to use. */ + memset (&si, 0, sizeof (si)); + si.cb = sizeof (si); + si.dwFlags = STARTF_USESTDHANDLES; + si.hStdInput = stdin_handle; + si.hStdOutput = stdout_handle; + si.hStdError = stderr_handle; + + /* Create the child process. */ + pid = win32_spawn (executable, (flags & PEX_SEARCH) != 0, + argv, dwCreationFlags, &si, &pi); if (pid == -1) - pid = spawn_script (executable, newargv); - + pid = spawn_script (executable, argv, dwCreationFlags, &si, &pi); if (pid == -1) { - *err = errno; - *errmsg = ((flags & PEX_SEARCH) != 0) ? "_spawnvp" : "_spawnv"; + *err = ENOENT; + *errmsg = "CreateProcess"; } - if (in != STDIN_FILE_NO) - { - if (_dup2 (org_in, STDIN_FILE_NO) < 0) - { - *err = errno; - *errmsg = "_dup2"; - return -1; - } - if (_close (org_in) < 0) - { - *err = errno; - *errmsg = "_close"; - return -1; - } - } - - if (out != STDOUT_FILE_NO) - { - if (_dup2 (org_out, STDOUT_FILE_NO) < 0) - { - *err = errno; - *errmsg = "_dup2"; - return -1; - } - if (_close (org_out) < 0) - { - *err = errno; - *errmsg = "_close"; - return -1; - } - } - - if (errdes != STDERR_FILE_NO - || (flags & PEX_STDERR_TO_STDOUT) != 0) - { - if (_dup2 (org_errdes, STDERR_FILE_NO) < 0) - { - *err = errno; - *errmsg = "_dup2"; - return -1; - } - if (_close (org_errdes) < 0) - { - *err = errno; - *errmsg = "_close"; - return -1; - } - } + /* Close the standard output and standard error handles in the + parent. */ + if (out != STDOUT_FILENO) + obj->funcs->close (obj, out); + if (errdes != STDERR_FILENO) + obj->funcs->close (obj, errdes); return pid; } @@ -656,30 +716,34 @@ pex_win32_wait (struct pex_obj *obj ATTRIBUTE_UNUSED, long pid, int *status, struct pex_time *time, int done ATTRIBUTE_UNUSED, const char **errmsg, int *err) { - int termstat; + DWORD termstat; + HANDLE h; if (time != NULL) memset (time, 0, sizeof *time); + h = (HANDLE) pid; + /* FIXME: If done is non-zero, we should probably try to kill the process. */ - - if (_cwait (&termstat, pid, WAIT_CHILD) < 0) + if (WaitForSingleObject (h, INFINITE) != WAIT_OBJECT_0) { - *err = errno; - *errmsg = "_cwait"; + CloseHandle (h); + *err = ECHILD; + *errmsg = "WaitForSingleObject"; return -1; } - /* cwait returns the child process exit code in termstat. A value - of 3 indicates that the child caught a signal, but not which one. - Since only SIGABRT, SIGFPE and SIGINT do anything, we report - SIGABRT. */ - + GetExitCodeProcess (h, &termstat); + CloseHandle (h); + + /* A value of 3 indicates that the child caught a signal, but not + which one. Since only SIGABRT, SIGFPE and SIGINT do anything, we + report SIGABRT. */ if (termstat == 3) *status = SIGABRT; else - *status = ((termstat & 0xff) << 8); + *status = (termstat & 0xff) << 8; return 0; } diff --git a/libjava/ChangeLog b/libjava/ChangeLog index ac204088ae2..d09358556c8 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,141 @@ +2006-04-05 Ranjit Mathew + + * configure.host: Add -fno-omit-frame-pointer to libgcj_flags for + MinGW since EBP is used for backtracking through call frames on this + platform. + +2006-04-05 Archit Shah + + PR java/25414 + * gnu/java/rmi/rmic/CompilerProcess.java (computeTypicalArguments): + Add classpath argument. + * gnu/java/rmi/rmic/Compile_gcj.java (computeArguments): Adjust + caller. + * gnu/java/rmi/rmic/Compile_jikes.java (computeArguments): Likewise. + * gnu/java/rmi/rmic/Compile_kjc.java (computeArguments): Likewise. + * gnu/java/rmi/rmic/Compiler.java (getClasspath, setClasspath): New. + * gnu/java/rmi/rmic/RMIC.java: Set classpath for compiler, call + mkdirs for destination directory, correct handling of superclasses + and interfaces of the remote class, correct handling of exceptions + declared by remote methods. + +2006-04-04 Tom Tromey + + PR libgcj/26990: + * prims.cc (_Jv_RunMain): Use exitNoChecksAccessor. + * gnu/java/lang/natMainThread.cc (call_main): Use + exitNoChecksAccessor. + * testsuite/libjava.lang/pr26990.out: New file. + * testsuite/libjava.lang/pr26990.java: New file. + * java/lang/Runtime.java (exitNoChecks): New method. + (exitNoChecksAccessor): Likewise. + (exit): Call exitNoChecks. + +2006-04-03 Tom Tromey + + * Makefile.in: Rebuilt. + * Makefile.am (ZIP): Removed. + (libgcj-$(gcc_version).jar): Use $(JAR). + (src.zip): Likewise. + * configure: Rebuilt. + * configure.ac: Check for jar. Removed code to set ZIP. + +2006-04-03 Andrew Haley + + * testsuite/libjava.lang/Float_2.java: New file. + +2006-03-31 Andreas Tobler + + * posix.cc (_Jv_platform_nanotime): Declare id with clockid_t. + +2006-03-30 Tom Tromey + + PR java/26042: + * testsuite/libjava.compile/pr26042.java: New file. + +2006-03-29 Tom Tromey + + * sources.am, Makefile.in: Rebuilt. + * scripts/makemake.tcl: Scan classpath/external/relaxngDatatype. + +2006-03-29 Tom Tromey + + PR java/26390: + * testsuite/libjava.lang/pr26390.out: New file. + * testsuite/libjava.lang/pr26390.java: New file. + * sources.am, Makefile.in: Rebuilt. + * scripts/makemake.tcl: Compile gnu/java/awt/peer/swing. + +2006-03-29 Tom Tromey + + * posix.cc (_Jv_platform_nanotime): Look for CLOCK_MONOTONIC and + CLOCK_HIGHRES. + +2006-03-28 Anthony Balkissoon + + * scripts/unicode-muncher.pl: Removed this file. + * scripts/MakeCharTables.java: Likewise. + * scripts/unicode-to-chartables.pl: New file. + * java/lang/natCharacter.cc: + (UNASSIGNED_TYPE): New field. + (UNASSIGNED_DIGIT): Likewise. + (UNASSIGNED_DIRECTION): Likewise. + (UNASSIGNED_NUMERIC_VALUE): Likewise. + (PRIVATE_TYPE): Likewise. + (PRIVATE_DIRECTION): Likewise. + (readCodePoint): New method. + (getType(jint)): Likewise. + (toLowerCase(jint)): Likewise. + (toUpperCase(jint)): Likewise. + (toTitleCase(jint)): Likewise. + (digit(jint, jint)): Likewise. + (getNumericValue(jint)): Likewise. + (getDirectionality(jint)): Likewise. + (readChar), + (getType(jchar)), + (toLowerCase(jchar)), + (toUpperCase(jchar)), + (toTitleCase(jchar)), + (digit(jchar, jint)), + (getNumericValue(jchar)), + (getDirectionality(jchar)): Changed references from data to data[0], + blocks to blocks[0], direction to direction[0], numValue to + numValue[0], upper to upper[0], lower to lower[0], and shift to + shift[0] to reflect the new structures in java-chartables.h. + * java/lang/Character.java: + (readCodePoint): Declared new native method. + (getType(int)): Likewise. + (toLowerCase(int)): Likewise. + (toUpperCase(int)): Likewise. + (toTitleCase(int)): Likewise. + (digit(int, int)): Likewise. + (getNumericValue(int)): Likewise. + (getDirectionality(int)): Likewise. + (isLowerCase(int)): New method. + (isUpperCase(int)): Likewise. + (itTitleCase(int)): Likewise. + (isDigit(int)): Likewise. + (isDefined(int)): Likewise. + (isLetter(int)): Likewise. + (isLetterOrDigit(int)): Likewise. + (isJavaIdentifierStart(int)): Likewise. + (isJavaIdentifierPart(int)): Likewise. + (isUnicodeIdentifierStart(int)): Likewise. + (isUnicodeIdentifierPart(int)): Likewise. + (isIdentifierIgnorable(int)): Likewise. + (isSpaceChar(int)): Likewise. + (isWhitespace(int)): Likewise. + (isISOControl(int)): Likewise. + (isMirrored(int)): Likewise. + * include/java-chartables.h: Generated from + scripts/unicode-to-chartables.h. + +2006-03-24 David Daney * include/sh-signal.h (MAKE_THROW_FRAME): Change into empty diff --git a/libjava/Makefile.am b/libjava/Makefile.am index 4f663a0c9c5..3deaa7eb1e1 100644 --- a/libjava/Makefile.am +++ b/libjava/Makefile.am @@ -87,7 +87,6 @@ bin_SCRIPTS = addr2name.awk ## GCJH = @GCJH@ -ZIP = @ZIP@ ## The compiler with whatever flags we want for both -c and -C ## compiles. @@ -322,10 +321,7 @@ $(propertyo_files): %.lo: classpath/resource/% $(LTGCJCOMPILE) -o $@ -c $< -Wc,--resource,$(@:.lo=) libgcj-$(gcc_version).jar: - jardir=`dirname $(ZIP)`; \ - jardir=`cd $$jardir && pwd`; \ - jarname=`basename $(ZIP)`; \ - cd classpath/lib; $$jardir/$$jarname -cfM \ + cd classpath/lib; $(JAR) -cfM \ ../../libgcj-$(gcc_version).jar gnu java javax org CLEANFILES = libgcj-$(gcc_version).jar \ @@ -883,9 +879,10 @@ src.zip: echo $$file; \ done ); \ ) | \ -## Many of the above circumlocutions are because ZIP will most likely -## be a relative path to fastjar. - $(ZIP) -cfM@ $$here/src.zip +## Many of the above circumlocutions were because ZIP used to be a +## relative path to fastjar. It didn't seem worthwhile to change the +## code when we moved to an external jar. + $(JAR) -cfM@ $$here/src.zip ## Override GNU Classpath sources with libgcj replacements. here=`pwd`; \ ( \ @@ -897,7 +894,7 @@ src.zip: echo $$file; \ done ); \ ) | \ - $(ZIP) -ufM@ $$here/src.zip + $(JAR) -ufM@ $$here/src.zip ## We use a variable for this in case the user wants to override it. sourcesdir = $(jardir) diff --git a/libjava/Makefile.in b/libjava/Makefile.in index d784fcc740f..9851dd16b49 100644 --- a/libjava/Makefile.in +++ b/libjava/Makefile.in @@ -234,9 +234,10 @@ am__DEPENDENCIES_2 = gnu/awt.lo gnu/awt/j2d.lo gnu/classpath.lo \ javax/swing/text/html/parser.lo javax/swing/text/rtf.lo \ javax/swing/tree.lo javax/swing/undo.lo javax/transaction.lo \ javax/transaction/xa.lo org/ietf/jgss.lo -am__DEPENDENCIES_3 = gnu-CORBA.lo gnu-java-beans.lo gnu-javax-rmi.lo \ - gnu-javax-sound-midi.lo gnu-xml.lo javax-imageio.lo \ - javax-rmi.lo javax-xml.lo org-omg.lo org-w3c.lo org-xml.lo +am__DEPENDENCIES_3 = gnu-CORBA.lo gnu-java-awt-peer-swing.lo \ + gnu-java-beans.lo gnu-javax-rmi.lo gnu-javax-sound-midi.lo \ + gnu-xml.lo javax-imageio.lo javax-rmi.lo javax-xml.lo \ + org-omg.lo org-relaxng.lo org-w3c.lo org-xml.lo am__DEPENDENCIES_4 = $(patsubst classpath/resource/%,%,$(addsuffix \ .lo,$(property_files))) am__libgcj_la_SOURCES_DIST = prims.cc jni.cc exception.cc \ @@ -487,6 +488,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTERPRETER = @INTERPRETER@ +JAR = @JAR@ JAVA_HOME = @JAVA_HOME@ JAVA_HOME_SET_FALSE = @JAVA_HOME_SET_FALSE@ JAVA_HOME_SET_TRUE = @JAVA_HOME_SET_TRUE@ @@ -578,7 +580,6 @@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZINCS = @ZINCS@ -ZIP = @ZIP@ ZLIBS = @ZLIBS@ ZLIBSPEC = @ZLIBSPEC@ ZLIBTESTSPEC = @ZLIBTESTSPEC@ @@ -1372,6 +1373,22 @@ classpath/gnu/java/awt/peer/qt/QtToolkit.java \ classpath/gnu/java/awt/peer/qt/QtVolatileImage.java \ classpath/gnu/java/awt/peer/qt/QtWindowPeer.java +gnu_java_awt_peer_swing_source_files = \ +classpath/gnu/java/awt/peer/swing/SwingButtonPeer.java \ +classpath/gnu/java/awt/peer/swing/SwingCanvasPeer.java \ +classpath/gnu/java/awt/peer/swing/SwingComponent.java \ +classpath/gnu/java/awt/peer/swing/SwingComponentPeer.java \ +classpath/gnu/java/awt/peer/swing/SwingContainerPeer.java \ +classpath/gnu/java/awt/peer/swing/SwingFramePeer.java \ +classpath/gnu/java/awt/peer/swing/SwingLabelPeer.java \ +classpath/gnu/java/awt/peer/swing/SwingMenuBarPeer.java \ +classpath/gnu/java/awt/peer/swing/SwingMenuItemPeer.java \ +classpath/gnu/java/awt/peer/swing/SwingMenuPeer.java \ +classpath/gnu/java/awt/peer/swing/SwingPanelPeer.java \ +classpath/gnu/java/awt/peer/swing/SwingTextFieldPeer.java \ +classpath/gnu/java/awt/peer/swing/SwingToolkit.java \ +classpath/gnu/java/awt/peer/swing/SwingWindowPeer.java + gnu_java_beans_source_files = \ classpath/gnu/java/beans/BeanInfoEmbryo.java \ classpath/gnu/java/beans/DefaultExceptionListener.java \ @@ -6040,6 +6057,18 @@ classpath/org/omg/SendingContext/RunTime.java \ classpath/org/omg/SendingContext/RunTimeOperations.java \ classpath/org/omg/stub/java/rmi/_Remote_Stub.java +org_relaxng_source_files = \ +classpath/external/relaxngDatatype/org/relaxng/datatype/Datatype.java \ +classpath/external/relaxngDatatype/org/relaxng/datatype/DatatypeBuilder.java \ +classpath/external/relaxngDatatype/org/relaxng/datatype/DatatypeException.java \ +classpath/external/relaxngDatatype/org/relaxng/datatype/DatatypeLibrary.java \ +classpath/external/relaxngDatatype/org/relaxng/datatype/DatatypeLibraryFactory.java \ +classpath/external/relaxngDatatype/org/relaxng/datatype/DatatypeStreamingValidator.java \ +classpath/external/relaxngDatatype/org/relaxng/datatype/ValidationContext.java \ +classpath/external/relaxngDatatype/org/relaxng/datatype/helpers/DatatypeLibraryLoader.java \ +classpath/external/relaxngDatatype/org/relaxng/datatype/helpers/ParameterlessDatatypeBuilder.java \ +classpath/external/relaxngDatatype/org/relaxng/datatype/helpers/StreamingValidatorImpl.java + org_w3c_source_files = \ classpath/external/w3c_dom/org/w3c/dom/Attr.java \ classpath/external/w3c_dom/org/w3c/dom/CDATASection.java \ @@ -6618,6 +6647,7 @@ ordinary_header_files = \ bc_objects = \ gnu-CORBA.lo \ + gnu-java-awt-peer-swing.lo \ gnu-java-beans.lo \ gnu-javax-rmi.lo \ gnu-javax-sound-midi.lo \ @@ -6626,6 +6656,7 @@ bc_objects = \ javax-rmi.lo \ javax-xml.lo \ org-omg.lo \ + org-relaxng.lo \ org-w3c.lo \ org-xml.lo @@ -8392,10 +8423,7 @@ $(propertyo_files): %.lo: classpath/resource/% $(LTGCJCOMPILE) -o $@ -c $< -Wc,--resource,$(@:.lo=) libgcj-$(gcc_version).jar: - jardir=`dirname $(ZIP)`; \ - jardir=`cd $$jardir && pwd`; \ - jarname=`basename $(ZIP)`; \ - cd classpath/lib; $$jardir/$$jarname -cfM \ + cd classpath/lib; $(JAR) -cfM \ ../../libgcj-$(gcc_version).jar gnu java javax org mostlyclean-local: @@ -8662,6 +8690,11 @@ gnu-java-awt-peer-qt.lo: $(gnu_java_awt_peer_qt_source_files) $(LTGCJCOMPILE) -fjni -findirect-dispatch -c -o gnu-java-awt-peer-qt.lo @gnu-java-awt-peer-qt.list @rm -f gnu-java-awt-peer-qt.list +gnu-java-awt-peer-swing.lo: $(gnu_java_awt_peer_swing_source_files) + @find classpath/lib/gnu/java/awt/peer/swing -name '*.class' > gnu-java-awt-peer-swing.list + $(LTGCJCOMPILE) -fjni -findirect-dispatch -c -o gnu-java-awt-peer-swing.lo @gnu-java-awt-peer-swing.list + @rm -f gnu-java-awt-peer-swing.list + gnu-java-beans.lo: $(gnu_java_beans_source_files) @find classpath/lib/gnu/java/beans -name '*.class' > gnu-java-beans.list $(LTGCJCOMPILE) -fjni -findirect-dispatch -c -o gnu-java-beans.lo @gnu-java-beans.list @@ -10422,6 +10455,11 @@ org-omg.lo: $(org_omg_source_files) $(LTGCJCOMPILE) -fjni -findirect-dispatch -c -o org-omg.lo @org-omg.list @rm -f org-omg.list +org-relaxng.lo: $(org_relaxng_source_files) + @find classpath/lib/org/relaxng -name '*.class' > org-relaxng.list + $(LTGCJCOMPILE) -fjni -findirect-dispatch -c -o org-relaxng.lo @org-relaxng.list + @rm -f org-relaxng.list + org-w3c.lo: $(org_w3c_source_files) @find classpath/lib/org/w3c -name '*.class' > org-w3c.list $(LTGCJCOMPILE) -fjni -findirect-dispatch -c -o org-w3c.lo @org-w3c.list @@ -10685,7 +10723,7 @@ src.zip: echo $$file; \ done ); \ ) | \ - $(ZIP) -cfM@ $$here/src.zip + $(JAR) -cfM@ $$here/src.zip here=`pwd`; \ ( \ ( cd $(srcdir); \ @@ -10696,7 +10734,7 @@ src.zip: echo $$file; \ done ); \ ) | \ - $(ZIP) -ufM@ $$here/src.zip + $(JAR) -ufM@ $$here/src.zip install-src.zip: src.zip $(INSTALL_DATA) src.zip $(DESTDIR)$(sourcesdir)/src-$(gcc_version).zip diff --git a/libjava/classpath/ChangeLog.gcj b/libjava/classpath/ChangeLog.gcj index e226d840a07..735a2a5bf64 100644 --- a/libjava/classpath/ChangeLog.gcj +++ b/libjava/classpath/ChangeLog.gcj @@ -1,3 +1,32 @@ +2006-04-04 Tom Tromey + + * lib/gen-classlist.sh.in: Correct handle generated files. + +2006-04-04 Mark Wielaard + + * lib/gen-classlist.sh.in: Use classes.tmp, not classes.2 + as temporary file name. + +2006-04-04 Tom Tromey + + * lib/split-for-gcj.sh: Updated for multi-field format. + * lib/Makefile.am (CLEANFILES): Added classes.2. + * lib/gen-classlist.sh.in (GCJ): Removed. Create classes.1 and + classes.2 using multiple fields. + +2006-04-03 Bernhard Rosenkraenzer + + PR gcc/26901: + * Makefile.in: Rebuilt. + * Makefile.am (SUBDIRS): Remove 'tools'. + (DIST_SUBDIRS): Likewise. + +2006-03-16 Tom Tromey + + PR libgcj/26706: + * aclocal.m4, configure: Rebuilt. + * configure.ac (GCC_NO_EXECUTABLES): Moved earlier. + 2006-03-15 Tom Tromey PR libgcj/26688: diff --git a/libjava/classpath/Makefile.am b/libjava/classpath/Makefile.am index 82e97dbde7f..dc3373a190f 100644 --- a/libjava/classpath/Makefile.am +++ b/libjava/classpath/Makefile.am @@ -1,8 +1,10 @@ ## Input file for automake to generate the Makefile.in used by configure # lib first, to compile .class files before native code, last examples -SUBDIRS = lib doc external include native resource scripts tools $(EXAMPLESDIR) -DIST_SUBDIRS = lib doc external include native resource scripts tools examples +## GCJ LOCAL: we remove 'tools' for the time being. +## We don't build any of them into actual tools yet. +SUBDIRS = lib doc external include native resource scripts $(EXAMPLESDIR) +DIST_SUBDIRS = lib doc external include native resource scripts examples ## GCJ LOCAL: we need an extra -I here. ACLOCAL_AMFLAGS = -I m4 -I ../.. -I ../../config diff --git a/libjava/classpath/Makefile.in b/libjava/classpath/Makefile.in index a2bd3200269..ed5a75429e8 100644 --- a/libjava/classpath/Makefile.in +++ b/libjava/classpath/Makefile.in @@ -44,9 +44,11 @@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ ltmain.sh missing mkinstalldirs subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../../libtool.m4 \ - $(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \ - $(top_srcdir)/m4/acinclude.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ + $(top_srcdir)/../../config/lead-dot.m4 \ + $(top_srcdir)/../../config/no-executables.m4 \ + $(top_srcdir)/../../libtool.m4 $(top_srcdir)/m4/acattribute.m4 \ + $(top_srcdir)/m4/accross.m4 $(top_srcdir)/m4/acinclude.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ @@ -280,8 +282,8 @@ target_vendor = @target_vendor@ vm_classes = @vm_classes@ # lib first, to compile .class files before native code, last examples -SUBDIRS = lib doc external include native resource scripts tools $(EXAMPLESDIR) -DIST_SUBDIRS = lib doc external include native resource scripts tools examples +SUBDIRS = lib doc external include native resource scripts $(EXAMPLESDIR) +DIST_SUBDIRS = lib doc external include native resource scripts examples ACLOCAL_AMFLAGS = -I m4 -I ../.. -I ../../config EXTRA_DIST = HACKING BUGS THANKYOU mauve-classpath LICENSE \ ChangeLog-2003 ChangeLog-2004 ChangeLog-2005 \ @@ -460,7 +462,7 @@ distclean-tags: distdir: $(DISTFILES) $(am__remove_distdir) mkdir $(distdir) - $(mkdir_p) $(distdir)/../.. $(distdir)/examples $(distdir)/gnu/classpath $(distdir)/lib $(distdir)/m4 $(distdir)/scripts + $(mkdir_p) $(distdir)/../.. $(distdir)/../../config $(distdir)/examples $(distdir)/gnu/classpath $(distdir)/lib $(distdir)/m4 $(distdir)/scripts @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ diff --git a/libjava/classpath/lib/Makefile.am b/libjava/classpath/lib/Makefile.am index d73be80a09a..c9e00191eb7 100644 --- a/libjava/classpath/lib/Makefile.am +++ b/libjava/classpath/lib/Makefile.am @@ -159,7 +159,7 @@ endif EXTRA_DIST = standard.omit mkcollections.pl.in Makefile.gcj split-for-gcj.sh CLEANFILES = compile-classes resources classes \ - glibj.zip classes.1 \ + glibj.zip classes.1 classes.2 \ $(top_builddir)/java/util/LocaleData.java \ $(JAVA_DEPEND) diff --git a/libjava/classpath/lib/Makefile.in b/libjava/classpath/lib/Makefile.in index e9b4f228f21..de14acf5599 100644 --- a/libjava/classpath/lib/Makefile.in +++ b/libjava/classpath/lib/Makefile.in @@ -42,9 +42,11 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/copy-vmresources.sh.in $(srcdir)/gen-classlist.sh.in \ $(srcdir)/mkcollections.pl.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../../libtool.m4 \ - $(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \ - $(top_srcdir)/m4/acinclude.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ + $(top_srcdir)/../../config/lead-dot.m4 \ + $(top_srcdir)/../../config/no-executables.m4 \ + $(top_srcdir)/../../libtool.m4 $(top_srcdir)/m4/acattribute.m4 \ + $(top_srcdir)/m4/accross.m4 $(top_srcdir)/m4/acinclude.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ @@ -276,7 +278,7 @@ JAVAH = $(USER_JAVAH) -jni -classpath .:$(USER_CLASSLIB) @BUILD_CLASS_FILES_TRUE@noinst_DATA = genclasses compile-classes resources EXTRA_DIST = standard.omit mkcollections.pl.in Makefile.gcj split-for-gcj.sh CLEANFILES = compile-classes resources classes \ - glibj.zip classes.1 \ + glibj.zip classes.1 classes.2 \ $(top_builddir)/java/util/LocaleData.java \ $(JAVA_DEPEND) diff --git a/libjava/classpath/lib/gen-classlist.sh.in b/libjava/classpath/lib/gen-classlist.sh.in index 4c3a836eb49..795d7be8707 100755 --- a/libjava/classpath/lib/gen-classlist.sh.in +++ b/libjava/classpath/lib/gen-classlist.sh.in @@ -7,40 +7,62 @@ LC_ALL=C; export LC_ALL LANG=C; export LANG -# We use this to decide whether we need to invoke the split script. -GCJ="@GCJ@" - echo "Adding java source files from srcdir '@top_srcdir@'." -@FIND@ @top_srcdir@/java @top_srcdir@/javax @top_srcdir@/gnu \ - @top_srcdir@/org \ - @top_srcdir@/external/w3c_dom @top_srcdir@/external/sax \ - @top_srcdir@/external/relaxngDatatype \ - -follow -type f -print | sort -r | grep '\.java$' \ - > ${top_builddir}/lib/classes.1 +# We construct 'classes.1' as a series of lines. Each line +# has three fields, which are separated by spaces. The first +# field is the package of this class (separated by "/"s). +# The second field is the name of the top-level directory for +# this file, relative to the build directory. E.g., it might +# look like "../../classpath/vm/reference". +# The third field is the file name, like "java/lang/Object.java". +# We do this because it makes splitting for the gcj build much +# cheaper. +(cd @top_srcdir@ + @FIND@ java javax gnu org -follow -name '*.java' -print | + sort -r | sed -e 's,/\([^/]*\)$, \1,' | + while read pkg file; do + echo $pkg @top_srcdir@ $pkg/$file + done) > ${top_builddir}/lib/classes.1 + +# The same, but for the external code. +# Right now all external code is in org/. +for dir in @top_srcdir@/external/w3c_dom \ + @top_srcdir@/external/sax @top_srcdir@/external/relaxngDatatype; do + (cd $dir + @FIND@ org -follow -name '*.java' -print | + sort -r | sed -e 's,/\([^/]*\)$, \1,' | + while read pkg file; do + echo $pkg $dir $pkg/$file + done) +done >> ${top_builddir}/lib/classes.1 # Generate files for the VM classes. : > vm.omit : > vm.add vm_dirlist=`echo "@vm_classes@" | sed -e 's/:/ /g'` -echo "Adding java source files from VM directory $vm_dirlist" for dir in $vm_dirlist; do + echo "Adding java source files from VM directory $dir" (cd $dir for subdir in java javax gnu org com; do if test -d $subdir; then @FIND@ $subdir -name '*.java' -print fi - done) | - while read f; do - echo $dir/$f >> vm.add - echo $f >> vm.omit + done) | sed -e 's,/\([^/]*\)$, \1,' | + while read pkg file; do + echo $pkg $dir $pkg/$file >> vm.add + echo $pkg/$file >> vm.omit done done # Only include generated files once. if test ! "${top_builddir}" -ef "@top_srcdir@"; then echo "Adding generated files in builddir '${top_builddir}'." - @FIND@ ${top_builddir}/gnu ${top_builddir}/java -follow -type f -print \ - | sort | grep '\.java$' >> ${top_builddir}/lib/classes.1 + # Currently the only generated files are in gnu and java. + (cd ${top_builddir}; @FIND@ gnu java -follow -name '*.java' -print) | + sort | sed -e 's,/\([^/]*\)$, \1,' | + while read pkg file; do + echo $pkg $top_builddir $pkg/$file + done >> ${top_builddir}/lib/classes.1 fi @@ -51,9 +73,10 @@ for dir in $vm_dirlist; do fi done +# FIXME: could be more efficient by constructing a series of greps. for filexp in `cat tmp.omit`; do - grep -v ${filexp} < ${top_builddir}/lib/classes.1 > ${top_builddir}/lib/classes.2 - mv ${top_builddir}/lib/classes.2 ${top_builddir}/lib/classes.1 + grep -v ${filexp} < ${top_builddir}/lib/classes.1 > ${top_builddir}/lib/classes.tmp + mv ${top_builddir}/lib/classes.tmp ${top_builddir}/lib/classes.1 done @@ -72,18 +95,20 @@ rm vm.add rm tmp.omit new= -if test -e ${top_builddir}/lib/classes; then - p=`diff ${top_builddir}/lib/classes ${top_builddir}/lib/classes.1` +if test -e ${top_builddir}/lib/classes.2; then + p=`diff ${top_builddir}/lib/classes.2 ${top_builddir}/lib/classes.1` if test "$p" != ""; then new="true" - cp ${top_builddir}/lib/classes.1 ${top_builddir}/lib/classes fi else new="true" - cp ${top_builddir}/lib/classes.1 ${top_builddir}/lib/classes fi if test "$new" = "true"; then + cp ${top_builddir}/lib/classes.1 ${top_builddir}/lib/classes.2 + # Strip the package part. + sed -e 's/^[^ ]* //' -e 's, ,/,' < ${top_builddir}/lib/classes.1 \ + > ${top_builddir}/lib/classes echo "JAVA_SRCS = \\" > ${top_builddir}/lib/java.dep for i in `cat ${top_builddir}/lib/classes` ; do echo $i "\\" >> ${top_builddir}/lib/java.dep diff --git a/libjava/classpath/lib/split-for-gcj.sh b/libjava/classpath/lib/split-for-gcj.sh index f69b7979728..4130d56648a 100755 --- a/libjava/classpath/lib/split-for-gcj.sh +++ b/libjava/classpath/lib/split-for-gcj.sh @@ -22,22 +22,24 @@ # java/awt/BitwiseXORComposite.class: lists/java-awt.stamp # lists/java-awt.list: /home/aph/gcc/gcc/libjava/classpath/gnu/java/awt/BitwiseXORComposite.java -# This uses a somewhat hacky procedure for finding the package of a -# given file. - echo "Splitting for gcj" rm -f Makefile.dtmp > /dev/null 2>&1 test -d lists || mkdir lists -for dir in java javax gnu org; do - fgrep /$dir/ classes | while read file; do - pkg=`echo "$file " | sed -n -e "s,^.*/\($dir/.*\)/[^/]*$,\1,p"` - list=lists/`echo $pkg | sed -e 's,/,-,g' | cut -f1-3 -d-` - echo "$file" >> ${list}.list.1 - f2=`echo "$file" | sed -n -e "s,^.*/\($dir/.*\)$,\1,p"` - f2=`echo "$f2" | sed -e 's/.java$//'`.class - echo "$f2: ${list}.stamp" >> Makefile.dtmp - echo "${list}.list: $file" >> Makefile.dtmp - done +# Much more efficient to do processing outside the loop... +# The first expression computes the .class file name. +# We only want the first three package components, and +# we want them separated by '-'; this is the remaining expressions. +sed -e 's, \(.*\)[.]java$, \1.java \1.class,' \ + -e 's,^\([^/ ]*\)/\([^/ ]*\) ,\1-\2 ,' \ + -e 's,^\([^/ ]*\)/\([^/ ]*\)/\([^/ ]*\) ,\1-\2-\3 ,' \ + -e 's,^\([^/ ]*\)/\([^/ ]*\)/\([^/ ]*\)/[^ ]* ,\1-\2-\3 ,' \ + classes.2 | +while read pkg dir file f2; do + list=lists/$pkg + echo "$dir/$file" >> ${list}.list.1 + + echo "$f2: ${list}.stamp" >> Makefile.dtmp + echo "${list}.list: $dir/$file" >> Makefile.dtmp done # Only update a .list file if it changed. diff --git a/libjava/configure b/libjava/configure index 3b80ce1a164..b72520e4e14 100755 --- a/libjava/configure +++ b/libjava/configure @@ -310,7 +310,7 @@ ac_includes_default="\ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_subdir host_subdir target_subdir libgcj_basedir host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical LN_S mkinstalldirs CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LDFLAGS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE AS ac_ct_AS LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBGCJ_CFLAGS LIBGCJ_CXXFLAGS LIBGCJ_JAVAFLAGS LIBGCJ_LD_SYMBOLIC LIBGCJDEBUG TOOLKIT XLIB_AWT_TRUE XLIB_AWT_FALSE GTK_AWT_TRUE GTK_AWT_FALSE QT_AWT_TRUE QT_AWT_FALSE GCJH ZIP INCLTDL LIBLTDL DIRLTDL LIBTOOL CXXCPP CPPFLAGS GCJ GCJFLAGS GCJDEPMODE am__fastdepGCJ_TRUE am__fastdepGCJ_FALSE subdirs TESTSUBDIR_TRUE TESTSUBDIR_FALSE JAVA_HOME_SET_TRUE JAVA_HOME_SET_FALSE JAVA_HOME INTERPRETER LIBFFI LIBFFIINCS PLATFORM_INNER_NAT_HDRS CPP EGREP USING_WIN32_PLATFORM_TRUE USING_WIN32_PLATFORM_FALSE USING_POSIX_PLATFORM_TRUE USING_POSIX_PLATFORM_FALSE USING_DARWIN_CRT_TRUE USING_DARWIN_CRT_FALSE SYSTEMSPEC LIBGCJTESTSPEC ZLIBSPEC ZLIBTESTSPEC X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS GTK_CAIRO_TRUE GTK_CAIRO_FALSE PKG_CONFIG CAIRO_CFLAGS CAIRO_LIBS PANGOFT2_CFLAGS PANGOFT2_LIBS extra_ldflags_libjava GCLIBS GCINCS GCDEPS GCSPEC JC1GCSPEC GCTESTSPEC USING_BOEHMGC_TRUE USING_BOEHMGC_FALSE USING_NOGC_TRUE USING_NOGC_FALSE THREADLIBS THREADINCS THREADDEPS THREADSPEC THREADLDFLAGS THREADCXXFLAGS USING_POSIX_THREADS_TRUE USING_POSIX_THREADS_FALSE USING_WIN32_THREADS_TRUE USING_WIN32_THREADS_FALSE USING_NO_THREADS_TRUE USING_NO_THREADS_FALSE HASH_SYNC_SPEC USING_GCC_TRUE USING_GCC_FALSE LIBICONV LTLIBICONV GTK_CFLAGS GTK_LIBS GLIB_CFLAGS GLIB_LIBS LIBART_CFLAGS LIBART_LIBS CLASSPATH_SEPARATOR ac_ct_GCJ ZLIBS SYS_ZLIBS ZINCS DIVIDESPEC CHECKREFSPEC EXCEPTIONSPEC BACKTRACESPEC IEEESPEC NATIVE_TRUE NATIVE_FALSE NEEDS_DATA_START_TRUE NEEDS_DATA_START_FALSE GCC_UNWIND_INCLUDE toolexecdir toolexecmainlibdir toolexeclibdir dbexecdir GCJVERSION gxx_include_dir libstdcxx_incdir ALLOCA PERL SYSDEP_SOURCES LD_START_STATIC_SPEC LD_FINISH_STATIC_SPEC here LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_subdir host_subdir target_subdir libgcj_basedir host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical LN_S mkinstalldirs CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LDFLAGS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE AS ac_ct_AS LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB JAR MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBGCJ_CFLAGS LIBGCJ_CXXFLAGS LIBGCJ_JAVAFLAGS LIBGCJ_LD_SYMBOLIC LIBGCJDEBUG TOOLKIT XLIB_AWT_TRUE XLIB_AWT_FALSE GTK_AWT_TRUE GTK_AWT_FALSE QT_AWT_TRUE QT_AWT_FALSE GCJH INCLTDL LIBLTDL DIRLTDL LIBTOOL CXXCPP CPPFLAGS GCJ GCJFLAGS GCJDEPMODE am__fastdepGCJ_TRUE am__fastdepGCJ_FALSE subdirs TESTSUBDIR_TRUE TESTSUBDIR_FALSE JAVA_HOME_SET_TRUE JAVA_HOME_SET_FALSE JAVA_HOME INTERPRETER LIBFFI LIBFFIINCS PLATFORM_INNER_NAT_HDRS CPP EGREP USING_WIN32_PLATFORM_TRUE USING_WIN32_PLATFORM_FALSE USING_POSIX_PLATFORM_TRUE USING_POSIX_PLATFORM_FALSE USING_DARWIN_CRT_TRUE USING_DARWIN_CRT_FALSE SYSTEMSPEC LIBGCJTESTSPEC ZLIBSPEC ZLIBTESTSPEC X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS GTK_CAIRO_TRUE GTK_CAIRO_FALSE PKG_CONFIG CAIRO_CFLAGS CAIRO_LIBS PANGOFT2_CFLAGS PANGOFT2_LIBS extra_ldflags_libjava GCLIBS GCINCS GCDEPS GCSPEC JC1GCSPEC GCTESTSPEC USING_BOEHMGC_TRUE USING_BOEHMGC_FALSE USING_NOGC_TRUE USING_NOGC_FALSE THREADLIBS THREADINCS THREADDEPS THREADSPEC THREADLDFLAGS THREADCXXFLAGS USING_POSIX_THREADS_TRUE USING_POSIX_THREADS_FALSE USING_WIN32_THREADS_TRUE USING_WIN32_THREADS_FALSE USING_NO_THREADS_TRUE USING_NO_THREADS_FALSE HASH_SYNC_SPEC USING_GCC_TRUE USING_GCC_FALSE LIBICONV LTLIBICONV GTK_CFLAGS GTK_LIBS GLIB_CFLAGS GLIB_LIBS LIBART_CFLAGS LIBART_LIBS CLASSPATH_SEPARATOR ac_ct_GCJ ZLIBS SYS_ZLIBS ZINCS DIVIDESPEC CHECKREFSPEC EXCEPTIONSPEC BACKTRACESPEC IEEESPEC NATIVE_TRUE NATIVE_FALSE NEEDS_DATA_START_TRUE NEEDS_DATA_START_FALSE GCC_UNWIND_INCLUDE toolexecdir toolexecmainlibdir toolexeclibdir dbexecdir GCJVERSION gxx_include_dir libstdcxx_incdir ALLOCA PERL SYSDEP_SOURCES LD_START_STATIC_SPEC LD_FINISH_STATIC_SPEC here LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -3964,6 +3964,52 @@ else RANLIB="$ac_cv_prog_RANLIB" fi +for ac_prog in jar fastjar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_JAR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$JAR"; then + ac_cv_prog_JAR="$JAR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_JAR="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +JAR=$ac_cv_prog_JAR +if test -n "$JAR"; then + echo "$as_me:$LINENO: result: $JAR" >&5 +echo "${ECHO_T}$JAR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$JAR" && break +done +test -n "$JAR" || JAR="false" + +if test "$JAR" = false; then + { { echo "$as_me:$LINENO: error: jar program not found" >&5 +echo "$as_me: error: jar program not found" >&2;} + { (exit 1); exit 1; }; } +fi # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or @@ -4805,7 +4851,6 @@ case "${which_gcj}" in built) GCJ="$built_gcc_dir/gcj -B`${PWDCMD-pwd}`/ -B$built_gcc_dir/" GCJH='$(top_builddir)/$(MULTIBUILDTOP)../../$(host_subdir)/gcc/gcjh' - ZIP='$(top_builddir)/$(MULTIBUILDTOP)../../$(host_subdir)/fastjar/fastjar' ;; cross) if test "x${with_newlib}" = "xyes"; then @@ -4815,21 +4860,16 @@ case "${which_gcj}" in else GCJ="${target_noncanonical}-gcj -B`${PWDCMD-pwd}`/" fi - ZIP='$(target_noncanonical)-fastjar' GCJH='$(target_noncanonical)-gcjh' ;; path) GCJ="gcj -B`${PWDCMD-pwd}`/" - ## In this case, gcj is found outside the build tree. However, zip is - ## found in the build tree. - ZIP='$(top_builddir)/$(MULTIBUILDTOP)../$(COMPPATH)/fastjar/fastjar' GCJH=gcjh ;; esac - # Create it, so that compile/link tests don't fail test -f libgcj.spec || touch libgcj.spec @@ -5668,7 +5708,7 @@ test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic" case $host in *-*-irix6*) # Find out which ABI we are using. - echo '#line 5671 "configure"' > conftest.$ac_ext + echo '#line 5711 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -6671,7 +6711,7 @@ if test "${enable_sjlj_exceptions+set}" = set; then : else cat > conftest.$ac_ext << EOF -#line 6674 "configure" +#line 6714 "configure" struct S { ~S(); }; void bar(); void foo() @@ -17807,6 +17847,7 @@ s,@AR@,$AR,;t t s,@ac_ct_AR@,$ac_ct_AR,;t t s,@RANLIB@,$RANLIB,;t t s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@JAR@,$JAR,;t t s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t s,@MAINT@,$MAINT,;t t @@ -17823,7 +17864,6 @@ s,@GTK_AWT_FALSE@,$GTK_AWT_FALSE,;t t s,@QT_AWT_TRUE@,$QT_AWT_TRUE,;t t s,@QT_AWT_FALSE@,$QT_AWT_FALSE,;t t s,@GCJH@,$GCJH,;t t -s,@ZIP@,$ZIP,;t t s,@INCLTDL@,$INCLTDL,;t t s,@LIBLTDL@,$LIBLTDL,;t t s,@DIRLTDL@,$DIRLTDL,;t t diff --git a/libjava/configure.ac b/libjava/configure.ac index 113b9ba97c2..2731bf3fc37 100644 --- a/libjava/configure.ac +++ b/libjava/configure.ac @@ -116,6 +116,10 @@ AC_CHECK_TOOL(AS, as) AC_CHECK_TOOL(LD, ld) AC_CHECK_TOOL(AR, ar) AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_PROGS(JAR, [jar fastjar], false) +if test "$JAR" = false; then + AC_MSG_ERROR(jar program not found) +fi AC_PROG_INSTALL @@ -289,7 +293,6 @@ case "${which_gcj}" in built) GCJ="$built_gcc_dir/gcj -B`${PWDCMD-pwd}`/ -B$built_gcc_dir/" GCJH='$(top_builddir)/$(MULTIBUILDTOP)../../$(host_subdir)/gcc/gcjh' - ZIP='$(top_builddir)/$(MULTIBUILDTOP)../../$(host_subdir)/fastjar/fastjar' ;; cross) if test "x${with_newlib}" = "xyes"; then @@ -299,20 +302,15 @@ case "${which_gcj}" in else GCJ="${target_noncanonical}-gcj -B`${PWDCMD-pwd}`/" fi - ZIP='$(target_noncanonical)-fastjar' GCJH='$(target_noncanonical)-gcjh' ;; path) GCJ="gcj -B`${PWDCMD-pwd}`/" - ## In this case, gcj is found outside the build tree. However, zip is - ## found in the build tree. - ZIP='$(top_builddir)/$(MULTIBUILDTOP)../$(COMPPATH)/fastjar/fastjar' GCJH=gcjh ;; esac AC_SUBST(GCJH) -AC_SUBST(ZIP) # Create it, so that compile/link tests don't fail test -f libgcj.spec || touch libgcj.spec diff --git a/libjava/configure.host b/libjava/configure.host index 759001f0256..108f3a2c01f 100644 --- a/libjava/configure.host +++ b/libjava/configure.host @@ -260,6 +260,7 @@ EOF slow_pthread_self= ;; *-mingw*) + libgcj_flags="${libgcj_flags} -fno-omit-frame-pointer" # FIXME: win32_exception_handler( ) in win32.cc does not do the # right stuff yet w.r.t. SEH. Live with the following for now. can_unwind_signal=no diff --git a/libjava/gcj/Makefile.in b/libjava/gcj/Makefile.in index 9f4998cec6e..27e396bbfd4 100644 --- a/libjava/gcj/Makefile.in +++ b/libjava/gcj/Makefile.in @@ -138,6 +138,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTERPRETER = @INTERPRETER@ +JAR = @JAR@ JAVA_HOME = @JAVA_HOME@ JAVA_HOME_SET_FALSE = @JAVA_HOME_SET_FALSE@ JAVA_HOME_SET_TRUE = @JAVA_HOME_SET_TRUE@ @@ -229,7 +230,6 @@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZINCS = @ZINCS@ -ZIP = @ZIP@ ZLIBS = @ZLIBS@ ZLIBSPEC = @ZLIBSPEC@ ZLIBTESTSPEC = @ZLIBTESTSPEC@ diff --git a/libjava/gnu/java/lang/natMainThread.cc b/libjava/gnu/java/lang/natMainThread.cc index 95626eb3a71..99d5f95ffde 100644 --- a/libjava/gnu/java/lang/natMainThread.cc +++ b/libjava/gnu/java/lang/natMainThread.cc @@ -57,6 +57,5 @@ gnu::java::lang::MainThread::call_main (void) _Jv_ThreadWait (); int status = (int) ::java::lang::ThreadGroup::had_uncaught_exception; - ::java::lang::Runtime *runtime = ::java::lang::Runtime::getRuntime (); - runtime->exit (status); + ::java::lang::Runtime::exitNoChecksAccessor (status); } diff --git a/libjava/gnu/java/rmi/rmic/Compile_gcj.java b/libjava/gnu/java/rmi/rmic/Compile_gcj.java index e55b2c3de52..e22611bb3ad 100644 --- a/libjava/gnu/java/rmi/rmic/Compile_gcj.java +++ b/libjava/gnu/java/rmi/rmic/Compile_gcj.java @@ -49,6 +49,7 @@ public class Compile_gcj extends CompilerProcess public String[] computeArguments (String filename) { return computeTypicalArguments(COMPILER_ARGS, + getClasspath(), getDestination(), filename); } diff --git a/libjava/gnu/java/rmi/rmic/Compile_jikes.java b/libjava/gnu/java/rmi/rmic/Compile_jikes.java index 2caf39823fb..e70b50c910b 100644 --- a/libjava/gnu/java/rmi/rmic/Compile_jikes.java +++ b/libjava/gnu/java/rmi/rmic/Compile_jikes.java @@ -50,6 +50,7 @@ public class Compile_jikes extends CompilerProcess public String[] computeArguments (String filename) { return computeTypicalArguments(COMPILER_ARGS, + getClasspath(), getDestination(), filename); } diff --git a/libjava/gnu/java/rmi/rmic/Compile_kjc.java b/libjava/gnu/java/rmi/rmic/Compile_kjc.java index ce915ad6c4c..79f1a845c36 100644 --- a/libjava/gnu/java/rmi/rmic/Compile_kjc.java +++ b/libjava/gnu/java/rmi/rmic/Compile_kjc.java @@ -50,6 +50,7 @@ public class Compile_kjc extends CompilerProcess public String[] computeArguments (String filename) { return computeTypicalArguments(COMPILER_ARGS, + getClasspath(), getDestination(), filename); } diff --git a/libjava/gnu/java/rmi/rmic/Compiler.java b/libjava/gnu/java/rmi/rmic/Compiler.java index d6038043d91..fc1f8464fa6 100644 --- a/libjava/gnu/java/rmi/rmic/Compiler.java +++ b/libjava/gnu/java/rmi/rmic/Compiler.java @@ -82,12 +82,27 @@ public abstract class Compiler this.dest = dest; } + /** Get the classpath for compilation. */ + public String getClasspath () + { + return classpath; + } + + /** Set the classpath for compilation. */ + public void setClasspath (String classpath) + { + this.classpath = classpath; + } + /** Compile the given file. Throws exception on error. */ public abstract void compile (String name) throws Exception; /** The destination directory, or null if none set. */ protected String dest; + /** The classpath directory, or null if none set. */ + private String classpath; + /** Class prefix used when trying to find instance. */ private static final String classPrefix = "gnu.java.rmi.rmic.Compile_"; } diff --git a/libjava/gnu/java/rmi/rmic/CompilerProcess.java b/libjava/gnu/java/rmi/rmic/CompilerProcess.java index 09f8d9c07b4..d7b29987663 100644 --- a/libjava/gnu/java/rmi/rmic/CompilerProcess.java +++ b/libjava/gnu/java/rmi/rmic/CompilerProcess.java @@ -59,11 +59,27 @@ public abstract class CompilerProcess extends Compiler public static String[] computeTypicalArguments(String[] compilerArgs, String destination, String filename) { + return computeTypicalArguments(compilerArgs, null, destination, filename); + } + /** + * This is used to compute the command line for the process. + * Most compilers typically arrange their arguments as in + * <compiler name and arguments> <optional destination> <filename>. + * This method builds an argument array out that. It should be used + * to define computeArguments for those compilers that follow the + * argument convention described above. + */ + public static String[] computeTypicalArguments(String[] compilerArgs, + String classpath, + String destination, + String filename) + { /* length of compiler specific arguments */ - final int len = compilerArgs.length; + int len = compilerArgs.length; /* length of returned array of arguments */ - final int arglen = len + (destination == null ? 0 : 2) + 1; + final int arglen = len + (classpath == null ? 0 : 2) + + (destination == null ? 0 : 2) + 1; /* Allocate String array for computed arguments. */ String [] args = new String[arglen]; @@ -71,11 +87,18 @@ public abstract class CompilerProcess extends Compiler /* Fill in compiler arguments. */ System.arraycopy(compilerArgs, 0, args, 0, len); + /* Fill in classpath argument if necessary. */ + if (classpath != null) + { + args[len++] = "-classpath"; + args[len++] = classpath; + } + /* Fill in destination argument if necessary. */ if (destination != null) { - args[len] = "-d"; - args[len + 1] = destination; + args[len++] = "-d"; + args[len++] = destination; } /* Fill in filename */ diff --git a/libjava/gnu/java/rmi/rmic/RMIC.java b/libjava/gnu/java/rmi/rmic/RMIC.java index 27cd99bcded..33ec9935b62 100644 --- a/libjava/gnu/java/rmi/rmic/RMIC.java +++ b/libjava/gnu/java/rmi/rmic/RMIC.java @@ -46,11 +46,18 @@ import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.rmi.Remote; import java.rmi.RemoteException; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.Iterator; +import java.util.List; import java.util.Set; +import java.util.StringTokenizer; public class RMIC @@ -69,11 +76,15 @@ public class RMIC private Class clazz; private String classname; private String fullclassname; + private String fullstubname; + private String fullskelname; private MethodRef[] remotemethods; private String stubname; private String skelname; + private ClassLoader loader; + private String classpath; private int errorCount = 0; - private Class mRemoteInterface; + private List mRemoteInterfaces; public RMIC(String[] a) { @@ -115,10 +126,23 @@ public class RMIC return (true); } - private boolean processClass(String classname) throws Exception + private boolean processClass(String cls) throws Exception { + // reset class specific vars + clazz = null; + classname = null; + fullclassname = null; + remotemethods = null; + stubname = null; + fullstubname = null; + skelname = null; + fullskelname = null; + mRemoteInterfaces = new ArrayList(); + errorCount = 0; - analyzeClass(classname); + + analyzeClass(cls); + if (errorCount > 0) System.exit(1); generateStub(); @@ -126,16 +150,15 @@ public class RMIC generateSkel(); if (compile) { - compile(stubname.replace('.', File.separatorChar) + ".java"); + compile(fullstubname); if (need11Stubs) - compile(skelname.replace('.', File.separatorChar) + ".java"); + compile(fullskelname); } if (! keep) { - (new File(stubname.replace('.', File.separatorChar) + ".java")).delete(); + (new File(fullstubname)).delete(); if (need11Stubs) - (new File(skelname.replace('.', File.separatorChar) + ".java")) - .delete(); + (new File(fullskelname)).delete(); } return (true); } @@ -151,40 +174,8 @@ public class RMIC classname = cname; fullclassname = cname; - HashSet rmeths = new HashSet(); findClass(); - - // get the remote interface - mRemoteInterface = getRemoteInterface(clazz); - if (mRemoteInterface == null) - return; - if (verbose) - System.out.println("[implements " + mRemoteInterface.getName() + "]"); - - // check if the methods of the remote interface declare RemoteExceptions - Method[] meths = mRemoteInterface.getDeclaredMethods(); - for (int i = 0; i < meths.length; i++) - { - Class[] exceptions = meths[i].getExceptionTypes(); - int index = 0; - for (; index < exceptions.length; index++) - { - if (exceptions[index].equals(RemoteException.class)) - break; - } - if (index < exceptions.length) - rmeths.add(meths[i]); - else - logError("Method " + meths[i] - + " does not throw a java.rmi.RemoteException"); - } - - // Convert into a MethodRef array and sort them - remotemethods = new MethodRef[rmeths.size()]; - int c = 0; - for (Iterator i = rmeths.iterator(); i.hasNext();) - remotemethods[c++] = new MethodRef((Method) i.next()); - Arrays.sort(remotemethods); + findRemoteMethods(); } public Exception getException() @@ -194,21 +185,42 @@ public class RMIC private void findClass() throws ClassNotFoundException { - clazz = - Class.forName(fullclassname, true, ClassLoader.getSystemClassLoader()); + try + { + ClassLoader cl = (loader == null + ? ClassLoader.getSystemClassLoader() + : loader); + clazz = Class.forName(fullclassname, false, cl); + } + catch (ClassNotFoundException cnfe) + { + System.err.println(fullclassname + " not found in " + classpath); + throw new RuntimeException(cnfe); + } + + if (! Remote.class.isAssignableFrom(clazz)) + { + logError("Class " + clazz.getName() + " is not a remote object. " + + "It does not implement an interface that is a " + + "java.rmi.Remote-interface."); + throw new RuntimeException + ("Class " + clazz.getName() + " is not a remote object. " + + "It does not implement an interface that is a " + + "java.rmi.Remote-interface."); + } } private void generateStub() throws IOException { stubname = fullclassname + "_Stub"; String stubclassname = classname + "_Stub"; + fullstubname = (destination == null ? "" : destination + File.separator) + + stubname.replace('.', File.separatorChar) + ".java"; + File file = new File(fullstubname); + if (file.getParentFile() != null) + file.getParentFile().mkdirs(); ctrl = - new TabbedWriter(new FileWriter((destination == null ? "" - : destination - + File.separator) - + stubname.replace('.', - File.separatorChar) - + ".java")); + new TabbedWriter(new FileWriter(file)); out = new PrintWriter(ctrl); if (verbose) @@ -230,16 +242,7 @@ public class RMIC // Output interfaces we implement out.print("implements "); - /* Scan implemented interfaces, and only print remote interfaces. */ - Class[] ifaces = clazz.getInterfaces(); - Set remoteIfaces = new HashSet(); - for (int i = 0; i < ifaces.length; i++) - { - Class iface = ifaces[i]; - if (java.rmi.Remote.class.isAssignableFrom(iface)) - remoteIfaces.add(iface); - } - Iterator iter = remoteIfaces.iterator(); + Iterator iter = mRemoteInterfaces.iterator(); while (iter.hasNext()) { /* Print remote interface. */ @@ -328,7 +331,7 @@ public class RMIC { Method m = remotemethods[i].meth; out.print("$method_" + m.getName() + "_" + i + " = "); - out.print(mRemoteInterface.getName() + ".class.getMethod(\"" + out.print(m.getDeclaringClass().getName() + ".class.getMethod(\"" + m.getName() + "\""); out.print(", new java.lang.Class[] {"); // Output signature @@ -631,13 +634,13 @@ public class RMIC { skelname = fullclassname + "_Skel"; String skelclassname = classname + "_Skel"; + fullskelname = (destination == null ? "" : destination + File.separator) + + skelname.replace('.', File.separatorChar) + ".java"; + File file = new File(fullskelname); + if (file.getParentFile() != null) + file.getParentFile().mkdirs(); ctrl = - new TabbedWriter(new FileWriter((destination == null ? "" - : destination - + File.separator) - + skelname.replace('.', - File.separatorChar) - + ".java")); + new TabbedWriter(new FileWriter(file)); out = new PrintWriter(ctrl); if (verbose) @@ -882,6 +885,8 @@ public class RMIC if (verbose) System.out.println("[Compiling class " + name + "]"); comp.setDestination(destination); + if (classpath != null) + comp.setClasspath(classpath); comp.compile(name); } @@ -970,7 +975,27 @@ public class RMIC else if (arg.equals("-nocompile")) compile = false; else if (arg.equals("-classpath")) - next++; + { + classpath = args[next]; + next++; + StringTokenizer st = + new StringTokenizer(classpath, File.pathSeparator); + URL[] u = new URL[st.countTokens()]; + for (int i = 0; i < u.length; i++) + { + String path = st.nextToken(); + File f = new File(path); + try + { + u[i] = f.toURL(); + } + catch (MalformedURLException mue) + { + error("malformed classpath component " + path); + } + } + loader = new URLClassLoader(u); + } else if (arg.equals("-help")) usage(); else if (arg.equals("-version")) @@ -996,22 +1021,75 @@ public class RMIC } } -/** - * Looks for the java.rmi.Remote interface that that is implemented by theClazz. - * @param theClazz the class to look in - * @return the Remote interface of theClazz or null if theClazz does not implement a Remote interface - */ - private Class getRemoteInterface(Class theClazz) - { - Class[] interfaces = theClazz.getInterfaces(); - for (int i = 0; i < interfaces.length; i++) + private void findRemoteMethods() { + List rmeths = new ArrayList(); + for (Class cur = clazz; cur != null; cur = cur.getSuperclass()) + { + Class[] interfaces = cur.getInterfaces(); + for (int i = 0; i < interfaces.length; i++) + { + if (java.rmi.Remote.class.isAssignableFrom(interfaces[i])) + { + Class remoteInterface = interfaces[i]; + if (verbose) + System.out.println + ("[implements " + remoteInterface.getName() + "]"); + + // check if the methods declare RemoteExceptions + Method[] meths = remoteInterface.getMethods(); + for (int j = 0; j < meths.length; j++) + { + Method m = meths[j]; + Class[] exs = m.getExceptionTypes(); + + boolean throwsRemote = false; + for (int k = 0; k < exs.length; k++) + { + if (exs[k].isAssignableFrom(RemoteException.class)) + throwsRemote = true; + } + + if (! throwsRemote) + { + logError("Method " + m + + " does not throw a RemoteException"); + continue; + } + + rmeths.add(m); + } + + mRemoteInterfaces.add(remoteInterface); + } + } + } + + // intersect exceptions for doubly inherited methods + boolean[] skip = new boolean[rmeths.size()]; + for (int i = 0; i < skip.length; i++) + skip[i] = false; + List methrefs = new ArrayList(); + for (int i = 0; i < rmeths.size(); i++) { - if (java.rmi.Remote.class.isAssignableFrom(interfaces[i])) - return interfaces[i]; + if (skip[i]) continue; + Method current = (Method) rmeths.get(i); + MethodRef ref = new MethodRef(current); + for (int j = i+1; j < rmeths.size(); j++) + { + Method other = (Method) rmeths.get(j); + if (ref.isMatch(other)) + { + ref.intersectExceptions(other); + skip[j] = true; + } + } + methrefs.add(ref); } - logError("Class " + theClazz.getName() - + " is not a remote object. It does not implement an interface that is a java.rmi.Remote-interface."); - return null; + + // Convert into a MethodRef array and sort them + remotemethods = (MethodRef[]) + methrefs.toArray(new MethodRef[methrefs.size()]); + Arrays.sort(remotemethods); } /** @@ -1054,25 +1132,94 @@ public class RMIC System.exit(0); } - static class MethodRef + private static class MethodRef implements Comparable { Method meth; - String sig; long hash; + List exceptions; + private String sig; MethodRef(Method m) { meth = m; - // We match on the name - but what about overloading? - XXX - sig = m.getName(); + sig = m.getName(); // XXX should be full signature used to compute hash hash = RMIHashes.getMethodHash(m); + // add exceptions removing subclasses + exceptions = removeSubclasses(m.getExceptionTypes()); } public int compareTo(Object obj) { MethodRef that = (MethodRef) obj; - return (this.sig.compareTo(that.sig)); + int name = this.meth.getName().compareTo(that.meth.getName()); + if (name == 0) { + return this.sig.compareTo(that.sig); + } + return name; + } + + public boolean isMatch(Method m) + { + if (!meth.getName().equals(m.getName())) + return false; + + Class[] params1 = meth.getParameterTypes(); + Class[] params2 = m.getParameterTypes(); + if (params1.length != params2.length) + return false; + + for (int i = 0; i < params1.length; i++) + if (!params1[i].equals(params2[i])) return false; + + return true; + } + + private static List removeSubclasses(Class[] classes) + { + List list = new ArrayList(); + for (int i = 0; i < classes.length; i++) + { + Class candidate = classes[i]; + boolean add = true; + for (int j = 0; j < classes.length; j++) + { + if (classes[j].equals(candidate)) + continue; + else if (classes[j].isAssignableFrom(candidate)) + add = false; + } + if (add) list.add(candidate); + } + + return list; + } + + public void intersectExceptions(Method m) + { + List incoming = removeSubclasses(m.getExceptionTypes()); + + List updated = new ArrayList(); + + for (int i = 0; i < exceptions.size(); i++) + { + Class outer = (Class) exceptions.get(i); + boolean addOuter = false; + for (int j = 0; j < incoming.size(); j++) + { + Class inner = (Class) incoming.get(j); + + if (inner.equals(outer) || inner.isAssignableFrom(outer)) + addOuter = true; + else if (outer.isAssignableFrom(inner)) + updated.add(inner); + } + + if (addOuter) + updated.add(outer); + } + + exceptions = updated; } } } diff --git a/libjava/include/Makefile.in b/libjava/include/Makefile.in index f5bea2fa682..ca90aaa2b0d 100644 --- a/libjava/include/Makefile.in +++ b/libjava/include/Makefile.in @@ -137,6 +137,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTERPRETER = @INTERPRETER@ +JAR = @JAR@ JAVA_HOME = @JAVA_HOME@ JAVA_HOME_SET_FALSE = @JAVA_HOME_SET_FALSE@ JAVA_HOME_SET_TRUE = @JAVA_HOME_SET_TRUE@ @@ -228,7 +229,6 @@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZINCS = @ZINCS@ -ZIP = @ZIP@ ZLIBS = @ZLIBS@ ZLIBSPEC = @ZLIBSPEC@ ZLIBTESTSPEC = @ZLIBTESTSPEC@ diff --git a/libjava/include/java-chartables.h b/libjava/include/java-chartables.h dissimilarity index 91% index e2a34ad88a2..d882c675e98 100644 --- a/libjava/include/java-chartables.h +++ b/libjava/include/java-chartables.h @@ -1,987 +1,1617 @@ -/* java-chartables.h -- Character tables for java.lang.Character -*- c++ -*- - Copyright (C) 2002 Free Software Foundation, Inc. - *** This file is generated by scripts/MakeCharTables.java *** - -This file is part of GNU Classpath. - -GNU Classpath 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. - -GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -#ifndef __JAVA_CHARTABLES_H__ -#define __JAVA_CHARTABLES_H__ - -// These tables are automatically generated by scripts/MakeCharTables.java. -// This is in turn parsing gnu.java.lang.CharData, which is generated by -// scripts/unicode-muncher.pl. The Unicode data comes from -// www.unicode.org; this header is based on -// gnu/gcj/convert/UnicodeData-3.0.0.txt. JDK 1.4 uses Unicode version 3.0.0. -// DO NOT EDIT the tables. Instead, fix the upstream scripts and run -// them again. - -// The data is stored in C style arrays of the appropriate CNI types, to -// guarantee that the data is constant and non-relocatable. The field -// blocks stores the offset of a block of 2 -// characters within data. The data field, in turn, stores -// information about each character in the low order bits, and an offset -// into the attribute tables upper, lower, -// numValue, and direction. Notice that the -// attribute tables are much smaller than 0xffff entries; as many characters -// in Unicode share common attributes. Finally, there is a listing for -// title exceptions (most characters just have the same title -// case as upper case). - -// This file should only be included by natCharacter.cc - -/** - * The character shift amount to look up the block offset. In other words, - * (char) (blocks[ch >> SHIFT] + ch) is the index where - * ch is described in data. - */ -#define SHIFT 5 - -/** - * The mapping of character blocks to their location in data. - * Each entry has been adjusted so that a modulo 16 sum with the desired - * character gives the actual index into data. - */ -static const jchar blocks[] = { - 450, 450, 449, 300, 299, 416, 504, 732, 607, 750, - 533, 838, 732, 806, 700, 534, 351, 724, 886, 886, - 886, 873, 65167, 836, 65413, 65381, 64949, 64929, 27, 708, - 28, 71, 65192, 65420, 565, 65279, 26, 65215, 38, 64288, - 65064, 275, 260, 64353, 64346, 267, 265, 254, 65288, 553, - 606, 455, 508, 476, 64582, 553, 65063, 64341, 361, 64456, - 252, 259, 64360, 64328, 64296, 64264, 64232, 64200, 64168, 64136, - 64104, 64072, 101, 80, 171, 313, 65038, 99, 341, 424, - 63081, 297, 296, 63775, 65110, 264, 263, 64192, 64654, 65197, - 198, 64679, 64405, 62589, 159, 64279, 65056, 64808, 64303, 59, - 62393, 65111, 64718, 65467, 62265, 64152, 65419, 65339, 64084, 63459, - 65323, 64215, 64361, 64570, 65253, 62664, 64688, 64136, 64959, 62536, - 65093, 64711, 65103, 63473, 63253, 62184, 64927, 62280, 63850, 64514, - 64919, 62152, 62120, 62649, 62643, 61291, 63594, 63562, 64600, 63498, - 63466, 64527, 63402, 61084, 64400, 63306, 63482, 63242, 63434, 63378, - 62577, 62674, 63282, 63050, 62465, 63053, 61352, 62922, 62890, 60577, - 62825, 62794, 62762, 62730, 62698, 62666, 62634, 62602, 62570, 62538, - 62506, 62474, 62442, 62410, 62378, 62346, 62314, 62282, 62250, 62089, - 63351, 62154, 62122, 63287, 60456, 60424, 60392, 60360, 61930, 62626, - 62789, 60870, 62167, 61770, 59629, 59422, 61674, 62871, 60008, 59976, - 59944, 59912, 59880, 59848, 59816, 59784, 59752, 59720, 59688, 59656, - 59624, 59592, 59560, 59528, 59496, 59464, 59432, 59400, 59368, 59336, - 59304, 59272, 59240, 59208, 59176, 59144, 59112, 59080, 59048, 59016, - 58984, 58952, 58920, 58888, 58856, 58824, 58792, 58760, 58728, 58696, - 58719, 58687, 58655, 58623, 61399, 58559, 58527, 58501, 61319, 61271, - 61271, 61271, 61271, 61255, 57773, 61254, 61254, 61254, 57824, 58333, - 61190, 59865, 60395, 57924, 61140, 61285, 57845, 61253, 61161, 61308, - 61044, 61296, 61309, 61304, 61073, 61395, 61053, 60965, 60967, 61285, - 61405, 61078, 61395, 61409, 61289, 57224, 57192, 57160, 60715, 60733, - 60697, 61212, 61192, 60743, 60733, 60723, 60459, 60427, 60395, 60363, - 60366, 60028, 60265, 60268, 59830, 60171, 60139, 59881, 56488, 56456, - 56424, 56392, 59664, 59939, 60248, 60239, 60229, 60133, 56168, 56136, - 59691, 59659, 59627, 59595, 59563, 59531, 59499, 59467, 55848, 55816, - 55784, 55752, 55720, 55688, 55656, 55624, 55592, 55560, 55528, 55496, - 55464, 55432, 55400, 55368, 55336, 55304, 55272, 55240, 55208, 55176, - 55144, 55112, 55080, 55048, 55016, 54984, 54952, 54920, 54888, 54856, - 54824, 54792, 54760, 54728, 54696, 54664, 54632, 54600, 54568, 54536, - 54504, 54472, 58033, 57995, 57963, 57968, 57899, 57867, 57835, 57803, - 57771, 57739, 57742, 56719, 58280, 57299, 55593, 55562, 58184, 55497, - 55466, 56535, 56498, 54913, 55338, 55306, 57960, 52958, 53608, 53576, - 57622, 57577, 57803, 57527, 57527, 57694, 57111, 57396, 57363, 57331, - 57299, 56940, 57235, 57203, 57173, 57140, 54634, 54602, 54570, 54538, - 54506, 54474, 54442, 54410, 54378, 54346, 54314, 54282, 54250, 54218, - 54186, 54154, 54122, 54090, 54058, 54026, 53994, 53962, 53930, 53898, - 53866, 53834, 53802, 53770, 53738, 53706, 53674, 53642, 53610, 53578, - 53546, 53514, 53482, 53450, 53418, 53386, 53354, 53322, 53290, 53258, - 53226, 53194, 53162, 53130, 53098, 53066, 53034, 53002, 52970, 52938, - 52906, 52874, 52842, 52810, 52778, 52746, 52714, 52682, 52650, 52618, - 52586, 52554, 52522, 52490, 52458, 52426, 52394, 52362, 52330, 52298, - 52266, 52234, 52202, 52170, 52138, 52106, 52074, 52042, 52010, 51978, - 51946, 51914, 51882, 51850, 51818, 51786, 51754, 51722, 51690, 51658, - 51626, 51594, 51562, 51530, 51498, 51466, 51434, 51402, 51370, 51338, - 51306, 51274, 51242, 51210, 51178, 51146, 51114, 51082, 51050, 51018, - 50986, 50954, 50922, 50890, 50858, 50826, 50794, 50762, 50730, 50698, - 50666, 50634, 50602, 50570, 50538, 50506, 50474, 50442, 50410, 50378, - 50346, 50314, 50282, 50250, 50218, 50186, 50154, 50122, 50090, 50058, - 50026, 49994, 49962, 49930, 49898, 49866, 49834, 49802, 49770, 49738, - 49706, 49674, 49642, 49610, 49578, 49546, 49514, 49482, 49450, 49418, - 49386, 49354, 49322, 49290, 49258, 49226, 49194, 49162, 49130, 49098, - 49066, 49034, 49002, 48970, 48938, 48906, 48874, 48842, 48810, 48778, - 48746, 48714, 48682, 48650, 48618, 48586, 48554, 48522, 48490, 48458, - 48426, 48394, 48362, 48330, 48298, 48266, 48234, 48202, 48170, 48138, - 48106, 45792, 46440, 46408, 47978, 47946, 47914, 47882, 47850, 47818, - 47786, 47754, 47722, 47690, 47658, 47626, 47594, 47562, 47530, 47498, - 47466, 47434, 47402, 47370, 47338, 47306, 47274, 47242, 47210, 47178, - 47146, 47114, 47082, 47050, 47018, 46986, 46954, 46922, 46890, 46858, - 46826, 46794, 46762, 46730, 46698, 46666, 46634, 46602, 46570, 46538, - 46506, 46474, 46442, 46410, 46378, 46346, 46314, 46282, 46250, 46218, - 46186, 46154, 46122, 46090, 46058, 46026, 45994, 45962, 45930, 45898, - 45866, 45834, 45802, 45770, 45738, 45706, 45674, 45642, 45610, 45578, - 45546, 45514, 45482, 45450, 45418, 45386, 45354, 45322, 45290, 45258, - 45226, 45194, 45162, 45130, 45098, 45066, 45034, 45002, 44970, 44938, - 44906, 44874, 44842, 44810, 44778, 44746, 44714, 44682, 44650, 44618, - 44586, 44554, 44522, 44490, 44458, 44426, 44394, 44362, 44330, 44298, - 44266, 44234, 44202, 44170, 44138, 44106, 44074, 44042, 44010, 43978, - 43946, 43914, 43882, 43850, 43818, 43786, 43754, 43722, 43690, 43658, - 43626, 43594, 43562, 43530, 43498, 43466, 43434, 43402, 43370, 43338, - 43306, 43274, 43242, 43210, 43178, 43146, 43114, 43082, 43050, 43018, - 42986, 42954, 42922, 42890, 42858, 42826, 42794, 42762, 42730, 42698, - 42666, 42634, 42602, 42570, 42538, 42506, 42474, 42442, 42410, 42378, - 42346, 42314, 42282, 42250, 42218, 42186, 42154, 42122, 42090, 42058, - 42026, 41994, 41962, 41930, 41898, 41866, 41834, 41802, 41770, 41738, - 41706, 41674, 41642, 41610, 41578, 41546, 41514, 41482, 41450, 41418, - 41386, 41354, 41322, 41290, 41258, 41226, 41194, 41162, 41130, 41098, - 41066, 41034, 41002, 40970, 40938, 40906, 40874, 40842, 40810, 40778, - 40746, 40714, 40682, 40650, 40618, 40586, 40554, 40522, 40490, 40458, - 40426, 40394, 40362, 40330, 40298, 40266, 40234, 40202, 40170, 40138, - 40106, 40074, 40042, 40010, 39978, 39946, 39914, 39882, 39850, 39818, - 39786, 39754, 39722, 39690, 39658, 39626, 39594, 39562, 39530, 39498, - 39466, 39434, 39402, 39370, 39338, 39306, 39274, 39242, 39210, 39178, - 39146, 39114, 39082, 39050, 39018, 38986, 38954, 38922, 38890, 38858, - 38826, 38794, 38762, 38730, 38698, 38666, 38634, 38602, 38570, 38538, - 38506, 38474, 38442, 38410, 38378, 38346, 38314, 38282, 38250, 38218, - 38186, 38154, 38122, 38090, 38058, 38026, 37994, 37962, 37930, 37898, - 37866, 37834, 37802, 37770, 37738, 37706, 37674, 37642, 37610, 37578, - 37546, 37514, 37482, 37450, 37418, 37386, 37354, 37322, 37290, 37258, - 37226, 37194, 37162, 37130, 37098, 37066, 37034, 37002, 36970, 36938, - 36906, 36874, 36842, 36810, 36778, 36746, 36714, 36682, 36650, 36618, - 36586, 36554, 36522, 36490, 36458, 36426, 36394, 36362, 36330, 36298, - 36266, 36234, 36202, 36170, 36138, 36106, 36074, 36042, 36010, 35978, - 35946, 35914, 35882, 35850, 35818, 35786, 35754, 35722, 35690, 35658, - 35626, 35594, 35562, 35530, 35498, 35466, 35434, 35402, 35370, 35338, - 35306, 35274, 35242, 35210, 35178, 35146, 35114, 35082, 35050, 35018, - 34986, 34954, 34922, 34890, 34858, 34826, 34794, 34762, 34730, 34698, - 34666, 34634, 34602, 34570, 34538, 34506, 34474, 34442, 34410, 34378, - 34346, 34314, 34282, 34250, 34218, 34186, 34154, 34122, 34090, 34058, - 34026, 33994, 33962, 33930, 33898, 33866, 33834, 33802, 33770, 33738, - 33706, 33674, 33642, 33610, 33578, 33546, 33514, 33482, 33450, 33418, - 33386, 33354, 33322, 33290, 33258, 33226, 33194, 33162, 33130, 33098, - 33066, 33034, 33002, 32970, 32938, 32906, 32874, 32842, 32810, 32778, - 32746, 32714, 32682, 32650, 32618, 32586, 32554, 32522, 32490, 32458, - 32426, 32394, 32362, 32330, 32298, 32266, 32234, 32202, 32170, 32138, - 32106, 32074, 32042, 32010, 31978, 31946, 31914, 31882, 31850, 31818, - 31786, 31754, 31722, 31690, 31658, 31626, 31594, 31562, 31530, 31498, - 31466, 31434, 31402, 31370, 31338, 31306, 31274, 31242, 31210, 31178, - 31146, 31114, 31082, 31050, 31018, 30986, 30954, 30922, 30890, 30858, - 30826, 30794, 30762, 30730, 30698, 30666, 30634, 30602, 30570, 30538, - 30506, 30474, 30442, 30410, 30378, 30346, 30314, 30282, 30250, 30218, - 30186, 30154, 30122, 30090, 30058, 30026, 29994, 29962, 29930, 29898, - 29866, 29834, 29802, 29770, 29738, 29706, 29674, 29642, 29610, 29578, - 29546, 29514, 29482, 29450, 29418, 29386, 29354, 29322, 29290, 29258, - 29226, 29194, 29162, 29130, 29098, 29066, 29034, 29002, 28970, 28938, - 28906, 28874, 28842, 28810, 28778, 28746, 28714, 28682, 28650, 28618, - 28586, 28554, 28522, 28490, 28458, 28426, 28394, 28362, 28330, 28298, - 28266, 28234, 28202, 28170, 28138, 28106, 28074, 28042, 28010, 27978, - 27946, 27914, 27882, 27850, 27818, 27786, 27754, 27722, 27690, 27658, - 27626, 27594, 27562, 27530, 27498, 27466, 27434, 27402, 27370, 27338, - 27306, 27274, 27242, 27210, 27178, 27146, 27114, 24816, 25448, 25416, - 26986, 26954, 26922, 26890, 26858, 26826, 26794, 26762, 26730, 26698, - 26666, 26634, 26602, 26570, 26538, 26506, 26474, 26442, 26410, 26378, - 26346, 26314, 26282, 26250, 26218, 26186, 26154, 26122, 26090, 26058, - 26026, 25994, 25962, 25930, 25898, 25866, 27430, 28129, 28316, 24136, - 24104, 24072, 24040, 24008, 23976, 23944, 23912, 23880, 23848, 23816, - 23784, 23752, 23720, 23688, 23656, 23624, 23592, 23560, 23528, 23496, - 23464, 23432, 23400, 23368, 23336, 23304, 23272, 23240, 23208, 23176, - 23144, 23112, 23080, 23048, 23016, 22984, 22952, 22920, 22888, 22856, - 22824, 22792, 22760, 22728, 22696, 22664, 22632, 22600, 22568, 22536, - 22504, 22472, 22440, 22408, 22376, 22344, 23914, 23882, 23850, 23818, - 23786, 23754, 23722, 23690, 23658, 23626, 23594, 23562, 23530, 23498, - 23466, 23434, 23402, 23370, 23338, 23306, 23274, 23242, 23210, 23178, - 23146, 23114, 23082, 23050, 23018, 22986, 22954, 22922, 22890, 22858, - 22826, 22794, 22762, 22730, 22698, 22666, 22634, 22602, 22570, 22538, - 22506, 22474, 22442, 22410, 22378, 22346, 22314, 22282, 22250, 22218, - 22186, 22154, 22122, 22090, 22058, 22026, 21994, 21962, 21930, 21898, - 21866, 21834, 21802, 21770, 21738, 21706, 21674, 21642, 21610, 21578, - 21546, 21514, 21482, 21450, 21418, 21386, 21354, 21322, 21290, 21258, - 21226, 21194, 21162, 21130, 21098, 21066, 21034, 21002, 20970, 20938, - 20906, 20874, 20842, 20810, 20778, 20746, 20714, 20682, 20650, 20618, - 20586, 20554, 20522, 20490, 20458, 20426, 20394, 20362, 20330, 20298, - 20266, 20234, 20202, 20170, 20138, 20106, 20074, 20042, 20010, 19978, - 19946, 19914, 19882, 19850, 19818, 19786, 19754, 19722, 19690, 19658, - 19626, 19594, 19562, 19530, 19498, 19466, 19434, 19402, 19370, 19338, - 19306, 19274, 19242, 19210, 19178, 19146, 19114, 19082, 19050, 19018, - 18986, 18954, 18922, 18890, 18858, 18826, 18794, 18762, 18730, 18698, - 18666, 18634, 18602, 18570, 18538, 18506, 18474, 18442, 18410, 18378, - 18346, 18314, 18282, 18250, 18218, 18186, 18154, 18122, 18090, 18058, - 18026, 17994, 17962, 17930, 17898, 17866, 17834, 17802, 17770, 17738, - 17706, 17674, 17642, 17610, 17578, 17546, 17514, 17482, 17450, 17418, - 17386, 17354, 17322, 17290, 17258, 17226, 17194, 17162, 17130, 17098, - 17066, 17034, 17002, 16970, 16938, 16906, 16874, 16842, 16810, 16778, - 16746, 16714, 16682, 16650, 16618, 16586, 16554, 16522, 16490, 16458, - 16426, 16394, 16362, 16330, 16298, 16266, 16234, 16202, 16170, 16138, - 16106, 16074, 16042, 16010, 15978, 15946, 15914, 15882, 15850, 15818, - 15786, 15754, 15722, 15690, 15658, 15626, 15594, 15562, 15530, 15498, - 15466, 15434, 15402, 15370, 15338, 15306, 15274, 15242, 15210, 15178, - 15146, 15114, 15082, 15050, 15018, 14986, 14954, 14922, 14890, 14858, - 14826, 14794, 14762, 14730, 14698, 14666, 14634, 14602, 14570, 14538, - 14506, 14474, 14442, 14410, 14378, 14346, 14314, 14282, 14250, 14218, - 14186, 14154, 14122, 14090, 14058, 14026, 13994, 13962, 13930, 13898, - 13866, 13834, 13802, 13770, 13738, 13706, 13674, 13642, 13610, 13578, - 13546, 13514, 13482, 13450, 13418, 13386, 13354, 13322, 13290, 13258, - 13226, 13194, 13162, 13130, 13098, 13066, 13034, 13002, 12970, 12938, - 12906, 12874, 12842, 12810, 12778, 10482, 11112, 11080, 15403, 15371, - 15339, 15307, 15275, 15243, 15211, 15179, 15147, 15115, 15083, 15051, - 15019, 14987, 14955, 14923, 14891, 14859, 14827, 14795, 14763, 14731, - 14699, 14667, 14635, 14603, 14571, 14539, 14507, 14475, 14443, 14411, - 14379, 14347, 14315, 14283, 14251, 14219, 14187, 14155, 14123, 14091, - 14059, 14027, 13995, 13963, 13931, 13899, 13867, 13835, 13803, 13771, - 13739, 13707, 13675, 13643, 13611, 13579, 13547, 13515, 13483, 13451, - 13419, 13387, 13387, 13355, 13323, 13291, 13259, 13227, 13195, 13163, - 13131, 13099, 13067, 13035, 13003, 12971, 12939, 12907, 12875, 12843, - 12811, 12779, 12747, 12715, 12683, 12651, 12619, 12587, 12555, 12523, - 12491, 12459, 12427, 12395, 12363, 12331, 12299, 12267, 12235, 12203, - 12171, 12139, 12107, 12075, 12043, 12011, 11979, 11947, 11915, 11883, - 11851, 11819, 11787, 11755, 11723, 11691, 11659, 11627, 11595, 11563, - 11531, 11499, 11467, 11435, 11403, 11371, 11339, 11307, 11275, 11243, - 11211, 11179, 11147, 11115, 11083, 11051, 11019, 10987, 10955, 10923, - 10891, 10859, 10827, 10795, 10763, 10731, 10699, 10667, 10635, 10603, - 10571, 10539, 10507, 10475, 10443, 10411, 10379, 10347, 10315, 10283, - 10251, 10219, 10187, 10155, 10123, 10091, 10059, 10027, 9995, 9963, - 9931, 9899, 9867, 9835, 9803, 9771, 9739, 9707, 9675, 9643, - 9611, 9579, 9547, 9515, 9483, 9451, 9419, 9387, 9355, 9323, - 9291, 9259, 9227, 9195, 9163, 9131, 9099, 9067, 9035, 9003, - 8971, 8939, 8907, 8875, 8843, 8811, 8779, 8747, 8715, 8683, - 8651, 8619, 8587, 8555, 8523, 8491, 8459, 8427, 8395, 8363, - 8331, 8299, 8267, 8235, 8203, 8171, 8139, 8107, 8075, 8043, - 8011, 7979, 7947, 7915, 7883, 7851, 7819, 7787, 7755, 7723, - 7691, 7659, 7627, 7595, 7563, 7531, 7499, 7467, 7435, 7403, - 7371, 7339, 7307, 7275, 7243, 7211, 7179, 7147, 7115, 7083, - 7051, 7019, 4202, 4170, 4138, 4106, 4074, 4042, 4010, 3978, - 3946, 1640, 2280, 2248, 2216, 2184, 2152, 2120, 2007, 6475, - 1974, 3356, 3324, 3250, 3241, 3228, 3196, 3164, 3132, 3100, - 3068, 3036, 3004, 2972, 2940, 2910, 2860, 2844, 2744, 2780, - 2716, 706, 1320, 5739, 5735, 1023, 2556, 2524, 2492, 1625, - 3000, 5543, 4038, 448, 433, 2507, 2092, 4741, - }; -/** Length of blocks. */ -static const int blocks_length = 2048; - -/** - * Information about each character. The low order 5 bits form the - * character type, the next bit is a flag for non-breaking spaces, and the - * next bit is a flag for mirrored directionality. The high order 9 bits - * form the offset into the attribute tables. Note that this limits the - * number of unique character attributes to 512, which is not a problem - * as of Unicode version 3.2.0, but may soon become one. - */ -static const jchar data[] = { - 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, - 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, - 12289, 12418, 16000, 16000, 12289, 12418, 16000, 16000, 16000, 16000, - 16000, 16000, 14981, 14981, 16000, 16000, 16000, 14981, 14981, 14981, - 16000, 16000, 16000, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 16000, 14981, 14981, 14981, 16000, 16000, 16000, 16000, 23432, - 23432, 16000, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 16000, 14981, 14981, 14981, 16000, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 16000, 16000, - 16000, 16000, 20888, 16000, 16000, 16000, 16000, 17926, 16000, 16000, - 14981, 14981, 14981, 14981, 14981, 14981, 16000, 16000, 16000, 16000, - 14981, 14981, 16000, 16000, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 21509, 21509, - 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, - 16000, 16000, 16000, 16000, 20994, 20994, 20994, 20994, 20994, 20994, - 20994, 20994, 20994, 20994, 20994, 20994, 20994, 20994, 20994, 20994, - 20994, 20994, 20994, 20994, 20994, 20994, 20994, 20994, 20994, 20994, - 20994, 20994, 20994, 20994, 20994, 11906, 16000, 20888, 10772, 16000, - 16000, 16000, 16000, 16000, 16000, 17926, 17926, 17926, 17926, 17926, - 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, - 18054, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 6683, 6683, 16000, - 16000, 16000, 16000, 17796, 16000, 16000, 16000, 664, 16000, 664, - 26133, 26262, 664, 6807, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 17796, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 17796, 17796, 6683, 6683, 6683, - 6683, 6683, 6683, 6683, 6683, 6683, 6683, 6683, 6683, 6683, - 6683, 17796, 17796, 6683, 6683, 6683, 6683, 6683, 6683, 6683, - 6683, 6683, 6683, 6683, 6683, 6683, 6683, 11906, 29314, 11906, - 16000, 11906, 18690, 29825, 29825, 29825, 29825, 29571, 6683, 6683, - 6683, 28034, 28034, 18690, 18690, 16000, 16000, 11906, 18690, 28161, - 28161, 29953, 29953, 16000, 6683, 6683, 6683, 6914, 7042, 7170, - 7298, 7426, 7554, 7682, 7810, 7938, 8066, 8194, 8322, 8450, - 8578, 8706, 8834, 8962, 9090, 9218, 9346, 9474, 9602, 9730, - 9858, 9986, 10114, 1109, 3225, 1238, 3225, 15, 15, 15, - 15, 15, 271, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 143, - 271, 143, 399, 271, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 271, 271, - 271, 143, 524, 664, 664, 792, 922, 792, 664, 664, - 1109, 1238, 664, 1305, 1432, 1556, 1432, 1688, 1801, 1929, - 2057, 2185, 2313, 2441, 2569, 2697, 2825, 2953, 1432, 664, - 3161, 3225, 3161, 664, 3329, 3457, 3585, 3713, 3841, 3969, - 4097, 4225, 4353, 4481, 4609, 4737, 4865, 4993, 5121, 5249, - 5377, 5505, 5633, 5761, 5889, 6017, 6145, 6273, 6401, 6529, - 1109, 664, 1238, 6683, 6807, 664, 664, 664, 3225, 1109, - 1238, 16000, 664, 664, 664, 664, 664, 664, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 10284, 664, 922, 922, - 922, 922, 10396, 10396, 6683, 10396, 10498, 10717, 3225, 10772, - 10396, 6683, 10908, 1305, 11019, 11147, 6683, 11266, 10396, 664, - 6683, 11403, 10498, 11614, 11659, 11659, 11659, 664, 664, 1305, - 1556, 3225, 3225, 3225, 16000, 664, 922, 792, 664, 16000, - 16000, 16000, 16000, 21509, 21509, 21509, 16000, 21509, 16000, 21509, - 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, - 21509, 21509, 16000, 16000, 16000, 17926, 17926, 17926, 17926, 17926, - 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, - 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, - 17926, 17926, 17926, 17926, 17926, 17926, 17926, 16000, 20508, 20508, - 20353, 20353, 20353, 20353, 20353, 20353, 20353, 20353, 20353, 20353, - 20353, 20353, 20353, 20353, 20353, 20353, 11777, 11777, 11777, 11777, - 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, - 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 3225, - 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11906, 11906, 11906, - 18690, 18690, 11906, 11906, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 11906, 11906, 11906, 11906, - 11906, 16000, 16000, 16000, 16000, 16000, 21253, 17926, 21253, 21253, - 16000, 21253, 21253, 16000, 21253, 21253, 21253, 21253, 21253, 21253, - 21253, 21253, 21253, 21253, 21509, 21509, 21509, 21509, 21509, 21509, - 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, - 21509, 21509, 21509, 21509, 21400, 21509, 17926, 17926, 17926, 17926, - 17926, 17926, 17926, 20615, 20615, 17926, 20615, 20615, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, - 11659, 11659, 33803, 12418, 12289, 12418, 12289, 12418, 12289, 12418, - 12289, 12418, 11906, 12289, 12418, 12289, 12418, 12289, 12418, 12289, - 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, - 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, - 12418, 12289, 12418, 12289, 12418, 16000, 16000, 16000, 16000, 16000, - 16000, 23561, 23689, 23817, 23945, 24073, 24201, 24329, 24457, 24585, - 24713, 17926, 17926, 14981, 14981, 14981, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 6683, 6683, 18177, - 664, 18305, 18305, 18305, 16000, 18433, 16000, 18561, 18561, 18690, - 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, - 11777, 11777, 11777, 11777, 11777, 11777, 12034, 12034, 12034, 12034, - 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, - 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 3225, - 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12162, 12034, 12034, - 19074, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, - 19202, 19330, 19330, 16000, 19458, 19586, 19713, 19713, 19713, 19842, - 19970, 10498, 16000, 16000, 12289, 12418, 12289, 12418, 12289, 12418, - 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, - 11906, 15233, 15363, 15490, 12289, 12418, 15745, 15873, 12289, 12418, - 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, - 12289, 12418, 12289, 12418, 12545, 12674, 12289, 12418, 12289, 12418, - 12289, 12418, 10498, 12289, 12418, 12289, 12418, 12289, 12418, 12289, - 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 20098, - 20226, 15618, 10498, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 23312, 23312, 23312, 23312, 23312, - 23312, 32523, 16000, 16000, 16000, 32651, 32779, 32907, 33035, 33163, - 33291, 1305, 1305, 3225, 1109, 1238, 10498, 13057, 12289, 12418, - 12289, 12418, 13185, 12289, 12418, 13313, 13313, 12289, 12418, 10498, - 13441, 13569, 13697, 12289, 12418, 13313, 13825, 13954, 14081, 14209, - 12289, 12418, 10498, 10498, 14081, 14337, 10498, 14465, 14981, 14981, - 14981, 14981, 15233, 15363, 15490, 15233, 15363, 15490, 15233, 15363, - 15490, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, - 12418, 12289, 12418, 12289, 12418, 12289, 12418, 15618, 12289, 12418, - 20508, 17926, 17926, 17926, 17926, 16000, 20615, 20615, 16000, 16000, - 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, - 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, - 12289, 12418, 12289, 12418, 12801, 12289, 12418, 12289, 12418, 12289, - 12418, 12930, 12289, 12418, 12289, 12418, 12289, 12418, 14593, 12289, - 12418, 14593, 10498, 10498, 12289, 12418, 14593, 12289, 12418, 14721, - 14721, 12289, 12418, 12289, 12418, 14849, 12289, 12418, 10498, 14981, - 12289, 12418, 10498, 15106, 19713, 12289, 12418, 12289, 12418, 16000, - 16000, 12289, 12418, 16000, 16000, 12289, 12418, 16000, 16000, 16000, - 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, - 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 1432, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 21400, 16000, 16000, 16000, 21400, - 21400, 21400, 21400, 21400, 21400, 21400, 21400, 21400, 21400, 21400, - 21400, 21400, 21400, 16000, 23312, 21509, 17926, 21509, 21509, 21509, - 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, - 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, - 21509, 21509, 21509, 21509, 21509, 21509, 16000, 16000, 23312, 19713, - 19713, 19713, 19713, 19713, 19713, 19713, 19713, 19713, 19713, 19713, - 19713, 19713, 19713, 19713, 19713, 19713, 19713, 19713, 19713, 19713, - 19713, 19713, 19713, 19713, 19713, 19713, 19713, 19713, 19713, 19713, - 19713, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 16000, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 16000, - 14981, 16000, 16000, 16000, 16000, 16000, 23561, 23689, 23817, 23945, - 24073, 24201, 24329, 24457, 24585, 24713, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 10498, 10498, - 10498, 16130, 16258, 10498, 16386, 16386, 10498, 16514, 10498, 16642, - 10498, 10498, 10498, 10498, 16386, 10498, 10498, 16770, 10498, 10498, - 10498, 10498, 16898, 17026, 10498, 10498, 10498, 10498, 10498, 17026, - 10498, 10498, 17154, 10498, 10498, 17282, 10498, 10498, 10498, 10498, - 10498, 10498, 10498, 10498, 10498, 10498, 17410, 10498, 10498, 17410, - 10498, 10498, 10498, 10498, 17410, 10498, 17538, 17538, 10498, 10498, - 10498, 10498, 10498, 10498, 17666, 10498, 10498, 10498, 10498, 10498, - 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498, 16000, - 16000, 17796, 17796, 17796, 17796, 17796, 17796, 17796, 17796, 17796, - 6683, 6683, 17796, 17796, 17796, 17796, 17796, 6683, 6683, 6683, - 6683, 6683, 6683, 6683, 6683, 6683, 17796, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 20737, 20737, 20737, 20737, 20737, 20737, - 20737, 20737, 20737, 20737, 20737, 20737, 20737, 20737, 20737, 20737, - 20737, 20737, 20737, 20737, 20737, 20737, 20737, 16000, 16000, 17796, - 20888, 20888, 20888, 20888, 20888, 20888, 11777, 11777, 16000, 11777, - 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 18818, 18946, - 18946, 18946, 18690, 12034, 12034, 12034, 12034, 12034, 12034, 12034, - 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 20226, - 20226, 20226, 20226, 20226, 20226, 20226, 20226, 20226, 20226, 20226, - 20226, 20226, 20226, 20226, 20226, 17926, 17926, 17926, 17926, 17926, - 20888, 17926, 17926, 14981, 14981, 14981, 14981, 16000, 16000, 16000, - 16000, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 16000, - 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, - 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, - 17926, 17926, 17926, 16000, 17926, 17926, 17926, 21144, 17926, 17926, - 21144, 17926, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 21253, 21253, 21253, 21253, 21253, 21253, 21253, - 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 16000, - 16000, 16000, 16000, 16000, 21253, 21253, 21253, 21144, 21144, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 23689, 23817, 23945, 24073, 24201, 24329, 24457, 24585, 24713, 25611, - 25739, 25867, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 17926, 23432, 16000, 14981, 14981, - 14981, 14981, 14981, 14981, 16000, 16000, 16000, 14981, 14981, 14981, - 16000, 14981, 14981, 14981, 14981, 16000, 16000, 16000, 14981, 14981, - 16000, 14981, 16000, 14981, 14981, 14981, 14981, 16000, 16000, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 16000, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 16000, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 16000, 16000, 16000, 16000, 16000, 16000, - 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, - 17926, 17926, 17926, 17926, 23432, 23432, 23432, 23432, 16000, 17926, - 17926, 17926, 16000, 17926, 17926, 17926, 17926, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 17926, 17926, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 17926, 23432, 23432, 16000, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 16000, 16000, 14981, - 14981, 16000, 16000, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 16000, 16000, 16000, 16000, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 16000, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 16000, 16000, 16000, 16000, 23432, 23432, 16000, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 16000, 16000, 16000, - 14981, 14981, 14981, 14981, 14981, 14981, 16000, 16000, 14981, 14981, - 14981, 14981, 14981, 14981, 16000, 16000, 14981, 14981, 14981, 14981, - 14981, 14981, 16000, 16000, 14981, 14981, 14981, 16000, 16000, 16000, - 16000, 23561, 23689, 23817, 23945, 24073, 24201, 24329, 24457, 24585, - 24713, 20508, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 21769, 21897, 22025, - 22153, 22281, 22409, 22537, 22665, 22793, 22921, 792, 23064, 23064, - 21400, 16000, 16000, 17926, 21509, 21509, 21509, 21509, 21509, 21509, - 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, - 16000, 16000, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, - 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, - 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, - 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, - 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, - 21509, 21509, 21509, 21509, 26133, 26262, 21636, 21509, 21509, 21509, - 21509, 21509, 21509, 21509, 21509, 21509, 21509, 17926, 17926, 17926, - 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 23432, - 23432, 20888, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 17926, 17926, 23432, 16000, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 16000, 14981, 16000, 14981, 14981, 14981, - 16000, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 20888, 20888, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 17926, 17926, 17926, 17926, 17926, 21636, 21636, - 17926, 17926, 10396, 17926, 17926, 17926, 17926, 16000, 16000, 1801, - 1929, 2057, 2185, 2313, 2441, 2569, 2697, 2825, 2953, 21509, - 21509, 21509, 23196, 23196, 16000, 14981, 14981, 14981, 16000, 14981, - 16000, 14981, 16000, 16000, 14981, 14981, 16000, 14981, 14981, 14981, - 14981, 17926, 14981, 14981, 17926, 17926, 17926, 17926, 17926, 17926, - 16000, 17926, 17926, 14981, 16000, 16000, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 16000, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 16000, 14981, 14981, 14981, - 14981, 14981, 16000, 16000, 16000, 16000, 17926, 17926, 23432, 16000, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 16000, 16000, 17926, 14981, 23432, 23432, 23432, 23432, - 23432, 16000, 17926, 23432, 23432, 16000, 23432, 23432, 17926, 17926, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 23432, 23432, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 14981, 16000, 20888, 20888, - 20888, 20888, 20888, 20888, 20888, 20888, 23689, 23817, 23945, 24073, - 24201, 24329, 24457, 24585, 24713, 25611, 26379, 26507, 26635, 26763, - 26891, 27019, 27147, 27275, 25739, 27403, 16000, 16000, 16000, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 16000, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 16000, 14981, 14981, 16000, - 16000, 14981, 14981, 14981, 14981, 16000, 16000, 17926, 14981, 23432, - 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 23432, 23432, - 23432, 23432, 17926, 16000, 16000, 14981, 17926, 17926, 17926, 17926, - 16000, 16000, 16000, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 16000, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 16000, 14981, 16000, 16000, 16000, 14981, 14981, 14981, 14981, 16000, - 16000, 17926, 16000, 23432, 23432, 23432, 16000, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 16000, 14981, 14981, 14981, 16000, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 16000, 14981, 16000, 14981, 14981, - 14981, 14981, 16000, 16000, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 16000, 14981, 16000, 14981, 14981, 14981, 14981, 16000, 16000, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 17926, 14981, 14981, - 17926, 17926, 17926, 17926, 17926, 17926, 17926, 16000, 16000, 16000, - 16000, 922, 922, 922, 922, 922, 922, 922, 922, 922, - 922, 922, 922, 922, 922, 922, 922, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 14981, 14981, 17926, 17926, 20888, 20888, 23561, - 23689, 23817, 23945, 24073, 24201, 24329, 24457, 24585, 24713, 20888, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 664, 664, 792, 922, 792, - 664, 664, 26133, 26262, 664, 1305, 1432, 1556, 1432, 1688, - 1801, 1929, 2057, 2185, 2313, 2441, 2569, 2697, 2825, 2953, - 1432, 664, 3225, 3225, 3225, 664, 664, 664, 664, 664, - 664, 10772, 664, 664, 664, 664, 23312, 23312, 23312, 23312, - 16000, 23561, 23689, 23817, 23945, 24073, 24201, 24329, 24457, 24585, - 24713, 16000, 16000, 16000, 16000, 16000, 16000, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 16000, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 16000, 14981, 14981, - 14981, 14981, 14981, 16000, 16000, 16000, 16000, 23432, 17926, 17926, - 17926, 17926, 16000, 16000, 23432, 23432, 16000, 16000, 23432, 23432, - 17926, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 23432, 16000, 16000, 16000, 16000, 14981, 14981, 16000, 14981, 16000, - 16000, 14981, 14981, 16000, 14981, 16000, 16000, 14981, 16000, 16000, - 16000, 16000, 16000, 16000, 14981, 14981, 14981, 14981, 16000, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 16000, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 16000, 14981, 14981, 16000, - 14981, 14981, 16000, 14981, 14981, 16000, 16000, 17926, 16000, 23432, - 23432, 17926, 17926, 16000, 16000, 16000, 16000, 17926, 17926, 16000, - 16000, 17926, 17926, 17926, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 14981, 14981, 14981, 14981, 16000, - 14981, 16000, 14981, 14981, 17926, 17926, 16000, 16000, 23561, 23689, - 23817, 23945, 24073, 24201, 24329, 24457, 24585, 24713, 14981, 14981, - 922, 922, 24843, 24971, 25099, 25227, 25355, 25483, 20508, 16000, - 16000, 16000, 16000, 16000, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 16000, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 16000, 14981, 14981, 16000, 14981, 14981, 14981, 14981, 14981, - 16000, 16000, 17926, 14981, 23432, 23432, 17926, 17926, 17926, 17926, - 17926, 16000, 17926, 17926, 23432, 16000, 23432, 23432, 17926, 16000, - 16000, 14981, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 23561, 23689, 23817, - 23945, 24073, 24201, 24329, 24457, 24585, 24713, 25355, 25355, 25355, - 25355, 25355, 25355, 25355, 25355, 25355, 25355, 20508, 17926, 20508, - 17926, 20508, 17926, 26133, 26262, 26133, 26262, 23432, 23432, 17926, - 17926, 17926, 16000, 16000, 16000, 23432, 23432, 16000, 16000, 23432, - 23432, 17926, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 17926, 23432, 16000, 16000, 16000, 16000, 14981, 14981, 16000, 14981, - 14981, 14981, 14981, 14981, 16000, 14981, 14981, 16000, 23432, 17926, - 17926, 17926, 17926, 23432, 17926, 16000, 16000, 16000, 17926, 17926, - 23432, 17926, 16000, 16000, 16000, 16000, 16000, 16000, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 23432, 23432, - 23432, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 23432, 23432, - 16000, 16000, 16000, 23432, 23432, 23432, 16000, 23432, 23432, 23432, - 17926, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 23432, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 14981, - 14981, 14981, 14981, 14981, 16000, 17796, 16000, 17926, 17926, 17926, - 17926, 17926, 17926, 16000, 16000, 23561, 23689, 23817, 23945, 24073, - 24201, 24329, 24457, 24585, 24713, 16000, 16000, 14981, 14981, 16000, - 16000, 16000, 16000, 23561, 23689, 23817, 23945, 24073, 24201, 24329, - 24457, 24585, 24713, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 17926, - 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, - 17926, 17926, 20615, 20615, 20615, 23432, 17926, 17926, 17926, 16000, - 16000, 23432, 23432, 23432, 16000, 23432, 23432, 23432, 17926, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 23432, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 16000, 16000, 16000, 17926, 16000, 16000, - 16000, 16000, 23432, 23432, 23432, 17926, 17926, 17926, 16000, 17926, - 16000, 23432, 23432, 23432, 23432, 23432, 23432, 23432, 23432, 17926, - 23432, 23432, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, - 17926, 17926, 17926, 20888, 20888, 20888, 20888, 20888, 20888, 20888, - 922, 20888, 16000, 16000, 16000, 14981, 14981, 14981, 14981, 14981, - 14981, 17796, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, - 20888, 23561, 23689, 23817, 23945, 24073, 24201, 24329, 24457, 24585, - 24713, 20888, 20888, 16000, 16000, 16000, 16000, 14981, 20508, 20508, - 20508, 20888, 20888, 20888, 20888, 20888, 20888, 20888, 20888, 26040, - 20888, 20888, 20888, 20888, 20888, 20888, 20508, 20508, 20508, 20508, - 20508, 17926, 17926, 20508, 20508, 20508, 20508, 20508, 20508, 17926, - 20508, 20508, 20508, 20508, 20508, 20508, 16000, 16000, 20508, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 10396, 10396, 10396, 10396, 10396, - 10396, 10396, 10396, 10396, 10396, 10396, 10396, 16000, 16000, 16000, - 16000, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 16000, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 16000, 16000, 16000, 16000, - 16000, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 6807, 17796, - 17796, 17796, 16000, 23561, 23689, 23817, 23945, 24073, 24201, 24329, - 24457, 24585, 24713, 20888, 20888, 20888, 20888, 20888, 20888, 14981, - 14981, 14981, 14981, 14981, 14981, 23432, 23432, 17926, 17926, 16000, - 16000, 16000, 16000, 16000, 16000, 524, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 26133, 26262, 16000, 16000, 16000, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 20888, 20888, - 20888, 27531, 27659, 27787, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 17926, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, - 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, - 12418, 12289, 12418, 11906, 11906, 11906, 11906, 11906, 27906, 16000, - 16000, 16000, 16000, 28034, 28034, 28034, 28034, 28034, 28034, 28034, - 28034, 28161, 28161, 28161, 28161, 28161, 28161, 28161, 28161, 28034, - 28034, 28034, 28034, 28034, 28034, 28034, 28034, 28161, 28161, 28161, - 28161, 28161, 28161, 28161, 28161, 28034, 28034, 28034, 28034, 28034, - 28034, 16000, 16000, 28161, 28161, 28161, 28161, 28161, 28161, 16000, - 16000, 11906, 28034, 18690, 28034, 18690, 28034, 18690, 28034, 16000, - 28161, 16000, 28161, 16000, 28161, 16000, 28161, 28034, 28034, 28034, - 28034, 28034, 28034, 28034, 28034, 28161, 28161, 28161, 28161, 28161, - 28161, 28161, 28161, 28290, 28290, 28418, 28418, 28418, 28418, 28546, - 28546, 28674, 28674, 28802, 28802, 28930, 28930, 16000, 16000, 29058, - 29058, 29058, 29058, 29058, 29058, 29058, 29058, 29187, 29187, 29187, - 29187, 29187, 29187, 29187, 29187, 29058, 29058, 29058, 29058, 29058, - 29058, 29058, 29058, 29187, 29187, 29187, 29187, 29187, 29187, 29187, - 29187, 28034, 28034, 11906, 29314, 11906, 16000, 11906, 18690, 28161, - 28161, 29441, 29441, 29571, 6683, 29698, 6683, 6914, 7042, 7170, - 7298, 7426, 7554, 7682, 7810, 7938, 8066, 8194, 8322, 8450, - 8578, 8706, 8834, 8962, 9090, 9218, 9346, 9474, 9602, 9730, - 9858, 9986, 10114, 26133, 3225, 26262, 3225, 16000, 28034, 28034, - 18690, 18690, 11906, 30082, 11906, 18690, 28161, 28161, 30209, 30209, - 30337, 6683, 6683, 6683, 16000, 16000, 11906, 29314, 11906, 16000, - 11906, 18690, 30465, 30465, 30593, 30593, 29571, 6683, 6683, 16000, - 524, 524, 524, 524, 524, 524, 524, 30764, 524, 524, - 524, 30860, 23312, 23312, 30992, 31120, 10772, 31284, 10772, 10772, - 10772, 10772, 664, 664, 31389, 31518, 26133, 31389, 31389, 31518, - 26133, 31389, 664, 664, 664, 664, 664, 664, 664, 664, - 31629, 31758, 31888, 32016, 32144, 32272, 32400, 30764, 792, 792, - 792, 792, 792, 664, 664, 664, 664, 10717, 11614, 664, - 664, 664, 664, 6807, 32523, 11403, 11019, 11147, 32651, 32779, - 32907, 33035, 33163, 33291, 1305, 1305, 3225, 1109, 1238, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 16000, - 16000, 16000, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, - 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, - 10396, 10396, 16000, 16000, 16000, 16000, 16000, 10396, 10396, 10396, - 10396, 10396, 10396, 10396, 19713, 10396, 10396, 10396, 10396, 19713, - 10396, 10396, 10498, 19713, 19713, 19713, 10498, 10498, 19713, 19713, - 19713, 10498, 10396, 19713, 10396, 10396, 10396, 19713, 19713, 19713, - 19713, 19713, 10396, 10396, 41482, 41610, 41738, 41866, 41994, 42122, - 42250, 42378, 42506, 17926, 17926, 17926, 17926, 17926, 17926, 10772, - 17796, 17796, 17796, 17796, 17796, 10396, 10396, 42634, 42762, 42890, - 16000, 16000, 16000, 10396, 10396, 10396, 10396, 16000, 10396, 10396, - 10396, 10396, 16000, 16000, 10396, 10396, 10396, 10396, 10396, 10396, - 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, - 10396, 10396, 10396, 10396, 10396, 10396, 10396, 3225, 10396, 10396, - 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, - 10396, 10396, 3225, 3225, 10396, 10396, 3225, 10396, 3225, 10396, - 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, - 10396, 10396, 10396, 10396, 3225, 10396, 10396, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 38026, 38154, 38282, 38410, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 3225, 3225, 3225, - 3225, 3225, 10396, 10396, 10396, 10396, 10396, 3225, 3225, 10396, - 10396, 10396, 10396, 19713, 10396, 33409, 10396, 19713, 10396, 33537, - 33665, 19713, 19713, 10908, 10498, 19713, 19713, 10396, 19713, 10498, - 14981, 14981, 14981, 14981, 10498, 10396, 16000, 16000, 16000, 16000, - 16000, 33930, 34058, 34186, 34314, 34442, 34570, 34698, 34826, 34954, - 35082, 35210, 35338, 35466, 35594, 35722, 35850, 35978, 36106, 36234, - 36362, 36490, 36618, 36746, 36874, 37002, 37130, 37258, 37386, 37514, - 37642, 37770, 37898, 3225, 3225, 3161, 3161, 3225, 3225, 3161, - 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, - 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3225, 3225, - 3225, 3225, 3225, 3161, 3161, 3161, 3161, 3225, 3225, 3225, - 3225, 3225, 3225, 3225, 3225, 3225, 3161, 3161, 3161, 3161, - 3161, 3225, 3225, 3161, 3161, 3225, 3225, 3225, 3225, 3161, - 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, - 3161, 3161, 3225, 3225, 3161, 3161, 3161, 3161, 3225, 3225, - 3225, 3225, 3225, 3161, 3225, 3225, 3225, 3225, 3225, 3225, - 3225, 10396, 10396, 3225, 10396, 10396, 3225, 10396, 10396, 10396, - 10396, 10396, 10396, 10396, 3225, 10396, 10396, 10396, 10396, 10396, - 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, - 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, - 10396, 10396, 10396, 10396, 10396, 10396, 10396, 16000, 10396, 10396, - 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, - 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, - 10396, 10396, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 3225, 3161, 3161, - 3161, 3161, 3225, 3225, 3225, 3161, 3161, 3161, 3161, 3161, - 3161, 3225, 3225, 3225, 3161, 1305, 1305, 3225, 3161, 3161, - 3225, 3225, 3225, 3161, 3161, 3161, 3161, 3225, 3161, 3225, - 3161, 3225, 3225, 3225, 3225, 3161, 3161, 3161, 3161, 3161, - 3161, 3161, 3161, 3161, 3225, 3225, 3225, 3225, 3225, 3161, - 3225, 3161, 3161, 3161, 3161, 3161, 10396, 10396, 10396, 10396, - 10396, 10396, 10396, 1109, 1238, 10396, 10396, 10396, 10396, 10396, - 10396, 10396, 10396, 10396, 10396, 10396, 20508, 20508, 20508, 20508, - 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, - 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 16000, - 16000, 16000, 16000, 20508, 20508, 20508, 20508, 20508, 20508, 20508, - 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, - 20508, 20508, 20508, 20508, 20508, 39964, 39964, 39964, 39964, 39964, - 39964, 39964, 39964, 39964, 39964, 39964, 39964, 39964, 39964, 39964, - 39964, 40092, 40092, 40092, 40092, 40092, 40092, 40092, 40092, 40092, - 40092, 40092, 40092, 40092, 40092, 40092, 40092, 32523, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 3161, - 3225, 3161, 3225, 3161, 3161, 3161, 3161, 3161, 3161, 3161, - 3161, 3225, 3225, 3161, 3161, 3161, 3161, 3161, 3161, 3161, - 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, - 3161, 3225, 3225, 3161, 3161, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 922, - 922, 3225, 6683, 10396, 922, 922, 16000, 10396, 3225, 3225, - 3225, 3225, 10396, 10396, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 23312, 23312, 23312, 10396, 10396, 16000, - 16000, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, - 10396, 10396, 10396, 10396, 10396, 10396, 10396, 16000, 10396, 10396, - 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, - 10396, 10396, 16000, 10396, 16000, 10396, 10396, 10396, 10396, 16000, - 16000, 16000, 10396, 16000, 10396, 10396, 10396, 10396, 10396, 10396, - 10396, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 33803, 40203, 40331, 40459, 40587, - 40715, 40843, 40971, 41099, 41227, 33803, 40203, 40331, 40459, 40587, - 40715, 40843, 40971, 41099, 41227, 10396, 16000, 16000, 16000, 10396, - 10396, 10396, 10396, 10396, 10396, 10396, 10396, 3161, 3161, 3161, - 3161, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, - 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, - 10396, 10396, 20508, 10396, 10396, 10396, 10396, 10396, 16000, 16000, - 16000, 16000, 16000, 25355, 25355, 25355, 25355, 25355, 25355, 25355, - 25355, 25355, 25355, 20508, 20508, 20508, 20508, 20508, 20508, 20508, - 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, - 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, - 20508, 20508, 20508, 20508, 20508, 16000, 16000, 16000, 20508, 24843, - 24971, 25099, 25227, 43019, 43147, 43275, 43403, 43531, 25611, 20508, - 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, - 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, - 20508, 20508, 20508, 20508, 20508, 20508, 10396, 16000, 10396, 10396, - 10396, 16000, 10396, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 11403, 11019, - 11147, 32651, 32779, 32907, 33035, 33163, 33291, 38539, 38667, 38795, - 38923, 39051, 39179, 39307, 39435, 39563, 39691, 39819, 11403, 11019, - 11147, 32651, 32779, 32907, 33035, 33163, 33291, 38539, 38667, 38795, - 38923, 39051, 39179, 39307, 39435, 39563, 39691, 39819, 20508, 20508, - 20508, 20508, 524, 664, 664, 664, 10396, 17796, 14981, 41354, - 1109, 1238, 1109, 1238, 1109, 1238, 1109, 1238, 1109, 1238, - 10396, 10396, 1109, 1238, 1109, 1238, 1109, 1238, 1109, 1238, - 10772, 26133, 26262, 26262, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 16000, 16000, 16000, 16000, 17926, - 17926, 6683, 6683, 17796, 17796, 16000, 14981, 14981, 14981, 14981, - 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, - 14981, 16000, 20508, 20508, 25355, 25355, 25355, 25355, 20508, 20508, - 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, - 20508, 20508, 20508, 20508, 20508, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 43667, 43667, 43667, 43667, 43667, 43667, 43667, - 43667, 43667, 43667, 43667, 43667, 43667, 43667, 43667, 43667, 43667, - 43667, 43667, 43667, 43667, 43667, 43667, 43667, 43667, 43667, 43667, - 43667, 43667, 43667, 43667, 43667, 43794, 43794, 43794, 43794, 43794, - 43794, 43794, 43794, 43794, 43794, 43794, 43794, 43794, 43794, 43794, - 43794, 43794, 43794, 43794, 43794, 43794, 43794, 43794, 43794, 43794, - 43794, 43794, 43794, 43794, 43794, 43794, 43794, 21253, 21253, 21253, - 21253, 21253, 21253, 21253, 21253, 21253, 1305, 21253, 21253, 21253, - 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, - 16000, 21253, 21253, 21253, 21253, 21253, 16000, 21253, 16000, 17926, - 17926, 17926, 17926, 16000, 16000, 16000, 16000, 16000, 16000, 16000, - 16000, 16000, 16000, 16000, 16000, 664, 10772, 10772, 6807, 6807, - 26133, 26262, 26133, 26262, 26133, 26262, 26133, 26262, 26133, 26262, - 26133, 26262, 16000, 16000, 16000, 16000, 664, 664, 664, 664, - 6807, 6807, 6807, 1432, 664, 1432, 16000, 664, 1432, 664, - 664, 10772, 26133, 26262, 26133, 26262, 26133, 26262, 792, 664, - 3329, 3457, 3585, 3713, 3841, 3969, 4097, 4225, 4353, 4481, - 4609, 4737, 4865, 4993, 5121, 5249, 5377, 5505, 5633, 5761, - 5889, 6017, 6145, 6273, 6401, 6529, 26133, 664, 26262, 6683, - 6807, - }; -/** Length of data. */ -static const int data_length = 5351; - -/** - * This is the attribute table for computing the numeric value of a - * character. The value is -1 if Unicode does not define a value, -2 - * if the value is not a positive integer, otherwise it is the value. - */ -static const jshort numValue[] = { - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - -1, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, -1, -1, -1, -1, -1, -1, 2, 3, -1, 1, -1, - -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, - -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, - 2, 3, 4, -1, 16, 10, 100, 1000, -1, -1, -1, 20, 30, - 40, 50, 60, 70, 80, 90, 10000, 17, 18, 19, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0, 4, 5, 6, 7, 8, - 9, -1, -1, -1, 1, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 50, 100, 500, 1000, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 50, 100, 500, 1000, 1000, 5000, - 10000, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - -1, -1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 5, 6, - 7, 8, 9, -1, -1, - }; -/** Length of numValue. */ -static const int numValue_length = 343; - -/** - * This is the attribute table for computing the uppercase representation - * of a character. The value is the difference between the character and - * its uppercase version. - */ -static const jshort upper[] = { - 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, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, 0, 0, 0, 0, 0, 0, 0, 0, 743, 0, 0, - 0, 0, 0, -32, 121, 0, -1, 0, -232, 0, -300, 0, 0, - 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, - 0, 56, 0, -1, -2, -79, 0, 0, 0, -210, -206, -205, -202, - -203, -207, -209, -211, -213, -214, -218, -217, -219, 0, 0, 84, 0, - 0, 0, 0, 0, -38, -37, -31, -64, -63, -62, -57, 0, -47, - -54, -86, -80, 0, 0, 0, 0, 0, -48, 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, -59, 8, 0, - 74, 86, 100, 128, 112, 126, 8, 0, 9, 0, 0, -7205, 0, - 0, 7, 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, -16, -16, -16, -16, -16, - -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -26, 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, - }; -/** Length of upper. */ -static const int upper_length = 343; - -/** - * This is the attribute table for computing the lowercase representation - * of a character. The value is the difference between the character and - * its lowercase version. - */ -static const jshort lower[] = { - 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, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 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, 32, 0, 0, 0, 1, 0, -199, 0, -121, 0, 210, 206, - 205, 79, 202, 203, 207, 0, 211, 209, 213, 214, 218, 217, 219, - 0, 0, 2, 1, 0, 0, -97, -56, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, - 37, 64, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 80, 0, 0, 48, 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, -8, - 0, 0, 0, 0, 0, 0, 0, -8, 0, -74, -9, 0, -86, - -100, 0, -112, -7, -128, -126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -7517, -8383, -8262, 0, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 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, - 26, 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, - }; -/** Length of lower. */ -static const int lower_length = 343; - -/** - * This is the attribute table for computing the directionality class - * of a character. At present, the value is in the range 0 - 18 if the - * character has a direction, otherwise it is -1. - */ -static const jbyte direction[] = { - 36, 44, 40, 48, 48, 52, 20, 20, 52, 52, 20, 28, 20, 16, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 52, 52, 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, 52, 52, 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, 28, 52, 0, 52, - 52, 20, 12, 12, 0, 12, 52, 52, 0, 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, -4, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 0, 0, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 4, 4, 8, - 8, 8, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 8, 36, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 48, 36, 0, 4, 52, 52, 52, 48, 40, 56, 64, 72, - 60, 68, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 52, 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, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - }; -/** Length of direction. */ -static const int direction_length = 343; - -/** - * This is the listing of titlecase special cases (all other character - * can use upper to determine their titlecase). The listing - * is a sequence of character pairs; converting the first character of the - * pair to titlecase produces the second character. - */ -static const jchar title[] = { - 452, 453, 453, 453, 454, 453, 455, 456, 456, 456, - 457, 456, 458, 459, 459, 459, 460, 459, 497, 498, - 498, 498, 499, 498, - }; -/** Length of title. */ -static const int title_length = 24; - -#endif /* __JAVA_CHARTABLES_H__ */ +/* java-chartables.h -- Character tables for java.lang.Character -*- c++ -*- + Copyright (C) 2002, 2006 Free Software Foundation, Inc. + *** This file is generated by scripts/unicode_to_chartables.pl *** + +This file is part of GNU Classpath. + +GNU Classpath 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. + +GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +#ifndef __JAVA_CHARTABLES_H__ +#define __JAVA_CHARTABLES_H__ + +// These tables are automatically generated by scripts/unicode_to_chartables.pl. +// The Unicode data comes from www.unicode.org; this header is based on +// UnicodeData-4.0.0.txt. JDK 1.5 uses Unicode version 4.0.0. +// DO NOT EDIT the tables. Instead, fix the upstream scripts and run +// them again. + +// The data is stored in C style arrays of the appropriate CNI types, to +// guarantee that the data is constant and non-relocatable. The field +// blocks stores the offset of a block of 2SHIFT +// characters within data. The data field, in turn, stores +// information about each character in the low order bits, and an offset +// into the attribute tables upper, lower, +// numValue, and direction. Notice that the +// attribute tables are much smaller than 0xffff entries; as many characters +// in Unicode share common attributes. Finally, there is a listing for +// title exceptions (most characters just have the same title +// case as upper case). + +// This file should only be included by natCharacter.cc + +/** + * The array containing the numeric values that are too large to be stored as + * chars in NUM_VALUE. NUM_VALUE in this case will contain a negative integer + * N such that LARGENUMS[-N - 3] contains the correct numeric value. + */ +static const jint largenums[] = { + 40000, 50000, 60000, 70000, 80000, 90000, }; + +/** + * The character shift amount to look up the block offset. In other words, + * (char) (blocks[p][off >> SHIFT[p]] + off) is the index where + * ch is described in data, where off + * is ch & 0xffff and p is the plane the character belongs to. + */ +static const int shift[] = { + 4, 6, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, }; + +/** + * The mapping of character blocks to their location in data. + * Each entry has been adjusted so that a modulo 16 sum with the desired + * character gives the actual index into data. + */ +static const jchar blocks0[] = { + 15, 23, 53, 7, 52, 52, 90, 65424, 65437, 65427, + 11, 65461, 11, 4, 28, 21, 23, 7, 65527, 173, + 269, 65479, 65463, 65403, 273, 273, 183, 257, 65500, 65354, + 65335, 65267, 65303, 65287, 65269, 65401, 220, 50, 321, 5, + 65511, 317, 304, 311, 355, 355, 274, 325, 358, 342, + 326, 310, 65409, 401, 262, 65156, 458, 64826, 442, 64843, + 426, 65140, 64823, 334, 435, 64699, 64683, 64716, 64700, 371, + 64695, 64679, 64680, 64647, 64631, 64615, 275, 64583, 64567, 64578, + 64535, 65036, 65020, 64723, 64708, 64701, 65034, 65019, 65012, 65237, + 65219, 64791, 64789, 138, 127, 181, 64945, 220, 64878, 249, + 203, 65507, 107, 249, 64783, 64767, 64751, 64735, 64719, 9, + 171, 105, 65531, 88, 64623, 64822, 65494, 64460, 64444, 64428, + 64527, 64511, 65392, 65529, 64348, 64332, 64316, 64300, 64284, 64268, + 64252, 64236, 64220, 64204, 64188, 64172, 64156, 64140, 64124, 64108, + 64092, 64076, 64060, 64044, 65249, 64259, 64243, 65267, 64724, 65291, + 65299, 63915, 64394, 63482, 64105, 64485, 64366, 63758, 65193, 65199, + 64377, 63354, 63977, 63687, 65020, 63328, 64386, 65087, 63204, 63872, + 63849, 63246, 64454, 63332, 64937, 64989, 64010, 63098, 63721, 64328, + 63117, 62956, 64913, 63171, 63428, 63323, 63407, 63323, 63803, 64222, + 64347, 64791, 63236, 63489, 63465, 64420, 64727, 63279, 64657, 63148, + 64331, 63361, 63337, 64631, 64369, 63898, 64529, 63020, 64203, 63233, + 63209, 64143, 64503, 63838, 64401, 62892, 64468, 62443, 63091, 63450, + 64391, 63538, 62780, 62759, 62994, 62979, 62963, 64143, 64157, 64041, + 62652, 62636, 62151, 63220, 63096, 64185, 64185, 63935, 62524, 62508, + 64137, 62218, 63176, 63172, 62666, 62659, 63643, 62845, 63847, 62669, + 62662, 62649, 62052, 62284, 62268, 62252, 62483, 62467, 62722, 63849, + 63671, 63833, 62140, 62124, 62108, 62092, 63783, 63767, 63761, 62275, + 62259, 63347, 62227, 62211, 62195, 62179, 62163, 63148, 62131, 62115, + 62099, 62083, 63075, 62051, 62035, 62019, 62003, 63473, 61963, 61955, + 61939, 61923, 61227, 61211, 61875, 61859, 61163, 61827, 61795, 61123, + 61107, 61755, 61731, 61731, 61699, 61027, 61683, 61667, 61643, 62635, + 62147, 62425, 61340, 61324, 61555, 61539, 61523, 61507, 61491, 62966, + 61458, 61443, 61427, 61411, 61395, 61379, 61363, 61347, 61331, 61315, + 61299, 61283, 61267, 61251, 61235, 61219, 61203, 61187, 61171, 61155, + 61139, 61123, 61107, 61091, 61075, 61059, 61043, 61027, 61011, 60995, + 60979, 60963, 60947, 60931, 60915, 60899, 60883, 60867, 60205, 62324, + 61814, 61782, 60787, 60771, 60755, 60739, 62073, 62215, 60677, 62199, + 60659, 62183, 60627, 62167, 60581, 62151, 60563, 60547, 60531, 62103, + 61004, 62098, 60246, 62097, 62097, 60198, 60403, 60387, 61402, 60355, + 60339, 61811, 60307, 60291, 61953, 60012, 59996, 59980, 59964, 59948, + 60179, 61161, 61746, 60531, 59888, 60099, 61080, 61558, 59804, 59788, + 59772, 59756, 59740, 59724, 61668, 61652, 59676, 59660, 59644, 59628, + 59612, 59596, 59580, 59564, 59548, 59532, 59516, 59500, 59484, 59468, + 59452, 59436, 59420, 59404, 59388, 59372, 59356, 59340, 59324, 59308, + 59292, 59276, 59260, 59244, 59228, 59212, 59196, 59180, 59164, 59148, + 59132, 59116, 59100, 59084, 59068, 59052, 59036, 59020, 59004, 58988, + 58972, 58956, 58940, 58924, 59088, 59072, 59060, 59056, 59040, 59024, + 61022, 58796, 58780, 58764, 58748, 58732, 58716, 58700, 58684, 58668, + 58135, 58119, 58103, 58087, 58071, 58055, 58039, 58023, 58007, 58200, + 57975, 57959, 57943, 57927, 57911, 59112, 60622, 60622, 60590, 60574, + 60574, 60574, 60526, 60558, 60558, 60542, 60526, 60526, 58499, 60510, + 60510, 57701, 60494, 60494, 57467, 60493, 57427, 57334, 59163, 60445, + 60445, 57996, 60429, 60427, 57948, 60411, 58887, 57900, 58047, 59809, + 60046, 59529, 60439, 58731, 60423, 60423, 60423, 59922, 60407, 59668, + 59654, 59631, 59620, 59616, 59751, 60187, 60182, 59602, 60111, 60058, + 59577, 60060, 59602, 59637, 60006, 60003, 59952, 59516, 59950, 59932, + 60070, 59316, 60048, 60043, 60033, 60017, 60001, 57613, 59204, 57620, + 59188, 57600, 59140, 59945, 57148, 57132, 59076, 59060, 59859, 57068, + 59823, 57036, 59825, 59805, 59785, 59785, 59681, 59818, 59808, 59808, + 59798, 58754, 58820, 58804, 58788, 58772, 58756, 58740, 58724, 58708, + 58692, 58676, 58660, 59374, 58626, 58612, 58596, 58588, 58564, 57001, + 58532, 58516, 58500, 58484, 58469, 59260, 58436, 59240, 59224, 56428, + 56412, 56396, 56380, 56364, 56728, 58292, 56729, 58260, 56650, 59204, + 56673, 56667, 56657, 58964, 58148, 58939, 56156, 58635, 59076, 58084, + 58052, 58036, 58020, 58004, 57988, 57972, 57956, 57940, 57924, 57908, + 57892, 57876, 57860, 57844, 57828, 57812, 57812, 57796, 57780, 57764, + 57748, 57732, 57716, 57700, 57710, 57702, 58220, 57822, 57775, 58235, + 57679, 57584, 57562, 58161, 57661, 57673, 57492, 57671, 58045, 57561, + 57996, 57980, 57473, 57948, 57932, 57405, 57879, 57420, 58092, 55308, + 55292, 55276, 55260, 55244, 55228, 55212, 55196, 55180, 55164, 55148, + 55132, 55116, 55100, 55084, 55068, 55052, 55036, 55020, 55004, 54988, + 54972, 54956, 54940, 54924, 54908, 54892, 54876, 54860, 54844, 54828, + 54812, 54796, 54780, 54764, 54748, 54732, 54716, 54700, 54684, 54668, + 54652, 54636, 54620, 54604, 54588, 54572, 54556, 54540, 54524, 54508, + 54492, 54476, 54460, 54444, 56388, 54823, 56356, 56340, 56324, 56308, + 56292, 57094, 56260, 56244, 56228, 56212, 56196, 56180, 56164, 56148, + 56132, 56116, 56100, 56084, 56068, 56868, 54076, 56830, 57012, 57010, + 54323, 56918, 54226, 54211, 54195, 54179, 54163, 55228, 54114, 54115, + 54099, 54083, 54067, 55067, 55046, 54019, 55001, 53986, 53971, 53955, + 53939, 53923, 53891, 53991, 53875, 55347, 53596, 53580, 53564, 53795, + 56257, 56244, 56368, 56209, 56320, 56450, 56161, 56149, 56272, 56113, + 56097, 56100, 56165, 56049, 56033, 56133, 56001, 55985, 55969, 55953, + 55937, 55921, 55905, 55994, 55873, 55857, 55841, 55825, 55809, 55795, + 55777, 55762, 53267, 53251, 53235, 53219, 53203, 53187, 53171, 53155, + 53139, 53123, 53107, 53091, 53075, 53059, 53043, 53027, 53011, 52995, + 52979, 52963, 52947, 52931, 52915, 52899, 52883, 52867, 52851, 52835, + 52819, 52803, 52787, 52771, 52755, 52739, 52723, 52707, 52691, 52675, + 52659, 52643, 52627, 52611, 52595, 52579, 52563, 52547, 52531, 52515, + 52499, 52483, 52467, 52451, 52435, 52419, 52403, 52387, 52371, 52355, + 52339, 52323, 52307, 52291, 52275, 52259, 52243, 52227, 52211, 52195, + 52179, 52163, 52147, 52131, 52115, 52099, 52083, 52067, 52051, 52035, + 52019, 52003, 51987, 51971, 51955, 51939, 51923, 51907, 51891, 51875, + 51859, 51843, 51827, 51811, 51795, 51779, 51763, 51747, 51731, 51715, + 51699, 51683, 51667, 51651, 51635, 51619, 51603, 51587, 51571, 51555, + 51539, 51523, 51507, 51491, 51475, 51459, 51443, 51427, 51411, 51395, + 51379, 51363, 51347, 51331, 51315, 51299, 51283, 51267, 51251, 51235, + 51219, 51203, 51187, 51171, 51155, 51139, 51123, 51107, 51091, 51075, + 51059, 51043, 51027, 51011, 50995, 50979, 50963, 50947, 50931, 50915, + 50899, 50883, 50867, 50851, 50835, 50819, 50803, 50787, 50771, 50755, + 50739, 50723, 50707, 50691, 50675, 50659, 50643, 50627, 50611, 50595, + 50579, 50563, 50547, 50531, 50515, 50499, 50483, 50467, 50451, 50435, + 50419, 50403, 50387, 50371, 50355, 50339, 50323, 50307, 50291, 50275, + 50259, 50243, 50227, 50211, 50195, 50179, 50163, 50147, 50131, 50115, + 50099, 50083, 50067, 50051, 50035, 50019, 50003, 49987, 49971, 49955, + 49939, 49923, 49907, 49891, 49875, 49859, 49843, 49827, 49811, 49795, + 49779, 49763, 49747, 49731, 49715, 49699, 49683, 49667, 49651, 49635, + 49619, 49603, 49587, 49571, 49555, 49539, 49523, 49507, 49491, 49475, + 49459, 49443, 49427, 49411, 49395, 49379, 49363, 49347, 49331, 49315, + 49299, 49283, 49267, 49251, 49235, 49219, 49203, 49187, 49171, 49155, + 49139, 49123, 49107, 49091, 49075, 49059, 49043, 49027, 49011, 48995, + 48979, 48963, 48947, 48931, 48915, 48899, 48883, 48867, 48851, 48835, + 48819, 48803, 48787, 48771, 48755, 48739, 48723, 48707, 48691, 48675, + 48659, 48643, 48627, 48611, 48595, 48579, 48563, 48547, 48531, 48515, + 48499, 48483, 48467, 48451, 48435, 48419, 48403, 48387, 48371, 48355, + 48339, 48323, 48307, 48291, 48275, 48259, 48243, 48227, 48211, 48195, + 48179, 48163, 48147, 48131, 48115, 48099, 48083, 48067, 48051, 48035, + 48019, 48003, 47987, 47971, 47955, 47939, 47923, 47907, 47891, 47875, + 47859, 47843, 47827, 47811, 47795, 47779, 47763, 47747, 47731, 47715, + 47699, 47683, 47667, 47651, 47635, 47619, 47603, 47587, 47571, 47555, + 47539, 47523, 47507, 47491, 47475, 47459, 47443, 47427, 47411, 47395, + 47379, 47363, 47347, 47331, 47315, 47299, 47283, 47267, 47251, 47235, + 47219, 47203, 47187, 47171, 47155, 47139, 47123, 47107, 47091, 47075, + 47059, 47043, 47027, 47011, 46995, 46979, 46963, 46947, 46931, 46915, + 46899, 46883, 46867, 46851, 46835, 46819, 46803, 46787, 46771, 46755, + 46739, 46723, 46707, 48181, 48388, 48372, 48356, 48340, 46611, 46595, + 46579, 46563, 46547, 46531, 46515, 46499, 46483, 46467, 46451, 46435, + 46419, 46403, 46387, 46371, 46355, 46339, 46323, 46307, 46291, 46275, + 46259, 46243, 46227, 46211, 46195, 46179, 46163, 46147, 46131, 46115, + 46099, 46083, 46067, 46051, 46035, 46019, 46003, 45987, 45971, 45955, + 45939, 45923, 45907, 45891, 45875, 45859, 45843, 45827, 45811, 45795, + 45779, 45763, 45747, 45731, 45715, 45699, 45683, 45667, 45651, 45635, + 45619, 45603, 45587, 45571, 45555, 45539, 45523, 45507, 45491, 45475, + 45459, 45443, 45427, 45411, 45395, 45379, 45363, 45347, 45331, 45315, + 45299, 45283, 45267, 45251, 45235, 45219, 45203, 45187, 45171, 45155, + 45139, 45123, 45107, 45091, 45075, 45059, 45043, 45027, 45011, 44995, + 44979, 44963, 44947, 44931, 44915, 44899, 44883, 44867, 44851, 44835, + 44819, 44803, 44787, 44771, 44755, 44739, 44723, 44707, 44691, 44675, + 44659, 44643, 44627, 44611, 44595, 44579, 44563, 44547, 44531, 44515, + 44499, 44483, 44467, 44451, 44435, 44419, 44403, 44387, 44371, 44355, + 44339, 44323, 44307, 44291, 44275, 44259, 44243, 44227, 44211, 44195, + 44179, 44163, 44147, 44131, 44115, 44099, 44083, 44067, 44051, 44035, + 44019, 44003, 43987, 43971, 43955, 43939, 43923, 43907, 43891, 43875, + 43859, 43843, 43827, 43811, 43795, 43779, 43763, 43747, 43731, 43715, + 43699, 43683, 43667, 43651, 43635, 43619, 43603, 43587, 43571, 43555, + 43539, 43523, 43507, 43491, 43475, 43459, 43443, 43427, 43411, 43395, + 43379, 43363, 43347, 43331, 43315, 43299, 43283, 43267, 43251, 43235, + 43219, 43203, 43187, 43171, 43155, 43139, 43123, 43107, 43091, 43075, + 43059, 43043, 43027, 43011, 42995, 42979, 42963, 42947, 42931, 42915, + 42899, 42883, 42867, 42851, 42835, 42819, 42803, 42787, 42771, 42755, + 42739, 42723, 42707, 42691, 42675, 42659, 42643, 42627, 42611, 42595, + 42579, 42563, 42547, 42531, 42515, 42499, 42483, 42467, 42451, 42435, + 42419, 42403, 42387, 42371, 42355, 42339, 42323, 42307, 42291, 42275, + 42259, 42243, 42227, 42211, 42195, 42179, 42163, 42147, 42131, 42115, + 42099, 42083, 42067, 42051, 42035, 42019, 42003, 41987, 41971, 41955, + 41939, 41923, 41907, 41891, 41875, 41859, 41843, 41827, 41811, 41795, + 41779, 41763, 41747, 41731, 41715, 41699, 41683, 41667, 41651, 41635, + 41619, 41603, 41587, 41571, 41555, 41539, 41523, 41507, 41491, 41475, + 41459, 41443, 41427, 41411, 41395, 41379, 41363, 41347, 41331, 41315, + 41299, 41283, 41267, 41251, 41235, 41219, 41203, 41187, 41171, 41155, + 41139, 41123, 41107, 41091, 41075, 41059, 41043, 41027, 41011, 40995, + 40979, 40963, 40947, 40931, 40915, 40899, 40883, 40867, 40851, 40835, + 40819, 40803, 40787, 40771, 40755, 40739, 40723, 40707, 40691, 40675, + 40659, 40643, 40627, 40611, 40595, 40579, 40563, 40547, 40531, 40515, + 40499, 40483, 40467, 40451, 40435, 40419, 40403, 40387, 40371, 40355, + 40339, 40323, 40307, 40291, 40275, 40259, 40243, 40227, 40211, 40195, + 40179, 40163, 40147, 40131, 40115, 40099, 40083, 40067, 40051, 40035, + 40019, 40003, 39987, 39971, 39955, 39939, 39923, 39907, 39891, 39875, + 39859, 39843, 39827, 39811, 39795, 39779, 39763, 39747, 39731, 39715, + 39699, 39683, 39667, 39651, 39635, 39619, 39603, 39587, 39571, 39555, + 39539, 39523, 39507, 39491, 39475, 39459, 39443, 39427, 39411, 39395, + 39379, 39363, 39347, 39331, 39315, 39299, 39283, 39267, 39251, 39235, + 39219, 39203, 39187, 39171, 39155, 39139, 39123, 39107, 39091, 39075, + 39059, 39043, 39027, 39011, 38995, 38979, 38963, 38947, 38931, 38915, + 38899, 38883, 38867, 38851, 38835, 38819, 38803, 38787, 38771, 38755, + 38739, 38723, 38707, 38691, 38675, 38659, 38643, 38627, 38611, 38595, + 38579, 38563, 38547, 38531, 38515, 38499, 38483, 38467, 38451, 38435, + 38419, 38403, 38387, 38371, 38355, 38339, 38323, 38307, 38291, 38275, + 38259, 38243, 38227, 38211, 38195, 38179, 38163, 38147, 38131, 38115, + 38099, 38083, 38067, 38051, 38035, 38019, 38003, 37987, 37971, 37955, + 37939, 37923, 37907, 37891, 37875, 37859, 37843, 37827, 37811, 37795, + 37779, 37763, 37747, 37731, 37715, 37699, 37683, 37667, 37651, 37635, + 37619, 37603, 37587, 37571, 37555, 37539, 37523, 37507, 37491, 37475, + 37459, 37443, 37427, 37411, 37395, 37379, 37363, 37347, 37331, 37315, + 37299, 37283, 37267, 37251, 37235, 37219, 37203, 37187, 37171, 37155, + 37139, 37123, 37107, 37091, 37075, 37059, 37043, 37027, 37011, 36995, + 36979, 36963, 36947, 36931, 36915, 36899, 36883, 36867, 36851, 36835, + 36819, 36803, 36787, 36771, 36755, 36739, 36723, 36707, 36691, 36675, + 36659, 36643, 36627, 36611, 36595, 36579, 36563, 36547, 36531, 36515, + 36499, 36483, 36467, 36451, 36435, 36419, 36403, 36387, 36371, 36355, + 36339, 36323, 36307, 36291, 36275, 36259, 36243, 36227, 36211, 36195, + 36179, 36163, 36147, 36131, 36115, 36099, 36083, 36067, 36051, 36035, + 36019, 36003, 35987, 35971, 35955, 35939, 35923, 35907, 35891, 35875, + 35859, 35843, 35827, 35811, 35795, 35779, 35763, 35747, 35731, 35715, + 35699, 35683, 35667, 35651, 35635, 35619, 35603, 35587, 35571, 35555, + 35539, 35523, 35507, 35491, 35475, 35459, 35443, 35427, 35411, 35395, + 35379, 35363, 35347, 35331, 35315, 35299, 35283, 35267, 35251, 35235, + 35219, 35203, 35187, 35171, 35155, 35139, 35123, 35107, 35091, 35075, + 35059, 35043, 35027, 35011, 34995, 34979, 34963, 34947, 34931, 34915, + 34899, 34883, 34867, 34851, 34835, 34819, 34803, 34787, 34771, 34755, + 34739, 34723, 34707, 34691, 34675, 34659, 34643, 34627, 34611, 34595, + 34579, 34563, 34547, 34531, 34515, 34499, 34483, 34467, 34451, 34435, + 34419, 34403, 34387, 34371, 34355, 34339, 34323, 34307, 34291, 34275, + 34259, 34243, 34227, 34211, 34195, 34179, 34163, 34147, 34131, 34115, + 34099, 34083, 34067, 34051, 34035, 34019, 34003, 33987, 33971, 33955, + 33939, 33923, 33907, 33891, 33875, 33859, 33843, 33827, 33811, 33795, + 33779, 33763, 33747, 33731, 33715, 33699, 33683, 33667, 33651, 33635, + 33619, 33603, 33587, 33571, 33555, 33539, 33523, 33507, 33491, 33475, + 33459, 33443, 33427, 33411, 33395, 33379, 33363, 33347, 33331, 33315, + 33299, 33283, 33267, 33251, 33235, 33219, 33203, 33187, 33171, 33155, + 33139, 33123, 33107, 33091, 33075, 33059, 33043, 33027, 33011, 32995, + 32979, 32963, 32947, 32931, 32915, 32899, 32883, 32867, 32851, 32835, + 32819, 32803, 32787, 32771, 32755, 32739, 32723, 32707, 32691, 32675, + 32659, 32643, 32627, 32611, 32595, 32579, 32563, 32547, 32531, 32515, + 32499, 32483, 32467, 32451, 32435, 32419, 32403, 32387, 32371, 32355, + 32339, 32323, 32307, 32291, 32275, 32259, 32243, 32227, 32211, 32195, + 32179, 32163, 32147, 32131, 32115, 32099, 32083, 32067, 32051, 32035, + 32019, 32003, 31987, 31971, 31955, 31939, 31923, 31907, 31891, 31875, + 31859, 31843, 31827, 31811, 31795, 31779, 31763, 31747, 31731, 31715, + 31699, 31683, 31667, 31651, 31635, 31619, 31603, 31587, 31571, 31555, + 31539, 31523, 31507, 31491, 31475, 31459, 31443, 31427, 31411, 31395, + 31379, 31363, 31347, 31331, 31315, 31299, 31283, 31267, 31251, 31235, + 31219, 31203, 31187, 31171, 31155, 31139, 31123, 31107, 31091, 31075, + 31059, 31043, 31027, 31011, 30995, 30979, 30963, 30947, 30931, 30915, + 30899, 30883, 30867, 30851, 30835, 30819, 30803, 30787, 30771, 30755, + 30739, 30723, 30707, 30691, 30675, 30659, 30643, 30627, 30611, 30595, + 30579, 30563, 30547, 30531, 30515, 30499, 30483, 30467, 30451, 30435, + 30419, 30403, 30387, 30371, 30355, 30339, 30323, 30307, 30291, 30275, + 30259, 30243, 30227, 30211, 30195, 30179, 30163, 30147, 30131, 30115, + 30099, 30083, 30067, 30051, 30035, 30019, 30003, 29987, 29971, 29955, + 29939, 29923, 29907, 29891, 29875, 29859, 29843, 29827, 29811, 29795, + 29779, 29763, 29747, 29731, 29715, 29699, 29683, 29667, 29651, 29635, + 29619, 29603, 29587, 29571, 29555, 29539, 29523, 29507, 29491, 29475, + 29459, 29443, 29427, 29411, 29395, 29379, 29363, 29347, 29331, 29315, + 29299, 29283, 29267, 29251, 29235, 29219, 29203, 29187, 29171, 29155, + 29139, 29123, 29107, 29091, 29075, 29059, 29043, 29027, 29011, 28995, + 28979, 28963, 28947, 28931, 28915, 28899, 28883, 28867, 28851, 28835, + 28819, 28803, 28787, 28771, 28755, 28739, 28723, 28707, 28691, 28675, + 28659, 28643, 28627, 28611, 28595, 28579, 28563, 28547, 28531, 28515, + 28499, 28483, 28467, 28451, 28435, 28419, 28403, 28387, 28371, 28355, + 28339, 28323, 28307, 28291, 28275, 28259, 28243, 28227, 28211, 28195, + 28179, 28163, 28147, 28131, 28115, 28099, 28083, 28067, 28051, 28035, + 28019, 28003, 27987, 27971, 27955, 27939, 27923, 27907, 27891, 27875, + 27859, 27843, 27827, 27811, 27795, 27779, 27763, 27747, 27731, 27715, + 27699, 27683, 27667, 27651, 27635, 27619, 27603, 27587, 27571, 27555, + 27539, 27523, 27507, 27491, 27475, 27459, 27443, 27427, 27411, 27395, + 27379, 27363, 27347, 27331, 27315, 27299, 27283, 27267, 27251, 27235, + 27219, 27203, 27187, 27171, 27155, 27139, 27123, 27107, 27091, 27075, + 27059, 27043, 27027, 27011, 26995, 26979, 26963, 26947, 26931, 26915, + 26899, 26883, 26867, 26851, 26835, 26819, 26803, 26787, 26771, 26755, + 26739, 26723, 26707, 26691, 26675, 26659, 26643, 26627, 26611, 26595, + 26579, 26563, 26547, 26531, 26515, 26499, 26483, 26467, 26451, 26435, + 26419, 26403, 26387, 26371, 26355, 26339, 26323, 26307, 26291, 26275, + 26259, 26243, 26227, 26211, 26195, 26179, 26163, 26147, 26131, 26115, + 26099, 26083, 26067, 26051, 26035, 26019, 26003, 25987, 25971, 25955, + 25939, 25923, 25907, 25891, 25875, 25859, 25843, 25827, 25811, 25795, + 25779, 25763, 25747, 25731, 27205, 25452, 25436, 25420, 25404, 25388, + 25619, 25603, 25587, 25571, 25555, 25539, 25523, 25507, 25491, 25475, + 25459, 25443, 25427, 25411, 25395, 25379, 25363, 25347, 25331, 25315, + 25299, 25283, 25267, 25251, 25235, 25219, 25203, 25187, 25171, 25155, + 25139, 25123, 25107, 25091, 25075, 25059, 25043, 25027, 25011, 24995, + 24979, 24963, 24947, 24931, 24915, 24899, 24883, 24867, 24851, 24835, + 24819, 24803, 24787, 24771, 24755, 24739, 24723, 24707, 24691, 24675, + 24659, 24643, 24627, 24611, 24595, 24579, 24563, 24547, 24531, 24515, + 24499, 24483, 25465, 26164, 26148, 26132, 26931, 24140, 24124, 24108, + 24092, 24076, 24060, 24044, 24028, 24012, 23996, 23980, 23964, 23948, + 23932, 23916, 23900, 23884, 23868, 23852, 23836, 23820, 23804, 23788, + 23772, 23756, 23740, 23724, 23708, 23692, 23676, 23660, 23644, 23628, + 23612, 23596, 23580, 23564, 23548, 23532, 23516, 23500, 23484, 23468, + 23452, 23436, 23420, 23404, 23388, 23372, 23356, 23340, 23324, 23308, + 23292, 23276, 23260, 23244, 23228, 23212, 23196, 23180, 23164, 23148, + 23132, 23116, 23100, 23084, 23068, 23052, 23036, 23020, 23004, 22988, + 22972, 22956, 22940, 22924, 22908, 22892, 22876, 22860, 22844, 22828, + 22812, 22796, 22780, 22764, 22748, 22732, 22716, 22700, 22684, 22668, + 22652, 22636, 22620, 22604, 22588, 22572, 22556, 22540, 22524, 22508, + 22492, 22476, 22460, 22444, 22428, 22412, 22396, 22380, 22364, 22348, + 22332, 22316, 22547, 22531, 22515, 22499, 22483, 22467, 22451, 22435, + 22419, 22403, 22387, 22371, 22355, 22339, 22323, 22307, 22291, 22275, + 22259, 22243, 22227, 22211, 22195, 22179, 22163, 22147, 22131, 22115, + 22099, 22083, 22067, 22051, 22035, 22019, 22003, 21987, 21971, 21955, + 21939, 21923, 21907, 21891, 21875, 21859, 21843, 21827, 21811, 21795, + 21779, 21763, 21747, 21731, 21715, 21699, 21683, 21667, 21651, 21635, + 21619, 21603, 21587, 21571, 21555, 21539, 21523, 21507, 21491, 21475, + 21459, 21443, 21427, 21411, 21395, 21379, 21363, 21347, 21331, 21315, + 21299, 21283, 21267, 21251, 21235, 21219, 21203, 21187, 21171, 21155, + 21139, 21123, 21107, 21091, 21075, 21059, 21043, 21027, 21011, 20995, + 20979, 20963, 20947, 20931, 20915, 20899, 20883, 20867, 20851, 20835, + 20819, 20803, 20787, 20771, 20755, 20739, 20723, 20707, 20691, 20675, + 20659, 20643, 20627, 20611, 20595, 20579, 20563, 20547, 20531, 20515, + 20499, 20483, 20467, 20451, 20435, 20419, 20403, 20387, 20371, 20355, + 20339, 20323, 20307, 20291, 20275, 20259, 20243, 20227, 20211, 20195, + 20179, 20163, 20147, 20131, 20115, 20099, 20083, 20067, 20051, 20035, + 20019, 20003, 19987, 19971, 19955, 19939, 19923, 19907, 19891, 19875, + 19859, 19843, 19827, 19811, 19795, 19779, 19763, 19747, 19731, 19715, + 19699, 19683, 19667, 19651, 19635, 19619, 19603, 19587, 19571, 19555, + 19539, 19523, 19507, 19491, 19475, 19459, 19443, 19427, 19411, 19395, + 19379, 19363, 19347, 19331, 19315, 19299, 19283, 19267, 19251, 19235, + 19219, 19203, 19187, 19171, 19155, 19139, 19123, 19107, 19091, 19075, + 19059, 19043, 19027, 19011, 18995, 18979, 18963, 18947, 18931, 18915, + 18899, 18883, 18867, 18851, 18835, 18819, 18803, 18787, 18771, 18755, + 18739, 18723, 18707, 18691, 18675, 18659, 18643, 18627, 18611, 18595, + 18579, 18563, 18547, 18531, 18515, 18499, 18483, 18467, 18451, 18435, + 18419, 18403, 18387, 18371, 18355, 18339, 18323, 18307, 18291, 18275, + 18259, 18243, 18227, 18211, 18195, 18179, 18163, 18147, 18131, 18115, + 18099, 18083, 18067, 18051, 18035, 18019, 18003, 17987, 17971, 17955, + 17939, 17923, 17907, 17891, 17875, 17859, 17843, 17827, 17811, 17795, + 17779, 17763, 17747, 17731, 17715, 17699, 17683, 17667, 17651, 17635, + 17619, 17603, 17587, 17571, 17555, 17539, 17523, 17507, 17491, 17475, + 17459, 17443, 17427, 17411, 17395, 17379, 17363, 17347, 17331, 17315, + 17299, 17283, 17267, 17251, 17235, 17219, 17203, 17187, 17171, 17155, + 17139, 17123, 17107, 17091, 17075, 17059, 17043, 17027, 17011, 16995, + 16979, 16963, 16947, 16931, 16915, 16899, 16883, 16867, 16851, 16835, + 16819, 16803, 16787, 16771, 16755, 16739, 16723, 16707, 16691, 16675, + 16659, 16643, 16627, 16611, 16595, 16579, 16563, 16547, 16531, 16515, + 16499, 16483, 16467, 16451, 16435, 16419, 16403, 16387, 16371, 16355, + 16339, 16323, 16307, 16291, 16275, 16259, 16243, 16227, 16211, 16195, + 16179, 16163, 16147, 16131, 16115, 16099, 16083, 16067, 16051, 16035, + 16019, 16003, 15987, 15971, 15955, 15939, 15923, 15907, 15891, 15875, + 15859, 15843, 15827, 15811, 15795, 15779, 15763, 15747, 15731, 15715, + 15699, 15683, 15667, 15651, 15635, 15619, 15603, 15587, 15571, 15555, + 15539, 15523, 15507, 15491, 15475, 15459, 15443, 15427, 15411, 15395, + 15379, 15363, 15347, 15331, 15315, 15299, 15283, 15267, 15251, 15235, + 15219, 15203, 15187, 15171, 15155, 15139, 15123, 15107, 15091, 15075, + 15059, 15043, 15027, 15011, 14995, 14979, 14963, 14947, 14931, 14915, + 14899, 14883, 14867, 14851, 14835, 14819, 14803, 14787, 14771, 14755, + 14739, 14723, 14707, 14691, 14675, 14659, 14643, 14627, 14611, 14595, + 14579, 14563, 14547, 14531, 14515, 14499, 14483, 14467, 14451, 14435, + 14419, 14403, 14387, 14371, 14355, 14339, 14323, 14307, 14291, 14275, + 14259, 14243, 14227, 14211, 14195, 14179, 14163, 14147, 14131, 14115, + 14099, 14083, 14067, 14051, 14035, 14019, 14003, 13987, 13971, 13955, + 13939, 13923, 13907, 13891, 13875, 13859, 13843, 13827, 13811, 13795, + 13779, 13763, 13747, 13731, 13715, 13699, 13683, 13667, 13651, 13635, + 13619, 13603, 13587, 13571, 13555, 13539, 13523, 13507, 13491, 13475, + 13459, 13443, 13427, 13411, 13395, 13379, 13363, 13347, 13331, 13315, + 13299, 13283, 13267, 13251, 13235, 13219, 13203, 13187, 13171, 13155, + 13139, 13123, 13107, 13091, 13075, 13059, 13043, 13027, 13011, 12995, + 12979, 12963, 12947, 12931, 12915, 12899, 12883, 12867, 12851, 12835, + 12819, 12803, 12787, 12771, 12755, 12739, 12723, 12707, 12691, 12675, + 12659, 12643, 12627, 12611, 12595, 12579, 12563, 12547, 12531, 12515, + 12499, 12483, 12467, 12451, 12435, 12419, 12403, 12387, 12371, 12355, + 12339, 12323, 12307, 12291, 12275, 12259, 12243, 12227, 12211, 12195, + 12179, 12163, 12147, 12131, 12115, 12099, 12083, 12067, 12051, 12035, + 12019, 12003, 11987, 11971, 11955, 11939, 11923, 11907, 11891, 11875, + 11859, 11843, 11827, 11811, 11795, 11779, 11763, 11747, 11731, 11715, + 11699, 11683, 11667, 11651, 11635, 11619, 11603, 11587, 11571, 11555, + 11539, 11523, 11507, 11491, 11475, 11459, 11443, 11427, 11411, 11395, + 12871, 11116, 11100, 11084, 11068, 11052, 14050, 14034, 14018, 14002, + 13986, 13970, 13954, 13938, 13922, 13906, 13890, 13874, 13858, 13842, + 13826, 13810, 13794, 13778, 13762, 13746, 13730, 13714, 13698, 13682, + 13666, 13650, 13634, 13618, 13602, 13586, 13570, 13554, 13538, 13522, + 13506, 13490, 13474, 13458, 13442, 13426, 13410, 13394, 13378, 13362, + 13346, 13330, 13314, 13298, 13282, 13266, 13250, 13234, 13218, 13202, + 13186, 13170, 13154, 13138, 13122, 13106, 13090, 13074, 13058, 13042, + 13026, 13010, 12994, 12978, 12962, 12946, 12930, 12914, 12898, 12882, + 12866, 12850, 12834, 12818, 12802, 12786, 12770, 12754, 12738, 12722, + 12706, 12690, 12674, 12658, 12642, 12626, 12610, 12594, 12578, 12562, + 12546, 12530, 12514, 12498, 12482, 12466, 12450, 12434, 12418, 12402, + 12386, 12370, 12354, 12338, 12322, 12306, 12290, 12274, 12258, 12242, + 12226, 12210, 12194, 12178, 12162, 12146, 12130, 12114, 12098, 12082, + 12066, 12050, 12034, 12018, 12018, 12002, 11986, 11970, 11954, 11938, + 11922, 11906, 11890, 11874, 11858, 11842, 11826, 11810, 11794, 11778, + 11762, 11746, 11730, 11714, 11698, 11682, 11666, 11650, 11634, 11618, + 11602, 11586, 11570, 11554, 11538, 11522, 11506, 11490, 11474, 11458, + 11442, 11426, 11410, 11394, 11378, 11362, 11346, 11330, 11314, 11298, + 11282, 11266, 11250, 11234, 11218, 11202, 11186, 11170, 11154, 11138, + 11122, 11106, 11090, 11074, 11058, 11042, 11026, 11010, 10994, 10978, + 10962, 10946, 10930, 10914, 10898, 10882, 10866, 10850, 10834, 10818, + 10802, 10786, 10770, 10754, 10738, 10722, 10706, 10690, 10674, 10658, + 10642, 10626, 10610, 10594, 10578, 10562, 10546, 10530, 10514, 10498, + 10482, 10466, 10450, 10434, 10418, 10402, 10386, 10370, 10354, 10338, + 10322, 10306, 10290, 10274, 10258, 10242, 10226, 10210, 10194, 10178, + 10162, 10146, 10130, 10114, 10098, 10082, 10066, 10050, 10034, 10018, + 10002, 9986, 9970, 9954, 9938, 9922, 9906, 9890, 9874, 9858, + 9842, 9826, 9810, 9794, 9778, 9762, 9746, 9730, 9714, 9698, + 9682, 9666, 9650, 9634, 9618, 9602, 9586, 9570, 9554, 9538, + 9522, 9506, 9490, 9474, 9458, 9442, 9426, 9410, 9394, 9378, + 9362, 9346, 9330, 9314, 9298, 9282, 9266, 9250, 9234, 9218, + 9202, 9186, 9170, 9154, 9138, 9122, 9106, 9090, 9074, 9058, + 9042, 9026, 9010, 8994, 8978, 8962, 8946, 8930, 8914, 8898, + 8882, 8866, 8850, 8834, 8818, 8802, 8786, 8770, 8754, 8738, + 8722, 8706, 8690, 8674, 8658, 8642, 8626, 8610, 8594, 8578, + 8562, 8546, 8530, 8514, 8498, 8482, 8466, 8450, 8434, 8418, + 8402, 8386, 8370, 8354, 8338, 8322, 8306, 8290, 8274, 8258, + 8242, 8226, 8210, 8194, 8178, 8162, 8146, 8130, 8114, 8098, + 8082, 8066, 8050, 8034, 8018, 8002, 7986, 7970, 7954, 7938, + 7922, 7906, 7890, 7874, 7858, 7842, 7826, 7810, 7794, 7778, + 7762, 7746, 7730, 7714, 7698, 7682, 7666, 7650, 7634, 7618, + 7602, 7586, 7570, 7554, 7538, 7522, 7506, 7490, 7474, 7458, + 7442, 7426, 7410, 7394, 7378, 7362, 7346, 7330, 7314, 7298, + 7282, 7266, 7250, 7234, 7218, 7202, 7186, 7170, 7154, 7138, + 7122, 7106, 7090, 7074, 7058, 7042, 7026, 7010, 6994, 6978, + 6962, 6946, 6930, 6914, 6898, 6882, 6866, 6850, 6834, 6818, + 6802, 6786, 6770, 6754, 6738, 6722, 6706, 6690, 6674, 6658, + 6642, 6626, 6610, 6594, 6578, 6562, 6546, 6530, 6514, 6498, + 6482, 6466, 6450, 6434, 6418, 6402, 6386, 6370, 6354, 6338, + 6322, 6306, 6290, 6274, 6258, 6242, 6226, 6210, 6194, 6178, + 6162, 6146, 6130, 6114, 6098, 6082, 6066, 6050, 6034, 6018, + 6002, 5986, 5970, 5954, 5938, 5922, 5906, 5890, 5874, 5858, + 5842, 5826, 5810, 5794, 5778, 5762, 5746, 5730, 5714, 5698, + 5682, 5666, 5650, 5634, 2835, 2819, 2803, 2787, 2771, 2755, + 2739, 2723, 2707, 2691, 2675, 2659, 2643, 2627, 2611, 2595, + 2579, 2563, 3544, 2531, 2515, 2499, 3483, 2220, 2204, 2188, + 2172, 2156, 2140, 2124, 2108, 2092, 5122, 2869, 5106, 5100, + 2836, 2111, 2095, 2079, 2063, 2047, 2031, 2946, 1884, 1980, + 1967, 1951, 1935, 1919, 1903, 1887, 1871, 1855, 1839, 1823, + 1807, 1791, 1775, 1759, 1743, 1727, 1711, 1695, 1679, 1663, + 1647, 1633, 1500, 1599, 1583, 1567, 1551, 1533, 1519, 1503, + 2412, 1356, 1340, 2473, 1638, 1292, 2072, 4348, 4344, 3614, + 4328, 2227, 1295, 1279, 1263, 1247, 1231, 1215, 1199, 2172, + 1941, 295, 340, 340, 378, 4104, 2137, 2221, 1171, 1157, + 1139, 1107, 451, 907, 3976, 819, +}; + +static const jchar blocks1[] = { + 0, 65535, 63, 4, 4, 253, 189, 125, 61, 65533, + 65469, 65405, 65405, 65266, 65325, 65149, 64639, 64623, 65133, 64893, + 64829, 64765, 64701, 64637, 64573, 64509, 64445, 64381, 64317, 64253, + 64189, 64125, 64301, 63997, 63933, 63869, 63805, 63741, 63677, 63613, + 63549, 63485, 63421, 63357, 63293, 63229, 63165, 63101, 63037, 62973, + 62909, 62845, 62781, 62717, 62653, 62589, 62525, 62461, 62397, 62333, + 62269, 62205, 62141, 62077, 62013, 61949, 61885, 61821, 61757, 61693, + 61629, 61565, 61501, 61437, 61373, 61309, 61245, 61181, 61117, 61053, + 60989, 60925, 60861, 60797, 60733, 60669, 60605, 60541, 60477, 60413, + 60349, 60285, 60221, 60157, 60093, 60029, 59965, 59901, 59837, 59773, + 59709, 59645, 59581, 59517, 59453, 59389, 59325, 59261, 59197, 59133, + 59069, 59005, 58941, 58877, 58813, 58749, 58685, 58621, 58557, 58493, + 58429, 58365, 58301, 58237, 58173, 58109, 58045, 57981, 57917, 57853, + 57789, 57725, 57661, 57597, 57533, 57469, 57405, 57341, 57277, 57213, + 57149, 57085, 57021, 56957, 56893, 56829, 56765, 56701, 56637, 56573, + 56509, 56445, 56381, 56317, 56253, 56189, 56125, 56061, 55997, 55933, + 55869, 55805, 55741, 55677, 55613, 55549, 55485, 55421, 55357, 55293, + 55229, 55165, 55101, 55037, 54973, 54909, 54845, 54781, 54717, 54653, + 54589, 54525, 54461, 54397, 54333, 54269, 54205, 54141, 54077, 54013, + 53949, 53885, 53821, 53757, 53693, 53629, 53565, 53501, 53437, 53373, + 53309, 53245, 53181, 53117, 53053, 52989, 52925, 52861, 52797, 52733, + 52669, 52605, 52541, 52477, 52413, 52349, 52285, 52221, 52157, 52093, + 52029, 51965, 51901, 51837, 51773, 51709, 51645, 51581, 51517, 51453, + 51389, 51325, 51261, 51197, 51133, 51069, 51005, 50941, 50877, 50813, + 50749, 50685, 50621, 50557, 50493, 50429, 50365, 50301, 50237, 50173, + 50109, 50045, 49981, 49917, 49853, 49789, 49725, 49661, 49597, 49533, + 49469, 49405, 49341, 49277, 49213, 49149, 49085, 49021, 48957, 48893, + 48829, 48765, 48701, 48637, 48573, 48509, 48445, 48381, 48317, 48253, + 48189, 48125, 48061, 47997, 47933, 47869, 47805, 47741, 47677, 47613, + 47549, 47485, 47421, 47357, 47293, 47229, 47165, 47101, 47037, 46973, + 46909, 46845, 46781, 46717, 46653, 46589, 46525, 46461, 46397, 46333, + 46269, 46205, 46141, 46077, 46013, 45949, 45885, 45821, 45757, 45693, + 45629, 45565, 45501, 45437, 45373, 45309, 45245, 45181, 45117, 45053, + 44989, 44925, 44861, 44797, 44733, 44669, 44605, 44541, 44477, 44413, + 44349, 44285, 44221, 44157, 44093, 44029, 43965, 43901, 43837, 43773, + 43709, 43645, 43581, 43517, 43453, 43389, 43325, 43261, 43197, 43133, + 43069, 43005, 42941, 42877, 42813, 42749, 42685, 42621, 42557, 42493, + 42429, 42365, 42301, 42237, 42173, 42109, 42045, 41981, 41917, 41853, + 41789, 41725, 41661, 41597, 41533, 41469, 41405, 41341, 41277, 41213, + 41149, 41085, 41021, 40957, 40893, 40829, 40765, 40701, 40637, 40573, + 40509, 40445, 40381, 40317, 40253, 40189, 40125, 40061, 39997, 39933, + 39869, 39805, 39741, 39677, 39613, 39549, 39485, 39421, 39357, 39293, + 39229, 39165, 39101, 39037, 38973, 38909, 38845, 38781, 38717, 38653, + 38589, 38525, 38461, 38397, 38333, 38269, 38205, 38141, 38077, 38013, + 37949, 37885, 37821, 37757, 37693, 37629, 37565, 37501, 37437, 37373, + 37309, 37245, 37181, 37117, 37053, 36989, 36925, 36861, 36797, 36733, + 36669, 36605, 36541, 36477, 36413, 36349, 36285, 36221, 36157, 36093, + 36029, 35965, 35901, 35837, 35773, 35709, 35645, 35581, 35517, 35453, + 35389, 35325, 35261, 35197, 35133, 35069, 35005, 34941, 34877, 34813, + 34749, 34685, 34621, 34557, 34493, 34429, 34365, 34301, 34237, 34173, + 34109, 34045, 33981, 33917, 33853, 33789, 33725, 33661, 33597, 33533, + 33469, 33405, 33341, 33277, 33213, 33149, 33085, 33021, 32957, 32893, + 32829, 32765, 32701, 32637, 32573, 32509, 32445, 32381, 32317, 32253, + 32189, 32125, 32061, 31997, 31933, 31869, 31805, 31741, 31677, 31613, + 31549, 31485, 31421, 31357, 31293, 31229, 31165, 31101, 31037, 30973, + 30909, 30845, 30781, 30717, 30653, 30589, 30525, 30461, 30397, 30333, + 30269, 30205, 30141, 30077, 30013, 29949, 29885, 29821, 29757, 29693, + 29629, 29565, 29501, 29437, 29373, 29309, 29245, 29181, 29117, 29053, + 28989, 28925, 28861, 28797, 28733, 28669, 28605, 28541, 28477, 28413, + 28349, 28285, 28221, 28157, 28093, 28029, 27965, 27901, 27837, 27773, + 27709, 27645, 27581, 27517, 27453, 27389, 27325, 27261, 27197, 27133, + 27069, 27005, 26941, 26877, 26813, 26749, 26685, 26621, 26557, 26493, + 26429, 26365, 26301, 26237, 26173, 26109, 26045, 25981, 25917, 25853, + 25789, 25725, 25661, 25597, 25533, 25469, 25405, 25341, 25277, 25213, + 25149, 25085, 25021, 24957, 24893, 24829, 24765, 24701, 24637, 24573, + 24509, 24445, 24381, 24317, 24253, 24189, 24125, 24061, 23997, 23933, + 23869, 23805, 23741, 23677, 23613, 23549, 23485, 23421, 23357, 23293, + 23229, 23165, 23101, 23037, 22973, 22909, 22845, 22781, 22717, 22653, + 22589, 22525, 22461, 22397, 22333, 22269, 22205, 22141, 22077, 22013, + 21949, 21885, 21821, 21757, 21693, 21629, 21565, 21501, 21437, 21373, + 21309, 21245, 21181, 21117, 21053, 20989, 20925, 20861, 20797, 20733, + 20669, 20605, 20541, 20477, 20413, 20349, 20285, 20221, 20157, 20093, + 20029, 19965, 19901, 19837, 19773, 19709, 19645, 19581, 19517, 19453, + 19389, 19325, 19261, 19197, 19133, 19069, 19005, 18941, 18877, 18813, + 18749, 18685, 18621, 18557, 18493, 18429, 18365, 18301, 18237, 18173, + 18109, 18045, 17981, 17917, 17853, 17789, 17725, 17661, 17597, 17533, + 17469, 17405, 17341, 17277, 17213, 17149, 17085, 17021, 16957, 16893, + 16829, 16765, 16701, 16637, 16573, 16509, 16445, 16381, 16317, 16253, + 16189, 16125, 16061, 15997, 15933, 15869, 15805, 15741, 15677, 15613, + 15549, 15485, 15421, 15357, 15293, 15229, 15165, 15101, 15037, 14973, + 14909, 14845, 14781, 14717, 14653, 14589, 14525, 14461, 14397, 14333, + 14269, 14205, 14141, 14077, 14013, 13949, 13885, 13821, 13757, 13693, + 13629, 13565, 13501, 13437, 13373, 13309, 13245, 13181, 13117, 13053, + 12989, 12925, 12752, 12688, 12624, 12570, 12454, 12283, 12280, 12338, + 12349, 12285, 12221, 12157, 12397, 12374, 11965, 11901, 12340, 12394, + 12451, 12132, 12384, 12197, 11976, 11924, 11820, 11768, 11768, 11542, + 11484, 11426, 11368, 11744, 10813, 10749, 10685, 10621, 10557, 10493, + 10429, 10365, 10301, 10237, 10173, 10109, 10045, 9981, 9917, 9853, + 9789, 9725, 9661, 9597, 9533, 9469, 9405, 9341, 9277, 9213, + 9149, 9085, 9021, 8957, 8893, 8829, 8765, 8701, 8637, 8573, + 8509, 8445, 8381, 8317, 8253, 8189, 8125, 8061, 7997, 7933, + 7869, 7805, 7741, 7677, 7613, 7549, 7485, 7421, 7357, 7293, + 7229, 7165, 7101, 7037, 6973, 6909, 6845, 6781, 6717, 6653, + 6589, 6525, 6461, 6397, 6333, 6269, 6205, 6141, 6077, 6013, + 5949, 5885, 5821, 5757, 5693, 5629, 5565, 5501, 5437, 5373, + 5309, 5245, 5181, 5117, 5053, 4989, 4925, 4861, 4797, 4733, + 4669, 4605, 4541, 4477, 4413, 4349, 4285, 4221, 4157, 4093, + 4029, 3965, 3901, 3837, 3773, 3709, 3645, 3581, 3517, 3453, + 3389, 3325, 3261, 3197, 3133, 3069, 3005, 2941, 2877, 2813, + 2749, 2685, 2621, 2557, 2493, 2429, 2365, 2301, 2237, 2173, + 2109, 2045, 1981, 1917, 1853, 1789, 1725, 1661, 1597, 1533, + 1469, 1405, 1341, 1277, 1213, 1149, 1085, 1021, 957, 893, + 829, 765, 701, 637, +}; + +static const jchar blocks2[] = { + 0, 65408, 65280, 65152, 65024, 64896, 64768, 64640, 64512, 64384, + 64256, 64128, 64000, 63872, 63744, 63616, 63488, 63360, 63232, 63104, + 62976, 62848, 62720, 62592, 62464, 62336, 62208, 62080, 61952, 61824, + 61696, 61568, 61440, 61312, 61184, 61056, 60928, 60800, 60672, 60544, + 60416, 60288, 60160, 60032, 59904, 59776, 59648, 59520, 59392, 59264, + 59136, 59008, 58880, 58752, 58624, 58496, 58368, 58240, 58112, 57984, + 57856, 57728, 57600, 57472, 57344, 57216, 57088, 56960, 56832, 56704, + 56576, 56448, 56320, 56192, 56064, 55936, 55808, 55680, 55552, 55424, + 55296, 55168, 55040, 54912, 54784, 54656, 54528, 54400, 54272, 54144, + 54016, 53888, 53760, 53632, 53504, 53376, 53248, 53120, 52992, 52864, + 52736, 52608, 52480, 52352, 52224, 52096, 51968, 51840, 51712, 51584, + 51456, 51328, 51200, 51072, 50944, 50816, 50688, 50560, 50432, 50304, + 50176, 50048, 49920, 49792, 49664, 49536, 49408, 49280, 49152, 49024, + 48896, 48768, 48640, 48512, 48384, 48256, 48128, 48000, 47872, 47744, + 47616, 47488, 47360, 47232, 47104, 46976, 46848, 46720, 46592, 46464, + 46336, 46208, 46080, 45952, 45824, 45696, 45568, 45440, 45312, 45184, + 45056, 44928, 44800, 44672, 44544, 44416, 44288, 44160, 44032, 43904, + 43776, 43648, 43520, 43392, 43264, 43136, 43008, 42880, 42752, 42624, + 42496, 42368, 42240, 42112, 41984, 41856, 41728, 41600, 41472, 41344, + 41216, 41088, 40960, 40832, 40704, 40576, 40448, 40320, 40192, 40064, + 39936, 39808, 39680, 39552, 39424, 39296, 39168, 39040, 38912, 38784, + 38656, 38528, 38400, 38272, 38144, 38016, 37888, 37760, 37632, 37504, + 37376, 37248, 37120, 36992, 36864, 36736, 36608, 36480, 36352, 36224, + 36096, 35968, 35840, 35712, 35584, 35456, 35328, 35200, 35072, 34944, + 34816, 34688, 34560, 34432, 34304, 34176, 34048, 33920, 33792, 33664, + 33536, 33408, 33280, 33152, 33024, 32896, 32768, 32640, 32512, 32384, + 32256, 32128, 32000, 31872, 31744, 31616, 31488, 31360, 31232, 31104, + 30976, 30848, 30720, 30592, 30464, 30336, 30208, 30080, 29952, 29824, + 29696, 29568, 29440, 29312, 29184, 29056, 28928, 28800, 28672, 28544, + 28416, 28288, 28160, 28032, 27904, 27776, 27648, 27520, 27392, 27264, + 27136, 27008, 26880, 26752, 26624, 26496, 26368, 26240, 26112, 25984, + 25856, 25728, 25600, 25472, 25344, 25216, 25088, 24960, 24832, 24704, + 24576, 24448, 24320, 24192, 24064, 23936, 23808, 23680, 23552, 23424, + 23296, 23168, 23040, 22953, 22912, 22784, 22656, 22528, 22400, 22272, + 22144, 22016, 21888, 21760, 21632, 21504, 21376, 21248, 21120, 20992, + 20864, 20736, 20608, 20480, 20352, 20224, 20096, 19968, 19840, 19712, + 19584, 19456, 19328, 19200, 19072, 18944, 18816, 18688, 18560, 18432, + 18304, 18176, 18048, 17920, 17792, 17664, 17536, 17408, 17280, 17152, + 17024, 16896, 16768, 16640, 16512, 16384, 16256, 16128, 16000, 15872, + 15744, 15616, 15488, 15360, 15232, 15104, 14976, 14848, 14720, 14592, + 14464, 14336, 14208, 14080, 13952, 13824, 13696, 13568, 13440, 13312, + 13184, 13056, 12928, 12800, 12672, 12544, 12416, 12288, 12160, 12032, + 11904, 11776, 11648, 11520, 11392, 11264, 11136, 11008, 10880, 10752, + 10624, 10496, 10368, 10240, 10112, 9984, 9856, 9728, 9600, 9472, + 9344, 9216, 9088, 8960, 8832, 8704, 8576, 8448, 8320, 8192, + 8064, 7936, 7808, 7680, 7552, 7424, 7296, 7168, 7040, 6912, + 6784, 6656, 6528, 6400, 6272, 6144, 6016, 5888, 5760, 5632, + 5504, 5376, 5248, 5120, 4992, 4864, 4736, 4608, 4480, 4352, + 4224, 4096, 3968, 3840, 3712, 3584, 3456, 3328, 3200, 3072, + 2944, 2816, 2688, 2560, 2432, 2304, 2048, 1920, 1792, 1664, + 1634, 1536, 1408, 1280, 1152, 1024, 896, 768, 640, 512, + 384, 256, +}; + +static const jchar blocks14[] = { + 255, 0, 65280, 65168, 65152, 65024, 64896, 64768, 64640, 64512, + 64384, 64256, 64128, 64000, 63872, 63744, 63616, 63488, 63360, 63232, + 63104, 62976, 62848, 62720, 62592, 62464, 62336, 62208, 62080, 61952, + 61824, 61696, 61568, 61440, 61312, 61184, 61056, 60928, 60800, 60672, + 60544, 60416, 60288, 60160, 60032, 59904, 59776, 59648, 59520, 59392, + 59264, 59136, 59008, 58880, 58752, 58624, 58496, 58368, 58240, 58112, + 57984, 57856, 57728, 57600, 57472, 57344, 57216, 57088, 56960, 56832, + 56704, 56576, 56448, 56320, 56192, 56064, 55936, 55808, 55680, 55552, + 55424, 55296, 55168, 55040, 54912, 54784, 54656, 54528, 54400, 54272, + 54144, 54016, 53888, 53760, 53632, 53504, 53376, 53248, 53120, 52992, + 52864, 52736, 52608, 52480, 52352, 52224, 52096, 51968, 51840, 51712, + 51584, 51456, 51328, 51200, 51072, 50944, 50816, 50688, 50560, 50432, + 50304, 50176, 50048, 49920, 49792, 49664, 49536, 49408, 49280, 49152, + 49024, 48896, 48768, 48640, 48512, 48384, 48256, 48128, 48000, 47872, + 47744, 47616, 47488, 47360, 47232, 47104, 46976, 46848, 46720, 46592, + 46464, 46336, 46208, 46080, 45952, 45824, 45696, 45568, 45440, 45312, + 45184, 45056, 44928, 44800, 44672, 44544, 44416, 44288, 44160, 44032, + 43904, 43776, 43648, 43520, 43392, 43264, 43136, 43008, 42880, 42752, + 42624, 42496, 42368, 42240, 42112, 41984, 41856, 41728, 41600, 41472, + 41344, 41216, 41088, 40960, 40832, 40704, 40576, 40448, 40320, 40192, + 40064, 39936, 39808, 39680, 39552, 39424, 39296, 39168, 39040, 38912, + 38784, 38656, 38528, 38400, 38272, 38144, 38016, 37888, 37760, 37632, + 37504, 37376, 37248, 37120, 36992, 36864, 36736, 36608, 36480, 36352, + 36224, 36096, 35968, 35840, 35712, 35584, 35456, 35328, 35200, 35072, + 34944, 34816, 34688, 34560, 34432, 34304, 34176, 34048, 33920, 33792, + 33664, 33536, 33408, 33280, 33152, 33024, 32896, 32768, 32640, 32512, + 32384, 32256, 32128, 32000, 31872, 31744, 31616, 31488, 31360, 31232, + 31104, 30976, 30848, 30720, 30592, 30464, 30336, 30208, 30080, 29952, + 29824, 29696, 29568, 29440, 29312, 29184, 29056, 28928, 28800, 28672, + 28544, 28416, 28288, 28160, 28032, 27904, 27776, 27648, 27520, 27392, + 27264, 27136, 27008, 26880, 26752, 26624, 26496, 26368, 26240, 26112, + 25984, 25856, 25728, 25600, 25472, 25344, 25216, 25088, 24960, 24832, + 24704, 24576, 24448, 24320, 24192, 24064, 23936, 23808, 23680, 23552, + 23424, 23296, 23168, 23040, 22912, 22784, 22656, 22528, 22400, 22272, + 22144, 22016, 21888, 21760, 21632, 21504, 21376, 21248, 21120, 20992, + 20864, 20736, 20608, 20480, 20352, 20224, 20096, 19968, 19840, 19712, + 19584, 19456, 19328, 19200, 19072, 18944, 18816, 18688, 18560, 18432, + 18304, 18176, 18048, 17920, 17792, 17664, 17536, 17408, 17280, 17152, + 17024, 16896, 16768, 16640, 16512, 16384, 16256, 16128, 16000, 15872, + 15744, 15616, 15488, 15360, 15232, 15104, 14976, 14848, 14720, 14592, + 14464, 14336, 14208, 14080, 13952, 13824, 13696, 13568, 13440, 13312, + 13184, 13056, 12928, 12800, 12672, 12544, 12416, 12288, 12160, 12032, + 11904, 11776, 11648, 11520, 11392, 11264, 11136, 11008, 10880, 10752, + 10624, 10496, 10368, 10240, 10112, 9984, 9856, 9728, 9600, 9472, + 9344, 9216, 9088, 8960, 8832, 8704, 8576, 8448, 8320, 8192, + 8064, 7936, 7808, 7680, 7552, 7424, 7296, 7168, 7040, 6912, + 6784, 6656, 6528, 6400, 6272, 6144, 6016, 5888, 5760, 5632, + 5504, 5376, 5248, 5120, 4992, 4864, 4736, 4608, 4480, 4352, + 4224, 4096, 3968, 3840, 3712, 3584, 3456, 3328, 3200, 3072, + 2944, 2816, 2688, 2560, 2432, 2304, 2176, 2048, 1920, 1792, + 1664, 1536, 1408, 1280, 1152, 1024, 896, 768, 640, 512, + 384, 256, +}; + +static const int blocks_length[] = { + 4096, 1024, 512, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 512, -1, -1, }; +static const jchar* blocks[] = { + blocks0, blocks1, blocks2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, blocks14, NULL, NULL}; + +/** + * Information about each character. The low order 5 bits form the + * character type, the next bit is a flag for non-breaking spaces, and the + * next bit is a flag for mirrored directionality. The high order 9 bits + * form the offset into the attribute tables. Note that this limits the + * number of unique character attributes per plane to 512, which is not a + * problem as of Unicode version 4.0.0, but may soon become one. + */ +static const jchar data0[] = { + 8834, 8962, 9090, 9218, 9346, 9474, 9602, 9730, 9858, 9986, + 10114, 1109, 3225, 1238, 3225, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 143, 271, 143, 399, 271, 15, + 15, 15, 15, 15, 271, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 271, 271, 271, 143, 1801, 1929, 2057, 2185, 2313, + 2441, 2569, 2697, 2825, 2953, 1432, 664, 3161, 3225, 3161, + 664, 664, 3225, 664, 6807, 16256, 16256, 664, 16256, 16256, + 16256, 16256, 16256, 16256, 16256, 524, 664, 664, 792, 922, + 792, 664, 664, 1109, 1238, 664, 1305, 1432, 1556, 1432, + 1688, 10908, 1305, 11019, 11147, 6683, 11266, 10396, 664, 6683, + 11403, 10498, 11614, 11659, 11659, 11659, 664, 3329, 3457, 3585, + 3713, 3841, 3969, 4097, 4225, 4353, 4481, 4609, 4737, 4865, + 4993, 5121, 5249, 5377, 5505, 5633, 5761, 5889, 6017, 6145, + 6273, 6401, 6529, 1109, 664, 1238, 6683, 6807, 664, 664, + 664, 3225, 1109, 1238, 664, 664, 664, 664, 664, 664, + 664, 664, 664, 34189, 34318, 34448, 34576, 34704, 34832, 34960, + 33452, 10284, 664, 922, 922, 922, 922, 10396, 10396, 6683, + 10396, 10498, 10717, 3225, 10768, 10396, 6683, 6914, 7042, 7170, + 7298, 7426, 7554, 7682, 7810, 7938, 8066, 8194, 8322, 8450, + 8578, 8706, 19074, 11777, 11777, 11777, 11777, 11777, 11777, 11777, + 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 3225, + 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11906, 15361, 15491, + 15618, 12289, 12418, 15873, 16001, 12289, 12418, 12289, 12418, 12289, + 12418, 12289, 12418, 12801, 12289, 12418, 12289, 12418, 12289, 12418, + 12930, 19074, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, + 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 3225, 12034, + 12034, 12034, 12034, 12034, 12034, 12034, 12162, 16129, 10498, 12289, + 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, + 12418, 12289, 12418, 12289, 12418, 15746, 12289, 12418, 21404, 18310, + 18310, 18310, 18310, 16256, 21511, 21511, 12289, 12418, 12289, 12418, + 12289, 12418, 16256, 16256, 12289, 12418, 16256, 16256, 16256, 16256, + 16256, 16256, 18310, 24584, 16256, 16256, 16256, 16256, 15109, 15109, + 16256, 15109, 16256, 16256, 15109, 15109, 16256, 15109, 16256, 16256, + 15109, 16256, 16256, 11906, 32258, 11906, 16256, 11906, 19074, 33153, + 33153, 33281, 33281, 32515, 6683, 6683, 16256, 18310, 18310, 24584, + 16256, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, + 16256, 15109, 16256, 15109, 15109, 15109, 15109, 16256, 16256, 15109, + 15109, 15109, 15109, 15109, 15109, 15109, 16256, 16256, 16256, 15109, + 15109, 15109, 15109, 15109, 15109, 16256, 16256, 15109, 15109, 15109, + 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, + 21784, 21784, 15109, 15109, 15109, 15109, 15361, 15491, 15618, 15361, + 15491, 15618, 15361, 15491, 15618, 12289, 12418, 12289, 12418, 10498, + 10498, 10498, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, + 16256, 15109, 15109, 15109, 15109, 16256, 15109, 16256, 15109, 15109, + 16256, 15109, 15109, 15109, 15109, 15109, 16256, 16256, 18310, 15109, + 24584, 24584, 18310, 18310, 18310, 16256, 16256, 16256, 24584, 24584, + 16256, 16256, 24584, 24584, 18310, 16256, 16256, 12545, 12674, 12289, + 12418, 12289, 12418, 12289, 12418, 10498, 12289, 12418, 12289, 12418, + 12289, 12418, 12289, 12418, 11906, 11906, 11906, 11906, 11906, 30850, + 16256, 16256, 16256, 16256, 6683, 6683, 16256, 16256, 16256, 16256, + 18052, 16256, 16256, 16256, 664, 16256, 21633, 21633, 21633, 21633, + 21633, 21633, 21633, 21633, 21633, 21633, 21633, 21633, 21633, 21633, + 21633, 21633, 16256, 16256, 18052, 21784, 21784, 21784, 21784, 21784, + 21784, 21404, 21404, 21404, 21404, 21404, 18310, 18310, 21404, 21404, + 21404, 21404, 21404, 21404, 18310, 21404, 21404, 21404, 21404, 21404, + 21404, 16256, 16256, 21404, 15109, 16256, 16256, 16256, 16256, 16256, + 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, + 19842, 19970, 20097, 20097, 20097, 20226, 20354, 10498, 12289, 12418, + 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 11906, 12289, + 12418, 12289, 12418, 12289, 12418, 14721, 12289, 12418, 14721, 10498, + 10498, 12289, 12418, 14721, 12289, 17666, 10498, 10498, 17666, 10498, + 10498, 10498, 10498, 17666, 10498, 17794, 17794, 10498, 10498, 10498, + 10498, 17410, 10498, 10498, 17538, 10498, 10498, 10498, 10498, 10498, + 10498, 10498, 10498, 10498, 10498, 16386, 16514, 10498, 16642, 16642, + 10498, 16770, 10498, 16898, 10498, 10498, 10498, 10498, 13057, 12289, + 12418, 12289, 12418, 13185, 12289, 12418, 13313, 13313, 12289, 12418, + 10498, 13441, 13569, 13697, 12289, 12418, 13313, 13825, 13954, 14081, + 14209, 12289, 12418, 10498, 10498, 14081, 14337, 14466, 14593, 12418, + 14849, 14849, 12289, 12418, 12289, 12418, 14977, 12289, 12418, 10498, + 15109, 12289, 12418, 10498, 15234, 18310, 18310, 18310, 18310, 18310, + 18438, 18310, 18310, 18310, 18310, 18310, 18310, 18310, 18310, 18310, + 18310, 16256, 18310, 18310, 18310, 22168, 18310, 18310, 22168, 18310, + 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, + 16256, 24584, 16256, 16256, 16256, 16256, 15109, 15109, 16256, 15109, + 15109, 15109, 15109, 16256, 16256, 16256, 15109, 15109, 16256, 15109, + 16256, 15109, 15109, 16256, 15109, 15109, 16256, 15109, 15109, 16256, + 16256, 18310, 16256, 24584, 24584, 24584, 16256, 15109, 15109, 15109, + 15109, 15109, 15109, 15109, 15109, 16256, 15109, 15109, 15109, 16256, + 16256, 16256, 16256, 24584, 24584, 21784, 16256, 16256, 16256, 16256, + 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, + 16256, 16256, 24464, 24464, 24464, 10396, 10396, 16256, 16256, 16256, + 664, 664, 24713, 24841, 24969, 25097, 25225, 25353, 25481, 25609, + 25737, 25865, 16256, 16256, 16256, 16256, 16256, 16256, 18310, 15109, + 16256, 15109, 15109, 15109, 15109, 15109, 15109, 16256, 16256, 16256, + 15109, 15109, 16256, 16256, 16256, 15109, 15109, 15109, 16256, 16256, + 16256, 15109, 15109, 15109, 15109, 15109, 15109, 16256, 16256, 15109, + 15109, 15109, 16256, 16256, 16256, 21890, 21890, 21890, 21890, 21890, + 21890, 21890, 21890, 21890, 21890, 21890, 21890, 21890, 21890, 21890, + 21890, 11906, 16256, 21784, 22036, 16256, 16256, 16256, 16256, 16256, + 18310, 18310, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, + 16256, 22661, 22661, 22661, 22661, 22661, 22661, 22661, 22661, 22661, + 22661, 22661, 22661, 22661, 22661, 22661, 22661, 27541, 27670, 16642, + 10498, 10498, 17026, 10498, 10498, 10498, 10498, 17154, 17282, 10498, + 10498, 10498, 10498, 10498, 17282, 22416, 22416, 22416, 22416, 16256, + 16256, 16256, 16256, 16256, 16256, 16256, 16256, 1432, 22552, 10396, + 10396, 20097, 10396, 10396, 10396, 10396, 20097, 10396, 10396, 10498, + 20097, 20097, 20097, 10498, 10498, 17922, 10498, 10498, 10498, 10498, + 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498, + 10498, 10498, 18052, 18052, 18052, 18052, 18052, 18052, 18052, 18052, + 18052, 18052, 18052, 18052, 18052, 18052, 18052, 18052, 18180, 18180, + 18052, 18052, 18052, 18052, 18052, 6683, 6683, 6683, 6683, 6683, + 6683, 6683, 6683, 6683, 18052, 6683, 22036, 15109, 15109, 15109, + 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, + 15109, 15109, 16256, 15109, 15109, 15109, 15109, 15109, 15109, 15109, + 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 18052, + 18052, 6683, 6683, 6683, 6683, 18180, 18180, 18180, 18180, 18180, + 18180, 18180, 18180, 18180, 18180, 18052, 18052, 6683, 6683, 6683, + 6683, 6683, 6683, 6683, 6683, 6683, 6683, 6683, 6683, 6683, + 6683, 6683, 6683, 11906, 32258, 11906, 16256, 11906, 19074, 32769, + 32769, 32769, 32769, 32515, 6683, 6683, 6683, 10396, 44170, 44298, + 44426, 44554, 44682, 44810, 44938, 45066, 45194, 18310, 18310, 18310, + 18310, 18310, 18310, 18310, 18310, 16256, 18310, 18310, 18310, 18310, + 18310, 18310, 18310, 18310, 18310, 18310, 18310, 18310, 18310, 18310, + 18310, 18310, 16256, 21404, 21404, 25995, 26123, 26251, 26379, 21404, + 21404, 21404, 21404, 21404, 21404, 21404, 21404, 21404, 21404, 21404, + 10396, 3225, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, + 10396, 10396, 10396, 10396, 16256, 10396, 16256, 10396, 10396, 10396, + 10396, 16256, 10396, 10396, 10396, 10396, 16256, 16256, 10396, 10396, + 10396, 10396, 10396, 21404, 10396, 10396, 10396, 10396, 10396, 3225, + 3225, 3225, 3225, 3225, 27541, 27670, 664, 10396, 10396, 10396, + 10396, 10396, 10396, 10396, 10396, 10396, 10396, 16256, 10396, 10396, + 10396, 10396, 10396, 10396, 10396, 1109, 1238, 1109, 1238, 1109, + 1238, 1109, 1238, 29579, 29707, 29835, 29963, 30091, 30219, 30347, + 30475, 30603, 43915, 29579, 29707, 29835, 29963, 30091, 30219, 18310, + 18310, 18310, 18310, 18310, 18310, 18310, 18310, 16256, 16256, 16256, + 16256, 16256, 18310, 18310, 18310, 18310, 18310, 18310, 18310, 18310, + 18310, 18310, 18310, 18310, 18310, 18310, 24584, 24584, 16256, 16256, + 16256, 24584, 24584, 24584, 16256, 24584, 24584, 24584, 18310, 16256, + 16256, 18310, 24584, 24584, 16256, 15109, 15109, 15109, 15109, 15109, + 15109, 15109, 15109, 16256, 16256, 15109, 15109, 15109, 16256, 15109, + 16256, 15109, 16256, 16256, 15109, 15109, 16256, 15109, 15109, 15109, + 15109, 15109, 16256, 15109, 15109, 16256, 24584, 18310, 18310, 18310, + 18310, 16256, 16256, 24584, 24584, 16256, 16256, 24584, 24584, 18310, + 16256, 16256, 20482, 20610, 20738, 10498, 20865, 20994, 3225, 12289, + 12418, 21121, 12289, 12418, 16256, 16256, 16256, 16256, 6683, 6683, + 18561, 664, 18689, 18689, 18689, 16256, 18817, 16256, 18945, 18945, + 11777, 11777, 16256, 11777, 11777, 11777, 11777, 11777, 11777, 11777, + 11777, 11777, 19202, 19330, 19330, 19330, 12034, 12034, 19458, 12034, + 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 19586, 19714, + 19714, 16256, 18310, 18310, 24584, 16256, 15109, 15109, 15109, 15109, + 15109, 15109, 16256, 16256, 16256, 16256, 15109, 15109, 15109, 15109, + 16256, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, + 16256, 15109, 16256, 16256, 16256, 15109, 15109, 15109, 15109, 16256, + 16256, 18310, 15109, 24584, 24584, 18310, 24584, 24584, 24584, 24584, + 24584, 24584, 18310, 18310, 18310, 16256, 16256, 16256, 16256, 21249, + 21249, 21249, 21249, 21249, 21249, 21249, 21249, 21249, 21249, 21249, + 21249, 21249, 21249, 21249, 21249, 20610, 20610, 20610, 20610, 20610, + 20610, 20610, 20610, 20610, 20610, 20610, 20610, 20610, 20610, 20610, + 20610, 20097, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, + 12289, 12418, 12289, 12418, 12289, 12418, 16256, 16256, 16256, 16256, + 16256, 16256, 24713, 24841, 24969, 25097, 25225, 25353, 25481, 25609, + 25737, 25865, 27403, 27403, 27403, 27403, 27403, 27403, 21404, 18310, + 21404, 18310, 21404, 18310, 27541, 27670, 27541, 27670, 24584, 24584, + 18310, 18310, 18310, 16256, 18310, 16256, 24584, 24584, 24584, 24584, + 24584, 24584, 24584, 24584, 18310, 24584, 24584, 18310, 18310, 18310, + 18310, 18310, 18310, 18310, 18310, 24584, 24584, 24584, 24584, 18310, + 16256, 16256, 21784, 21784, 21784, 21784, 21784, 21784, 21784, 21784, + 24841, 24969, 25097, 25225, 25353, 25481, 25609, 18310, 18310, 18310, + 18310, 18310, 18310, 18310, 18310, 18310, 16256, 16256, 16256, 16256, + 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 11906, 11906, + 11906, 11906, 11906, 16256, 16256, 16256, 16256, 16256, 22277, 18310, + 22277, 22277, 16256, 22277, 22277, 16256, 22277, 22277, 22277, 22277, + 22277, 22277, 22277, 22277, 22277, 22277, 22277, 22277, 22277, 22277, + 22277, 22277, 16256, 16256, 16256, 16256, 16256, 24584, 24584, 16256, + 16256, 16256, 16256, 16256, 16256, 16256, 15109, 16256, 15109, 15109, + 16256, 15109, 15109, 15109, 15109, 15109, 16256, 16256, 18310, 15109, + 24584, 18310, 18310, 18310, 18310, 18310, 16256, 18310, 18310, 24584, + 16256, 24584, 24584, 18310, 16256, 16256, 664, 664, 792, 922, + 792, 664, 664, 1109, 1238, 664, 1305, 1432, 1556, 1432, + 1688, 22277, 22277, 22277, 22168, 22168, 16256, 16256, 16256, 16256, + 16256, 16256, 16256, 16256, 16256, 16256, 16256, 24584, 16256, 16256, + 16256, 16256, 16256, 16256, 16256, 16256, 11659, 11659, 11659, 11659, + 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 29579, 22921, + 23049, 23177, 23305, 23433, 23561, 23689, 23817, 23945, 24073, 792, + 24216, 24216, 22552, 22661, 22661, 22661, 22661, 22552, 22661, 18310, + 18310, 18310, 18310, 18310, 18310, 18310, 22416, 21511, 18310, 21511, + 21511, 21511, 18310, 18310, 18310, 18310, 18310, 18310, 16256, 16256, + 16256, 16256, 16256, 22552, 16256, 16256, 16256, 22552, 22552, 22552, + 22552, 22552, 22552, 22552, 22552, 22552, 22552, 22552, 22552, 22552, + 22552, 16256, 24464, 22788, 22661, 22661, 22661, 22661, 22661, 22661, + 22661, 22661, 22661, 22661, 18310, 18310, 18310, 18310, 18310, 18310, + 18310, 18310, 18310, 18310, 18310, 16256, 16256, 22661, 22661, 22661, + 22661, 22661, 16256, 22661, 22661, 22661, 22661, 22661, 22661, 22661, + 22661, 22661, 22661, 22661, 16256, 16256, 16256, 16256, 16256, 16256, + 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 24841, 24969, + 25097, 25225, 25353, 25481, 25609, 25737, 25865, 26763, 27787, 27915, + 28043, 28171, 28299, 28427, 28555, 28683, 26891, 28811, 16256, 16256, + 16256, 1801, 1929, 2057, 2185, 2313, 2441, 2569, 2697, 2825, + 2953, 22661, 22661, 22661, 24348, 24348, 22661, 18310, 22661, 22661, + 22661, 22661, 22661, 22661, 22661, 22661, 22661, 22661, 22661, 22661, + 22661, 22661, 22661, 16256, 16256, 24464, 24464, 24464, 24464, 16256, + 16256, 16256, 16256, 16256, 16256, 24464, 24464, 24464, 24464, 24464, + 24464, 18310, 18310, 18310, 18310, 18310, 22788, 22788, 18310, 18310, + 10396, 18310, 18310, 18310, 18310, 22661, 22661, 22661, 22661, 22661, + 22661, 22661, 22661, 22661, 22661, 22661, 22661, 50458, 10396, 16256, + 16256, 18310, 22661, 16256, 16256, 16256, 16256, 16256, 16256, 16256, + 16256, 16256, 16256, 16256, 16256, 16256, 16256, 1238, 664, 1109, + 1238, 664, 6807, 15109, 15109, 15109, 15109, 15109, 15109, 15109, + 15109, 15109, 15109, 16256, 16256, 16256, 16256, 24584, 24584, 16256, + 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 16256, 15109, + 15109, 15109, 15109, 15109, 16256, 16256, 16256, 16256, 18310, 18310, + 24584, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, + 15109, 15109, 15109, 27541, 27670, 16256, 16256, 16256, 524, 15109, + 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, + 15109, 15109, 15109, 15109, 16256, 16256, 16256, 16256, 16256, 15109, + 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, + 6807, 18052, 18052, 18052, 15109, 15109, 15109, 18052, 15109, 15109, + 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, + 15109, 15109, 15109, 16256, 16256, 18310, 15109, 24584, 24584, 24584, + 24584, 24584, 16256, 27142, 24584, 24584, 16256, 24584, 24584, 18310, + 18310, 16256, 16256, 16256, 16256, 18310, 18310, 16256, 16256, 18310, + 18310, 18310, 16256, 16256, 15109, 15109, 15109, 15109, 15109, 15109, + 15109, 16256, 16256, 18310, 18310, 6683, 6683, 18052, 18052, 15109, + 18310, 18310, 18310, 18310, 16256, 16256, 16256, 15109, 15109, 15109, + 15109, 15109, 15109, 15109, 15109, 15109, 16256, 16256, 21784, 16256, + 16256, 16256, 16256, 15109, 15109, 18310, 18310, 21784, 21784, 24713, + 24841, 24969, 25097, 25225, 25353, 25481, 25609, 25737, 25865, 21784, + 21784, 16256, 16256, 16256, 16256, 15109, 15109, 18310, 18310, 16256, + 16256, 24713, 24841, 24969, 25097, 25225, 25353, 25481, 25609, 25737, + 25865, 16256, 16256, 15109, 15109, 16256, 16256, 15109, 15109, 922, + 922, 25995, 26123, 26251, 26379, 26507, 26635, 21404, 16256, 16256, + 16256, 16256, 16256, 18310, 18310, 15109, 15109, 15109, 16256, 16256, + 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 15109, + 18310, 15109, 15109, 18310, 18310, 18310, 18310, 18310, 18310, 18310, + 16256, 16256, 16256, 16256, 922, 16256, 16256, 16256, 16256, 16256, + 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 15109, + 15109, 15109, 15109, 15109, 15109, 18052, 18310, 18310, 18310, 18310, + 18310, 18310, 18310, 18310, 21784, 18310, 18310, 15109, 15109, 15109, + 15109, 16256, 16256, 16256, 16256, 24713, 24841, 24969, 25097, 25225, + 25353, 25481, 25609, 25737, 25865, 21784, 21784, 21784, 21784, 21784, + 21784, 26763, 26891, 27019, 10396, 10396, 10396, 10396, 10396, 10396, + 922, 10396, 16256, 16256, 16256, 16256, 16256, 18310, 24584, 24584, + 24584, 24584, 16256, 18310, 18310, 18310, 16256, 18310, 18310, 18310, + 18310, 16256, 16256, 15109, 15109, 15109, 15109, 16256, 15109, 15109, + 15109, 15109, 15109, 16256, 16256, 18310, 15109, 24584, 27142, 24584, + 18310, 18310, 18310, 16256, 16256, 24584, 24584, 24584, 16256, 24584, + 24584, 24584, 18310, 16256, 16256, 15109, 15109, 15109, 15109, 15109, + 15109, 15109, 16256, 16256, 16256, 18310, 16256, 16256, 16256, 16256, + 24584, 24584, 16256, 15109, 15109, 15109, 15109, 15109, 15109, 15109, + 15109, 15109, 15109, 15109, 21784, 21784, 21784, 28938, 29066, 15109, + 18310, 15109, 15109, 18310, 18310, 18310, 18310, 18310, 18310, 16256, + 18310, 18310, 15109, 16256, 16256, 15109, 15109, 15109, 15109, 15109, + 16256, 18052, 16256, 18310, 18310, 18310, 18310, 18310, 18310, 16256, + 16256, 15109, 21404, 21404, 21404, 21784, 21784, 21784, 21784, 21784, + 21784, 21784, 21784, 27320, 21784, 21784, 21784, 18310, 24584, 18310, + 16256, 16256, 16256, 18310, 18310, 24584, 18310, 16256, 16256, 16256, + 16256, 16256, 16256, 15109, 15109, 15109, 15109, 15109, 15109, 24584, + 24584, 18310, 18310, 16256, 16256, 16256, 16256, 16256, 16256, 20097, + 20097, 10396, 20097, 10498, 15109, 15109, 15109, 15109, 10498, 10396, + 10396, 16256, 10498, 20097, 20097, 20097, 20097, 20097, 20097, 20097, + 20097, 20097, 20097, 20097, 20097, 20097, 20097, 20097, 20097, 16256, + 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 15109, + 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 16256, + 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, + 16256, 29194, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, + 16256, 16256, 16256, 16256, 16256, 16256, 16256, 15109, 15109, 18310, + 18310, 18310, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, + 16256, 16256, 16256, 15109, 15109, 18310, 18310, 18310, 21784, 21784, + 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 15109, + 15109, 18310, 18310, 16256, 16256, 16256, 16256, 16256, 16256, 16256, + 16256, 16256, 16256, 16256, 16256, 15109, 16256, 18310, 18310, 16256, + 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, + 16256, 15109, 15109, 15109, 15109, 29328, 29328, 24584, 18310, 18310, + 18310, 18310, 18310, 18310, 18310, 24584, 24584, 24584, 24584, 18310, + 18310, 30728, 30728, 30728, 16256, 16256, 16256, 16256, 18310, 18310, + 18310, 18310, 21784, 21784, 21784, 18052, 21784, 21784, 21784, 922, + 15109, 18310, 16256, 16256, 43275, 43403, 43531, 43659, 43787, 29579, + 29707, 29835, 29963, 30091, 30219, 30347, 30475, 30603, 43915, 29451, + 29579, 29707, 29835, 29963, 30091, 30219, 30347, 30475, 30603, 16256, + 16256, 16256, 16256, 16256, 16256, 664, 664, 664, 664, 664, + 664, 22036, 664, 664, 664, 664, 18310, 18310, 18310, 524, + 16256, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, + 18310, 16256, 16256, 16256, 16256, 16256, 16256, 20097, 20097, 20097, + 10498, 10396, 20097, 10396, 10396, 10396, 20097, 20097, 20097, 20097, + 20097, 10396, 10396, 3225, 10396, 3225, 10396, 10396, 10396, 10396, + 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, + 10396, 10396, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, + 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3161, 3161, + 3161, 3161, 3161, 3161, 3225, 3225, 1109, 1238, 3225, 3225, + 3225, 1109, 1238, 1109, 1238, 1109, 1238, 1109, 1238, 1109, + 1238, 1109, 1238, 1109, 1238, 3225, 3225, 3161, 3161, 3161, + 3161, 3161, 3225, 3225, 3225, 3225, 3225, 3161, 3225, 3161, + 3161, 3161, 3161, 3161, 3161, 3161, 3225, 3225, 3225, 3225, + 3225, 3161, 3225, 3161, 3225, 3161, 3161, 3161, 3161, 3161, + 3161, 3161, 3161, 3225, 3225, 3161, 3161, 3161, 3161, 3161, + 3161, 3161, 3161, 3225, 3161, 3225, 3161, 3161, 3161, 3225, + 3225, 3161, 3161, 3225, 3225, 3225, 3225, 3225, 3225, 3161, + 3225, 3225, 3225, 3161, 3161, 3161, 3161, 3161, 3225, 3161, + 3225, 3225, 3161, 3161, 3225, 3225, 3225, 3225, 3161, 3161, + 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, + 3161, 3225, 3225, 3161, 3225, 3161, 3225, 3225, 3161, 3225, + 3161, 3161, 3161, 3161, 3225, 3225, 3225, 3161, 3161, 3161, + 3161, 3161, 3161, 3225, 3225, 3225, 3161, 3225, 3225, 3225, + 3225, 3161, 3161, 3225, 3225, 3225, 3225, 3225, 3225, 3161, + 3161, 3161, 3225, 3225, 3225, 3225, 3225, 3161, 3225, 3225, + 3225, 3225, 3225, 3225, 3225, 3225, 3161, 3225, 3225, 3225, + 3225, 3225, 3225, 3225, 3161, 3161, 3225, 3225, 3225, 3225, + 3225, 3225, 3225, 10396, 10396, 10396, 10396, 10396, 3225, 3225, + 10396, 10396, 10396, 10396, 20097, 10396, 35969, 10396, 20097, 10396, + 36097, 36225, 20097, 20097, 10908, 10498, 18052, 18052, 10498, 10498, + 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498, 16256, 16256, + 16256, 16256, 30978, 30978, 30978, 30978, 30978, 30978, 30978, 30978, + 31105, 31105, 31105, 31105, 31105, 31105, 31105, 31105, 30978, 30978, + 30978, 30978, 30978, 30978, 16256, 16256, 31105, 31105, 31105, 31105, + 31105, 31105, 16256, 16256, 11906, 30978, 19074, 30978, 19074, 30978, + 19074, 30978, 16256, 31105, 16256, 31105, 16256, 31105, 16256, 31105, + 31234, 31234, 31362, 31362, 31362, 31362, 31490, 31490, 31618, 31618, + 31746, 31746, 31874, 31874, 16256, 16256, 32002, 32002, 32002, 32002, + 32002, 32002, 32002, 32002, 32131, 32131, 32131, 32131, 32131, 32131, + 32131, 32131, 30978, 30978, 11906, 32258, 11906, 16256, 11906, 19074, + 31105, 31105, 32385, 32385, 32515, 6683, 32642, 6683, 30978, 30978, + 19074, 19074, 16256, 16256, 11906, 19074, 31105, 31105, 32897, 32897, + 16256, 6683, 6683, 6683, 30978, 30978, 19074, 19074, 11906, 20738, + 11906, 19074, 31105, 31105, 33025, 33025, 21121, 6683, 6683, 6683, + 524, 524, 524, 524, 524, 524, 524, 33452, 524, 524, + 524, 33548, 24464, 24464, 29328, 33680, 22036, 33844, 22036, 22036, + 22036, 22036, 664, 664, 33949, 34078, 27541, 33949, 33949, 34078, + 27541, 33949, 1432, 664, 1432, 16256, 664, 1432, 664, 664, + 22036, 27541, 27670, 27541, 27670, 27541, 27670, 792, 792, 792, + 792, 792, 664, 664, 664, 664, 10717, 11614, 664, 664, + 664, 664, 6807, 35083, 10498, 16256, 16256, 35211, 35339, 35467, + 35595, 35723, 35851, 1305, 1305, 3225, 1109, 1238, 10498, 35083, + 11403, 11019, 11147, 35211, 35339, 35467, 35595, 35723, 35851, 1305, + 1305, 3225, 1109, 1238, 16256, 922, 922, 922, 922, 922, + 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, + 922, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, + 16256, 16256, 16256, 16256, 16256, 18310, 18310, 18310, 18310, 18310, + 18310, 18310, 18310, 18310, 18310, 18310, 18310, 18310, 21511, 21511, + 21511, 3225, 3225, 3225, 3161, 3161, 3161, 3161, 3225, 3225, + 3225, 3225, 3225, 3161, 3161, 3161, 3225, 3225, 3161, 3161, + 3161, 3161, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, + 3225, 3161, 3161, 3161, 3161, 3161, 3225, 3225, 3225, 3225, + 3225, 3161, 3161, 3161, 3225, 3225, 3161, 3161, 3225, 3225, + 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, + 3161, 3161, 3161, 3161, 3161, 3161, 3225, 3225, 3225, 3225, + 3225, 3161, 3161, 3225, 3225, 3225, 3225, 3161, 3161, 3161, + 3161, 3225, 3161, 1305, 1305, 3225, 3161, 3161, 3225, 3225, + 3225, 3161, 3161, 3161, 3161, 3225, 3161, 3225, 3161, 3225, + 3225, 3225, 3225, 3161, 3161, 3161, 3161, 3161, 3161, 3161, + 3161, 3161, 3161, 3161, 3161, 3161, 3225, 3161, 3161, 3225, + 3225, 1109, 1238, 1109, 1238, 3161, 3225, 3225, 3225, 3225, + 20097, 10498, 10498, 10498, 10498, 10396, 3225, 16256, 16256, 16256, + 16256, 36362, 36490, 36618, 36746, 36874, 37002, 37130, 37258, 37386, + 37514, 37642, 37770, 37898, 38026, 38154, 38282, 38410, 38538, 38666, + 38794, 38922, 39050, 39178, 39306, 39434, 39562, 39690, 39818, 39946, + 40074, 40202, 40330, 40458, 40586, 40714, 40842, 16256, 16256, 16256, + 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 3225, + 10396, 10396, 3225, 10396, 10396, 3225, 10396, 10396, 10396, 10396, + 10396, 10396, 10396, 3225, 10396, 10396, 10396, 10396, 10396, 10396, + 10396, 10396, 3161, 3161, 3161, 3161, 10396, 10396, 10396, 10396, + 10396, 10396, 10396, 1109, 1238, 10396, 10396, 10396, 10396, 10396, + 10396, 21404, 21404, 21404, 21404, 21404, 21404, 21404, 21404, 21404, + 21404, 21404, 21404, 21404, 21404, 21404, 21404, 10396, 10396, 16256, + 21404, 48267, 48395, 48523, 48651, 48779, 48907, 49035, 49163, 49291, + 49419, 49547, 49675, 49803, 49931, 50059, 30347, 30475, 30603, 43915, + 10396, 16256, 16256, 16256, 10396, 10396, 10396, 10396, 10396, 10396, + 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 16256, 16256, + 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, + 16256, 16256, 16256, 41355, 41483, 41611, 41739, 41867, 41995, 42123, + 42251, 11403, 11019, 11147, 35211, 35339, 35467, 35595, 35723, 35851, + 40971, 41099, 41227, 41355, 41483, 41611, 41739, 41867, 41995, 42123, + 42251, 21404, 21404, 21404, 21404, 21404, 21404, 21404, 21404, 21404, + 21404, 21404, 21404, 10396, 10396, 10396, 10396, 21404, 21404, 21404, + 21404, 21404, 21404, 21404, 21404, 21404, 21404, 21404, 21404, 21404, + 21404, 21404, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, + 16256, 16256, 16256, 16256, 25995, 26123, 26251, 26379, 45707, 45835, + 45963, 46091, 46219, 26763, 21404, 21404, 21404, 21404, 21404, 21404, + 42396, 42396, 42396, 42396, 42396, 42396, 42396, 42396, 42396, 42396, + 42396, 42396, 42396, 42396, 42396, 42396, 42524, 42524, 42524, 42524, + 42524, 42524, 42524, 42524, 42524, 42524, 42524, 42524, 42524, 42524, + 42524, 42524, 35083, 42635, 42763, 42891, 43019, 43147, 22036, 18052, + 18052, 18052, 18052, 18052, 10396, 10396, 45322, 45450, 45578, 18052, + 15109, 664, 10396, 10396, 10396, 16256, 16256, 16256, 10396, 16256, + 10396, 10396, 10396, 10396, 10396, 10396, 10396, 16256, 3225, 3225, + 3161, 3161, 3161, 3161, 1109, 1238, 1109, 1238, 1109, 1238, + 16256, 16256, 16256, 16256, 524, 664, 664, 664, 10396, 18052, + 15109, 44042, 1109, 1238, 1109, 1238, 1109, 1238, 1109, 1238, + 10396, 10396, 1109, 1238, 1109, 1238, 1109, 1238, 1109, 1238, + 22036, 27541, 27670, 27670, 10396, 46347, 46475, 46603, 46731, 46859, + 46987, 47115, 47243, 47371, 47499, 47627, 47755, 47883, 48011, 48139, + 50195, 50195, 50195, 50195, 50195, 50195, 50195, 50195, 50195, 50195, + 50195, 50195, 50195, 50195, 50195, 50195, 50322, 50322, 50322, 50322, + 50322, 50322, 50322, 50322, 50322, 50322, 50322, 50322, 50322, 50322, + 50322, 50322, 11906, 11906, 11906, 19074, 19074, 11906, 11906, 16256, + 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 22277, 22277, + 22277, 22277, 22277, 22277, 22277, 22277, 22277, 1305, 22277, 22277, + 22277, 22277, 22277, 22277, 22277, 16256, 22277, 22277, 22277, 22277, + 22277, 16256, 22277, 16256, 664, 22036, 22036, 6807, 6807, 27541, + 27670, 27541, 27670, 27541, 27670, 27541, 27670, 27541, 27670, 27541, + 27670, 664, 664, 27541, 27670, 664, 664, 664, 664, 6807, + 6807, 6807, 664, 664, 1305, 1556, 3225, 3225, 3225, 16256, + 664, 922, 792, 664, 16256, 16256, 16256, 16256, 8834, 8962, + 9090, 9218, 9346, 9474, 9602, 9730, 9858, 9986, 10114, 1109, + 3225, 1238, 3225, 1109, 922, 922, 3225, 6683, 10396, 922, + 922, 16256, 10396, 3225, 3225, 3225, 3225, 10396, 10396, 16256, +}; + +static const jchar data1[] = { + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 128, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 128, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 128, + 5, 5, 128, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 128, 128, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 6529, 6529, 6529, + 6529, 6529, 6529, 6529, 6529, 6529, 6529, 6529, 6529, 6529, + 6529, 6529, 6529, 6529, 6529, 6529, 6529, 6529, 6529, 6529, + 6529, 6529, 6529, 6529, 6529, 6529, 6529, 6529, 6529, 6529, + 6529, 6529, 6529, 6529, 6529, 6529, 6529, 6658, 6658, 6658, + 6658, 6658, 6658, 6658, 6658, 6658, 6658, 6658, 6658, 6658, + 6658, 6658, 6658, 6658, 6658, 6658, 6658, 6658, 6658, 6658, + 6658, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 128, 128, 128, 128, 128, + 280, 408, 540, 128, 128, 128, 128, 651, 779, 907, + 1035, 1163, 1291, 1419, 1547, 1675, 1803, 1931, 2059, 2187, + 2315, 2443, 2571, 2699, 2827, 2955, 3083, 3211, 3339, 3467, + 3595, 3723, 3851, 3979, 4107, 4235, 4363, 4491, 4619, 4747, + 4875, 5003, 5131, 5259, 5387, 5515, 5643, 5771, 5899, 6027, + 6155, 6283, 128, 128, 128, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 8200, 8200, 8326, 8326, 8326, 540, 540, 540, + 8200, 8200, 8200, 8200, 8200, 8200, 8464, 8464, 8464, 8464, + 8464, 8464, 8464, 8464, 8326, 8326, 8326, 8326, 8326, 540, + 540, 8326, 8326, 8326, 8326, 8326, 8326, 8326, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 8326, 8326, + 8326, 8326, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 128, 128, 128, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 6410, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 128, 651, + 1163, 1803, 2315, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 128, 280, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 128, + 128, 6793, 6921, 7049, 7177, 7305, 7433, 7561, 7689, 7817, + 7945, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 8069, 8069, 8069, 8069, 8069, 8069, 128, + 128, 8069, 128, 8069, 8069, 8069, 8069, 8069, 8069, 8069, + 8069, 8069, 8069, 8069, 8069, 8069, 8069, 8069, 8069, 8069, + 8069, 8069, 8069, 8069, 8069, 8069, 8069, 8069, 8069, 8069, + 8069, 8069, 8069, 8069, 8069, 8069, 8069, 8069, 8069, 8069, + 8069, 8069, 8069, 8069, 8069, 8069, 8069, 128, 8069, 8069, + 128, 128, 128, 8069, 128, 128, 8069, 8604, 8604, 8604, + 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, + 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, + 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, + 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, + 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, + 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, + 8604, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 8705, 8985, 8834, 8834, 8834, 8834, 8834, 8834, + 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, + 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8985, + 8834, 8834, 8834, 8834, 8834, 8834, 8705, 8705, 8705, 8705, + 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, + 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, + 8705, 8985, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, + 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, + 8834, 8834, 8834, 8834, 128, 8834, 8834, 8834, 8834, 8834, + 8834, 8834, 8834, 8834, 8834, 8834, 8705, 8705, 8705, 8705, + 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, + 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, + 8705, 8705, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, + 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, + 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8705, 8705, + 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, + 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, + 8705, 8705, 8705, 8705, 8834, 8834, 8834, 8834, 8834, 8834, + 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, + 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, + 128, 128, 128, 128, 8705, 8705, 8705, 8705, 8705, 8705, + 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, + 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8834, 8834, + 8834, 8834, 8834, 8834, 8834, 128, 8834, 8834, 8834, 8834, + 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, + 8834, 8834, 8834, 8834, 8705, 8705, 8705, 8705, 8705, 8705, + 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, + 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 128, 8705, + 128, 128, 128, 8705, 8705, 8705, 8705, 8705, 8705, 8705, + 128, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, + 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, + 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8705, 8705, 8705, + 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, + 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8834, 8834, 8834, + 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, + 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, + 8834, 8834, 8834, 8705, 128, 8705, 8705, 128, 128, 8705, + 128, 128, 8705, 8705, 128, 128, 8705, 8705, 8705, 8705, + 128, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8834, + 8834, 8834, 8834, 128, 8834, 128, 8834, 8834, 8834, 8834, + 8705, 8705, 128, 8705, 8705, 8705, 8705, 128, 128, 8705, + 8705, 8705, 8705, 8705, 8705, 8705, 8705, 128, 8705, 8705, + 8705, 8705, 8705, 8705, 8705, 128, 8834, 8834, 8834, 8834, + 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, + 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, + 8834, 8834, 8705, 8705, 128, 8705, 8705, 8705, 8705, 128, + 8834, 8834, 8834, 8985, 8834, 8834, 8834, 8834, 8834, 8834, + 128, 128, 128, 128, 9097, 9225, 9353, 9481, 9609, 9737, + 9865, 9993, 10121, 10249, 9097, 9225, 9353, 9481, 9609, 9737, + 9865, 9993, 10121, 10249, 9097, 9225, 9353, 9481, 9609, 9737, + 9865, 9993, 10121, 10249, 9097, 9225, 9353, 9481, 9609, 9737, + 9865, 9993, 10121, 10249, 9097, 9225, 9353, 9481, 9609, 9737, + 9865, 9993, 10121, 10249, +}; + +static const jchar data2[] = { + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, +}; + +static const jchar data14[] = { + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 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, 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, 144, 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, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, +}; + +static const int data_length[] = { + 3960, 1504, 256, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 383, -1, -1, }; +static const jchar* data[] = { + data0, data1, data2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, data14, NULL, NULL}; + + +/** + * This is the attribute table for computing the numeric value of a + * character. The value is -1 if Unicode does not define a value, -2 + * if the value is not a positive integer, otherwise it is the value. + */ +static const jshort numValue0[] = { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + -1, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, -1, -1, -1, -1, -1, -1, 2, 3, -1, 1, -1, + -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, + 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, 0, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, -1, + 16, 10, 100, 1000, -1, -1, -2, -1, -1, 20, 30, 40, 50, + 60, 70, 80, 90, 10000, 17, 18, 19, -1, 0, 1, 2, 3, + 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 0, 4, 5, 6, 7, 8, 9, -1, -1, -1, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 50, 100, 500, + 1000, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 50, 100, 500, 1000, 1000, 5000, 10000, -1, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, -1, -1, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 10, 0, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 20, 30, 5, 6, 7, 8, 9, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, -1, -1, -1, +}; + +static const jshort numValue1[] = { + -1, -1, -1, -1, -1, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200, 300, + 400, 500, 600, 700, 800, 900, 1000, 2000, 3000, 4000, 5000, 6000, 7000, + 8000, 9000, 10000, 20000, 30000, -3, -4, -5, -6, -7, -8, -1, -1, + -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, + -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, + 7, 8, 9, +}; + +static const jshort numValue2[] = { + -1, -1, +}; + +static const jshort numValue14[] = { + -1, -1, -1, +}; + +static const int numValue_length[] = { + 395, 81, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, }; +static const jshort* numValue[] = { + numValue0, numValue1, numValue2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, numValue14, NULL, NULL}; + + + +/** + * This is the attribute table for computing the uppercase representation + * of a character. The value is the difference between the character and + * its uppercase version. + */ +static const jshort upper0[] = { + 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, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, + -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, + -32, -32, 0, 0, 0, 0, 0, 0, 0, 0, 743, 0, 0, + 0, 0, 0, -32, 121, 0, -1, 0, -232, 0, -300, 0, 0, + 0, 0, 0, 0, 0, 97, 0, 0, 0, 130, 0, 0, 0, + 0, 0, 56, 0, -1, -2, -79, 0, 0, 0, 0, -210, -206, + -205, -202, -203, -207, -209, -211, -213, -214, -218, -217, -219, 0, 0, + 0, 84, 0, 0, 0, 0, 0, -38, -37, -31, -64, -63, -62, + -57, 0, -47, -54, -86, -80, 7, 0, -96, 0, 0, 0, 0, + 0, 0, -48, 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, -59, 8, 0, 74, 86, 100, + 128, 112, 126, 8, 0, 9, 0, 0, -7205, 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, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -26, 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, +}; + +static const jshort upper1[] = { + 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, + -40, 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, +}; + +static const jshort upper2[] = { + 0, 0, +}; + +static const jshort upper14[] = { + 0, 0, 0, +}; + +static const int upper_length[] = { + 395, 81, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, }; +static const jshort* upper[] = { + upper0, upper1, upper2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, upper14, NULL, NULL}; + + +/** + * This is the attribute table for computing the lowercase representation + * of a character. The value is the difference between the character and + * its lowercase version. + */ +static const jshort lower0[] = { + 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, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 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, 32, 0, 0, 0, 1, 0, -199, 0, -121, 0, 210, 206, + 205, 79, 202, 203, 207, 0, 211, 209, 213, 0, 214, 218, 217, + 219, 0, 0, 2, 1, 0, 0, -97, -56, -130, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 38, 37, 64, 63, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -60, 0, -7, 80, 0, 0, + 48, 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, -8, 0, 0, 0, + 0, 0, 0, 0, -8, 0, -74, -9, 0, -86, -100, -112, -128, + -126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -7517, -8383, -8262, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 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, 26, 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, +}; + +static const jshort lower1[] = { + 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, 40, + 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, +}; + +static const jshort lower2[] = { + 0, 0, +}; + +static const jshort lower14[] = { + 0, 0, 0, +}; + +static const int lower_length[] = { + 395, 81, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, }; +static const jshort* lower[] = { + lower0, lower1, lower2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, lower14, NULL, NULL}; + + +/** + * This is the attribute table for computing the directionality class + * of a character. At present, the value is in the range 0 - 18 if the + * character has a direction, otherwise it is -1. + */ +static const jbyte direction0[] = { + 9, 11, 10, 12, 12, 13, 5, 5, 13, 13, 5, 7, 5, 4, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 13, 13, 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, 13, 13, 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, 7, 13, 0, 13, 13, 5, 3, 3, 0, 3, 13, 13, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 8, 8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, + 0, 13, 1, 1, 2, 2, 2, 2, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 2, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 8, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 1, 13, 13, + 13, 12, 10, 14, 16, 18, 15, 17, 3, 3, 3, 3, 3, 3, 3, 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, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 0, 0, 2, +}; + +static const jbyte direction1[] = { + 0, -1, 0, 13, 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, 0, 8, 9, 13, 0, 0, 0, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, +}; + +static const jbyte direction2[] = { + 0, -1, +}; + +static const jbyte direction14[] = { + -1, 9, 8, +}; + +static const int direction_length[] = { + 395, 81, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, }; +static const jbyte* direction[] = { + direction0, direction1, direction2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, direction14, NULL, NULL}; + + +/** + * This is the listing of titlecase special cases (all other character + * can use upper to determine their titlecase). The listing + * is a sequence of character pairs; converting the first character of the + * pair to titlecase produces the second character. + */ +static const jchar title[] = { + 452, 453, 453, 453, 454, 453, 455, 456, 456, 456, + 457, 456, 458, 459, 459, 459, 460, 459, 497, 498, + 498, 498, 499, 498, + }; +/** Length of title. */ +static const int title_length = 24; + +#endif /* __JAVA_CHARTABLES_H__ */ diff --git a/libjava/java/lang/Character.java b/libjava/java/lang/Character.java index dfa3f17edac..ec6d2a4af14 100644 --- a/libjava/java/lang/Character.java +++ b/libjava/java/lang/Character.java @@ -2169,6 +2169,21 @@ public final class Character implements Serializable, Comparable private static native char readChar(char ch); /** + * Grabs an attribute offset from the Unicode attribute database. The lower + * 5 bits are the character type, the next 2 bits are flags, and the top + * 9 bits are the offset into the attribute tables. Note that the top 9 + * bits are meaningless in this context; they are useful only in the native + * code. + * + * @param codePoint the character to look up + * @return the character's attribute offset and type + * @see #TYPE_MASK + * @see #NO_BREAK_MASK + * @see #MIRROR_MASK + */ + private static native char readCodePoint(int codePoint); + + /** * Wraps up a character. * * @param value the character to wrap @@ -2257,6 +2272,26 @@ public final class Character implements Serializable, Comparable } /** + * Determines if a character is a Unicode lowercase letter. For example, + * 'a' is lowercase. Unlike isLowerCase(char), this method + * supports supplementary Unicode code points. + *
+ * lowercase = [Ll] + * + * @param codePoint character to test + * @return true if codePoint is a Unicode lowercase letter, else false + * @see #isUpperCase(int) + * @see #isTitleCase(int) + * @see #toLowerCase(int) + * @see #getType(int) + * @since 1.5 + */ + public static boolean isLowerCase(int codePoint) + { + return getType(codePoint) == LOWERCASE_LETTER; + } + + /** * Determines if a character is a Unicode uppercase letter. For example, * 'A' is uppercase. *
@@ -2275,6 +2310,26 @@ public final class Character implements Serializable, Comparable } /** + * Determines if a character is a Unicode uppercase letter. For example, + * 'A' is uppercase. Unlike isUpperCase(char), this method + * supports supplementary Unicode code points. + *
+ * uppercase = [Lu] + * + * @param codePoint character to test + * @return true if codePoint is a Unicode uppercase letter, else false + * @see #isLowerCase(int) + * @see #isTitleCase(int) + * @see #toUpperCase(int) + * @see #getType(int) + * @since 1.5 + */ + public static boolean isUpperCase(int codePoint) + { + return getType(codePoint) == UPPERCASE_LETTER; + } + + /** * Determines if a character is a Unicode titlecase letter. For example, * the character "Lj" (Latin capital L with small letter j) is titlecase. *
@@ -2293,6 +2348,27 @@ public final class Character implements Serializable, Comparable } /** + * Determines if a character is a Unicode titlecase letter. For example, + * the character "Lj" (Latin capital L with small letter j) is titlecase. + * Unlike isTitleCase(char), this method supports supplementary Unicode + * code points. + *
+ * titlecase = [Lt] + * + * @param codePoint character to test + * @return true if codePoint is a Unicode titlecase letter, else false + * @see #isLowerCase(int) + * @see #isUpperCase(int) + * @see #toTitleCase(int) + * @see #getType(int) + * @since 1.5 + */ + public static boolean isTitleCase(int codePoint) + { + return getType(codePoint) == TITLECASE_LETTER; + } + + /** * Determines if a character is a Unicode decimal digit. For example, * '0' is a digit. *
@@ -2310,6 +2386,25 @@ public final class Character implements Serializable, Comparable } /** + * Determines if a character is a Unicode decimal digit. For example, + * '0' is a digit. Unlike isDigit(char), this method + * supports supplementary Unicode code points. + *
+ * Unicode decimal digit = [Nd] + * + * @param codePoint character to test + * @return true if ccodePoint is a Unicode decimal digit, else false + * @see #digit(int, int) + * @see #forDigit(int, int) + * @see #getType(int) + * @since 1.5 + */ + public static boolean isDigit(int codePoint) + { + return getType(codePoint) == DECIMAL_DIGIT_NUMBER; + } + + /** * Determines if a character is part of the Unicode Standard. This is an * evolving standard, but covers every character in the data file. *
@@ -2330,6 +2425,28 @@ public final class Character implements Serializable, Comparable } /** + * Determines if a character is part of the Unicode Standard. This is an + * evolving standard, but covers every character in the data file. Unlike + * isDefined(char), this method supports supplementary Unicode code points. + *
+ * defined = not [Cn] + * + * @param codePoint character to test + * @return true if codePoint is a Unicode character, else false + * @see #isDigit(int) + * @see #isLetter(int) + * @see #isLetterOrDigit(int) + * @see #isLowerCase(int) + * @see #isTitleCase(int) + * @see #isUpperCase(int) + * @since 1.5 + */ + public static boolean isDefined(int codePoint) + { + return getType(codePoint) != UNASSIGNED; + } + + /** * Determines if a character is a Unicode letter. Not all letters have case, * so this may return true when isLowerCase and isUpperCase return false. *
@@ -2358,6 +2475,37 @@ public final class Character implements Serializable, Comparable } /** + * Determines if a character is a Unicode letter. Not all letters have case, + * so this may return true when isLowerCase and isUpperCase return false. + * Unlike isLetter(char), this method supports supplementary Unicode code + * points. + *
+ * letter = [Lu]|[Ll]|[Lt]|[Lm]|[Lo] + * + * @param codePoint character to test + * @return true if codePoint is a Unicode letter, else false + * @see #isDigit(int) + * @see #isJavaIdentifierStart(int) + * @see #isJavaLetter(int) + * @see #isJavaLetterOrDigit(int) + * @see #isLetterOrDigit(int) + * @see #isLowerCase(int) + * @see #isTitleCase(int) + * @see #isUnicodeIdentifierStart(int) + * @see #isUpperCase(int) + * @since 1.5 + */ + public static boolean isLetter(int codePoint) + { + return ((1 << getType(codePoint)) + & ((1 << UPPERCASE_LETTER) + | (1 << LOWERCASE_LETTER) + | (1 << TITLECASE_LETTER) + | (1 << MODIFIER_LETTER) + | (1 << OTHER_LETTER))) != 0; + } + + /** * Determines if a character is a Unicode letter or a Unicode digit. This * is the combination of isLetter and isDigit. *
@@ -2384,6 +2532,34 @@ public final class Character implements Serializable, Comparable } /** + * Determines if a character is a Unicode letter or a Unicode digit. This + * is the combination of isLetter and isDigit. Unlike isLetterOrDigit(char), + * this method supports supplementary Unicode code points. + *
+ * letter or digit = [Lu]|[Ll]|[Lt]|[Lm]|[Lo]|[Nd] + * + * @param codePoint character to test + * @return true if codePoint is a Unicode letter or a Unicode digit, else false + * @see #isDigit(int) + * @see #isJavaIdentifierPart(int) + * @see #isJavaLetter(int) + * @see #isJavaLetterOrDigit(int) + * @see #isLetter(int) + * @see #isUnicodeIdentifierPart(int) + * @since 1.5 + */ + public static boolean isLetterOrDigit(int codePoint) + { + return ((1 << getType(codePoint) + & ((1 << UPPERCASE_LETTER) + | (1 << LOWERCASE_LETTER) + | (1 << TITLECASE_LETTER) + | (1 << MODIFIER_LETTER) + | (1 << OTHER_LETTER) + | (1 << DECIMAL_DIGIT_NUMBER))) != 0); + } + + /** * Determines if a character can start a Java identifier. This is the * combination of isLetter, any character where getType returns * LETTER_NUMBER, currency symbols (like '$'), and connecting punctuation @@ -2405,6 +2581,35 @@ public final class Character implements Serializable, Comparable } /** + * Determines if a character can start a Java identifier. This is the + * combination of isLetter, any character where getType returns + * LETTER_NUMBER, currency symbols (like '$'), and connecting punctuation + * (like '_'). Unlike isJavaIdentifierStart(char), this method supports + * supplementary Unicode code points. + *
+ * Java identifier start = [Lu]|[Ll]|[Lt]|[Lm]|[Lo]|[Nl]|[Sc]|[Pc] + * + * @param codePoint character to test + * @return true if codePoint can start a Java identifier, else false + * @see #isJavaIdentifierPart(int) + * @see #isLetter(int) + * @see #isUnicodeIdentifierStart(int) + * @since 1.5 + */ + public static boolean isJavaIdentifierStart(int codePoint) + { + return ((1 << getType(codePoint)) + & ((1 << UPPERCASE_LETTER) + | (1 << LOWERCASE_LETTER) + | (1 << TITLECASE_LETTER) + | (1 << MODIFIER_LETTER) + | (1 << OTHER_LETTER) + | (1 << LETTER_NUMBER) + | (1 << CURRENCY_SYMBOL) + | (1 << CONNECTOR_PUNCTUATION))) != 0; + } + + /** * Determines if a character can follow the first letter in * a Java identifier. This is the combination of isJavaLetter (isLetter, * type of LETTER_NUMBER, currency, connecting punctuation) and digit, @@ -2494,6 +2699,45 @@ public final class Character implements Serializable, Comparable } /** + * Determines if a character can follow the first letter in + * a Java identifier. This is the combination of isJavaLetter (isLetter, + * type of LETTER_NUMBER, currency, connecting punctuation) and digit, + * numeric letter (like Roman numerals), combining marks, non-spacing marks, + * or isIdentifierIgnorable. Unlike isJavaIdentifierPart(char), this method + * supports supplementary Unicode code points. + *
+ * Java identifier extender = + * [Lu]|[Ll]|[Lt]|[Lm]|[Lo]|[Nl]|[Sc]|[Pc]|[Mn]|[Mc]|[Nd]|[Cf] + * |U+0000-U+0008|U+000E-U+001B|U+007F-U+009F + * + * @param codePoint character to test + * @return true if codePoint can follow the first letter in a Java identifier + * @see #isIdentifierIgnorable(int) + * @see #isJavaIdentifierStart(int) + * @see #isLetterOrDigit(int) + * @see #isUnicodeIdentifierPart(int) + * @since 1.5 + */ + public static boolean isJavaIdentifierPart(int codePoint) + { + int category = getType(codePoint); + return ((1 << category) + & ((1 << UPPERCASE_LETTER) + | (1 << LOWERCASE_LETTER) + | (1 << TITLECASE_LETTER) + | (1 << MODIFIER_LETTER) + | (1 << OTHER_LETTER) + | (1 << NON_SPACING_MARK) + | (1 << COMBINING_SPACING_MARK) + | (1 << DECIMAL_DIGIT_NUMBER) + | (1 << LETTER_NUMBER) + | (1 << CURRENCY_SYMBOL) + | (1 << CONNECTOR_PUNCTUATION) + | (1 << FORMAT))) != 0 + || (category == CONTROL && isIdentifierIgnorable(codePoint)); + } + + /** * Determines if a character can start a Unicode identifier. Only * letters can start a Unicode identifier, but this includes characters * in LETTER_NUMBER. @@ -2519,6 +2763,32 @@ public final class Character implements Serializable, Comparable } /** + * Determines if a character can start a Unicode identifier. Only + * letters can start a Unicode identifier, but this includes characters + * in LETTER_NUMBER. Unlike isUnicodeIdentifierStart(char), this method + * supports supplementary Unicode code points. + *
+ * Unicode identifier start = [Lu]|[Ll]|[Lt]|[Lm]|[Lo]|[Nl] + * + * @param codePoint character to test + * @return true if codePoint can start a Unicode identifier, else false + * @see #isJavaIdentifierStart(int) + * @see #isLetter(int) + * @see #isUnicodeIdentifierPart(int) + * @since 1.5 + */ + public static boolean isUnicodeIdentifierStart(int codePoint) + { + return ((1 << getType(codePoint)) + & ((1 << UPPERCASE_LETTER) + | (1 << LOWERCASE_LETTER) + | (1 << TITLECASE_LETTER) + | (1 << MODIFIER_LETTER) + | (1 << OTHER_LETTER) + | (1 << LETTER_NUMBER))) != 0; + } + + /** * Determines if a character can follow the first letter in * a Unicode identifier. This includes letters, connecting punctuation, * digits, numeric letters, combining marks, non-spacing marks, and @@ -2555,6 +2825,44 @@ public final class Character implements Serializable, Comparable } /** + * Determines if a character can follow the first letter in + * a Unicode identifier. This includes letters, connecting punctuation, + * digits, numeric letters, combining marks, non-spacing marks, and + * isIdentifierIgnorable. Unlike isUnicodeIdentifierPart(char), this method + * supports supplementary Unicode code points. + *
+ * Unicode identifier extender = + * [Lu]|[Ll]|[Lt]|[Lm]|[Lo]|[Nl]|[Mn]|[Mc]|[Nd]|[Pc]|[Cf]| + * |U+0000-U+0008|U+000E-U+001B|U+007F-U+009F + * + * @param codePoint character to test + * @return true if codePoint can follow the first letter in a Unicode + * identifier + * @see #isIdentifierIgnorable(int) + * @see #isJavaIdentifierPart(int) + * @see #isLetterOrDigit(int) + * @see #isUnicodeIdentifierStart(int) + * @since 1.5 + */ + public static boolean isUnicodeIdentifierPart(int codePoint) + { + int category = getType(codePoint); + return ((1 << category) + & ((1 << UPPERCASE_LETTER) + | (1 << LOWERCASE_LETTER) + | (1 << TITLECASE_LETTER) + | (1 << MODIFIER_LETTER) + | (1 << OTHER_LETTER) + | (1 << NON_SPACING_MARK) + | (1 << COMBINING_SPACING_MARK) + | (1 << DECIMAL_DIGIT_NUMBER) + | (1 << LETTER_NUMBER) + | (1 << CONNECTOR_PUNCTUATION) + | (1 << FORMAT))) != 0 + || (category == CONTROL && isIdentifierIgnorable(codePoint)); + } + + /** * Determines if a character is ignorable in a Unicode identifier. This * includes the non-whitespace ISO control characters ('\u0000' * through '\u0008', '\u000E' through @@ -2578,6 +2886,32 @@ public final class Character implements Serializable, Comparable } /** + * Determines if a character is ignorable in a Unicode identifier. This + * includes the non-whitespace ISO control characters ('\u0000' + * through '\u0008', '\u000E' through + * '\u001B', and '\u007F' through + * '\u009F'), and FORMAT characters. Unlike + * isIdentifierIgnorable(char), this method supports supplementary Unicode + * code points. + *
+ * Unicode identifier ignorable = [Cf]|U+0000-U+0008|U+000E-U+001B + * |U+007F-U+009F + * + * @param codePoint character to test + * @return true if codePoint is ignorable in a Unicode or Java identifier + * @see #isJavaIdentifierPart(int) + * @see #isUnicodeIdentifierPart(int) + * @since 1.5 + */ + public static boolean isIdentifierIgnorable(int codePoint) + { + return ((codePoint >= 0 && codePoint <= 0x0008) + || (codePoint >= 0x000E && codePoint <= 0x001B) + || (codePoint >= 0x007F && codePoint <= 0x009F) + || getType(codePoint) == FORMAT); + } + + /** * Converts a Unicode character into its lowercase equivalent mapping. * If a mapping does not exist, then the character passed is returned. * Note that isLowerCase(toLowerCase(ch)) does not always return true. @@ -2593,6 +2927,24 @@ public final class Character implements Serializable, Comparable public static native char toLowerCase(char ch); /** + * Converts a Unicode character into its lowercase equivalent mapping. + * If a mapping does not exist, then the character passed is returned. + * Note that isLowerCase(toLowerCase(codePoint)) does not always return true. + * Unlike toLowerCase(char), this method supports supplementary Unicode + * code points. + * + * @param codePoint character to convert to lowercase + * @return lowercase mapping of codePoint, or codePoint if lowercase + * mapping does not exist + * @see #isLowerCase(int) + * @see #isUpperCase(int) + * @see #toTitleCase(int) + * @see #toUpperCase(int) + * @since 1.5 + */ + public static native int toLowerCase(int codePoint); + + /** * Converts a Unicode character into its uppercase equivalent mapping. * If a mapping does not exist, then the character passed is returned. * Note that isUpperCase(toUpperCase(ch)) does not always return true. @@ -2608,6 +2960,24 @@ public final class Character implements Serializable, Comparable public static native char toUpperCase(char ch); /** + * Converts a Unicode character into its uppercase equivalent mapping. + * If a mapping does not exist, then the character passed is returned. + * Note that isUpperCase(toUpperCase(codePoint)) does not always return true. + * Unlike toUpperCase(char), this method supports supplementary + * Unicode code points. + * + * @param codePoint character to convert to uppercase + * @return uppercase mapping of codePoint, or codePoint if uppercase + * mapping does not exist + * @see #isLowerCase(int) + * @see #isUpperCase(int) + * @see #toLowerCase(int) + * @see #toTitleCase(int) + * @since 1.5 + */ + public static native int toUpperCase(int codePoint); + + /** * Converts a Unicode character into its titlecase equivalent mapping. * If a mapping does not exist, then the character passed is returned. * Note that isTitleCase(toTitleCase(ch)) does not always return true. @@ -2622,6 +2992,23 @@ public final class Character implements Serializable, Comparable public static native char toTitleCase(char ch); /** + * Converts a Unicode character into its titlecase equivalent mapping. + * If a mapping does not exist, then the character passed is returned. + * Note that isTitleCase(toTitleCase(codePoint)) does not always return true. + * Unlike toTitleCase(char), this method supports supplementary + * Unicode code points. + * + * @param codePoint character to convert to titlecase + * @return titlecase mapping of codePoint, or codePoint if titlecase + * mapping does not exist + * @see #isTitleCase(int) + * @see #toLowerCase(int) + * @see #toUpperCase(int) + * @since 1.5 + */ + public static native int toTitleCase(int codePoint); + + /** * Converts a character into a digit of the specified radix. If the radix * exceeds MIN_RADIX or MAX_RADIX, or if the result of getNumericValue(ch) * exceeds the radix, or if ch is not a decimal digit or in the case @@ -2642,6 +3029,28 @@ public final class Character implements Serializable, Comparable public static native int digit(char ch, int radix); /** + * Converts a character into a digit of the specified radix. If the radix + * exceeds MIN_RADIX or MAX_RADIX, or if the result of getNumericValue(int) + * exceeds the radix, or if codePoint is not a decimal digit or in the case + * insensitive set of 'a'-'z', the result is -1. Unlike digit(char, int), + * this method supports supplementary Unicode code points. + *
+ * character argument boundary = [Nd]|U+0041-U+005A|U+0061-U+007A + * |U+FF21-U+FF3A|U+FF41-U+FF5A + * + * @param codePoint character to convert into a digit + * @param radix radix in which codePoint is a digit + * @return digit which codePoint represents in radix, or -1 not a valid digit + * @see #MIN_RADIX + * @see #MAX_RADIX + * @see #forDigit(int, int) + * @see #isDigit(int) + * @see #getNumericValue(int) + * @since 1.5 + */ + public static native int digit(int codePoint, int radix); + + /** * Returns the Unicode numeric value property of a character. For example, * '\\u216C' (the Roman numeral fifty) returns 50. * @@ -2671,6 +3080,38 @@ public final class Character implements Serializable, Comparable public static native int getNumericValue(char ch); /** + * Returns the Unicode numeric value property of a character. For example, + * '\\u216C' (the Roman numeral fifty) returns 50. + * + *

This method also returns values for the letters A through Z, (not + * specified by Unicode), in these ranges: '\u0041' + * through '\u005A' (uppercase); '\u0061' + * through '\u007A' (lowercase); and '\uFF21' + * through '\uFF3A', '\uFF41' through + * '\uFF5A' (full width variants). + * + *

If the character lacks a numeric value property, -1 is returned. + * If the character has a numeric value property which is not representable + * as a nonnegative integer, such as a fraction, -2 is returned. + * + * Unlike getNumericValue(char), this method supports supplementary Unicode + * code points. + * + * character argument boundary = [Nd]|[Nl]|[No]|U+0041-U+005A|U+0061-U+007A + * |U+FF21-U+FF3A|U+FF41-U+FF5A + * + * @param codePoint character from which the numeric value property will + * be retrieved + * @return the numeric value property of codePoint, or -1 if it does not + * exist, or -2 if it is not representable as a nonnegative integer + * @see #forDigit(int, int) + * @see #digit(int, int) + * @see #isDigit(int) + * @since 1.5 + */ + public static native int getNumericValue(int codePoint); + + /** * Determines if a character is a ISO-LATIN-1 space. This is only the five * characters '\t', '\n', '\f', * '\r', and ' '. @@ -2714,6 +3155,26 @@ public final class Character implements Serializable, Comparable } /** + * Determines if a character is a Unicode space character. This includes + * SPACE_SEPARATOR, LINE_SEPARATOR, and PARAGRAPH_SEPARATOR. Unlike + * isSpaceChar(char), this method supports supplementary Unicode code points. + *
+ * Unicode space = [Zs]|[Zp]|[Zl] + * + * @param codePoint character to test + * @return true if codePoint is a Unicode space, else false + * @see #isWhitespace(int) + * @since 1.5 + */ + public static boolean isSpaceChar(int codePoint) + { + return ((1 << getType(codePoint)) + & ((1 << SPACE_SEPARATOR) + | (1 << LINE_SEPARATOR) + | (1 << PARAGRAPH_SEPARATOR))) != 0; + } + + /** * Determines if a character is Java whitespace. This includes Unicode * space characters (SPACE_SEPARATOR, LINE_SEPARATOR, and * PARAGRAPH_SEPARATOR) except the non-breaking spaces @@ -2751,6 +3212,47 @@ public final class Character implements Serializable, Comparable } /** + * Determines if a character is Java whitespace. This includes Unicode + * space characters (SPACE_SEPARATOR, LINE_SEPARATOR, and + * PARAGRAPH_SEPARATOR) except the non-breaking spaces + * ('\u00A0', '\u2007', and '\u202F'); + * and these characters: '\u0009', '\u000A', + * '\u000B', '\u000C', '\u000D', + * '\u001C', '\u001D', '\u001E', + * and '\u001F'. Unlike isWhitespace(char), this method + * supports supplementary Unicode code points. + *
+ * Java whitespace = ([Zs] not Nb)|[Zl]|[Zp]|U+0009-U+000D|U+001C-U+001F + * + * @param codePoint character to test + * @return true if codePoint is Java whitespace, else false + * @see #isSpaceChar(int) + * @since 1.5 + */ + public static boolean isWhitespace(int codePoint) + { + int plane = codePoint >>> 16; + if (plane > 2 && plane != 14) + return false; + int attr = readCodePoint(codePoint); + return ((((1 << (attr & TYPE_MASK)) + & ((1 << SPACE_SEPARATOR) + | (1 << LINE_SEPARATOR) + | (1 << PARAGRAPH_SEPARATOR))) != 0) + && (attr & NO_BREAK_MASK) == 0) + || (codePoint <= '\u001F' && ((1 << codePoint) + & ((1 << '\t') + | (1 << '\n') + | (1 << '\u000B') + | (1 << '\u000C') + | (1 << '\r') + | (1 << '\u001C') + | (1 << '\u001D') + | (1 << '\u001E') + | (1 << '\u001F'))) != 0); + } + + /** * Determines if a character has the ISO Control property. *
* ISO Control = [Cc] @@ -2767,6 +3269,24 @@ public final class Character implements Serializable, Comparable } /** + * Determines if a character has the ISO Control property. Unlike + * isISOControl(char), this method supports supplementary unicode + * code points. + *
+ * ISO Control = [Cc] + * + * @param codePoint character to test + * @return true if codePoint is an ISO Control character, else false + * @see #isSpaceChar(int) + * @see #isWhitespace(int) + * @since 1.5 + */ + public static boolean isISOControl(int codePoint) + { + return getType(codePoint) == CONTROL; + } + + /** * Returns the Unicode general category property of a character. * * @param ch character from which the general category property will @@ -2806,6 +3326,46 @@ public final class Character implements Serializable, Comparable public static native int getType(char ch); /** + * Returns the Unicode general category property of a character. Supports + * supplementary Unicode code points. + * + * @param codePoint character from which the general category property will + * be retrieved + * @return the character category property of codePoint as an integer + * @see #UNASSIGNED + * @see #UPPERCASE_LETTER + * @see #LOWERCASE_LETTER + * @see #TITLECASE_LETTER + * @see #MODIFIER_LETTER + * @see #OTHER_LETTER + * @see #NON_SPACING_MARK + * @see #ENCLOSING_MARK + * @see #COMBINING_SPACING_MARK + * @see #DECIMAL_DIGIT_NUMBER + * @see #LETTER_NUMBER + * @see #OTHER_NUMBER + * @see #SPACE_SEPARATOR + * @see #LINE_SEPARATOR + * @see #PARAGRAPH_SEPARATOR + * @see #CONTROL + * @see #FORMAT + * @see #PRIVATE_USE + * @see #SURROGATE + * @see #DASH_PUNCTUATION + * @see #START_PUNCTUATION + * @see #END_PUNCTUATION + * @see #CONNECTOR_PUNCTUATION + * @see #OTHER_PUNCTUATION + * @see #MATH_SYMBOL + * @see #CURRENCY_SYMBOL + * @see #MODIFIER_SYMBOL + * @see #INITIAL_QUOTE_PUNCTUATION + * @see #FINAL_QUOTE_PUNCTUATION + * @since 1.5 + */ + public static native int getType(int codePoint); + + /** * Converts a digit into a character which represents that digit * in a specified radix. If the radix exceeds MIN_RADIX or MAX_RADIX, * or the digit exceeds the radix, then the null character '\0' @@ -2859,6 +3419,37 @@ public final class Character implements Serializable, Comparable public static native byte getDirectionality(char ch); /** + * Returns the Unicode directionality property of the character. This + * is used in the visual ordering of text. Unlike getDirectionality(char), + * this method supports supplementary Unicode code points. + * + * @param codePoint the character to look up + * @return the directionality constant, or DIRECTIONALITY_UNDEFINED + * @see #DIRECTIONALITY_UNDEFINED + * @see #DIRECTIONALITY_LEFT_TO_RIGHT + * @see #DIRECTIONALITY_RIGHT_TO_LEFT + * @see #DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC + * @see #DIRECTIONALITY_EUROPEAN_NUMBER + * @see #DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR + * @see #DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR + * @see #DIRECTIONALITY_ARABIC_NUMBER + * @see #DIRECTIONALITY_COMMON_NUMBER_SEPARATOR + * @see #DIRECTIONALITY_NONSPACING_MARK + * @see #DIRECTIONALITY_BOUNDARY_NEUTRAL + * @see #DIRECTIONALITY_PARAGRAPH_SEPARATOR + * @see #DIRECTIONALITY_SEGMENT_SEPARATOR + * @see #DIRECTIONALITY_WHITESPACE + * @see #DIRECTIONALITY_OTHER_NEUTRALS + * @see #DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING + * @see #DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE + * @see #DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING + * @see #DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE + * @see #DIRECTIONALITY_POP_DIRECTIONAL_FORMAT + * @since 1.5 + */ + public static native byte getDirectionality(int codePoint); + + /** * Determines whether the character is mirrored according to Unicode. For * example, \u0028 (LEFT PARENTHESIS) appears as '(' in * left-to-right text, but ')' in right-to-left text. @@ -2873,6 +3464,24 @@ public final class Character implements Serializable, Comparable } /** + * Determines whether the character is mirrored according to Unicode. For + * example, \u0028 (LEFT PARENTHESIS) appears as '(' in + * left-to-right text, but ')' in right-to-left text. Unlike + * isMirrored(char), this method supports supplementary Unicode code points. + * + * @param codePoint the character to look up + * @return true if the character is mirrored + * @since 1.5 + */ + public static boolean isMirrored(int codePoint) + { + int plane = codePoint >>> 16; + if (plane > 2 && plane != 14) + return false; + return (readCodePoint(codePoint) & MIRROR_MASK) != 0; + } + + /** * Compares another Character to this Character, numerically. * * @param anotherCharacter Character to compare with this Character diff --git a/libjava/java/lang/Runtime.java b/libjava/java/lang/Runtime.java index 519b4ac8c5e..3466f19f2a0 100644 --- a/libjava/java/lang/Runtime.java +++ b/libjava/java/lang/Runtime.java @@ -146,9 +146,20 @@ public class Runtime SecurityManager sm = SecurityManager.current; // Be thread-safe! if (sm != null) sm.checkExit(status); + exitNoChecks(status); + } + // Accessor to avoid adding a vtable slot. + static void exitNoChecksAccessor(int status) + { + current.exitNoChecks(status); + } + + // Private since we can't add a vtable slot in 4.1.x. + private void exitNoChecks(int status) + { if (runShutdownHooks()) - halt(status); + exitInternal(status); // Someone else already called runShutdownHooks(). // Make sure we are not/no longer in the shutdownHooks set. @@ -171,7 +182,7 @@ public class Runtime // while finalization for exit is going on and the status is non-zero // we halt immediately. if (status != 0) - halt(status); + exitInternal(status); while (true) try diff --git a/libjava/java/lang/natCharacter.cc b/libjava/java/lang/natCharacter.cc index e9362fe1bf4..8d246dd566e 100644 --- a/libjava/java/lang/natCharacter.cc +++ b/libjava/java/lang/natCharacter.cc @@ -45,30 +45,91 @@ exception statement from your version. */ +// These constants define the return values for characters that are unassigned +// or reserved for private use. +#define UNASSIGNED_TYPE 0 +#define UNASSIGNED_DIGIT -1 +#define UNASSIGNED_DIRECTION -1 +#define UNASSIGNED_NUMERIC_VALUE -1 + +#define PRIVATE_TYPE 18 +#define PRIVATE_DIRECTION 0 + +// The methods that take a char as an argument all have counterparts that +// take ints. The ones that take chars only work for the BMP or plane 0 of the +// Unicode standard but the ones that take ints work for all Unicode code +// points. However, the ones that take chars don't simply redirect the calls +// because the BMP is by far the most used plane so saving a little time on +// each call makes sense. + jchar java::lang::Character::readChar(jchar ch) { // Perform 16-bit addition to find the correct entry in data. - return data[(jchar) (blocks[ch >> SHIFT] + ch)]; + return data[0][(jchar) (blocks[0][ch >> shift[0]] + ch)]; +} + +jchar +java::lang::Character::readCodePoint(jint codePoint) +{ + jint plane = codePoint >> 16; + jchar offset = (jchar)(codePoint & 0xffff); + // Be careful not to call this method with an unassigned character. The only + // characters assigned as of Unicode 4.0.0 belong to planes 0, 1, 2, and 14. + return data[plane][(jchar) (blocks[plane][offset >> shift[plane]] + offset)]; } jint java::lang::Character::getType(jchar ch) { // Perform 16-bit addition to find the correct entry in data. - return (jint) (data[(jchar) (blocks[ch >> SHIFT] + ch)] & TYPE_MASK); + return (jint) (data[0][(jchar) (blocks[0][ch >> shift[0]] + ch)] & TYPE_MASK); +} + +jint +java::lang::Character::getType(jint codePoint) +{ + jint plane = codePoint >> 16; + if (plane > 2 && plane != 14) + { + if (plane > 14 && ((codePoint & 0xffff) < 0xfffe)) + return (jint) PRIVATE_TYPE; + return (jint) UNASSIGNED_TYPE; + } + jint offset = codePoint & 0xffff; + return (jint) + (data[plane] + [(jchar) (blocks[plane][offset >> shift[plane]] + offset)] & TYPE_MASK); } jchar java::lang::Character::toLowerCase(jchar ch) { - return (jchar) (ch + lower[readChar(ch) >> 7]); + return (jchar) (ch + lower[0][readChar(ch) >> 7]); +} + +jint +java::lang::Character::toLowerCase(jint codePoint) +{ + jint plane = codePoint >> 16; + if (plane > 2 && plane != 14) + return codePoint; + return (lower[plane][readCodePoint(codePoint) >> 7]) + codePoint; } jchar java::lang::Character::toUpperCase(jchar ch) { - return (jchar) (ch + upper[readChar(ch) >> 7]); + return (jchar) (ch + upper[0][readChar(ch) >> 7]); +} + +jint +java::lang::Character::toUpperCase(jint codePoint) +{ + jint plane = codePoint >> 16; + if (plane > 2 && plane != 14) + return codePoint; + return (upper[plane][readCodePoint(codePoint) >> 7]) + codePoint; } jchar @@ -82,6 +143,16 @@ java::lang::Character::toTitleCase(jchar ch) } jint +java::lang::Character::toTitleCase(jint codePoint) +{ + // As of Unicode 4.0.0 no characters outside of plane 0 have titlecase + // mappings that are different from their uppercase mapping. + if (codePoint < 0x10000) + return toTitleCase((jchar)codePoint); + return toUpperCase(codePoint); +} + +jint java::lang::Character::digit(jchar ch, jint radix) { if (radix < MIN_RADIX || radix > MAX_RADIX) @@ -93,21 +164,74 @@ java::lang::Character::digit(jchar ch, jint radix) | (1 << DECIMAL_DIGIT_NUMBER)))) { // Signedness doesn't matter; 0xffff vs. -1 are both rejected. - jint digit = (jint) numValue[attr >> 7]; + jint digit = (jint) numValue[0][attr >> 7]; return (digit >= 0 && digit < radix) ? digit : (jint) -1; } return (jint) -1; } jint +java::lang::Character::digit(jint codePoint, jint radix) +{ + if (radix < MIN_RADIX || radix > MAX_RADIX) + return (jint) -1; + + jint plane = codePoint >> 16; + if (plane > 2 && plane != 14) + return UNASSIGNED_DIGIT; + + jchar attr = readCodePoint(codePoint); + if (((1 << (attr & TYPE_MASK)) + & ((1 << UPPERCASE_LETTER) + | (1 << LOWERCASE_LETTER) + | (1 << DECIMAL_DIGIT_NUMBER)))) + { + // Signedness doesn't matter; 0xffff vs. -1 are both rejected. + jint digit = (jint) numValue[plane][attr >> 7]; + if (digit <= -3) + digit = largenums[-digit -3]; + return (digit >= 0 && digit < radix) ? digit : (jint) -1; + } + return (jint) -1; + +} + +jint java::lang::Character::getNumericValue(jchar ch) { // numValue is stored as an array of jshort, since 10000 is the maximum. - return (jint) numValue[readChar(ch) >> 7]; + return (jint) numValue[0][readChar(ch) >> 7]; +} + +jint +java::lang::Character::getNumericValue(jint codePoint) +{ + jint plane = codePoint >> 16; + if (plane > 2 && plane != 14) + return UNASSIGNED_NUMERIC_VALUE; + jshort num = numValue[plane][readCodePoint(codePoint) >> 7]; + if (num <= -3) + return largenums[-num - 3]; + return num; } jbyte java::lang::Character::getDirectionality(jchar ch) { - return direction[readChar(ch) >> 7]; + return direction[0][readChar(ch) >> 7]; } + +jbyte +java::lang::Character::getDirectionality(jint codePoint) +{ + jint plane = codePoint >> 16; + if (plane > 2 && plane != 14) + { + if (plane > 14 && ((codePoint & 0xffff) < 0xfffe)) + return (jint) PRIVATE_DIRECTION; + return (jint) UNASSIGNED_DIRECTION; + } + return direction[plane][readCodePoint(codePoint) >> 7]; +} + + diff --git a/libjava/libltdl/COPYING.LIB b/libjava/libltdl/COPYING.LIB index c4792dd27a3..ba2be481c1b 100644 --- a/libjava/libltdl/COPYING.LIB +++ b/libjava/libltdl/COPYING.LIB @@ -3,7 +3,7 @@ Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -493,7 +493,7 @@ does.> You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. diff --git a/libjava/libltdl/ChangeLog b/libjava/libltdl/ChangeLog index eb012f2b5ea..d4c5527520a 100644 --- a/libjava/libltdl/ChangeLog +++ b/libjava/libltdl/ChangeLog @@ -1,3 +1,19 @@ +2006-03-30 Tom Tromey + + * aclocal.m4, configure, Makefile.in: Rebuilt. + * configure.ac: Use AM_MAINTAINER_MODE. + +2006-03-29 Andreas Tobler + + * acinclude.m4: Restore the situation that we don't build modules on + darwin. + * configure: Regenerated. + +2006-03-28 Tom Tromey + + PR libgcj/26441: + * Merged libltdl 1.5.16 from vendor branch. + 2004-11-24 Kelley Cook * Makefile.in: Regenrate with Automake 1.9.3. diff --git a/libjava/libltdl/Makefile.am b/libjava/libltdl/Makefile.am index 7b7f0006bcd..b8d5cf1b14f 100644 --- a/libjava/libltdl/Makefile.am +++ b/libjava/libltdl/Makefile.am @@ -20,7 +20,7 @@ endif CLEANFILES = libltdl.la libltdlc.la libltdl_la_SOURCES = ltdl.c -libltdl_la_LDFLAGS = -no-undefined -version-info 4:0:1 +libltdl_la_LDFLAGS = -no-undefined -version-info 4:1:1 libltdl_la_LIBADD = $(LIBADD_DL) libltdlc_la_SOURCES = ltdl.c @@ -33,18 +33,19 @@ $(libltdl_la_OBJECTS) $(libltdlc_la_OBJECTS): libtool libtool: $(LIBTOOL_DEPS) $(SHELL) ./config.status --recheck -## This allows us to install libltdl without using ln and without creating -## a world writeable directory. -## FIXME: Remove this rule once automake can do this properly by itself. -local-install-files: $(DISTFILES) - -rm -rf $(DESTDIR)$(datadir)/libtool/libltdl - $(mkinstalldirs) $(DESTDIR)$(datadir)/libtool/libltdl - @for file in $(DISTFILES); do \ - d=$(srcdir); \ - if test -d $$d/$$file; then \ - cp -r $$d/$$file $(DESTDIR)$(datadir)/libtool/libltdl/$$file; \ - else \ - test -f $(DESTDIR)$(datadir)/libtool/libltdl/$$file \ - || cp $$d/$$file $(DESTDIR)$(datadir)/libtool/libltdl/$$file || :; \ - fi; \ - done +## These are installed as a subdirectory of pkgdatadir so that +## libtoolize --ltdl can find them later: +ltdldatadir = $(datadir)/libtool/libltdl +ltdldatafiles = COPYING.LIB README acinclude.m4 aclocal.m4 \ + Makefile.am Makefile.in configure.ac configure \ + config-h.in config.guess config.sub \ + install-sh missing ltmain.sh \ + ltdl.c ltdl.h + +## To avoid spurious reconfiguration when the user installs these files +## with libtoolize, we have to preserve their timestamps carefully: +install-data-local: + -rm -rf $(DESTDIR)$(ltdldatadir) + $(mkinstalldirs) $(DESTDIR)$(ltdldatadir) + ( cd $(srcdir) && $(AMTAR) chf - $(ltdldatafiles); ) \ + | ( umask 0 && cd $(DESTDIR)$(ltdldatadir) && $(AMTAR) xf -; ) diff --git a/libjava/libltdl/Makefile.in b/libjava/libltdl/Makefile.in index 6dec5d8dc04..6bacd8783f2 100644 --- a/libjava/libltdl/Makefile.in +++ b/libjava/libltdl/Makefile.in @@ -1,8 +1,8 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.9.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -43,7 +43,7 @@ DIST_COMMON = README $(am__configure_deps) $(am__include_HEADERS_DIST) \ $(am__noinst_HEADERS_DIST) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config-h.in \ $(top_srcdir)/configure COPYING.LIB ChangeLog config.guess \ - config.sub install-sh ltmain.sh missing mkinstalldirs + config.sub install-sh ltmain.sh missing subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ @@ -52,8 +52,9 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno configure.status.lineno -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = config.h +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ @@ -72,7 +73,7 @@ libltdlc_la_DEPENDENCIES = $(am__DEPENDENCIES_1) am_libltdlc_la_OBJECTS = ltdl.lo libltdlc_la_OBJECTS = $(am_libltdlc_la_OBJECTS) @CONVENIENCE_LTDL_TRUE@am_libltdlc_la_rpath = -DEFAULT_INCLUDES = -I. -I$(srcdir) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I. depcomp = am__depfiles_maybe = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ @@ -221,11 +222,19 @@ INCLUDES = $(GCINCS) @CONVENIENCE_LTDL_TRUE@noinst_LTLIBRARIES = libltdlc.la CLEANFILES = libltdl.la libltdlc.la libltdl_la_SOURCES = ltdl.c -libltdl_la_LDFLAGS = -no-undefined -version-info 4:0:1 +libltdl_la_LDFLAGS = -no-undefined -version-info 4:1:1 libltdl_la_LIBADD = $(LIBADD_DL) libltdlc_la_SOURCES = ltdl.c libltdlc_la_LIBADD = $(LIBADD_DL) -all: all-am +ltdldatadir = $(datadir)/libtool/libltdl +ltdldatafiles = COPYING.LIB README acinclude.m4 aclocal.m4 \ + Makefile.am Makefile.in configure.ac configure \ + config-h.in config.guess config.sub \ + install-sh missing ltmain.sh \ + ltdl.c ltdl.h + +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj @@ -262,8 +271,23 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -config.h: $(top_builddir)/config.status $(srcdir)/config-h.in - cd $(top_builddir) && $(SHELL) ./config.status $@ + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config-h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config-h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" @@ -357,11 +381,11 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) mkid -fID $$unique tags: TAGS -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +TAGS: $(HEADERS) $(SOURCES) config-h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) config-h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ @@ -373,11 +397,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$tags $$unique; \ fi ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +CTAGS: $(HEADERS) $(SOURCES) config-h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) config-h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ @@ -398,7 +422,6 @@ distclean-tags: distdir: $(DISTFILES) $(am__remove_distdir) mkdir $(distdir) - $(mkdir_p) $(distdir)/. @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ @@ -524,7 +547,7 @@ distcleancheck: distclean exit 1; } >&2 check-am: all-am check: check-am -all-am: Makefile $(LTLIBRARIES) $(HEADERS) +all-am: Makefile $(LTLIBRARIES) $(HEADERS) config.h installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ @@ -563,7 +586,7 @@ distclean: distclean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-hdr distclean-libtool distclean-tags dvi: dvi-am @@ -575,7 +598,7 @@ info: info-am info-am: -install-data-am: install-includeHEADERS +install-data-am: install-data-local install-includeHEADERS install-exec-am: install-libLTLIBRARIES @@ -611,10 +634,11 @@ uninstall-am: uninstall-includeHEADERS uninstall-info-am \ clean-generic clean-libLTLIBRARIES clean-libtool \ clean-noinstLTLIBRARIES ctags dist dist-all dist-bzip2 \ dist-gzip dist-shar dist-tarZ dist-zip distcheck distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distcleancheck distdir distuninstallcheck dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-exec install-exec-am \ + distclean-compile distclean-generic distclean-hdr \ + distclean-libtool distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-data-local install-exec install-exec-am \ install-includeHEADERS install-info install-info-am \ install-libLTLIBRARIES install-man install-strip installcheck \ installcheck-am installdirs maintainer-clean \ @@ -630,18 +654,11 @@ $(libltdl_la_OBJECTS) $(libltdlc_la_OBJECTS): libtool libtool: $(LIBTOOL_DEPS) $(SHELL) ./config.status --recheck -local-install-files: $(DISTFILES) - -rm -rf $(DESTDIR)$(datadir)/libtool/libltdl - $(mkinstalldirs) $(DESTDIR)$(datadir)/libtool/libltdl - @for file in $(DISTFILES); do \ - d=$(srcdir); \ - if test -d $$d/$$file; then \ - cp -r $$d/$$file $(DESTDIR)$(datadir)/libtool/libltdl/$$file; \ - else \ - test -f $(DESTDIR)$(datadir)/libtool/libltdl/$$file \ - || cp $$d/$$file $(DESTDIR)$(datadir)/libtool/libltdl/$$file || :; \ - fi; \ - done +install-data-local: + -rm -rf $(DESTDIR)$(ltdldatadir) + $(mkinstalldirs) $(DESTDIR)$(ltdldatadir) + ( cd $(srcdir) && $(AMTAR) chf - $(ltdldatafiles); ) \ + | ( umask 0 && cd $(DESTDIR)$(ltdldatadir) && $(AMTAR) xf -; ) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/libjava/libltdl/acinclude.m4 b/libjava/libltdl/acinclude.m4 index 47312e1bf21..9491c77d670 100644 --- a/libjava/libltdl/acinclude.m4 +++ b/libjava/libltdl/acinclude.m4 @@ -1,26 +1,11 @@ # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -## Copyright 1996, 1997, 1998, 1999, 2000, 2001 +## Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 ## Free Software Foundation, Inc. ## Originally by Gordon Matzigkeit , 1996 ## -## 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -## -## As a special exception to the GNU General Public License, if you -## distribute this file as part of a program that contains a -## configuration script generated by Autoconf, you may include it under -## the same distribution terms that you use for the rest of that program. +## This file is free software; the Free Software Foundation gives +## unlimited permission to copy and/or distribute it, with or without +## modifications, as long as this notice is preserved. # serial 47 AC_PROG_LIBTOOL @@ -132,7 +117,7 @@ esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. -Xsed='sed -e s/^X//' +Xsed='sed -e 1s/^X//' [sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] # Same as above, but do not quote variable references. @@ -200,6 +185,8 @@ if test -n "$RANLIB"; then old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi +_LT_CC_BASENAME([$compiler]) + # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) @@ -245,6 +232,48 @@ compiler=$CC ])# _LT_AC_SYS_COMPILER +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +AC_DEFUN([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +]) + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +AC_DEFUN([_LT_COMPILER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +AC_DEFUN([_LT_LINKER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_LINKER_BOILERPLATE + + # _LT_AC_SYS_LIBPATH_AIX # ---------------------- # Links a minimal program and checks the executable @@ -317,7 +346,7 @@ fi # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. -if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test -z "$ECHO"; then if test "X${echo_test_string+set}" != Xset; then @@ -500,7 +529,7 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; - ppc64-*linux*) + ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) @@ -564,7 +593,8 @@ need_locks="$enable_libtool_lock" # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], -[AC_CACHE_CHECK([$1], [$2], +[AC_REQUIRE([LT_AC_PROG_SED]) +AC_CACHE_CHECK([$1], [$2], [$2=no ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) printf "$lt_simple_compile_test_code" > conftest.$ac_ext @@ -585,8 +615,10 @@ AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi @@ -617,6 +649,11 @@ AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD + $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi else $2=yes fi @@ -640,7 +677,7 @@ AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 - testring="ABCD" + teststring="ABCD" case $build_os in msdosdjgpp*) @@ -669,20 +706,53 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl lt_cv_sys_max_cmd_len=8192; ;; - *) + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for *BSD + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + *) # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. - while (test "X"`$CONFIG_SHELL [$]0 --fallback-echo "X$testring" 2>/dev/null` \ - = "XX$testring") >/dev/null 2>&1 && - new_result=`expr "X$testring" : ".*" 2>&1` && + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` - testring=$testring$testring + teststring=$teststring$teststring done - testring= + teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. @@ -832,7 +902,7 @@ else lt_cv_dlopen_self=yes ]) ;; - + *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], @@ -921,13 +991,6 @@ AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext - # According to Tom Tromey, Ian Lance Taylor reported there are C compilers - # that will create temporary files in the current directory regardless of - # the output directory. Thus, making CWD read-only will cause this test - # to fail, enabling locking or at least warning the user not to do parallel - # builds. - chmod -w . - lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. @@ -946,13 +1009,18 @@ AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - if test ! -s out/conftest.err; then + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . - $rm conftest* out/* - rmdir out + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* @@ -1011,8 +1079,8 @@ AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_AC_TAGVAR(hardcode_action, $1)= if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ - test -n "$_LT_AC_TAGVAR(runpath_var $1)" || \ - test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then + test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ + test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existant directories. if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && @@ -1069,7 +1137,7 @@ fi *) AC_MSG_RESULT([no]) ;; - esac + esac fi ])# AC_LIBTOOL_SYS_LIB_STRIP @@ -1082,7 +1150,7 @@ AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], library_names_spec= libname_spec='lib$name' soname_spec= -shrext=".so" +shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= @@ -1170,7 +1238,7 @@ aix4* | aix5*) amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) @@ -1179,7 +1247,7 @@ beos*) shlibpath_var=LIBRARY_PATH ;; -bsdi4*) +bsdi[[45]]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -1195,7 +1263,7 @@ bsdi4*) cygwin* | mingw* | pw32*) version_type=windows - shrext=".dll" + shrext_cmds=".dll" need_version=no need_lib_prefix=no @@ -1217,7 +1285,7 @@ cygwin* | mingw* | pw32*) cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/lib /lib/w32api /usr/lib /usr/local/lib" + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix @@ -1237,7 +1305,7 @@ cygwin* | mingw* | pw32*) ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac ;; @@ -1256,17 +1324,16 @@ darwin* | rhapsody*) version_type=darwin need_lib_prefix=no need_version=no - # FIXME: Relying on posixy $() will cause problems for - # cross-compilation, but unfortunately the echo tests do not - # yet detect zsh echo's removal of \ escapes. library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH - shrext='$(test .$module = .yes && echo .so || echo .dylib)' + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; @@ -1284,7 +1351,21 @@ freebsd1*) dynamic_linker=no ;; -freebsd*) +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in @@ -1303,7 +1384,7 @@ freebsd*) freebsd2*) shlibpath_overrides_runpath=yes ;; - freebsd3.[01]* | freebsdelf3.[01]*) + freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; @@ -1332,7 +1413,7 @@ hpux9* | hpux10* | hpux11*) need_version=no case "$host_cpu" in ia64*) - shrext='.so' + shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH @@ -1347,7 +1428,7 @@ hpux9* | hpux10* | hpux11*) sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) - shrext='.sl' + shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH @@ -1358,7 +1439,7 @@ hpux9* | hpux10* | hpux11*) sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) - shrext='.sl' + shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH @@ -1427,6 +1508,29 @@ linux*) # before this can be enabled. hardcode_into_libs=yes + # find out which ABI we are using + libsuff= + case "$host_cpu" in + x86_64*|s390x*|powerpc64*) + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *64-bit*) + libsuff=64 + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + ;; + esac + fi + rm -rf conftest* + ;; + esac + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + fi + # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, @@ -1436,6 +1540,18 @@ linux*) dynamic_linker='GNU/Linux ld.so' ;; +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + netbsd*) version_type=sunos need_lib_prefix=no @@ -1445,7 +1561,7 @@ netbsd*) finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi @@ -1461,7 +1577,7 @@ newsos6) shlibpath_overrides_runpath=yes ;; -nto-qnx) +nto-qnx*) version_type=linux need_lib_prefix=no need_version=no @@ -1494,7 +1610,7 @@ openbsd*) os2*) libname_spec='$name' - shrext=".dll" + shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' @@ -1640,7 +1756,9 @@ if test -f "$ltmain" && test -n "$tagnames"; then case $tagname in CXX) - if test -n "$CXX" && test "X$CXX" != "Xno"; then + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then AC_LIBTOOL_LANG_CXX_CONFIG else tagname="" @@ -1930,7 +2048,7 @@ fi # AC_PROG_LD # ---------- -# find the path to the GNU or non-GNU linker +# find the pathname to the GNU or non-GNU linker AC_DEFUN([AC_PROG_LD], [AC_ARG_WITH([gnu-ld], [AC_HELP_STRING([--with-gnu-ld], @@ -1956,7 +2074,7 @@ if test "$GCC" = yes; then # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the path of ld + # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` @@ -2019,7 +2137,7 @@ AC_DEFUN([AC_PROG_LD_GNU], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. -case `"$LD" -v 2>&1 &1 /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; @@ -2144,36 +2267,18 @@ hpux10.20* | hpux11*) ;; irix5* | irix6* | nonstopux*) - case $host_os in - irix5* | nonstopux*) - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" - ;; - *) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" - ;; + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; esac - lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux*) - case $host_cpu in - alpha* | hppa* | i*86 | ia64* | m68* | mips | mipsel | powerpc* | sparc* | s390* | sh*) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; - esac - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + lt_cv_deplibs_check_method=pass_all ;; netbsd*) @@ -2190,24 +2295,19 @@ newos6*) lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; -nto-qnx) +nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else - lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' - lt_cv_file_magic_test_file=/shlib/libc.so lt_cv_deplibs_check_method=pass_all ;; @@ -2217,7 +2317,6 @@ sco3.2v5*) solaris*) lt_cv_deplibs_check_method=pass_all - lt_cv_file_magic_test_file=/lib/libc.so ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) @@ -2257,7 +2356,7 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown # AC_PROG_NM # ---------- -# find the path to a BSD-compatible name lister +# find the pathname to a BSD-compatible name lister AC_DEFUN([AC_PROG_NM], [AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, [if test -n "$NM"; then @@ -2394,10 +2493,21 @@ AC_DEFUN([AC_LIBTOOL_CXX], # --------------- AC_DEFUN([_LT_AC_LANG_CXX], [AC_REQUIRE([AC_PROG_CXX]) -AC_REQUIRE([AC_PROG_CXXCPP]) -_LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,CXX" | sed 's/^,//'`]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) ])# _LT_AC_LANG_CXX +# _LT_AC_PROG_CXXCPP +# --------------- +AC_DEFUN([_LT_AC_PROG_CXXCPP], +[ +AC_REQUIRE([AC_PROG_CXX]) +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +fi +])# _LT_AC_PROG_CXXCPP # AC_LIBTOOL_F77 # -------------- @@ -2411,7 +2521,7 @@ AC_DEFUN([AC_LIBTOOL_F77], # --------------- AC_DEFUN([_LT_AC_LANG_F77], [AC_REQUIRE([AC_PROG_F77]) -_LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,F77" | sed 's/^,//'`]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) ])# _LT_AC_LANG_F77 @@ -2432,7 +2542,7 @@ AC_DEFUN([_LT_AC_LANG_GCJ], [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) -_LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,GCJ" | sed 's/^,//'`]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) ])# _LT_AC_LANG_GCJ @@ -2441,7 +2551,7 @@ _LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,GCJ" | sed 's/^,//'`]) # enable support for Windows resource files AC_DEFUN([AC_LIBTOOL_RC], [AC_REQUIRE([LT_AC_PROG_RC]) -_LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,RC" | sed 's/^,//'`]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) ])# AC_LIBTOOL_RC @@ -2470,6 +2580,10 @@ lt_simple_link_test_code='int main(){return(0);}\n' _LT_AC_SYS_COMPILER +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + # # Check for any special shared library compilation flags. # @@ -2483,7 +2597,7 @@ if test "$GCC" = no; then fi if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) - if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$]_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[[ ]]" >/dev/null; then : + if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : else AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no @@ -2510,9 +2624,9 @@ AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_DLOPEN_SELF($1) # Report which librarie types wil actually be built @@ -2533,39 +2647,11 @@ aix3*) fi ;; -aix4*) +aix4* | aix5*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi - ;; - darwin* | rhapsody*) - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' - ;; - *) # Darwin 1.3 on - test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' - ;; - esac - # FIXME: Relying on posixy $() will cause problems for - # cross-compilation, but unfortunately the echo tests do not - # yet detect zsh echo's removal of \ escapes. Also zsh mangles - # `"' quotes if we put them in here... so don't! - output_verbose_link_cmd='echo' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring' - _LT_AC_TAGVAR(module_cmds, $1)='$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - fi - ;; + ;; esac AC_MSG_RESULT([$enable_shared]) @@ -2590,7 +2676,7 @@ AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], [AC_LANG_PUSH(C++) AC_REQUIRE([AC_PROG_CXX]) -AC_REQUIRE([AC_PROG_CXXCPP]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(allow_undefined_flag, $1)= @@ -2634,6 +2720,10 @@ lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD @@ -2655,7 +2745,7 @@ test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC -cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` +_LT_CC_BASENAME([$compiler]) # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately @@ -2700,7 +2790,7 @@ if test "$GXX" = yes; then # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists @@ -2762,7 +2852,7 @@ case $host_os in _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GXX" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) + case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` @@ -2783,6 +2873,9 @@ case $host_os in fi esac shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi else # not using gcc if test "$host_cpu" = ia64; then @@ -2842,6 +2935,7 @@ case $host_os in esac ;; + cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. @@ -2865,52 +2959,76 @@ case $host_os in _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - darwin* | rhapsody*) - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' - ;; - *) # Darwin 1.3 on - test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' - ;; - esac - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes fi - _LT_AC_TAGVAR(module_cmds, $1)='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' - - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac fi - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - fi - ;; + ;; dgux*) case $cc_basename in - ec++) + ec++*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; - ghcx) + ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no @@ -2921,14 +3039,14 @@ case $host_os in ;; esac ;; - freebsd[12]*) + freebsd[[12]]*) # C++ shared libraries reported to be fairly broken before switch to ELF _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; - freebsd*) + freebsd* | kfreebsd*-gnu | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_AC_TAGVAR(ld_shlibs, $1)=yes @@ -2945,11 +3063,11 @@ case $host_os in # location of the library. case $cc_basename in - CC) + CC*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; - aCC) + aCC*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when @@ -2959,7 +3077,7 @@ case $host_os in # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | egrep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then @@ -3010,11 +3128,11 @@ case $host_os in esac case $cc_basename in - CC) + CC*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; - aCC) + aCC*) case "$host_cpu" in hppa*64*|ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' @@ -3054,9 +3172,9 @@ case $host_os in ;; irix5* | irix6*) case $cc_basename in - CC) + CC*) # SGI C++ - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is @@ -3067,7 +3185,7 @@ case $host_os in *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi @@ -3080,7 +3198,7 @@ case $host_os in ;; linux*) case $cc_basename in - KCC) + KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file @@ -3105,17 +3223,41 @@ case $host_os in # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - icpc) + icpc*) # Intel C++ with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; - cxx) + pgCC*) + # Portland Group C++ compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + ;; + cxx*) # Compaq C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' @@ -3146,7 +3288,7 @@ case $host_os in ;; mvs*) case $cc_basename in - cxx) + cxx*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; @@ -3167,9 +3309,25 @@ case $host_os in # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; + openbsd2*) + # C++ shared libraries are fairly broken + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; osf3*) case $cc_basename in - KCC) + KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file @@ -3185,14 +3343,14 @@ case $host_os in _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - RCC) + RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; - cxx) + cxx*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: @@ -3210,7 +3368,7 @@ case $host_os in *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: @@ -3229,7 +3387,7 @@ case $host_os in ;; osf4* | osf5*) case $cc_basename in - KCC) + KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file @@ -3244,17 +3402,17 @@ case $host_os in # the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - RCC) + RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; - cxx) + cxx*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ $rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' @@ -3273,7 +3431,7 @@ case $host_os in *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: @@ -3297,7 +3455,7 @@ case $host_os in sco*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no case $cc_basename in - CC) + CC*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; @@ -3309,12 +3467,12 @@ case $host_os in ;; sunos4*) case $cc_basename in - CC) + CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; - lcc) + lcc*) # Lucid # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no @@ -3327,7 +3485,7 @@ case $host_os in ;; solaris*) case $cc_basename in - CC) + CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' @@ -3337,13 +3495,17 @@ case $host_os in _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The C++ compiler is used as linker so we must use $wl # flag to pass the commands to the underlying system - # linker. + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes @@ -3364,7 +3526,7 @@ case $host_os in # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; - gcx) + gcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' @@ -3407,7 +3569,7 @@ case $host_os in ;; tandem*) case $cc_basename in - NCC) + NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no @@ -3442,9 +3604,9 @@ AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_DLOPEN_SELF($1) AC_LIBTOOL_CONFIG($1) @@ -3643,12 +3805,16 @@ lt_simple_link_test_code=" program t\n end\n" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC -cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` +_LT_CC_BASENAME([$compiler]) AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) @@ -3666,8 +3832,10 @@ aix3*) postinstall_cmds='$RANLIB $lib' fi ;; -aix4*) - test "$enable_shared" = yes && enable_static=no +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi ;; esac AC_MSG_RESULT([$enable_shared]) @@ -3686,9 +3854,10 @@ AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) + AC_LIBTOOL_CONFIG($1) @@ -3717,20 +3886,27 @@ _LT_AC_TAGVAR(objext, $1)=$objext lt_simple_compile_test_code="class foo {}\n" # Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds + ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly @@ -3740,9 +3916,9 @@ AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_DLOPEN_SELF($1) AC_LIBTOOL_CONFIG($1) @@ -3777,11 +3953,16 @@ lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes AC_LIBTOOL_CONFIG($1) @@ -3807,11 +3988,12 @@ if test -f "$ltmain"; then # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST - fi + fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM SED SHELL \ + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ @@ -3861,7 +4043,7 @@ if test -f "$ltmain"; then _LT_AC_TAGVAR(archive_cmds, $1) | \ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \ _LT_AC_TAGVAR(module_cmds, $1) | \ - _LT_AC_TAGVAR(module_expsym_cmds, $1) | \ + _LT_AC_TAGVAR(module_expsym_cmds, $1) | \ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ @@ -3916,7 +4098,7 @@ ifelse([$1], [], # # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -3927,11 +4109,11 @@ ifelse([$1], [], SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="$SED -e s/^X//" +Xsed="$SED -e 1s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. -if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # The names of the tagged configurations supported by this script. available_tags= @@ -3962,6 +4144,12 @@ fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo @@ -3992,7 +4180,7 @@ LN_S=$lt_LN_S NM=$lt_NM # A symbol stripping program -STRIP=$STRIP +STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD @@ -4023,7 +4211,7 @@ objext="$ac_objext" libext="$libext" # Shared library suffix (normally ".so"). -shrext='$shrext' +shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" @@ -4038,7 +4226,7 @@ max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) -# Must we lock files when doing compilation ? +# Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? @@ -4267,7 +4455,10 @@ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. - test -f Makefile && make "$ltmain" + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi fi ])# AC_LIBTOOL_CONFIG @@ -4309,9 +4500,6 @@ symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' -# Transform the above into a raw symbol and a C symbol. -symxfrm='\1 \2\3 \3' - # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" @@ -4333,6 +4521,13 @@ hpux*) # Its linker distinguishes data from code symbols lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDGIRSTW]]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; @@ -4340,7 +4535,7 @@ osf*) symcode='[[BCDEGQRST]]' ;; solaris* | sysv5*) - symcode='[[BDT]]' + symcode='[[BDRT]]' ;; sysv4) symcode='[[DFNSTU]]' @@ -4358,14 +4553,17 @@ esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) - symcode='[[ABCDGISTW]]' ;; + symcode='[[ABCDGIRSTW]]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + # Write the raw and C identifiers. - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no @@ -4554,18 +4752,28 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; chorus*) case $cc_basename in - cxch68) + cxch68*) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; dgux*) case $cc_basename in - ec++) + ec++*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; - ghcx) + ghcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; @@ -4573,19 +4781,19 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; esac ;; - freebsd*) + freebsd* | kfreebsd*-gnu | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in - CC) + CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; - aCC) + aCC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" case "$host_cpu" in @@ -4603,7 +4811,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; irix5* | irix6* | nonstopux*) case $cc_basename in - CC) + CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. @@ -4614,18 +4822,24 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; linux*) case $cc_basename in - KCC) + KCC*) # KAI C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; - icpc) + icpc* | ecpc*) # Intel C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - cxx) + ;; + pgCC*) + # Portland Group C++ compiler. + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. @@ -4642,8 +4856,8 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; mvs*) case $cc_basename in - cxx) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Wextra c,exportall' + cxx*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; @@ -4653,14 +4867,14 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; osf3* | osf4* | osf5*) case $cc_basename in - KCC) + KCC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; - RCC) + RCC*) # Rational C++ 2.4.1 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; - cxx) + cxx*) # Digital/Compaq C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha @@ -4676,7 +4890,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; sco*) case $cc_basename in - CC) + CC*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; *) @@ -4685,13 +4899,13 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; solaris*) case $cc_basename in - CC) + CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; - gcx) + gcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; @@ -4701,12 +4915,12 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; sunos4*) case $cc_basename in - CC) + CC*) # Sun C++ 4.x _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; - lcc) + lcc*) # Lucid _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; @@ -4716,7 +4930,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; tandem*) case $cc_basename in - NCC) + NCC*) # NonStop-UX NCC 3.20 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; @@ -4813,6 +5027,16 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being @@ -4848,13 +5072,20 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; linux*) - case $CC in - icc|ecc) + case $cc_basename in + icc* | ecc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; - ccc) + pgcc* | pgf77* | pgf90*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + ccc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' @@ -4874,9 +5105,14 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; solaris*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac ;; sunos4*) @@ -4898,6 +5134,11 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) fi ;; + unicos*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + uts4*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' @@ -4958,7 +5199,7 @@ ifelse([$1],[CXX],[ _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw*) - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' ;; *) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' @@ -4984,7 +5225,7 @@ ifelse([$1],[CXX],[ _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= - _LT_AC_TAGVAR(module_expsym_cmds, $1)= + _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* @@ -5001,7 +5242,8 @@ ifelse([$1],[CXX],[ # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= - + # Just being paranoid about ensuring that cc_basename is set. + _LT_CC_BASENAME([$compiler]) case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time @@ -5020,7 +5262,28 @@ ifelse([$1],[CXX],[ if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' - + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) @@ -5071,7 +5334,7 @@ EOF _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' @@ -5085,7 +5348,37 @@ EOF fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else - ld_shlibs=no + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + ;; + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + tmp_addflag=' -fpic -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; @@ -5137,16 +5430,11 @@ EOF ;; esac - if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then - runpath_var=LD_RUN_PATH - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - fi + if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) @@ -5210,7 +5498,7 @@ EOF _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) + case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` @@ -5231,6 +5519,9 @@ EOF fi esac shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi else # not using gcc if test "$host_cpu" = ia64; then @@ -5289,7 +5580,7 @@ EOF _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; - bsdi4*) + bsdi[[45]]*) _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; @@ -5303,56 +5594,65 @@ EOF # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext=".dll" + shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' + _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; darwin* | rhapsody*) - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' - ;; - *) # Darwin 1.3 on - test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' - ;; + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; esac - # FIXME: Relying on posixy $() will cause problems for - # cross-compilation, but unfortunately the echo tests do not - # yet detect zsh echo's removal of \ escapes. Also zsh mangles - # `"' quotes if we put them in here... so don't! - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - _LT_AC_TAGVAR(module_cmds, $1)='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - fi + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi ;; dgux*) @@ -5385,7 +5685,7 @@ EOF ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd*) + freebsd* | kfreebsd*-gnu | dragonfly*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes @@ -5496,6 +5796,7 @@ EOF _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else @@ -5541,7 +5842,7 @@ EOF _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' @@ -5560,10 +5861,12 @@ EOF solaris*) _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' if test "$GCC" = yes; then + wlarc='${wl}' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else + wlarc='' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' @@ -5572,8 +5875,18 @@ EOF _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; + *) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; @@ -5702,7 +6015,7 @@ x|xyes) AC_MSG_CHECKING([whether -lc should be explicitly linked in]) $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext - + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest @@ -5836,7 +6149,7 @@ lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && break + test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in @@ -5861,31 +6174,16 @@ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do fi done done -SED=$lt_cv_path_SED ]) +SED=$lt_cv_path_SED AC_MSG_RESULT([$SED]) ]) ## ltdl.m4 - Configure ltdl for the target system. -*-Autoconf-*- ## Copyright (C) 1999-2000 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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -## -## As a special exception to the GNU General Public License, if you -## distribute this file as part of a program that contains a -## configuration script generated by Autoconf, you may include it under -## the same distribution terms that you use for the rest of that program. +## This file is free software; the Free Software Foundation gives +## unlimited permission to copy and/or distribute it, with or without +## modifications, as long as this notice is preserved. # serial 6 AC_LIB_LTDL @@ -6008,8 +6306,9 @@ AC_CACHE_CHECK([whether deplibs are loaded by dlopen], # Assuming the user has installed a libdl from somewhere, this is true # If you are looking for one http://www.opendarwin.org/projects/dlcompat libltdl_cv_sys_dlopen_deplibs=yes - ;; - gnu*) + ;; + gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu) + # GNU and its variants, using gnu ld.so (Glibc) libltdl_cv_sys_dlopen_deplibs=yes ;; hpux10*|hpux11*) @@ -6025,9 +6324,6 @@ AC_CACHE_CHECK([whether deplibs are loaded by dlopen], # at 6.2 and later dlopen does load deplibs. libltdl_cv_sys_dlopen_deplibs=yes ;; - linux*) - libltdl_cv_sys_dlopen_deplibs=yes - ;; netbsd*) libltdl_cv_sys_dlopen_deplibs=yes ;; @@ -6077,7 +6373,8 @@ AC_CACHE_CHECK([which extension is used for loadable modules], [ # Here in libltdl for libgcj we don't build modules for darwin. # So we say no. Then the extension gets .dylib which is the right -# thing for shared libraries on darwin. +# thing for shared libraries on darwin. Please keep me next time you +# import libltdl. case "$host_os" in darwin*) module=no @@ -6086,7 +6383,7 @@ darwin*) module=yes ;; esac -eval libltdl_cv_shlibext=$shrext +eval libltdl_cv_shlibext=$shrext_cmds ]) if test -n "$libltdl_cv_shlibext"; then AC_DEFINE_UNQUOTED(LTDL_SHLIB_EXT, "$libltdl_cv_shlibext", diff --git a/libjava/libltdl/aclocal.m4 b/libjava/libltdl/aclocal.m4 index 8d967f18aa4..1759af44871 100644 --- a/libjava/libltdl/aclocal.m4 +++ b/libjava/libltdl/aclocal.m4 @@ -396,6 +396,30 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) +# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003 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 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 7 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + # Do all the work for Automake. -*- Autoconf -*- # This macro actually does too much some checks are only needed if diff --git a/libjava/libltdl/configure b/libjava/libltdl/configure index e0d830d702a..3c8e9fead69 100755 --- a/libjava/libltdl/configure +++ b/libjava/libltdl/configure @@ -280,7 +280,7 @@ fi # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. -if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test -z "$ECHO"; then if test "X${echo_test_string+set}" != Xset; then @@ -393,9 +393,9 @@ fi -tagnames=`echo "$tagnames,CXX" | sed 's/^,//'` +tagnames=${tagnames+${tagnames},}CXX -tagnames=`echo "$tagnames,F77" | sed 's/^,//'` +tagnames=${tagnames+${tagnames},}F77 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, @@ -465,7 +465,7 @@ ac_includes_default="\ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBTOOL_DEPS INSTALL_LTDL_TRUE INSTALL_LTDL_FALSE CONVENIENCE_LTDL_TRUE CONVENIENCE_LTDL_FALSE LIBADD_DL LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBTOOL_DEPS INSTALL_LTDL_TRUE INSTALL_LTDL_FALSE CONVENIENCE_LTDL_TRUE CONVENIENCE_LTDL_FALSE LIBADD_DL LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -1513,7 +1513,30 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu - ac_config_files="$ac_config_files config.h:config-h.in" + +## GCJ LOCAL: gcc tree uses maintainer mode. +echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then + enableval="$enable_maintainer_mode" + USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi; + echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 + + +if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE @@ -1848,18 +1871,9 @@ fi # Define the identity of the package. - PACKAGE='libltdl' - VERSION='1.2' - + PACKAGE=libltdl + VERSION=1.2 -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF # Some tools Automake needs. @@ -1979,29 +1993,7 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' -echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 -echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 - # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. -if test "${enable_maintainer_mode+set}" = set; then - enableval="$enable_maintainer_mode" - USE_MAINTAINER_MODE=$enableval -else - USE_MAINTAINER_MODE=no -fi; - echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 -echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 - - -if test $USE_MAINTAINER_MODE = yes; then - MAINTAINER_MODE_TRUE= - MAINTAINER_MODE_FALSE='#' -else - MAINTAINER_MODE_TRUE='#' - MAINTAINER_MODE_FALSE= -fi - - MAINT=$MAINTAINER_MODE_TRUE - + ac_config_headers="$ac_config_headers config.h:config-h.in" @@ -3449,7 +3441,7 @@ lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && break + test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in @@ -3474,10 +3466,10 @@ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do fi done done -SED=$lt_cv_path_SED fi +SED=$lt_cv_path_SED echo "$as_me:$LINENO: result: $SED" >&5 echo "${ECHO_T}$SED" >&6 @@ -3520,7 +3512,7 @@ echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the path of ld + # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` @@ -3589,7 +3581,7 @@ if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. -case `"$LD" -v 2>&1 &1 &5 echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 @@ -3704,40 +3705,36 @@ beos*) lt_cv_deplibs_check_method=pass_all ;; -bsdi4*) +bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; -cygwin* | mingw* | pw32*) - # win32_libid is a shell function defined in ltmain.sh +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='win32_libid' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump'. + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) - # this will be overwritten by pass_all, but leave it in just in case - lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' - lt_cv_file_magic_cmd='/usr/bin/file -L' - case "$host_os" in - rhapsody* | darwin1.[012]) - lt_cv_file_magic_test_file=`/System/Library/Frameworks/System.framework/System` - ;; - *) # Darwin 1.3 on - lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' - ;; - esac lt_cv_deplibs_check_method=pass_all ;; -freebsd*) +freebsd* | kfreebsd*-gnu | dragonfly*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; @@ -3770,36 +3767,18 @@ hpux10.20* | hpux11*) ;; irix5* | irix6* | nonstopux*) - case $host_os in - irix5* | nonstopux*) - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" - ;; - *) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" - ;; + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; esac - lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux*) - case $host_cpu in - alpha* | hppa* | i*86 | ia64* | m68* | mips | mipsel | powerpc* | sparc* | s390* | sh*) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; - esac - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + lt_cv_deplibs_check_method=pass_all ;; netbsd*) @@ -3816,24 +3795,19 @@ newos6*) lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; -nto-qnx) +nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else - lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' - lt_cv_file_magic_test_file=/shlib/libc.so lt_cv_deplibs_check_method=pass_all ;; @@ -3843,7 +3817,6 @@ sco3.2v5*) solaris*) lt_cv_deplibs_check_method=pass_all - lt_cv_file_magic_test_file=/lib/libc.so ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) @@ -3922,7 +3895,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 3925 "configure"' > conftest.$ac_ext + echo '#line 3898 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -3971,7 +3944,7 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; - ppc64-*linux*) + ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) @@ -5413,7 +5386,12 @@ else fi -ac_ext=cc + + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' @@ -5643,6 +5621,8 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +fi + ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' @@ -5736,7 +5716,7 @@ fi # Provide some information about the compiler. -echo "$as_me:5739:" \ +echo "$as_me:5719:" \ "checking for Fortran 77 compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 @@ -5891,7 +5871,7 @@ if test "${lt_cv_sys_max_cmd_len+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else i=0 - testring="ABCD" + teststring="ABCD" case $build_os in msdosdjgpp*) @@ -5920,20 +5900,53 @@ else lt_cv_sys_max_cmd_len=8192; ;; - *) + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for *BSD + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + *) # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. - while (test "X"`$CONFIG_SHELL $0 --fallback-echo "X$testring" 2>/dev/null` \ - = "XX$testring") >/dev/null 2>&1 && - new_result=`expr "X$testring" : ".*" 2>&1` && + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` - testring=$testring$testring + teststring=$teststring$teststring done - testring= + teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. @@ -5970,9 +5983,6 @@ symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' -# Transform the above into a raw symbol and a C symbol. -symxfrm='\1 \2\3 \3' - # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" @@ -5994,6 +6004,13 @@ hpux*) # Its linker distinguishes data from code symbols lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDGIRSTW]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; @@ -6001,7 +6018,7 @@ osf*) symcode='[BCDEGQRST]' ;; solaris* | sysv5*) - symcode='[BDT]' + symcode='[BDRT]' ;; sysv4) symcode='[DFNSTU]' @@ -6019,14 +6036,17 @@ esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) - symcode='[ABCDGISTW]' ;; + symcode='[ABCDGIRSTW]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + # Write the raw and C identifiers. - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no @@ -6188,7 +6208,7 @@ esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. -Xsed='sed -e s/^X//' +Xsed='sed -e 1s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. @@ -6493,6 +6513,17 @@ if test -n "$RANLIB"; then old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) @@ -6679,6 +6710,20 @@ LTCC=${LTCC-"$CC"} compiler=$CC +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + # # Check for any special shared library compilation flags. # @@ -6720,6 +6765,11 @@ else if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works=yes + fi else lt_prog_compiler_static_works=yes fi @@ -6749,7 +6799,8 @@ lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' - echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 + +echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -6767,15 +6818,17 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:6770: $lt_compile\"" >&5) + (eval echo "\"\$as_me:6821: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:6774: \$? = $ac_status" >&5 + echo "$as_me:6825: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi @@ -6878,6 +6931,16 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic='-qnocommon' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being @@ -6913,13 +6976,20 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; linux*) - case $CC in - icc|ecc) + case $cc_basename in + icc* | ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; - ccc) + pgcc* | pgf77* | pgf90*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-static' + ;; + ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' @@ -6939,9 +7009,14 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; solaris*) - lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac ;; sunos4*) @@ -6963,6 +7038,11 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 fi ;; + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' @@ -6981,7 +7061,8 @@ echo "${ECHO_T}$lt_prog_compiler_pic" >&6 # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then - echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -6999,15 +7080,17 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7002: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7083: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:7006: \$? = $ac_status" >&5 + echo "$as_me:7087: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_pic_works=yes fi fi @@ -7050,13 +7133,6 @@ else mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext - # According to Tom Tromey, Ian Lance Taylor reported there are C compilers - # that will create temporary files in the current directory regardless of - # the output directory. Thus, making CWD read-only will cause this test - # to fail, enabling locking or at least warning the user not to do parallel - # builds. - chmod -w . - lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. @@ -7066,22 +7142,27 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7069: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7145: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:7073: \$? = $ac_status" >&5 + echo "$as_me:7149: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - if test ! -s out/conftest.err; then + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . - $rm conftest* out/* - rmdir out + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* @@ -7152,6 +7233,16 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) @@ -7172,6 +7263,27 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) @@ -7222,7 +7334,7 @@ EOF allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' @@ -7240,6 +7352,36 @@ EOF fi ;; + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec= + ;; + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + whole_archive_flag_spec= + tmp_addflag=' -fpic -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs=no + fi + ;; + netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' @@ -7288,16 +7430,11 @@ EOF ;; esac - if test "$ld_shlibs" = yes; then - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) @@ -7361,7 +7498,7 @@ EOF link_all_deplibs=yes if test "$GCC" = yes; then - case $host_os in aix4.012|aix4.012.*) + case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` @@ -7382,6 +7519,9 @@ EOF fi esac shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi else # not using gcc if test "$host_cpu" = ia64; then @@ -7542,7 +7682,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ld_shlibs=no ;; - bsdi4*) + bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; @@ -7556,7 +7696,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext=".dll" + shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. @@ -7568,43 +7708,52 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; darwin* | rhapsody*) - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - archive_cmds_need_lc=no case "$host_os" in - rhapsody* | darwin1.[012]) - allow_undefined_flag='-undefined suppress' - ;; - *) # Darwin 1.3 on - test -z ${LD_TWOLEVEL_NAMESPACE} && allow_undefined_flag='-flat_namespace -undefined suppress' - ;; + rhapsody* | darwin1.[012]) + allow_undefined_flag='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; esac - # FIXME: Relying on posixy $() will cause problems for - # cross-compilation, but unfortunately the echo tests do not - # yet detect zsh echo's removal of \ escapes. Also zsh mangles - # `"' quotes if we put them in here... so don't! - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - archive_cmds='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - module_cmds='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported - whole_archive_flag_spec='-all_load $convenience' + whole_archive_flag_spec='' link_all_deplibs=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs=no + ;; + esac fi ;; @@ -7638,7 +7787,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd*) + freebsd* | kfreebsd*-gnu | dragonfly*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes @@ -7749,6 +7898,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else @@ -7794,7 +7944,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' @@ -7813,10 +7963,12 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi solaris*) no_undefined_flag=' -z text' if test "$GCC" = yes; then + wlarc='${wl}' archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else + wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' @@ -7825,8 +7977,18 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; - *) # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; esac link_all_deplibs=yes ;; @@ -7998,78 +8160,12 @@ echo "${ECHO_T}$archive_cmds_need_lc" >&6 ;; esac -echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || \ - test -n "$runpath_var " || \ - test "X$hardcode_automatic"="Xyes" ; then - - # We can hardcode non-existant directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -echo "$as_me:$LINENO: result: $hardcode_action" >&5 -echo "${ECHO_T}$hardcode_action" >&6 - -if test "$hardcode_action" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - -striplib= -old_striplib= -echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - ;; - *) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - ;; - esac -fi - echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= -shrext=".so" +shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= @@ -8157,7 +8253,7 @@ aix4* | aix5*) amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) @@ -8166,7 +8262,7 @@ beos*) shlibpath_var=LIBRARY_PATH ;; -bsdi4*) +bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -8182,7 +8278,7 @@ bsdi4*) cygwin* | mingw* | pw32*) version_type=windows - shrext=".dll" + shrext_cmds=".dll" need_version=no need_lib_prefix=no @@ -8204,7 +8300,7 @@ cygwin* | mingw* | pw32*) cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/lib /lib/w32api /usr/lib /usr/local/lib" + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix @@ -8224,7 +8320,7 @@ cygwin* | mingw* | pw32*) ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; @@ -8243,17 +8339,16 @@ darwin* | rhapsody*) version_type=darwin need_lib_prefix=no need_version=no - # FIXME: Relying on posixy $() will cause problems for - # cross-compilation, but unfortunately the echo tests do not - # yet detect zsh echo's removal of \ escapes. library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH - shrext='$(test .$module = .yes && echo .so || echo .dylib)' + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; @@ -8271,7 +8366,21 @@ freebsd1*) dynamic_linker=no ;; -freebsd*) +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in @@ -8290,7 +8399,7 @@ freebsd*) freebsd2*) shlibpath_overrides_runpath=yes ;; - freebsd3.01* | freebsdelf3.01*) + freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; @@ -8319,7 +8428,7 @@ hpux9* | hpux10* | hpux11*) need_version=no case "$host_cpu" in ia64*) - shrext='.so' + shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH @@ -8334,7 +8443,7 @@ hpux9* | hpux10* | hpux11*) sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) - shrext='.sl' + shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH @@ -8345,7 +8454,7 @@ hpux9* | hpux10* | hpux11*) sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) - shrext='.sl' + shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH @@ -8414,15 +8523,54 @@ linux*) # before this can be enabled. hardcode_into_libs=yes - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - + # find out which ABI we are using + libsuff= + case "$host_cpu" in + x86_64*|s390x*|powerpc64*) + echo '#line 8530 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *64-bit*) + libsuff=64 + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + ;; + esac + fi + rm -rf conftest* + ;; + esac + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + netbsd*) version_type=sunos need_lib_prefix=no @@ -8432,7 +8580,7 @@ netbsd*) finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi @@ -8448,7 +8596,7 @@ newsos6) shlibpath_overrides_runpath=yes ;; -nto-qnx) +nto-qnx*) version_type=linux need_lib_prefix=no need_version=no @@ -8481,7 +8629,7 @@ openbsd*) os2*) libname_spec='$name' - shrext=".dll" + shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' @@ -8579,6 +8727,72 @@ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var" || \ + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action" >&5 +echo "${ECHO_T}$hardcode_action" >&6 + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown @@ -9184,7 +9398,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext <&1 | grep 'Apple' >/dev/null ; then - archive_cmds_need_lc=no - case "$host_os" in - rhapsody* | darwin1.[012]) - allow_undefined_flag='-undefined suppress' - ;; - *) # Darwin 1.3 on - test -z ${LD_TWOLEVEL_NAMESPACE} && allow_undefined_flag='-flat_namespace -undefined suppress' - ;; - esac - # FIXME: Relying on posixy $() will cause problems for - # cross-compilation, but unfortunately the echo tests do not - # yet detect zsh echo's removal of \ escapes. Also zsh mangles - # `"' quotes if we put them in here... so don't! - output_verbose_link_cmd='echo' - archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring' - module_cmds='$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - whole_archive_flag_spec='-all_load $convenience' - link_all_deplibs=yes - fi ;; esac echo "$as_me:$LINENO: result: $enable_shared" >&5 @@ -9464,7 +9650,8 @@ if test -f "$ltmain"; then # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM SED SHELL \ + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ @@ -9567,7 +9754,7 @@ echo "$as_me: creating $ofile" >&6;} # # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -9578,11 +9765,11 @@ echo "$as_me: creating $ofile" >&6;} SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="$SED -e s/^X//" +Xsed="$SED -e 1s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. -if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # The names of the tagged configurations supported by this script. available_tags= @@ -9612,6 +9799,12 @@ fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo @@ -9642,7 +9835,7 @@ LN_S=$lt_LN_S NM=$lt_NM # A symbol stripping program -STRIP=$STRIP +STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD @@ -9673,7 +9866,7 @@ objext="$ac_objext" libext="$libext" # Shared library suffix (normally ".so"). -shrext='$shrext' +shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" @@ -9688,7 +9881,7 @@ max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o -# Must we lock files when doing compilation ? +# Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? @@ -9915,7 +10108,10 @@ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. - test -f Makefile && make "$ltmain" + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi fi @@ -9980,7 +10176,9 @@ echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} case $tagname in CXX) - if test -n "$CXX" && test "X$CXX" != "Xno"; then + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -10038,6 +10236,20 @@ LTCC=${LTCC-"$CC"} compiler=$CC +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD @@ -10059,7 +10271,16 @@ test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC compiler_CXX=$CC -cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately @@ -10096,7 +10317,7 @@ echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the path of ld + # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` @@ -10165,7 +10386,7 @@ if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. -case `"$LD" -v 2>&1 &1 &1 | grep 'Apple' >/dev/null ; then - archive_cmds_need_lc_CXX=no - case "$host_os" in - rhapsody* | darwin1.[012]) - allow_undefined_flag_CXX='-undefined suppress' - ;; - *) # Darwin 1.3 on - test -z ${LD_TWOLEVEL_NAMESPACE} && allow_undefined_flag_CXX='-flat_namespace -undefined suppress' - ;; - esac - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - archive_cmds_CXX='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes fi - module_cmds_CXX='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' - - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else - archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_CXX=no + ;; + esac fi - module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - whole_archive_flag_spec_CXX='-all_load $convenience' - link_all_deplibs_CXX=yes - fi - ;; + ;; dgux*) case $cc_basename in - ec++) + ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; - ghcx) + ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no @@ -10534,14 +10783,14 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; esac ;; - freebsd12*) + freebsd[12]*) # C++ shared libraries reported to be fairly broken before switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; - freebsd*) + freebsd* | kfreebsd*-gnu | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes @@ -10558,11 +10807,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # location of the library. case $cc_basename in - CC) + CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; - aCC) + aCC*) archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when @@ -10572,7 +10821,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | egrep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then @@ -10623,11 +10872,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi esac case $cc_basename in - CC) + CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; - aCC) + aCC*) case "$host_cpu" in hppa*64*|ia64*) archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' @@ -10667,9 +10916,9 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; irix5* | irix6*) case $cc_basename in - CC) + CC*) # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is @@ -10680,7 +10929,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi @@ -10693,7 +10942,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; linux*) case $cc_basename in - KCC) + KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file @@ -10718,17 +10967,41 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; - icpc) + icpc*) # Intel C++ with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac archive_cmds_need_lc_CXX=no - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; - cxx) + pgCC*) + # Portland Group C++ compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='' + ;; + cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' @@ -10759,7 +11032,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; mvs*) case $cc_basename in - cxx) + cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; @@ -10780,9 +11053,25 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + openbsd*) + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; osf3*) case $cc_basename in - KCC) + KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file @@ -10798,14 +11087,14 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; - RCC) + RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; - cxx) + cxx*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: @@ -10823,7 +11112,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: @@ -10842,7 +11131,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; osf4* | osf5*) case $cc_basename in - KCC) + KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file @@ -10857,17 +11146,17 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # the KAI C++ compiler. old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; - RCC) + RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; - cxx) + cxx*) allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ $rm $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' @@ -10886,7 +11175,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: @@ -10910,7 +11199,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi sco*) archive_cmds_need_lc_CXX=no case $cc_basename in - CC) + CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; @@ -10922,12 +11211,12 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; sunos4*) case $cc_basename in - CC) + CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; - lcc) + lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no @@ -10940,7 +11229,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; solaris*) case $cc_basename in - CC) + CC*) # Sun C++ 4.2, 5.x and Centerline C++ no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' @@ -10950,13 +11239,17 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in - solaris2.0-5 | solaris2.0-5.*) ;; + solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The C++ compiler is used as linker so we must use $wl # flag to pass the commands to the underlying system - # linker. + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; esac link_all_deplibs_CXX=yes @@ -10977,7 +11270,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; - gcx) + gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' @@ -11020,7 +11313,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; tandem*) case $cc_basename in - NCC) + NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no @@ -11233,18 +11526,28 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; chorus*) case $cc_basename in - cxch68) + cxch68*) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_CXX='-qnocommon' + lt_prog_compiler_wl_CXX='-Wl,' + ;; + esac + ;; dgux*) case $cc_basename in - ec++) + ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; - ghcx) + ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; @@ -11252,19 +11555,19 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; esac ;; - freebsd*) + freebsd* | kfreebsd*-gnu | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in - CC) + CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; - aCC) + aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" case "$host_cpu" in @@ -11282,7 +11585,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; irix5* | irix6* | nonstopux*) case $cc_basename in - CC) + CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. @@ -11293,18 +11596,24 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; linux*) case $cc_basename in - KCC) + KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; - icpc) + icpc* | ecpc*) # Intel C++ lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; - cxx) + pgCC*) + # Portland Group C++ compiler. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-static' + ;; + cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. @@ -11321,8 +11630,8 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; mvs*) case $cc_basename in - cxx) - lt_prog_compiler_pic_CXX='-Wextra c,exportall' + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; @@ -11332,14 +11641,14 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; osf3* | osf4* | osf5*) case $cc_basename in - KCC) + KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; - RCC) + RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; - cxx) + cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha @@ -11355,7 +11664,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; sco*) case $cc_basename in - CC) + CC*) lt_prog_compiler_pic_CXX='-fPIC' ;; *) @@ -11364,13 +11673,13 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; solaris*) case $cc_basename in - CC) + CC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; - gcx) + gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; @@ -11380,12 +11689,12 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; sunos4*) case $cc_basename in - CC) + CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; - lcc) + lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; @@ -11395,7 +11704,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; tandem*) case $cc_basename in - NCC) + NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; @@ -11420,7 +11729,8 @@ echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then - echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -11438,15 +11748,17 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:11441: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11751: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:11445: \$? = $ac_status" >&5 + echo "$as_me:11755: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_pic_works_CXX=yes fi fi @@ -11489,13 +11801,6 @@ else mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext - # According to Tom Tromey, Ian Lance Taylor reported there are C compilers - # that will create temporary files in the current directory regardless of - # the output directory. Thus, making CWD read-only will cause this test - # to fail, enabling locking or at least warning the user not to do parallel - # builds. - chmod -w . - lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. @@ -11505,22 +11810,27 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:11508: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11813: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:11512: \$? = $ac_status" >&5 + echo "$as_me:11817: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - if test ! -s out/conftest.err; then + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . - $rm conftest* out/* - rmdir out + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* @@ -11570,7 +11880,7 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw*) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' @@ -11648,78 +11958,12 @@ echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 ;; esac -echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 -hardcode_action_CXX= -if test -n "$hardcode_libdir_flag_spec_CXX" || \ - test -n "$runpath_var CXX" || \ - test "X$hardcode_automatic_CXX"="Xyes" ; then - - # We can hardcode non-existant directories. - if test "$hardcode_direct_CXX" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && - test "$hardcode_minus_L_CXX" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action_CXX=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_CXX=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_CXX=unsupported -fi -echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 -echo "${ECHO_T}$hardcode_action_CXX" >&6 - -if test "$hardcode_action_CXX" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - -striplib= -old_striplib= -echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - ;; - *) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - ;; - esac -fi - echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= -shrext=".so" +shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= @@ -11807,7 +12051,7 @@ aix4* | aix5*) amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) @@ -11816,7 +12060,7 @@ beos*) shlibpath_var=LIBRARY_PATH ;; -bsdi4*) +bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -11832,7 +12076,7 @@ bsdi4*) cygwin* | mingw* | pw32*) version_type=windows - shrext=".dll" + shrext_cmds=".dll" need_version=no need_lib_prefix=no @@ -11854,7 +12098,7 @@ cygwin* | mingw* | pw32*) cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/lib /lib/w32api /usr/lib /usr/local/lib" + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix @@ -11874,7 +12118,7 @@ cygwin* | mingw* | pw32*) ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; @@ -11893,17 +12137,16 @@ darwin* | rhapsody*) version_type=darwin need_lib_prefix=no need_version=no - # FIXME: Relying on posixy $() will cause problems for - # cross-compilation, but unfortunately the echo tests do not - # yet detect zsh echo's removal of \ escapes. library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH - shrext='$(test .$module = .yes && echo .so || echo .dylib)' + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; @@ -11921,7 +12164,21 @@ freebsd1*) dynamic_linker=no ;; -freebsd*) +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in @@ -11940,7 +12197,7 @@ freebsd*) freebsd2*) shlibpath_overrides_runpath=yes ;; - freebsd3.01* | freebsdelf3.01*) + freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; @@ -11969,7 +12226,7 @@ hpux9* | hpux10* | hpux11*) need_version=no case "$host_cpu" in ia64*) - shrext='.so' + shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH @@ -11984,7 +12241,7 @@ hpux9* | hpux10* | hpux11*) sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) - shrext='.sl' + shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH @@ -11995,7 +12252,7 @@ hpux9* | hpux10* | hpux11*) sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) - shrext='.sl' + shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH @@ -12064,6 +12321,33 @@ linux*) # before this can be enabled. hardcode_into_libs=yes + # find out which ABI we are using + libsuff= + case "$host_cpu" in + x86_64*|s390x*|powerpc64*) + echo '#line 12328 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *64-bit*) + libsuff=64 + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + ;; + esac + fi + rm -rf conftest* + ;; + esac + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + fi + # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, @@ -12073,6 +12357,18 @@ linux*) dynamic_linker='GNU/Linux ld.so' ;; +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + netbsd*) version_type=sunos need_lib_prefix=no @@ -12082,7 +12378,7 @@ netbsd*) finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi @@ -12098,7 +12394,7 @@ newsos6) shlibpath_overrides_runpath=yes ;; -nto-qnx) +nto-qnx*) version_type=linux need_lib_prefix=no need_version=no @@ -12131,7 +12427,7 @@ openbsd*) os2*) libname_spec='$name' - shrext=".dll" + shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' @@ -12229,13 +12525,79 @@ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || \ + test -n "$runpath_var_CXX" || \ + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 +echo "${ECHO_T}$hardcode_action_CXX" >&6 + +if test "$hardcode_action_CXX" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= case $host_os in beos*) @@ -12834,7 +13196,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext <conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC compiler_F77=$CC -cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 @@ -13529,8 +13924,10 @@ aix3*) postinstall_cmds='$RANLIB $lib' fi ;; -aix4*) - test "$enable_shared" = yes && enable_static=no +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi ;; esac echo "$as_me:$LINENO: result: $enable_shared" >&5 @@ -13633,6 +14030,16 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' fi ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_F77='-qnocommon' + lt_prog_compiler_wl_F77='-Wl,' + ;; + esac + ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being @@ -13668,13 +14075,20 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; linux*) - case $CC in - icc|ecc) + case $cc_basename in + icc* | ecc*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-static' ;; - ccc) + pgcc* | pgf77* | pgf90*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-fpic' + lt_prog_compiler_static_F77='-static' + ;; + ccc*) lt_prog_compiler_wl_F77='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_F77='-non_shared' @@ -13694,9 +14108,14 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; solaris*) - lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_F77='-Qoption ld ';; + *) + lt_prog_compiler_wl_F77='-Wl,';; + esac ;; sunos4*) @@ -13718,6 +14137,11 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 fi ;; + unicos*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_can_build_shared_F77=no + ;; + uts4*) lt_prog_compiler_pic_F77='-pic' lt_prog_compiler_static_F77='-Bstatic' @@ -13736,7 +14160,8 @@ echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_F77"; then - echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -13754,15 +14179,17 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13757: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14182: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:13761: \$? = $ac_status" >&5 + echo "$as_me:14186: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_pic_works_F77=yes fi fi @@ -13805,13 +14232,6 @@ else mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext - # According to Tom Tromey, Ian Lance Taylor reported there are C compilers - # that will create temporary files in the current directory regardless of - # the output directory. Thus, making CWD read-only will cause this test - # to fail, enabling locking or at least warning the user not to do parallel - # builds. - chmod -w . - lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. @@ -13821,22 +14241,27 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13824: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14244: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:13828: \$? = $ac_status" >&5 + echo "$as_me:14248: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - if test ! -s out/conftest.err; then + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_F77=yes fi fi chmod u+w . - $rm conftest* out/* - rmdir out + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* @@ -13907,6 +14332,16 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) @@ -13927,6 +14362,27 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_F77='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_F77= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) @@ -13977,7 +14433,7 @@ EOF allow_undefined_flag_F77=unsupported always_export_symbols_F77=no enable_shared_with_static_runtimes_F77=yes - export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' @@ -13991,7 +14447,37 @@ EOF fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else - ld_shlibs=no + ld_shlibs_F77=no + fi + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_F77= + ;; + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_F77= + tmp_addflag=' -fpic -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_F77=no fi ;; @@ -14043,16 +14529,11 @@ EOF ;; esac - if test "$ld_shlibs_F77" = yes; then - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_F77='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec_F77= - fi + if test "$ld_shlibs_F77" = no; then + runpath_var= + hardcode_libdir_flag_spec_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= fi else # PORTME fill in a description of your system's linker (not GNU ld) @@ -14116,7 +14597,7 @@ EOF link_all_deplibs_F77=yes if test "$GCC" = yes; then - case $host_os in aix4.012|aix4.012.*) + case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` @@ -14137,6 +14618,9 @@ EOF fi esac shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi else # not using gcc if test "$host_cpu" = ia64; then @@ -14277,7 +14761,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ld_shlibs_F77=no ;; - bsdi4*) + bsdi[45]*) export_dynamic_flag_spec_F77=-rdynamic ;; @@ -14291,55 +14775,64 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext=".dll" + shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_F77='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' + fix_srcfile_path_F77='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_F77=yes ;; darwin* | rhapsody*) - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - archive_cmds_need_lc_F77=no case "$host_os" in - rhapsody* | darwin1.[012]) - allow_undefined_flag_F77='-undefined suppress' - ;; - *) # Darwin 1.3 on - test -z ${LD_TWOLEVEL_NAMESPACE} && allow_undefined_flag_F77='-flat_namespace -undefined suppress' - ;; + rhapsody* | darwin1.[012]) + allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; esac - # FIXME: Relying on posixy $() will cause problems for - # cross-compilation, but unfortunately the echo tests do not - # yet detect zsh echo's removal of \ escapes. Also zsh mangles - # `"' quotes if we put them in here... so don't! - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - archive_cmds_F77='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - module_cmds_F77='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + archive_cmds_need_lc_F77=no hardcode_direct_F77=no hardcode_automatic_F77=yes hardcode_shlibpath_var_F77=unsupported - whole_archive_flag_spec_F77='-all_load $convenience' + whole_archive_flag_spec_F77='' link_all_deplibs_F77=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_F77=no + ;; + esac fi ;; @@ -14373,7 +14866,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd*) + freebsd* | kfreebsd*-gnu | dragonfly*) archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes @@ -14484,6 +14977,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_shlibpath_var_F77=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' export_dynamic_flag_spec_F77='${wl}-E' else @@ -14529,7 +15023,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_F77='-rpath $libdir' @@ -14548,10 +15042,12 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi solaris*) no_undefined_flag_F77=' -z text' if test "$GCC" = yes; then + wlarc='${wl}' archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else + wlarc='' archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' @@ -14560,8 +15056,18 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_shlibpath_var_F77=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; - *) # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; esac link_all_deplibs_F77=yes ;; @@ -14733,78 +15239,12 @@ echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 ;; esac -echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 -hardcode_action_F77= -if test -n "$hardcode_libdir_flag_spec_F77" || \ - test -n "$runpath_var F77" || \ - test "X$hardcode_automatic_F77"="Xyes" ; then - - # We can hardcode non-existant directories. - if test "$hardcode_direct_F77" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && - test "$hardcode_minus_L_F77" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action_F77=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_F77=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_F77=unsupported -fi -echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 -echo "${ECHO_T}$hardcode_action_F77" >&6 - -if test "$hardcode_action_F77" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - -striplib= -old_striplib= -echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - ;; - *) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - ;; - esac -fi - echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= -shrext=".so" +shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= @@ -14892,7 +15332,7 @@ aix4* | aix5*) amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) @@ -14901,7 +15341,7 @@ beos*) shlibpath_var=LIBRARY_PATH ;; -bsdi4*) +bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -14917,7 +15357,7 @@ bsdi4*) cygwin* | mingw* | pw32*) version_type=windows - shrext=".dll" + shrext_cmds=".dll" need_version=no need_lib_prefix=no @@ -14939,7 +15379,7 @@ cygwin* | mingw* | pw32*) cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/lib /lib/w32api /usr/lib /usr/local/lib" + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix @@ -14959,7 +15399,7 @@ cygwin* | mingw* | pw32*) ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; @@ -14978,17 +15418,16 @@ darwin* | rhapsody*) version_type=darwin need_lib_prefix=no need_version=no - # FIXME: Relying on posixy $() will cause problems for - # cross-compilation, but unfortunately the echo tests do not - # yet detect zsh echo's removal of \ escapes. library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH - shrext='$(test .$module = .yes && echo .so || echo .dylib)' + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; @@ -15006,7 +15445,21 @@ freebsd1*) dynamic_linker=no ;; -freebsd*) +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in @@ -15025,7 +15478,7 @@ freebsd*) freebsd2*) shlibpath_overrides_runpath=yes ;; - freebsd3.01* | freebsdelf3.01*) + freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; @@ -15054,7 +15507,7 @@ hpux9* | hpux10* | hpux11*) need_version=no case "$host_cpu" in ia64*) - shrext='.so' + shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH @@ -15069,7 +15522,7 @@ hpux9* | hpux10* | hpux11*) sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) - shrext='.sl' + shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH @@ -15080,7 +15533,7 @@ hpux9* | hpux10* | hpux11*) sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) - shrext='.sl' + shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH @@ -15149,6 +15602,33 @@ linux*) # before this can be enabled. hardcode_into_libs=yes + # find out which ABI we are using + libsuff= + case "$host_cpu" in + x86_64*|s390x*|powerpc64*) + echo '#line 15609 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *64-bit*) + libsuff=64 + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + ;; + esac + fi + rm -rf conftest* + ;; + esac + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + fi + # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, @@ -15158,6 +15638,18 @@ linux*) dynamic_linker='GNU/Linux ld.so' ;; +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + netbsd*) version_type=sunos need_lib_prefix=no @@ -15167,7 +15659,7 @@ netbsd*) finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi @@ -15183,7 +15675,7 @@ newsos6) shlibpath_overrides_runpath=yes ;; -nto-qnx) +nto-qnx*) version_type=linux need_lib_prefix=no need_version=no @@ -15216,7 +15708,7 @@ openbsd*) os2*) libname_spec='$name' - shrext=".dll" + shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' @@ -15314,6 +15806,73 @@ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_F77= +if test -n "$hardcode_libdir_flag_spec_F77" || \ + test -n "$runpath_var_F77" || \ + test "X$hardcode_automatic_F77" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_F77" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && + test "$hardcode_minus_L_F77" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_F77=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_F77=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_F77=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 +echo "${ECHO_T}$hardcode_action_F77" >&6 + +if test "$hardcode_action_F77" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + + # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh @@ -15328,7 +15887,8 @@ if test -f "$ltmain"; then # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM SED SHELL \ + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ @@ -15428,6 +15988,12 @@ fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo @@ -15458,7 +16024,7 @@ LN_S=$lt_LN_S NM=$lt_NM # A symbol stripping program -STRIP=$STRIP +STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD @@ -15489,7 +16055,7 @@ objext="$ac_objext" libext="$libext" # Shared library suffix (normally ".so"). -shrext='$shrext' +shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" @@ -15504,7 +16070,7 @@ max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 -# Must we lock files when doing compilation ? +# Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? @@ -15706,7 +16272,10 @@ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. - test -f Makefile && make "$ltmain" + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi fi @@ -15739,7 +16308,7 @@ objext_GCJ=$objext lt_simple_compile_test_code="class foo {}\n" # Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String argv) {}; }\n' +lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. @@ -15750,15 +16319,41 @@ LTCC=${LTCC-"$CC"} compiler=$CC +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC compiler_GCJ=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + # GCJ did not exist at the time GCC didn't implicitly link libc in. archive_cmds_need_lc_GCJ=no +old_archive_cmds_GCJ=$old_archive_cmds + ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly @@ -15769,7 +16364,8 @@ lt_prog_compiler_no_builtin_flag_GCJ= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' - echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 + +echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -15787,15 +16383,17 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15790: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16386: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:15794: \$? = $ac_status" >&5 + echo "$as_me:16390: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi @@ -15898,6 +16496,16 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' fi ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_GCJ='-qnocommon' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + esac + ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being @@ -15933,13 +16541,20 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; linux*) - case $CC in - icc|ecc) + case $cc_basename in + icc* | ecc*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-static' ;; - ccc) + pgcc* | pgf77* | pgf90*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-fpic' + lt_prog_compiler_static_GCJ='-static' + ;; + ccc*) lt_prog_compiler_wl_GCJ='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_GCJ='-non_shared' @@ -15959,9 +16574,14 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; solaris*) - lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_GCJ='-Qoption ld ';; + *) + lt_prog_compiler_wl_GCJ='-Wl,';; + esac ;; sunos4*) @@ -15983,6 +16603,11 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 fi ;; + unicos*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_can_build_shared_GCJ=no + ;; + uts4*) lt_prog_compiler_pic_GCJ='-pic' lt_prog_compiler_static_GCJ='-Bstatic' @@ -16001,7 +16626,8 @@ echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_GCJ"; then - echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -16019,15 +16645,17 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16022: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16648: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:16026: \$? = $ac_status" >&5 + echo "$as_me:16652: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_pic_works_GCJ=yes fi fi @@ -16070,13 +16698,6 @@ else mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext - # According to Tom Tromey, Ian Lance Taylor reported there are C compilers - # that will create temporary files in the current directory regardless of - # the output directory. Thus, making CWD read-only will cause this test - # to fail, enabling locking or at least warning the user not to do parallel - # builds. - chmod -w . - lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. @@ -16086,22 +16707,27 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16089: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16710: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:16093: \$? = $ac_status" >&5 + echo "$as_me:16714: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - if test ! -s out/conftest.err; then + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_GCJ=yes fi fi chmod u+w . - $rm conftest* out/* - rmdir out + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* @@ -16172,6 +16798,16 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) @@ -16192,6 +16828,27 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_GCJ= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) @@ -16242,7 +16899,7 @@ EOF allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=no enable_shared_with_static_runtimes_GCJ=yes - export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' @@ -16256,7 +16913,37 @@ EOF fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else - ld_shlibs=no + ld_shlibs_GCJ=no + fi + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_GCJ= + ;; + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_GCJ= + tmp_addflag=' -fpic -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_GCJ=no fi ;; @@ -16308,16 +16995,11 @@ EOF ;; esac - if test "$ld_shlibs_GCJ" = yes; then - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec_GCJ= - fi + if test "$ld_shlibs_GCJ" = no; then + runpath_var= + hardcode_libdir_flag_spec_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= fi else # PORTME fill in a description of your system's linker (not GNU ld) @@ -16381,7 +17063,7 @@ EOF link_all_deplibs_GCJ=yes if test "$GCC" = yes; then - case $host_os in aix4.012|aix4.012.*) + case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` @@ -16402,6 +17084,9 @@ EOF fi esac shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi else # not using gcc if test "$host_cpu" = ia64; then @@ -16562,7 +17247,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ld_shlibs_GCJ=no ;; - bsdi4*) + bsdi[45]*) export_dynamic_flag_spec_GCJ=-rdynamic ;; @@ -16576,55 +17261,64 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext=".dll" + shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_GCJ='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' + fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_GCJ=yes ;; darwin* | rhapsody*) - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - archive_cmds_need_lc_GCJ=no case "$host_os" in - rhapsody* | darwin1.[012]) - allow_undefined_flag_GCJ='-undefined suppress' - ;; - *) # Darwin 1.3 on - test -z ${LD_TWOLEVEL_NAMESPACE} && allow_undefined_flag_GCJ='-flat_namespace -undefined suppress' - ;; + rhapsody* | darwin1.[012]) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; esac - # FIXME: Relying on posixy $() will cause problems for - # cross-compilation, but unfortunately the echo tests do not - # yet detect zsh echo's removal of \ escapes. Also zsh mangles - # `"' quotes if we put them in here... so don't! - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - archive_cmds_GCJ='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - module_cmds_GCJ='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + archive_cmds_need_lc_GCJ=no hardcode_direct_GCJ=no hardcode_automatic_GCJ=yes hardcode_shlibpath_var_GCJ=unsupported - whole_archive_flag_spec_GCJ='-all_load $convenience' + whole_archive_flag_spec_GCJ='' link_all_deplibs_GCJ=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_GCJ=no + ;; + esac fi ;; @@ -16658,7 +17352,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd*) + freebsd* | kfreebsd*-gnu | dragonfly*) archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes @@ -16769,6 +17463,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_shlibpath_var_GCJ=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' export_dynamic_flag_spec_GCJ='${wl}-E' else @@ -16814,7 +17509,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_GCJ='-rpath $libdir' @@ -16833,10 +17528,12 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi solaris*) no_undefined_flag_GCJ=' -z text' if test "$GCC" = yes; then + wlarc='${wl}' archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else + wlarc='' archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' @@ -16845,8 +17542,18 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_shlibpath_var_GCJ=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; - *) # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; esac link_all_deplibs_GCJ=yes ;; @@ -17001,95 +17708,29 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then - archive_cmds_need_lc_GCJ=no - else - archive_cmds_need_lc_GCJ=yes - fi - allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $rm conftest* - echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 -echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 - ;; - esac - fi - ;; -esac - -echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 -hardcode_action_GCJ= -if test -n "$hardcode_libdir_flag_spec_GCJ" || \ - test -n "$runpath_var GCJ" || \ - test "X$hardcode_automatic_GCJ"="Xyes" ; then - - # We can hardcode non-existant directories. - if test "$hardcode_direct_GCJ" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && - test "$hardcode_minus_L_GCJ" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action_GCJ=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_GCJ=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_GCJ=unsupported -fi -echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 -echo "${ECHO_T}$hardcode_action_GCJ" >&6 - -if test "$hardcode_action_GCJ" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - -striplib= -old_striplib= -echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - ;; - *) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - ;; - esac -fi + archive_cmds_need_lc_GCJ=no + else + archive_cmds_need_lc_GCJ=yes + fi + allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 + ;; + esac + fi + ;; +esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= -shrext=".so" +shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= @@ -17177,7 +17818,7 @@ aix4* | aix5*) amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) @@ -17186,7 +17827,7 @@ beos*) shlibpath_var=LIBRARY_PATH ;; -bsdi4*) +bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -17202,7 +17843,7 @@ bsdi4*) cygwin* | mingw* | pw32*) version_type=windows - shrext=".dll" + shrext_cmds=".dll" need_version=no need_lib_prefix=no @@ -17224,7 +17865,7 @@ cygwin* | mingw* | pw32*) cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/lib /lib/w32api /usr/lib /usr/local/lib" + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix @@ -17244,7 +17885,7 @@ cygwin* | mingw* | pw32*) ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; @@ -17263,17 +17904,16 @@ darwin* | rhapsody*) version_type=darwin need_lib_prefix=no need_version=no - # FIXME: Relying on posixy $() will cause problems for - # cross-compilation, but unfortunately the echo tests do not - # yet detect zsh echo's removal of \ escapes. library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH - shrext='$(test .$module = .yes && echo .so || echo .dylib)' + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; @@ -17291,7 +17931,21 @@ freebsd1*) dynamic_linker=no ;; -freebsd*) +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in @@ -17310,7 +17964,7 @@ freebsd*) freebsd2*) shlibpath_overrides_runpath=yes ;; - freebsd3.01* | freebsdelf3.01*) + freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; @@ -17339,7 +17993,7 @@ hpux9* | hpux10* | hpux11*) need_version=no case "$host_cpu" in ia64*) - shrext='.so' + shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH @@ -17354,7 +18008,7 @@ hpux9* | hpux10* | hpux11*) sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) - shrext='.sl' + shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH @@ -17365,7 +18019,7 @@ hpux9* | hpux10* | hpux11*) sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) - shrext='.sl' + shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH @@ -17434,6 +18088,33 @@ linux*) # before this can be enabled. hardcode_into_libs=yes + # find out which ABI we are using + libsuff= + case "$host_cpu" in + x86_64*|s390x*|powerpc64*) + echo '#line 18095 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *64-bit*) + libsuff=64 + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + ;; + esac + fi + rm -rf conftest* + ;; + esac + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + fi + # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, @@ -17443,6 +18124,18 @@ linux*) dynamic_linker='GNU/Linux ld.so' ;; +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + netbsd*) version_type=sunos need_lib_prefix=no @@ -17452,7 +18145,7 @@ netbsd*) finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi @@ -17468,7 +18161,7 @@ newsos6) shlibpath_overrides_runpath=yes ;; -nto-qnx) +nto-qnx*) version_type=linux need_lib_prefix=no need_version=no @@ -17501,7 +18194,7 @@ openbsd*) os2*) libname_spec='$name' - shrext=".dll" + shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' @@ -17599,6 +18292,72 @@ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_GCJ= +if test -n "$hardcode_libdir_flag_spec_GCJ" || \ + test -n "$runpath_var_GCJ" || \ + test "X$hardcode_automatic_GCJ" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_GCJ" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && + test "$hardcode_minus_L_GCJ" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_GCJ=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_GCJ=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_GCJ=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 +echo "${ECHO_T}$hardcode_action_GCJ" >&6 + +if test "$hardcode_action_GCJ" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown @@ -18204,7 +18963,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext <conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC compiler_RC=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + lt_cv_prog_compiler_c_o_RC=yes # The else clause should only fire when bootstrapping the @@ -18860,7 +19653,8 @@ if test -f "$ltmain"; then # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM SED SHELL \ + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ @@ -18960,6 +19754,12 @@ fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo @@ -18990,7 +19790,7 @@ LN_S=$lt_LN_S NM=$lt_NM # A symbol stripping program -STRIP=$STRIP +STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD @@ -19021,7 +19821,7 @@ objext="$ac_objext" libext="$libext" # Shared library suffix (normally ".so"). -shrext='$shrext' +shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" @@ -19036,7 +19836,7 @@ max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC -# Must we lock files when doing compilation ? +# Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? @@ -19238,7 +20038,10 @@ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. - test -f Makefile && make "$ltmain" + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi fi @@ -19676,7 +20479,8 @@ else # Here in libltdl for libgcj we don't build modules for darwin. # So we say no. Then the extension gets .dylib which is the right -# thing for shared libraries on darwin. +# thing for shared libraries on darwin. Please keep me next time you +# import libltdl. case "$host_os" in darwin*) module=no @@ -19685,7 +20489,7 @@ darwin*) module=yes ;; esac -eval libltdl_cv_shlibext=$shrext +eval libltdl_cv_shlibext=$shrext_cmds fi echo "$as_me:$LINENO: result: $libltdl_cv_shlibext" >&5 @@ -20534,7 +21338,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <confdef2opt.sed <<\_ACEOF -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g -t quote -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g -t quote -d -: quote -s,[ `~#$^&*(){}\\|;'"<>?],\\&,g -s,\[,\\&,g -s,\],\\&,g -s,\$,$$,g -p -_ACEOF -# We use echo to avoid assuming a particular line-breaking character. -# The extra dot is to prevent the shell from consuming trailing -# line-breaks from the sub-command output. A line-break within -# single-quotes doesn't work because, if this script is created in a -# platform that uses two characters for line-breaks (e.g., DOS), tr -# would break. -ac_LF_and_DOT=`echo; echo .` -DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` -rm -f confdef2opt.sed - +DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= @@ -22537,10 +23308,15 @@ Usage: $0 [OPTIONS] [FILE]... --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE Configuration files: $config_files +Configuration headers: +$config_headers + Configuration commands: $config_commands @@ -22659,9 +23435,9 @@ for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. - "config.h" ) CONFIG_FILES="$CONFIG_FILES config.h:config-h.in" ;; "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h:config-h.in" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; @@ -22674,6 +23450,7 @@ done # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi @@ -22746,6 +23523,9 @@ s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t +s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t +s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t +s,@MAINT@,$MAINT,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t @@ -22768,9 +23548,6 @@ s,@am__leading_dot@,$am__leading_dot,;t t s,@AMTAR@,$AMTAR,;t t s,@am__tar@,$am__tar,;t t s,@am__untar@,$am__untar,;t t -s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t -s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t -s,@MAINT@,$MAINT,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t @@ -23069,6 +23846,251 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# # CONFIG_COMMANDS section. # for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue diff --git a/libjava/libltdl/configure.ac b/libjava/libltdl/configure.ac index c30a8459610..c903838bdd4 100644 --- a/libjava/libltdl/configure.ac +++ b/libjava/libltdl/configure.ac @@ -1,5 +1,5 @@ ## Process this file with autoconf to create configure. -*- autoconf -*- -# Copyright 2001 Free Software Foundation, Inc. +# Copyright 2001, 2006 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 @@ -13,18 +13,22 @@ # # 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., 59 Temple Place, Suite 330, Boston, MA -# 02111-1307 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301 USA + + +dnl FIXME: Is this really new enough? +AC_PREREQ(2.50) ## ------------------------ ## ## Autoconf initialisation. ## ## ------------------------ ## -AC_PREREQ(2.59) AC_INIT([libltdl], [1.2], [bug-libtool@gnu.org]) AC_CONFIG_SRCDIR([ltdl.c]) -AC_CONFIG_FILES([config.h:config-h.in]) +## GCJ LOCAL: gcc tree uses maintainer mode. +AM_MAINTAINER_MODE ## ------------------------------- ## ## Libltdl specific configuration. ## @@ -48,8 +52,8 @@ fi ## ------------------------ ## ## Automake Initialisation. ## ## ------------------------ ## -AM_INIT_AUTOMAKE([1.9.1]) -AM_MAINTAINER_MODE +AM_INIT_AUTOMAKE(AC_PACKAGE_TARNAME, AC_PACKAGE_VERSION, -) +AM_CONFIG_HEADER([config.h:config-h.in]) ## ------------------ ## diff --git a/libjava/libltdl/install-sh b/libjava/libltdl/install-sh dissimilarity index 63% index 6ce63b9f76b..1a8353401c4 100755 --- a/libjava/libltdl/install-sh +++ b/libjava/libltdl/install-sh @@ -1,294 +1,323 @@ -#!/bin/sh -# -# install - install a program, script, or datafile -# -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd=$cpprog - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd=$stripprog - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "$0: no input file specified" >&2 - exit 1 -else - : -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d "$dst" ]; then - instcmd=: - chmodcmd="" - else - instcmd=$mkdirprog - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f "$src" ] || [ -d "$src" ] - then - : - else - echo "$0: $src does not exist" >&2 - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "$0: no destination specified" >&2 - exit 1 - else - : - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d "$dst" ] - then - dst=$dst/`basename "$src"` - else - : - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' - ' -IFS="${IFS-$defaultIFS}" - -oIFS=$IFS -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS=$oIFS - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp=$pathcomp$1 - shift - - if [ ! -d "$pathcomp" ] ; - then - $mkdirprog "$pathcomp" - else - : - fi - - pathcomp=$pathcomp/ -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd "$dst" && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename "$dst"` - else - dstfile=`basename "$dst" $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename "$dst"` - else - : - fi - -# Make a couple of temp file names in the proper directory. - - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - -# Trap to clean up temp files at exit. - - trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 - trap '(exit $?); exit' 1 2 13 15 - -# Move or copy the file name to the temp name - - $doit $instcmd "$src" "$dsttmp" && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi && - -# Now remove or move aside any old file at destination location. We try this -# two ways since rm can't unlink itself on some systems and the destination -# file might be busy for other reasons. In this case, the final cleanup -# might fail but the new file should still install successfully. - -{ - if [ -f "$dstdir/$dstfile" ] - then - $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null || - $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null || - { - echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 - (exit 1); exit - } - else - : - fi -} && - -# Now rename the file to the real destination. - - $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" - -fi && - -# The final little trick to "correctly" pass the exit status to the exit trap. - -{ - (exit 0); exit -} +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2005-02-02.21 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +chmodcmd="$chmodprog 0755" +chowncmd= +chgrpcmd= +stripcmd= +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src= +dst= +dir_arg= +dstarg= +no_target_directory= + +usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: +-c (ignored) +-d create directories instead of installing files. +-g GROUP $chgrpprog installed files to GROUP. +-m MODE $chmodprog installed files to MODE. +-o USER $chownprog installed files to USER. +-s $stripprog installed files. +-t DIRECTORY install into DIRECTORY. +-T report an error if DSTFILE is a directory. +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test -n "$1"; do + case $1 in + -c) shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit $?;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t) dstarg=$2 + shift + shift + continue;; + + -T) no_target_directory=true + shift + continue;; + + --version) echo "$0 $scriptversion"; exit $?;; + + *) # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + test -n "$dir_arg$dstarg" && break + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dstarg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dstarg" + shift # fnord + fi + shift # arg + dstarg=$arg + done + break;; + esac +done + +if test -z "$1"; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src + src= + + if test -d "$dst"; then + mkdircmd=: + chmodcmd= + else + mkdircmd=$mkdirprog + fi + else + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dstarg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst ;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dstarg: Is a directory" >&2 + exit 1 + fi + dst=$dst/`basename "$src"` + fi + fi + + # This sed command emulates the dirname command. + dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` + + # Make sure that the destination directory exists. + + # Skip lots of stat calls in the usual case. + if test ! -d "$dstdir"; then + defaultIFS=' + ' + IFS="${IFS-$defaultIFS}" + + oIFS=$IFS + # Some sh's can't handle IFS=/ for some reason. + IFS='%' + set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` + shift + IFS=$oIFS + + pathcomp= + + while test $# -ne 0 ; do + pathcomp=$pathcomp$1 + shift + if test ! -d "$pathcomp"; then + $mkdirprog "$pathcomp" + # mkdir can fail with a `File exist' error in case several + # install-sh are creating the directory concurrently. This + # is OK. + test -d "$pathcomp" || exit + fi + pathcomp=$pathcomp/ + done + fi + + if test -n "$dir_arg"; then + $doit $mkdircmd "$dst" \ + && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } + + else + dstfile=`basename "$dst"` + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + trap '(exit $?); exit' 1 2 13 15 + + # Copy the file name to the temp name. + $doit $cpprog "$src" "$dsttmp" && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && + + # Now rename the file to the real destination. + { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ + || { + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + if test -f "$dstdir/$dstfile"; then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ + || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ + || { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit 1 + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + } + } + fi || { (exit 1); exit 1; } +done + +# The final little trick to "correctly" pass the exit status to the exit trap. +{ + (exit 0); exit 0 +} + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/libjava/libltdl/ltdl.c b/libjava/libltdl/ltdl.c index 40ed84d417a..6b5d8890efa 100644 --- a/libjava/libltdl/ltdl.c +++ b/libjava/libltdl/ltdl.c @@ -1,5 +1,5 @@ /* ltdl.c -- system independent dlopen wrapper - Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2004, 2006 Free Software Foundation, Inc. Originally by Thomas Tanner This file is part of GNU Libtool. @@ -20,8 +20,8 @@ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -02111-1307 USA +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA */ @@ -29,6 +29,10 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA # include #endif +#if HAVE_BOEHM_GC +# include +#endif + #if HAVE_UNISTD_H # include #endif @@ -37,8 +41,14 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA # include #endif +/* Include the header defining malloc. On K&R C compilers, + that's , on ANSI C and ISO C compilers, that's . */ #if HAVE_STDLIB_H # include +#else +# if HAVE_MALLOC_H +# include +# endif #endif #if HAVE_STRING_H @@ -53,10 +63,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA # include #endif -#if HAVE_MALLOC_H -# include -#endif - #if HAVE_MEMORY_H # include #endif @@ -65,10 +71,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA # include #endif -#if HAVE_BOEHM_GC -#include -#endif - #ifndef __WINDOWS__ # ifdef __WIN32__ @@ -241,7 +243,7 @@ LT_GLOBAL_DATA void (*lt_dlfree) LT_PARAMS((lt_ptr ptr)) #else #define LT_DLMALLOC(tp, n) ((tp *) lt_dlmalloc ((n) * sizeof(tp))) -#define LT_DLREALLOC(tp, p, n) ((tp *) rpl_realloc ((p), (n) * sizeof(tp))) +#define LT_DLREALLOC(tp, p, n) ((tp *) lt_dlrealloc ((p), (n) * sizeof(tp))) #define LT_DLFREE(p) \ LT_STMT_START { if (p) (p) = (lt_dlfree (p), (lt_ptr) 0); } LT_STMT_END @@ -387,11 +389,13 @@ memcpy (dest, src, size) const lt_ptr src; size_t size; { - size_t i = 0; + const char * s = src; + char * d = dest; + size_t i = 0; for (i = 0; i < size; ++i) { - dest[i] = src[i]; + d[i] = s[i]; } return dest; @@ -411,17 +415,21 @@ memmove (dest, src, size) const lt_ptr src; size_t size; { - size_t i; + const char * s = src; + char * d = dest; + size_t i; - if (dest < src) + if (d < s) for (i = 0; i < size; ++i) { - dest[i] = src[i]; + d[i] = s[i]; } - else if (dest > src) - for (i = size -1; i >= 0; --i) + else if (d > s && size > 0) + for (i = size -1; ; --i) { - dest[i] = src[i]; + d[i] = s[i]; + if (i == 0) + break; } return dest; @@ -453,7 +461,9 @@ opendir (path) DIR *entry; assert(path != (char *) NULL); - (void) strncpy(file_specification,path,LT_FILENAME_MAX-1); + /* allow space for: path + '\\' '\\' '*' '.' '*' + '\0' */ + (void) strncpy (file_specification, path, LT_FILENAME_MAX-6); + file_specification[LT_FILENAME_MAX-6] = LT_EOS_CHAR; (void) strcat(file_specification,"\\"); entry = LT_DLMALLOC (DIR,sizeof(DIR)); if (entry != (DIR *) 0) @@ -494,6 +504,7 @@ static struct dirent *readdir(entry) entry->firsttime = FALSE; (void) strncpy(entry->file_info.d_name,entry->Win32FindData.cFileName, LT_FILENAME_MAX-1); + entry->file_info.d_name[LT_FILENAME_MAX - 1] = LT_EOS_CHAR; entry->file_info.d_namlen = strlen(entry->file_info.d_name); return(&entry->file_info); } @@ -686,7 +697,7 @@ argz_insert (pargz, pargz_len, before, entry) /* This probably indicates a programmer error, but to preserve semantics, scan back to the start of an entry if BEFORE points into the middle of it. */ - while ((before >= *pargz) && (before[-1] != LT_EOS_CHAR)) + while ((before > *pargz) && (before[-1] != LT_EOS_CHAR)) --before; { @@ -1020,7 +1031,7 @@ lt_erealloc (addr, size) lt_ptr addr; size_t size; { - lt_ptr mem = realloc (addr, size); + lt_ptr mem = lt_dlrealloc (addr, size); if (size && !mem) LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY)); return mem; @@ -1584,7 +1595,11 @@ static struct lt_user_dlloader sys_dld = { #if HAVE_MACH_O_DYLD_H -# include +#if !defined(__APPLE_CC__) && !defined(__MWERKS__) && !defined(__private_extern__) +/* Is this correct? Does it still function properly? */ +#define __private_extern__ extern +#endif +# include #endif #include @@ -1610,14 +1625,14 @@ static enum DYLD_BOOL (*ltdl_NSIsSymbolNameDefinedInImage)(const struct mach_hea static enum DYLD_BOOL (*ltdl_NSMakePrivateModulePublic)(NSModule module) = 0; #ifndef NSADDIMAGE_OPTION_NONE -#define NSADDIMAGE_OPTION_NONE 0x0 +#define NSADDIMAGE_OPTION_NONE 0x0 #endif #ifndef NSADDIMAGE_OPTION_RETURN_ON_ERROR #define NSADDIMAGE_OPTION_RETURN_ON_ERROR 0x1 -#endif +#endif #ifndef NSADDIMAGE_OPTION_WITH_SEARCHING #define NSADDIMAGE_OPTION_WITH_SEARCHING 0x2 -#endif +#endif #ifndef NSADDIMAGE_OPTION_RETURN_ONLY_IF_LOADED #define NSADDIMAGE_OPTION_RETURN_ONLY_IF_LOADED 0x4 #endif @@ -1626,7 +1641,7 @@ static enum DYLD_BOOL (*ltdl_NSMakePrivateModulePublic)(NSModule module) = 0; #endif #ifndef NSLOOKUPSYMBOLINIMAGE_OPTION_BIND #define NSLOOKUPSYMBOLINIMAGE_OPTION_BIND 0x0 -#endif +#endif #ifndef NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW #define NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW 0x1 #endif @@ -1647,11 +1662,11 @@ lt_int_dyld_error(othererror) int lerno; const char *errstr; const char *file; - NSLinkEditError(&ler,&lerno,&file,&errstr); + NSLinkEditError(&ler,&lerno,&file,&errstr); if (!errstr || !strlen(errstr)) errstr = othererror; return errstr; } - + static const struct mach_header * lt_int_dyld_get_mach_header_from_nsmodule(module) NSModule module; @@ -1675,7 +1690,7 @@ lt_int_dyld_get_mach_header_from_nsmodule(module) static const char* lt_int_dyld_lib_install_name(mh) const struct mach_header *mh; -{ +{ /* NSAddImage is also used to get the loaded image, but it only works if the lib is installed, for uninstalled libs we need to check the install_names against each other. Note that this is still broken if DYLD_IMAGE_SUFFIX is set and a @@ -1684,14 +1699,13 @@ static const char* lt_int_dyld_lib_install_name(mh) int j; struct load_command *lc; unsigned long offset = sizeof(struct mach_header); - const struct mach_header *mh1; const char* retStr=NULL; for (j = 0; j < mh->ncmds; j++) { lc = (struct load_command*)(((unsigned long)mh) + offset); if (LC_ID_DYLIB == lc->cmd) { - retStr=(char*)(((struct dylib_command*)lc)->dylib.name.offset + + retStr=(char*)(((struct dylib_command*)lc)->dylib.name.offset + (unsigned long)lc); } offset += lc->cmdsize; @@ -1705,7 +1719,7 @@ lt_int_dyld_match_loaded_lib_by_install_name(const char *name) int i=_dyld_image_count(); int j; const struct mach_header *mh=NULL; - const char *id=NULL; + const char *id=NULL; for (j = 0; j < i; j++) { id=lt_int_dyld_lib_install_name(_dyld_get_image_header(j)); @@ -1717,7 +1731,7 @@ lt_int_dyld_match_loaded_lib_by_install_name(const char *name) } return mh; } - + static NSSymbol lt_int_dyld_NSlookupSymbolInLinkedLibs(symbol,mh) const char *symbol; @@ -1736,26 +1750,26 @@ lt_int_dyld_NSlookupSymbolInLinkedLibs(symbol,mh) lc = (struct load_command*)(((unsigned long)mh) + offset); if ((LC_LOAD_DYLIB == lc->cmd) || (LC_LOAD_WEAK_DYLIB == lc->cmd)) { - mh1=lt_int_dyld_match_loaded_lib_by_install_name((char*)(((struct dylib_command*)lc)->dylib.name.offset + + mh1=lt_int_dyld_match_loaded_lib_by_install_name((char*)(((struct dylib_command*)lc)->dylib.name.offset + (unsigned long)lc)); if (!mh1) - { - /* Maybe NSAddImage can find it */ - mh1=ltdl_NSAddImage((char*)(((struct dylib_command*)lc)->dylib.name.offset + + { + /* Maybe NSAddImage can find it */ + mh1=ltdl_NSAddImage((char*)(((struct dylib_command*)lc)->dylib.name.offset + (unsigned long)lc), - NSADDIMAGE_OPTION_RETURN_ONLY_IF_LOADED + + NSADDIMAGE_OPTION_RETURN_ONLY_IF_LOADED + NSADDIMAGE_OPTION_WITH_SEARCHING + NSADDIMAGE_OPTION_RETURN_ON_ERROR ); - } + } if (mh1) { retSym = ltdl_NSLookupSymbolInImage(mh1, symbol, - NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW + NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW | NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR ); - if (retSym) break; - } + if (retSym) break; + } } offset += lc->cmdsize; } @@ -1768,7 +1782,7 @@ sys_dyld_init() { int retCode = 0; int err = 0; - if (!_dyld_present()) { + if (!_dyld_present()) { retCode=1; } else { @@ -1788,8 +1802,8 @@ sys_dyld_open (loader_data, filename) lt_module module = 0; NSObjectFileImage ofi = 0; NSObjectFileImageReturnCode ofirc; - - if (!filename) + + if (!filename) return (lt_module)-1; ofirc = NSCreateObjectFileImageFromFile(filename, &ofi); switch (ofirc) @@ -1806,9 +1820,9 @@ sys_dyld_open (loader_data, filename) case NSObjectFileImageInappropriateFile: if (ltdl_NSIsSymbolNameDefinedInImage && ltdl_NSLookupSymbolInImage) { - module = (lt_module)ltdl_NSAddImage(filename, NSADDIMAGE_OPTION_RETURN_ON_ERROR); + module = (lt_module)ltdl_NSAddImage(filename, NSADDIMAGE_OPTION_RETURN_ON_ERROR); break; - } + } default: LT_DLMUTEX_SETERROR (lt_int_dyld_error(LT_DLSTRERROR(CANNOT_OPEN))); return 0; @@ -1824,13 +1838,12 @@ sys_dyld_close (loader_data, module) { int retCode = 0; int flags = 0; - unsigned long size=0; if (module == (lt_module)-1) return 0; -#ifdef __BIG_ENDIAN__ +#ifdef __BIG_ENDIAN__ if (((struct mach_header *)module)->magic == MH_MAGIC) -#else +#else if (((struct mach_header *)module)->magic == MH_CIGAM) -#endif +#endif { LT_DLMUTEX_SETERROR("Can not close a dylib"); retCode = 1; @@ -1841,14 +1854,14 @@ sys_dyld_close (loader_data, module) /* Currently, if a module contains c++ static destructors and it is unloaded, we get a segfault in atexit(), due to compiler and dynamic loader differences of opinion, this works around that. -*/ - if ((const struct section *)NULL != +*/ + if ((const struct section *)NULL != getsectbynamefromheader(lt_int_dyld_get_mach_header_from_nsmodule(module), "__DATA","__mod_term_func")) { flags += NSUNLINKMODULE_OPTION_KEEP_MEMORY_MAPPED; - } -#endif + } +#endif #ifdef __ppc__ flags += NSUNLINKMODULE_OPTION_RESET_LAZY_REFERENCES; #endif @@ -1856,9 +1869,9 @@ sys_dyld_close (loader_data, module) { retCode=1; LT_DLMUTEX_SETERROR (lt_int_dyld_error(LT_DLSTRERROR(CANNOT_CLOSE))); - } + } } - + return retCode; } @@ -1872,44 +1885,47 @@ sys_dyld_sym (loader_data, module, symbol) NSSymbol *nssym = 0; void *unused; const struct mach_header *mh=NULL; + char saveError[256] = "Symbol not found"; if (module == (lt_module)-1) { _dyld_lookup_and_bind(symbol,(unsigned long*)&address,&unused); return address; } -#ifdef __BIG_ENDIAN__ +#ifdef __BIG_ENDIAN__ if (((struct mach_header *)module)->magic == MH_MAGIC) -#else +#else if (((struct mach_header *)module)->magic == MH_CIGAM) -#endif +#endif { if (ltdl_NSIsSymbolNameDefinedInImage && ltdl_NSLookupSymbolInImage) { mh=module; - if (ltdl_NSIsSymbolNameDefinedInImage((struct mach_header*)module,symbol)) + if (ltdl_NSIsSymbolNameDefinedInImage((struct mach_header*)module,symbol)) { nssym = ltdl_NSLookupSymbolInImage((struct mach_header*)module, symbol, - NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW + NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW | NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR ); } - } - - } + } + + } else { nssym = NSLookupSymbolInModule(module, symbol); } - if (!nssym) + if (!nssym) { + strncpy(saveError, lt_int_dyld_error(LT_DLSTRERROR(SYMBOL_NOT_FOUND)), 255); + saveError[255] = 0; if (!mh) mh=lt_int_dyld_get_mach_header_from_nsmodule(module); nssym = lt_int_dyld_NSlookupSymbolInLinkedLibs(symbol,mh); - } - if (!nssym) + } + if (!nssym) { - LT_DLMUTEX_SETERROR (lt_int_dyld_error(LT_DLSTRERROR(SYMBOL_NOT_FOUND))); + LT_DLMUTEX_SETERROR (saveError); return NULL; - } + } return NSAddressOfSymbol(nssym); } @@ -2988,6 +3004,9 @@ trim (dest, str) LT_DLFREE (*dest); + if (!end) + return 1; + if (len > 3 && str[0] == '\'') { tmp = LT_EMALLOC (char, end - str); @@ -3092,7 +3111,7 @@ try_dlopen (phandle, filename) ++base_name; } else - LT_DLMEM_REASSIGN (base_name, canonical); + base_name = canonical; assert (base_name && *base_name); @@ -3923,7 +3942,7 @@ lt_dlerror () LT_DLMUTEX_GETERROR (error); LT_DLMUTEX_SETERROR (0); - return error ? error : LT_DLSTRERROR (UNKNOWN); + return error ? error : NULL; } static int diff --git a/libjava/libltdl/ltdl.h b/libjava/libltdl/ltdl.h index 2bbfa302cc4..8aaf3429ad4 100644 --- a/libjava/libltdl/ltdl.h +++ b/libjava/libltdl/ltdl.h @@ -20,8 +20,8 @@ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free -Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -02111-1307 USA +Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA */ /* Only include this header file once. */ @@ -79,7 +79,7 @@ LT_BEGIN_C_DECLS /* LT_CONC creates a new concatenated symbol for the compiler in a portable way. */ -#if defined(__STDC__) || defined(__cplusplus) +#if defined(__STDC__) || defined(__cplusplus) || defined(_MSC_VER) # define LT_CONC(s,t) s##t #else # define LT_CONC(s,t) s/**/t @@ -111,6 +111,7 @@ LT_BEGIN_C_DECLS # endif #endif + #ifdef __WINDOWS__ # ifndef __CYGWIN__ /* LT_DIRSEP_CHAR is accepted *in addition* to '/' as a directory @@ -140,6 +141,10 @@ LT_BEGIN_C_DECLS #endif +#if defined(_MSC_VER) /* Visual Studio */ +# define R_OK 4 +#endif + /* --- DYNAMIC MODULE LOADING API --- */ @@ -148,31 +153,31 @@ LT_BEGIN_C_DECLS typedef struct lt_dlhandle_struct *lt_dlhandle; /* A loaded module. */ /* Initialisation and finalisation functions for libltdl. */ -extern int lt_dlinit LT_PARAMS((void)); -extern int lt_dlexit LT_PARAMS((void)); +LT_SCOPE int lt_dlinit LT_PARAMS((void)); +LT_SCOPE int lt_dlexit LT_PARAMS((void)); /* Module search path manipulation. */ -extern int lt_dladdsearchdir LT_PARAMS((const char *search_dir)); -extern int lt_dlinsertsearchdir LT_PARAMS((const char *before, +LT_SCOPE int lt_dladdsearchdir LT_PARAMS((const char *search_dir)); +LT_SCOPE int lt_dlinsertsearchdir LT_PARAMS((const char *before, const char *search_dir)); -extern int lt_dlsetsearchpath LT_PARAMS((const char *search_path)); -extern const char *lt_dlgetsearchpath LT_PARAMS((void)); -extern int lt_dlforeachfile LT_PARAMS(( +LT_SCOPE int lt_dlsetsearchpath LT_PARAMS((const char *search_path)); +LT_SCOPE const char *lt_dlgetsearchpath LT_PARAMS((void)); +LT_SCOPE int lt_dlforeachfile LT_PARAMS(( const char *search_path, int (*func) (const char *filename, lt_ptr data), lt_ptr data)); /* Portable libltdl versions of the system dlopen() API. */ -extern lt_dlhandle lt_dlopen LT_PARAMS((const char *filename)); -extern lt_dlhandle lt_dlopenext LT_PARAMS((const char *filename)); -extern lt_ptr lt_dlsym LT_PARAMS((lt_dlhandle handle, +LT_SCOPE lt_dlhandle lt_dlopen LT_PARAMS((const char *filename)); +LT_SCOPE lt_dlhandle lt_dlopenext LT_PARAMS((const char *filename)); +LT_SCOPE lt_ptr lt_dlsym LT_PARAMS((lt_dlhandle handle, const char *name)); -extern const char *lt_dlerror LT_PARAMS((void)); -extern int lt_dlclose LT_PARAMS((lt_dlhandle handle)); +LT_SCOPE const char *lt_dlerror LT_PARAMS((void)); +LT_SCOPE int lt_dlclose LT_PARAMS((lt_dlhandle handle)); /* Module residency management. */ -extern int lt_dlmakeresident LT_PARAMS((lt_dlhandle handle)); -extern int lt_dlisresident LT_PARAMS((lt_dlhandle handle)); +LT_SCOPE int lt_dlmakeresident LT_PARAMS((lt_dlhandle handle)); +LT_SCOPE int lt_dlisresident LT_PARAMS((lt_dlhandle handle)); @@ -185,7 +190,7 @@ typedef void lt_dlmutex_unlock LT_PARAMS((void)); typedef void lt_dlmutex_seterror LT_PARAMS((const char *errmsg)); typedef const char *lt_dlmutex_geterror LT_PARAMS((void)); -extern int lt_dlmutex_register LT_PARAMS((lt_dlmutex_lock *lock, +LT_SCOPE int lt_dlmutex_register LT_PARAMS((lt_dlmutex_lock *lock, lt_dlmutex_unlock *unlock, lt_dlmutex_seterror *seterror, lt_dlmutex_geterror *geterror)); @@ -218,8 +223,8 @@ typedef struct { lt_ptr address; } lt_dlsymlist; -extern int lt_dlpreload LT_PARAMS((const lt_dlsymlist *preloaded)); -extern int lt_dlpreload_default +LT_SCOPE int lt_dlpreload LT_PARAMS((const lt_dlsymlist *preloaded)); +LT_SCOPE int lt_dlpreload_default LT_PARAMS((const lt_dlsymlist *preloaded)); #define LTDL_SET_PRELOADED_SYMBOLS() LT_STMT_START{ \ @@ -241,20 +246,20 @@ typedef struct { number of times lt_dlclosed. */ } lt_dlinfo; -extern const lt_dlinfo *lt_dlgetinfo LT_PARAMS((lt_dlhandle handle)); -extern lt_dlhandle lt_dlhandle_next LT_PARAMS((lt_dlhandle place)); -extern int lt_dlforeach LT_PARAMS(( +LT_SCOPE const lt_dlinfo *lt_dlgetinfo LT_PARAMS((lt_dlhandle handle)); +LT_SCOPE lt_dlhandle lt_dlhandle_next LT_PARAMS((lt_dlhandle place)); +LT_SCOPE int lt_dlforeach LT_PARAMS(( int (*func) (lt_dlhandle handle, lt_ptr data), lt_ptr data)); /* Associating user data with loaded modules. */ typedef unsigned lt_dlcaller_id; -extern lt_dlcaller_id lt_dlcaller_register LT_PARAMS((void)); -extern lt_ptr lt_dlcaller_set_data LT_PARAMS((lt_dlcaller_id key, +LT_SCOPE lt_dlcaller_id lt_dlcaller_register LT_PARAMS((void)); +LT_SCOPE lt_ptr lt_dlcaller_set_data LT_PARAMS((lt_dlcaller_id key, lt_dlhandle handle, lt_ptr data)); -extern lt_ptr lt_dlcaller_get_data LT_PARAMS((lt_dlcaller_id key, +LT_SCOPE lt_ptr lt_dlcaller_get_data LT_PARAMS((lt_dlcaller_id key, lt_dlhandle handle)); @@ -285,15 +290,15 @@ struct lt_user_dlloader { lt_user_data dlloader_data; }; -extern lt_dlloader *lt_dlloader_next LT_PARAMS((lt_dlloader *place)); -extern lt_dlloader *lt_dlloader_find LT_PARAMS(( +LT_SCOPE lt_dlloader *lt_dlloader_next LT_PARAMS((lt_dlloader *place)); +LT_SCOPE lt_dlloader *lt_dlloader_find LT_PARAMS(( const char *loader_name)); -extern const char *lt_dlloader_name LT_PARAMS((lt_dlloader *place)); -extern lt_user_data *lt_dlloader_data LT_PARAMS((lt_dlloader *place)); -extern int lt_dlloader_add LT_PARAMS((lt_dlloader *place, +LT_SCOPE const char *lt_dlloader_name LT_PARAMS((lt_dlloader *place)); +LT_SCOPE lt_user_data *lt_dlloader_data LT_PARAMS((lt_dlloader *place)); +LT_SCOPE int lt_dlloader_add LT_PARAMS((lt_dlloader *place, const struct lt_user_dlloader *dlloader, const char *loader_name)); -extern int lt_dlloader_remove LT_PARAMS(( +LT_SCOPE int lt_dlloader_remove LT_PARAMS(( const char *loader_name)); @@ -336,8 +341,8 @@ enum { }; /* These functions are only useful from inside custom module loaders. */ -extern int lt_dladderror LT_PARAMS((const char *diagnostic)); -extern int lt_dlseterror LT_PARAMS((int errorcode)); +LT_SCOPE int lt_dladderror LT_PARAMS((const char *diagnostic)); +LT_SCOPE int lt_dlseterror LT_PARAMS((int errorcode)); diff --git a/libjava/libltdl/ltmain.sh b/libjava/libltdl/ltmain.sh index 036c65e519b..9be0eb1c38c 100644 --- a/libjava/libltdl/ltmain.sh +++ b/libjava/libltdl/ltmain.sh @@ -1,7 +1,7 @@ # ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun configure. # -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003 +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 # Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # @@ -17,13 +17,41 @@ # # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. +basename="s,^.*/,,g" + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +progname=`echo "$progpath" | $SED $basename` +modename="$progname" + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION=1.5.16 +TIMESTAMP=" (1.1220.2.235 2005/04/25 18:13:26)" + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes. +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + # Check that we have a working $echo. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. @@ -36,7 +64,7 @@ elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then : else # Restart under the correct shell, and then maybe $echo will work. - exec $SHELL "$0" --no-reexec ${1+"$@"} + exec $SHELL "$progpath" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then @@ -45,19 +73,9 @@ if test "X$1" = X--fallback-echo; then cat <&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit 1 + exit $EXIT_FAILURE fi # Global variables. @@ -114,15 +133,20 @@ show_help= execute_dlfiles= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" +quote_scanset='[[~#^*{};<>?'"'"' ]' ##################################### # Shell function definitions: # This seems to be the best place for them +# func_win32_libid arg +# return the library type of file 'arg' +# # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. -win32_libid () { +func_win32_libid () +{ win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in @@ -131,7 +155,7 @@ win32_libid () { ;; *ar\ archive*) # could be an import, or static if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ - grep -E 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then win32_nmres=`eval $NM -f posix -A $1 | \ sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` if test "X$win32_nmres" = "Ximport" ; then @@ -141,7 +165,7 @@ win32_libid () { fi fi ;; - *DLL*) + *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... @@ -155,9 +179,179 @@ win32_libid () { $echo $win32_libid_type } + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case "$@ " in + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" + $echo "$modename: specify a tag with \`--tag'" 1>&2 + exit $EXIT_FAILURE +# else +# $echo "$modename: using $tagname tagged configuration" + fi + ;; + esac + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + + $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" + $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 + exit $EXIT_FAILURE + fi +} + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + my_status="" + + $show "${rm}r $my_gentop" + $run ${rm}r "$my_gentop" + $show "$mkdir $my_gentop" + $run $mkdir "$my_gentop" + my_status=$? + if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then + exit $my_status + fi + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` + my_xdir="$my_gentop/$my_xlib" + + $show "${rm}r $my_xdir" + $run ${rm}r "$my_xdir" + $show "$mkdir $my_xdir" + $run $mkdir "$my_xdir" + status=$? + if test "$status" -ne 0 && test ! -d "$my_xdir"; then + exit $status + fi + case $host in + *-darwin*) + $show "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + if test -z "$run"; then + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` + if test -n "$darwin_arches"; then + darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + $show "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we have a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + lipo -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + ${rm}r unfat-$$ + cd "$darwin_orig_dir" + else + cd "$darwin_orig_dir" + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + fi # $run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + func_extract_archives_result="$my_oldobjs" +} # End of Shell function definitions ##################################### +# Darwin sucks +eval std_shrext=\"$shrext_cmds\" + # Parse our command line options once, thoroughly. while test "$#" -gt 0 do @@ -177,12 +371,13 @@ do ;; tag) tagname="$arg" + preserve_args="${preserve_args}=$arg" # Check whether tagname contains only valid characters case $tagname in *[!-_A-Za-z0-9,/]*) $echo "$progname: invalid tag name: $tagname" 1>&2 - exit 1 + exit $EXIT_FAILURE ;; esac @@ -192,10 +387,10 @@ do # not specially marked. ;; *) - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$0" > /dev/null; then + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then taglist="$taglist $tagname" # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`" + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" else $echo "$progname: ignoring unknown tag $tagname" 1>&2 fi @@ -221,24 +416,25 @@ do --version) $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" $echo - $echo "Copyright (C) 2003 Free Software Foundation, Inc." + $echo "Copyright (C) 2005 Free Software Foundation, Inc." $echo "This is free software; see the source for copying conditions. There is NO" $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - exit 0 + exit $? ;; --config) - ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0 + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath # Now print the configurations for the tags. for tagname in $taglist; do - ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$0" + ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" done - exit 0 + exit $? ;; --debug) $echo "$progname: enabling shell trace mode" set -x + preserve_args="$preserve_args $arg" ;; --dry-run | -n) @@ -257,7 +453,7 @@ do else $echo "disable static libraries" fi - exit 0 + exit $? ;; --finish) mode="finish" ;; @@ -269,6 +465,7 @@ do --quiet | --silent) show=: + preserve_args="$preserve_args $arg" ;; --tag) prevopt="--tag" prev=tag ;; @@ -276,6 +473,7 @@ do set tag "$optarg" ${1+"$@"} shift prev=tag + preserve_args="$preserve_args --tag" ;; -dlopen) @@ -286,7 +484,7 @@ do -*) $echo "$modename: unrecognized option \`$arg'" 1>&2 $echo "$help" 1>&2 - exit 1 + exit $EXIT_FAILURE ;; *) @@ -299,7 +497,7 @@ done if test -n "$prevopt"; then $echo "$modename: option \`$prevopt' requires an argument" 1>&2 $echo "$help" 1>&2 - exit 1 + exit $EXIT_FAILURE fi # If this variable is set in any of the actions, the command in it @@ -312,7 +510,7 @@ if test -z "$show_help"; then # Infer the operation mode. if test -z "$mode"; then $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 - $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2 + $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 case $nonopt in *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) mode=link @@ -355,7 +553,7 @@ if test -z "$show_help"; then if test -n "$execute_dlfiles" && test "$mode" != execute; then $echo "$modename: unrecognized option \`-dlopen'" 1>&2 $echo "$help" 1>&2 - exit 1 + exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. @@ -370,9 +568,11 @@ if test -z "$show_help"; then # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes suppress_output= arg_mode=normal libobj= + later= for arg do @@ -395,24 +595,19 @@ if test -z "$show_help"; then -o) if test -n "$libobj" ; then $echo "$modename: you cannot specify \`-o' more than once" 1>&2 - exit 1 + exit $EXIT_FAILURE fi arg_mode=target continue ;; - -static) - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes + -static | -prefer-pic | -prefer-non-pic) + later="$later $arg" continue ;; - -prefer-non-pic) - pic_mode=no + -no-suppress) + suppress_opt=no continue ;; @@ -425,14 +620,14 @@ if test -z "$show_help"; then args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` lastarg= save_ifs="$IFS"; IFS=',' - for arg in $args; do + for arg in $args; do IFS="$save_ifs" # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") arg="\"$arg\"" ;; esac @@ -463,8 +658,11 @@ if test -z "$show_help"; then case $lastarg in # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + # in scan sets, and some SunOS ksh mistreat backslash-escaping + # in scan sets (worked around with variable expansion), + # and furthermore cannot handle '|' '&' '(' ')' in scan sets + # at all, so we specify them separately. + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") lastarg="\"$lastarg\"" ;; esac @@ -475,11 +673,11 @@ if test -z "$show_help"; then case $arg_mode in arg) $echo "$modename: you must specify an argument for -Xcompile" - exit 1 + exit $EXIT_FAILURE ;; target) $echo "$modename: you must specify a target with \`-o'" 1>&2 - exit 1 + exit $EXIT_FAILURE ;; *) # Get the name of the library object. @@ -512,51 +710,40 @@ if test -z "$show_help"; then *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; *) $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 - exit 1 + exit $EXIT_FAILURE ;; esac - # Infer tagged configuration to use if any are available and - # if one wasn't chosen via the "--tag" command line option. - # Only attempt this if the compiler in the base compile - # command doesn't match the default compiler. - if test -n "$available_tags" && test -z "$tagname"; then - case $base_compile in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`" - case "$base_compile " in - "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - $echo "$modename: unable to infer tagged configuration" - $echo "$modename: specify a tag with \`--tag'" 1>&2 - exit 1 -# else -# $echo "$modename: using $tagname tagged configuration" - fi + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue ;; esac - fi + done + qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` + case $qlibobj in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + qlibobj="\"$qlibobj\"" ;; + esac + if test "X$libobj" != "X$qlibobj"; then + $echo "$modename: libobj name \`$libobj' may not contain shell special characters." + exit $EXIT_FAILURE + fi objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then @@ -569,7 +756,7 @@ if test -z "$show_help"; then if test -z "$base_compile"; then $echo "$modename: you must specify a compilation command" 1>&2 $echo "$help" 1>&2 - exit 1 + exit $EXIT_FAILURE fi # Delete any leftover library objects. @@ -580,7 +767,7 @@ if test -z "$show_help"; then fi $run $rm $removelist - trap "$run $rm $removelist; exit 1" 1 2 15 + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in @@ -599,7 +786,7 @@ if test -z "$show_help"; then output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" removelist="$removelist $output_obj $lockfile" - trap "$run $rm $removelist; exit 1" 1 2 15 + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 else output_obj= need_locks=no @@ -609,7 +796,7 @@ if test -z "$show_help"; then # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then - until $run ln "$0" "$lockfile" 2>/dev/null; do + until $run ln "$progpath" "$lockfile" 2>/dev/null; do $show "Waiting for $lockfile to be removed" sleep 2 done @@ -627,14 +814,19 @@ avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist - exit 1 + exit $EXIT_FAILURE fi - $echo $srcfile > "$lockfile" + $echo "$srcfile" > "$lockfile" fi if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi + qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` + case $qsrcfile in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + qsrcfile="\"$qsrcfile\"" ;; + esac $run $rm "$libobj" "${libobj}T" @@ -656,10 +848,10 @@ EOF fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then - command="$base_compile $srcfile $pic_flag" + command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code - command="$base_compile $srcfile" + command="$base_compile $qsrcfile" fi if test ! -d "${xdir}$objdir"; then @@ -682,7 +874,7 @@ EOF if $run eval "$command"; then : else test -n "$output_obj" && $run $rm $removelist - exit 1 + exit $EXIT_FAILURE fi if test "$need_locks" = warn && @@ -702,7 +894,7 @@ avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist - exit 1 + exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one @@ -723,7 +915,9 @@ pic_object='$objdir/$objname' EOF # Allow error messages only from the first compilation. - suppress_output=' >/dev/null 2>&1' + if test "$suppress_opt" = yes; then + suppress_output=' >/dev/null 2>&1' + fi else # No PIC object so indicate it doesn't exist in the libtool # object file. @@ -737,9 +931,9 @@ EOF if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code - command="$base_compile $srcfile" + command="$base_compile $qsrcfile" else - command="$base_compile $srcfile $pic_flag" + command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then command="$command -o $obj" @@ -752,7 +946,7 @@ EOF if $run eval "$command"; then : else $run $rm $removelist - exit 1 + exit $EXIT_FAILURE fi if test "$need_locks" = warn && @@ -772,7 +966,7 @@ avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist - exit 1 + exit $EXIT_FAILURE fi # Just move the object if needed @@ -810,7 +1004,7 @@ EOF $run $rm "$lockfile" fi - exit 0 + exit $EXIT_SUCCESS ;; # libtool link mode @@ -836,7 +1030,7 @@ EOF ;; esac libtool_args="$nonopt" - base_compile="$nonopt" + base_compile="$nonopt $@" compile_command="$nonopt" finalize_command="$nonopt" @@ -868,6 +1062,7 @@ EOF no_install=no objs= non_pic_objects= + precious_files_regex= prefer_static_libs=no preload=no prev= @@ -881,6 +1076,8 @@ EOF vinfo= vinfo_number=no + func_infer_tag $base_compile + # We need to know -static, to get the right output filenames. for arg do @@ -912,10 +1109,9 @@ EOF # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" - base_compile="$base_compile $arg" shift case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test ;; *) qarg=$arg ;; @@ -976,7 +1172,7 @@ EOF export_symbols="$arg" if test ! -f "$arg"; then $echo "$modename: symbol file \`$arg' does not exist" - exit 1 + exit $EXIT_FAILURE fi prev= continue @@ -991,6 +1187,11 @@ EOF prev= continue ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; release) release="-$arg" prev= @@ -1023,7 +1224,7 @@ EOF test "$pic_object" = none && \ test "$non_pic_object" = none; then $echo "$modename: cannot find name of object for \`$arg'" 1>&2 - exit 1 + exit $EXIT_FAILURE fi # Extract subdirectory from the argument. @@ -1076,7 +1277,7 @@ EOF # Only an error if not doing a dry-run. if test -z "$run"; then $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 - exit 1 + exit $EXIT_FAILURE else # Dry-run case. @@ -1097,7 +1298,7 @@ EOF done else $echo "$modename: link input file \`$save_arg' does not exist" - exit 1 + exit $EXIT_FAILURE fi arg=$save_arg prev= @@ -1109,7 +1310,7 @@ EOF [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 - exit 1 + exit $EXIT_FAILURE ;; esac if test "$prev" = rpath; then @@ -1149,6 +1350,16 @@ EOF finalize_command="$finalize_command $qarg" continue ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + darwin_framework) + compiler_flags="$compiler_flags $arg" + prev= + continue + ;; *) eval "$prev=\"\$arg\"" prev= @@ -1197,7 +1408,7 @@ EOF -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: more than one -exported-symbols argument is not allowed" - exit 1 + exit $EXIT_FAILURE fi if test "X$arg" = "X-export-symbols"; then prev=expsyms @@ -1207,6 +1418,12 @@ EOF continue ;; + -framework) + prev=darwin_framework + compiler_flags="$compiler_flags $arg" + continue + ;; + -inst-prefix-dir) prev=inst_prefix continue @@ -1233,7 +1450,7 @@ EOF absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 - exit 1 + exit $EXIT_FAILURE fi dir="$absdir" ;; @@ -1267,7 +1484,7 @@ EOF # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; - *-*-openbsd* | *-*-freebsd*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; @@ -1278,7 +1495,7 @@ EOF esac elif test "X$arg" = "X-lc_r"; then case $host in - *-*-openbsd* | *-*-freebsd*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; @@ -1288,23 +1505,41 @@ EOF continue ;; + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + -model) + compile_command="$compile_command $arg" + compiler_flags="$compiler_flags $arg" + finalize_command="$finalize_command $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + -module) module=yes continue ;; - # gcc -m* arguments should be passed to the linker via $compiler_flags - # in order to pass architecture information to the linker - # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo - # but this is not reliable with gcc because gcc may use -mfoo to - # select a different linker, different libraries, etc, while - # -Wl,-mfoo simply passes -mfoo to the linker. - -m*) + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m* pass through architecture-specific compiler args for GCC + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*) + # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") arg="\"$arg\"" ;; esac @@ -1352,6 +1587,11 @@ EOF -o) prev=output ;; + -precious-files-regex) + prev=precious_regex + continue + ;; + -release) prev=release continue @@ -1374,7 +1614,7 @@ EOF [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 - exit 1 + exit $EXIT_FAILURE ;; esac case "$xrpath " in @@ -1415,7 +1655,7 @@ EOF for flag in $args; do IFS="$save_ifs" case $flag in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") flag="\"$flag\"" ;; esac @@ -1433,7 +1673,7 @@ EOF for flag in $args; do IFS="$save_ifs" case $flag in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") flag="\"$flag\"" ;; esac @@ -1466,7 +1706,7 @@ EOF # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") arg="\"$arg\"" ;; esac @@ -1497,7 +1737,7 @@ EOF test "$pic_object" = none && \ test "$non_pic_object" = none; then $echo "$modename: cannot find name of object for \`$arg'" 1>&2 - exit 1 + exit $EXIT_FAILURE fi # Extract subdirectory from the argument. @@ -1550,7 +1790,7 @@ EOF # Only an error if not doing a dry-run. if test -z "$run"; then $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 - exit 1 + exit $EXIT_FAILURE else # Dry-run case. @@ -1600,7 +1840,7 @@ EOF # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") arg="\"$arg\"" ;; esac @@ -1617,48 +1857,7 @@ EOF if test -n "$prev"; then $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 $echo "$help" 1>&2 - exit 1 - fi - - # Infer tagged configuration to use if any are available and - # if one wasn't chosen via the "--tag" command line option. - # Only attempt this if the compiler in the base link - # command doesn't match the default compiler. - if test -n "$available_tags" && test -z "$tagname"; then - case $base_compile in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`" - case $base_compile in - "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) - # The compiler in $compile_command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - $echo "$modename: unable to infer tagged configuration" - $echo "$modename: specify a tag with \`--tag'" 1>&2 - exit 1 -# else -# $echo "$modename: using $tagname tagged configuration" - fi - ;; - esac + exit $EXIT_FAILURE fi if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then @@ -1702,7 +1901,7 @@ EOF "") $echo "$modename: you must specify an output file" 1>&2 $echo "$help" 1>&2 - exit 1 + exit $EXIT_FAILURE ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; @@ -1712,7 +1911,7 @@ EOF case $host in *cygwin* | *mingw* | *pw32*) - # don't eliminate duplcations in $postdeps and $predeps + # don't eliminate duplications in $postdeps and $predeps duplicate_compiler_generated_deps=yes ;; *) @@ -1765,7 +1964,7 @@ EOF *.la) ;; *) $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 - exit 1 + exit $EXIT_FAILURE ;; esac done @@ -1803,18 +2002,23 @@ EOF lib= found=no case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + fi + continue + ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 continue fi - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do - for search_ext in .la $shrext .so .a; do + for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then @@ -1890,11 +2094,11 @@ EOF fi if test "$pass" = scan; then deplibs="$deplib $deplibs" - newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; *) $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 @@ -1922,7 +2126,22 @@ EOF fi case $linkmode in lib) - if test "$deplibs_check_method" != pass_all; then + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + if eval $echo \"$deplib\" 2>/dev/null \ + | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then $echo $echo "*** Warning: Trying to link with static lib archive $deplib." $echo "*** I have the capability to make that library automatically link in when" @@ -1973,14 +2192,14 @@ EOF if test "$found" = yes || test -f "$lib"; then : else $echo "$modename: cannot find the library \`$lib'" 1>&2 - exit 1 + exit $EXIT_FAILURE fi # Check to see that this really is a libtool archive. if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit 1 + exit $EXIT_FAILURE fi ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` @@ -1996,6 +2215,8 @@ EOF # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no + avoidtemprpath= + # Read the .la file case $lib in @@ -2016,7 +2237,7 @@ EOF if test -z "$libdir"; then if test -z "$old_library"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 - exit 1 + exit $EXIT_FAILURE fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" @@ -2033,12 +2254,12 @@ EOF done elif test "$linkmode" != prog && test "$linkmode" != lib; then $echo "$modename: \`$lib' is not a convenience library" 1>&2 - exit 1 + exit $EXIT_FAILURE fi continue fi # $pass = conv - + # Get the name of the library we link against. linklib= for l in $old_library $library_names; do @@ -2046,16 +2267,18 @@ EOF done if test -z "$linklib"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 - exit 1 + exit $EXIT_FAILURE fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 - exit 1 + exit $EXIT_FAILURE fi - if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't @@ -2092,11 +2315,19 @@ EOF dir="$libdir" absdir="$libdir" fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - notinst_path="$notinst_path $abs_ladir" + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi fi # $installed = yes name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` @@ -2104,7 +2335,7 @@ EOF if test "$pass" = dlpreopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 - exit 1 + exit $EXIT_FAILURE fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). @@ -2131,7 +2362,7 @@ EOF continue fi - + if test "$linkmode" = prog && test "$pass" != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" @@ -2169,7 +2400,7 @@ EOF if test -n "$library_names" && { test "$prefer_static_libs" = no || test -z "$old_library"; }; then # We need to hardcode the library path - if test -n "$shlibpath_var"; then + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath " in *" $dir "*) ;; @@ -2218,17 +2449,18 @@ EOF need_relink=yes fi # This is a shared library - - # Warn about portability, can't link against -module's on some systems (darwin) - if test "$shouldnotlink" = yes && test "$pass" = link ; then + + # Warn about portability, can't link against -module's on + # some systems (darwin) + if test "$shouldnotlink" = yes && test "$pass" = link ; then $echo if test "$linkmode" = prog; then $echo "*** Warning: Linking the executable $output against the loadable module" else $echo "*** Warning: Linking the shared library $output against the loadable module" fi - $echo "*** $linklib is not portable!" - fi + $echo "*** $linklib is not portable!" + fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. @@ -2286,9 +2518,10 @@ EOF else $show "extracting exported symbol list from \`$soname'" save_ifs="$IFS"; IFS='~' - eval cmds=\"$extract_expsyms_cmds\" + cmds=$extract_expsyms_cmds for cmd in $cmds; do IFS="$save_ifs" + eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done @@ -2299,9 +2532,10 @@ EOF if test -f "$output_objdir/$newlib"; then :; else $show "generating import library for \`$soname'" save_ifs="$IFS"; IFS='~' - eval cmds=\"$old_archive_from_expsyms_cmds\" + cmds=$old_archive_from_expsyms_cmds for cmd in $cmds; do IFS="$save_ifs" + eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done @@ -2324,9 +2558,9 @@ EOF case $host in *-*-sco3.2v5* ) add_dir="-L$dir" ;; *-*-darwin* ) - # if the lib is a module then we can not link against it, someone - # is ignoring the new warnings I added - if /usr/bin/file -L $add 2> /dev/null | grep "bundle" >/dev/null ; then + # if the lib is a module then we can not link against + # it, someone is ignoring the new warnings I added + if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then $echo "** Warning, lib $linklib is a module, not a shared library" if test -z "$old_library" ; then $echo @@ -2334,7 +2568,7 @@ EOF $echo "** The link will probably fail, sorry" else add="$dir/$old_library" - fi + fi fi esac elif test "$hardcode_minus_L" = no; then @@ -2376,7 +2610,7 @@ EOF if test "$lib_linked" != yes; then $echo "$modename: configuration error: unsupported hardcode properties" - exit 1 + exit $EXIT_FAILURE fi if test -n "$add_shlibpath"; then @@ -2419,7 +2653,8 @@ EOF esac add="-l$name" elif test "$hardcode_automatic" = yes; then - if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" @@ -2499,7 +2734,8 @@ EOF if test "$linkmode" = lib; then if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= @@ -2556,7 +2792,7 @@ EOF eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 - exit 1 + exit $EXIT_FAILURE fi if test "$absdir" != "$libdir"; then $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 @@ -2566,7 +2802,8 @@ EOF depdepl= case $host in *-*-darwin*) - # we do not want to link against static libs, but need to link against shared + # we do not want to link against static libs, + # but need to link against shared eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do @@ -2574,46 +2811,45 @@ EOF done if test -f "$path/$depdepl" ; then depdepl="$path/$depdepl" - fi + fi # do not add paths which are already there case " $newlib_search_path " in *" $path "*) ;; *) newlib_search_path="$newlib_search_path $path";; esac - path="" fi + path="" ;; *) - path="-L$path" - ;; - esac - + path="-L$path" + ;; + esac ;; - -l*) + -l*) case $host in *-*-darwin*) - # Again, we only want to link against shared libraries - eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` - for tmp in $newlib_search_path ; do - if test -f "$tmp/lib$tmp_libs.dylib" ; then - eval depdepl="$tmp/lib$tmp_libs.dylib" - break - fi - done - path="" + # Again, we only want to link against shared libraries + eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` + for tmp in $newlib_search_path ; do + if test -f "$tmp/lib$tmp_libs.dylib" ; then + eval depdepl="$tmp/lib$tmp_libs.dylib" + break + fi + done + path="" ;; *) continue ;; - esac + esac ;; *) continue ;; esac case " $deplibs " in - *" $depdepl "*) ;; - *) deplibs="$deplibs $depdepl" ;; - esac - case " $deplibs " in *" $path "*) ;; - *) deplibs="$deplibs $path" ;; + *) deplibs="$path $deplibs" ;; + esac + case " $deplibs " in + *" $depdepl "*) ;; + *) deplibs="$depdepl $deplibs" ;; esac done fi # link_all_deplibs != no @@ -2700,7 +2936,8 @@ EOF eval $var=\"$tmp_libs\" done # for var fi - # Last step: remove runtime libs from dependency_libs (they stay in deplibs) + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in @@ -2760,19 +2997,19 @@ EOF case $outputname in lib*) name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` - eval shared_ext=\"$shrext\" + eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) if test "$module" = no; then $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 $echo "$help" 1>&2 - exit 1 + exit $EXIT_FAILURE fi if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` - eval shared_ext=\"$shrext\" + eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` @@ -2783,7 +3020,7 @@ EOF if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 - exit 1 + exit $EXIT_FAILURE else $echo $echo "*** Warning: Linking the shared library $output against the non-libtool" @@ -2831,13 +3068,13 @@ EOF if test -n "$8"; then $echo "$modename: too many parameters to \`-version-info'" 1>&2 $echo "$help" 1>&2 - exit 1 + exit $EXIT_FAILURE fi # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible - + case $vinfo_number in yes) number_major="$2" @@ -2877,36 +3114,36 @@ EOF # Check that each of the things are valid numbers. case $current in - 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) - $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 + $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 + exit $EXIT_FAILURE ;; esac case $revision in - 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) - $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 + $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 + exit $EXIT_FAILURE ;; esac case $age in - 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) - $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 + $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 + exit $EXIT_FAILURE ;; esac if test "$age" -gt "$current"; then $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 + exit $EXIT_FAILURE fi # Calculate the version variables. @@ -2923,7 +3160,7 @@ EOF versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... minor_current=`expr $current + 1` - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" ;; freebsd-aout) @@ -2995,7 +3232,7 @@ EOF *) $echo "$modename: unknown library version type \`$version_type'" 1>&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit 1 + exit $EXIT_FAILURE ;; esac @@ -3049,6 +3286,12 @@ EOF *.$objext) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi removelist="$removelist $p" ;; *) ;; @@ -3123,7 +3366,7 @@ EOF *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; - *-*-openbsd* | *-*-freebsd*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; @@ -3528,7 +3771,7 @@ EOF fi # Get the real and link names of the library. - eval shared_ext=\"$shrext\" + eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names realname="$2" @@ -3558,10 +3801,11 @@ EOF $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols - eval cmds=\"$export_symbols_cmds\" + cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" + eval cmd=\"$cmd\" if len=`expr "X$cmd" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then $show "$cmd" @@ -3591,12 +3835,12 @@ EOF for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; - *) + *) tmp_deplibs="$tmp_deplibs $test_deplib" ;; esac done - deplibs="$tmp_deplibs" + deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then @@ -3604,67 +3848,13 @@ EOF eval libobjs=\"\$libobjs $whole_archive_flag_spec\" else gentop="$output_objdir/${outputname}x" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "$mkdir $gentop" - $run $mkdir "$gentop" - status=$? - if test "$status" -ne 0 && test ! -d "$gentop"; then - exit $status - fi generated="$generated $gentop" - for xlib in $convenience; do - # Extract the objects. - case $xlib in - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; - *) xabs=`pwd`"/$xlib" ;; - esac - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` - xdir="$gentop/$xlib" - - $show "${rm}r $xdir" - $run ${rm}r "$xdir" - $show "$mkdir $xdir" - $run $mkdir "$xdir" - status=$? - if test "$status" -ne 0 && test ! -d "$xdir"; then - exit $status - fi - # We will extract separately just the conflicting names and we will no - # longer touch any unique names. It is faster to leave these extract - # automatically by $AR in one run. - $show "(cd $xdir && $AR x $xabs)" - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? - if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 - $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 - $AR t "$xabs" | sort | uniq -cd | while read -r count name - do - i=1 - while test "$i" -le "$count" - do - # Put our $i before any first dot (extension) - # Never overwrite any file - name_to="$name" - while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" - do - name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` - done - $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" - $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? - i=`expr $i + 1` - done - done - fi - - libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` - done + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" fi fi - + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" @@ -3678,19 +3868,23 @@ EOF # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval cmds=\"$module_expsym_cmds\" + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds else - eval cmds=\"$module_cmds\" + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval cmds=\"$archive_expsym_cmds\" + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds else - eval cmds=\"$archive_cmds\" + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds fi fi - if test "X$skipped_export" != "X:" && len=`expr "X$cmds" : ".*"` && + if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else @@ -3709,6 +3903,7 @@ EOF save_libobjs=$libobjs fi save_output=$output + output_la=`$echo "X$output" | $Xsed -e "$basename"` # Clear the reloadable object creation command queue and # initialize k to one. @@ -3718,7 +3913,7 @@ EOF delfiles= last_robj= k=1 - output=$output_objdir/$save_output-${k}.$objext + output=$output_objdir/$output_la-${k}.$objext # Loop over the list of objects to be linked. for obj in $save_libobjs do @@ -3738,9 +3933,9 @@ EOF # the last one created. eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" fi - last_robj=$output_objdir/$save_output-${k}.$objext + last_robj=$output_objdir/$output_la-${k}.$objext k=`expr $k + 1` - output=$output_objdir/$save_output-${k}.$objext + output=$output_objdir/$output_la-${k}.$objext objlist=$obj len=1 fi @@ -3760,13 +3955,13 @@ EOF eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" fi - # Set up a command to remove the reloadale object files + # Set up a command to remove the reloadable object files # after they are used. i=0 while test "$i" -lt "$k" do i=`expr $i + 1` - delfiles="$delfiles $output_objdir/$save_output-${i}.$objext" + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" done $echo "creating a temporary reloadable object file: $output" @@ -3791,19 +3986,28 @@ EOF # value of $libobjs for piecewise linking. # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds else - eval cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi fi # Append the command to remove the reloadable object files # to the just-reset $cmds. - eval cmds=\"\$cmds~$rm $delfiles\" + eval cmds=\"\$cmds~\$rm $delfiles\" fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" + eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done @@ -3812,7 +4016,7 @@ EOF # Restore the uninstalled library and exit if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? - exit 0 + exit $EXIT_SUCCESS fi # Create links to the real library. @@ -3860,7 +4064,7 @@ EOF *.lo) if test -n "$objs$old_deplibs"; then $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 - exit 1 + exit $EXIT_FAILURE fi libobj="$output" obj=`$echo "X$output" | $Xsed -e "$lo2o"` @@ -3889,64 +4093,10 @@ EOF eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" else gentop="$output_objdir/${obj}x" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "$mkdir $gentop" - $run $mkdir "$gentop" - status=$? - if test "$status" -ne 0 && test ! -d "$gentop"; then - exit $status - fi generated="$generated $gentop" - for xlib in $convenience; do - # Extract the objects. - case $xlib in - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; - *) xabs=`pwd`"/$xlib" ;; - esac - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` - xdir="$gentop/$xlib" - - $show "${rm}r $xdir" - $run ${rm}r "$xdir" - $show "$mkdir $xdir" - $run $mkdir "$xdir" - status=$? - if test "$status" -ne 0 && test ! -d "$xdir"; then - exit $status - fi - # We will extract separately just the conflicting names and we will no - # longer touch any unique names. It is faster to leave these extract - # automatically by $AR in one run. - $show "(cd $xdir && $AR x $xabs)" - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? - if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 - $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 - $AR t "$xabs" | sort | uniq -cd | while read -r count name - do - i=1 - while test "$i" -le "$count" - do - # Put our $i before any first dot (extension) - # Never overwrite any file - name_to="$name" - while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" - do - name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` - done - $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" - $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? - i=`expr $i + 1` - done - done - fi - - reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` - done + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi @@ -3954,10 +4104,11 @@ EOF reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" - eval cmds=\"$reload_cmds\" + cmds=$reload_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" + eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done @@ -3970,7 +4121,7 @@ EOF $run ${rm}r $gentop fi - exit 0 + exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then @@ -3983,17 +4134,18 @@ EOF # accidentally link it into a program. # $show "echo timestamp > $libobj" # $run eval "echo timestamp > $libobj" || exit $? - exit 0 + exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" - eval cmds=\"$reload_cmds\" + cmds=$reload_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" + eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done @@ -4005,7 +4157,7 @@ EOF $run ${rm}r $gentop fi - exit 0 + exit $EXIT_SUCCESS ;; prog) @@ -4206,12 +4358,12 @@ extern \"C\" { # Prepare the list of exported symbols if test -z "$export_symbols"; then - export_symbols="$output_objdir/$output.exp" + export_symbols="$output_objdir/$outputname.exp" $run $rm $export_symbols $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' else - $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' - $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' + $run eval "${SED} -e 's/\([ ][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' $run eval 'mv "$nlist"T "$nlist"' fi fi @@ -4263,7 +4415,26 @@ extern \"C\" { #endif /* The mapping between symbol names and symbols. */ +" + + case $host in + *cygwin* | *mingw* ) + $echo >> "$output_objdir/$dlsyms" "\ +/* DATA imports from DLLs on WIN32 can't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs */ +struct { +" + ;; + * ) + $echo >> "$output_objdir/$dlsyms" "\ const struct { +" + ;; + esac + + + $echo >> "$output_objdir/$dlsyms" "\ const char *name; lt_ptr address; } @@ -4323,7 +4494,7 @@ static const void *lt_preloaded_setup() { ;; *) $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 - exit 1 + exit $EXIT_FAILURE ;; esac else @@ -4411,7 +4582,7 @@ static const void *lt_preloaded_setup() { # Link the executable and exit $show "$link_command" $run eval "$link_command" || exit $? - exit 0 + exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then @@ -4466,10 +4637,10 @@ static const void *lt_preloaded_setup() { fi # Quote $echo for shipping. - if test "X$echo" = "X$SHELL $0 --fallback-echo"; then - case $0 in - [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; - *) qecho="$SHELL `pwd`/$0 --fallback-echo";; + if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; esac qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` else @@ -4492,10 +4663,10 @@ static const void *lt_preloaded_setup() { esac case $host in *cygwin* | *mingw* ) - cwrappersource=`$echo ${objdir}/lt-${output}.c` + cwrappersource=`$echo ${objdir}/lt-${outputname}.c` cwrapper=`$echo ${output}.exe` $rm $cwrappersource $cwrapper - trap "$rm $cwrappersource $cwrapper; exit 1" 1 2 15 + trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 cat > $cwrappersource < $output "\ #! $SHELL @@ -4725,7 +4896,7 @@ sed_quote_subst='$sed_quote_subst' # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. -if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" @@ -4804,7 +4975,7 @@ else else $echo \"\$relink_command_output\" >&2 $rm \"\$progdir/\$file\" - exit 1 + exit $EXIT_FAILURE fi fi @@ -4866,20 +5037,20 @@ else esac $echo >> $output "\ \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" - exit 1 + exit $EXIT_FAILURE fi else # The program doesn't exist. \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 \$echo \"This script is just a wrapper for \$program.\" 1>&2 $echo \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 + exit $EXIT_FAILURE fi fi\ " chmod +x $output fi - exit 0 + exit $EXIT_SUCCESS ;; esac @@ -4902,76 +5073,78 @@ fi\ if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "$mkdir $gentop" - $run $mkdir "$gentop" - status=$? - if test "$status" -ne 0 && test ! -d "$gentop"; then - exit $status - fi generated="$generated $gentop" - # Add in members from convenience archives. - for xlib in $addlibs; do - # Extract the objects. - case $xlib in - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; - *) xabs=`pwd`"/$xlib" ;; - esac - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` - xdir="$gentop/$xlib" - - $show "${rm}r $xdir" - $run ${rm}r "$xdir" - $show "$mkdir $xdir" - $run $mkdir "$xdir" - status=$? - if test "$status" -ne 0 && test ! -d "$xdir"; then - exit $status - fi - # We will extract separately just the conflicting names and we will no - # longer touch any unique names. It is faster to leave these extract - # automatically by $AR in one run. - $show "(cd $xdir && $AR x $xabs)" - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? - if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 - $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 - $AR t "$xabs" | sort | uniq -cd | while read -r count name - do - i=1 - while test "$i" -le "$count" - do - # Put our $i before any first dot (extension) - # Never overwrite any file - name_to="$name" - while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" - do - name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` - done - $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" - $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? - i=`expr $i + 1` - done - done - fi - - oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` - done + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - eval cmds=\"$old_archive_from_new_cmds\" + cmds=$old_archive_from_new_cmds else + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + $echo "X$obj" | $Xsed -e 's%^.*/%%' + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "copying selected object files to avoid basename conflicts..." + + if test -z "$gentop"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + status=$? + if test "$status" -ne 0 && test ! -d "$gentop"; then + exit $status + fi + fi + + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + counter=`expr $counter + 1` + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + $run ln "$obj" "$gentop/$newobj" || + $run cp "$obj" "$gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + eval cmds=\"$old_archive_cmds\" if len=`expr "X$cmds" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : + cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts $echo "using piecewise archive linking..." @@ -4980,25 +5153,12 @@ fi\ objlist= concat_cmds= save_oldobjs=$oldobjs - # GNU ar 2.10+ was changed to match POSIX; thus no paths are - # encoded into archives. This makes 'ar r' malfunction in - # this piecewise linking case whenever conflicting object - # names appear in distinct ar calls; check, warn and compensate. - if (for obj in $save_oldobjs - do - $echo "X$obj" | $Xsed -e 's%^.*/%%' - done | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2 - $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2 - AR_FLAGS=cq - fi + # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj - done + done for obj in $save_oldobjs do oldobjs="$objlist $obj" @@ -5012,7 +5172,7 @@ fi\ oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB - fi + fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= @@ -5023,12 +5183,13 @@ fi\ if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else - eval cmds=\"\$concat_cmds~$old_archive_cmds\" + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do + eval cmd=\"$cmd\" IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? @@ -5060,11 +5221,13 @@ fi\ fi done # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then - relink_command= - fi + relink_command= + fi + + # Only create the output if not a dry run. if test -z "$run"; then for installed in no yes; do @@ -5082,7 +5245,7 @@ fi\ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 - exit 1 + exit $EXIT_FAILURE fi newdependency_libs="$newdependency_libs $libdir/$name" ;; @@ -5096,7 +5259,7 @@ fi\ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit 1 + exit $EXIT_FAILURE fi newdlfiles="$newdlfiles $libdir/$name" done @@ -5107,7 +5270,7 @@ fi\ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit 1 + exit $EXIT_FAILURE fi newdlprefiles="$newdlprefiles $libdir/$name" done @@ -5115,7 +5278,7 @@ fi\ else newdlfiles= for lib in $dlfiles; do - case $lib in + case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac @@ -5124,7 +5287,7 @@ fi\ dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do - case $lib in + case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac @@ -5187,7 +5350,7 @@ relink_command=\"$relink_command\"" $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? ;; esac - exit 0 + exit $EXIT_SUCCESS ;; # libtool install mode @@ -5202,7 +5365,7 @@ relink_command=\"$relink_command\"" # Aesthetically quote it. arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") arg="\"$arg\"" ;; esac @@ -5218,7 +5381,7 @@ relink_command=\"$relink_command\"" # Aesthetically quote it. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") arg="\"$arg\"" ;; esac @@ -5266,7 +5429,7 @@ relink_command=\"$relink_command\"" # Aesthetically quote the argument. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") arg="\"$arg\"" ;; esac @@ -5276,13 +5439,13 @@ relink_command=\"$relink_command\"" if test -z "$install_prog"; then $echo "$modename: you must specify an install program" 1>&2 $echo "$help" 1>&2 - exit 1 + exit $EXIT_FAILURE fi if test -n "$prev"; then $echo "$modename: the \`$prev' option requires an argument" 1>&2 $echo "$help" 1>&2 - exit 1 + exit $EXIT_FAILURE fi if test -z "$files"; then @@ -5292,7 +5455,7 @@ relink_command=\"$relink_command\"" $echo "$modename: you must specify a destination" 1>&2 fi $echo "$help" 1>&2 - exit 1 + exit $EXIT_FAILURE fi # Strip any trailing slash from the destination. @@ -5313,7 +5476,7 @@ relink_command=\"$relink_command\"" if test "$#" -gt 2; then $echo "$modename: \`$dest' is not a directory" 1>&2 $echo "$help" 1>&2 - exit 1 + exit $EXIT_FAILURE fi fi case $destdir in @@ -5325,7 +5488,7 @@ relink_command=\"$relink_command\"" *) $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 $echo "$help" 1>&2 - exit 1 + exit $EXIT_FAILURE ;; esac done @@ -5354,7 +5517,7 @@ relink_command=\"$relink_command\"" else $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 - exit 1 + exit $EXIT_FAILURE fi library_names= @@ -5396,7 +5559,7 @@ relink_command=\"$relink_command\"" # but it's something to keep an eye on. if test "$inst_prefix_dir" = "$destdir"; then $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 - exit 1 + exit $EXIT_FAILURE fi if test -n "$inst_prefix_dir"; then @@ -5411,7 +5574,7 @@ relink_command=\"$relink_command\"" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 - exit 1 + exit $EXIT_FAILURE fi fi @@ -5446,10 +5609,11 @@ relink_command=\"$relink_command\"" # Do each command in the postinstall commands. lib="$destdir/$realname" - eval cmds=\"$postinstall_cmds\" + cmds=$postinstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" + eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done @@ -5489,7 +5653,7 @@ relink_command=\"$relink_command\"" *) $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 $echo "$help" 1>&2 - exit 1 + exit $EXIT_FAILURE ;; esac @@ -5507,7 +5671,7 @@ relink_command=\"$relink_command\"" $show "$install_prog $staticobj $staticdest" $run eval "$install_prog \$staticobj \$staticdest" || exit $? fi - exit 0 + exit $EXIT_SUCCESS ;; *) @@ -5561,7 +5725,7 @@ relink_command=\"$relink_command\"" # Check the variables that should have been set. if test -z "$notinst_deplibs"; then $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 - exit 1 + exit $EXIT_FAILURE fi finalize=yes @@ -5602,8 +5766,12 @@ relink_command=\"$relink_command\"" tmpdir="/tmp" test -n "$TMPDIR" && tmpdir="$TMPDIR" tmpdir="$tmpdir/libtool-$$" - if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : + save_umask=`umask` + umask 0077 + if $mkdir "$tmpdir"; then + umask $save_umask else + umask $save_umask $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 continue fi @@ -5662,16 +5830,17 @@ relink_command=\"$relink_command\"" $show "$install_prog $file $oldlib" $run eval "$install_prog \$file \$oldlib" || exit $? - if test -n "$stripme" && test -n "$striplib"; then + if test -n "$stripme" && test -n "$old_striplib"; then $show "$old_striplib $oldlib" $run eval "$old_striplib $oldlib" || exit $? fi # Do each command in the postinstall commands. - eval cmds=\"$old_postinstall_cmds\" + cmds=$old_postinstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" + eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done @@ -5685,9 +5854,9 @@ relink_command=\"$relink_command\"" if test -n "$current_libdirs"; then # Maybe just do a dry run. test -n "$run" && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $0 --finish$current_libdirs' + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else - exit 0 + exit $EXIT_SUCCESS fi ;; @@ -5706,10 +5875,11 @@ relink_command=\"$relink_command\"" for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. - eval cmds=\"$finish_cmds\" + cmds=$finish_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" + eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || admincmds="$admincmds $cmd" @@ -5726,7 +5896,7 @@ relink_command=\"$relink_command\"" fi # Exit here if they wanted silent mode. - test "$show" = : && exit 0 + test "$show" = : && exit $EXIT_SUCCESS $echo "----------------------------------------------------------------------" $echo "Libraries have been installed in:" @@ -5762,7 +5932,7 @@ relink_command=\"$relink_command\"" $echo "See any operating system documentation about shared libraries for" $echo "more information, such as the ld(1) and ld.so(8) manual pages." $echo "----------------------------------------------------------------------" - exit 0 + exit $EXIT_SUCCESS ;; # libtool execute mode @@ -5774,7 +5944,7 @@ relink_command=\"$relink_command\"" if test -z "$cmd"; then $echo "$modename: you must specify a COMMAND" 1>&2 $echo "$help" - exit 1 + exit $EXIT_FAILURE fi # Handle -dlopen flags immediately. @@ -5782,7 +5952,7 @@ relink_command=\"$relink_command\"" if test ! -f "$file"; then $echo "$modename: \`$file' is not a file" 1>&2 $echo "$help" 1>&2 - exit 1 + exit $EXIT_FAILURE fi dir= @@ -5793,7 +5963,7 @@ relink_command=\"$relink_command\"" else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 - exit 1 + exit $EXIT_FAILURE fi # Read the libtool library. @@ -5820,7 +5990,7 @@ relink_command=\"$relink_command\"" dir="$dir/$objdir" else $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 - exit 1 + exit $EXIT_FAILURE fi ;; @@ -5900,7 +6070,7 @@ relink_command=\"$relink_command\"" $echo "export $shlibpath_var" fi $echo "$cmd$args" - exit 0 + exit $EXIT_SUCCESS fi ;; @@ -5928,7 +6098,7 @@ relink_command=\"$relink_command\"" if test -z "$rm"; then $echo "$modename: you must specify an RM program" 1>&2 $echo "$help" 1>&2 - exit 1 + exit $EXIT_FAILURE fi rmdirs= @@ -5983,10 +6153,11 @@ relink_command=\"$relink_command\"" if test "$mode" = uninstall; then if test -n "$library_names"; then # Do each command in the postuninstall commands. - eval cmds=\"$postuninstall_cmds\" + cmds=$postuninstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" + eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then @@ -5998,10 +6169,11 @@ relink_command=\"$relink_command\"" if test -n "$old_library"; then # Do each command in the old_postuninstall commands. - eval cmds=\"$old_postuninstall_cmds\" + cmds=$old_postuninstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" + eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then @@ -6040,7 +6212,7 @@ relink_command=\"$relink_command\"" if test "$mode" = clean ; then noexename=$name case $file in - *.exe) + *.exe) file=`$echo $file|${SED} 's,.exe$,,'` noexename=`$echo $name|${SED} 's,.exe$,,'` # $file with .exe has already been added to rmfiles, @@ -6085,20 +6257,20 @@ relink_command=\"$relink_command\"" "") $echo "$modename: you must specify a MODE" 1>&2 $echo "$generic_help" 1>&2 - exit 1 + exit $EXIT_FAILURE ;; esac if test -z "$exec_cmd"; then $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$generic_help" 1>&2 - exit 1 + exit $EXIT_FAILURE fi fi # test -z "$show_help" if test -n "$exec_cmd"; then eval exec $exec_cmd - exit 1 + exit $EXIT_FAILURE fi # We need to display help for each of the modes. @@ -6134,7 +6306,7 @@ MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for a more detailed description of MODE. Report bugs to ." - exit 0 + exit $EXIT_SUCCESS ;; clean) @@ -6246,6 +6418,8 @@ The following components of LINK-COMMAND are treated specially: -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries @@ -6287,14 +6461,14 @@ Otherwise, only FILE itself is deleted using RM." *) $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$help" 1>&2 - exit 1 + exit $EXIT_FAILURE ;; esac $echo $echo "Try \`$modename --help' for more information about other modes." -exit 0 +exit $? # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting diff --git a/libjava/libltdl/missing b/libjava/libltdl/missing index fc54c64ec96..64b5f901dd5 100755 --- a/libjava/libltdl/missing +++ b/libjava/libltdl/missing @@ -1,6 +1,10 @@ #! /bin/sh # Common stub for a few missing GNU programs while installing. -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc. + +scriptversion=2004-09-07.08 + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004 +# Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify @@ -38,18 +42,24 @@ else configure_ac=configure.in fi +msg="missing on your system" + case "$1" in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case "$1" in -h|--h|--he|--hel|--help) echo "\ @@ -74,11 +84,15 @@ Supported PROGRAM values: lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags - yacc create \`y.tab.[ch]', if possible, from existing .[ch]" + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Send bug reports to ." + exit 0 ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing 0.4 - GNU automake" + echo "missing $scriptversion (GNU Automake)" + exit 0 ;; -*) @@ -87,14 +101,44 @@ Supported PROGRAM values: exit 1 ;; - aclocal*) +esac + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). +case "$1" in + lex|yacc) + # Not GNU programs, they don't have --version. + ;; + + tar) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + + *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 fi + ;; +esac +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + aclocal*) echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if +WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." @@ -102,13 +146,8 @@ WARNING: \`$1' is missing on your system. You should only need it if ;; autoconf) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if +WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." @@ -116,13 +155,8 @@ WARNING: \`$1' is missing on your system. You should only need it if ;; autoheader) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if +WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." @@ -140,13 +174,8 @@ WARNING: \`$1' is missing on your system. You should only need it if ;; automake*) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if +WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." @@ -156,14 +185,9 @@ WARNING: \`$1' is missing on your system. You should only need it if ;; autom4te) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - echo 1>&2 "\ -WARNING: \`$1' is needed, and you do not seem to have it handy on your - system. You might have modified some files without having the +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." @@ -185,7 +209,7 @@ WARNING: \`$1' is needed, and you do not seem to have it handy on your bison|yacc) echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if +WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." @@ -215,7 +239,7 @@ WARNING: \`$1' is missing on your system. You should only need it if lex|flex) echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if +WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." @@ -237,13 +261,8 @@ WARNING: \`$1' is missing on your system. You should only need it if ;; help2man) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if +WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." @@ -262,13 +281,8 @@ WARNING: \`$1' is missing on your system. You should only need it if ;; makeinfo) - if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then - # We have makeinfo, but it failed. - exit 1 - fi - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if +WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, @@ -284,10 +298,6 @@ WARNING: \`$1' is missing on your system. You should only need it if tar) shift - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - fi # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error @@ -323,8 +333,8 @@ WARNING: I can't seem to be able to run \`tar' with the given arguments. *) echo 1>&2 "\ -WARNING: \`$1' is needed, and you do not seem to have it handy on your - system. You might have modified some files without having the +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case @@ -334,3 +344,10 @@ WARNING: \`$1' is needed, and you do not seem to have it handy on your esac exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/libjava/libltdl/mkinstalldirs b/libjava/libltdl/mkinstalldirs deleted file mode 100755 index d2d5f21b611..00000000000 --- a/libjava/libltdl/mkinstalldirs +++ /dev/null @@ -1,111 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy -# Author: Noah Friedman -# Created: 1993-05-16 -# Public domain - -errstatus=0 -dirmode="" - -usage="\ -Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." - -# process command line arguments -while test $# -gt 0 ; do - case $1 in - -h | --help | --h*) # -h for help - echo "$usage" 1>&2 - exit 0 - ;; - -m) # -m PERM arg - shift - test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } - dirmode=$1 - shift - ;; - --) # stop option processing - shift - break - ;; - -*) # unknown option - echo "$usage" 1>&2 - exit 1 - ;; - *) # first non-opt arg - break - ;; - esac -done - -for file -do - if test -d "$file"; then - shift - else - break - fi -done - -case $# in - 0) exit 0 ;; -esac - -case $dirmode in - '') - if mkdir -p -- . 2>/dev/null; then - echo "mkdir -p -- $*" - exec mkdir -p -- "$@" - fi - ;; - *) - if mkdir -m "$dirmode" -p -- . 2>/dev/null; then - echo "mkdir -m $dirmode -p -- $*" - exec mkdir -m "$dirmode" -p -- "$@" - fi - ;; -esac - -for file -do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` - shift - - pathcomp= - for d - do - pathcomp="$pathcomp$d" - case $pathcomp in - -*) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - else - if test ! -z "$dirmode"; then - echo "chmod $dirmode $pathcomp" - lasterr="" - chmod "$dirmode" "$pathcomp" || lasterr=$? - - if test ! -z "$lasterr"; then - errstatus=$lasterr - fi - fi - fi - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# End: -# mkinstalldirs ends here diff --git a/libjava/posix.cc b/libjava/posix.cc index 15fc9c5c3f8..608fd5dad90 100644 --- a/libjava/posix.cc +++ b/libjava/posix.cc @@ -71,7 +71,15 @@ _Jv_platform_nanotime () { #ifdef HAVE_CLOCK_GETTIME struct timespec now; - if (clock_gettime (CLOCK_REALTIME, &now) == 0) + clockid_t id; +#ifdef CLOCK_MONOTONIC + id = CLOCK_MONOTONIC; +#elif defined (CLOCK_HIGHRES) + id = CLOCK_HIGHRES; +#else + id = CLOCK_REALTIME; +#endif + if (clock_gettime (id, &now) == 0) { jlong result = (jlong) now.tv_sec; result = result * 1000 * 1000 + now.tv_nsec; diff --git a/libjava/prims.cc b/libjava/prims.cc index 1ef56742398..5e016c94c78 100644 --- a/libjava/prims.cc +++ b/libjava/prims.cc @@ -1525,7 +1525,7 @@ _Jv_RunMain (JvVMInitArgs *vm_args, jclass klass, const char *name, int argc, ("Exception during runtime initialization")); t->printStackTrace(); if (runtime) - runtime->exit (1); + java::lang::Runtime::exitNoChecksAccessor (1); // In case the runtime creation failed. ::exit (1); } diff --git a/libjava/scripts/makemake.tcl b/libjava/scripts/makemake.tcl index e4d4dd677cc..568a72f9d12 100755 --- a/libjava/scripts/makemake.tcl +++ b/libjava/scripts/makemake.tcl @@ -37,8 +37,7 @@ set package_map(.) package set package_map(gnu/test) ignore set package_map(gnu/javax/swing/plaf/gtk) ignore -# This package doesn't really work yet, and seems to trigger bug #26390 -set package_map(gnu/java/awt/peer/swing) ignore +set package_map(gnu/java/awt/peer/swing) bc set package_map(gnu/xml) bc set package_map(javax/imageio) bc @@ -49,6 +48,7 @@ set package_map(gnu/java/awt/peer/qt) bc set package_map(gnu/javax/sound/midi) bc set package_map(org/xml) bc set package_map(org/w3c) bc +set package_map(org/relaxng) bc set package_map(javax/rmi) bc set package_map(org/omg) bc set package_map(gnu/CORBA) bc @@ -339,6 +339,7 @@ read_omit_file classpath/lib/standard.omit scan_packages classpath scan_packages classpath/external/sax scan_packages classpath/external/w3c_dom +scan_packages classpath/external/relaxngDatatype # Now scan our own files; this will correctly override decisions made # when scanning classpath. scan_packages . diff --git a/libjava/scripts/unicode-to-chartables.pl b/libjava/scripts/unicode-to-chartables.pl new file mode 100755 index 00000000000..49095352b3c --- /dev/null +++ b/libjava/scripts/unicode-to-chartables.pl @@ -0,0 +1,802 @@ +#!/usr/bin/perl -w +# unicode-to-chartables.pl -- generate Unicode database for java.lang.Character +# Copyright (C) 1998, 2002, 2004, 2006 Free Software Foundation, Inc. +# +# This file is part of GNU Classpath. +# +# GNU Classpath 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. +# +# GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301 USA. +# +# Linking this library statically or dynamically with other modules is +# making a combined work based on this library. Thus, the terms and +# conditions of the GNU General Public License cover the whole +# combination. +# +# As a special exception, the copyright holders of this library give you +# permission to link this library with independent modules to produce an +# executable, regardless of the license terms of these independent +# modules, and to copy and distribute the resulting executable under +# terms of your choice, provided that you also meet, for each linked +# independent module, the terms and conditions of the license of that +# module. An independent module is a module which is not derived from +# or based on this library. If you modify this library, you may extend +# this exception to your version of the library, but you are not +# obligated to do so. If you do not wish to do so, delete this +# exception statement from your version. + +# Code for reading UnicodeData-4.0.0.txt and SpecialCasing-4.0.0.txt to generate +# the code for java-chartables.h. The relevant files can be found here: +# +# http://www.unicode.org/Public/4.0-Update/UnicodeData-4.0.0.txt +# http://www.unicode.org/Public/4.0-Update/SpecialCasing-4.0.0.txt +# +# Inspired by code from Jochen Hoenicke. +# author Eric Blake +# Unicode 4.0.0 support by Anthony Balkissoon +# +# Usage: ./unicode-to-chartables.pl +# where is obtained from www.unicode.org (named +# UnicodeData-4.0.0.txt for Unicode version 4.0.0), +# is obtained from www.unicode too (named SpecialCasing-4.0.0.txt for Unicode +# version 4.0.0), and is the final location for the header file +# java-chartables.h. As of JDK 1.5, use Unicode version 4.0.0 +# for best results. + + +## +## Return the given variable interpreted as a 16 bit signed number. +## +sub cShort($) { + my ($char) = @_; + return unpack "s", pack "I", $char; +} + +## +## Convert the text UnicodeData file from www.unicode.org into a header file +## interface with arrays holding the compressed information. +## +my @TYPECODES = qw(Cn Lu Ll Lt Lm Lo Mn Me Mc Nd Nl No Zs Zl Zp Cc Cf + SKIPPED Co Cs Pd Ps Pe Pc Po Sm Sc Sk So Pi Pf); +my @DIRCODES = qw(L R AL EN ES ET AN CS NSM BN B S WS ON LRE LRO RLE RLO PDF); + +my $NOBREAK_FLAG = 32; +my $MIRRORED_FLAG = 64; + +my %special = (); + +# infoArray is an array where each element is a list of character information +# for characters in a plane. The index of each list is equal to the plane +# that it corresponds to even though most of these lists will currently be +# empty. This is done so that that this script can be easily modified to +# accomodate future versions of Unicode. +my @infoArray = \((), (), (), (), (), (), (), (), + (), (), (), (), (), (), (), (), ()); + +# info is a reference to one of the lists in infoArray, depending on which +# plane we're currently parsing. +my $info; + +# largeNums is an array of numerical values that are too large to fit +# into the 16 bit char where most numerical values are stored. +# What is stored in the char then is a number N such that (-N - 3) is +# the index into largeNums where the numerical value can be found. +my @largeNums = (); + +my $titlecase = ""; +my $count = 0; +my $range = 0; + +die "Usage: $0 " + unless @ARGV == 3; +$| = 1; +print "GNU Classpath Unicode Attribute Database Generator 2.1\n"; +print "Copyright (C) 1998, 2002 Free Software Foundation, Inc.\n"; + + +################################################################################ +################################################################################ +# Stage 0: Parse the special casing file +print "Parsing special casing file\n"; +open (SPECIAL, "< $ARGV[1]") || die "Can't open special casing file: $!\n"; +while () { + next if /^\#/; + my ($ch, undef, undef, $upper) = split / *; */; + + # This grabs only the special casing for multi-char uppercase. Note that + # there are no multi-char lowercase, and that Sun ignores multi-char + # titlecase rules. This script omits 3 special cases in Unicode 3.0.0, + # which must be hardcoded in java.lang.String: + # \u03a3 (Sun ignores this special case) + # \u0049 - lowercases to \u0131, but only in Turkish locale + # \u0069 - uppercases to \u0130, but only in Turkish locale + next unless defined $upper and $upper =~ / /; + $special{hex $ch} = [map {hex} split ' ', $upper]; +} + +close SPECIAL; + + +################################################################################ +################################################################################ +## Stage 1: Parse the attribute file +print "Parsing attributes file"; +open (UNICODE, "< $ARGV[0]") || die "Can't open Unicode attribute file: $!\n"; +while () { + print "." unless $count++ % 1000; + chomp; + s/\r//g; + my ($ch, $name, $category, undef, $bidir, $decomp, undef, undef, $numeric, + $mirrored, undef, undef, $upcase, $lowcase, $title) = split ';'; + $ch = hex($ch); + + # plane tells us which Unicode code plane we're currently in and is an + # index into infoArray. + my $plane = int($ch / 0x10000); + my $planeBase = $plane * 0x10000; + $info = \@{$infoArray[$plane]}; + + my ($type, $numValue, $upperchar, $lowerchar, $direction); + + $type = 0; + while ($category !~ /^$TYPECODES[$type]$/) { + if (++$type == @TYPECODES) { + die "$ch: Unknown type: $category"; + } + } + $type |= $NOBREAK_FLAG if ($decomp =~ /noBreak/); + $type |= $MIRRORED_FLAG if ($mirrored =~ /Y/); + + if ($numeric =~ /^[0-9]+$/) { + $numValue = $numeric; + # If numeric takes more than 16 bits to store we want to store that + # number in a separate array and store a number N in numValue such + # that (-N - 3) is the offset into the separate array containing the + # large numerical value. + if ($numValue >= 0x7fff) { + $numValue = -3 - @largeNums; + push @largeNums, $numeric; + } + } elsif ($numeric eq "") { + # Special case sequences of 'a'-'z' + if ($ch >= 0x0041 && $ch <= 0x005a) { + $numValue = $ch - 0x0037; + } elsif ($ch >= 0x0061 && $ch <= 0x007a) { + $numValue = $ch - 0x0057; + } elsif ($ch >= 0xff21 && $ch <= 0xff3a) { + $numValue = $ch - 0xff17; + } elsif ($ch >= 0xff41 && $ch <= 0xff5a) { + $numValue = $ch - 0xff37; + } else { + $numValue = -1; + } + } else { + $numValue = -2; + } + + $upperchar = $upcase ? hex($upcase) - $ch : 0; + $lowerchar = $lowcase ? hex($lowcase) - $ch : 0; + if ($title ne $upcase) { + my $titlechar = $title ? hex($title) : $ch; + $titlecase .= pack("n2", $ch, $titlechar); + } + + $direction = 0; + while ($bidir !~ /^$DIRCODES[$direction]$/) { + if (++$direction == @DIRCODES) { + $direction = -1; + last; + } + } + $direction <<= 2; + $direction += $#{$special{$ch}} if defined $special{$ch}; + + if ($range) { + die "Expecting end of range at $ch\n" unless $name =~ /Last>$/; + for ($range + 1 .. $ch - 1) { + $info->[$_ - $planeBase] = pack("n5", $type, $numValue, $upperchar, + $lowerchar, $direction); + } + $range = 0; + } elsif ($name =~ /First>$/) { + $range = $ch; + } + # Store all this parsed information into the element in infoArray that info + # points to. + $info->[$ch - $planeBase] = pack("n5", $type, $numValue, $upperchar, $lowerchar, + $direction); +} +close UNICODE; + + +################################################################################ +################################################################################ +## Stage 2: Compress the data structures +printf "\nCompressing data structures"; +$count = 0; + +# data is a String that will be used to create the DATA String containing +# character information and offsets into the attribute tables. +my @data = (); + +# charhashArray is an array of hashtables used so that we can reuse character +# attributes when characters share the same attributes ... this makes our +# attribute tables smaller. charhash is a pointer into this array. +my @charhashArray = ({}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}); +my $charhash = (); + +# charinfoArray is an array of arrays, one per plane, for storing character +# information. charinfo is a pointer into this array. +my @charinfoArray = \((), (), (), (), (), (), (), (), + (), (), (), (), (), (), (), (), ()); +my $charinfo; + +# charlen is an array, one element per plane, that tells us how many unique +# character attributes there are for that plane. +my @charlen = (); + +for my $plane (0 .. 0x10) { + $info = \@{$infoArray[$plane]}; + my $planeBase = $plane * 0x10000; + $charhash = \%{$charhashArray[$plane]}; + $charinfo = \@{$charinfoArray[$plane]}; + + for my $ch ($planeBase .. $planeBase + 0xffff) { + my $index = $ch - $planeBase; + print "." unless $count++ % 0x1000; + $info->[$index] = pack("n5", 0, -1, 0, 0, -4) unless defined $info->[$index]; + + my ($type, $numVal, $upper, $lower, $direction) = unpack("n5", $info->[$index]); + if (! exists $charhash->{$info->[$index]}) { + # If we entered this loop that means the character we're looking at + # now has attributes that are unique from those that we've looked + # at so far for this plane. So we push its attributes into charinfo + # and store in charhash the offset into charinfo where these + # attributes can later be found. + push @{$charinfo}, [ $numVal, $upper, $lower, $direction ]; + $charhash->{$info->[$index]} = @{$charinfo} - 1; + # When the file is generaged, the number we just stored in charhas + # will be the upper 9 bits in the DATA String that are an offset + # into the attribute tables. + } + $data[$plane] .= pack("n", ($charhash->{$info->[$index]} << 7) | $type); + } + $charlen[$plane] = scalar(@{$charinfoArray[$plane]}); +} + +# the shift that results in the best compression of the table. This is an array +# because different shifts are better for the different tables for each plane. +my @bestshift; + +# an initial guess. +my $bestest = 1000000; +my @bestblkstr; +my @blksize = (); + +for my $plane (0 .. 0x10) { + print "\n\nplane: $plane\n"; + print "Unique character entries: $charlen[$plane]\n"; + $bestest = 1000000; + for my $i (3 .. 8) { + my $blksize = 1 << $i; + my %blocks = (); + my @blkarray = (); + my ($j, $k); + print "shift: $i"; + + for ($j = 0; $j < 0x10000; $j += $blksize) { + my $blkkey = substr $data[$plane], 2 * $j, 2 * $blksize; + if (! exists $blocks{$blkkey}) { + push @blkarray, $blkkey; + $blocks{$blkkey} = $#blkarray; + } + } + + my $blknum = @blkarray; + my $blocklen = $blknum * $blksize; + printf " before %5d", $blocklen; + + # Now we try to pack the blkarray as tight as possible by finding matching + # heads and tails. + for ($j = $blksize - 1; $j > 0; $j--) { + my %tails = (); + for $k (0 .. $#blkarray) { + next unless defined $blkarray[$k]; + my $len = length $blkarray[$k]; + my $tail = substr $blkarray[$k], $len - $j * 2; + if (exists $tails{$tail}) { + push @{$tails{$tail}}, $k; + } else { + $tails{$tail} = [ $k ]; + } + } + + # tails are calculated, now calculate the heads and merge. + BLOCK: + for $k (0 .. $#blkarray) { + next unless defined $blkarray[$k]; + my $tomerge = $k; + while (1) { + my $head = substr($blkarray[$tomerge], 0, $j * 2); + my $entry = $tails{$head}; + next BLOCK unless defined $entry; + + my $other = shift @{$entry}; + if ($other == $tomerge) { + if (@{$entry}) { + push @{$entry}, $other; + $other = shift @{$entry}; + } else { + push @{$entry}, $other; + next BLOCK; + } + } + if (@{$entry} == 0) { + delete $tails{$head}; + } + + # a match was found + my $merge = $blkarray[$other] + . substr($blkarray[$tomerge], $j * 2); + $blocklen -= $j; + $blknum--; + + if ($other < $tomerge) { + $blkarray[$tomerge] = undef; + $blkarray[$other] = $merge; + my $len = length $merge; + my $tail = substr $merge, $len - $j * 2; + $tails{$tail} = [ map { $_ == $tomerge ? $other : $_ } + @{$tails{$tail}} ]; + next BLOCK; + } + $blkarray[$tomerge] = $merge; + $blkarray[$other] = undef; + } + } + } + my $blockstr; + for $k (0 .. $#blkarray) { + $blockstr .= $blkarray[$k] if defined $blkarray[$k]; + } + + die "Unexpected $blocklen" if length($blockstr) != 2 * $blocklen; + my $estimate = 2 * $blocklen + (0x20000 >> $i); + + printf " after merge %5d: %6d bytes\n", $blocklen, $estimate; + if ($estimate < $bestest) { + $bestest = $estimate; + $bestshift[$plane] = $i; + $bestblkstr[$plane] = $blockstr; + } + } + $blksize[$plane] = 1 << $bestshift[$plane]; + print "best shift: ", $bestshift[$plane]; + print " blksize: ", $blksize[$plane]; +} +my @blocksArray = \((), (), (), (), (), (), (), (), + (), (), (), (), (), (), (), (), ()); + +for my $plane (0 .. 0x10) { + for (my $j = 0; $j < 0x10000; $j += $blksize[$plane]) { + my $blkkey = substr $data[$plane], 2 * $j, 2 * $blksize[$plane]; + my $index = index $bestblkstr[$plane], $blkkey; + while ($index & 1) { + die "not found: $j" if $index == -1; + $index = index $bestblkstr[$plane], $blkkey, $index + 1; + } + push @{$blocksArray[$plane]}, ($index / 2 - $j) & 0xffff; + } +} + + +################################################################################ +################################################################################ +## Stage 3: Generate the file +for my $plane (0 .. 0x10) { + die "UTF-8 limit of blocks may be exceeded for plane $plane: " . scalar(@{$blocksArray[$plane]}) . "\n" + if @{$blocksArray[$plane]} > 0xffff / 3; + die "UTF-8 limit of data may be exceeded for plane $plane: " . length($bestblkstr[$plane]) . "\n" + if length($bestblkstr[$plane]) > 0xffff / 3; +} + +{ + print "\nGenerating $ARGV[2]."; + my ($i, $j); + + open OUTPUT, "> $ARGV[2]" or die "Failed creating output file: $!\n"; + print OUTPUT <blocks
stores the offset of a block of 2SHIFT +// characters within data. The data field, in turn, stores +// information about each character in the low order bits, and an offset +// into the attribute tables upper, lower, +// numValue, and direction. Notice that the +// attribute tables are much smaller than 0xffff entries; as many characters +// in Unicode share common attributes. Finally, there is a listing for +// title exceptions (most characters just have the same title +// case as upper case). + +// This file should only be included by natCharacter.cc + +/** + * The array containing the numeric values that are too large to be stored as + * chars in NUM_VALUE. NUM_VALUE in this case will contain a negative integer + * N such that LARGENUMS[-N - 3] contains the correct numeric value. + */ +EOF + print OUTPUT "static const jint largenums[] = {\n "; + for ($i = 0; $i < @largeNums; $i++) { + print OUTPUT $largeNums[$i], ", "; + } + print OUTPUT "}"; + print OUTPUT <(char) (blocks[p][off >> SHIFT[p]] + off)
is the index where + * ch is described in data, where off + * is ch & 0xffff and p is the plane the character belongs to. + */ +EOF + print OUTPUT "static const int shift[] = {\n "; + for ($i = 0; $i < @bestshift; $i++) { + print OUTPUT $bestshift[$i], ", "; + } + print OUTPUT "}"; + print OUTPUT <data. + * Each entry has been adjusted so that a modulo 16 sum with the desired + * character gives the actual index into data. + */ +EOF + for ($plane = 0; $plane <= 0x10; $plane++) { + # The following if statement handles the cases of unassigned planes + # specially so we don't waste space with unused Strings. As of + # Unicode version 4.0.0 only planes 0, 1, 2, and 14 are used. If + # you are updating this script to work with a later version of + # Unicode you may have to alter this if statement. + next if ($plane > 2 && $plane != 14) ; + + print OUTPUT "static const jchar blocks", $plane, "[] = {\n"; + for ($i = 0; $i < @{$blocksArray[$plane]} / 10; $i++) { + print OUTPUT " "; + for $j (0 .. 9) { + last if @{$blocksArray[$plane]} <= $i * 10 + $j; + my $val = $blocksArray[$plane]->[$i * 10 + $j]; + print OUTPUT $val, ", "; + } + print OUTPUT "\n"; + } + print OUTPUT "};\n\n"; + } + print OUTPUT "static const int blocks_length[] = {\n "; + for ($plane = 0; $plane <= 0x10; $plane++) { + if ($plane > 2 && $plane != 14){ + print OUTPUT "-1, "; + } + else { + print OUTPUT scalar(@{$blocksArray[$plane]}), ", "; + } + } + print OUTPUT "};\n"; + print OUTPUT < 2 && $plane != 14); + + print OUTPUT "static const jchar data", $plane, "[] = {\n"; + my $len = length($bestblkstr[$plane]) / 2; + for ($i = 0; $i < $len / 10; $i++) { + print OUTPUT " "; + for $j (0 .. 9) { + last if $len <= $i * 10 + $j; + my $val = unpack "n", substr($bestblkstr[$plane], 2 * ($i * 10 + $j), 2); + print OUTPUT $val, ", "; + } + print OUTPUT "\n"; + } + print OUTPUT "};\n\n"; + } + print OUTPUT "static const int data_length[] = {\n "; + for ($plane = 0; $plane <= 0x10; $plane++) { + if ($plane > 2 && $plane != 14){ + print OUTPUT "-1, "; + } + else { + print OUTPUT length($bestblkstr[$plane]) / 2, ", "; + } + } + print OUTPUT "};\n"; + print OUTPUT < 2 && $plane != 14); + + print OUTPUT "static const jshort numValue", $plane, "[] = {\n"; + $len = @{$charinfoArray[$plane]}; + for ($i = 0; $i < $len / 13; $i++) { + print OUTPUT " "; + for $j (0 .. 12) { + last if $len <= $i * 13 + $j; + my $val = $charinfoArray[$plane]->[$i * 13 + $j][0]; + print OUTPUT cShort($val), ", "; + } + print OUTPUT "\n"; + } + print OUTPUT "};\n\n"; + } + print OUTPUT "static const int numValue_length[] = {\n "; + for ($plane = 0; $plane <= 0x10; $plane++) { + if ($plane > 2 && $plane != 14){ + print OUTPUT "-1, "; + } + else { + print OUTPUT scalar(@{$charinfoArray[$plane]}), ", "; + } + } + print OUTPUT "};\n"; + print OUTPUT < 2 && $plane != 14); + + print OUTPUT "static const jshort upper", $plane, "[] = {\n"; + $len = @{$charinfoArray[$plane]}; + for ($i = 0; $i < $len / 13; $i++) { + print OUTPUT " "; + for $j (0 .. 12) { + last if $len <= $i * 13 + $j; + my $val = $charinfoArray[$plane]->[$i * 13 + $j][1]; + print OUTPUT cShort($val), ", "; + } + print OUTPUT "\n"; + } + print OUTPUT "};\n\n"; + } + print OUTPUT "static const int upper_length[] = {\n "; + for ($plane = 0; $plane <= 0x10; $plane++) { + if ($plane > 2 && $plane != 14){ + print OUTPUT "-1, "; + } + else { + print OUTPUT scalar(@{$charinfoArray[$plane]}), ", "; + } + } + print OUTPUT "};\n"; + print OUTPUT < 2 && $plane != 14); + + print OUTPUT "static const jshort lower", $plane, "[] = {\n"; + $len = @{$charinfoArray[$plane]}; + for ($i = 0; $i < $len / 13; $i++) { + print OUTPUT " "; + for $j (0 .. 12) { + last if $len <= $i * 13 + $j; + my $val = $charinfoArray[$plane]->[$i * 13 + $j][2]; + print OUTPUT cShort($val), ", "; + } + print OUTPUT "\n"; + } + print OUTPUT "};\n\n"; + } + print OUTPUT "static const int lower_length[] = {\n "; + for ($plane = 0; $plane <= 0x10; $plane++) { + if ($plane > 2 && $plane != 14){ + print OUTPUT "-1, "; + } + else { + print OUTPUT scalar(@{$charinfoArray[$plane]}), ", "; + } + } + print OUTPUT "};\n"; + print OUTPUT < 2 && $plane != 14); + + print OUTPUT "static const jbyte direction", $plane, "[] = {\n"; + $len = @{$charinfoArray[$plane]}; + for ($i = 0; $i < $len / 19; $i++) { + print OUTPUT " "; + for $j (0 .. 18) { + last if $len <= $i * 19 + $j; + my $val = $charinfoArray[$plane]->[$i * 19 + $j][3]; + $val >>= 2; + if ($val < 0 || $val > 18){ + $val = -1; + } + print OUTPUT cShort($val), ", "; + } + print OUTPUT "\n"; + } + print OUTPUT "};\n\n"; + } + print OUTPUT "static const int direction_length[] = {\n "; + for ($plane = 0; $plane <= 0x10; $plane++) { + if ($plane > 2 && $plane != 14){ + print OUTPUT "-1, "; + } + else { + print OUTPUT scalar(@{$charinfoArray[$plane]}), ", "; + } + } + print OUTPUT "};\n"; + print OUTPUT <upper to determine their titlecase). The listing + * is a sequence of character pairs; converting the first character of the + * pair to titlecase produces the second character. + */ +static const jchar title[] = { +EOF + + $len = length($titlecase) / 2; + for ($i = 0; $i < $len / 10; $i++) { + print OUTPUT $i ? "\n " : " "; + for $j (0 .. 9) { + last if $len <= $i * 10 + $j; + my $val = unpack "n", substr($titlecase, 2 * ($i * 10 + $j), 2); + print OUTPUT $val, ", "; + } + } + + print OUTPUT "\n };"; + print OUTPUT "\n/** Length of title. */\nstatic const int title_length = ", $len; + print OUTPUT < gnu-java-awt-peer-swing.list + $(LTGCJCOMPILE) -fjni -findirect-dispatch -c -o gnu-java-awt-peer-swing.lo @gnu-java-awt-peer-swing.list + @rm -f gnu-java-awt-peer-swing.list + gnu_java_beans_source_files = \ classpath/gnu/java/beans/BeanInfoEmbryo.java \ classpath/gnu/java/beans/DefaultExceptionListener.java \ @@ -7597,6 +7618,23 @@ org-omg.lo: $(org_omg_source_files) $(LTGCJCOMPILE) -fjni -findirect-dispatch -c -o org-omg.lo @org-omg.list @rm -f org-omg.list +org_relaxng_source_files = \ +classpath/external/relaxngDatatype/org/relaxng/datatype/Datatype.java \ +classpath/external/relaxngDatatype/org/relaxng/datatype/DatatypeBuilder.java \ +classpath/external/relaxngDatatype/org/relaxng/datatype/DatatypeException.java \ +classpath/external/relaxngDatatype/org/relaxng/datatype/DatatypeLibrary.java \ +classpath/external/relaxngDatatype/org/relaxng/datatype/DatatypeLibraryFactory.java \ +classpath/external/relaxngDatatype/org/relaxng/datatype/DatatypeStreamingValidator.java \ +classpath/external/relaxngDatatype/org/relaxng/datatype/ValidationContext.java \ +classpath/external/relaxngDatatype/org/relaxng/datatype/helpers/DatatypeLibraryLoader.java \ +classpath/external/relaxngDatatype/org/relaxng/datatype/helpers/ParameterlessDatatypeBuilder.java \ +classpath/external/relaxngDatatype/org/relaxng/datatype/helpers/StreamingValidatorImpl.java + +org-relaxng.lo: $(org_relaxng_source_files) + @find classpath/lib/org/relaxng -name '*.class' > org-relaxng.list + $(LTGCJCOMPILE) -fjni -findirect-dispatch -c -o org-relaxng.lo @org-relaxng.list + @rm -f org-relaxng.list + org_w3c_source_files = \ classpath/external/w3c_dom/org/w3c/dom/Attr.java \ classpath/external/w3c_dom/org/w3c/dom/CDATASection.java \ @@ -8186,6 +8224,7 @@ ordinary_header_files = \ bc_objects = \ gnu-CORBA.lo \ + gnu-java-awt-peer-swing.lo \ gnu-java-beans.lo \ gnu-javax-rmi.lo \ gnu-javax-sound-midi.lo \ @@ -8194,5 +8233,6 @@ bc_objects = \ javax-rmi.lo \ javax-xml.lo \ org-omg.lo \ + org-relaxng.lo \ org-w3c.lo \ org-xml.lo diff --git a/libjava/testsuite/Makefile.in b/libjava/testsuite/Makefile.in index 4922a335556..abca47f6de5 100644 --- a/libjava/testsuite/Makefile.in +++ b/libjava/testsuite/Makefile.in @@ -126,6 +126,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTERPRETER = @INTERPRETER@ +JAR = @JAR@ JAVA_HOME = @JAVA_HOME@ JAVA_HOME_SET_FALSE = @JAVA_HOME_SET_FALSE@ JAVA_HOME_SET_TRUE = @JAVA_HOME_SET_TRUE@ @@ -217,7 +218,6 @@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZINCS = @ZINCS@ -ZIP = @ZIP@ ZLIBS = @ZLIBS@ ZLIBSPEC = @ZLIBSPEC@ ZLIBTESTSPEC = @ZLIBTESTSPEC@ diff --git a/libjava/testsuite/libjava.compile/pr26042.java b/libjava/testsuite/libjava.compile/pr26042.java new file mode 100644 index 00000000000..485b36a5a54 --- /dev/null +++ b/libjava/testsuite/libjava.compile/pr26042.java @@ -0,0 +1,12 @@ +class One +{ + long l; // no ICE if this is int, not long + int b; // no ICE if this line is gone; type doesn't matter +} + +public class pr26042 +{ + class Three extends One { } + Three three () { return new Three (); } +} + diff --git a/libjava/testsuite/libjava.lang/PR26858.java b/libjava/testsuite/libjava.lang/PR26858.java new file mode 100644 index 00000000000..5e9daadba31 --- /dev/null +++ b/libjava/testsuite/libjava.lang/PR26858.java @@ -0,0 +1,2075 @@ +public class PR26858 +{ + public long f0000; public long f0001; public long f0002; public long f0003; + public long f0004; public long f0005; public long f0006; public long f0007; + public long f0008; public long f0009; public long f0010; public long f0011; + public long f0012; public long f0013; public long f0014; public long f0015; + public long f0016; public long f0017; public long f0018; public long f0019; + public long f0020; public long f0021; public long f0022; public long f0023; + public long f0024; public long f0025; public long f0026; public long f0027; + public long f0028; public long f0029; public long f0030; public long f0031; + public long f0032; public long f0033; public long f0034; public long f0035; + public long f0036; public long f0037; public long f0038; public long f0039; + public long f0040; public long f0041; public long f0042; public long f0043; + public long f0044; public long f0045; public long f0046; public long f0047; + public long f0048; public long f0049; public long f0050; public long f0051; + public long f0052; public long f0053; public long f0054; public long f0055; + public long f0056; public long f0057; public long f0058; public long f0059; + public long f0060; public long f0061; public long f0062; public long f0063; + public long f0064; public long f0065; public long f0066; public long f0067; + public long f0068; public long f0069; public long f0070; public long f0071; + public long f0072; public long f0073; public long f0074; public long f0075; + public long f0076; public long f0077; public long f0078; public long f0079; + public long f0080; public long f0081; public long f0082; public long f0083; + public long f0084; public long f0085; public long f0086; public long f0087; + public long f0088; public long f0089; public long f0090; public long f0091; + public long f0092; public long f0093; public long f0094; public long f0095; + public long f0096; public long f0097; public long f0098; public long f0099; + public long f0100; public long f0101; public long f0102; public long f0103; + public long f0104; public long f0105; public long f0106; public long f0107; + public long f0108; public long f0109; public long f0110; public long f0111; + public long f0112; public long f0113; public long f0114; public long f0115; + public long f0116; public long f0117; public long f0118; public long f0119; + public long f0120; public long f0121; public long f0122; public long f0123; + public long f0124; public long f0125; public long f0126; public long f0127; + public long f0128; public long f0129; public long f0130; public long f0131; + public long f0132; public long f0133; public long f0134; public long f0135; + public long f0136; public long f0137; public long f0138; public long f0139; + public long f0140; public long f0141; public long f0142; public long f0143; + public long f0144; public long f0145; public long f0146; public long f0147; + public long f0148; public long f0149; public long f0150; public long f0151; + public long f0152; public long f0153; public long f0154; public long f0155; + public long f0156; public long f0157; public long f0158; public long f0159; + public long f0160; public long f0161; public long f0162; public long f0163; + public long f0164; public long f0165; public long f0166; public long f0167; + public long f0168; public long f0169; public long f0170; public long f0171; + public long f0172; public long f0173; public long f0174; public long f0175; + public long f0176; public long f0177; public long f0178; public long f0179; + public long f0180; public long f0181; public long f0182; public long f0183; + public long f0184; public long f0185; public long f0186; public long f0187; + public long f0188; public long f0189; public long f0190; public long f0191; + public long f0192; public long f0193; public long f0194; public long f0195; + public long f0196; public long f0197; public long f0198; public long f0199; + public long f0200; public long f0201; public long f0202; public long f0203; + public long f0204; public long f0205; public long f0206; public long f0207; + public long f0208; public long f0209; public long f0210; public long f0211; + public long f0212; public long f0213; public long f0214; public long f0215; + public long f0216; public long f0217; public long f0218; public long f0219; + public long f0220; public long f0221; public long f0222; public long f0223; + public long f0224; public long f0225; public long f0226; public long f0227; + public long f0228; public long f0229; public long f0230; public long f0231; + public long f0232; public long f0233; public long f0234; public long f0235; + public long f0236; public long f0237; public long f0238; public long f0239; + public long f0240; public long f0241; public long f0242; public long f0243; + public long f0244; public long f0245; public long f0246; public long f0247; + public long f0248; public long f0249; public long f0250; public long f0251; + public long f0252; public long f0253; public long f0254; public long f0255; + public long f0256; public long f0257; public long f0258; public long f0259; + public long f0260; public long f0261; public long f0262; public long f0263; + public long f0264; public long f0265; public long f0266; public long f0267; + public long f0268; public long f0269; public long f0270; public long f0271; + public long f0272; public long f0273; public long f0274; public long f0275; + public long f0276; public long f0277; public long f0278; public long f0279; + public long f0280; public long f0281; public long f0282; public long f0283; + public long f0284; public long f0285; public long f0286; public long f0287; + public long f0288; public long f0289; public long f0290; public long f0291; + public long f0292; public long f0293; public long f0294; public long f0295; + public long f0296; public long f0297; public long f0298; public long f0299; + public long f0300; public long f0301; public long f0302; public long f0303; + public long f0304; public long f0305; public long f0306; public long f0307; + public long f0308; public long f0309; public long f0310; public long f0311; + public long f0312; public long f0313; public long f0314; public long f0315; + public long f0316; public long f0317; public long f0318; public long f0319; + public long f0320; public long f0321; public long f0322; public long f0323; + public long f0324; public long f0325; public long f0326; public long f0327; + public long f0328; public long f0329; public long f0330; public long f0331; + public long f0332; public long f0333; public long f0334; public long f0335; + public long f0336; public long f0337; public long f0338; public long f0339; + public long f0340; public long f0341; public long f0342; public long f0343; + public long f0344; public long f0345; public long f0346; public long f0347; + public long f0348; public long f0349; public long f0350; public long f0351; + public long f0352; public long f0353; public long f0354; public long f0355; + public long f0356; public long f0357; public long f0358; public long f0359; + public long f0360; public long f0361; public long f0362; public long f0363; + public long f0364; public long f0365; public long f0366; public long f0367; + public long f0368; public long f0369; public long f0370; public long f0371; + public long f0372; public long f0373; public long f0374; public long f0375; + public long f0376; public long f0377; public long f0378; public long f0379; + public long f0380; public long f0381; public long f0382; public long f0383; + public long f0384; public long f0385; public long f0386; public long f0387; + public long f0388; public long f0389; public long f0390; public long f0391; + public long f0392; public long f0393; public long f0394; public long f0395; + public long f0396; public long f0397; public long f0398; public long f0399; + public long f0400; public long f0401; public long f0402; public long f0403; + public long f0404; public long f0405; public long f0406; public long f0407; + public long f0408; public long f0409; public long f0410; public long f0411; + public long f0412; public long f0413; public long f0414; public long f0415; + public long f0416; public long f0417; public long f0418; public long f0419; + public long f0420; public long f0421; public long f0422; public long f0423; + public long f0424; public long f0425; public long f0426; public long f0427; + public long f0428; public long f0429; public long f0430; public long f0431; + public long f0432; public long f0433; public long f0434; public long f0435; + public long f0436; public long f0437; public long f0438; public long f0439; + public long f0440; public long f0441; public long f0442; public long f0443; + public long f0444; public long f0445; public long f0446; public long f0447; + public long f0448; public long f0449; public long f0450; public long f0451; + public long f0452; public long f0453; public long f0454; public long f0455; + public long f0456; public long f0457; public long f0458; public long f0459; + public long f0460; public long f0461; public long f0462; public long f0463; + public long f0464; public long f0465; public long f0466; public long f0467; + public long f0468; public long f0469; public long f0470; public long f0471; + public long f0472; public long f0473; public long f0474; public long f0475; + public long f0476; public long f0477; public long f0478; public long f0479; + public long f0480; public long f0481; public long f0482; public long f0483; + public long f0484; public long f0485; public long f0486; public long f0487; + public long f0488; public long f0489; public long f0490; public long f0491; + public long f0492; public long f0493; public long f0494; public long f0495; + public long f0496; public long f0497; public long f0498; public long f0499; + public long f0500; public long f0501; public long f0502; public long f0503; + public long f0504; public long f0505; public long f0506; public long f0507; + public long f0508; public long f0509; public long f0510; public long f0511; + public long f0512; public long f0513; public long f0514; public long f0515; + public long f0516; public long f0517; public long f0518; public long f0519; + public long f0520; public long f0521; public long f0522; public long f0523; + public long f0524; public long f0525; public long f0526; public long f0527; + public long f0528; public long f0529; public long f0530; public long f0531; + public long f0532; public long f0533; public long f0534; public long f0535; + public long f0536; public long f0537; public long f0538; public long f0539; + public long f0540; public long f0541; public long f0542; public long f0543; + public long f0544; public long f0545; public long f0546; public long f0547; + public long f0548; public long f0549; public long f0550; public long f0551; + public long f0552; public long f0553; public long f0554; public long f0555; + public long f0556; public long f0557; public long f0558; public long f0559; + public long f0560; public long f0561; public long f0562; public long f0563; + public long f0564; public long f0565; public long f0566; public long f0567; + public long f0568; public long f0569; public long f0570; public long f0571; + public long f0572; public long f0573; public long f0574; public long f0575; + public long f0576; public long f0577; public long f0578; public long f0579; + public long f0580; public long f0581; public long f0582; public long f0583; + public long f0584; public long f0585; public long f0586; public long f0587; + public long f0588; public long f0589; public long f0590; public long f0591; + public long f0592; public long f0593; public long f0594; public long f0595; + public long f0596; public long f0597; public long f0598; public long f0599; + public long f0600; public long f0601; public long f0602; public long f0603; + public long f0604; public long f0605; public long f0606; public long f0607; + public long f0608; public long f0609; public long f0610; public long f0611; + public long f0612; public long f0613; public long f0614; public long f0615; + public long f0616; public long f0617; public long f0618; public long f0619; + public long f0620; public long f0621; public long f0622; public long f0623; + public long f0624; public long f0625; public long f0626; public long f0627; + public long f0628; public long f0629; public long f0630; public long f0631; + public long f0632; public long f0633; public long f0634; public long f0635; + public long f0636; public long f0637; public long f0638; public long f0639; + public long f0640; public long f0641; public long f0642; public long f0643; + public long f0644; public long f0645; public long f0646; public long f0647; + public long f0648; public long f0649; public long f0650; public long f0651; + public long f0652; public long f0653; public long f0654; public long f0655; + public long f0656; public long f0657; public long f0658; public long f0659; + public long f0660; public long f0661; public long f0662; public long f0663; + public long f0664; public long f0665; public long f0666; public long f0667; + public long f0668; public long f0669; public long f0670; public long f0671; + public long f0672; public long f0673; public long f0674; public long f0675; + public long f0676; public long f0677; public long f0678; public long f0679; + public long f0680; public long f0681; public long f0682; public long f0683; + public long f0684; public long f0685; public long f0686; public long f0687; + public long f0688; public long f0689; public long f0690; public long f0691; + public long f0692; public long f0693; public long f0694; public long f0695; + public long f0696; public long f0697; public long f0698; public long f0699; + public long f0700; public long f0701; public long f0702; public long f0703; + public long f0704; public long f0705; public long f0706; public long f0707; + public long f0708; public long f0709; public long f0710; public long f0711; + public long f0712; public long f0713; public long f0714; public long f0715; + public long f0716; public long f0717; public long f0718; public long f0719; + public long f0720; public long f0721; public long f0722; public long f0723; + public long f0724; public long f0725; public long f0726; public long f0727; + public long f0728; public long f0729; public long f0730; public long f0731; + public long f0732; public long f0733; public long f0734; public long f0735; + public long f0736; public long f0737; public long f0738; public long f0739; + public long f0740; public long f0741; public long f0742; public long f0743; + public long f0744; public long f0745; public long f0746; public long f0747; + public long f0748; public long f0749; public long f0750; public long f0751; + public long f0752; public long f0753; public long f0754; public long f0755; + public long f0756; public long f0757; public long f0758; public long f0759; + public long f0760; public long f0761; public long f0762; public long f0763; + public long f0764; public long f0765; public long f0766; public long f0767; + public long f0768; public long f0769; public long f0770; public long f0771; + public long f0772; public long f0773; public long f0774; public long f0775; + public long f0776; public long f0777; public long f0778; public long f0779; + public long f0780; public long f0781; public long f0782; public long f0783; + public long f0784; public long f0785; public long f0786; public long f0787; + public long f0788; public long f0789; public long f0790; public long f0791; + public long f0792; public long f0793; public long f0794; public long f0795; + public long f0796; public long f0797; public long f0798; public long f0799; + public long f0800; public long f0801; public long f0802; public long f0803; + public long f0804; public long f0805; public long f0806; public long f0807; + public long f0808; public long f0809; public long f0810; public long f0811; + public long f0812; public long f0813; public long f0814; public long f0815; + public long f0816; public long f0817; public long f0818; public long f0819; + public long f0820; public long f0821; public long f0822; public long f0823; + public long f0824; public long f0825; public long f0826; public long f0827; + public long f0828; public long f0829; public long f0830; public long f0831; + public long f0832; public long f0833; public long f0834; public long f0835; + public long f0836; public long f0837; public long f0838; public long f0839; + public long f0840; public long f0841; public long f0842; public long f0843; + public long f0844; public long f0845; public long f0846; public long f0847; + public long f0848; public long f0849; public long f0850; public long f0851; + public long f0852; public long f0853; public long f0854; public long f0855; + public long f0856; public long f0857; public long f0858; public long f0859; + public long f0860; public long f0861; public long f0862; public long f0863; + public long f0864; public long f0865; public long f0866; public long f0867; + public long f0868; public long f0869; public long f0870; public long f0871; + public long f0872; public long f0873; public long f0874; public long f0875; + public long f0876; public long f0877; public long f0878; public long f0879; + public long f0880; public long f0881; public long f0882; public long f0883; + public long f0884; public long f0885; public long f0886; public long f0887; + public long f0888; public long f0889; public long f0890; public long f0891; + public long f0892; public long f0893; public long f0894; public long f0895; + public long f0896; public long f0897; public long f0898; public long f0899; + public long f0900; public long f0901; public long f0902; public long f0903; + public long f0904; public long f0905; public long f0906; public long f0907; + public long f0908; public long f0909; public long f0910; public long f0911; + public long f0912; public long f0913; public long f0914; public long f0915; + public long f0916; public long f0917; public long f0918; public long f0919; + public long f0920; public long f0921; public long f0922; public long f0923; + public long f0924; public long f0925; public long f0926; public long f0927; + public long f0928; public long f0929; public long f0930; public long f0931; + public long f0932; public long f0933; public long f0934; public long f0935; + public long f0936; public long f0937; public long f0938; public long f0939; + public long f0940; public long f0941; public long f0942; public long f0943; + public long f0944; public long f0945; public long f0946; public long f0947; + public long f0948; public long f0949; public long f0950; public long f0951; + public long f0952; public long f0953; public long f0954; public long f0955; + public long f0956; public long f0957; public long f0958; public long f0959; + public long f0960; public long f0961; public long f0962; public long f0963; + public long f0964; public long f0965; public long f0966; public long f0967; + public long f0968; public long f0969; public long f0970; public long f0971; + public long f0972; public long f0973; public long f0974; public long f0975; + public long f0976; public long f0977; public long f0978; public long f0979; + public long f0980; public long f0981; public long f0982; public long f0983; + public long f0984; public long f0985; public long f0986; public long f0987; + public long f0988; public long f0989; public long f0990; public long f0991; + public long f0992; public long f0993; public long f0994; public long f0995; + public long f0996; public long f0997; public long f0998; public long f0999; + public long f1000; public long f1001; public long f1002; public long f1003; + public long f1004; public long f1005; public long f1006; public long f1007; + public long f1008; public long f1009; public long f1010; public long f1011; + public long f1012; public long f1013; public long f1014; public long f1015; + public long f1016; public long f1017; public long f1018; public long f1019; + public long f1020; public long f1021; public long f1022; public long f1023; + public long f1024; public long f1025; public long f1026; public long f1027; + public long f1028; public long f1029; public long f1030; public long f1031; + public long f1032; public long f1033; public long f1034; public long f1035; + public long f1036; public long f1037; public long f1038; public long f1039; + public long f1040; public long f1041; public long f1042; public long f1043; + public long f1044; public long f1045; public long f1046; public long f1047; + public long f1048; public long f1049; public long f1050; public long f1051; + public long f1052; public long f1053; public long f1054; public long f1055; + public long f1056; public long f1057; public long f1058; public long f1059; + public long f1060; public long f1061; public long f1062; public long f1063; + public long f1064; public long f1065; public long f1066; public long f1067; + public long f1068; public long f1069; public long f1070; public long f1071; + public long f1072; public long f1073; public long f1074; public long f1075; + public long f1076; public long f1077; public long f1078; public long f1079; + public long f1080; public long f1081; public long f1082; public long f1083; + public long f1084; public long f1085; public long f1086; public long f1087; + public long f1088; public long f1089; public long f1090; public long f1091; + public long f1092; public long f1093; public long f1094; public long f1095; + public long f1096; public long f1097; public long f1098; public long f1099; + public long f1100; public long f1101; public long f1102; public long f1103; + public long f1104; public long f1105; public long f1106; public long f1107; + public long f1108; public long f1109; public long f1110; public long f1111; + public long f1112; public long f1113; public long f1114; public long f1115; + public long f1116; public long f1117; public long f1118; public long f1119; + public long f1120; public long f1121; public long f1122; public long f1123; + public long f1124; public long f1125; public long f1126; public long f1127; + public long f1128; public long f1129; public long f1130; public long f1131; + public long f1132; public long f1133; public long f1134; public long f1135; + public long f1136; public long f1137; public long f1138; public long f1139; + public long f1140; public long f1141; public long f1142; public long f1143; + public long f1144; public long f1145; public long f1146; public long f1147; + public long f1148; public long f1149; public long f1150; public long f1151; + public long f1152; public long f1153; public long f1154; public long f1155; + public long f1156; public long f1157; public long f1158; public long f1159; + public long f1160; public long f1161; public long f1162; public long f1163; + public long f1164; public long f1165; public long f1166; public long f1167; + public long f1168; public long f1169; public long f1170; public long f1171; + public long f1172; public long f1173; public long f1174; public long f1175; + public long f1176; public long f1177; public long f1178; public long f1179; + public long f1180; public long f1181; public long f1182; public long f1183; + public long f1184; public long f1185; public long f1186; public long f1187; + public long f1188; public long f1189; public long f1190; public long f1191; + public long f1192; public long f1193; public long f1194; public long f1195; + public long f1196; public long f1197; public long f1198; public long f1199; + public long f1200; public long f1201; public long f1202; public long f1203; + public long f1204; public long f1205; public long f1206; public long f1207; + public long f1208; public long f1209; public long f1210; public long f1211; + public long f1212; public long f1213; public long f1214; public long f1215; + public long f1216; public long f1217; public long f1218; public long f1219; + public long f1220; public long f1221; public long f1222; public long f1223; + public long f1224; public long f1225; public long f1226; public long f1227; + public long f1228; public long f1229; public long f1230; public long f1231; + public long f1232; public long f1233; public long f1234; public long f1235; + public long f1236; public long f1237; public long f1238; public long f1239; + public long f1240; public long f1241; public long f1242; public long f1243; + public long f1244; public long f1245; public long f1246; public long f1247; + public long f1248; public long f1249; public long f1250; public long f1251; + public long f1252; public long f1253; public long f1254; public long f1255; + public long f1256; public long f1257; public long f1258; public long f1259; + public long f1260; public long f1261; public long f1262; public long f1263; + public long f1264; public long f1265; public long f1266; public long f1267; + public long f1268; public long f1269; public long f1270; public long f1271; + public long f1272; public long f1273; public long f1274; public long f1275; + public long f1276; public long f1277; public long f1278; public long f1279; + public long f1280; public long f1281; public long f1282; public long f1283; + public long f1284; public long f1285; public long f1286; public long f1287; + public long f1288; public long f1289; public long f1290; public long f1291; + public long f1292; public long f1293; public long f1294; public long f1295; + public long f1296; public long f1297; public long f1298; public long f1299; + public long f1300; public long f1301; public long f1302; public long f1303; + public long f1304; public long f1305; public long f1306; public long f1307; + public long f1308; public long f1309; public long f1310; public long f1311; + public long f1312; public long f1313; public long f1314; public long f1315; + public long f1316; public long f1317; public long f1318; public long f1319; + public long f1320; public long f1321; public long f1322; public long f1323; + public long f1324; public long f1325; public long f1326; public long f1327; + public long f1328; public long f1329; public long f1330; public long f1331; + public long f1332; public long f1333; public long f1334; public long f1335; + public long f1336; public long f1337; public long f1338; public long f1339; + public long f1340; public long f1341; public long f1342; public long f1343; + public long f1344; public long f1345; public long f1346; public long f1347; + public long f1348; public long f1349; public long f1350; public long f1351; + public long f1352; public long f1353; public long f1354; public long f1355; + public long f1356; public long f1357; public long f1358; public long f1359; + public long f1360; public long f1361; public long f1362; public long f1363; + public long f1364; public long f1365; public long f1366; public long f1367; + public long f1368; public long f1369; public long f1370; public long f1371; + public long f1372; public long f1373; public long f1374; public long f1375; + public long f1376; public long f1377; public long f1378; public long f1379; + public long f1380; public long f1381; public long f1382; public long f1383; + public long f1384; public long f1385; public long f1386; public long f1387; + public long f1388; public long f1389; public long f1390; public long f1391; + public long f1392; public long f1393; public long f1394; public long f1395; + public long f1396; public long f1397; public long f1398; public long f1399; + public long f1400; public long f1401; public long f1402; public long f1403; + public long f1404; public long f1405; public long f1406; public long f1407; + public long f1408; public long f1409; public long f1410; public long f1411; + public long f1412; public long f1413; public long f1414; public long f1415; + public long f1416; public long f1417; public long f1418; public long f1419; + public long f1420; public long f1421; public long f1422; public long f1423; + public long f1424; public long f1425; public long f1426; public long f1427; + public long f1428; public long f1429; public long f1430; public long f1431; + public long f1432; public long f1433; public long f1434; public long f1435; + public long f1436; public long f1437; public long f1438; public long f1439; + public long f1440; public long f1441; public long f1442; public long f1443; + public long f1444; public long f1445; public long f1446; public long f1447; + public long f1448; public long f1449; public long f1450; public long f1451; + public long f1452; public long f1453; public long f1454; public long f1455; + public long f1456; public long f1457; public long f1458; public long f1459; + public long f1460; public long f1461; public long f1462; public long f1463; + public long f1464; public long f1465; public long f1466; public long f1467; + public long f1468; public long f1469; public long f1470; public long f1471; + public long f1472; public long f1473; public long f1474; public long f1475; + public long f1476; public long f1477; public long f1478; public long f1479; + public long f1480; public long f1481; public long f1482; public long f1483; + public long f1484; public long f1485; public long f1486; public long f1487; + public long f1488; public long f1489; public long f1490; public long f1491; + public long f1492; public long f1493; public long f1494; public long f1495; + public long f1496; public long f1497; public long f1498; public long f1499; + public long f1500; public long f1501; public long f1502; public long f1503; + public long f1504; public long f1505; public long f1506; public long f1507; + public long f1508; public long f1509; public long f1510; public long f1511; + public long f1512; public long f1513; public long f1514; public long f1515; + public long f1516; public long f1517; public long f1518; public long f1519; + public long f1520; public long f1521; public long f1522; public long f1523; + public long f1524; public long f1525; public long f1526; public long f1527; + public long f1528; public long f1529; public long f1530; public long f1531; + public long f1532; public long f1533; public long f1534; public long f1535; + public long f1536; public long f1537; public long f1538; public long f1539; + public long f1540; public long f1541; public long f1542; public long f1543; + public long f1544; public long f1545; public long f1546; public long f1547; + public long f1548; public long f1549; public long f1550; public long f1551; + public long f1552; public long f1553; public long f1554; public long f1555; + public long f1556; public long f1557; public long f1558; public long f1559; + public long f1560; public long f1561; public long f1562; public long f1563; + public long f1564; public long f1565; public long f1566; public long f1567; + public long f1568; public long f1569; public long f1570; public long f1571; + public long f1572; public long f1573; public long f1574; public long f1575; + public long f1576; public long f1577; public long f1578; public long f1579; + public long f1580; public long f1581; public long f1582; public long f1583; + public long f1584; public long f1585; public long f1586; public long f1587; + public long f1588; public long f1589; public long f1590; public long f1591; + public long f1592; public long f1593; public long f1594; public long f1595; + public long f1596; public long f1597; public long f1598; public long f1599; + public long f1600; public long f1601; public long f1602; public long f1603; + public long f1604; public long f1605; public long f1606; public long f1607; + public long f1608; public long f1609; public long f1610; public long f1611; + public long f1612; public long f1613; public long f1614; public long f1615; + public long f1616; public long f1617; public long f1618; public long f1619; + public long f1620; public long f1621; public long f1622; public long f1623; + public long f1624; public long f1625; public long f1626; public long f1627; + public long f1628; public long f1629; public long f1630; public long f1631; + public long f1632; public long f1633; public long f1634; public long f1635; + public long f1636; public long f1637; public long f1638; public long f1639; + public long f1640; public long f1641; public long f1642; public long f1643; + public long f1644; public long f1645; public long f1646; public long f1647; + public long f1648; public long f1649; public long f1650; public long f1651; + public long f1652; public long f1653; public long f1654; public long f1655; + public long f1656; public long f1657; public long f1658; public long f1659; + public long f1660; public long f1661; public long f1662; public long f1663; + public long f1664; public long f1665; public long f1666; public long f1667; + public long f1668; public long f1669; public long f1670; public long f1671; + public long f1672; public long f1673; public long f1674; public long f1675; + public long f1676; public long f1677; public long f1678; public long f1679; + public long f1680; public long f1681; public long f1682; public long f1683; + public long f1684; public long f1685; public long f1686; public long f1687; + public long f1688; public long f1689; public long f1690; public long f1691; + public long f1692; public long f1693; public long f1694; public long f1695; + public long f1696; public long f1697; public long f1698; public long f1699; + public long f1700; public long f1701; public long f1702; public long f1703; + public long f1704; public long f1705; public long f1706; public long f1707; + public long f1708; public long f1709; public long f1710; public long f1711; + public long f1712; public long f1713; public long f1714; public long f1715; + public long f1716; public long f1717; public long f1718; public long f1719; + public long f1720; public long f1721; public long f1722; public long f1723; + public long f1724; public long f1725; public long f1726; public long f1727; + public long f1728; public long f1729; public long f1730; public long f1731; + public long f1732; public long f1733; public long f1734; public long f1735; + public long f1736; public long f1737; public long f1738; public long f1739; + public long f1740; public long f1741; public long f1742; public long f1743; + public long f1744; public long f1745; public long f1746; public long f1747; + public long f1748; public long f1749; public long f1750; public long f1751; + public long f1752; public long f1753; public long f1754; public long f1755; + public long f1756; public long f1757; public long f1758; public long f1759; + public long f1760; public long f1761; public long f1762; public long f1763; + public long f1764; public long f1765; public long f1766; public long f1767; + public long f1768; public long f1769; public long f1770; public long f1771; + public long f1772; public long f1773; public long f1774; public long f1775; + public long f1776; public long f1777; public long f1778; public long f1779; + public long f1780; public long f1781; public long f1782; public long f1783; + public long f1784; public long f1785; public long f1786; public long f1787; + public long f1788; public long f1789; public long f1790; public long f1791; + public long f1792; public long f1793; public long f1794; public long f1795; + public long f1796; public long f1797; public long f1798; public long f1799; + public long f1800; public long f1801; public long f1802; public long f1803; + public long f1804; public long f1805; public long f1806; public long f1807; + public long f1808; public long f1809; public long f1810; public long f1811; + public long f1812; public long f1813; public long f1814; public long f1815; + public long f1816; public long f1817; public long f1818; public long f1819; + public long f1820; public long f1821; public long f1822; public long f1823; + public long f1824; public long f1825; public long f1826; public long f1827; + public long f1828; public long f1829; public long f1830; public long f1831; + public long f1832; public long f1833; public long f1834; public long f1835; + public long f1836; public long f1837; public long f1838; public long f1839; + public long f1840; public long f1841; public long f1842; public long f1843; + public long f1844; public long f1845; public long f1846; public long f1847; + public long f1848; public long f1849; public long f1850; public long f1851; + public long f1852; public long f1853; public long f1854; public long f1855; + public long f1856; public long f1857; public long f1858; public long f1859; + public long f1860; public long f1861; public long f1862; public long f1863; + public long f1864; public long f1865; public long f1866; public long f1867; + public long f1868; public long f1869; public long f1870; public long f1871; + public long f1872; public long f1873; public long f1874; public long f1875; + public long f1876; public long f1877; public long f1878; public long f1879; + public long f1880; public long f1881; public long f1882; public long f1883; + public long f1884; public long f1885; public long f1886; public long f1887; + public long f1888; public long f1889; public long f1890; public long f1891; + public long f1892; public long f1893; public long f1894; public long f1895; + public long f1896; public long f1897; public long f1898; public long f1899; + public long f1900; public long f1901; public long f1902; public long f1903; + public long f1904; public long f1905; public long f1906; public long f1907; + public long f1908; public long f1909; public long f1910; public long f1911; + public long f1912; public long f1913; public long f1914; public long f1915; + public long f1916; public long f1917; public long f1918; public long f1919; + public long f1920; public long f1921; public long f1922; public long f1923; + public long f1924; public long f1925; public long f1926; public long f1927; + public long f1928; public long f1929; public long f1930; public long f1931; + public long f1932; public long f1933; public long f1934; public long f1935; + public long f1936; public long f1937; public long f1938; public long f1939; + public long f1940; public long f1941; public long f1942; public long f1943; + public long f1944; public long f1945; public long f1946; public long f1947; + public long f1948; public long f1949; public long f1950; public long f1951; + public long f1952; public long f1953; public long f1954; public long f1955; + public long f1956; public long f1957; public long f1958; public long f1959; + public long f1960; public long f1961; public long f1962; public long f1963; + public long f1964; public long f1965; public long f1966; public long f1967; + public long f1968; public long f1969; public long f1970; public long f1971; + public long f1972; public long f1973; public long f1974; public long f1975; + public long f1976; public long f1977; public long f1978; public long f1979; + public long f1980; public long f1981; public long f1982; public long f1983; + public long f1984; public long f1985; public long f1986; public long f1987; + public long f1988; public long f1989; public long f1990; public long f1991; + public long f1992; public long f1993; public long f1994; public long f1995; + public long f1996; public long f1997; public long f1998; public long f1999; + public long f2000; public long f2001; public long f2002; public long f2003; + public long f2004; public long f2005; public long f2006; public long f2007; + public long f2008; public long f2009; public long f2010; public long f2011; + public long f2012; public long f2013; public long f2014; public long f2015; + public long f2016; public long f2017; public long f2018; public long f2019; + public long f2020; public long f2021; public long f2022; public long f2023; + public long f2024; public long f2025; public long f2026; public long f2027; + public long f2028; public long f2029; public long f2030; public long f2031; + public long f2032; public long f2033; public long f2034; public long f2035; + public long f2036; public long f2037; public long f2038; public long f2039; + public long f2040; public long f2041; public long f2042; public long f2043; + public long f2044; public long f2045; public long f2046; public long f2047; + public long f2048; public long f2049; public long f2050; public long f2051; + public long f2052; public long f2053; public long f2054; public long f2055; + public long f2056; public long f2057; public long f2058; public long f2059; + public long f2060; public long f2061; public long f2062; public long f2063; + public long f2064; public long f2065; public long f2066; public long f2067; + public long f2068; public long f2069; public long f2070; public long f2071; + public long f2072; public long f2073; public long f2074; public long f2075; + public long f2076; public long f2077; public long f2078; public long f2079; + public long f2080; public long f2081; public long f2082; public long f2083; + public long f2084; public long f2085; public long f2086; public long f2087; + public long f2088; public long f2089; public long f2090; public long f2091; + public long f2092; public long f2093; public long f2094; public long f2095; + public long f2096; public long f2097; public long f2098; public long f2099; + public long f2100; public long f2101; public long f2102; public long f2103; + public long f2104; public long f2105; public long f2106; public long f2107; + public long f2108; public long f2109; public long f2110; public long f2111; + public long f2112; public long f2113; public long f2114; public long f2115; + public long f2116; public long f2117; public long f2118; public long f2119; + public long f2120; public long f2121; public long f2122; public long f2123; + public long f2124; public long f2125; public long f2126; public long f2127; + public long f2128; public long f2129; public long f2130; public long f2131; + public long f2132; public long f2133; public long f2134; public long f2135; + public long f2136; public long f2137; public long f2138; public long f2139; + public long f2140; public long f2141; public long f2142; public long f2143; + public long f2144; public long f2145; public long f2146; public long f2147; + public long f2148; public long f2149; public long f2150; public long f2151; + public long f2152; public long f2153; public long f2154; public long f2155; + public long f2156; public long f2157; public long f2158; public long f2159; + public long f2160; public long f2161; public long f2162; public long f2163; + public long f2164; public long f2165; public long f2166; public long f2167; + public long f2168; public long f2169; public long f2170; public long f2171; + public long f2172; public long f2173; public long f2174; public long f2175; + public long f2176; public long f2177; public long f2178; public long f2179; + public long f2180; public long f2181; public long f2182; public long f2183; + public long f2184; public long f2185; public long f2186; public long f2187; + public long f2188; public long f2189; public long f2190; public long f2191; + public long f2192; public long f2193; public long f2194; public long f2195; + public long f2196; public long f2197; public long f2198; public long f2199; + public long f2200; public long f2201; public long f2202; public long f2203; + public long f2204; public long f2205; public long f2206; public long f2207; + public long f2208; public long f2209; public long f2210; public long f2211; + public long f2212; public long f2213; public long f2214; public long f2215; + public long f2216; public long f2217; public long f2218; public long f2219; + public long f2220; public long f2221; public long f2222; public long f2223; + public long f2224; public long f2225; public long f2226; public long f2227; + public long f2228; public long f2229; public long f2230; public long f2231; + public long f2232; public long f2233; public long f2234; public long f2235; + public long f2236; public long f2237; public long f2238; public long f2239; + public long f2240; public long f2241; public long f2242; public long f2243; + public long f2244; public long f2245; public long f2246; public long f2247; + public long f2248; public long f2249; public long f2250; public long f2251; + public long f2252; public long f2253; public long f2254; public long f2255; + public long f2256; public long f2257; public long f2258; public long f2259; + public long f2260; public long f2261; public long f2262; public long f2263; + public long f2264; public long f2265; public long f2266; public long f2267; + public long f2268; public long f2269; public long f2270; public long f2271; + public long f2272; public long f2273; public long f2274; public long f2275; + public long f2276; public long f2277; public long f2278; public long f2279; + public long f2280; public long f2281; public long f2282; public long f2283; + public long f2284; public long f2285; public long f2286; public long f2287; + public long f2288; public long f2289; public long f2290; public long f2291; + public long f2292; public long f2293; public long f2294; public long f2295; + public long f2296; public long f2297; public long f2298; public long f2299; + public long f2300; public long f2301; public long f2302; public long f2303; + public long f2304; public long f2305; public long f2306; public long f2307; + public long f2308; public long f2309; public long f2310; public long f2311; + public long f2312; public long f2313; public long f2314; public long f2315; + public long f2316; public long f2317; public long f2318; public long f2319; + public long f2320; public long f2321; public long f2322; public long f2323; + public long f2324; public long f2325; public long f2326; public long f2327; + public long f2328; public long f2329; public long f2330; public long f2331; + public long f2332; public long f2333; public long f2334; public long f2335; + public long f2336; public long f2337; public long f2338; public long f2339; + public long f2340; public long f2341; public long f2342; public long f2343; + public long f2344; public long f2345; public long f2346; public long f2347; + public long f2348; public long f2349; public long f2350; public long f2351; + public long f2352; public long f2353; public long f2354; public long f2355; + public long f2356; public long f2357; public long f2358; public long f2359; + public long f2360; public long f2361; public long f2362; public long f2363; + public long f2364; public long f2365; public long f2366; public long f2367; + public long f2368; public long f2369; public long f2370; public long f2371; + public long f2372; public long f2373; public long f2374; public long f2375; + public long f2376; public long f2377; public long f2378; public long f2379; + public long f2380; public long f2381; public long f2382; public long f2383; + public long f2384; public long f2385; public long f2386; public long f2387; + public long f2388; public long f2389; public long f2390; public long f2391; + public long f2392; public long f2393; public long f2394; public long f2395; + public long f2396; public long f2397; public long f2398; public long f2399; + public long f2400; public long f2401; public long f2402; public long f2403; + public long f2404; public long f2405; public long f2406; public long f2407; + public long f2408; public long f2409; public long f2410; public long f2411; + public long f2412; public long f2413; public long f2414; public long f2415; + public long f2416; public long f2417; public long f2418; public long f2419; + public long f2420; public long f2421; public long f2422; public long f2423; + public long f2424; public long f2425; public long f2426; public long f2427; + public long f2428; public long f2429; public long f2430; public long f2431; + public long f2432; public long f2433; public long f2434; public long f2435; + public long f2436; public long f2437; public long f2438; public long f2439; + public long f2440; public long f2441; public long f2442; public long f2443; + public long f2444; public long f2445; public long f2446; public long f2447; + public long f2448; public long f2449; public long f2450; public long f2451; + public long f2452; public long f2453; public long f2454; public long f2455; + public long f2456; public long f2457; public long f2458; public long f2459; + public long f2460; public long f2461; public long f2462; public long f2463; + public long f2464; public long f2465; public long f2466; public long f2467; + public long f2468; public long f2469; public long f2470; public long f2471; + public long f2472; public long f2473; public long f2474; public long f2475; + public long f2476; public long f2477; public long f2478; public long f2479; + public long f2480; public long f2481; public long f2482; public long f2483; + public long f2484; public long f2485; public long f2486; public long f2487; + public long f2488; public long f2489; public long f2490; public long f2491; + public long f2492; public long f2493; public long f2494; public long f2495; + public long f2496; public long f2497; public long f2498; public long f2499; + public long f2500; public long f2501; public long f2502; public long f2503; + public long f2504; public long f2505; public long f2506; public long f2507; + public long f2508; public long f2509; public long f2510; public long f2511; + public long f2512; public long f2513; public long f2514; public long f2515; + public long f2516; public long f2517; public long f2518; public long f2519; + public long f2520; public long f2521; public long f2522; public long f2523; + public long f2524; public long f2525; public long f2526; public long f2527; + public long f2528; public long f2529; public long f2530; public long f2531; + public long f2532; public long f2533; public long f2534; public long f2535; + public long f2536; public long f2537; public long f2538; public long f2539; + public long f2540; public long f2541; public long f2542; public long f2543; + public long f2544; public long f2545; public long f2546; public long f2547; + public long f2548; public long f2549; public long f2550; public long f2551; + public long f2552; public long f2553; public long f2554; public long f2555; + public long f2556; public long f2557; public long f2558; public long f2559; + public long f2560; public long f2561; public long f2562; public long f2563; + public long f2564; public long f2565; public long f2566; public long f2567; + public long f2568; public long f2569; public long f2570; public long f2571; + public long f2572; public long f2573; public long f2574; public long f2575; + public long f2576; public long f2577; public long f2578; public long f2579; + public long f2580; public long f2581; public long f2582; public long f2583; + public long f2584; public long f2585; public long f2586; public long f2587; + public long f2588; public long f2589; public long f2590; public long f2591; + public long f2592; public long f2593; public long f2594; public long f2595; + public long f2596; public long f2597; public long f2598; public long f2599; + public long f2600; public long f2601; public long f2602; public long f2603; + public long f2604; public long f2605; public long f2606; public long f2607; + public long f2608; public long f2609; public long f2610; public long f2611; + public long f2612; public long f2613; public long f2614; public long f2615; + public long f2616; public long f2617; public long f2618; public long f2619; + public long f2620; public long f2621; public long f2622; public long f2623; + public long f2624; public long f2625; public long f2626; public long f2627; + public long f2628; public long f2629; public long f2630; public long f2631; + public long f2632; public long f2633; public long f2634; public long f2635; + public long f2636; public long f2637; public long f2638; public long f2639; + public long f2640; public long f2641; public long f2642; public long f2643; + public long f2644; public long f2645; public long f2646; public long f2647; + public long f2648; public long f2649; public long f2650; public long f2651; + public long f2652; public long f2653; public long f2654; public long f2655; + public long f2656; public long f2657; public long f2658; public long f2659; + public long f2660; public long f2661; public long f2662; public long f2663; + public long f2664; public long f2665; public long f2666; public long f2667; + public long f2668; public long f2669; public long f2670; public long f2671; + public long f2672; public long f2673; public long f2674; public long f2675; + public long f2676; public long f2677; public long f2678; public long f2679; + public long f2680; public long f2681; public long f2682; public long f2683; + public long f2684; public long f2685; public long f2686; public long f2687; + public long f2688; public long f2689; public long f2690; public long f2691; + public long f2692; public long f2693; public long f2694; public long f2695; + public long f2696; public long f2697; public long f2698; public long f2699; + public long f2700; public long f2701; public long f2702; public long f2703; + public long f2704; public long f2705; public long f2706; public long f2707; + public long f2708; public long f2709; public long f2710; public long f2711; + public long f2712; public long f2713; public long f2714; public long f2715; + public long f2716; public long f2717; public long f2718; public long f2719; + public long f2720; public long f2721; public long f2722; public long f2723; + public long f2724; public long f2725; public long f2726; public long f2727; + public long f2728; public long f2729; public long f2730; public long f2731; + public long f2732; public long f2733; public long f2734; public long f2735; + public long f2736; public long f2737; public long f2738; public long f2739; + public long f2740; public long f2741; public long f2742; public long f2743; + public long f2744; public long f2745; public long f2746; public long f2747; + public long f2748; public long f2749; public long f2750; public long f2751; + public long f2752; public long f2753; public long f2754; public long f2755; + public long f2756; public long f2757; public long f2758; public long f2759; + public long f2760; public long f2761; public long f2762; public long f2763; + public long f2764; public long f2765; public long f2766; public long f2767; + public long f2768; public long f2769; public long f2770; public long f2771; + public long f2772; public long f2773; public long f2774; public long f2775; + public long f2776; public long f2777; public long f2778; public long f2779; + public long f2780; public long f2781; public long f2782; public long f2783; + public long f2784; public long f2785; public long f2786; public long f2787; + public long f2788; public long f2789; public long f2790; public long f2791; + public long f2792; public long f2793; public long f2794; public long f2795; + public long f2796; public long f2797; public long f2798; public long f2799; + public long f2800; public long f2801; public long f2802; public long f2803; + public long f2804; public long f2805; public long f2806; public long f2807; + public long f2808; public long f2809; public long f2810; public long f2811; + public long f2812; public long f2813; public long f2814; public long f2815; + public long f2816; public long f2817; public long f2818; public long f2819; + public long f2820; public long f2821; public long f2822; public long f2823; + public long f2824; public long f2825; public long f2826; public long f2827; + public long f2828; public long f2829; public long f2830; public long f2831; + public long f2832; public long f2833; public long f2834; public long f2835; + public long f2836; public long f2837; public long f2838; public long f2839; + public long f2840; public long f2841; public long f2842; public long f2843; + public long f2844; public long f2845; public long f2846; public long f2847; + public long f2848; public long f2849; public long f2850; public long f2851; + public long f2852; public long f2853; public long f2854; public long f2855; + public long f2856; public long f2857; public long f2858; public long f2859; + public long f2860; public long f2861; public long f2862; public long f2863; + public long f2864; public long f2865; public long f2866; public long f2867; + public long f2868; public long f2869; public long f2870; public long f2871; + public long f2872; public long f2873; public long f2874; public long f2875; + public long f2876; public long f2877; public long f2878; public long f2879; + public long f2880; public long f2881; public long f2882; public long f2883; + public long f2884; public long f2885; public long f2886; public long f2887; + public long f2888; public long f2889; public long f2890; public long f2891; + public long f2892; public long f2893; public long f2894; public long f2895; + public long f2896; public long f2897; public long f2898; public long f2899; + public long f2900; public long f2901; public long f2902; public long f2903; + public long f2904; public long f2905; public long f2906; public long f2907; + public long f2908; public long f2909; public long f2910; public long f2911; + public long f2912; public long f2913; public long f2914; public long f2915; + public long f2916; public long f2917; public long f2918; public long f2919; + public long f2920; public long f2921; public long f2922; public long f2923; + public long f2924; public long f2925; public long f2926; public long f2927; + public long f2928; public long f2929; public long f2930; public long f2931; + public long f2932; public long f2933; public long f2934; public long f2935; + public long f2936; public long f2937; public long f2938; public long f2939; + public long f2940; public long f2941; public long f2942; public long f2943; + public long f2944; public long f2945; public long f2946; public long f2947; + public long f2948; public long f2949; public long f2950; public long f2951; + public long f2952; public long f2953; public long f2954; public long f2955; + public long f2956; public long f2957; public long f2958; public long f2959; + public long f2960; public long f2961; public long f2962; public long f2963; + public long f2964; public long f2965; public long f2966; public long f2967; + public long f2968; public long f2969; public long f2970; public long f2971; + public long f2972; public long f2973; public long f2974; public long f2975; + public long f2976; public long f2977; public long f2978; public long f2979; + public long f2980; public long f2981; public long f2982; public long f2983; + public long f2984; public long f2985; public long f2986; public long f2987; + public long f2988; public long f2989; public long f2990; public long f2991; + public long f2992; public long f2993; public long f2994; public long f2995; + public long f2996; public long f2997; public long f2998; public long f2999; + public long f3000; public long f3001; public long f3002; public long f3003; + public long f3004; public long f3005; public long f3006; public long f3007; + public long f3008; public long f3009; public long f3010; public long f3011; + public long f3012; public long f3013; public long f3014; public long f3015; + public long f3016; public long f3017; public long f3018; public long f3019; + public long f3020; public long f3021; public long f3022; public long f3023; + public long f3024; public long f3025; public long f3026; public long f3027; + public long f3028; public long f3029; public long f3030; public long f3031; + public long f3032; public long f3033; public long f3034; public long f3035; + public long f3036; public long f3037; public long f3038; public long f3039; + public long f3040; public long f3041; public long f3042; public long f3043; + public long f3044; public long f3045; public long f3046; public long f3047; + public long f3048; public long f3049; public long f3050; public long f3051; + public long f3052; public long f3053; public long f3054; public long f3055; + public long f3056; public long f3057; public long f3058; public long f3059; + public long f3060; public long f3061; public long f3062; public long f3063; + public long f3064; public long f3065; public long f3066; public long f3067; + public long f3068; public long f3069; public long f3070; public long f3071; + public long f3072; public long f3073; public long f3074; public long f3075; + public long f3076; public long f3077; public long f3078; public long f3079; + public long f3080; public long f3081; public long f3082; public long f3083; + public long f3084; public long f3085; public long f3086; public long f3087; + public long f3088; public long f3089; public long f3090; public long f3091; + public long f3092; public long f3093; public long f3094; public long f3095; + public long f3096; public long f3097; public long f3098; public long f3099; + public long f3100; public long f3101; public long f3102; public long f3103; + public long f3104; public long f3105; public long f3106; public long f3107; + public long f3108; public long f3109; public long f3110; public long f3111; + public long f3112; public long f3113; public long f3114; public long f3115; + public long f3116; public long f3117; public long f3118; public long f3119; + public long f3120; public long f3121; public long f3122; public long f3123; + public long f3124; public long f3125; public long f3126; public long f3127; + public long f3128; public long f3129; public long f3130; public long f3131; + public long f3132; public long f3133; public long f3134; public long f3135; + public long f3136; public long f3137; public long f3138; public long f3139; + public long f3140; public long f3141; public long f3142; public long f3143; + public long f3144; public long f3145; public long f3146; public long f3147; + public long f3148; public long f3149; public long f3150; public long f3151; + public long f3152; public long f3153; public long f3154; public long f3155; + public long f3156; public long f3157; public long f3158; public long f3159; + public long f3160; public long f3161; public long f3162; public long f3163; + public long f3164; public long f3165; public long f3166; public long f3167; + public long f3168; public long f3169; public long f3170; public long f3171; + public long f3172; public long f3173; public long f3174; public long f3175; + public long f3176; public long f3177; public long f3178; public long f3179; + public long f3180; public long f3181; public long f3182; public long f3183; + public long f3184; public long f3185; public long f3186; public long f3187; + public long f3188; public long f3189; public long f3190; public long f3191; + public long f3192; public long f3193; public long f3194; public long f3195; + public long f3196; public long f3197; public long f3198; public long f3199; + public long f3200; public long f3201; public long f3202; public long f3203; + public long f3204; public long f3205; public long f3206; public long f3207; + public long f3208; public long f3209; public long f3210; public long f3211; + public long f3212; public long f3213; public long f3214; public long f3215; + public long f3216; public long f3217; public long f3218; public long f3219; + public long f3220; public long f3221; public long f3222; public long f3223; + public long f3224; public long f3225; public long f3226; public long f3227; + public long f3228; public long f3229; public long f3230; public long f3231; + public long f3232; public long f3233; public long f3234; public long f3235; + public long f3236; public long f3237; public long f3238; public long f3239; + public long f3240; public long f3241; public long f3242; public long f3243; + public long f3244; public long f3245; public long f3246; public long f3247; + public long f3248; public long f3249; public long f3250; public long f3251; + public long f3252; public long f3253; public long f3254; public long f3255; + public long f3256; public long f3257; public long f3258; public long f3259; + public long f3260; public long f3261; public long f3262; public long f3263; + public long f3264; public long f3265; public long f3266; public long f3267; + public long f3268; public long f3269; public long f3270; public long f3271; + public long f3272; public long f3273; public long f3274; public long f3275; + public long f3276; public long f3277; public long f3278; public long f3279; + public long f3280; public long f3281; public long f3282; public long f3283; + public long f3284; public long f3285; public long f3286; public long f3287; + public long f3288; public long f3289; public long f3290; public long f3291; + public long f3292; public long f3293; public long f3294; public long f3295; + public long f3296; public long f3297; public long f3298; public long f3299; + public long f3300; public long f3301; public long f3302; public long f3303; + public long f3304; public long f3305; public long f3306; public long f3307; + public long f3308; public long f3309; public long f3310; public long f3311; + public long f3312; public long f3313; public long f3314; public long f3315; + public long f3316; public long f3317; public long f3318; public long f3319; + public long f3320; public long f3321; public long f3322; public long f3323; + public long f3324; public long f3325; public long f3326; public long f3327; + public long f3328; public long f3329; public long f3330; public long f3331; + public long f3332; public long f3333; public long f3334; public long f3335; + public long f3336; public long f3337; public long f3338; public long f3339; + public long f3340; public long f3341; public long f3342; public long f3343; + public long f3344; public long f3345; public long f3346; public long f3347; + public long f3348; public long f3349; public long f3350; public long f3351; + public long f3352; public long f3353; public long f3354; public long f3355; + public long f3356; public long f3357; public long f3358; public long f3359; + public long f3360; public long f3361; public long f3362; public long f3363; + public long f3364; public long f3365; public long f3366; public long f3367; + public long f3368; public long f3369; public long f3370; public long f3371; + public long f3372; public long f3373; public long f3374; public long f3375; + public long f3376; public long f3377; public long f3378; public long f3379; + public long f3380; public long f3381; public long f3382; public long f3383; + public long f3384; public long f3385; public long f3386; public long f3387; + public long f3388; public long f3389; public long f3390; public long f3391; + public long f3392; public long f3393; public long f3394; public long f3395; + public long f3396; public long f3397; public long f3398; public long f3399; + public long f3400; public long f3401; public long f3402; public long f3403; + public long f3404; public long f3405; public long f3406; public long f3407; + public long f3408; public long f3409; public long f3410; public long f3411; + public long f3412; public long f3413; public long f3414; public long f3415; + public long f3416; public long f3417; public long f3418; public long f3419; + public long f3420; public long f3421; public long f3422; public long f3423; + public long f3424; public long f3425; public long f3426; public long f3427; + public long f3428; public long f3429; public long f3430; public long f3431; + public long f3432; public long f3433; public long f3434; public long f3435; + public long f3436; public long f3437; public long f3438; public long f3439; + public long f3440; public long f3441; public long f3442; public long f3443; + public long f3444; public long f3445; public long f3446; public long f3447; + public long f3448; public long f3449; public long f3450; public long f3451; + public long f3452; public long f3453; public long f3454; public long f3455; + public long f3456; public long f3457; public long f3458; public long f3459; + public long f3460; public long f3461; public long f3462; public long f3463; + public long f3464; public long f3465; public long f3466; public long f3467; + public long f3468; public long f3469; public long f3470; public long f3471; + public long f3472; public long f3473; public long f3474; public long f3475; + public long f3476; public long f3477; public long f3478; public long f3479; + public long f3480; public long f3481; public long f3482; public long f3483; + public long f3484; public long f3485; public long f3486; public long f3487; + public long f3488; public long f3489; public long f3490; public long f3491; + public long f3492; public long f3493; public long f3494; public long f3495; + public long f3496; public long f3497; public long f3498; public long f3499; + public long f3500; public long f3501; public long f3502; public long f3503; + public long f3504; public long f3505; public long f3506; public long f3507; + public long f3508; public long f3509; public long f3510; public long f3511; + public long f3512; public long f3513; public long f3514; public long f3515; + public long f3516; public long f3517; public long f3518; public long f3519; + public long f3520; public long f3521; public long f3522; public long f3523; + public long f3524; public long f3525; public long f3526; public long f3527; + public long f3528; public long f3529; public long f3530; public long f3531; + public long f3532; public long f3533; public long f3534; public long f3535; + public long f3536; public long f3537; public long f3538; public long f3539; + public long f3540; public long f3541; public long f3542; public long f3543; + public long f3544; public long f3545; public long f3546; public long f3547; + public long f3548; public long f3549; public long f3550; public long f3551; + public long f3552; public long f3553; public long f3554; public long f3555; + public long f3556; public long f3557; public long f3558; public long f3559; + public long f3560; public long f3561; public long f3562; public long f3563; + public long f3564; public long f3565; public long f3566; public long f3567; + public long f3568; public long f3569; public long f3570; public long f3571; + public long f3572; public long f3573; public long f3574; public long f3575; + public long f3576; public long f3577; public long f3578; public long f3579; + public long f3580; public long f3581; public long f3582; public long f3583; + public long f3584; public long f3585; public long f3586; public long f3587; + public long f3588; public long f3589; public long f3590; public long f3591; + public long f3592; public long f3593; public long f3594; public long f3595; + public long f3596; public long f3597; public long f3598; public long f3599; + public long f3600; public long f3601; public long f3602; public long f3603; + public long f3604; public long f3605; public long f3606; public long f3607; + public long f3608; public long f3609; public long f3610; public long f3611; + public long f3612; public long f3613; public long f3614; public long f3615; + public long f3616; public long f3617; public long f3618; public long f3619; + public long f3620; public long f3621; public long f3622; public long f3623; + public long f3624; public long f3625; public long f3626; public long f3627; + public long f3628; public long f3629; public long f3630; public long f3631; + public long f3632; public long f3633; public long f3634; public long f3635; + public long f3636; public long f3637; public long f3638; public long f3639; + public long f3640; public long f3641; public long f3642; public long f3643; + public long f3644; public long f3645; public long f3646; public long f3647; + public long f3648; public long f3649; public long f3650; public long f3651; + public long f3652; public long f3653; public long f3654; public long f3655; + public long f3656; public long f3657; public long f3658; public long f3659; + public long f3660; public long f3661; public long f3662; public long f3663; + public long f3664; public long f3665; public long f3666; public long f3667; + public long f3668; public long f3669; public long f3670; public long f3671; + public long f3672; public long f3673; public long f3674; public long f3675; + public long f3676; public long f3677; public long f3678; public long f3679; + public long f3680; public long f3681; public long f3682; public long f3683; + public long f3684; public long f3685; public long f3686; public long f3687; + public long f3688; public long f3689; public long f3690; public long f3691; + public long f3692; public long f3693; public long f3694; public long f3695; + public long f3696; public long f3697; public long f3698; public long f3699; + public long f3700; public long f3701; public long f3702; public long f3703; + public long f3704; public long f3705; public long f3706; public long f3707; + public long f3708; public long f3709; public long f3710; public long f3711; + public long f3712; public long f3713; public long f3714; public long f3715; + public long f3716; public long f3717; public long f3718; public long f3719; + public long f3720; public long f3721; public long f3722; public long f3723; + public long f3724; public long f3725; public long f3726; public long f3727; + public long f3728; public long f3729; public long f3730; public long f3731; + public long f3732; public long f3733; public long f3734; public long f3735; + public long f3736; public long f3737; public long f3738; public long f3739; + public long f3740; public long f3741; public long f3742; public long f3743; + public long f3744; public long f3745; public long f3746; public long f3747; + public long f3748; public long f3749; public long f3750; public long f3751; + public long f3752; public long f3753; public long f3754; public long f3755; + public long f3756; public long f3757; public long f3758; public long f3759; + public long f3760; public long f3761; public long f3762; public long f3763; + public long f3764; public long f3765; public long f3766; public long f3767; + public long f3768; public long f3769; public long f3770; public long f3771; + public long f3772; public long f3773; public long f3774; public long f3775; + public long f3776; public long f3777; public long f3778; public long f3779; + public long f3780; public long f3781; public long f3782; public long f3783; + public long f3784; public long f3785; public long f3786; public long f3787; + public long f3788; public long f3789; public long f3790; public long f3791; + public long f3792; public long f3793; public long f3794; public long f3795; + public long f3796; public long f3797; public long f3798; public long f3799; + public long f3800; public long f3801; public long f3802; public long f3803; + public long f3804; public long f3805; public long f3806; public long f3807; + public long f3808; public long f3809; public long f3810; public long f3811; + public long f3812; public long f3813; public long f3814; public long f3815; + public long f3816; public long f3817; public long f3818; public long f3819; + public long f3820; public long f3821; public long f3822; public long f3823; + public long f3824; public long f3825; public long f3826; public long f3827; + public long f3828; public long f3829; public long f3830; public long f3831; + public long f3832; public long f3833; public long f3834; public long f3835; + public long f3836; public long f3837; public long f3838; public long f3839; + public long f3840; public long f3841; public long f3842; public long f3843; + public long f3844; public long f3845; public long f3846; public long f3847; + public long f3848; public long f3849; public long f3850; public long f3851; + public long f3852; public long f3853; public long f3854; public long f3855; + public long f3856; public long f3857; public long f3858; public long f3859; + public long f3860; public long f3861; public long f3862; public long f3863; + public long f3864; public long f3865; public long f3866; public long f3867; + public long f3868; public long f3869; public long f3870; public long f3871; + public long f3872; public long f3873; public long f3874; public long f3875; + public long f3876; public long f3877; public long f3878; public long f3879; + public long f3880; public long f3881; public long f3882; public long f3883; + public long f3884; public long f3885; public long f3886; public long f3887; + public long f3888; public long f3889; public long f3890; public long f3891; + public long f3892; public long f3893; public long f3894; public long f3895; + public long f3896; public long f3897; public long f3898; public long f3899; + public long f3900; public long f3901; public long f3902; public long f3903; + public long f3904; public long f3905; public long f3906; public long f3907; + public long f3908; public long f3909; public long f3910; public long f3911; + public long f3912; public long f3913; public long f3914; public long f3915; + public long f3916; public long f3917; public long f3918; public long f3919; + public long f3920; public long f3921; public long f3922; public long f3923; + public long f3924; public long f3925; public long f3926; public long f3927; + public long f3928; public long f3929; public long f3930; public long f3931; + public long f3932; public long f3933; public long f3934; public long f3935; + public long f3936; public long f3937; public long f3938; public long f3939; + public long f3940; public long f3941; public long f3942; public long f3943; + public long f3944; public long f3945; public long f3946; public long f3947; + public long f3948; public long f3949; public long f3950; public long f3951; + public long f3952; public long f3953; public long f3954; public long f3955; + public long f3956; public long f3957; public long f3958; public long f3959; + public long f3960; public long f3961; public long f3962; public long f3963; + public long f3964; public long f3965; public long f3966; public long f3967; + public long f3968; public long f3969; public long f3970; public long f3971; + public long f3972; public long f3973; public long f3974; public long f3975; + public long f3976; public long f3977; public long f3978; public long f3979; + public long f3980; public long f3981; public long f3982; public long f3983; + public long f3984; public long f3985; public long f3986; public long f3987; + public long f3988; public long f3989; public long f3990; public long f3991; + public long f3992; public long f3993; public long f3994; public long f3995; + public long f3996; public long f3997; public long f3998; public long f3999; + public long f4000; public long f4001; public long f4002; public long f4003; + public long f4004; public long f4005; public long f4006; public long f4007; + public long f4008; public long f4009; public long f4010; public long f4011; + public long f4012; public long f4013; public long f4014; public long f4015; + public long f4016; public long f4017; public long f4018; public long f4019; + public long f4020; public long f4021; public long f4022; public long f4023; + public long f4024; public long f4025; public long f4026; public long f4027; + public long f4028; public long f4029; public long f4030; public long f4031; + public long f4032; public long f4033; public long f4034; public long f4035; + public long f4036; public long f4037; public long f4038; public long f4039; + public long f4040; public long f4041; public long f4042; public long f4043; + public long f4044; public long f4045; public long f4046; public long f4047; + public long f4048; public long f4049; public long f4050; public long f4051; + public long f4052; public long f4053; public long f4054; public long f4055; + public long f4056; public long f4057; public long f4058; public long f4059; + public long f4060; public long f4061; public long f4062; public long f4063; + public long f4064; public long f4065; public long f4066; public long f4067; + public long f4068; public long f4069; public long f4070; public long f4071; + public long f4072; public long f4073; public long f4074; public long f4075; + public long f4076; public long f4077; public long f4078; public long f4079; + public long f4080; public long f4081; public long f4082; public long f4083; + public long f4084; public long f4085; public long f4086; public long f4087; + public long f4088; public long f4089; public long f4090; public long f4091; + public long f4092; public long f4093; public long f4094; public long f4095; + public long f4096; public long f4097; public long f4098; public long f4099; + public long f4100; public long f4101; public long f4102; public long f4103; + public long f4104; public long f4105; public long f4106; public long f4107; + public long f4108; public long f4109; public long f4110; public long f4111; + public long f4112; public long f4113; public long f4114; public long f4115; + public long f4116; public long f4117; public long f4118; public long f4119; + public long f4120; public long f4121; public long f4122; public long f4123; + public long f4124; public long f4125; public long f4126; public long f4127; + public long f4128; public long f4129; public long f4130; public long f4131; + public long f4132; public long f4133; public long f4134; public long f4135; + public long f4136; public long f4137; public long f4138; public long f4139; + public long f4140; public long f4141; public long f4142; public long f4143; + public long f4144; public long f4145; public long f4146; public long f4147; + public long f4148; public long f4149; public long f4150; public long f4151; + public long f4152; public long f4153; public long f4154; public long f4155; + public long f4156; public long f4157; public long f4158; public long f4159; + public long f4160; public long f4161; public long f4162; public long f4163; + public long f4164; public long f4165; public long f4166; public long f4167; + public long f4168; public long f4169; public long f4170; public long f4171; + public long f4172; public long f4173; public long f4174; public long f4175; + public long f4176; public long f4177; public long f4178; public long f4179; + public long f4180; public long f4181; public long f4182; public long f4183; + public long f4184; public long f4185; public long f4186; public long f4187; + public long f4188; public long f4189; public long f4190; public long f4191; + public long f4192; public long f4193; public long f4194; public long f4195; + public long f4196; public long f4197; public long f4198; public long f4199; + public long f4200; public long f4201; public long f4202; public long f4203; + public long f4204; public long f4205; public long f4206; public long f4207; + public long f4208; public long f4209; public long f4210; public long f4211; + public long f4212; public long f4213; public long f4214; public long f4215; + public long f4216; public long f4217; public long f4218; public long f4219; + public long f4220; public long f4221; public long f4222; public long f4223; + public long f4224; public long f4225; public long f4226; public long f4227; + public long f4228; public long f4229; public long f4230; public long f4231; + public long f4232; public long f4233; public long f4234; public long f4235; + public long f4236; public long f4237; public long f4238; public long f4239; + public long f4240; public long f4241; public long f4242; public long f4243; + public long f4244; public long f4245; public long f4246; public long f4247; + public long f4248; public long f4249; public long f4250; public long f4251; + public long f4252; public long f4253; public long f4254; public long f4255; + public long f4256; public long f4257; public long f4258; public long f4259; + public long f4260; public long f4261; public long f4262; public long f4263; + public long f4264; public long f4265; public long f4266; public long f4267; + public long f4268; public long f4269; public long f4270; public long f4271; + public long f4272; public long f4273; public long f4274; public long f4275; + public long f4276; public long f4277; public long f4278; public long f4279; + public long f4280; public long f4281; public long f4282; public long f4283; + public long f4284; public long f4285; public long f4286; public long f4287; + public long f4288; public long f4289; public long f4290; public long f4291; + public long f4292; public long f4293; public long f4294; public long f4295; + public long f4296; public long f4297; public long f4298; public long f4299; + public long f4300; public long f4301; public long f4302; public long f4303; + public long f4304; public long f4305; public long f4306; public long f4307; + public long f4308; public long f4309; public long f4310; public long f4311; + public long f4312; public long f4313; public long f4314; public long f4315; + public long f4316; public long f4317; public long f4318; public long f4319; + public long f4320; public long f4321; public long f4322; public long f4323; + public long f4324; public long f4325; public long f4326; public long f4327; + public long f4328; public long f4329; public long f4330; public long f4331; + public long f4332; public long f4333; public long f4334; public long f4335; + public long f4336; public long f4337; public long f4338; public long f4339; + public long f4340; public long f4341; public long f4342; public long f4343; + public long f4344; public long f4345; public long f4346; public long f4347; + public long f4348; public long f4349; public long f4350; public long f4351; + public long f4352; public long f4353; public long f4354; public long f4355; + public long f4356; public long f4357; public long f4358; public long f4359; + public long f4360; public long f4361; public long f4362; public long f4363; + public long f4364; public long f4365; public long f4366; public long f4367; + public long f4368; public long f4369; public long f4370; public long f4371; + public long f4372; public long f4373; public long f4374; public long f4375; + public long f4376; public long f4377; public long f4378; public long f4379; + public long f4380; public long f4381; public long f4382; public long f4383; + public long f4384; public long f4385; public long f4386; public long f4387; + public long f4388; public long f4389; public long f4390; public long f4391; + public long f4392; public long f4393; public long f4394; public long f4395; + public long f4396; public long f4397; public long f4398; public long f4399; + public long f4400; public long f4401; public long f4402; public long f4403; + public long f4404; public long f4405; public long f4406; public long f4407; + public long f4408; public long f4409; public long f4410; public long f4411; + public long f4412; public long f4413; public long f4414; public long f4415; + public long f4416; public long f4417; public long f4418; public long f4419; + public long f4420; public long f4421; public long f4422; public long f4423; + public long f4424; public long f4425; public long f4426; public long f4427; + public long f4428; public long f4429; public long f4430; public long f4431; + public long f4432; public long f4433; public long f4434; public long f4435; + public long f4436; public long f4437; public long f4438; public long f4439; + public long f4440; public long f4441; public long f4442; public long f4443; + public long f4444; public long f4445; public long f4446; public long f4447; + public long f4448; public long f4449; public long f4450; public long f4451; + public long f4452; public long f4453; public long f4454; public long f4455; + public long f4456; public long f4457; public long f4458; public long f4459; + public long f4460; public long f4461; public long f4462; public long f4463; + public long f4464; public long f4465; public long f4466; public long f4467; + public long f4468; public long f4469; public long f4470; public long f4471; + public long f4472; public long f4473; public long f4474; public long f4475; + public long f4476; public long f4477; public long f4478; public long f4479; + public long f4480; public long f4481; public long f4482; public long f4483; + public long f4484; public long f4485; public long f4486; public long f4487; + public long f4488; public long f4489; public long f4490; public long f4491; + public long f4492; public long f4493; public long f4494; public long f4495; + public long f4496; public long f4497; public long f4498; public long f4499; + public long f4500; public long f4501; public long f4502; public long f4503; + public long f4504; public long f4505; public long f4506; public long f4507; + public long f4508; public long f4509; public long f4510; public long f4511; + public long f4512; public long f4513; public long f4514; public long f4515; + public long f4516; public long f4517; public long f4518; public long f4519; + public long f4520; public long f4521; public long f4522; public long f4523; + public long f4524; public long f4525; public long f4526; public long f4527; + public long f4528; public long f4529; public long f4530; public long f4531; + public long f4532; public long f4533; public long f4534; public long f4535; + public long f4536; public long f4537; public long f4538; public long f4539; + public long f4540; public long f4541; public long f4542; public long f4543; + public long f4544; public long f4545; public long f4546; public long f4547; + public long f4548; public long f4549; public long f4550; public long f4551; + public long f4552; public long f4553; public long f4554; public long f4555; + public long f4556; public long f4557; public long f4558; public long f4559; + public long f4560; public long f4561; public long f4562; public long f4563; + public long f4564; public long f4565; public long f4566; public long f4567; + public long f4568; public long f4569; public long f4570; public long f4571; + public long f4572; public long f4573; public long f4574; public long f4575; + public long f4576; public long f4577; public long f4578; public long f4579; + public long f4580; public long f4581; public long f4582; public long f4583; + public long f4584; public long f4585; public long f4586; public long f4587; + public long f4588; public long f4589; public long f4590; public long f4591; + public long f4592; public long f4593; public long f4594; public long f4595; + public long f4596; public long f4597; public long f4598; public long f4599; + public long f4600; public long f4601; public long f4602; public long f4603; + public long f4604; public long f4605; public long f4606; public long f4607; + public long f4608; public long f4609; public long f4610; public long f4611; + public long f4612; public long f4613; public long f4614; public long f4615; + public long f4616; public long f4617; public long f4618; public long f4619; + public long f4620; public long f4621; public long f4622; public long f4623; + public long f4624; public long f4625; public long f4626; public long f4627; + public long f4628; public long f4629; public long f4630; public long f4631; + public long f4632; public long f4633; public long f4634; public long f4635; + public long f4636; public long f4637; public long f4638; public long f4639; + public long f4640; public long f4641; public long f4642; public long f4643; + public long f4644; public long f4645; public long f4646; public long f4647; + public long f4648; public long f4649; public long f4650; public long f4651; + public long f4652; public long f4653; public long f4654; public long f4655; + public long f4656; public long f4657; public long f4658; public long f4659; + public long f4660; public long f4661; public long f4662; public long f4663; + public long f4664; public long f4665; public long f4666; public long f4667; + public long f4668; public long f4669; public long f4670; public long f4671; + public long f4672; public long f4673; public long f4674; public long f4675; + public long f4676; public long f4677; public long f4678; public long f4679; + public long f4680; public long f4681; public long f4682; public long f4683; + public long f4684; public long f4685; public long f4686; public long f4687; + public long f4688; public long f4689; public long f4690; public long f4691; + public long f4692; public long f4693; public long f4694; public long f4695; + public long f4696; public long f4697; public long f4698; public long f4699; + public long f4700; public long f4701; public long f4702; public long f4703; + public long f4704; public long f4705; public long f4706; public long f4707; + public long f4708; public long f4709; public long f4710; public long f4711; + public long f4712; public long f4713; public long f4714; public long f4715; + public long f4716; public long f4717; public long f4718; public long f4719; + public long f4720; public long f4721; public long f4722; public long f4723; + public long f4724; public long f4725; public long f4726; public long f4727; + public long f4728; public long f4729; public long f4730; public long f4731; + public long f4732; public long f4733; public long f4734; public long f4735; + public long f4736; public long f4737; public long f4738; public long f4739; + public long f4740; public long f4741; public long f4742; public long f4743; + public long f4744; public long f4745; public long f4746; public long f4747; + public long f4748; public long f4749; public long f4750; public long f4751; + public long f4752; public long f4753; public long f4754; public long f4755; + public long f4756; public long f4757; public long f4758; public long f4759; + public long f4760; public long f4761; public long f4762; public long f4763; + public long f4764; public long f4765; public long f4766; public long f4767; + public long f4768; public long f4769; public long f4770; public long f4771; + public long f4772; public long f4773; public long f4774; public long f4775; + public long f4776; public long f4777; public long f4778; public long f4779; + public long f4780; public long f4781; public long f4782; public long f4783; + public long f4784; public long f4785; public long f4786; public long f4787; + public long f4788; public long f4789; public long f4790; public long f4791; + public long f4792; public long f4793; public long f4794; public long f4795; + public long f4796; public long f4797; public long f4798; public long f4799; + public long f4800; public long f4801; public long f4802; public long f4803; + public long f4804; public long f4805; public long f4806; public long f4807; + public long f4808; public long f4809; public long f4810; public long f4811; + public long f4812; public long f4813; public long f4814; public long f4815; + public long f4816; public long f4817; public long f4818; public long f4819; + public long f4820; public long f4821; public long f4822; public long f4823; + public long f4824; public long f4825; public long f4826; public long f4827; + public long f4828; public long f4829; public long f4830; public long f4831; + public long f4832; public long f4833; public long f4834; public long f4835; + public long f4836; public long f4837; public long f4838; public long f4839; + public long f4840; public long f4841; public long f4842; public long f4843; + public long f4844; public long f4845; public long f4846; public long f4847; + public long f4848; public long f4849; public long f4850; public long f4851; + public long f4852; public long f4853; public long f4854; public long f4855; + public long f4856; public long f4857; public long f4858; public long f4859; + public long f4860; public long f4861; public long f4862; public long f4863; + public long f4864; public long f4865; public long f4866; public long f4867; + public long f4868; public long f4869; public long f4870; public long f4871; + public long f4872; public long f4873; public long f4874; public long f4875; + public long f4876; public long f4877; public long f4878; public long f4879; + public long f4880; public long f4881; public long f4882; public long f4883; + public long f4884; public long f4885; public long f4886; public long f4887; + public long f4888; public long f4889; public long f4890; public long f4891; + public long f4892; public long f4893; public long f4894; public long f4895; + public long f4896; public long f4897; public long f4898; public long f4899; + public long f4900; public long f4901; public long f4902; public long f4903; + public long f4904; public long f4905; public long f4906; public long f4907; + public long f4908; public long f4909; public long f4910; public long f4911; + public long f4912; public long f4913; public long f4914; public long f4915; + public long f4916; public long f4917; public long f4918; public long f4919; + public long f4920; public long f4921; public long f4922; public long f4923; + public long f4924; public long f4925; public long f4926; public long f4927; + public long f4928; public long f4929; public long f4930; public long f4931; + public long f4932; public long f4933; public long f4934; public long f4935; + public long f4936; public long f4937; public long f4938; public long f4939; + public long f4940; public long f4941; public long f4942; public long f4943; + public long f4944; public long f4945; public long f4946; public long f4947; + public long f4948; public long f4949; public long f4950; public long f4951; + public long f4952; public long f4953; public long f4954; public long f4955; + public long f4956; public long f4957; public long f4958; public long f4959; + public long f4960; public long f4961; public long f4962; public long f4963; + public long f4964; public long f4965; public long f4966; public long f4967; + public long f4968; public long f4969; public long f4970; public long f4971; + public long f4972; public long f4973; public long f4974; public long f4975; + public long f4976; public long f4977; public long f4978; public long f4979; + public long f4980; public long f4981; public long f4982; public long f4983; + public long f4984; public long f4985; public long f4986; public long f4987; + public long f4988; public long f4989; public long f4990; public long f4991; + public long f4992; public long f4993; public long f4994; public long f4995; + public long f4996; public long f4997; public long f4998; public long f4999; + public long f5000; public long f5001; public long f5002; public long f5003; + public long f5004; public long f5005; public long f5006; public long f5007; + public long f5008; public long f5009; public long f5010; public long f5011; + public long f5012; public long f5013; public long f5014; public long f5015; + public long f5016; public long f5017; public long f5018; public long f5019; + public long f5020; public long f5021; public long f5022; public long f5023; + public long f5024; public long f5025; public long f5026; public long f5027; + public long f5028; public long f5029; public long f5030; public long f5031; + public long f5032; public long f5033; public long f5034; public long f5035; + public long f5036; public long f5037; public long f5038; public long f5039; + public long f5040; public long f5041; public long f5042; public long f5043; + public long f5044; public long f5045; public long f5046; public long f5047; + public long f5048; public long f5049; public long f5050; public long f5051; + public long f5052; public long f5053; public long f5054; public long f5055; + public long f5056; public long f5057; public long f5058; public long f5059; + public long f5060; public long f5061; public long f5062; public long f5063; + public long f5064; public long f5065; public long f5066; public long f5067; + public long f5068; public long f5069; public long f5070; public long f5071; + public long f5072; public long f5073; public long f5074; public long f5075; + public long f5076; public long f5077; public long f5078; public long f5079; + public long f5080; public long f5081; public long f5082; public long f5083; + public long f5084; public long f5085; public long f5086; public long f5087; + public long f5088; public long f5089; public long f5090; public long f5091; + public long f5092; public long f5093; public long f5094; public long f5095; + public long f5096; public long f5097; public long f5098; public long f5099; + public long f5100; public long f5101; public long f5102; public long f5103; + public long f5104; public long f5105; public long f5106; public long f5107; + public long f5108; public long f5109; public long f5110; public long f5111; + public long f5112; public long f5113; public long f5114; public long f5115; + public long f5116; public long f5117; public long f5118; public long f5119; + public long f5120; public long f5121; public long f5122; public long f5123; + public long f5124; public long f5125; public long f5126; public long f5127; + public long f5128; public long f5129; public long f5130; public long f5131; + public long f5132; public long f5133; public long f5134; public long f5135; + public long f5136; public long f5137; public long f5138; public long f5139; + public long f5140; public long f5141; public long f5142; public long f5143; + public long f5144; public long f5145; public long f5146; public long f5147; + public long f5148; public long f5149; public long f5150; public long f5151; + public long f5152; public long f5153; public long f5154; public long f5155; + public long f5156; public long f5157; public long f5158; public long f5159; + public long f5160; public long f5161; public long f5162; public long f5163; + public long f5164; public long f5165; public long f5166; public long f5167; + public long f5168; public long f5169; public long f5170; public long f5171; + public long f5172; public long f5173; public long f5174; public long f5175; + public long f5176; public long f5177; public long f5178; public long f5179; + public long f5180; public long f5181; public long f5182; public long f5183; + public long f5184; public long f5185; public long f5186; public long f5187; + public long f5188; public long f5189; public long f5190; public long f5191; + public long f5192; public long f5193; public long f5194; public long f5195; + public long f5196; public long f5197; public long f5198; public long f5199; + public long f5200; public long f5201; public long f5202; public long f5203; + public long f5204; public long f5205; public long f5206; public long f5207; + public long f5208; public long f5209; public long f5210; public long f5211; + public long f5212; public long f5213; public long f5214; public long f5215; + public long f5216; public long f5217; public long f5218; public long f5219; + public long f5220; public long f5221; public long f5222; public long f5223; + public long f5224; public long f5225; public long f5226; public long f5227; + public long f5228; public long f5229; public long f5230; public long f5231; + public long f5232; public long f5233; public long f5234; public long f5235; + public long f5236; public long f5237; public long f5238; public long f5239; + public long f5240; public long f5241; public long f5242; public long f5243; + public long f5244; public long f5245; public long f5246; public long f5247; + public long f5248; public long f5249; public long f5250; public long f5251; + public long f5252; public long f5253; public long f5254; public long f5255; + public long f5256; public long f5257; public long f5258; public long f5259; + public long f5260; public long f5261; public long f5262; public long f5263; + public long f5264; public long f5265; public long f5266; public long f5267; + public long f5268; public long f5269; public long f5270; public long f5271; + public long f5272; public long f5273; public long f5274; public long f5275; + public long f5276; public long f5277; public long f5278; public long f5279; + public long f5280; public long f5281; public long f5282; public long f5283; + public long f5284; public long f5285; public long f5286; public long f5287; + public long f5288; public long f5289; public long f5290; public long f5291; + public long f5292; public long f5293; public long f5294; public long f5295; + public long f5296; public long f5297; public long f5298; public long f5299; + public long f5300; public long f5301; public long f5302; public long f5303; + public long f5304; public long f5305; public long f5306; public long f5307; + public long f5308; public long f5309; public long f5310; public long f5311; + public long f5312; public long f5313; public long f5314; public long f5315; + public long f5316; public long f5317; public long f5318; public long f5319; + public long f5320; public long f5321; public long f5322; public long f5323; + public long f5324; public long f5325; public long f5326; public long f5327; + public long f5328; public long f5329; public long f5330; public long f5331; + public long f5332; public long f5333; public long f5334; public long f5335; + public long f5336; public long f5337; public long f5338; public long f5339; + public long f5340; public long f5341; public long f5342; public long f5343; + public long f5344; public long f5345; public long f5346; public long f5347; + public long f5348; public long f5349; public long f5350; public long f5351; + public long f5352; public long f5353; public long f5354; public long f5355; + public long f5356; public long f5357; public long f5358; public long f5359; + public long f5360; public long f5361; public long f5362; public long f5363; + public long f5364; public long f5365; public long f5366; public long f5367; + public long f5368; public long f5369; public long f5370; public long f5371; + public long f5372; public long f5373; public long f5374; public long f5375; + public long f5376; public long f5377; public long f5378; public long f5379; + public long f5380; public long f5381; public long f5382; public long f5383; + public long f5384; public long f5385; public long f5386; public long f5387; + public long f5388; public long f5389; public long f5390; public long f5391; + public long f5392; public long f5393; public long f5394; public long f5395; + public long f5396; public long f5397; public long f5398; public long f5399; + public long f5400; public long f5401; public long f5402; public long f5403; + public long f5404; public long f5405; public long f5406; public long f5407; + public long f5408; public long f5409; public long f5410; public long f5411; + public long f5412; public long f5413; public long f5414; public long f5415; + public long f5416; public long f5417; public long f5418; public long f5419; + public long f5420; public long f5421; public long f5422; public long f5423; + public long f5424; public long f5425; public long f5426; public long f5427; + public long f5428; public long f5429; public long f5430; public long f5431; + public long f5432; public long f5433; public long f5434; public long f5435; + public long f5436; public long f5437; public long f5438; public long f5439; + public long f5440; public long f5441; public long f5442; public long f5443; + public long f5444; public long f5445; public long f5446; public long f5447; + public long f5448; public long f5449; public long f5450; public long f5451; + public long f5452; public long f5453; public long f5454; public long f5455; + public long f5456; public long f5457; public long f5458; public long f5459; + public long f5460; public long f5461; public long f5462; public long f5463; + public long f5464; public long f5465; public long f5466; public long f5467; + public long f5468; public long f5469; public long f5470; public long f5471; + public long f5472; public long f5473; public long f5474; public long f5475; + public long f5476; public long f5477; public long f5478; public long f5479; + public long f5480; public long f5481; public long f5482; public long f5483; + public long f5484; public long f5485; public long f5486; public long f5487; + public long f5488; public long f5489; public long f5490; public long f5491; + public long f5492; public long f5493; public long f5494; public long f5495; + public long f5496; public long f5497; public long f5498; public long f5499; + public long f5500; public long f5501; public long f5502; public long f5503; + public long f5504; public long f5505; public long f5506; public long f5507; + public long f5508; public long f5509; public long f5510; public long f5511; + public long f5512; public long f5513; public long f5514; public long f5515; + public long f5516; public long f5517; public long f5518; public long f5519; + public long f5520; public long f5521; public long f5522; public long f5523; + public long f5524; public long f5525; public long f5526; public long f5527; + public long f5528; public long f5529; public long f5530; public long f5531; + public long f5532; public long f5533; public long f5534; public long f5535; + public long f5536; public long f5537; public long f5538; public long f5539; + public long f5540; public long f5541; public long f5542; public long f5543; + public long f5544; public long f5545; public long f5546; public long f5547; + public long f5548; public long f5549; public long f5550; public long f5551; + public long f5552; public long f5553; public long f5554; public long f5555; + public long f5556; public long f5557; public long f5558; public long f5559; + public long f5560; public long f5561; public long f5562; public long f5563; + public long f5564; public long f5565; public long f5566; public long f5567; + public long f5568; public long f5569; public long f5570; public long f5571; + public long f5572; public long f5573; public long f5574; public long f5575; + public long f5576; public long f5577; public long f5578; public long f5579; + public long f5580; public long f5581; public long f5582; public long f5583; + public long f5584; public long f5585; public long f5586; public long f5587; + public long f5588; public long f5589; public long f5590; public long f5591; + public long f5592; public long f5593; public long f5594; public long f5595; + public long f5596; public long f5597; public long f5598; public long f5599; + public long f5600; public long f5601; public long f5602; public long f5603; + public long f5604; public long f5605; public long f5606; public long f5607; + public long f5608; public long f5609; public long f5610; public long f5611; + public long f5612; public long f5613; public long f5614; public long f5615; + public long f5616; public long f5617; public long f5618; public long f5619; + public long f5620; public long f5621; public long f5622; public long f5623; + public long f5624; public long f5625; public long f5626; public long f5627; + public long f5628; public long f5629; public long f5630; public long f5631; + public long f5632; public long f5633; public long f5634; public long f5635; + public long f5636; public long f5637; public long f5638; public long f5639; + public long f5640; public long f5641; public long f5642; public long f5643; + public long f5644; public long f5645; public long f5646; public long f5647; + public long f5648; public long f5649; public long f5650; public long f5651; + public long f5652; public long f5653; public long f5654; public long f5655; + public long f5656; public long f5657; public long f5658; public long f5659; + public long f5660; public long f5661; public long f5662; public long f5663; + public long f5664; public long f5665; public long f5666; public long f5667; + public long f5668; public long f5669; public long f5670; public long f5671; + public long f5672; public long f5673; public long f5674; public long f5675; + public long f5676; public long f5677; public long f5678; public long f5679; + public long f5680; public long f5681; public long f5682; public long f5683; + public long f5684; public long f5685; public long f5686; public long f5687; + public long f5688; public long f5689; public long f5690; public long f5691; + public long f5692; public long f5693; public long f5694; public long f5695; + public long f5696; public long f5697; public long f5698; public long f5699; + public long f5700; public long f5701; public long f5702; public long f5703; + public long f5704; public long f5705; public long f5706; public long f5707; + public long f5708; public long f5709; public long f5710; public long f5711; + public long f5712; public long f5713; public long f5714; public long f5715; + public long f5716; public long f5717; public long f5718; public long f5719; + public long f5720; public long f5721; public long f5722; public long f5723; + public long f5724; public long f5725; public long f5726; public long f5727; + public long f5728; public long f5729; public long f5730; public long f5731; + public long f5732; public long f5733; public long f5734; public long f5735; + public long f5736; public long f5737; public long f5738; public long f5739; + public long f5740; public long f5741; public long f5742; public long f5743; + public long f5744; public long f5745; public long f5746; public long f5747; + public long f5748; public long f5749; public long f5750; public long f5751; + public long f5752; public long f5753; public long f5754; public long f5755; + public long f5756; public long f5757; public long f5758; public long f5759; + public long f5760; public long f5761; public long f5762; public long f5763; + public long f5764; public long f5765; public long f5766; public long f5767; + public long f5768; public long f5769; public long f5770; public long f5771; + public long f5772; public long f5773; public long f5774; public long f5775; + public long f5776; public long f5777; public long f5778; public long f5779; + public long f5780; public long f5781; public long f5782; public long f5783; + public long f5784; public long f5785; public long f5786; public long f5787; + public long f5788; public long f5789; public long f5790; public long f5791; + public long f5792; public long f5793; public long f5794; public long f5795; + public long f5796; public long f5797; public long f5798; public long f5799; + public long f5800; public long f5801; public long f5802; public long f5803; + public long f5804; public long f5805; public long f5806; public long f5807; + public long f5808; public long f5809; public long f5810; public long f5811; + public long f5812; public long f5813; public long f5814; public long f5815; + public long f5816; public long f5817; public long f5818; public long f5819; + public long f5820; public long f5821; public long f5822; public long f5823; + public long f5824; public long f5825; public long f5826; public long f5827; + public long f5828; public long f5829; public long f5830; public long f5831; + public long f5832; public long f5833; public long f5834; public long f5835; + public long f5836; public long f5837; public long f5838; public long f5839; + public long f5840; public long f5841; public long f5842; public long f5843; + public long f5844; public long f5845; public long f5846; public long f5847; + public long f5848; public long f5849; public long f5850; public long f5851; + public long f5852; public long f5853; public long f5854; public long f5855; + public long f5856; public long f5857; public long f5858; public long f5859; + public long f5860; public long f5861; public long f5862; public long f5863; + public long f5864; public long f5865; public long f5866; public long f5867; + public long f5868; public long f5869; public long f5870; public long f5871; + public long f5872; public long f5873; public long f5874; public long f5875; + public long f5876; public long f5877; public long f5878; public long f5879; + public long f5880; public long f5881; public long f5882; public long f5883; + public long f5884; public long f5885; public long f5886; public long f5887; + public long f5888; public long f5889; public long f5890; public long f5891; + public long f5892; public long f5893; public long f5894; public long f5895; + public long f5896; public long f5897; public long f5898; public long f5899; + public long f5900; public long f5901; public long f5902; public long f5903; + public long f5904; public long f5905; public long f5906; public long f5907; + public long f5908; public long f5909; public long f5910; public long f5911; + public long f5912; public long f5913; public long f5914; public long f5915; + public long f5916; public long f5917; public long f5918; public long f5919; + public long f5920; public long f5921; public long f5922; public long f5923; + public long f5924; public long f5925; public long f5926; public long f5927; + public long f5928; public long f5929; public long f5930; public long f5931; + public long f5932; public long f5933; public long f5934; public long f5935; + public long f5936; public long f5937; public long f5938; public long f5939; + public long f5940; public long f5941; public long f5942; public long f5943; + public long f5944; public long f5945; public long f5946; public long f5947; + public long f5948; public long f5949; public long f5950; public long f5951; + public long f5952; public long f5953; public long f5954; public long f5955; + public long f5956; public long f5957; public long f5958; public long f5959; + public long f5960; public long f5961; public long f5962; public long f5963; + public long f5964; public long f5965; public long f5966; public long f5967; + public long f5968; public long f5969; public long f5970; public long f5971; + public long f5972; public long f5973; public long f5974; public long f5975; + public long f5976; public long f5977; public long f5978; public long f5979; + public long f5980; public long f5981; public long f5982; public long f5983; + public long f5984; public long f5985; public long f5986; public long f5987; + public long f5988; public long f5989; public long f5990; public long f5991; + public long f5992; public long f5993; public long f5994; public long f5995; + public long f5996; public long f5997; public long f5998; public long f5999; + public long f6000; public long f6001; public long f6002; public long f6003; + public long f6004; public long f6005; public long f6006; public long f6007; + public long f6008; public long f6009; public long f6010; public long f6011; + public long f6012; public long f6013; public long f6014; public long f6015; + public long f6016; public long f6017; public long f6018; public long f6019; + public long f6020; public long f6021; public long f6022; public long f6023; + public long f6024; public long f6025; public long f6026; public long f6027; + public long f6028; public long f6029; public long f6030; public long f6031; + public long f6032; public long f6033; public long f6034; public long f6035; + public long f6036; public long f6037; public long f6038; public long f6039; + public long f6040; public long f6041; public long f6042; public long f6043; + public long f6044; public long f6045; public long f6046; public long f6047; + public long f6048; public long f6049; public long f6050; public long f6051; + public long f6052; public long f6053; public long f6054; public long f6055; + public long f6056; public long f6057; public long f6058; public long f6059; + public long f6060; public long f6061; public long f6062; public long f6063; + public long f6064; public long f6065; public long f6066; public long f6067; + public long f6068; public long f6069; public long f6070; public long f6071; + public long f6072; public long f6073; public long f6074; public long f6075; + public long f6076; public long f6077; public long f6078; public long f6079; + public long f6080; public long f6081; public long f6082; public long f6083; + public long f6084; public long f6085; public long f6086; public long f6087; + public long f6088; public long f6089; public long f6090; public long f6091; + public long f6092; public long f6093; public long f6094; public long f6095; + public long f6096; public long f6097; public long f6098; public long f6099; + public long f6100; public long f6101; public long f6102; public long f6103; + public long f6104; public long f6105; public long f6106; public long f6107; + public long f6108; public long f6109; public long f6110; public long f6111; + public long f6112; public long f6113; public long f6114; public long f6115; + public long f6116; public long f6117; public long f6118; public long f6119; + public long f6120; public long f6121; public long f6122; public long f6123; + public long f6124; public long f6125; public long f6126; public long f6127; + public long f6128; public long f6129; public long f6130; public long f6131; + public long f6132; public long f6133; public long f6134; public long f6135; + public long f6136; public long f6137; public long f6138; public long f6139; + public long f6140; public long f6141; public long f6142; public long f6143; + public long f6144; public long f6145; public long f6146; public long f6147; + public long f6148; public long f6149; public long f6150; public long f6151; + public long f6152; public long f6153; public long f6154; public long f6155; + public long f6156; public long f6157; public long f6158; public long f6159; + public long f6160; public long f6161; public long f6162; public long f6163; + public long f6164; public long f6165; public long f6166; public long f6167; + public long f6168; public long f6169; public long f6170; public long f6171; + public long f6172; public long f6173; public long f6174; public long f6175; + public long f6176; public long f6177; public long f6178; public long f6179; + public long f6180; public long f6181; public long f6182; public long f6183; + public long f6184; public long f6185; public long f6186; public long f6187; + public long f6188; public long f6189; public long f6190; public long f6191; + public long f6192; public long f6193; public long f6194; public long f6195; + public long f6196; public long f6197; public long f6198; public long f6199; + public long f6200; public long f6201; public long f6202; public long f6203; + public long f6204; public long f6205; public long f6206; public long f6207; + public long f6208; public long f6209; public long f6210; public long f6211; + public long f6212; public long f6213; public long f6214; public long f6215; + public long f6216; public long f6217; public long f6218; public long f6219; + public long f6220; public long f6221; public long f6222; public long f6223; + public long f6224; public long f6225; public long f6226; public long f6227; + public long f6228; public long f6229; public long f6230; public long f6231; + public long f6232; public long f6233; public long f6234; public long f6235; + public long f6236; public long f6237; public long f6238; public long f6239; + public long f6240; public long f6241; public long f6242; public long f6243; + public long f6244; public long f6245; public long f6246; public long f6247; + public long f6248; public long f6249; public long f6250; public long f6251; + public long f6252; public long f6253; public long f6254; public long f6255; + public long f6256; public long f6257; public long f6258; public long f6259; + public long f6260; public long f6261; public long f6262; public long f6263; + public long f6264; public long f6265; public long f6266; public long f6267; + public long f6268; public long f6269; public long f6270; public long f6271; + public long f6272; public long f6273; public long f6274; public long f6275; + public long f6276; public long f6277; public long f6278; public long f6279; + public long f6280; public long f6281; public long f6282; public long f6283; + public long f6284; public long f6285; public long f6286; public long f6287; + public long f6288; public long f6289; public long f6290; public long f6291; + public long f6292; public long f6293; public long f6294; public long f6295; + public long f6296; public long f6297; public long f6298; public long f6299; + public long f6300; public long f6301; public long f6302; public long f6303; + public long f6304; public long f6305; public long f6306; public long f6307; + public long f6308; public long f6309; public long f6310; public long f6311; + public long f6312; public long f6313; public long f6314; public long f6315; + public long f6316; public long f6317; public long f6318; public long f6319; + public long f6320; public long f6321; public long f6322; public long f6323; + public long f6324; public long f6325; public long f6326; public long f6327; + public long f6328; public long f6329; public long f6330; public long f6331; + public long f6332; public long f6333; public long f6334; public long f6335; + public long f6336; public long f6337; public long f6338; public long f6339; + public long f6340; public long f6341; public long f6342; public long f6343; + public long f6344; public long f6345; public long f6346; public long f6347; + public long f6348; public long f6349; public long f6350; public long f6351; + public long f6352; public long f6353; public long f6354; public long f6355; + public long f6356; public long f6357; public long f6358; public long f6359; + public long f6360; public long f6361; public long f6362; public long f6363; + public long f6364; public long f6365; public long f6366; public long f6367; + public long f6368; public long f6369; public long f6370; public long f6371; + public long f6372; public long f6373; public long f6374; public long f6375; + public long f6376; public long f6377; public long f6378; public long f6379; + public long f6380; public long f6381; public long f6382; public long f6383; + public long f6384; public long f6385; public long f6386; public long f6387; + public long f6388; public long f6389; public long f6390; public long f6391; + public long f6392; public long f6393; public long f6394; public long f6395; + public long f6396; public long f6397; public long f6398; public long f6399; + public long f6400; public long f6401; public long f6402; public long f6403; + public long f6404; public long f6405; public long f6406; public long f6407; + public long f6408; public long f6409; public long f6410; public long f6411; + public long f6412; public long f6413; public long f6414; public long f6415; + public long f6416; public long f6417; public long f6418; public long f6419; + public long f6420; public long f6421; public long f6422; public long f6423; + public long f6424; public long f6425; public long f6426; public long f6427; + public long f6428; public long f6429; public long f6430; public long f6431; + public long f6432; public long f6433; public long f6434; public long f6435; + public long f6436; public long f6437; public long f6438; public long f6439; + public long f6440; public long f6441; public long f6442; public long f6443; + public long f6444; public long f6445; public long f6446; public long f6447; + public long f6448; public long f6449; public long f6450; public long f6451; + public long f6452; public long f6453; public long f6454; public long f6455; + public long f6456; public long f6457; public long f6458; public long f6459; + public long f6460; public long f6461; public long f6462; public long f6463; + public long f6464; public long f6465; public long f6466; public long f6467; + public long f6468; public long f6469; public long f6470; public long f6471; + public long f6472; public long f6473; public long f6474; public long f6475; + public long f6476; public long f6477; public long f6478; public long f6479; + public long f6480; public long f6481; public long f6482; public long f6483; + public long f6484; public long f6485; public long f6486; public long f6487; + public long f6488; public long f6489; public long f6490; public long f6491; + public long f6492; public long f6493; public long f6494; public long f6495; + public long f6496; public long f6497; public long f6498; public long f6499; + public long f6500; public long f6501; public long f6502; public long f6503; + public long f6504; public long f6505; public long f6506; public long f6507; + public long f6508; public long f6509; public long f6510; public long f6511; + public long f6512; public long f6513; public long f6514; public long f6515; + public long f6516; public long f6517; public long f6518; public long f6519; + public long f6520; public long f6521; public long f6522; public long f6523; + public long f6524; public long f6525; public long f6526; public long f6527; + public long f6528; public long f6529; public long f6530; public long f6531; + public long f6532; public long f6533; public long f6534; public long f6535; + public long f6536; public long f6537; public long f6538; public long f6539; + public long f6540; public long f6541; public long f6542; public long f6543; + public long f6544; public long f6545; public long f6546; public long f6547; + public long f6548; public long f6549; public long f6550; public long f6551; + public long f6552; public long f6553; public long f6554; public long f6555; + public long f6556; public long f6557; public long f6558; public long f6559; + public long f6560; public long f6561; public long f6562; public long f6563; + public long f6564; public long f6565; public long f6566; public long f6567; + public long f6568; public long f6569; public long f6570; public long f6571; + public long f6572; public long f6573; public long f6574; public long f6575; + public long f6576; public long f6577; public long f6578; public long f6579; + public long f6580; public long f6581; public long f6582; public long f6583; + public long f6584; public long f6585; public long f6586; public long f6587; + public long f6588; public long f6589; public long f6590; public long f6591; + public long f6592; public long f6593; public long f6594; public long f6595; + public long f6596; public long f6597; public long f6598; public long f6599; + public long f6600; public long f6601; public long f6602; public long f6603; + public long f6604; public long f6605; public long f6606; public long f6607; + public long f6608; public long f6609; public long f6610; public long f6611; + public long f6612; public long f6613; public long f6614; public long f6615; + public long f6616; public long f6617; public long f6618; public long f6619; + public long f6620; public long f6621; public long f6622; public long f6623; + public long f6624; public long f6625; public long f6626; public long f6627; + public long f6628; public long f6629; public long f6630; public long f6631; + public long f6632; public long f6633; public long f6634; public long f6635; + public long f6636; public long f6637; public long f6638; public long f6639; + public long f6640; public long f6641; public long f6642; public long f6643; + public long f6644; public long f6645; public long f6646; public long f6647; + public long f6648; public long f6649; public long f6650; public long f6651; + public long f6652; public long f6653; public long f6654; public long f6655; + public long f6656; public long f6657; public long f6658; public long f6659; + public long f6660; public long f6661; public long f6662; public long f6663; + public long f6664; public long f6665; public long f6666; public long f6667; + public long f6668; public long f6669; public long f6670; public long f6671; + public long f6672; public long f6673; public long f6674; public long f6675; + public long f6676; public long f6677; public long f6678; public long f6679; + public long f6680; public long f6681; public long f6682; public long f6683; + public long f6684; public long f6685; public long f6686; public long f6687; + public long f6688; public long f6689; public long f6690; public long f6691; + public long f6692; public long f6693; public long f6694; public long f6695; + public long f6696; public long f6697; public long f6698; public long f6699; + public long f6700; public long f6701; public long f6702; public long f6703; + public long f6704; public long f6705; public long f6706; public long f6707; + public long f6708; public long f6709; public long f6710; public long f6711; + public long f6712; public long f6713; public long f6714; public long f6715; + public long f6716; public long f6717; public long f6718; public long f6719; + public long f6720; public long f6721; public long f6722; public long f6723; + public long f6724; public long f6725; public long f6726; public long f6727; + public long f6728; public long f6729; public long f6730; public long f6731; + public long f6732; public long f6733; public long f6734; public long f6735; + public long f6736; public long f6737; public long f6738; public long f6739; + public long f6740; public long f6741; public long f6742; public long f6743; + public long f6744; public long f6745; public long f6746; public long f6747; + public long f6748; public long f6749; public long f6750; public long f6751; + public long f6752; public long f6753; public long f6754; public long f6755; + public long f6756; public long f6757; public long f6758; public long f6759; + public long f6760; public long f6761; public long f6762; public long f6763; + public long f6764; public long f6765; public long f6766; public long f6767; + public long f6768; public long f6769; public long f6770; public long f6771; + public long f6772; public long f6773; public long f6774; public long f6775; + public long f6776; public long f6777; public long f6778; public long f6779; + public long f6780; public long f6781; public long f6782; public long f6783; + public long f6784; public long f6785; public long f6786; public long f6787; + public long f6788; public long f6789; public long f6790; public long f6791; + public long f6792; public long f6793; public long f6794; public long f6795; + public long f6796; public long f6797; public long f6798; public long f6799; + public long f6800; public long f6801; public long f6802; public long f6803; + public long f6804; public long f6805; public long f6806; public long f6807; + public long f6808; public long f6809; public long f6810; public long f6811; + public long f6812; public long f6813; public long f6814; public long f6815; + public long f6816; public long f6817; public long f6818; public long f6819; + public long f6820; public long f6821; public long f6822; public long f6823; + public long f6824; public long f6825; public long f6826; public long f6827; + public long f6828; public long f6829; public long f6830; public long f6831; + public long f6832; public long f6833; public long f6834; public long f6835; + public long f6836; public long f6837; public long f6838; public long f6839; + public long f6840; public long f6841; public long f6842; public long f6843; + public long f6844; public long f6845; public long f6846; public long f6847; + public long f6848; public long f6849; public long f6850; public long f6851; + public long f6852; public long f6853; public long f6854; public long f6855; + public long f6856; public long f6857; public long f6858; public long f6859; + public long f6860; public long f6861; public long f6862; public long f6863; + public long f6864; public long f6865; public long f6866; public long f6867; + public long f6868; public long f6869; public long f6870; public long f6871; + public long f6872; public long f6873; public long f6874; public long f6875; + public long f6876; public long f6877; public long f6878; public long f6879; + public long f6880; public long f6881; public long f6882; public long f6883; + public long f6884; public long f6885; public long f6886; public long f6887; + public long f6888; public long f6889; public long f6890; public long f6891; + public long f6892; public long f6893; public long f6894; public long f6895; + public long f6896; public long f6897; public long f6898; public long f6899; + public long f6900; public long f6901; public long f6902; public long f6903; + public long f6904; public long f6905; public long f6906; public long f6907; + public long f6908; public long f6909; public long f6910; public long f6911; + public long f6912; public long f6913; public long f6914; public long f6915; + public long f6916; public long f6917; public long f6918; public long f6919; + public long f6920; public long f6921; public long f6922; public long f6923; + public long f6924; public long f6925; public long f6926; public long f6927; + public long f6928; public long f6929; public long f6930; public long f6931; + public long f6932; public long f6933; public long f6934; public long f6935; + public long f6936; public long f6937; public long f6938; public long f6939; + public long f6940; public long f6941; public long f6942; public long f6943; + public long f6944; public long f6945; public long f6946; public long f6947; + public long f6948; public long f6949; public long f6950; public long f6951; + public long f6952; public long f6953; public long f6954; public long f6955; + public long f6956; public long f6957; public long f6958; public long f6959; + public long f6960; public long f6961; public long f6962; public long f6963; + public long f6964; public long f6965; public long f6966; public long f6967; + public long f6968; public long f6969; public long f6970; public long f6971; + public long f6972; public long f6973; public long f6974; public long f6975; + public long f6976; public long f6977; public long f6978; public long f6979; + public long f6980; public long f6981; public long f6982; public long f6983; + public long f6984; public long f6985; public long f6986; public long f6987; + public long f6988; public long f6989; public long f6990; public long f6991; + public long f6992; public long f6993; public long f6994; public long f6995; + public long f6996; public long f6997; public long f6998; public long f6999; + public long f7000; public long f7001; public long f7002; public long f7003; + public long f7004; public long f7005; public long f7006; public long f7007; + public long f7008; public long f7009; public long f7010; public long f7011; + public long f7012; public long f7013; public long f7014; public long f7015; + public long f7016; public long f7017; public long f7018; public long f7019; + public long f7020; public long f7021; public long f7022; public long f7023; + public long f7024; public long f7025; public long f7026; public long f7027; + public long f7028; public long f7029; public long f7030; public long f7031; + public long f7032; public long f7033; public long f7034; public long f7035; + public long f7036; public long f7037; public long f7038; public long f7039; + public long f7040; public long f7041; public long f7042; public long f7043; + public long f7044; public long f7045; public long f7046; public long f7047; + public long f7048; public long f7049; public long f7050; public long f7051; + public long f7052; public long f7053; public long f7054; public long f7055; + public long f7056; public long f7057; public long f7058; public long f7059; + public long f7060; public long f7061; public long f7062; public long f7063; + public long f7064; public long f7065; public long f7066; public long f7067; + public long f7068; public long f7069; public long f7070; public long f7071; + public long f7072; public long f7073; public long f7074; public long f7075; + public long f7076; public long f7077; public long f7078; public long f7079; + public long f7080; public long f7081; public long f7082; public long f7083; + public long f7084; public long f7085; public long f7086; public long f7087; + public long f7088; public long f7089; public long f7090; public long f7091; + public long f7092; public long f7093; public long f7094; public long f7095; + public long f7096; public long f7097; public long f7098; public long f7099; + public long f7100; public long f7101; public long f7102; public long f7103; + public long f7104; public long f7105; public long f7106; public long f7107; + public long f7108; public long f7109; public long f7110; public long f7111; + public long f7112; public long f7113; public long f7114; public long f7115; + public long f7116; public long f7117; public long f7118; public long f7119; + public long f7120; public long f7121; public long f7122; public long f7123; + public long f7124; public long f7125; public long f7126; public long f7127; + public long f7128; public long f7129; public long f7130; public long f7131; + public long f7132; public long f7133; public long f7134; public long f7135; + public long f7136; public long f7137; public long f7138; public long f7139; + public long f7140; public long f7141; public long f7142; public long f7143; + public long f7144; public long f7145; public long f7146; public long f7147; + public long f7148; public long f7149; public long f7150; public long f7151; + public long f7152; public long f7153; public long f7154; public long f7155; + public long f7156; public long f7157; public long f7158; public long f7159; + public long f7160; public long f7161; public long f7162; public long f7163; + public long f7164; public long f7165; public long f7166; public long f7167; + public long f7168; public long f7169; public long f7170; public long f7171; + public long f7172; public long f7173; public long f7174; public long f7175; + public long f7176; public long f7177; public long f7178; public long f7179; + public long f7180; public long f7181; public long f7182; public long f7183; + public long f7184; public long f7185; public long f7186; public long f7187; + public long f7188; public long f7189; public long f7190; public long f7191; + public long f7192; public long f7193; public long f7194; public long f7195; + public long f7196; public long f7197; public long f7198; public long f7199; + public long f7200; public long f7201; public long f7202; public long f7203; + public long f7204; public long f7205; public long f7206; public long f7207; + public long f7208; public long f7209; public long f7210; public long f7211; + public long f7212; public long f7213; public long f7214; public long f7215; + public long f7216; public long f7217; public long f7218; public long f7219; + public long f7220; public long f7221; public long f7222; public long f7223; + public long f7224; public long f7225; public long f7226; public long f7227; + public long f7228; public long f7229; public long f7230; public long f7231; + public long f7232; public long f7233; public long f7234; public long f7235; + public long f7236; public long f7237; public long f7238; public long f7239; + public long f7240; public long f7241; public long f7242; public long f7243; + public long f7244; public long f7245; public long f7246; public long f7247; + public long f7248; public long f7249; public long f7250; public long f7251; + public long f7252; public long f7253; public long f7254; public long f7255; + public long f7256; public long f7257; public long f7258; public long f7259; + public long f7260; public long f7261; public long f7262; public long f7263; + public long f7264; public long f7265; public long f7266; public long f7267; + public long f7268; public long f7269; public long f7270; public long f7271; + public long f7272; public long f7273; public long f7274; public long f7275; + public long f7276; public long f7277; public long f7278; public long f7279; + public long f7280; public long f7281; public long f7282; public long f7283; + public long f7284; public long f7285; public long f7286; public long f7287; + public long f7288; public long f7289; public long f7290; public long f7291; + public long f7292; public long f7293; public long f7294; public long f7295; + public long f7296; public long f7297; public long f7298; public long f7299; + public long f7300; public long f7301; public long f7302; public long f7303; + public long f7304; public long f7305; public long f7306; public long f7307; + public long f7308; public long f7309; public long f7310; public long f7311; + public long f7312; public long f7313; public long f7314; public long f7315; + public long f7316; public long f7317; public long f7318; public long f7319; + public long f7320; public long f7321; public long f7322; public long f7323; + public long f7324; public long f7325; public long f7326; public long f7327; + public long f7328; public long f7329; public long f7330; public long f7331; + public long f7332; public long f7333; public long f7334; public long f7335; + public long f7336; public long f7337; public long f7338; public long f7339; + public long f7340; public long f7341; public long f7342; public long f7343; + public long f7344; public long f7345; public long f7346; public long f7347; + public long f7348; public long f7349; public long f7350; public long f7351; + public long f7352; public long f7353; public long f7354; public long f7355; + public long f7356; public long f7357; public long f7358; public long f7359; + public long f7360; public long f7361; public long f7362; public long f7363; + public long f7364; public long f7365; public long f7366; public long f7367; + public long f7368; public long f7369; public long f7370; public long f7371; + public long f7372; public long f7373; public long f7374; public long f7375; + public long f7376; public long f7377; public long f7378; public long f7379; + public long f7380; public long f7381; public long f7382; public long f7383; + public long f7384; public long f7385; public long f7386; public long f7387; + public long f7388; public long f7389; public long f7390; public long f7391; + public long f7392; public long f7393; public long f7394; public long f7395; + public long f7396; public long f7397; public long f7398; public long f7399; + public long f7400; public long f7401; public long f7402; public long f7403; + public long f7404; public long f7405; public long f7406; public long f7407; + public long f7408; public long f7409; public long f7410; public long f7411; + public long f7412; public long f7413; public long f7414; public long f7415; + public long f7416; public long f7417; public long f7418; public long f7419; + public long f7420; public long f7421; public long f7422; public long f7423; + public long f7424; public long f7425; public long f7426; public long f7427; + public long f7428; public long f7429; public long f7430; public long f7431; + public long f7432; public long f7433; public long f7434; public long f7435; + public long f7436; public long f7437; public long f7438; public long f7439; + public long f7440; public long f7441; public long f7442; public long f7443; + public long f7444; public long f7445; public long f7446; public long f7447; + public long f7448; public long f7449; public long f7450; public long f7451; + public long f7452; public long f7453; public long f7454; public long f7455; + public long f7456; public long f7457; public long f7458; public long f7459; + public long f7460; public long f7461; public long f7462; public long f7463; + public long f7464; public long f7465; public long f7466; public long f7467; + public long f7468; public long f7469; public long f7470; public long f7471; + public long f7472; public long f7473; public long f7474; public long f7475; + public long f7476; public long f7477; public long f7478; public long f7479; + public long f7480; public long f7481; public long f7482; public long f7483; + public long f7484; public long f7485; public long f7486; public long f7487; + public long f7488; public long f7489; public long f7490; public long f7491; + public long f7492; public long f7493; public long f7494; public long f7495; + public long f7496; public long f7497; public long f7498; public long f7499; + public long f7500; public long f7501; public long f7502; public long f7503; + public long f7504; public long f7505; public long f7506; public long f7507; + public long f7508; public long f7509; public long f7510; public long f7511; + public long f7512; public long f7513; public long f7514; public long f7515; + public long f7516; public long f7517; public long f7518; public long f7519; + public long f7520; public long f7521; public long f7522; public long f7523; + public long f7524; public long f7525; public long f7526; public long f7527; + public long f7528; public long f7529; public long f7530; public long f7531; + public long f7532; public long f7533; public long f7534; public long f7535; + public long f7536; public long f7537; public long f7538; public long f7539; + public long f7540; public long f7541; public long f7542; public long f7543; + public long f7544; public long f7545; public long f7546; public long f7547; + public long f7548; public long f7549; public long f7550; public long f7551; + public long f7552; public long f7553; public long f7554; public long f7555; + public long f7556; public long f7557; public long f7558; public long f7559; + public long f7560; public long f7561; public long f7562; public long f7563; + public long f7564; public long f7565; public long f7566; public long f7567; + public long f7568; public long f7569; public long f7570; public long f7571; + public long f7572; public long f7573; public long f7574; public long f7575; + public long f7576; public long f7577; public long f7578; public long f7579; + public long f7580; public long f7581; public long f7582; public long f7583; + public long f7584; public long f7585; public long f7586; public long f7587; + public long f7588; public long f7589; public long f7590; public long f7591; + public long f7592; public long f7593; public long f7594; public long f7595; + public long f7596; public long f7597; public long f7598; public long f7599; + public long f7600; public long f7601; public long f7602; public long f7603; + public long f7604; public long f7605; public long f7606; public long f7607; + public long f7608; public long f7609; public long f7610; public long f7611; + public long f7612; public long f7613; public long f7614; public long f7615; + public long f7616; public long f7617; public long f7618; public long f7619; + public long f7620; public long f7621; public long f7622; public long f7623; + public long f7624; public long f7625; public long f7626; public long f7627; + public long f7628; public long f7629; public long f7630; public long f7631; + public long f7632; public long f7633; public long f7634; public long f7635; + public long f7636; public long f7637; public long f7638; public long f7639; + public long f7640; public long f7641; public long f7642; public long f7643; + public long f7644; public long f7645; public long f7646; public long f7647; + public long f7648; public long f7649; public long f7650; public long f7651; + public long f7652; public long f7653; public long f7654; public long f7655; + public long f7656; public long f7657; public long f7658; public long f7659; + public long f7660; public long f7661; public long f7662; public long f7663; + public long f7664; public long f7665; public long f7666; public long f7667; + public long f7668; public long f7669; public long f7670; public long f7671; + public long f7672; public long f7673; public long f7674; public long f7675; + public long f7676; public long f7677; public long f7678; public long f7679; + public long f7680; public long f7681; public long f7682; public long f7683; + public long f7684; public long f7685; public long f7686; public long f7687; + public long f7688; public long f7689; public long f7690; public long f7691; + public long f7692; public long f7693; public long f7694; public long f7695; + public long f7696; public long f7697; public long f7698; public long f7699; + public long f7700; public long f7701; public long f7702; public long f7703; + public long f7704; public long f7705; public long f7706; public long f7707; + public long f7708; public long f7709; public long f7710; public long f7711; + public long f7712; public long f7713; public long f7714; public long f7715; + public long f7716; public long f7717; public long f7718; public long f7719; + public long f7720; public long f7721; public long f7722; public long f7723; + public long f7724; public long f7725; public long f7726; public long f7727; + public long f7728; public long f7729; public long f7730; public long f7731; + public long f7732; public long f7733; public long f7734; public long f7735; + public long f7736; public long f7737; public long f7738; public long f7739; + public long f7740; public long f7741; public long f7742; public long f7743; + public long f7744; public long f7745; public long f7746; public long f7747; + public long f7748; public long f7749; public long f7750; public long f7751; + public long f7752; public long f7753; public long f7754; public long f7755; + public long f7756; public long f7757; public long f7758; public long f7759; + public long f7760; public long f7761; public long f7762; public long f7763; + public long f7764; public long f7765; public long f7766; public long f7767; + public long f7768; public long f7769; public long f7770; public long f7771; + public long f7772; public long f7773; public long f7774; public long f7775; + public long f7776; public long f7777; public long f7778; public long f7779; + public long f7780; public long f7781; public long f7782; public long f7783; + public long f7784; public long f7785; public long f7786; public long f7787; + public long f7788; public long f7789; public long f7790; public long f7791; + public long f7792; public long f7793; public long f7794; public long f7795; + public long f7796; public long f7797; public long f7798; public long f7799; + public long f7800; public long f7801; public long f7802; public long f7803; + public long f7804; public long f7805; public long f7806; public long f7807; + public long f7808; public long f7809; public long f7810; public long f7811; + public long f7812; public long f7813; public long f7814; public long f7815; + public long f7816; public long f7817; public long f7818; public long f7819; + public long f7820; public long f7821; public long f7822; public long f7823; + public long f7824; public long f7825; public long f7826; public long f7827; + public long f7828; public long f7829; public long f7830; public long f7831; + public long f7832; public long f7833; public long f7834; public long f7835; + public long f7836; public long f7837; public long f7838; public long f7839; + public long f7840; public long f7841; public long f7842; public long f7843; + public long f7844; public long f7845; public long f7846; public long f7847; + public long f7848; public long f7849; public long f7850; public long f7851; + public long f7852; public long f7853; public long f7854; public long f7855; + public long f7856; public long f7857; public long f7858; public long f7859; + public long f7860; public long f7861; public long f7862; public long f7863; + public long f7864; public long f7865; public long f7866; public long f7867; + public long f7868; public long f7869; public long f7870; public long f7871; + public long f7872; public long f7873; public long f7874; public long f7875; + public long f7876; public long f7877; public long f7878; public long f7879; + public long f7880; public long f7881; public long f7882; public long f7883; + public long f7884; public long f7885; public long f7886; public long f7887; + public long f7888; public long f7889; public long f7890; public long f7891; + public long f7892; public long f7893; public long f7894; public long f7895; + public long f7896; public long f7897; public long f7898; public long f7899; + public long f7900; public long f7901; public long f7902; public long f7903; + public long f7904; public long f7905; public long f7906; public long f7907; + public long f7908; public long f7909; public long f7910; public long f7911; + public long f7912; public long f7913; public long f7914; public long f7915; + public long f7916; public long f7917; public long f7918; public long f7919; + public long f7920; public long f7921; public long f7922; public long f7923; + public long f7924; public long f7925; public long f7926; public long f7927; + public long f7928; public long f7929; public long f7930; public long f7931; + public long f7932; public long f7933; public long f7934; public long f7935; + public long f7936; public long f7937; public long f7938; public long f7939; + public long f7940; public long f7941; public long f7942; public long f7943; + public long f7944; public long f7945; public long f7946; public long f7947; + public long f7948; public long f7949; public long f7950; public long f7951; + public long f7952; public long f7953; public long f7954; public long f7955; + public long f7956; public long f7957; public long f7958; public long f7959; + public long f7960; public long f7961; public long f7962; public long f7963; + public long f7964; public long f7965; public long f7966; public long f7967; + public long f7968; public long f7969; public long f7970; public long f7971; + public long f7972; public long f7973; public long f7974; public long f7975; + public long f7976; public long f7977; public long f7978; public long f7979; + public long f7980; public long f7981; public long f7982; public long f7983; + public long f7984; public long f7985; public long f7986; public long f7987; + public long f7988; public long f7989; public long f7990; public long f7991; + public long f7992; public long f7993; public long f7994; public long f7995; + public long f7996; public long f7997; public long f7998; public long f7999; + public long f8000; public long f8001; public long f8002; public long f8003; + public long f8004; public long f8005; public long f8006; public long f8007; + public long f8008; public long f8009; public long f8010; public long f8011; + public long f8012; public long f8013; public long f8014; public long f8015; + public long f8016; public long f8017; public long f8018; public long f8019; + public long f8020; public long f8021; public long f8022; public long f8023; + public long f8024; public long f8025; public long f8026; public long f8027; + public long f8028; public long f8029; public long f8030; public long f8031; + public long f8032; public long f8033; public long f8034; public long f8035; + public long f8036; public long f8037; public long f8038; public long f8039; + public long f8040; public long f8041; public long f8042; public long f8043; + public long f8044; public long f8045; public long f8046; public long f8047; + public long f8048; public long f8049; public long f8050; public long f8051; + public long f8052; public long f8053; public long f8054; public long f8055; + public long f8056; public long f8057; public long f8058; public long f8059; + public long f8060; public long f8061; public long f8062; public long f8063; + public long f8064; public long f8065; public long f8066; public long f8067; + public long f8068; public long f8069; public long f8070; public long f8071; + public long f8072; public long f8073; public long f8074; public long f8075; + public long f8076; public long f8077; public long f8078; public long f8079; + public long f8080; public long f8081; public long f8082; public long f8083; + public long f8084; public long f8085; public long f8086; public long f8087; + public long f8088; public long f8089; public long f8090; public long f8091; + public long f8092; public long f8093; public long f8094; public long f8095; + public long f8096; public long f8097; public long f8098; public long f8099; + public long f8100; public long f8101; public long f8102; public long f8103; + public long f8104; public long f8105; public long f8106; public long f8107; + public long f8108; public long f8109; public long f8110; public long f8111; + public long f8112; public long f8113; public long f8114; public long f8115; + public long f8116; public long f8117; public long f8118; public long f8119; + public long f8120; public long f8121; public long f8122; public long f8123; + public long f8124; public long f8125; public long f8126; public long f8127; + public long f8128; public long f8129; public long f8130; public long f8131; + public long f8132; public long f8133; public long f8134; public long f8135; + public long f8136; public long f8137; public long f8138; public long f8139; + public long f8140; public long f8141; public long f8142; public long f8143; + public long f8144; public long f8145; public long f8146; public long f8147; + public long f8148; public long f8149; public long f8150; public long f8151; + public long f8152; public long f8153; public long f8154; public long f8155; + public long f8156; public long f8157; public long f8158; public long f8159; + public long f8160; public long f8161; public long f8162; public long f8163; + public long f8164; public long f8165; public long f8166; public long f8167; + public long f8168; public long f8169; public long f8170; public long f8171; + public long f8172; public long f8173; public long f8174; public long f8175; + public long f8176; public long f8177; public long f8178; public long f8179; + public long f8180; public long f8181; public long f8182; public long f8183; + public long f8184; public long f8185; public long f8186; public long f8187; + public long f8188; public long f8189; public long f8190; public long f8191; + public long f8192; public long f8193; public long f8194; public long f8195; + public long f8196; public long f8197; public long f8198; public long f8199; + public long f8200; + + public static void printV(PR26858 o) + { + System.out.println(o.f8200); + } + + public static void main(String args[]) + { + PR26858 x = new PR26858(); + + try + { + printV(x); + printV(null); + System.out.println("bad"); + } + catch (Exception e) + { + System.out.println("ok"); + } + } +} diff --git a/libjava/testsuite/libjava.lang/PR26858.out b/libjava/testsuite/libjava.lang/PR26858.out new file mode 100644 index 00000000000..17cb597de18 --- /dev/null +++ b/libjava/testsuite/libjava.lang/PR26858.out @@ -0,0 +1,2 @@ +0 +ok diff --git a/libjava/testsuite/libjava.lang/PR26858.xfail b/libjava/testsuite/libjava.lang/PR26858.xfail new file mode 100644 index 00000000000..fc8935f5ce4 --- /dev/null +++ b/libjava/testsuite/libjava.lang/PR26858.xfail @@ -0,0 +1,2 @@ +xfail-exec +xfail-output diff --git a/libjava/testsuite/libjava.lang/pr26390.java b/libjava/testsuite/libjava.lang/pr26390.java new file mode 100644 index 00000000000..09cca7ef903 --- /dev/null +++ b/libjava/testsuite/libjava.lang/pr26390.java @@ -0,0 +1,45 @@ +public class pr26390 +{ + public interface ComponentPeer { + public void setBounds(); + } + + public interface ContainerPeer extends ComponentPeer { + } + + public interface WindowPeer extends ContainerPeer { + } + + public interface FramePeer extends WindowPeer { + } + + public static class SwingComponentPeer implements ComponentPeer { + public void setBounds() { + } + } + + public static class SwingContainerPeer + extends SwingComponentPeer implements ContainerPeer + { + } + + public static class SwingWindowPeer + extends SwingContainerPeer implements WindowPeer + { + } + + public static class SwingFramePeer + extends SwingWindowPeer implements FramePeer + { + public void setBounds() { + super.setBounds(); + } + } + + public static void main(String[] args) + { + SwingFramePeer s = new SwingFramePeer(); + s.setBounds(); + } +} + diff --git a/libjava/testsuite/libjava.lang/pr26390.out b/libjava/testsuite/libjava.lang/pr26390.out new file mode 100644 index 00000000000..e69de29bb2d diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index d3ad981c639..b0f2a3d52a3 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,82 @@ +2006-03-29 Benjamin Kosnik + + * testsuite/data/sgetn.txt: Correct copyright holder. + * testsuite/data/wistream_extractor_other-1.tst: Same. + * testsuite/data/wistream_extractor_other-2.tst: Same. + * testsuite/data/istream_extractor_other-1.txt: Same. + * testsuite/data/filebuf_virtuals-1.txt: Same. + * testsuite/data/wostream_inserter_other-1.tst: Same. + * testsuite/data/wostream_inserter_other-2.tst: Same. + * testsuite/data/ostream_inserter_other-1.tst: Same. + * testsuite/data/ostream_inserter_other-2.tst: Same. + * testsuite/data/wistream_extractor_other-1.txt: Same. + * testsuite/data/istream_extractor_other-1.tst: Same. + * testsuite/data/istream_extractor_other-2.tst: Same. + * testsuite/data/filebuf_virtuals-1.tst: Same. + * testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc: Adjust test + conditions. + * testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc: Same. + * testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc: Same. + * testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc: Same. + +2006-03-28 Paolo Carlini + + * include/ext/vstring.h (operator[]): Allow s[s.size()] in + debug mode, but not pedantic mode. + +2006-03-24 Mark Mitchell + Joseph S. Myers + + PR libstdc++/20448 + PR libstdc++/20451 + * scripts/testsuite_flags.in (--cxxflags): Don't define LOCALEDIR. + * testsuite/lib/libstdc++.exp (libstdc++_init): Always define + LOCALEDIR to ".". + (v3-build_support): Build MO files. + +2006-03-22 Paolo Carlini + + PR libstdc++/26777 + * include/bits/fstream.tcc (basic_filebuf<>::_M_seek): Check + the return value of _M_file.seekoff. + * testsuite/27_io/basic_filebuf/seekoff/char/26777.cc: New. + +2006-03-21 Paolo Carlini + + PR libstdc++/25482 + * include/bits/stl_algobase.h (__copy_aux(_CharT*, _CharT*, + ostreambuf_iterator<_CharT>), __copy_aux(const _CharT*, const _CharT*, + ostreambuf_iterator<_CharT>), __copy_aux(istreambuf_iterator<_CharT>, + istreambuf_iterator<_CharT>, _CharT*), copy(istreambuf_iterator<_CharT>, + istreambuf_iterator<_CharT>, ostreambuf_iterator<_CharT>)): Declare. + * include/bits/stl_algo.h (find(istreambuf_iterator<_CharT>, + istreambuf_iterator<_CharT>, _CharT)): Likewise. + * include/bits/streambuf_iterator.h (copy(istreambuf_iterator<_CharT>, + istreambuf_iterator<_CharT>, ostreambuf_iterator<_CharT>), + __copy_aux(_CharT*, _CharT*, ostreambuf_iterator<_CharT>), + __copy_aux(const _CharT*, const _CharT*, ostreambuf_iterator<_CharT>), + __copy_aux(istreambuf_iterator<_CharT>, istreambuf_iterator<_CharT>, + _CharT*), find(istreambuf_iterator<_CharT>, istreambuf_iterator<_CharT>, + _CharT)): Define. + (class istreambuf_iterator<>, class ostreambuf_iterator<>): Declare + friends. + * include/std/std_streambuf.h (class basic_streambuf<>): Likewise. + * include/bits/cpp_type_traits.h (struct __is_char<>): Add. + * testsuite/25_algorithms/copy/streambuf_iterators/char/1.cc: New. + * testsuite/25_algorithms/copy/streambuf_iterators/char/2.cc: New. + * testsuite/25_algorithms/copy/streambuf_iterators/char/3.cc: New. + * testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc: New. + * testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/1.cc: New. + * testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/2.cc: New. + * testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/3.cc: New. + * testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc: New. + * testsuite/25_algorithms/find/istreambuf_iterators/char/1.cc: New. + * testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc: New. + * testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/1.cc: New. + * testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc: New. + * testsuite/performance/25_algorithms/copy_streambuf_iterators.cc: New. + * testsuite/performance/25_algorithms/find_istreambuf_iterators.cc: New. + 006-03-13 Paolo Carlini * include/bits/postypes.h (fpos<>::operator==, operator!=): Remove, diff --git a/libstdc++-v3/include/bits/cpp_type_traits.h b/libstdc++-v3/include/bits/cpp_type_traits.h index e75bf47f08b..53823a81450 100644 --- a/libstdc++-v3/include/bits/cpp_type_traits.h +++ b/libstdc++-v3/include/bits/cpp_type_traits.h @@ -1,6 +1,6 @@ // The -*- C++ -*- type traits classes for internal use in libstdc++ -// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 +// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -385,6 +385,32 @@ _GLIBCXX_BEGIN_NAMESPACE(std) }; }; + // + // For use in std::copy and std::find overloads for streambuf iterators. + // + template + struct __is_char + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template<> + struct __is_char + { + enum { __value = 1 }; + typedef __true_type __type; + }; + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + struct __is_char + { + enum { __value = 1 }; + typedef __true_type __type; + }; +#endif + _GLIBCXX_END_NAMESPACE #endif //_CPP_TYPE_TRAITS_H diff --git a/libstdc++-v3/include/bits/fstream.tcc b/libstdc++-v3/include/bits/fstream.tcc index 08fcdbe5ec9..5520f9b6146 100644 --- a/libstdc++-v3/include/bits/fstream.tcc +++ b/libstdc++-v3/include/bits/fstream.tcc @@ -1,6 +1,6 @@ // File based streams -*- C++ -*- -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -740,12 +740,15 @@ _GLIBCXX_BEGIN_NAMESPACE(std) { // Returns pos_type(off_type(-1)) in case of failure. __ret = pos_type(_M_file.seekoff(__off, __way)); - _M_reading = false; - _M_writing = false; - _M_ext_next = _M_ext_end = _M_ext_buf; - _M_set_buffer(-1); - _M_state_cur = __state; - __ret.state(_M_state_cur); + if (__ret != pos_type(off_type(-1))) + { + _M_reading = false; + _M_writing = false; + _M_ext_next = _M_ext_end = _M_ext_buf; + _M_set_buffer(-1); + _M_state_cur = __state; + __ret.state(_M_state_cur); + } } return __ret; } diff --git a/libstdc++-v3/include/bits/stl_algo.h b/libstdc++-v3/include/bits/stl_algo.h index d5c8f9ddde6..fe94f71e70f 100644 --- a/libstdc++-v3/include/bits/stl_algo.h +++ b/libstdc++-v3/include/bits/stl_algo.h @@ -295,6 +295,16 @@ _GLIBCXX_BEGIN_NAMESPACE(std) } /** + * @if maint + * This is an overload of find() for streambuf iterators. + * @endif + */ + template + typename __enable_if, + __is_char<_CharT>::__value>::__type + find(istreambuf_iterator<_CharT>, istreambuf_iterator<_CharT>, _CharT); + + /** * @brief Find the first occurrence of a value in a sequence. * @param first An input iterator. * @param last An input iterator. diff --git a/libstdc++-v3/include/bits/stl_algobase.h b/libstdc++-v3/include/bits/stl_algobase.h index 9a2e7af16c4..da93e1588f6 100644 --- a/libstdc++-v3/include/bits/stl_algobase.h +++ b/libstdc++-v3/include/bits/stl_algobase.h @@ -1,6 +1,7 @@ // Bits and pieces used in algorithms -*- C++ -*- -// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 +// Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -165,8 +166,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) iter_swap(__a, __b); } - #undef min - #undef max +#undef min +#undef max /** * @brief This does what you think it does. @@ -316,6 +317,22 @@ _GLIBCXX_BEGIN_NAMESPACE(std) return std::__copy<__simple, _Category>::copy(__first, __last, __result); } + // Helpers for streambuf iterators (either istream or ostream). + template + typename __enable_if, + __is_char<_CharT>::__value>::__type + __copy_aux(_CharT*, _CharT*, ostreambuf_iterator<_CharT>); + + template + typename __enable_if, + __is_char<_CharT>::__value>::__type + __copy_aux(const _CharT*, const _CharT*, ostreambuf_iterator<_CharT>); + + template + typename __enable_if<_CharT*, __is_char<_CharT>::__value>::__type + __copy_aux(istreambuf_iterator<_CharT>, istreambuf_iterator<_CharT>, + _CharT*); + template struct __copy_normal { @@ -385,7 +402,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) return std::__copy_normal<__in, __out>::__copy_n(__first, __last, __result); } - + + // Overload for streambuf iterators. + template + typename __enable_if, + __is_char<_CharT>::__value>::__type + copy(istreambuf_iterator<_CharT>, istreambuf_iterator<_CharT>, + ostreambuf_iterator<_CharT>); + template struct __copy_backward { diff --git a/libstdc++-v3/include/bits/streambuf_iterator.h b/libstdc++-v3/include/bits/streambuf_iterator.h index e3b5a3b4c3a..56de85c4c32 100644 --- a/libstdc++-v3/include/bits/streambuf_iterator.h +++ b/libstdc++-v3/include/bits/streambuf_iterator.h @@ -1,6 +1,6 @@ // Streambuf iterators -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -41,9 +41,13 @@ #include #include -// NB: Should specialize copy, find algorithms for streambuf iterators. - _GLIBCXX_BEGIN_NAMESPACE(std) + + template + typename __enable_if, + __is_char<_CharT>::__value>::__type + copy(istreambuf_iterator<_CharT>, istreambuf_iterator<_CharT>, + ostreambuf_iterator<_CharT>); // 24.5.3 Template class istreambuf_iterator /// Provides input iterator semantics for streambufs. @@ -63,6 +67,24 @@ _GLIBCXX_BEGIN_NAMESPACE(std) typedef basic_istream<_CharT, _Traits> istream_type; //@} + template + friend typename __enable_if, + __is_char<_CharT2>::__value>::__type + copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, + ostreambuf_iterator<_CharT2>); + + template + friend typename __enable_if<_CharT2*, + __is_char<_CharT2>::__value>::__type + __copy_aux(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, + _CharT2*); + + template + friend typename __enable_if, + __is_char<_CharT2>::__value>::__type + find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, + _CharT2); + private: // 24.5.3 istreambuf_iterator // p 1 @@ -201,6 +223,12 @@ _GLIBCXX_BEGIN_NAMESPACE(std) typedef basic_ostream<_CharT, _Traits> ostream_type; //@} + template + friend typename __enable_if, + __is_char<_CharT2>::__value>::__type + copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, + ostreambuf_iterator<_CharT2>); + private: streambuf_type* _M_sbuf; bool _M_failed; @@ -255,6 +283,123 @@ _GLIBCXX_BEGIN_NAMESPACE(std) } }; + // Overloads for streambuf iterators. + template + typename __enable_if, + __is_char<_CharT>::__value>::__type + copy(istreambuf_iterator<_CharT> __first, + istreambuf_iterator<_CharT> __last, + ostreambuf_iterator<_CharT> __result) + { + if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed) + { + bool __ineof; + __copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof); + if (!__ineof) + __result._M_failed = true; + } + return __result; + } + + template + typename __enable_if, + __is_char<_CharT>::__value>::__type + __copy_aux(_CharT* __first, _CharT* __last, + ostreambuf_iterator<_CharT> __result) + { + const streamsize __num = __last - __first; + if (__num > 0) + __result._M_put(__first, __num); + return __result; + } + + template + typename __enable_if, + __is_char<_CharT>::__value>::__type + __copy_aux(const _CharT* __first, const _CharT* __last, + ostreambuf_iterator<_CharT> __result) + { + const streamsize __num = __last - __first; + if (__num > 0) + __result._M_put(__first, __num); + return __result; + } + + template + typename __enable_if<_CharT*, __is_char<_CharT>::__value>::__type + __copy_aux(istreambuf_iterator<_CharT> __first, + istreambuf_iterator<_CharT> __last, _CharT* __result) + { + typedef istreambuf_iterator<_CharT> __is_iterator_type; + typedef typename __is_iterator_type::traits_type traits_type; + typedef typename __is_iterator_type::streambuf_type streambuf_type; + typedef typename traits_type::int_type int_type; + + if (__first._M_sbuf && !__last._M_sbuf) + { + streambuf_type* __sb = __first._M_sbuf; + int_type __c = __sb->sgetc(); + while (!traits_type::eq_int_type(__c, traits_type::eof())) + { + const streamsize __n = __sb->egptr() - __sb->gptr(); + if (__n > 1) + { + traits_type::copy(__result, __sb->gptr(), __n); + __sb->gbump(__n); + __result += __n; + __c = __sb->underflow(); + } + else + { + *__result++ = traits_type::to_char_type(__c); + __c = __sb->snextc(); + } + } + } + return __result; + } + + template + typename __enable_if, + __is_char<_CharT>::__value>::__type + find(istreambuf_iterator<_CharT> __first, + istreambuf_iterator<_CharT> __last, _CharT __val) + { + typedef istreambuf_iterator<_CharT> __is_iterator_type; + typedef typename __is_iterator_type::traits_type traits_type; + typedef typename __is_iterator_type::streambuf_type streambuf_type; + typedef typename traits_type::int_type int_type; + + if (__first._M_sbuf && !__last._M_sbuf) + { + const int_type __ival = traits_type::to_int_type(__val); + streambuf_type* __sb = __first._M_sbuf; + int_type __c = __sb->sgetc(); + while (!traits_type::eq_int_type(__c, traits_type::eof()) + && !traits_type::eq_int_type(__c, __ival)) + { + streamsize __n = __sb->egptr() - __sb->gptr(); + if (__n > 1) + { + const _CharT* __p = traits_type::find(__sb->gptr(), + __n, __val); + if (__p) + __n = __p - __sb->gptr(); + __sb->gbump(__n); + __c = __sb->sgetc(); + } + else + __c = __sb->snextc(); + } + + if (!traits_type::eq_int_type(__c, traits_type::eof())) + __first._M_c = __c; + else + __first._M_sbuf = 0; + } + return __first; + } + _GLIBCXX_END_NAMESPACE #endif diff --git a/libstdc++-v3/include/ext/vstring.h b/libstdc++-v3/include/ext/vstring.h index a117c5826ee..5cd84b15a30 100644 --- a/libstdc++-v3/include/ext/vstring.h +++ b/libstdc++-v3/include/ext/vstring.h @@ -449,7 +449,10 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) reference operator[](size_type __pos) { - _GLIBCXX_DEBUG_ASSERT(__pos < this->size()); + // allow pos == size() as v3 extension: + _GLIBCXX_DEBUG_ASSERT(__pos <= this->size()); + // but be strict in pedantic mode: + _GLIBCXX_DEBUG_PEDASSERT(__pos < this->size()); this->_M_leak(); return this->_M_data()[__pos]; } diff --git a/libstdc++-v3/include/std/std_streambuf.h b/libstdc++-v3/include/std/std_streambuf.h index b36a139b978..0cc83ce451f 100644 --- a/libstdc++-v3/include/std/std_streambuf.h +++ b/libstdc++-v3/include/std/std_streambuf.h @@ -45,6 +45,7 @@ #include #include #include +#include _GLIBCXX_BEGIN_NAMESPACE(std) @@ -55,10 +56,19 @@ _GLIBCXX_BEGIN_NAMESPACE(std) */ template streamsize - __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>* __sbin, - basic_streambuf<_CharT, _Traits>* __sbout, - bool& __ineof); - + __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*, + basic_streambuf<_CharT, _Traits>*, bool&); + + template + typename __enable_if<_CharT*, __is_char<_CharT>::__value>::__type + __copy_aux(istreambuf_iterator<_CharT>, + istreambuf_iterator<_CharT>, _CharT*); + + template + typename __enable_if, + __is_char<_CharT>::__value>::__type + find(istreambuf_iterator<_CharT>, istreambuf_iterator<_CharT>, _CharT); + /** * @brief The actual work of input and output (interface). * @@ -152,18 +162,29 @@ _GLIBCXX_BEGIN_NAMESPACE(std) friend class ostreambuf_iterator; friend streamsize - __copy_streambufs_eof<>(__streambuf_type* __sbin, - __streambuf_type* __sbout, bool& __ineof); - + __copy_streambufs_eof<>(__streambuf_type*, __streambuf_type*, bool&); + + template + friend typename __enable_if<_CharT2*, + __is_char<_CharT2>::__value>::__type + __copy_aux(istreambuf_iterator<_CharT2>, + istreambuf_iterator<_CharT2>, _CharT2*); + + template + friend typename __enable_if, + __is_char<_CharT2>::__value>::__type + find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, + _CharT2); + template friend basic_istream<_CharT2, _Traits2>& operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*); - + template friend basic_istream<_CharT2, _Traits2>& operator>>(basic_istream<_CharT2, _Traits2>&, basic_string<_CharT2, _Traits2, _Alloc>&); - + template friend basic_istream<_CharT2, _Traits2>& getline(basic_istream<_CharT2, _Traits2>&, diff --git a/libstdc++-v3/scripts/testsuite_flags.in b/libstdc++-v3/scripts/testsuite_flags.in index 86b02359f92..15a4d8599e6 100755 --- a/libstdc++-v3/scripts/testsuite_flags.in +++ b/libstdc++-v3/scripts/testsuite_flags.in @@ -50,7 +50,7 @@ case ${query} in --cxxflags) CXXFLAGS_save="-g -O2 -D_GLIBCXX_ASSERT" CXXFLAGS_config='@SECTION_FLAGS@ -fmessage-length=0 - @EXTRA_CXX_FLAGS@ -DLOCALEDIR="@glibcxx_localedir@" ' + @EXTRA_CXX_FLAGS@ ' echo ${CXXFLAGS_save} ${CXXFLAGS_config} ;; --cxxpchflags) diff --git a/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/1.cc b/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/1.cc new file mode 100644 index 00000000000..f90f325d37e --- /dev/null +++ b/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/1.cc @@ -0,0 +1,76 @@ +// 2006-03-20 Paolo Carlini + +// Copyright (C) 2006 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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 library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without Pred 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 library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +#include +#include +#include +#include + +// In the occasion of libstdc++/25482 +void test01() +{ + bool test __attribute__((unused)) = true; + using namespace std; + + typedef istreambuf_iterator in_iterator_type; + typedef ostreambuf_iterator out_iterator_type; + + const char data1[] = "Drei Phantasien nach Friedrich Holderlin"; + const string str1(data1); + istringstream iss1(str1); + in_iterator_type beg1(iss1); + in_iterator_type end1; + + ostringstream oss1; + out_iterator_type out1(oss1); + + out1 = copy(beg1, beg1, out1); + VERIFY( oss1.str().empty() ); + + out1 = copy(end1, end1, out1); + VERIFY( oss1.str().empty() ); + + out1 = copy(beg1, end1, out1); + VERIFY( oss1.str() == str1 ); + *out1 = 'x'; + VERIFY( oss1.str() == str1 + 'x' ); + oss1.str(""); + + iss1.seekg(0); + oss1.seekp(0); + oss1.str(""); + out1 = copy(beg1, end1, out1); + VERIFY( oss1.str() == str1 ); + *out1 = 'y'; + VERIFY( oss1.str() == str1 + 'y' ); + oss1.str(""); + out1 = copy(beg1, end1, out1); + VERIFY( oss1.str() == "" ); + + iss1.seekg(0); + out1 = copy(beg1, end1, out1); + VERIFY( oss1.str() == str1 ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/2.cc b/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/2.cc new file mode 100644 index 00000000000..333ad1ee30a --- /dev/null +++ b/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/2.cc @@ -0,0 +1,77 @@ +// 2006-03-20 Paolo Carlini + +// Copyright (C) 2006 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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 library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without Pred 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 library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +#include +#include +#include +#include + +// In the occasion of libstdc++/25482 +void test01() +{ + bool test __attribute__((unused)) = true; + using namespace std; + + typedef istreambuf_iterator in_iterator_type; + + const char data1[] = "Drei Phantasien nach Friedrich Holderlin"; + const string str1(data1); + istringstream iss1(str1); + in_iterator_type beg1(iss1); + in_iterator_type end1; + + char buffer1[sizeof(data1) * 5]; + memset(buffer1, '*', sizeof(buffer1)); + char* out1 = buffer1; + + out1 = copy(beg1, beg1, out1); + VERIFY( out1 == buffer1 ); + + out1 = copy(end1, end1, out1); + VERIFY( out1 == buffer1 ); + + out1 = copy(beg1, end1, out1); + VERIFY( string(buffer1, out1) == str1 ); + *out1++ = 'x'; + VERIFY( string(buffer1, out1) == str1 + 'x' ); + memset(buffer1, '*', sizeof(buffer1)); + + iss1.seekg(0); + out1 = buffer1; + memset(buffer1, '*', sizeof(buffer1)); + out1 = copy(beg1, end1, out1); + VERIFY( string(buffer1, out1) == str1 ); + *out1++ = 'y'; + VERIFY( string(buffer1, out1) == str1 + 'y' ); + out1 = buffer1; + memset(buffer1, '*', sizeof(buffer1)); + out1 = copy(beg1, end1, out1); + VERIFY( string(buffer1, out1) == "" ); + + iss1.seekg(0); + out1 = copy(beg1, end1, out1); + VERIFY( string(buffer1, out1) == str1 ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/3.cc b/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/3.cc new file mode 100644 index 00000000000..0db12392114 --- /dev/null +++ b/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/3.cc @@ -0,0 +1,72 @@ +// 2006-03-20 Paolo Carlini + +// Copyright (C) 2006 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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 library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without Pred 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 library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +#include +#include +#include +#include + +// In the occasion of libstdc++/25482 +void test01() +{ + bool test __attribute__((unused)) = true; + using namespace std; + + typedef ostreambuf_iterator out_iterator_type; + + const char data1[] = "Drei Phantasien nach Friedrich Holderlin"; + const string str1(data1); + const char* beg1 = data1; + const char* end1 = beg1 + str1.size(); + + ostringstream oss1; + out_iterator_type out1(oss1); + + out1 = copy(beg1, beg1, out1); + VERIFY( oss1.str().empty() ); + + out1 = copy(end1, end1, out1); + VERIFY( oss1.str().empty() ); + + out1 = copy(beg1, end1, out1); + VERIFY( oss1.str() == str1 ); + *out1 = 'x'; + VERIFY( oss1.str() == str1 + 'x' ); + oss1.str(""); + + oss1.seekp(0); + oss1.str(""); + out1 = copy(beg1, end1, out1); + VERIFY( oss1.str() == str1 ); + *out1 = 'y'; + VERIFY( oss1.str() == str1 + 'y' ); + oss1.str(""); + out1 = copy(beg1, end1, out1); + VERIFY( oss1.str() == str1 ); + + out1 = copy(beg1, end1, out1); + VERIFY( oss1.str() == str1 + str1 ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc b/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc new file mode 100644 index 00000000000..2af78d5415b --- /dev/null +++ b/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc @@ -0,0 +1,56 @@ +// 2006-03-20 Paolo Carlini + +// Copyright (C) 2006 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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 library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without Pred 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 library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +#include +#include +#include +#include + +// In the occasion of libstdc++/25482 +void test01() +{ + bool test __attribute__((unused)) = true; + using namespace std; + + typedef istreambuf_iterator in_iterator_type; + + ifstream fbuf_ref("istream_unformatted-1.txt"), + fbuf("istream_unformatted-1.txt"); + + char buffer_ref[16500], + buffer[16500]; + + fbuf_ref.read(buffer_ref, 16500); + + in_iterator_type beg(fbuf); + in_iterator_type end; + copy(beg, end, buffer); + + VERIFY( fbuf_ref.good() ); + VERIFY( fbuf.good() ); + + VERIFY( !memcmp(buffer, buffer_ref, 16500) ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/1.cc b/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/1.cc new file mode 100644 index 00000000000..3f4cc5569aa --- /dev/null +++ b/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/1.cc @@ -0,0 +1,76 @@ +// 2006-03-20 Paolo Carlini + +// Copyright (C) 2006 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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 library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without Pred 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 library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +#include +#include +#include +#include + +// In the occasion of libstdc++/25482 +void test01() +{ + bool test __attribute__((unused)) = true; + using namespace std; + + typedef istreambuf_iterator in_iterator_type; + typedef ostreambuf_iterator out_iterator_type; + + const wchar_t data1[] = L"Drei Phantasien nach Friedrich Holderlin"; + const wstring str1(data1); + wistringstream iss1(str1); + in_iterator_type beg1(iss1); + in_iterator_type end1; + + wostringstream oss1; + out_iterator_type out1(oss1); + + out1 = copy(beg1, beg1, out1); + VERIFY( oss1.str().empty() ); + + out1 = copy(end1, end1, out1); + VERIFY( oss1.str().empty() ); + + out1 = copy(beg1, end1, out1); + VERIFY( oss1.str() == str1 ); + *out1 = L'x'; + VERIFY( oss1.str() == str1 + L'x' ); + oss1.str(L""); + + iss1.seekg(0); + oss1.seekp(0); + oss1.str(L""); + out1 = copy(beg1, end1, out1); + VERIFY( oss1.str() == str1 ); + *out1 = L'y'; + VERIFY( oss1.str() == str1 + L'y' ); + oss1.str(L""); + out1 = copy(beg1, end1, out1); + VERIFY( oss1.str() == L"" ); + + iss1.seekg(0); + out1 = copy(beg1, end1, out1); + VERIFY( oss1.str() == str1 ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/2.cc b/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/2.cc new file mode 100644 index 00000000000..1e11a2f9897 --- /dev/null +++ b/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/2.cc @@ -0,0 +1,77 @@ +// 2006-03-20 Paolo Carlini + +// Copyright (C) 2006 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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 library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without Pred 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 library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +#include +#include +#include +#include + +// In the occasion of libstdc++/25482 +void test01() +{ + bool test __attribute__((unused)) = true; + using namespace std; + + typedef istreambuf_iterator in_iterator_type; + + const wchar_t data1[] = L"Drei Phantasien nach Friedrich Holderlin"; + const wstring str1(data1); + wistringstream iss1(str1); + in_iterator_type beg1(iss1); + in_iterator_type end1; + + wchar_t buffer1[sizeof(data1) * 5 / sizeof(wchar_t)]; + wmemset(buffer1, L'*', sizeof(buffer1) / sizeof(wchar_t)); + wchar_t* out1 = buffer1; + + out1 = copy(beg1, beg1, out1); + VERIFY( out1 == buffer1 ); + + out1 = copy(end1, end1, out1); + VERIFY( out1 == buffer1 ); + + out1 = copy(beg1, end1, out1); + VERIFY( wstring(buffer1, out1) == str1 ); + *out1++ = L'x'; + VERIFY( wstring(buffer1, out1) == str1 + L'x' ); + wmemset(buffer1, L'*', sizeof(buffer1) / sizeof(wchar_t)); + + iss1.seekg(0); + out1 = buffer1; + wmemset(buffer1, L'*', sizeof(buffer1) / sizeof(wchar_t)); + out1 = copy(beg1, end1, out1); + VERIFY( wstring(buffer1, out1) == str1 ); + *out1++ = L'y'; + VERIFY( wstring(buffer1, out1) == str1 + L'y' ); + out1 = buffer1; + wmemset(buffer1, L'*', sizeof(buffer1) / sizeof(wchar_t)); + out1 = copy(beg1, end1, out1); + VERIFY( wstring(buffer1, out1) == L"" ); + + iss1.seekg(0); + out1 = copy(beg1, end1, out1); + VERIFY( wstring(buffer1, out1) == str1 ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/3.cc b/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/3.cc new file mode 100644 index 00000000000..8edca408d9a --- /dev/null +++ b/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/3.cc @@ -0,0 +1,72 @@ +// 2006-03-20 Paolo Carlini + +// Copyright (C) 2006 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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 library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without Pred 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 library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +#include +#include +#include +#include + +// In the occasion of libstdc++/25482 +void test01() +{ + bool test __attribute__((unused)) = true; + using namespace std; + + typedef ostreambuf_iterator out_iterator_type; + + const wchar_t data1[] = L"Drei Phantasien nach Friedrich Holderlin"; + const wstring str1(data1); + const wchar_t* beg1 = data1; + const wchar_t* end1 = beg1 + str1.size(); + + wostringstream oss1; + out_iterator_type out1(oss1); + + out1 = copy(beg1, beg1, out1); + VERIFY( oss1.str().empty() ); + + out1 = copy(end1, end1, out1); + VERIFY( oss1.str().empty() ); + + out1 = copy(beg1, end1, out1); + VERIFY( oss1.str() == str1 ); + *out1 = L'x'; + VERIFY( oss1.str() == str1 + L'x' ); + oss1.str(L""); + + oss1.seekp(0); + oss1.str(L""); + out1 = copy(beg1, end1, out1); + VERIFY( oss1.str() == str1 ); + *out1 = L'y'; + VERIFY( oss1.str() == str1 + L'y' ); + oss1.str(L""); + out1 = copy(beg1, end1, out1); + VERIFY( oss1.str() == str1 ); + + out1 = copy(beg1, end1, out1); + VERIFY( oss1.str() == str1 + str1 ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc b/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc new file mode 100644 index 00000000000..96478bb7c6c --- /dev/null +++ b/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc @@ -0,0 +1,56 @@ +// 2006-03-20 Paolo Carlini + +// Copyright (C) 2006 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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 library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without Pred 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 library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +#include +#include +#include +#include + +// In the occasion of libstdc++/25482 +void test01() +{ + bool test __attribute__((unused)) = true; + using namespace std; + + typedef istreambuf_iterator in_iterator_type; + + wifstream fbuf_ref("istream_unformatted-1.txt"), + fbuf("istream_unformatted-1.txt"); + + wchar_t buffer_ref[16500], + buffer[16500]; + + fbuf_ref.read(buffer_ref, 16500); + + in_iterator_type beg(fbuf); + in_iterator_type end; + copy(beg, end, buffer); + + VERIFY( fbuf_ref.good() ); + VERIFY( fbuf.good() ); + + VERIFY( !wmemcmp(buffer, buffer_ref, 16500) ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/1.cc b/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/1.cc new file mode 100644 index 00000000000..33b5ec13b25 --- /dev/null +++ b/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/1.cc @@ -0,0 +1,84 @@ +// 2006-03-20 Paolo Carlini + +// Copyright (C) 2006 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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 library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without Pred 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 library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +#include +#include +#include +#include + +// In the occasion of libstdc++/25482 +void test01() +{ + bool test __attribute__((unused)) = true; + using namespace std; + + typedef istreambuf_iterator in_iterator_type; + + const char data1[] = "Drei Phantasien nach Friedrich Holderlin"; + const string str1(data1); + istringstream iss1(str1); + in_iterator_type beg1(iss1); + in_iterator_type end1, it1; + + it1 = find(beg1, beg1, 'l'); + VERIFY( it1 == beg1 ); + VERIFY( *it1 == 'D' ); + + it1 = find(end1, end1, 'D'); + VERIFY( it1 == end1 ); + + it1 = find(end1, end1, 'Z'); + VERIFY( it1 == end1 ); + + it1 = find(beg1, end1, 'P'); + VERIFY( *it1 == 'P' ); + it1 = find(beg1, end1, 't'); + VERIFY( *it1 == 't' ); + ++it1; + VERIFY( *it1 == 'a' ); + + it1 = find(beg1, end1, 'H'); + VERIFY( *it1 == 'H' ); + it1 = find(beg1, end1, 'l'); + VERIFY( *it1 == 'l' ); + ++it1; + it1 = find(beg1, end1, 'l'); + VERIFY( *it1 == 'l' ); + ++it1; + VERIFY( *it1 == 'i' ); + it1 = find(beg1, end1, 'Z'); + VERIFY( it1 == end1 ); + + it1 = find(beg1, end1, 'D'); + VERIFY( it1 == end1 ); + + iss1.seekg(0); + it1 = find(beg1, end1, 'D'); + VERIFY( it1 != end1 ); + VERIFY( *it1 == 'D' ); + ++it1; + VERIFY( *it1 == 'r' ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc b/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc new file mode 100644 index 00000000000..682c515683e --- /dev/null +++ b/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc @@ -0,0 +1,60 @@ +// 2006-03-20 Paolo Carlini + +// Copyright (C) 2006 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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 library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without Pred 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 library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +#include +#include +#include +#include + +// In the occasion of libstdc++/25482 +void test01() +{ + bool test __attribute__((unused)) = true; + using namespace std; + + typedef istreambuf_iterator in_iterator_type; + + ifstream fbuf("istream_unformatted-1.txt"); + + in_iterator_type beg(fbuf); + in_iterator_type end; + + unsigned found = 0; + for (;;) + { + beg = find(beg, end, '1'); + if (beg == end) + break; + + ++found; + VERIFY( *beg == '1' ); + + for (unsigned sk = 0; sk < 9; sk++) + ++beg; + VERIFY( *beg == '0' ); + } + VERIFY( found == 1500 ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/1.cc b/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/1.cc new file mode 100644 index 00000000000..f8009d57b97 --- /dev/null +++ b/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/1.cc @@ -0,0 +1,84 @@ +// 2006-03-20 Paolo Carlini + +// Copyright (C) 2006 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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 library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without Pred 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 library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +#include +#include +#include +#include + +// In the occasion of libstdc++/25482 +void test01() +{ + bool test __attribute__((unused)) = true; + using namespace std; + + typedef istreambuf_iterator in_iterator_type; + + const wchar_t data1[] = L"Drei Phantasien nach Friedrich Holderlin"; + const wstring str1(data1); + wistringstream iss1(str1); + in_iterator_type beg1(iss1); + in_iterator_type end1, it1; + + it1 = find(beg1, beg1, L'l'); + VERIFY( it1 == beg1 ); + VERIFY( *it1 == L'D' ); + + it1 = find(end1, end1, L'D'); + VERIFY( it1 == end1 ); + + it1 = find(end1, end1, L'Z'); + VERIFY( it1 == end1 ); + + it1 = find(beg1, end1, L'P'); + VERIFY( *it1 == L'P' ); + it1 = find(beg1, end1, L't'); + VERIFY( *it1 == L't' ); + ++it1; + VERIFY( *it1 == L'a' ); + + it1 = find(beg1, end1, L'H'); + VERIFY( *it1 == L'H' ); + it1 = find(beg1, end1, L'l'); + VERIFY( *it1 == L'l' ); + ++it1; + it1 = find(beg1, end1, L'l'); + VERIFY( *it1 == L'l' ); + ++it1; + VERIFY( *it1 == L'i' ); + it1 = find(beg1, end1, L'Z'); + VERIFY( it1 == end1 ); + + it1 = find(beg1, end1, L'D'); + VERIFY( it1 == end1 ); + + iss1.seekg(0); + it1 = find(beg1, end1, L'D'); + VERIFY( it1 != end1 ); + VERIFY( *it1 == L'D' ); + ++it1; + VERIFY( *it1 == L'r' ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc b/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc new file mode 100644 index 00000000000..efcedc12d97 --- /dev/null +++ b/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc @@ -0,0 +1,60 @@ +// 2006-03-20 Paolo Carlini + +// Copyright (C) 2006 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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 library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without Pred 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 library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +#include +#include +#include +#include + +// In the occasion of libstdc++/25482 +void test01() +{ + bool test __attribute__((unused)) = true; + using namespace std; + + typedef istreambuf_iterator in_iterator_type; + + wifstream fbuf("istream_unformatted-1.txt"); + + in_iterator_type beg(fbuf); + in_iterator_type end; + + unsigned found = 0; + for (;;) + { + beg = find(beg, end, L'1'); + if (beg == end) + break; + + ++found; + VERIFY( *beg == L'1' ); + + for (unsigned sk = 0; sk < 9; sk++) + ++beg; + VERIFY( *beg == L'0' ); + } + VERIFY( found == 1500 ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/26777.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/26777.cc new file mode 100644 index 00000000000..7312ce2639f --- /dev/null +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/26777.cc @@ -0,0 +1,86 @@ +// { dg-require-fork "" } +// { dg-require-mkfifo "" } + +// 2006-03-22 Paolo Carlini + +// Copyright (C) 2006 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +#include +#include +#include +#include +#include +#include +#include +#include + +// libstdc++/26777 +void test01() +{ + using namespace std; + using namespace __gnu_test; + + bool test __attribute__((unused)) = true; + + const char* name = "tmp_fifo6"; + + signal(SIGPIPE, SIG_IGN); + + unlink(name); + mkfifo(name, S_IRWXU); + semaphore s1, s2; + + int child = fork(); + VERIFY( child != -1 ); + + if (child == 0) + { + filebuf fbout; + fbout.open(name, ios_base::in | ios_base::out); + VERIFY( fbout.is_open() ); + fbout.sputn("Whatever", 8); + fbout.pubsync(); + s1.signal(); + s2.wait(); + fbout.close(); + s1.signal(); + exit(0); + } + + filebuf fbin; + fbin.open(name, ios::in); + s1.wait(); + + fbin.sgetc(); + fbin.pubseekoff(0, ios::cur, ios::in); + s2.signal(); + s1.wait(); + + ostringstream oss; + oss << &fbin; + fbin.close(); + + VERIFY( oss.str() == "Whatever" ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc index 59ec669915d..ace01a8c69f 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc @@ -1,6 +1,6 @@ // 2001-05-21 Benjamin Kosnik -// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -73,7 +73,7 @@ void test05() strmsz_2 = fb_01.sgetn(carray2, strmsz_1 + 5); VERIFY( strmsz_1 == strmsz_2 - 5 ); c4 = fb_01.sgetc(); // buffer should have underflowed from above. - VERIFY( c4 == 'h' ); + VERIFY( c4 == 'e' ); strmsz_1 = fb_01.in_avail(); VERIFY( strmsz_1 > 0 ); strmsz_2 = fb_01.sgetn(carray2, strmsz_1 + 5); diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc index 12f921adba9..79f0a66b9c6 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc @@ -1,6 +1,6 @@ // 2001-05-21 Benjamin Kosnik -// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -86,7 +86,7 @@ void test05() strmsz_2 = fb_01.sgetn(carray2, strmsz_1 + 5); VERIFY( strmsz_1 == strmsz_2 - 5 ); c4 = fb_01.sgetc(); // buffer should have underflowed from above. - VERIFY( c4 == 'h' ); + VERIFY( c4 == 'e' ); strmsz_1 = fb_01.in_avail(); VERIFY( strmsz_1 > 0 ); strmsz_2 = fb_01.sgetn(carray2, strmsz_1 + 5); diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc index 61f93cdd000..6bc69612221 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc @@ -1,6 +1,6 @@ // 2001-05-21 Benjamin Kosnik -// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -70,11 +70,11 @@ void test05() strmsz_2 = fb_01.sgetn(carray2, 8181 + 5); VERIFY( 8181 == strmsz_2 - 5 ); c4 = fb_01.sgetc(); // buffer should have underflowed from above. - VERIFY( c4 == 'h' ); + VERIFY( c4 == 'e' ); strmsz_1 = fb_01.in_avail(); VERIFY( strmsz_1 > 0 ); strmsz_2 = fb_01.sgetn(carray2, 65 + 5); - VERIFY( 65 == strmsz_2 ); // at the end of the actual file + VERIFY( 70 == strmsz_2 ); // at the end of the actual file VERIFY( fb_01.unbuffered() ); } } diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc index b78f41f08f0..d9b2728bac6 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc @@ -1,6 +1,6 @@ // 2001-05-21 Benjamin Kosnik -// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -82,11 +82,11 @@ void test05() strmsz_2 = fb_01.sgetn(carray2, 8181 + 5); VERIFY( 8181 == strmsz_2 - 5 ); c4 = fb_01.sgetc(); // buffer should have underflowed from above. - VERIFY( c4 == 'h' ); + VERIFY( c4 == 'e' ); strmsz_1 = fb_01.in_avail(); VERIFY( strmsz_1 > 0 ); strmsz_2 = fb_01.sgetn(carray2, 65 + 5); - VERIFY( 65 == strmsz_2 ); //at the end of the actual file + VERIFY( 70 == strmsz_2 ); //at the end of the actual file VERIFY( fb_01.unbuffered() ); } } diff --git a/libstdc++-v3/testsuite/data/filebuf_virtuals-1.tst b/libstdc++-v3/testsuite/data/filebuf_virtuals-1.tst index 57a6dab06ca..774f9bc546d 100644 --- a/libstdc++-v3/testsuite/data/filebuf_virtuals-1.tst +++ b/libstdc++-v3/testsuite/data/filebuf_virtuals-1.tst @@ -2,7 +2,7 @@ // test functionality of basic_filebuf for char_type == char // this is a data file for 27filebuf.cc -// Copyright (C) 1997-1999 Cygnus Solutions +// Copyright (C) 1997-1999 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -17,7 +17,7 @@ // You should have received a copy of the GNU General Public License along // with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, // USA. /mnt/cdrom/sarah_vaughan/sarah_vaughan.allofme diff --git a/libstdc++-v3/testsuite/data/filebuf_virtuals-1.txt b/libstdc++-v3/testsuite/data/filebuf_virtuals-1.txt index 57a6dab06ca..774f9bc546d 100644 --- a/libstdc++-v3/testsuite/data/filebuf_virtuals-1.txt +++ b/libstdc++-v3/testsuite/data/filebuf_virtuals-1.txt @@ -2,7 +2,7 @@ // test functionality of basic_filebuf for char_type == char // this is a data file for 27filebuf.cc -// Copyright (C) 1997-1999 Cygnus Solutions +// Copyright (C) 1997-1999 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -17,7 +17,7 @@ // You should have received a copy of the GNU General Public License along // with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, // USA. /mnt/cdrom/sarah_vaughan/sarah_vaughan.allofme diff --git a/libstdc++-v3/testsuite/data/istream_extractor_other-1.tst b/libstdc++-v3/testsuite/data/istream_extractor_other-1.tst index f96f60ad350..49d5a3be8da 100644 --- a/libstdc++-v3/testsuite/data/istream_extractor_other-1.tst +++ b/libstdc++-v3/testsuite/data/istream_extractor_other-1.tst @@ -1,6 +1,6 @@ // 990811 bkoz -// Copyright (C) 1999 Cygnus Solutions +// Copyright (C) 1999 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License along // with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, // USA. /mnt/cdrom/yabbyyou_jesusdread/disk_2/King Tubby's - Repatriation diff --git a/libstdc++-v3/testsuite/data/istream_extractor_other-1.txt b/libstdc++-v3/testsuite/data/istream_extractor_other-1.txt index f96f60ad350..49d5a3be8da 100644 --- a/libstdc++-v3/testsuite/data/istream_extractor_other-1.txt +++ b/libstdc++-v3/testsuite/data/istream_extractor_other-1.txt @@ -1,6 +1,6 @@ // 990811 bkoz -// Copyright (C) 1999 Cygnus Solutions +// Copyright (C) 1999 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License along // with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, // USA. /mnt/cdrom/yabbyyou_jesusdread/disk_2/King Tubby's - Repatriation diff --git a/libstdc++-v3/testsuite/data/istream_extractor_other-2.tst b/libstdc++-v3/testsuite/data/istream_extractor_other-2.tst index f96f60ad350..49d5a3be8da 100644 --- a/libstdc++-v3/testsuite/data/istream_extractor_other-2.tst +++ b/libstdc++-v3/testsuite/data/istream_extractor_other-2.tst @@ -1,6 +1,6 @@ // 990811 bkoz -// Copyright (C) 1999 Cygnus Solutions +// Copyright (C) 1999 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License along // with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, // USA. /mnt/cdrom/yabbyyou_jesusdread/disk_2/King Tubby's - Repatriation diff --git a/libstdc++-v3/testsuite/data/ostream_inserter_other-1.tst b/libstdc++-v3/testsuite/data/ostream_inserter_other-1.tst index 57a6dab06ca..774f9bc546d 100644 --- a/libstdc++-v3/testsuite/data/ostream_inserter_other-1.tst +++ b/libstdc++-v3/testsuite/data/ostream_inserter_other-1.tst @@ -2,7 +2,7 @@ // test functionality of basic_filebuf for char_type == char // this is a data file for 27filebuf.cc -// Copyright (C) 1997-1999 Cygnus Solutions +// Copyright (C) 1997-1999 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -17,7 +17,7 @@ // You should have received a copy of the GNU General Public License along // with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, // USA. /mnt/cdrom/sarah_vaughan/sarah_vaughan.allofme diff --git a/libstdc++-v3/testsuite/data/ostream_inserter_other-2.tst b/libstdc++-v3/testsuite/data/ostream_inserter_other-2.tst index 57a6dab06ca..774f9bc546d 100644 --- a/libstdc++-v3/testsuite/data/ostream_inserter_other-2.tst +++ b/libstdc++-v3/testsuite/data/ostream_inserter_other-2.tst @@ -2,7 +2,7 @@ // test functionality of basic_filebuf for char_type == char // this is a data file for 27filebuf.cc -// Copyright (C) 1997-1999 Cygnus Solutions +// Copyright (C) 1997-1999 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -17,7 +17,7 @@ // You should have received a copy of the GNU General Public License along // with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, // USA. /mnt/cdrom/sarah_vaughan/sarah_vaughan.allofme diff --git a/libstdc++-v3/testsuite/data/sgetn.txt b/libstdc++-v3/testsuite/data/sgetn.txt index cb3c57f7dfd..774f9bc546d 100644 --- a/libstdc++-v3/testsuite/data/sgetn.txt +++ b/libstdc++-v3/testsuite/data/sgetn.txt @@ -2,7 +2,7 @@ // test functionality of basic_filebuf for char_type == char // this is a data file for 27filebuf.cc -// Copyright (C) 1997-1999 Cygnus Solutions +// Copyright (C) 1997-1999 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the diff --git a/libstdc++-v3/testsuite/data/wistream_extractor_other-1.tst b/libstdc++-v3/testsuite/data/wistream_extractor_other-1.tst index f96f60ad350..49d5a3be8da 100644 --- a/libstdc++-v3/testsuite/data/wistream_extractor_other-1.tst +++ b/libstdc++-v3/testsuite/data/wistream_extractor_other-1.tst @@ -1,6 +1,6 @@ // 990811 bkoz -// Copyright (C) 1999 Cygnus Solutions +// Copyright (C) 1999 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License along // with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, // USA. /mnt/cdrom/yabbyyou_jesusdread/disk_2/King Tubby's - Repatriation diff --git a/libstdc++-v3/testsuite/data/wistream_extractor_other-1.txt b/libstdc++-v3/testsuite/data/wistream_extractor_other-1.txt index f96f60ad350..49d5a3be8da 100644 --- a/libstdc++-v3/testsuite/data/wistream_extractor_other-1.txt +++ b/libstdc++-v3/testsuite/data/wistream_extractor_other-1.txt @@ -1,6 +1,6 @@ // 990811 bkoz -// Copyright (C) 1999 Cygnus Solutions +// Copyright (C) 1999 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License along // with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, // USA. /mnt/cdrom/yabbyyou_jesusdread/disk_2/King Tubby's - Repatriation diff --git a/libstdc++-v3/testsuite/data/wistream_extractor_other-2.tst b/libstdc++-v3/testsuite/data/wistream_extractor_other-2.tst index f96f60ad350..49d5a3be8da 100644 --- a/libstdc++-v3/testsuite/data/wistream_extractor_other-2.tst +++ b/libstdc++-v3/testsuite/data/wistream_extractor_other-2.tst @@ -1,6 +1,6 @@ // 990811 bkoz -// Copyright (C) 1999 Cygnus Solutions +// Copyright (C) 1999 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License along // with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, // USA. /mnt/cdrom/yabbyyou_jesusdread/disk_2/King Tubby's - Repatriation diff --git a/libstdc++-v3/testsuite/data/wostream_inserter_other-1.tst b/libstdc++-v3/testsuite/data/wostream_inserter_other-1.tst index 57a6dab06ca..774f9bc546d 100644 --- a/libstdc++-v3/testsuite/data/wostream_inserter_other-1.tst +++ b/libstdc++-v3/testsuite/data/wostream_inserter_other-1.tst @@ -2,7 +2,7 @@ // test functionality of basic_filebuf for char_type == char // this is a data file for 27filebuf.cc -// Copyright (C) 1997-1999 Cygnus Solutions +// Copyright (C) 1997-1999 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -17,7 +17,7 @@ // You should have received a copy of the GNU General Public License along // with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, // USA. /mnt/cdrom/sarah_vaughan/sarah_vaughan.allofme diff --git a/libstdc++-v3/testsuite/data/wostream_inserter_other-2.tst b/libstdc++-v3/testsuite/data/wostream_inserter_other-2.tst index 57a6dab06ca..774f9bc546d 100644 --- a/libstdc++-v3/testsuite/data/wostream_inserter_other-2.tst +++ b/libstdc++-v3/testsuite/data/wostream_inserter_other-2.tst @@ -2,7 +2,7 @@ // test functionality of basic_filebuf for char_type == char // this is a data file for 27filebuf.cc -// Copyright (C) 1997-1999 Cygnus Solutions +// Copyright (C) 1997-1999 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -17,7 +17,7 @@ // You should have received a copy of the GNU General Public License along // with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, // USA. /mnt/cdrom/sarah_vaughan/sarah_vaughan.allofme diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp index f93dc6efc8f..ab364191d68 100644 --- a/libstdc++-v3/testsuite/lib/libstdc++.exp +++ b/libstdc++-v3/testsuite/lib/libstdc++.exp @@ -193,17 +193,12 @@ proc libstdc++_init { testfile } { set includes "-I${srcdir}" set cxxldflags "" set cxxflags "-g -O2 -D_GLIBCXX_ASSERT -fmessage-length=0" - # Guess at the location of the installed locale files. - # (It would be nice if "gcc --print-file-name" could find - # message files, but it cannot.) - set absolute_cxx [which $cxx] - if { $absolute_cxx != "" } { - set localedir "[file dirname $absolute_cxx]/../share/locale" - } - set cxxflags "$cxxflags -DLOCALEDIR=\"$localedir\"" } } + # Always use MO files built by this test harness. + set cxxflags "$cxxflags -DLOCALEDIR=\".\"" + # If a PCH file is available, use it. We must delay performing # this check until $cxx and such have been initialized because we # perform a test compilation. (Ideally, gcc --print-file-name would @@ -395,6 +390,20 @@ proc v3-build_support { } { set v3-threads 1 } + # Try to build the MO files that are used by some of the locale + # tests. If we can't build them, that's OK; it just means that + # those tests will fail. + foreach lang [list "fr" "de"] { + catch { + file mkdir "$lang/LC_MESSAGES" + remote_exec "build" "msgfmt" "-o $lang/LC_MESSAGES/libstdc++.mo $srcdir/../po/$lang.po" + if [is_remote host] { + remote_exec "host" "mkdir" "-p $lang/LC_MESSAGES" + remote_download "host" "$lang/LC_MESSAGES/libstdc++.mo" "$lang/LC_MESSAGES/libstdc++.mo" + } + } + } + # Build the support objects. set source_files \ [list testsuite_abi.cc testsuite_allocator.cc testsuite_character.cc testsuite_hooks.cc ] diff --git a/libstdc++-v3/testsuite/performance/25_algorithms/copy_streambuf_iterators.cc b/libstdc++-v3/testsuite/performance/25_algorithms/copy_streambuf_iterators.cc new file mode 100644 index 00000000000..c9eee8780ef --- /dev/null +++ b/libstdc++-v3/testsuite/performance/25_algorithms/copy_streambuf_iterators.cc @@ -0,0 +1,107 @@ +// Copyright (C) 2006 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +#include +#include +#include +#include + +// libstdc++/25482 +int main() +{ + using namespace std; + using namespace __gnu_test; + + typedef istreambuf_iterator in_iterator_type; + typedef ostreambuf_iterator out_iterator_type; + + time_counter time; + resource_counter resource; + + const char data[] = "Contrappunto dialettico alla mente"; + + // istreambuf iterators -> ostreambuf iterator + { + istringstream iss(data); + in_iterator_type beg(iss); + in_iterator_type end; + + ostringstream oss; + out_iterator_type out(oss); + + start_counters(time, resource); + for (unsigned i = 0; i < 10000000; ++i) + { + copy(beg, end, out); + iss.seekg(0); + oss.seekp(0); + } + stop_counters(time, resource); + report_performance(__FILE__, "isb iters -> osb iter", time, resource); + clear_counters(time, resource); + } + + // char array -> ostreambuf iterator + { + const char* beg = data; + const char* end = data + sizeof(data) - 1; + + ostringstream oss; + out_iterator_type out(oss); + + start_counters(time, resource); + for (unsigned i = 0; i < 10000000; ++i) + { + copy(beg, end, out); + oss.seekp(0); + } + stop_counters(time, resource); + report_performance(__FILE__, "pointers -> osb iter", time, resource); + clear_counters(time, resource); + } + + // istreambuf iterators -> char array + { + istringstream iss(data); + in_iterator_type beg(iss); + in_iterator_type end; + + char out[sizeof(data)]; + + start_counters(time, resource); + for (unsigned i = 0; i < 10000000; ++i) + { + copy(beg, end, out); + iss.seekg(0); + } + stop_counters(time, resource); + report_performance(__FILE__, "isb iters -> pointer", time, resource); + clear_counters(time, resource); + } + + return 0; +} diff --git a/libstdc++-v3/testsuite/performance/25_algorithms/find_istreambuf_iterators.cc b/libstdc++-v3/testsuite/performance/25_algorithms/find_istreambuf_iterators.cc new file mode 100644 index 00000000000..7c2d54786a9 --- /dev/null +++ b/libstdc++-v3/testsuite/performance/25_algorithms/find_istreambuf_iterators.cc @@ -0,0 +1,63 @@ +// Copyright (C) 2006 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +#include +#include +#include +#include + +// libstdc++/25482 +int main() +{ + using namespace std; + using namespace __gnu_test; + + typedef istreambuf_iterator in_iterator_type; + + istringstream iss("a0000b1111c2222d3333e4444f5555g6666h7777i8888j9999" + "k0000l1111m2222n3333o4444p5555q6666r7777s8888t9999"); + + in_iterator_type beg(iss); + in_iterator_type end; + + time_counter time; + resource_counter resource; + + start_counters(time, resource); + for (unsigned i = 0; i < 1000000; ++i) + { + for (char c = 'a'; c < 'u'; ++c) + { + find(beg, end, c); + iss.seekg(0); + } + } + stop_counters(time, resource); + report_performance(__FILE__, "", time, resource); + + return 0; +} -- 2.11.4.GIT