summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2013-02-08 15:26:55 +0000
committerbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2013-02-08 15:26:55 +0000
commit2fffb07a72d0755a559b08cfa30eb12d277daec1 (patch)
tree20d56621348a3b110462868858912c7fa9c996f0
parent00d899d593b3ee0b57d64166bcbdb2c34bc40f0d (diff)
downloadgcc-2fffb07a72d0755a559b08cfa30eb12d277daec1.tar.gz
2013-02-08 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 195888 using svnmerge.py git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@195892 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--ChangeLog.MELT4
-rwxr-xr-xconfigure17
-rw-r--r--configure.ac17
-rw-r--r--contrib/ChangeLog23
-rwxr-xr-xcontrib/testsuite-management/validate_failures.py31
-rw-r--r--contrib/update-copyright.py3
-rw-r--r--gcc/ChangeLog266
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/Makefile.in2
-rw-r--r--gcc/ada/ChangeLog396
-rw-r--r--gcc/ada/adaint.c14
-rw-r--r--gcc/ada/checks.adb20
-rw-r--r--gcc/ada/clean.adb15
-rw-r--r--gcc/ada/comperr.ads3
-rw-r--r--gcc/ada/einfo.adb16
-rw-r--r--gcc/ada/einfo.ads23
-rw-r--r--gcc/ada/erroutc.adb18
-rw-r--r--gcc/ada/exp_attr.adb4
-rw-r--r--gcc/ada/exp_ch4.adb389
-rw-r--r--gcc/ada/exp_ch5.adb16
-rw-r--r--gcc/ada/exp_ch6.adb58
-rw-r--r--gcc/ada/exp_disp.adb15
-rw-r--r--gcc/ada/exp_dist.adb4
-rw-r--r--gcc/ada/exp_intr.adb4
-rw-r--r--gcc/ada/exp_prag.adb64
-rw-r--r--gcc/ada/exp_util.adb37
-rw-r--r--gcc/ada/exp_util.ads5
-rw-r--r--gcc/ada/gcc-interface/Make-lang.in2175
-rw-r--r--gcc/ada/gcc-interface/Makefile.in15
-rw-r--r--gcc/ada/gcc-interface/ada-tree.h8
-rw-r--r--gcc/ada/gnat_rm.texi192
-rw-r--r--gcc/ada/gnat_ugn.texi29
-rw-r--r--gcc/ada/init.c52
-rw-r--r--gcc/ada/initialize.c6
-rw-r--r--gcc/ada/make.adb3
-rw-r--r--gcc/ada/makeutl.adb202
-rw-r--r--gcc/ada/opt.ads5
-rw-r--r--gcc/ada/osint.ads3
-rw-r--r--gcc/ada/par-prag.adb6
-rw-r--r--gcc/ada/prj-conf.adb186
-rw-r--r--gcc/ada/prj-conf.ads9
-rw-r--r--gcc/ada/prj-proc.adb10
-rw-r--r--gcc/ada/raise-gcc.c20
-rw-r--r--gcc/ada/rtsfind.adb3
-rw-r--r--gcc/ada/s-dim.ads2
-rw-r--r--gcc/ada/s-multip.adb16
-rw-r--r--gcc/ada/s-os_lib.adb8
-rw-r--r--gcc/ada/s-osprim-mingw.adb171
-rw-r--r--gcc/ada/s-tasloc.ads4
-rw-r--r--gcc/ada/seh_init.c2
-rw-r--r--gcc/ada/sem_attr.adb14
-rw-r--r--gcc/ada/sem_ch10.adb9
-rw-r--r--gcc/ada/sem_ch12.adb32
-rw-r--r--gcc/ada/sem_ch13.adb100
-rw-r--r--gcc/ada/sem_ch3.adb66
-rw-r--r--gcc/ada/sem_ch6.adb40
-rw-r--r--gcc/ada/sem_ch8.adb35
-rw-r--r--gcc/ada/sem_prag.adb216
-rw-r--r--gcc/ada/sem_res.adb42
-rw-r--r--gcc/ada/sem_util.adb81
-rw-r--r--gcc/ada/snames.ads-tmpl14
-rw-r--r--gcc/ada/sprint.adb4
-rw-r--r--gcc/ada/targparm.ads7
-rw-r--r--gcc/ada/ug_words1
-rw-r--r--gcc/cfgloop.c256
-rw-r--r--gcc/cfgloop.h3
-rw-r--r--gcc/cfgloopmanip.c156
-rw-r--r--gcc/cfgrtl.c12
-rw-r--r--gcc/collect2.c28
-rw-r--r--gcc/config/avr/avr-c.c218
-rw-r--r--gcc/config/avr/avr-fixed.md138
-rw-r--r--gcc/config/avr/avr.c204
-rw-r--r--gcc/config/avr/avr.md1
-rw-r--r--gcc/config/avr/builtins.def115
-rw-r--r--gcc/config/avr/stdfix.h477
-rw-r--r--gcc/config/gnu-user.h10
-rw-r--r--gcc/config/gnu.h2
-rw-r--r--gcc/config/i386/i386.c8
-rw-r--r--gcc/config/rs6000/rs6000.c110
-rw-r--r--gcc/config/rs6000/rs6000.md19
-rw-r--r--gcc/cp/ChangeLog46
-rw-r--r--gcc/cp/decl.c3
-rw-r--r--gcc/cp/init.c39
-rw-r--r--gcc/cp/method.c8
-rw-r--r--gcc/cp/parser.c14
-rw-r--r--gcc/cp/pt.c6
-rw-r--r--gcc/cp/tree.c4
-rw-r--r--gcc/cse.c40
-rw-r--r--gcc/doc/install.texi6
-rw-r--r--gcc/dwarf2out.c114
-rw-r--r--gcc/fixed-value.c10
-rw-r--r--gcc/fixed-value.h4
-rw-r--r--gcc/fold-const.c5
-rw-r--r--gcc/fortran/ChangeLog16
-rw-r--r--gcc/fortran/gfortran.texi125
-rw-r--r--gcc/fortran/trans-array.c3
-rw-r--r--gcc/fwprop.c14
-rw-r--r--gcc/gcc.c43
-rw-r--r--gcc/ggc-page.c20
-rw-r--r--gcc/ipa-pure-const.c9
-rw-r--r--gcc/ira-build.c24
-rw-r--r--gcc/ira-emit.c2
-rw-r--r--gcc/ira-int.h3
-rw-r--r--gcc/ira.c24
-rw-r--r--gcc/loop-init.c155
-rw-r--r--gcc/lra-constraints.c17
-rw-r--r--gcc/lto-streamer-in.c45
-rw-r--r--gcc/lto-streamer-out.c5
-rw-r--r--gcc/lto-streamer.h4
-rw-r--r--gcc/lto/ChangeLog11
-rw-r--r--gcc/lto/lto-lang.c3
-rw-r--r--gcc/lto/lto.c3
-rw-r--r--gcc/omp-low.c15
-rw-r--r--gcc/testsuite/ChangeLog115
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle61.C28
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this7.C11
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae43.C31
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/auto-fn14.C5
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/thunk1.C6
-rw-r--r--gcc/testsuite/g++.dg/gomp/pr56217.C14
-rw-r--r--gcc/testsuite/g++.dg/init/bitfield4.C24
-rw-r--r--gcc/testsuite/g++.dg/ipa/inline-1.C6
-rw-r--r--gcc/testsuite/g++.dg/ipa/inline-3.C2
-rw-r--r--gcc/testsuite/g++.dg/parse/crash61.C6
-rw-r--r--gcc/testsuite/g++.dg/parse/enum10.C2
-rw-r--r--gcc/testsuite/g++.dg/parse/pr56239.C13
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/inline-3.C2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr56205.c61
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr56250.c13
-rw-r--r--gcc/testsuite/gcc.dg/fixed-point/view-convert-2.c139
-rw-r--r--gcc/testsuite/gcc.dg/guality/pr56154-1.c29
-rw-r--r--gcc/testsuite/gcc.dg/guality/pr56154-2.c39
-rw-r--r--gcc/testsuite/gcc.dg/guality/pr56154-3.c31
-rw-r--r--gcc/testsuite/gcc.dg/guality/pr56154-4.c34
-rw-r--r--gcc/testsuite/gcc.dg/guality/pr56154-aux.c11
-rw-r--r--gcc/testsuite/gcc.dg/pr52448.c30
-rw-r--r--gcc/testsuite/gcc.dg/pr56228.c16
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr56181.c25
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/inline-3.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/stdarg-6.c35
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr53185-2.c27
-rw-r--r--gcc/testsuite/gcc.target/avr/torture/builtins-4-roundfx.c161
-rw-r--r--gcc/testsuite/gcc.target/avr/torture/builtins-5-countlsfx.c82
-rw-r--r--gcc/testsuite/gcc.target/i386/pr56225.c12
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr54009.c43
-rw-r--r--gcc/testsuite/gfortran.dg/array_constructor_41.f9033
-rw-r--r--gcc/testsuite/gfortran.dg/class_optional_2.f906
-rw-r--r--gcc/testsuite/gfortran.dg/pr54131.f23
-rw-r--r--gcc/tracer.c4
-rw-r--r--gcc/tree-ssa-phiopt.c57
-rw-r--r--gcc/tree-stdarg.c31
-rw-r--r--gcc/tree-tailcall.c8
-rw-r--r--gcc/tree-vect-data-refs.c24
-rw-r--r--gcc/tree-vect-stmts.c45
-rw-r--r--gcc/tree-vectorizer.h1
-rw-r--r--gcc/tree.h7
-rw-r--r--gcc/var-tracking.c45
-rw-r--r--libcpp/po/ChangeLog4
-rw-r--r--libcpp/po/eo.po955
-rw-r--r--libdecnumber/ChangeLog4
-rw-r--r--libdecnumber/Makefile.in3
-rw-r--r--libdecnumber/bid/bid-dpd.h3
-rw-r--r--libdecnumber/bid/bid2dpd_dpd2bid.c2
-rw-r--r--libdecnumber/bid/bid2dpd_dpd2bid.h2
-rw-r--r--libdecnumber/bid/decimal128.c3
-rw-r--r--libdecnumber/bid/decimal32.c3
-rw-r--r--libdecnumber/bid/decimal64.c3
-rw-r--r--libdecnumber/bid/host-ieee128.c2
-rw-r--r--libdecnumber/bid/host-ieee32.c2
-rw-r--r--libdecnumber/bid/host-ieee64.c2
-rw-r--r--libdecnumber/configure.ac2
-rw-r--r--libdecnumber/dconfig.h2
-rw-r--r--libdecnumber/decBasic.c2
-rw-r--r--libdecnumber/decCommon.c2
-rw-r--r--libdecnumber/decContext.c2
-rw-r--r--libdecnumber/decContext.h2
-rw-r--r--libdecnumber/decDPD.h2
-rw-r--r--libdecnumber/decDouble.c2
-rw-r--r--libdecnumber/decDouble.h2
-rw-r--r--libdecnumber/decExcept.c2
-rw-r--r--libdecnumber/decExcept.h2
-rw-r--r--libdecnumber/decLibrary.c2
-rw-r--r--libdecnumber/decNumber.c2
-rw-r--r--libdecnumber/decNumber.h2
-rw-r--r--libdecnumber/decNumberLocal.h2
-rw-r--r--libdecnumber/decPacked.c2
-rw-r--r--libdecnumber/decPacked.h2
-rw-r--r--libdecnumber/decQuad.c2
-rw-r--r--libdecnumber/decQuad.h2
-rw-r--r--libdecnumber/decRound.c2
-rw-r--r--libdecnumber/decRound.h2
-rw-r--r--libdecnumber/decSingle.c2
-rw-r--r--libdecnumber/decSingle.h2
-rw-r--r--libdecnumber/dpd/decimal128.c2
-rw-r--r--libdecnumber/dpd/decimal128.h2
-rw-r--r--libdecnumber/dpd/decimal128Local.h2
-rw-r--r--libdecnumber/dpd/decimal32.c2
-rw-r--r--libdecnumber/dpd/decimal32.h2
-rw-r--r--libdecnumber/dpd/decimal64.c2
-rw-r--r--libdecnumber/dpd/decimal64.h2
-rw-r--r--libffi/ChangeLog5
-rw-r--r--libffi/src/powerpc/ffi.c2
-rw-r--r--libgcc/ChangeLog14
-rw-r--r--libgcc/config/avr/lib1funcs-fixed.S528
-rw-r--r--libgcc/config/avr/lib1funcs.S4
-rw-r--r--libgcc/config/avr/lib2-object.mk23
-rw-r--r--libgcc/config/avr/lib2funcs.c226
-rw-r--r--libgcc/config/avr/t-avr94
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/runtime/in_pack_generic.c3
-rw-r--r--libgo/Makefile.am8
-rw-r--r--libgo/Makefile.in5
-rwxr-xr-xlibgo/configure30
-rw-r--r--libgo/configure.ac11
-rw-r--r--libgo/go/crypto/md5/md5block.go14
-rw-r--r--libgo/go/net/fd_bsd.go3
-rw-r--r--libgo/go/net/fd_linux.go3
-rw-r--r--libgo/go/net/fd_select.go23
-rw-r--r--libgo/go/net/fd_unix.go12
-rw-r--r--libgo/go/net/multicast_posix_test.go2
-rw-r--r--libgo/runtime/goc2c.c2
-rw-r--r--libgo/runtime/mheap.c2
-rw-r--r--libgo/testsuite/Makefile.in1
-rw-r--r--libgomp/ChangeLog5
-rw-r--r--libgomp/testsuite/libgomp.c++/pr56217.C36
-rw-r--r--libquadmath/ChangeLog4
-rw-r--r--libquadmath/math/cacoshq.c2
-rw-r--r--libquadmath/math/cacosq.c2
-rw-r--r--libquadmath/math/casinhq.c2
-rw-r--r--libquadmath/math/casinq.c2
-rw-r--r--libquadmath/math/catanhq.c2
-rw-r--r--libquadmath/math/catanq.c2
-rw-r--r--libquadmath/math/ccoshq.c2
-rw-r--r--libquadmath/math/cexpq.c2
-rw-r--r--libquadmath/math/cimagq.c2
-rw-r--r--libquadmath/math/clog10q.c2
-rw-r--r--libquadmath/math/clogq.c2
-rw-r--r--libquadmath/math/complex.c2
-rw-r--r--libquadmath/math/conjq.c2
-rw-r--r--libquadmath/math/cosq_kernel.c2
-rw-r--r--libquadmath/math/cprojq.c2
-rw-r--r--libquadmath/math/crealq.c2
-rw-r--r--libquadmath/math/csinhq.c2
-rw-r--r--libquadmath/math/csinq.c2
-rw-r--r--libquadmath/math/csqrtq.c2
-rw-r--r--libquadmath/math/ctanhq.c2
-rw-r--r--libquadmath/math/ctanq.c2
-rw-r--r--libquadmath/math/expq.c2
-rw-r--r--libquadmath/math/fdimq.c2
-rw-r--r--libquadmath/math/fmaq.c2
-rw-r--r--libquadmath/math/fmaxq.c2
-rw-r--r--libquadmath/math/fminq.c2
-rw-r--r--libquadmath/math/llrintq.c2
-rw-r--r--libquadmath/math/llroundq.c2
-rw-r--r--libquadmath/math/lrintq.c2
-rw-r--r--libquadmath/math/lroundq.c2
-rw-r--r--libquadmath/math/rem_pio2q.c2
-rw-r--r--libquadmath/math/remquoq.c2
-rw-r--r--libquadmath/math/roundq.c2
-rw-r--r--libquadmath/math/sincos_table.c2
-rw-r--r--libquadmath/math/sincosq.c2
-rw-r--r--libquadmath/math/sincosq_kernel.c2
-rw-r--r--libquadmath/math/sinq_kernel.c2
-rw-r--r--libquadmath/math/tgammaq.c2
-rw-r--r--libquadmath/math/truncq.c2
-rw-r--r--libquadmath/math/x2y2m1q.c2
-rw-r--r--libquadmath/printf/_i18n_number.h2
-rw-r--r--libquadmath/printf/_itoa.h2
-rw-r--r--libquadmath/printf/_itowa.h2
-rw-r--r--libquadmath/printf/add_n.c2
-rw-r--r--libquadmath/printf/addmul_1.c2
-rw-r--r--libquadmath/printf/cmp.c2
-rw-r--r--libquadmath/printf/divrem.c2
-rw-r--r--libquadmath/printf/flt1282mpn.c3
-rw-r--r--libquadmath/printf/fpioconst.c3
-rw-r--r--libquadmath/printf/fpioconst.h3
-rw-r--r--libquadmath/printf/gmp-impl.h2
-rw-r--r--libquadmath/printf/lshift.c2
-rw-r--r--libquadmath/printf/mul.c2
-rw-r--r--libquadmath/printf/mul_1.c2
-rw-r--r--libquadmath/printf/mul_n.c2
-rw-r--r--libquadmath/printf/printf_fp.c2
-rw-r--r--libquadmath/printf/printf_fphex.c2
-rw-r--r--libquadmath/printf/quadmath-printf.c2
-rw-r--r--libquadmath/printf/quadmath-printf.h2
-rw-r--r--libquadmath/printf/rshift.c2
-rw-r--r--libquadmath/printf/sub_n.c2
-rw-r--r--libquadmath/printf/submul_1.c2
-rw-r--r--libquadmath/quadmath-imp.h2
-rw-r--r--libquadmath/quadmath-rounding-mode.h2
-rw-r--r--libquadmath/quadmath.h2
-rw-r--r--libquadmath/quadmath_weak.h2
-rw-r--r--libquadmath/strtod/grouping.h2
-rw-r--r--libquadmath/strtod/mpn2flt128.c3
-rw-r--r--libquadmath/strtod/strtod_l.c2
-rw-r--r--libquadmath/strtod/strtoflt128.c2
-rw-r--r--libssp/ChangeLog4
-rw-r--r--libssp/Makefile.am3
-rw-r--r--libssp/gets-chk.c2
-rw-r--r--libssp/memcpy-chk.c2
-rw-r--r--libssp/memmove-chk.c2
-rw-r--r--libssp/mempcpy-chk.c2
-rw-r--r--libssp/memset-chk.c2
-rw-r--r--libssp/snprintf-chk.c2
-rw-r--r--libssp/sprintf-chk.c2
-rw-r--r--libssp/ssp-local.c2
-rw-r--r--libssp/ssp.c2
-rw-r--r--libssp/ssp/ssp.h.in2
-rw-r--r--libssp/ssp/stdio.h2
-rw-r--r--libssp/ssp/string.h2
-rw-r--r--libssp/ssp/unistd.h2
-rw-r--r--libssp/stpcpy-chk.c2
-rw-r--r--libssp/strcat-chk.c2
-rw-r--r--libssp/strcpy-chk.c2
-rw-r--r--libssp/strncat-chk.c2
-rw-r--r--libssp/strncpy-chk.c2
-rw-r--r--libssp/vsnprintf-chk.c2
-rw-r--r--libssp/vsprintf-chk.c2
-rw-r--r--libstdc++-v3/ChangeLog37
-rw-r--r--libstdc++-v3/include/bits/basic_ios.h5
-rw-r--r--libstdc++-v3/include/tr1/bessel_function.tcc37
-rw-r--r--libstdc++-v3/include/tr1/ell_integral.tcc24
-rw-r--r--libstdc++-v3/include/tr1/exp_integral.tcc28
-rw-r--r--libstdc++-v3/include/tr1/gamma.tcc35
-rw-r--r--libstdc++-v3/include/tr1/hypergeometric.tcc21
-rw-r--r--libstdc++-v3/include/tr1/legendre_function.tcc8
-rw-r--r--libstdc++-v3/include/tr1/modified_bessel_func.tcc17
-rw-r--r--libstdc++-v3/include/tr1/poly_hermite.tcc4
-rw-r--r--libstdc++-v3/include/tr1/poly_laguerre.tcc27
-rw-r--r--libstdc++-v3/include/tr1/riemann_zeta.tcc18
-rw-r--r--libstdc++-v3/include/tr1/special_function_util.h22
-rw-r--r--libstdc++-v3/src/c++11/hashtable_c++0x.cc7
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ios/pr56193.cc31
-rw-r--r--libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/pr56216.cc47
334 files changed, 8778 insertions, 3085 deletions
diff --git a/ChangeLog.MELT b/ChangeLog.MELT
index 5f120fb43a2..f82a5174179 100644
--- a/ChangeLog.MELT
+++ b/ChangeLog.MELT
@@ -1,4 +1,8 @@
+2013-02-08 Basile Starynkevitch <basile@starynkevitch.net>
+
+ MELT branch merged with trunk rev 195888 using svnmerge.py
+
2013-02-05 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 195751 using svnmerge.py
diff --git a/configure b/configure
index e669aa0ef2e..caa34cae8f2 100755
--- a/configure
+++ b/configure
@@ -3413,6 +3413,23 @@ case "${target}" in
;;
esac
+# Disable libgo for some systems where it is known to not work.
+# For testing, you can easily override this with --enable-libgo.
+if test x$enable_libgo = x; then
+ case "${target}" in
+ *-*-darwin*)
+ # PR 46986
+ noconfigdirs="$noconfigdirs target-libgo"
+ ;;
+ *-*-cygwin* | *-*-mingw*)
+ noconfigdirs="$noconfigdirs target-libgo"
+ ;;
+ *-*-aix*)
+ noconfigdirs="$noconfigdirs target-libgo"
+ ;;
+ esac
+fi
+
# Default libgloss CPU subdirectory.
libgloss_dir="$target_cpu"
diff --git a/configure.ac b/configure.ac
index 739cdc786cc..f2be8abcc19 100644
--- a/configure.ac
+++ b/configure.ac
@@ -752,6 +752,23 @@ case "${target}" in
;;
esac
+# Disable libgo for some systems where it is known to not work.
+# For testing, you can easily override this with --enable-libgo.
+if test x$enable_libgo = x; then
+ case "${target}" in
+ *-*-darwin*)
+ # PR 46986
+ noconfigdirs="$noconfigdirs target-libgo"
+ ;;
+ *-*-cygwin* | *-*-mingw*)
+ noconfigdirs="$noconfigdirs target-libgo"
+ ;;
+ *-*-aix*)
+ noconfigdirs="$noconfigdirs target-libgo"
+ ;;
+ esac
+fi
+
# Default libgloss CPU subdirectory.
libgloss_dir="$target_cpu"
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index eaccdbdeee9..82abb602c8d 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,26 @@
+2013-02-06 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * update-copyright.py: Add libdecnumber to the default list.
+ Remove libquadmath and libssp.
+
+2013-02-06 Diego Novillo <dnovillo@google.com>
+
+ * testsuite-management/validate_failures.py: Fix typo.
+
+2013-02-06 Diego Novillo <dnovillo@google.com>
+
+ * testsuite-management/validate_failures.py: Update
+ Copyright years.
+ Request contributions not to use Python features newer
+ than 2.4.
+ (GetBuildData): If this is not a build directory,
+ emit an error only if --results or --manifest are missing.
+
+2013-02-06 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
+
+ * testsuite-management/validate_failures.py
+ (IsInterestingResult): Fix performance regression
+
2013-02-04 Richard Sandiford <rdsandiford@googlemail.com>
* update-copyright.py: New file.
diff --git a/contrib/testsuite-management/validate_failures.py b/contrib/testsuite-management/validate_failures.py
index ec51de91b6b..74dbcfb035c 100755
--- a/contrib/testsuite-management/validate_failures.py
+++ b/contrib/testsuite-management/validate_failures.py
@@ -2,10 +2,14 @@
# Script to compare testsuite failures against a list of known-to-fail
# tests.
+#
+# NOTE: This script is used in installations that are running Python 2.4.
+# Please stick to syntax features available in 2.4 and earlier
+# versions.
# Contributed by Diego Novillo <dnovillo@google.com>
#
-# Copyright (C) 2011, 2012 Free Software Foundation, Inc.
+# Copyright (C) 2011-2013 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
@@ -62,6 +66,7 @@ import sys
# Handled test results.
_VALID_TEST_RESULTS = [ 'FAIL', 'UNRESOLVED', 'XPASS', 'ERROR' ]
+_VALID_TEST_RESULTS_REX = re.compile("%s" % "|".join(_VALID_TEST_RESULTS))
# Subdirectory of srcdir in which to find the manifest file.
_MANIFEST_SUBDIR = 'contrib/testsuite-management'
@@ -77,7 +82,7 @@ _MANIFEST_PATH_PATTERN = '%s/%s/%s.xfail'
_OPTIONS = None
def Error(msg):
- print >>sys.stderr, '\nerror: %s' % msg
+ print >>sys.stderr, 'error: %s' % msg
sys.exit(1)
@@ -210,7 +215,7 @@ def IsInterestingResult(line):
if '|' in line:
(_, line) = line.split('|', 1)
line = line.strip()
- return any(line.startswith(result) for result in _VALID_TEST_RESULTS)
+ return bool(_VALID_TEST_RESULTS_REX.match(line))
def IsInclude(line):
@@ -357,15 +362,24 @@ def GetManifestPath(srcdir, target, user_provided_must_exist):
Error('Manifest does not exist: %s' % manifest_path)
return manifest_path
else:
+ assert srcdir and target
return _MANIFEST_PATH_PATTERN % (srcdir, _MANIFEST_SUBDIR, target)
def GetBuildData():
- target = GetMakefileValue('%s/Makefile' % _OPTIONS.build_dir, 'target_alias=')
srcdir = GetMakefileValue('%s/Makefile' % _OPTIONS.build_dir, 'srcdir =')
+ target = GetMakefileValue('%s/Makefile' % _OPTIONS.build_dir, 'target_alias=')
if not ValidBuildDirectory(_OPTIONS.build_dir, target):
- Error('%s is not a valid GCC top level build directory.' %
- _OPTIONS.build_dir)
+ # If we have been given a set of results to use, we may
+ # not be inside a valid GCC build directory. In that case,
+ # the user must provide both a manifest file and a set
+ # of results to check against it.
+ if not _OPTIONS.results or not _OPTIONS.manifest:
+ Error('%s is not a valid GCC top level build directory. '
+ 'You must use --manifest and --results to do the validation.' %
+ _OPTIONS.build_dir)
+ else:
+ return None, None
print 'Source directory: %s' % srcdir
print 'Build target: %s' % target
return srcdir, target
@@ -409,7 +423,7 @@ def PerformComparison(expected, actual, ignore_missing_failures):
def CheckExpectedResults():
- (srcdir, target) = GetBuildData()
+ srcdir, target = GetBuildData()
manifest_path = GetManifestPath(srcdir, target, True)
print 'Manifest: %s' % manifest_path
manifest = GetManifest(manifest_path)
@@ -484,7 +498,8 @@ def Main(argv):
parser.add_option('--manifest', action='store', type='string',
dest='manifest', default=None,
help='Name of the manifest file to use (default = '
- 'taken from contrib/testsuite-managment/<target_alias>.xfail)')
+ 'taken from '
+ 'contrib/testsuite-managment/<target_alias>.xfail)')
parser.add_option('--produce_manifest', action='store_true',
dest='produce_manifest', default=False,
help='Produce the manifest for the current '
diff --git a/contrib/update-copyright.py b/contrib/update-copyright.py
index db468724703..42d0bfbf2a3 100644
--- a/contrib/update-copyright.py
+++ b/contrib/update-copyright.py
@@ -752,14 +752,13 @@ class GCCCmdLine (CmdLine):
'libatomic',
'libbacktrace',
'libcpp',
+ 'libdecnumber',
'libgcc',
'libgfortran',
'libgomp',
'libitm',
'libmudflap',
'libobjc',
- 'libquadmath',
- 'libssp',
'libstdc++-v3',
]
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8c480bb0e9f..4c6bfba8321 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,247 @@
+2013-02-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56250
+ * fold-const.c (extract_muldiv_1) <case NEGATE_EXPR>: Don't optimize
+ if type is unsigned and code isn't MULT_EXPR.
+
+2013-02-08 Georg-Johann Lay <avr@gjlay.de>
+
+ PR tree-optimization/56064
+ * fixed-value.c (fixed_from_double_int): Sign/zero extend payload
+ bits according to mode.
+ * fixed-value.h (fixed_from_double_int)
+ (const_fixed_from_double_int): Adjust comments.
+
+2013-02-08 Richard Biener <rguenther@suse.de>
+
+ PR lto/56231
+ * lto-streamer.h (struct data_in): Remove current_file, current_line
+ and current_col members.
+ * lto-streamer-out.c (lto_output_location): Stream changed bits
+ en-block for efficiency.
+ * lto-streamer-in.c (clear_line_info): Remove.
+ (lto_input_location): Cache current file, line and column
+ globally via local statics. Read changed bits en-block.
+ (input_function): Do not call clear_line_info.
+ (lto_read_body): Likewise.
+ (lto_input_toplevel_asms): Likewise.
+
+2013-02-08 Michael Matz <matz@suse.de>
+
+ PR tree-optimization/52448
+ * tree-ssa-phiopt.c (struct name_to_bb): Add phase member.
+ (nt_call_phase): New static.
+ (add_or_mark_expr): Only mark accesses with newer phase than any
+ call seen.
+ (nonfreeing_call_p): New.
+ (nt_init_block): Update nt_call_phase, mark blocks as visited.
+ (nt_fini_block): Keep blocks marked as visited.
+ (get_non_trapping): Initialize nt_call_phase, and reset aux pointer.
+
+2013-02-08 Richard Biener <rguenther@suse.de>
+
+ * ira.c (ira): Free broken dominator information.
+
+2013-02-08 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.c (ix86_spill_class): Use INTEGER_CLASS_P macro.
+
+2013-02-08 Marek Polacek <polacek@redhat.com>
+
+ * cfgloop.c (verify_loop_structure): Add more checking of headers.
+
+2013-02-08 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/56181
+ * cfgloop.h (flow_loops_find): Adjust.
+ (bb_loop_header_p): Declare.
+ * cfgloop.c (bb_loop_header_p): New function split out from ...
+ (flow_loops_find): ... here. Adjust function signature,
+ support incremental loop structure update.
+ (verify_loop_structure): Cleanup. Verify a loop is a loop.
+ * cfgloopmanip.c (fix_loop_structure): Move ...
+ * loop-init.c (fix_loop_structure): ... here.
+ (apply_loop_flags): Split out from ...
+ (loop_optimizer_init): ... here.
+ (fix_loop_structure): Use apply_loop_flags. Use flow_loops_find
+ in incremental mode, only remove dead loops here.
+
+2013-02-08 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/54222
+ * config/avr/avr.md (unspec) <UNSPEC_ROUND>: Add.
+ * config/avr/avr-fixed.md (ALL4QA, ALL124QA): New mode iterators.
+ (round<mode>3, round<mode>3_const): New expanders for fixed-mode.
+ (*round<mode>3.libgcc): New insns for fixed-modes.
+ * config/avr/builtins.def (ABSxx): Use a non-NULL LIBNAME.
+ (ROUNDxx, COUNTLSxx, BITSxx, xxBITS): New DEF_BUILTINs.
+ (ROUNDFX, COUNTLSFX, ABSFX): New DEF_BUILTINs.
+ * config/avr/stdfix.h (absFX, bitsFX, FXbits): Remove inline
+ implementations. Define to __builtin_avr_absFX,
+ __builtin_avr_bitsFX, __builtin_avr_FXbits, respectively.
+ (roundFX, countlsFX): Define to __builtin_avr_roundFX,
+ __builtin_avr_countlsFX, respectively.
+ * config/avr/avr-c.c (target.h): Include it.
+ (enum avr_builtin_id): New enum.
+ (avr_resolve_overloaded_builtin): New static function.
+ (avr_register_target_pragmas): Use it to set
+ targetm.resolve_overloaded_builtin.
+ * config/avr/avr.c (avr_init_builtins): Supply myriads of local
+ tree nodes used by DEF_BUILTIN.
+ (avr_expand_builtin) <AVR_BUILTIN_ROUNDxx>: Sanity-check them.
+ (avr_fold_builtin) <AVR_BUILTIN_BITSxx>: Fold to VIEW_COVERT_EXPR.
+ <AVR_BUILTIN_xxBITS>: Same.
+
+2013-02-08 Richard Biener <rguenther@suse.de>
+
+ * cfgloop.c (verify_loop_structure): Properly handle
+ a loop exiting to another loop header.
+ * ira-int.h (ira_loops): Remove.
+ * ira.c (ira_loops): Remove.
+ (ira): Use loop_optimizer_init and loop_optimizer_finalize.
+ (do_reload): Use loop_optimizer_finalize.
+ * ira-build.c (create_loop_tree_nodes): Use get_loops and
+ number_of_loops to access the loop tree.
+ (more_one_region_p): Likewise.
+ (finish_loop_tree_nodes): Likewise.
+ (rebuild_regno_allocno_maps): Likewise.
+ (mark_loops_for_removal): Likewise.
+ (mark_all_loops_for_removal): Likewise.
+ (remove_unnecessary_regions): Likewise.
+ (ira_build): Likewise.
+ * ira-emit.c (setup_entered_from_non_parent_p): Likewise.
+
+2013-02-08 Richard Biener <rguenther@suse.de>
+
+ * Makefile.in (tree-tailcall.o): Add $(CFGLOOP_H) dependency.
+ * ipa-pure-const.c (analyze_function): Avoid calling
+ mark_irreducible_loops twice.
+ * tree-tailcall.c (tree_optimize_tail_calls_1): Mark loops for fixup.
+
+2013-02-07 David S. Miller <davem@davemloft.net>
+
+ * dwarf2out.c (based_loc_descr): Perform leaf register remapping
+ on 'reg'.
+ * var-tracking.c (vt_add_function_parameter): Test the presence of
+ HAVE_window_save properly and do not remap argument registers when
+ we have a leaf function.
+
+2013-02-07 Uros Bizjak <ubizjak@gmail.com>
+
+ PR bootstrap/56227
+ * ggc-page.c (ggc_print_statistics): Use HOST_LONG_LONG_FORMAT
+ instead of "ll".
+ * config/i386/i386.c (ix86_print_operand): Ditto.
+
+2013-02-07 Vladimir Makarov <vmakarov@redhat.com>
+
+ * lra-constraints.c (process_alt_operands): Fix recently added comment.
+
+2013-02-07 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/56225
+ * lra-constraints.c (process_alt_operands): Check that reload hard
+ reg can hold value for strict_low_part.
+
+2013-02-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/56154
+ * dwarf2out.c (dwarf2_debug_hooks): Set end_function hook to
+ dwarf2out_end_function.
+ (in_first_function_p, maybe_at_text_label_p,
+ first_loclabel_num_not_at_text_label): New variables.
+ (dwarf2out_var_location): In the first function find out
+ lowest loclabel_num N where .LVLN is known not to be equal to .Ltext0.
+ (find_empty_loc_ranges_at_text_label, dwarf2out_end_function): New
+ functions.
+
+2013-02-07 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR rtl-optimization/56178
+ * cse.c (cse_insn): Do not create a REG_EQUAL note if the source is a
+ SUBREG of a register. Tidy up related block of code.
+ * fwprop.c (forward_propagate_and_simplify): Do not create a REG_EQUAL
+ note if the source is a register or a SUBREG of a register.
+
+2013-02-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/56228
+ * config/rs6000/rs6000.md (ptrm): New mode attr.
+ (call_indirect_aix<ptrsize>, call_indirect_aix<ptrsize>_nor11,
+ call_value_indirect_aix<pttrsize>,
+ call_value_indirect_aix<pttrsize>_nor11): Use <ptrm> instead of
+ m in constraints.
+
+2013-02-07 Michael Haubenwallner <michael.haubenwallner@salomon.at>
+
+ * collect2.c (main): Set aix64_flag for -G and -bsvr4 too, disable
+ if -bnortl. Convert to strcmp and strncmp.
+
+2013-02-07 Alan Modra <amodra@gmail.com>
+
+ PR target/54009
+ * config/rs6000/rs6000.c (mem_operand_gpr): Check that LO_SUM
+ addresses won't wrap when offsetting.
+ (rs6000_secondary_reload): Provide secondary reloads needed for
+ wrapping LO_SUM addresses.
+
+2013-02-06 Thomas Schwinge <thomas@codesourcery.com>
+
+ * config/gnu.h (GNU_USER_TARGET_OS_CPP_BUILTINS): Never define
+ MACH, just __MACH__.
+
+2013-02-06 Richard Biener <rguenther@suse.de>
+
+ * tracer.c (tracer): Mark loops with LOOPS_NEED_FIXUP
+ instead of calling fix_loop_structure.
+
+2013-02-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/56217
+ * omp-low.c (use_pointer_for_field): Return false if
+ lower_send_shared_vars doesn't generate any copy-out code.
+
+2013-02-06 Tom de Vries <tom@codesourcery.com>
+
+ PR rtl-optimization/56131
+ * cfgrtl.c (delete_insn): Use NOTE_BASIC_BLOCK instead of BLOCK_FOR_INSN
+ to get the bb of a NOTE_INSN_BASIC_BLOCK. Handle the case that the bb
+ of the label is NULL. Add comment.
+
+2013-02-05 Jakub Jelinek <jakub@redhat.com>
+
+ * tree.h (struct tree_decl_with_vis): Remove thread_local field.
+
+ PR sanitizer/55374
+ * config/gnu-user.h (LIBTSAN_EARLY_SPEC): Define.
+ (STATIC_LIBTSAN_LIBS): Likewise.
+ * gcc.c (ADD_STATIC_LIBTSAN_LIBS, LIBTSAN_EARLY_SPEC): Define.
+ (LIBTSAN_SPEC): Add ADD_STATIC_LIBTSAN_LIBS, if LIBTSAN_EARLY_SPEC
+ is defined, don't add anything else beyond that.
+ (SANITIZER_EARLY_SPEC, SANITIZER_SPEC): Define.
+ (LINK_COMMAND_SPEC): Use them.
+
+ PR tree-optimization/56205
+ * tree-stdarg.c (check_all_va_list_escapes): Return true if
+ there are any PHI nodes that set non-va_list_escape_vars SSA_NAME
+ and some va_list_escape_vars SSA_NAME appears in some PHI argument.
+
+2013-02-05 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/53342
+ PR tree-optimization/53185
+ * tree-vectorizer.h (vect_check_strided_load): Remove.
+ * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Do
+ not disallow peeling for vectorized strided loads.
+ (vect_check_strided_load): Make static and simplify.
+ (vect_analyze_data_refs): Adjust.
+ * tree-vect-stmts.c (vectorizable_load): Handle peeled loops
+ correctly when vectorizing strided loads.
+
+2013-02-05 Richard Biener <rguenther@suse.de>
+
+ * doc/install.texi: Refer to ISL, not PPL.
+
2013-02-05 Jan Hubicka <jh@suse.cz>
PR tree-optimization/55789
@@ -60,8 +304,7 @@
* lto-symtab.c (lto_symtab_merge_decls_1): Make non-builtin
node prevail as last resort.
(lto_symtab_merge_decls): Remove guard on LTRANS here.
- (lto_symtab_prevailing_decl): Builtins are their own prevailing
- decl.
+ (lto_symtab_prevailing_decl): Builtins are their own prevailing decl.
2013-02-04 Richard Biener <rguenther@suse.de>
@@ -248,8 +491,7 @@
* config/v850/v850.opt (mv850e3v5, mv850e2v4): New options.
(mloop): New option.
* config.gcc: Add support for configuring v840e3v5 target.
- * doc/invoke.texi: Document new v850 specific command line
- options.
+ * doc/invoke.texi: Document new v850 specific command line options.
2013-01-31 Paul Koning <ni1d@arrl.net>
@@ -357,8 +599,7 @@
2013-01-30 Richard Biener <rguenther@suse.de>
PR lto/56147
- * lto-symtab.c (lto_symtab_merge_decls_1): Guard DECL_BUILT_IN
- check.
+ * lto-symtab.c (lto_symtab_merge_decls_1): Guard DECL_BUILT_IN check.
2013-01-30 Georg-Johann Lay <avr@gjlay.de>
@@ -513,8 +754,7 @@
2013-01-28 Richard Biener <rguenther@suse.de>
PR tree-optimization/56034
- * tree-loop-distribution.c (enum partition_kind): Add
- PKIND_REDUCTION.
+ * tree-loop-distribution.c (enum partition_kind): Add PKIND_REDUCTION.
(partition_builtin_p): Adjust.
(generate_code_for_partition): Handle PKIND_REDUCTION. Assert
it is the last partition.
@@ -1476,7 +1716,7 @@
* predict.c (predict_loops): If max is 0, don't call compare_tree_int.
If nitercst is 0, don't predict the exit edge.
-2013-01-08 Naveen H.S <Naveen.Hurugalawadi@caviumnetworks.com>
+2013-01-08 Naveen H.S <Naveen.Hurugalawadi@caviumnetworks.com>
* config/aarch64/aarch64.c (aarch64_print_operand): Replace %r
in asm_fprintf with reg_names.
@@ -1636,10 +1876,10 @@
* asan.c (asan_protect_global): Don't check TREE_ASM_WRITTEN here.
(asan_finish_file): Test it here instead.
-2013-01-07 Nick Clifton <nickc@redhat.com>
- Matthias Klose <doko@debian.org>
- Doug Kwan <dougkwan@google.com>
- H.J. Lu <hongjiu.lu@intel.com>
+2013-01-07 Nick Clifton <nickc@redhat.com>
+ Matthias Klose <doko@debian.org>
+ Doug Kwan <dougkwan@google.com>
+ H.J. Lu <hongjiu.lu@intel.com>
PR driver/55470
* collect2.c (main): Support -fuse-ld=bfd and -fuse-ld=gold.
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index e81bb7b2625..49e8a345208 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20130205
+20130208
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 6cf028366af..a0117804417 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -2402,7 +2402,7 @@ tree-tailcall.o : tree-tailcall.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(TM_P_H) $(FUNCTION_H) $(TM_H) coretypes.h \
$(EXCEPT_H) $(TREE_PASS_H) $(FLAGS_H) langhooks.h \
$(BASIC_BLOCK_H) $(DBGCNT_H) $(GIMPLE_PRETTY_PRINT_H) $(TARGET_H) \
- $(COMMON_TARGET_H)
+ $(COMMON_TARGET_H) $(CFGLOOP_H)
tree-ssa-sink.o : tree-ssa-sink.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) \
$(TM_H) coretypes.h $(TREE_PASS_H) $(FLAGS_H) alloc-pool.h \
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 58b30a2e305..b7c755200de 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,399 @@
+2013-02-07 Simon Wright <simon@pushface.org>
+
+ PR target/50678
+ * init.c (__darwin_major_version): New function for x86-64/Darwin.
+ (__gnat_adjust_context_for_raise) [Darwin]: Disable the workaround
+ on Darwin 12 and above.
+
+2013-02-06 Rainer Emrich <rainer@emrich-ebersheim.de>
+
+ PR target/52123
+ * adaint.c (__gnat_check_OWNER_ACL): Cast from pointer via
+ SECURITY_DESCRIPTOR *
+ (__gnat_set_OWNER_ACL): Cast from DWORD to ACCESS_MODE
+ (__gnat_portable_spawn): Fix cast to char* const*
+ (add_handle): Cast from pointer via void **
+ (add_handle): Cast from pointer via int *
+ (__gnat_locate_exec_on_path): Cast from pointer via TCHAR *
+ (__gnat_locate_exec_on_path): Cast from pointer via char *
+ * initialize.c (append_arg): Cast from pointer via LPWSTR
+ (__gnat_initialize): Cast from pointer via LPWSTR
+ * seh_init.c (__gnat_map_SEH): Cast from pointer via FARPROC
+
+2013-02-06 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * gcc-interface/Make-lang.in: Enable System.Stack_Checking.Operations
+ target pairs on VxWorks 5 only.
+
+2013-02-06 Arnaud Charlet <charlet@adacore.com>
+
+ * gcc-interface/Make-lang.in: Update dependencies.
+
+2013-02-06 Vincent Celier <celier@adacore.com>
+
+ * prj-proc.adb (Process_Aggregated_Projects): Use a new project
+ node tree for each project tree rooted at an aggregated project.
+
+2013-02-06 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * sem_util.adb (Is_Interface_Conversion): New routine.
+ (Object_Access_Level): Detect an interface conversion
+ that has been rewritten into a different construct. Use the
+ original form of the conversion to find the access level of
+ the operand.
+
+2013-02-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * einfo.ads (Has_Pragma_No_Inline): New flag using Flag201.
+ (Has_Pragma_No_Inline): Declare and mark as inline.
+ (Set_Has_Pragma_No_Inline): Likewise.
+ * einfo.adb (Has_Pragma_No_Inline): New function.
+ (Set_Has_Pragma_No_Inline): New procedure.
+ (Write_Entity_Flags): Handle Has_Pragma_No_Inline.
+ * snames.ads-tmpl (Name_No_Inline): New pragma-related name.
+ (Pragma_Id): Add Pragma_No_Inline value.
+ * par-prag.adb (Prag): Handle Pragma_Inline.
+ * sem_prag.adb (Inline_Status): New enumeration type.
+ (Process_Inline): Change Active parameter
+ to Inline_Status and add support for suppressed inlining.
+ (Analyze_Pragma) <Pragma_Inline>: Adjust to above change.
+ <Pragma_Inline_Always>: Likewise.
+ <Pragma_No_Inline>: Implement new pragma No_Inline.
+ (Sig_Flags): Add Pragma_No_Inline.
+ * gnat_rm.texi (Implementation Defined Pragmas): Add No_Inline.
+ * gnat_ugn.texi (Switches for gcc): Mention Pragma No_Inline.
+
+2013-02-06 Pascal Obry <obry@adacore.com>
+
+ * s-osprim-mingw.adb (Clock): Make sure we copy all data locally
+ to avoid interleaved modifications that could happen from another
+ task calling Get_Base_Data.
+ (Get_Base_Data): Make it a critical section. Avoid updating if another
+ task has already done it.
+
+2013-02-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_prag.adb: Minor reformatting.
+
+2013-02-06 Pascal Obry <obry@adacore.com>
+
+ * s-tasloc.ads: Set System.Task_Lock to preelaborate.
+
+2013-02-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * snames.ads-tmpl (Name_Loop_Optimize, Name_No_Unroll,
+ Name_Unroll, Name_No_Vector, Name_Vector): New pragma-related
+ names.
+ (Pragma_Id): Add Pragma_Loop_Optimize value.
+ * par-prag.adb (Prag): Handle Pragma_Loop_Optimize.
+ * sem_prag.adb (Check_Loop_Invariant_Variant_Placement): Rename to...
+ (Check_Loop_Pragma_Placement): ...this.
+ (Analyze_Pragma)
+ <Pragma_Loop_Invariant>: Adjust to above renaming.
+ <Loop_Variant>: Likewise.
+ <Pragma_Loop_Optimize>: Implement new pragma Loop_Optimize.
+ (Sig_Flags): Add Pragma_Loop_Optimize.
+ * gnat_rm.texi (Implementation Defined Pragmas): Add Loop_Optimize.
+ * gnat_ugn.texi (Vectorization of loops): Mention Loop_Optimize.
+
+2013-02-06 Robert Dewar <dewar@adacore.com>
+
+ * osint.ads: Minor fix of typo.
+
+2013-02-06 Sergey Rybin <rybin@adacore.com frybin>
+
+ * gnat_ugn.texi: gnatmetric: update the documentation of
+ complexity metrics for Ada 2012.
+
+2013-02-06 Javier Miranda <miranda@adacore.com>
+
+ * exp_disp.adb (Make_Secondary_DT): Code cleanup:
+ remove useless initialization.
+
+2013-02-06 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch3.adb (Build_Discriminant_Constraints): Do not
+ generate overflow checks on a discriminant expression if the
+ discriminant constraint is applied to a private type that has
+ a full view, because the check will be applied when the full
+ view is elaborated. Removing the redundant check is not just
+ an optimization, but it prevents spurious assembler errors,
+ because of the way the backend generates names for expressions
+ that require overflow checking.
+
+2013-02-06 Pascal Obry <obry@adacore.com>
+
+ * s-osprim-mingw.adb: Removes workaround for an old GNU/Linker
+ limitation on Windows.
+ (DA): Removed.
+ (LIA): Removed.
+ (LLIA): Removed.
+ (TFA): Removed.
+ (BTA): Removed.
+ (BMTA): Removed.
+ (BCA): Removed.
+ (BMCA): Removed.
+ (BTiA): Removed.
+ (Clock): Use variable corresponding to access.
+ (Get_Base_Time): Likewise.
+ (Monotonic_Clock): Likewise.
+
+2013-02-06 Vincent Celier <celier@adacore.com>
+
+ * make.adb (Gnatmake): When gnatmake is called with a project
+ file, do not invoke gnatbind with -I-.
+ * makeutl.adb (Create_Binder_Mapping_File): Rewrite function. Get
+ the infos from all the sources.
+
+2013-02-06 Ed Schonberg <schonberg@adacore.com>
+
+ * snames.ads-tmpl: Add Name_Overriding_Renamings and pragma
+ Overriding_Renamings.
+ * par-prag.adb: Recognize pragma Overriding_Renamings.
+ * opt.ads (Overriding_Renamings): flag to control compatibility
+ mode with Rational compiler, replaces Rational_Profile flag.
+ * sem_ch8.adb (Analyze_Subprogram_Renaming): When
+ Overriding_Renamings is enabled, accept renaming declarations
+ where the new subprogram renames and overrides a locally inherited
+ operation. Improve error message for some illegal renamings.
+ * sem_prag.adb (Analyze_Pragma): Add case for Overriding_Renamings.
+ (Set_Rational_Profile): The Rational_Profile enables
+ Overriding_Renamings, Implicit_Packing, and Use_Vads_Size.
+
+2013-02-06 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_util.adb: Set parent of copied aggregate component, to
+ prevent infinite loop.
+
+2013-02-06 Robert Dewar <dewar@adacore.com>
+
+ * sem_ch3.adb, sem_ch10.adb: Minor reformatting.
+ * exp_disp.adb: Minor comment update.
+ * comperr.ads, osint.ads, rtsfind.adb, sem_prag.adb: Minor addition of
+ No_Return pragmas.
+
+2013-02-06 Thomas Quinot <quinot@adacore.com>
+
+ * targparm.ads, sem_ch13.adb (Support_Nondefault_SSO): New target
+ parameter, defaulted to False for now, indicates targets where
+ non-default scalar storage order may be specified.
+
+2013-02-06 Thomas Quinot <quinot@adacore.com>
+
+ * sprint.adb (Write_Itype): Treat E_Record_Subtype_With_Private
+ same as E_Record_Subtype. Display E_Class_Wide_Subtype as
+ subtype, not type.
+
+2013-02-06 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * sem_ch3.adb (Complete_Private_Subtype): Inherit the
+ Has_Unknown_Discriminants from the full view of the base type.
+
+2013-02-06 Tristan Gingold <gingold@adacore.com>
+
+ * raise-gcc.c: Remove useless includes (sys/stat.h, adaint.h)
+ Enclosing debugging functions within #ifndef inhibit_libc to
+ support builds without full C headers.
+
+2013-02-06 Thomas Quinot <quinot@adacore.com>
+
+ * gnat_rm.texi: Add a minimal example of Scalar_Storage_Order.
+
+2013-02-06 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * sem_ch10.adb (Install_Limited_Withed_Unit): Add a missing
+ check to detect a parent-child relationship between two units in
+ order to correctly bypass the installation of a limited view. In
+ other words, the comment on the intended usage of the check was
+ correct, but the code itself did not reflect the behavior.
+
+2013-02-06 Javier Miranda <miranda@adacore.com>
+
+ * exp_ch5.adb (Expand_N_Assignment_Statement): Do not generate the
+ runtime check on assignment to tagged types if compiling with checks
+ suppressed.
+
+2013-02-06 Robert Dewar <dewar@adacore.com>
+
+ * exp_util.adb, checks.adb, sem_ch12.adb, sem_res.adb, prj-conf.adb,
+ s-os_lib.adb: Minor reformatting
+
+2013-02-06 Vincent Celier <celier@adacore.com>
+
+ * ug_words: Add -gnateY = /IGNORE_STYLE_CHECKS_PRAGMAS.
+
+2013-02-06 Ed Schonberg <schonberg@adacore.com>
+
+ * snames.ads-tmpl: Add Name_Rational and pragma Rational.
+ * par-prag.adb: Recognize pragma Rational.
+ * opt.ads (Rational_Profile): flag to control compatibility mode
+ with Rational compiler.
+ * sem_ch8.adb (Analyze_Subprogram_Renaming): When Rational profile
+ is enable, accept renaming declarations where the new subprogram
+ and the renamed entity have the same name.
+ * sem_prag.adb (analyze_pragma): Add pragma Rational, and recognize
+ Rational as a profile.
+
+2013-02-06 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * exp_ch5.adb (Expand_Loop_Entry_Attributes): When
+ dealing with a for loop that iterates over a subtype indication
+ with a range, use the low and high bounds of the subtype.
+
+2013-02-06 Nicolas Roche <roche@adacore.com>
+
+ * s-os_lib.adb (Normalize_Arguments): Arguments containing tabs should
+ be quoted
+
+2013-02-06 Vincent Celier <celier@adacore.com>
+
+ * prj-conf.adb (Process_Project_And_Apply_Config): New variable
+ Conf_Project. New recursive procedure Check_Project to find a non
+ aggregate project and put its Project_Id in Conf_Project. Fails if
+ no such project can be found.
+ (Get_Or_Create_Configuration_File): New parameter Conf_Project.
+ (Do_Autoconf): Use project directory of project Conf_Project to store
+ the generated configuration project file.
+ * prj-conf.ads (Get_Or_Create_Configuration_File): New parameter
+ Conf_Project.
+
+2013-02-06 Javier Miranda <miranda@adacore.com>
+
+ * sem_res.adb (Resolve_Actuals): Generate a read
+ reference for out-mode parameters in the cases specified by
+ RM 6.4.1(12).
+
+2013-02-06 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * sem_attr.adb (Resolve_Attribute): Do not resolve the prefix of
+ Loop_Entry, instead wait until the attribute has been expanded. The
+ delay ensures that any generated checks or temporaries are inserted
+ before the relocated prefix.
+
+2013-02-06 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch12.adb: Code clean up.
+
+2013-02-06 Ed Schonberg <schonberg@adacore.com>
+
+ * checks.adb (Apply_Discriminant_Check): Look for discriminant
+ constraint in full view of private type when needed.
+ * sem_ch12.adb (Validate_Array_Type_Instance): Specialize
+ previous patch to components types that are private and without
+ discriminants.
+
+2013-02-06 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * exp_ch4.adb (Find_Enclosing_Context): Recognize
+ a simple return statement as one of the cases that require special
+ processing with respect to temporary controlled function results.
+ (Process_Transient_Object): Do attempt to finalize a temporary
+ controlled function result when the associated context is
+ a simple return statement. Instead, leave this task to the
+ general finalization mechanism.
+
+2013-02-06 Thomas Quinot <quinot@adacore.com>
+
+ * einfo.ads: Minor reformatting.
+ (Status_Flag_Or_Transient_Decl): Add ??? comment.
+
+2013-02-06 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * exp_ch4.adb (Expand_N_Expression_With_Actions): Rewritten. This
+ routine should be able to properly detect controlled transient
+ objects in its actions and generate the appropriate finalization
+ actions.
+ * exp_ch6.adb (Enclosing_Context): Removed.
+ (Expand_Ctrl_Function_Call): Remove local subprogram and
+ constant. Use routine Within_Case_Or_If_Expression to determine
+ whether the lifetime of the function result must be extended to
+ match that of the context.
+ * exp_util.ads, exp_util.adb (Within_Case_Or_If_Expression): New
+ routine.
+
+2013-02-06 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch12.adb (Validate_Array_Type_Instance): Extend check
+ for subtype matching of component type of formal array type,
+ to avoid spurious error when component type is a separate actual
+ in the instance, and there may be a discrepancy between private
+ and full view of component type.
+
+2013-02-06 Robert Dewar <dewar@adacore.com>
+
+ * s-dim.ads, clean.adb: Minor reformatting.
+
+2013-02-06 Javier Miranda <miranda@adacore.com>
+
+ * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Undo previous patch.
+ (Can_Split_Unconstrained_Function): Only split the inlined function if
+ the compiler generates the code of its body.
+
+2013-02-06 Robert Dewar <dewar@adacore.com>
+
+ * exp_prag.adb, sem_ch3.adb, exp_attr.adb, sem_prag.adb, sem_ch6.adb,
+ exp_intr.adb, exp_dist.adb, sem_ch13.adb: Internal clean up for
+ N_Pragma nodes.
+
+2013-02-06 Robert Dewar <dewar@adacore.com>
+
+ * gnat_rm.texi: Minor text updates for pragma Warning.
+
+2013-02-06 Geert Bosch <bosch@adacore.com>
+
+ * s-multip.adb (Number_Of_CPUs): Short-circuit in case of
+ CPU'Last = 1.
+
+2013-02-06 Vincent Celier <celier@adacore.com>
+
+ * clean.adb (Delete): On VMS use host notation to delete all files.
+
+2013-02-06 Robert Dewar <dewar@adacore.com>
+
+ * sem_prag.adb, sem_ch6.adb, prj-conf.adb, erroutc.adb: Minor
+ reformatting.
+
+2013-02-06 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_ch6.adb (Check_For_Primitive_Subprogram): Test for
+ the special case of a user-defined equality that overrides
+ the predefined equality of a nonderived type declared in a
+ declarative part.
+ * sem_util.adb (Collect_Primitive_Operations): Add test for
+ Is_Primitive when looping over the subprograms following a type,
+ to catch the case of primitives such as a user-defined equality,
+ which otherwise won't be found when the type is not a derived
+ type and is declared in a declarative part.
+
+2013-02-06 Vincent Celier <celier@adacore.com>
+
+ * prj-conf.adb (Check_Target): Always return True when Target
+ is empty (Get_Or_Create_Configuration_File.Get_Project_Target):
+ New procedure to get the value of attribute Target in the main
+ project.
+ (Get_Or_Create_Configuration_File.Do_Autoconf): No
+ need to get the value of attribute Target in the main project.
+ (Get_Or_Create_Configuration_File): Call Get_Project_Target and
+ use the target fom this call.
+
+2013-02-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * erroutc.adb (Validate_Specific_Warning): Do not issue the
+ warning about an ineffective Pragma Warnings for -Wxxx warnings.
+ * sem_prag.adb (Analyze_Pragma) <Warnings>: Accept -Wxxx warnings.
+ * gnat_rm.texi (Pragma Warnings): Document coordination with
+ warnings of the GCC back-end.
+
+2013-02-06 Javier Miranda <miranda@adacore.com>
+
+ * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Do not build the body
+ of an inlined function if we do not generate code for the function.
+
+2013-02-06 Pascal Obry <obry@adacore.com>
+
+ * s-os_lib.adb (Locate_Exec_On_Path): Call Normalize_Pathname
+ with Resolve_Links set to False.
+
2013-02-03 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/decl.c: Include diagnostic-core.h.
diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c
index 4b8ce5341ef..dc94d63d556 100644
--- a/gcc/ada/adaint.c
+++ b/gcc/ada/adaint.c
@@ -1982,7 +1982,7 @@ __gnat_check_OWNER_ACL
GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION,
NULL, 0, &nLength);
- if ((pSD = (PSECURITY_DESCRIPTOR) HeapAlloc
+ if ((pSD = (SECURITY_DESCRIPTOR *) HeapAlloc
(GetProcessHeap (), HEAP_ZERO_MEMORY, nLength)) == NULL)
return 0;
@@ -2059,7 +2059,7 @@ __gnat_set_OWNER_ACL
return;
BuildExplicitAccessWithName
- (&ea, username, AccessPermissions, AccessMode, NO_INHERITANCE);
+ (&ea, username, AccessPermissions, (ACCESS_MODE) AccessMode, NO_INHERITANCE);
if (AccessMode == SET_ACCESS)
{
@@ -2384,7 +2384,7 @@ __gnat_portable_spawn (char *args[])
strcat (args[0], args_0);
strcat (args[0], "\"");
- status = spawnvp (P_WAIT, args_0, (const char* const*)args);
+ status = spawnvp (P_WAIT, args_0, (char* const*)args);
/* restore previous value */
free (args[0]);
@@ -2540,9 +2540,9 @@ add_handle (HANDLE h, int pid)
{
plist_max_length += 1000;
HANDLES_LIST =
- xrealloc (HANDLES_LIST, sizeof (HANDLE) * plist_max_length);
+ (void **) xrealloc (HANDLES_LIST, sizeof (HANDLE) * plist_max_length);
PID_LIST =
- xrealloc (PID_LIST, sizeof (int) * plist_max_length);
+ (int *) xrealloc (PID_LIST, sizeof (int) * plist_max_length);
}
HANDLES_LIST[plist_length] = h;
@@ -2931,7 +2931,7 @@ __gnat_locate_exec_on_path (char *exec_name)
#define EXPAND_BUFFER_SIZE 32767
- wapath_val = alloca (EXPAND_BUFFER_SIZE);
+ wapath_val = (TCHAR *) alloca (EXPAND_BUFFER_SIZE);
wapath_val [0] = '.';
wapath_val [1] = ';';
@@ -2941,7 +2941,7 @@ __gnat_locate_exec_on_path (char *exec_name)
if (!res) wapath_val [0] = _T('\0');
- apath_val = alloca (EXPAND_BUFFER_SIZE);
+ apath_val = (char *) alloca (EXPAND_BUFFER_SIZE);
WS2SC (apath_val, wapath_val, EXPAND_BUFFER_SIZE);
return __gnat_locate_exec (exec_name, apath_val);
diff --git a/gcc/ada/checks.adb b/gcc/ada/checks.adb
index a0ca4c61a43..7afabd1c2c6 100644
--- a/gcc/ada/checks.adb
+++ b/gcc/ada/checks.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -1536,9 +1536,9 @@ package body Checks is
-- the constraints are constants. In this case, we can do the check
-- successfully at compile time.
- -- We skip this check for the case where the node is a rewritten`
- -- allocator, because it already carries the context subtype, and
- -- extracting the discriminants from the aggregate is messy.
+ -- We skip this check for the case where the node is rewritten`as
+ -- an allocator, because it already carries the context subtype,
+ -- and extracting the discriminants from the aggregate is messy.
if Is_Constrained (S_Typ)
and then Nkind (Original_Node (N)) /= N_Allocator
@@ -1591,7 +1591,17 @@ package body Checks is
end if;
end if;
- DconT := First_Elmt (Discriminant_Constraint (T_Typ));
+ -- Constraint may appear in full view of type
+
+ if Ekind (T_Typ) = E_Private_Subtype
+ and then Present (Full_View (T_Typ))
+ then
+ DconT :=
+ First_Elmt (Discriminant_Constraint (Full_View (T_Typ)));
+ else
+ DconT :=
+ First_Elmt (Discriminant_Constraint (T_Typ));
+ end if;
while Present (Discr) loop
ItemS := Node (DconS);
diff --git a/gcc/ada/clean.adb b/gcc/ada/clean.adb
index 560ceb7d33e..9d9c4d457df 100644
--- a/gcc/ada/clean.adb
+++ b/gcc/ada/clean.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -1253,7 +1253,18 @@ package body Clean is
-- On VMS, we have to delete all versions of the file
if OpenVMS_On_Target then
- Delete_File (Full_Name (1 .. Last) & ";*", Success);
+ declare
+ Host_Full_Name : constant String_Access :=
+ To_Host_File_Spec (Full_Name (1 .. Last));
+ begin
+ if Host_Full_Name = null
+ or else Host_Full_Name'Length = 0
+ then
+ Success := False;
+ else
+ Delete_File (Host_Full_Name.all & ";*", Success);
+ end if;
+ end;
-- Otherwise just delete the specified file
diff --git a/gcc/ada/comperr.ads b/gcc/ada/comperr.ads
index a45faf16245..ba3cb6b8f66 100644
--- a/gcc/ada/comperr.ads
+++ b/gcc/ada/comperr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -33,6 +33,7 @@ package Comperr is
(X : String;
Code : Integer := 0;
Fallback_Loc : String := "");
+ pragma No_Return (Compiler_Abort);
-- Signals an internal compiler error. Never returns control. Depending on
-- processing may end up raising Unrecoverable_Error, or exiting directly.
-- The message output is a "bug box" containing the first string passed as
diff --git a/gcc/ada/einfo.adb b/gcc/ada/einfo.adb
index 6d87f98510b..934dd27e25b 100644
--- a/gcc/ada/einfo.adb
+++ b/gcc/ada/einfo.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -483,6 +483,7 @@ package body Einfo is
-- Is_Ada_2012_Only Flag199
-- Has_Delayed_Aspects Flag200
+ -- Has_Pragma_No_Inline Flag201
-- Itype_Printed Flag202
-- Has_Pragma_Pure Flag203
-- Is_Known_Null Flag204
@@ -542,8 +543,6 @@ package body Einfo is
-- Has_Anonymous_Master Flag253
-- Is_Implementation_Defined Flag254
- -- (unused) Flag201
-
-- (unused) Flag255
-- (unused) Flag256
-- (unused) Flag257
@@ -1560,6 +1559,11 @@ package body Einfo is
return Flag230 (Id);
end Has_Pragma_Inline_Always;
+ function Has_Pragma_No_Inline (Id : E) return B is
+ begin
+ return Flag201 (Id);
+ end Has_Pragma_No_Inline;
+
function Has_Pragma_Ordered (Id : E) return B is
begin
pragma Assert (Is_Enumeration_Type (Id));
@@ -4111,6 +4115,11 @@ package body Einfo is
Set_Flag230 (Id, V);
end Set_Has_Pragma_Inline_Always;
+ procedure Set_Has_Pragma_No_Inline (Id : E; V : B := True) is
+ begin
+ Set_Flag201 (Id, V);
+ end Set_Has_Pragma_No_Inline;
+
procedure Set_Has_Pragma_Ordered (Id : E; V : B := True) is
begin
pragma Assert (Is_Enumeration_Type (Id));
@@ -7686,6 +7695,7 @@ package body Einfo is
W ("Has_Pragma_Elaborate_Body", Flag150 (Id));
W ("Has_Pragma_Inline", Flag157 (Id));
W ("Has_Pragma_Inline_Always", Flag230 (Id));
+ W ("Has_Pragma_No_Inline", Flag201 (Id));
W ("Has_Pragma_Ordered", Flag198 (Id));
W ("Has_Pragma_Pack", Flag121 (Id));
W ("Has_Pragma_Preelab_Init", Flag221 (Id));
diff --git a/gcc/ada/einfo.ads b/gcc/ada/einfo.ads
index 1266a3deb80..8616333a0a8 100644
--- a/gcc/ada/einfo.ads
+++ b/gcc/ada/einfo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -1671,6 +1671,11 @@ package Einfo is
-- pragma Inline_Always applies. Note that if this flag is set, the flag
-- Has_Pragma_Inline is also set.
+-- Has_Pragma_No_Inline (Flag201)
+-- Defined in all entities. Set for functions and procedures for which a
+-- pragma No_Inline applies. Note that if this flag is set, the flag
+-- Has_Pragma_Inline_Always cannot be set.
+
-- Has_Pragma_Ordered (Flag198) [implementation base type only]
-- Defined in entities for enumeration types. If set indicates that a
-- valid pragma Ordered was given for the type. This flag is inherited
@@ -3725,11 +3730,12 @@ package Einfo is
-- Status_Flag_Or_Transient_Decl (Node15)
-- Defined in variables and constants. Applies to objects that require
--- special treatment by the finalization machinery. Such examples are
--- extended return results, if and case expression results and objects
--- inside N_Expression_With_Actions nodes. The attribute contains the
--- entity of a flag which specifies particular behavior over a region
--- of code or the declaration of a "hook" object.
+-- special treatment by the finalization machinery, such as extended
+-- return results, IF and CASE expression results, and objects inside
+-- N_Expression_With_Actions nodes. The attribute contains the entity
+-- of a flag which specifies particular behavior over a region of code
+-- or the declaration of a "hook" object.
+-- In which case is it a flag, or a hook object???
-- Storage_Size_Variable (Node15) [implementation base type only]
-- Defined in access types and task type entities. This flag is set
@@ -4832,6 +4838,7 @@ package Einfo is
-- Has_Pragma_Elaborate_Body (Flag150)
-- Has_Pragma_Inline (Flag157)
-- Has_Pragma_Inline_Always (Flag230)
+ -- Has_Pragma_No_Inline (Flag201)
-- Has_Pragma_Pure (Flag203)
-- Has_Pragma_Pure_Function (Flag179)
-- Has_Pragma_Thread_Local_Storage (Flag169)
@@ -6231,6 +6238,7 @@ package Einfo is
function Has_Pragma_Elaborate_Body (Id : E) return B;
function Has_Pragma_Inline (Id : E) return B;
function Has_Pragma_Inline_Always (Id : E) return B;
+ function Has_Pragma_No_Inline (Id : E) return B;
function Has_Pragma_Ordered (Id : E) return B;
function Has_Pragma_Pack (Id : E) return B;
function Has_Pragma_Preelab_Init (Id : E) return B;
@@ -6830,6 +6838,7 @@ package Einfo is
procedure Set_Has_Pragma_Elaborate_Body (Id : E; V : B := True);
procedure Set_Has_Pragma_Inline (Id : E; V : B := True);
procedure Set_Has_Pragma_Inline_Always (Id : E; V : B := True);
+ procedure Set_Has_Pragma_No_Inline (Id : E; V : B := True);
procedure Set_Has_Pragma_Ordered (Id : E; V : B := True);
procedure Set_Has_Pragma_Pack (Id : E; V : B := True);
procedure Set_Has_Pragma_Preelab_Init (Id : E; V : B := True);
@@ -7520,6 +7529,7 @@ package Einfo is
pragma Inline (Has_Pragma_Elaborate_Body);
pragma Inline (Has_Pragma_Inline);
pragma Inline (Has_Pragma_Inline_Always);
+ pragma Inline (Has_Pragma_No_Inline);
pragma Inline (Has_Pragma_Ordered);
pragma Inline (Has_Pragma_Pack);
pragma Inline (Has_Pragma_Preelab_Init);
@@ -7970,6 +7980,7 @@ package Einfo is
pragma Inline (Set_Has_Pragma_Elaborate_Body);
pragma Inline (Set_Has_Pragma_Inline);
pragma Inline (Set_Has_Pragma_Inline_Always);
+ pragma Inline (Set_Has_Pragma_No_Inline);
pragma Inline (Set_Has_Pragma_Ordered);
pragma Inline (Set_Has_Pragma_Pack);
pragma Inline (Set_Has_Pragma_Preelab_Init);
diff --git a/gcc/ada/erroutc.adb b/gcc/ada/erroutc.adb
index 35f71a4a7cf..8a1050fdd8a 100644
--- a/gcc/ada/erroutc.adb
+++ b/gcc/ada/erroutc.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -1276,13 +1276,27 @@ package body Erroutc is
for J in Specific_Warnings.First .. Specific_Warnings.Last loop
declare
SWE : Specific_Warning_Entry renames Specific_Warnings.Table (J);
+
begin
if not SWE.Config then
+
+ -- Warn for unmatched Warnings (Off, ...)
+
if SWE.Open then
Eproc.all
("?pragma Warnings Off with no matching Warnings On",
SWE.Start);
- elsif not SWE.Used then
+
+ -- Warn for ineffective Warnings (Off, ..)
+
+ elsif not SWE.Used
+
+ -- Do not issue this warning for -Wxxx messages since the
+ -- back-end doesn't report the information.
+
+ and then not
+ (SWE.Msg'Length > 2 and then SWE.Msg (1 .. 2) = "-W")
+ then
Eproc.all
("?no warning suppressed by this pragma", SWE.Start);
end if;
diff --git a/gcc/ada/exp_attr.adb b/gcc/ada/exp_attr.adb
index 1147724c91e..54442db72b4 100644
--- a/gcc/ada/exp_attr.adb
+++ b/gcc/ada/exp_attr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -2120,7 +2120,7 @@ package body Exp_Attr is
Defining_Unit_Name => Ent)),
Make_Pragma (Loc,
- Chars => Name_Import,
+ Chars => Name_Import,
Pragma_Argument_Associations => New_List (
Make_Pragma_Argument_Association (Loc, Expression => Lang),
diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb
index 70e2fcdf4c9..f8d37a5530f 100644
--- a/gcc/ada/exp_ch4.adb
+++ b/gcc/ada/exp_ch4.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -4984,145 +4984,332 @@ package body Exp_Ch4 is
--------------------------------------
procedure Expand_N_Expression_With_Actions (N : Node_Id) is
+ In_Case_Or_If_Expression : constant Boolean :=
+ Within_Case_Or_If_Expression (N);
- procedure Process_Transient_Object (Decl : Node_Id);
- -- Given the declaration of a controlled transient declared inside the
- -- Actions list of an Expression_With_Actions, generate all necessary
- -- types and hooks in order to properly finalize the transient. This
- -- mechanism works in conjunction with Build_Finalizer.
+ function Process_Action (Act : Node_Id) return Traverse_Result;
+ -- Inspect and process a single action of an expression_with_actions
- ------------------------------
- -- Process_Transient_Object --
- ------------------------------
+ --------------------
+ -- Process_Action --
+ --------------------
+
+ function Process_Action (Act : Node_Id) return Traverse_Result is
+ procedure Process_Transient_Object (Obj_Decl : Node_Id);
+ -- Obj_Decl denotes the declaration of a transient controlled object.
+ -- Generate all necessary types and hooks to properly finalize the
+ -- result when the enclosing context is elaborated/evaluated.
+
+ ------------------------------
+ -- Process_Transient_Object --
+ ------------------------------
+
+ procedure Process_Transient_Object (Obj_Decl : Node_Id) is
+ function Find_Enclosing_Context return Node_Id;
+ -- Find the context where the expression_with_actions appears
+
+ ----------------------------
+ -- Find_Enclosing_Context --
+ ----------------------------
+
+ function Find_Enclosing_Context return Node_Id is
+ function Is_Body_Or_Unit (N : Node_Id) return Boolean;
+ -- Determine whether N denotes a body or unit declaration
+
+ ---------------------
+ -- Is_Body_Or_Unit --
+ ---------------------
+
+ function Is_Body_Or_Unit (N : Node_Id) return Boolean is
+ begin
+ return Nkind_In (N, N_Entry_Body,
+ N_Package_Body,
+ N_Package_Declaration,
+ N_Protected_Body,
+ N_Subprogram_Body,
+ N_Task_Body);
+ end Is_Body_Or_Unit;
+
+ -- Local variables
+
+ Par : Node_Id;
+ Top : Node_Id;
+
+ -- Start of processing for Find_Enclosing_Context
+
+ begin
+ -- The expression_with_actions is in a case/if expression and
+ -- the lifetime of any temporary controlled object is therefore
+ -- extended. Find a suitable insertion node by locating the top
+ -- most case or if expressions.
+
+ if In_Case_Or_If_Expression then
+ Par := N;
+ Top := N;
+ while Present (Par) loop
+ if Nkind_In (Original_Node (Par), N_Case_Expression,
+ N_If_Expression)
+ then
+ Top := Par;
+
+ -- Prevent the search from going too far
+
+ elsif Is_Body_Or_Unit (Par) then
+ exit;
+ end if;
+
+ Par := Parent (Par);
+ end loop;
+
+ -- The topmost case or if expression is now recovered, but
+ -- it may still not be the correct place to add all the
+ -- generated code. Climb to find a parent that is part of a
+ -- declarative or statement list.
+
+ Par := Top;
+ while Present (Par) loop
+ if Is_List_Member (Par)
+ and then
+ not Nkind_In (Par, N_Component_Association,
+ N_Discriminant_Association,
+ N_Parameter_Association,
+ N_Pragma_Argument_Association)
+ then
+ return Par;
+
+ -- Prevent the search from going too far
+
+ elsif Is_Body_Or_Unit (Par) then
+ exit;
+ end if;
+
+ Par := Parent (Par);
+ end loop;
+
+ return Par;
+
+ -- Short circuit operators in complex expressions are converted
+ -- into expression_with_actions.
+
+ else
+ -- Take care of the case where the expression_with_actions
+ -- is buried deep inside an IF statement. The temporary
+ -- function result must be finalized before the then, elsif
+ -- or else statements are evaluated.
+
+ -- if Something
+ -- and then Ctrl_Func_Call
+ -- then
+ -- <result must be finalized at this point>
+ -- <statements>
+ -- end if;
+
+ -- To achieve this, find the topmost logical operator. The
+ -- generated actions are then inserted before/after it.
+
+ Par := N;
+ while Present (Par) loop
+
+ -- Keep climbing past various operators
+
+ if Nkind (Parent (Par)) in N_Op
+ or else Nkind_In (Parent (Par), N_And_Then, N_Or_Else)
+ then
+ Par := Parent (Par);
+ else
+ exit;
+ end if;
+ end loop;
+
+ Top := Par;
+
+ -- The expression_with_actions might be located in a pragma
+ -- in which case locate the pragma itself:
+
+ -- pragma Precondition (... and then Ctrl_Func_Call ...);
- procedure Process_Transient_Object (Decl : Node_Id) is
+ -- Similar case occurs when the expression_with_actions is
+ -- related to an object declaration or assignment:
- function Find_Insertion_Node return Node_Id;
- -- Complex conditions in if statements may be converted into nested
- -- EWAs. In this case, any generated code must be inserted before the
- -- if statement to ensure proper visibility of the hook objects. This
- -- routine returns the top most short circuit operator or the parent
- -- of the EWA if no nesting was detected.
+ -- Obj [: Some_Typ] := ... and then Ctrl_Func_Call ...;
- -------------------------
- -- Find_Insertion_Node --
- -------------------------
+ -- Another case to consider is an expression_with_actions as
+ -- part of a return statement:
- function Find_Insertion_Node return Node_Id is
- Par : Node_Id;
+ -- return ... and then Ctrl_Func_Call ...;
+
+ while Present (Par) loop
+ if Nkind_In (Par, N_Assignment_Statement,
+ N_Object_Declaration,
+ N_Pragma,
+ N_Simple_Return_Statement)
+ then
+ return Par;
+
+ elsif Is_Body_Or_Unit (Par) then
+ exit;
+ end if;
+
+ Par := Parent (Par);
+ end loop;
+
+ -- Return the topmost short circuit operator
+
+ return Top;
+ end if;
+ end Find_Enclosing_Context;
+
+ -- Local variables
+
+ Context : constant Node_Id := Find_Enclosing_Context;
+ Loc : constant Source_Ptr := Sloc (Obj_Decl);
+ Obj_Id : constant Entity_Id := Defining_Identifier (Obj_Decl);
+ Obj_Typ : constant Node_Id := Etype (Obj_Id);
+ Desig_Typ : Entity_Id;
+ Expr : Node_Id;
+ Ptr_Id : Entity_Id;
+ Temp_Id : Entity_Id;
+
+ -- Start of processing for Process_Transient_Object
begin
- -- Climb up the branches of a complex condition
+ -- Step 1: Create the access type which provides a reference to
+ -- the transient object.
- Par := N;
- while Nkind_In (Parent (Par), N_And_Then, N_Op_Not, N_Or_Else) loop
- Par := Parent (Par);
- end loop;
+ if Is_Access_Type (Obj_Typ) then
+ Desig_Typ := Directly_Designated_Type (Obj_Typ);
+ else
+ Desig_Typ := Obj_Typ;
+ end if;
- return Par;
- end Find_Insertion_Node;
+ -- Generate:
+ -- Ann : access [all] <Desig_Typ>;
- -- Local variables
+ Ptr_Id := Make_Temporary (Loc, 'A');
- Ins_Node : constant Node_Id := Find_Insertion_Node;
- Loc : constant Source_Ptr := Sloc (Decl);
- Obj_Id : constant Entity_Id := Defining_Identifier (Decl);
- Obj_Typ : constant Entity_Id := Etype (Obj_Id);
- Desig_Typ : Entity_Id;
- Expr : Node_Id;
- Ptr_Decl : Node_Id;
- Ptr_Id : Entity_Id;
- Temp_Decl : Node_Id;
- Temp_Id : Node_Id;
+ Insert_Action (Context,
+ Make_Full_Type_Declaration (Loc,
+ Defining_Identifier => Ptr_Id,
+ Type_Definition =>
+ Make_Access_To_Object_Definition (Loc,
+ All_Present =>
+ Ekind (Obj_Typ) = E_General_Access_Type,
+ Subtype_Indication => New_Reference_To (Desig_Typ, Loc))));
- -- Start of processing for Process_Transient_Object
+ -- Step 2: Create a temporary which acts as a hook to the
+ -- transient object. Generate:
- begin
- -- Step 1: Create the access type which provides a reference to the
- -- transient object.
+ -- Temp : Ptr_Id := null;
- if Is_Access_Type (Obj_Typ) then
- Desig_Typ := Directly_Designated_Type (Obj_Typ);
- else
- Desig_Typ := Obj_Typ;
- end if;
+ Temp_Id := Make_Temporary (Loc, 'T');
- -- Generate:
- -- Ann : access [all] <Desig_Typ>;
+ Insert_Action (Context,
+ Make_Object_Declaration (Loc,
+ Defining_Identifier => Temp_Id,
+ Object_Definition => New_Reference_To (Ptr_Id, Loc)));
- Ptr_Id := Make_Temporary (Loc, 'A');
+ -- Mark this temporary as created for the purposes of exporting
+ -- the transient declaration out of the Actions list. This signals
+ -- the machinery in Build_Finalizer to recognize this special
+ -- case.
- Ptr_Decl :=
- Make_Full_Type_Declaration (Loc,
- Defining_Identifier => Ptr_Id,
- Type_Definition =>
- Make_Access_To_Object_Definition (Loc,
- All_Present =>
- Ekind (Obj_Typ) = E_General_Access_Type,
- Subtype_Indication => New_Reference_To (Desig_Typ, Loc)));
+ Set_Status_Flag_Or_Transient_Decl (Temp_Id, Obj_Decl);
- Insert_Action (Ins_Node, Ptr_Decl);
- Analyze (Ptr_Decl);
+ -- Step 3: Hook the transient object to the temporary
- -- Step 2: Create a temporary which acts as a hook to the transient
- -- object. Generate:
+ if Is_Access_Type (Obj_Typ) then
+ Expr := Convert_To (Ptr_Id, New_Reference_To (Obj_Id, Loc));
+ else
+ Expr :=
+ Make_Attribute_Reference (Loc,
+ Prefix => New_Reference_To (Obj_Id, Loc),
+ Attribute_Name => Name_Unrestricted_Access);
+ end if;
- -- Temp : Ptr_Id := null;
+ -- Generate:
+ -- Temp := Ptr_Id (Obj_Id);
+ -- <or>
+ -- Temp := Obj_Id'Unrestricted_Access;
- Temp_Id := Make_Temporary (Loc, 'T');
+ Insert_After_And_Analyze (Obj_Decl,
+ Make_Assignment_Statement (Loc,
+ Name => New_Reference_To (Temp_Id, Loc),
+ Expression => Expr));
+
+ -- Step 4: Finalize the function result after the context has been
+ -- evaluated/elaborated. Generate:
+
+ -- if Temp /= null then
+ -- [Deep_]Finalize (Temp.all);
+ -- Temp := null;
+ -- end if;
+
+ -- When the expression_with_actions is part of a return statement,
+ -- there is no need to insert a finalization call, as the general
+ -- finalization mechanism (see Build_Finalizer) would take care of
+ -- the temporary function result on subprogram exit. Note that it
+ -- would also be impossible to insert the finalization code after
+ -- the return statement as this would make it unreachable.
+
+ if Nkind (Context) /= N_Simple_Return_Statement then
+ Insert_Action_After (Context,
+ Make_If_Statement (Loc,
+ Condition =>
+ Make_Op_Ne (Loc,
+ Left_Opnd => New_Reference_To (Temp_Id, Loc),
+ Right_Opnd => Make_Null (Loc)),
+
+ Then_Statements => New_List (
+ Make_Final_Call
+ (Obj_Ref =>
+ Make_Explicit_Dereference (Loc,
+ Prefix => New_Reference_To (Temp_Id, Loc)),
+ Typ => Desig_Typ),
- Temp_Decl :=
- Make_Object_Declaration (Loc,
- Defining_Identifier => Temp_Id,
- Object_Definition => New_Reference_To (Ptr_Id, Loc));
+ Make_Assignment_Statement (Loc,
+ Name => New_Reference_To (Temp_Id, Loc),
+ Expression => Make_Null (Loc)))));
+ end if;
+ end Process_Transient_Object;
- Insert_Action (Ins_Node, Temp_Decl);
- Analyze (Temp_Decl);
+ -- Start of processing for Process_Action
- -- Mark this temporary as created for the purposes of exporting the
- -- transient declaration out of the Actions list. This signals the
- -- machinery in Build_Finalizer to recognize this special case.
+ begin
+ if Nkind (Act) = N_Object_Declaration
+ and then Is_Finalizable_Transient (Act, N)
+ then
+ Process_Transient_Object (Act);
- Set_Status_Flag_Or_Transient_Decl (Temp_Id, Decl);
+ -- Avoid processing temporary function results multiple times when
+ -- dealing with nested expression_with_actions.
- -- Step 3: Hook the transient object to the temporary
+ elsif Nkind (Act) = N_Expression_With_Actions then
+ return Abandon;
- if Is_Access_Type (Obj_Typ) then
- Expr := Convert_To (Ptr_Id, New_Reference_To (Obj_Id, Loc));
- else
- Expr :=
- Make_Attribute_Reference (Loc,
- Prefix => New_Reference_To (Obj_Id, Loc),
- Attribute_Name => Name_Unrestricted_Access);
+ -- Do not process temporary function results in loops. This is
+ -- done by Expand_N_Loop_Statement and Build_Finalizer.
+
+ elsif Nkind (Act) = N_Loop_Statement then
+ return Abandon;
end if;
- -- Generate:
- -- Temp := Ptr_Id (Obj_Id);
- -- <or>
- -- Temp := Obj_Id'Unrestricted_Access;
+ return OK;
+ end Process_Action;
- Insert_After_And_Analyze (Decl,
- Make_Assignment_Statement (Loc,
- Name => New_Reference_To (Temp_Id, Loc),
- Expression => Expr));
- end Process_Transient_Object;
+ procedure Process_Single_Action is new Traverse_Proc (Process_Action);
-- Local variables
- Decl : Node_Id;
+ Act : Node_Id;
-- Start of processing for Expand_N_Expression_With_Actions
begin
- Decl := First (Actions (N));
- while Present (Decl) loop
- if Nkind (Decl) = N_Object_Declaration
- and then Is_Finalizable_Transient (Decl, N)
- then
- Process_Transient_Object (Decl);
- end if;
+ Act := First (Actions (N));
+ while Present (Act) loop
+ Process_Single_Action (Act);
- Next (Decl);
+ Next (Act);
end loop;
end Expand_N_Expression_With_Actions;
diff --git a/gcc/ada/exp_ch5.adb b/gcc/ada/exp_ch5.adb
index 2bdb82797ab..243279b00fc 100644
--- a/gcc/ada/exp_ch5.adb
+++ b/gcc/ada/exp_ch5.adb
@@ -1754,13 +1754,18 @@ package body Exp_Ch5 is
declare
Loop_Spec : constant Node_Id :=
Loop_Parameter_Specification (Scheme);
- Subt_Def : constant Node_Id :=
- Discrete_Subtype_Definition (Loop_Spec);
Cond : Node_Id;
+ Subt_Def : Node_Id;
begin
- -- At this point in the expansion all discrete subtype definitions
- -- should be transformed into ranges.
+ Subt_Def := Discrete_Subtype_Definition (Loop_Spec);
+
+ -- When the loop iterates over a subtype indication with a range,
+ -- use the low and high bounds of the subtype itself.
+
+ if Nkind (Subt_Def) = N_Subtype_Indication then
+ Subt_Def := Scalar_Range (Etype (Subt_Def));
+ end if;
pragma Assert (Nkind (Subt_Def) = N_Range);
@@ -2471,7 +2476,8 @@ package body Exp_Ch5 is
-- the assignment we generate run-time check to ensure that
-- the tags of source and target match.
- if Is_Class_Wide_Type (Typ)
+ if not Tag_Checks_Suppressed (Typ)
+ and then Is_Class_Wide_Type (Typ)
and then Is_Tagged_Type (Typ)
and then Is_Tagged_Type (Underlying_Type (Etype (Rhs)))
then
diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
index cd83d45bddc..9288e847734 100644
--- a/gcc/ada/exp_ch6.adb
+++ b/gcc/ada/exp_ch6.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -4036,45 +4036,6 @@ package body Exp_Ch6 is
-------------------------------
procedure Expand_Ctrl_Function_Call (N : Node_Id) is
- function Enclosing_Context return Node_Id;
- -- Find the enclosing context where the function call appears
-
- -----------------------
- -- Enclosing_Context --
- -----------------------
-
- function Enclosing_Context return Node_Id is
- Context : Node_Id;
-
- begin
- Context := Parent (N);
- while Present (Context) loop
-
- -- The following could use a comment (and why is N_Case_Expression
- -- not treated in a similar manner ???
-
- if Nkind (Context) = N_If_Expression then
- exit;
-
- -- Stop the search when reaching any statement because we have
- -- gone too far up the tree.
-
- elsif Nkind (Context) = N_Procedure_Call_Statement
- or else Nkind (Context) in N_Statement_Other_Than_Procedure_Call
- then
- exit;
- end if;
-
- Context := Parent (Context);
- end loop;
-
- return Context;
- end Enclosing_Context;
-
- -- Local variables
-
- Context : constant Node_Id := Enclosing_Context;
-
begin
-- Optimization, if the returned value (which is on the sec-stack) is
-- returned again, no need to copy/readjust/finalize, we can just pass
@@ -4096,15 +4057,12 @@ package body Exp_Ch6 is
Remove_Side_Effects (N);
- -- The function call is part of an if expression dependent expression.
- -- The temporary result must live as long as the if expression itself,
- -- otherwise it will be finalized too early. Mark the transient as
- -- processed to avoid untimely finalization.
+ -- When the temporary function result appears inside a case or an if
+ -- expression, its lifetime must be extended to match that of the
+ -- context. If not, the function result would be finalized prematurely
+ -- and the evaluation of the expression could yield the wrong result.
- -- Why no special handling for case expressions here ???
-
- if Present (Context)
- and then Nkind (Context) = N_If_Expression
+ if Within_Case_Or_If_Expression (N)
and then Nkind (N) = N_Explicit_Dereference
then
Set_Is_Processed_Transient (Entity (Prefix (N)));
@@ -4223,9 +4181,7 @@ package body Exp_Ch6 is
if Is_Entity_Name (N) and then Present (Entity (N)) then
E := Entity (N);
- if Is_Formal (E)
- and then Scope (E) = Subp
- then
+ if Is_Formal (E) and then Scope (E) = Subp then
A := Renamed_Object (E);
-- Rewrite the occurrence of the formal into an occurrence of
diff --git a/gcc/ada/exp_disp.adb b/gcc/ada/exp_disp.adb
index 5b8ae1720ae..bf530cb4769 100644
--- a/gcc/ada/exp_disp.adb
+++ b/gcc/ada/exp_disp.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -4129,17 +4129,10 @@ package body Exp_Disp is
DT_Constr_List := New_List;
DT_Aggr_List := New_List;
- -- Nb_Prim. If the tagged type has no primitives we add a dummy
- -- slot whose address will be the tag of this type.
-
- if Nb_Prim = 0 then
- New_Node := Make_Integer_Literal (Loc, 1);
- else
- New_Node := Make_Integer_Literal (Loc, Nb_Prim);
- end if;
+ -- Nb_Prim
- Append_To (DT_Constr_List, New_Node);
- Append_To (DT_Aggr_List, New_Copy (New_Node));
+ Append_To (DT_Constr_List, Make_Integer_Literal (Loc, Nb_Prim));
+ Append_To (DT_Aggr_List, Make_Integer_Literal (Loc, Nb_Prim));
-- Signature
diff --git a/gcc/ada/exp_dist.adb b/gcc/ada/exp_dist.adb
index 8649fafff54..e0e7250a3b7 100644
--- a/gcc/ada/exp_dist.adb
+++ b/gcc/ada/exp_dist.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -2176,7 +2176,7 @@ package body Exp_Dist is
Append_To (Decls,
Make_Pragma (Loc,
- Chars => Name_Import,
+ Chars => Name_Import,
Pragma_Argument_Associations => New_List (
Make_Pragma_Argument_Association (Loc,
Chars => Name_Convention,
diff --git a/gcc/ada/exp_intr.adb b/gcc/ada/exp_intr.adb
index f86cbe5e248..2d0d817fc8a 100644
--- a/gcc/ada/exp_intr.adb
+++ b/gcc/ada/exp_intr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -454,7 +454,7 @@ package body Exp_Intr is
New_Occurrence_Of (Standard_Character, Loc)),
Make_Pragma (Loc,
- Chars => Name_Import,
+ Chars => Name_Import,
Pragma_Argument_Associations => New_List (
Make_Pragma_Argument_Association (Loc,
Expression => Make_Identifier (Loc, Name_Ada)),
diff --git a/gcc/ada/exp_prag.adb b/gcc/ada/exp_prag.adb
index 68a340d7c47..2ae1b561907 100644
--- a/gcc/ada/exp_prag.adb
+++ b/gcc/ada/exp_prag.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -513,7 +513,7 @@ package body Exp_Prag is
Insert_After_And_Analyze (N,
Make_Pragma (Loc,
- Chars => Name_Machine_Attribute,
+ Chars => Name_Machine_Attribute,
Pragma_Argument_Associations => New_List (
Make_Pragma_Argument_Association (Iloc,
Expression => New_Copy_Tree (Internal)),
@@ -644,44 +644,38 @@ package body Exp_Prag is
(UI_To_Int (Exception_Code (Id)) / 8 * 8);
Excep_Alias :=
- Make_Pragma
- (Loc,
- Name_Linker_Alias,
- New_List
- (Make_Pragma_Argument_Association
- (Sloc => Loc,
- Expression =>
- New_Reference_To (Excep_Internal, Loc)),
-
- Make_Pragma_Argument_Association
- (Sloc => Loc,
- Expression =>
- Make_String_Literal
- (Sloc => Loc,
- Strval => End_String))));
+ Make_Pragma (Loc,
+ Chars => Name_Linker_Alias,
+ Pragma_Argument_Associations => New_List (
+ Make_Pragma_Argument_Association (Loc,
+ Expression =>
+ New_Reference_To (Excep_Internal, Loc)),
+
+ Make_Pragma_Argument_Association (Loc,
+ Expression =>
+ Make_String_Literal (Loc, End_String))));
Insert_Action (N, Excep_Alias);
Analyze (Excep_Alias);
Export_Pragma :=
- Make_Pragma
- (Loc,
- Name_Export,
- New_List
- (Make_Pragma_Argument_Association (Loc,
- Expression => Make_Identifier (Loc, Name_C)),
-
- Make_Pragma_Argument_Association (Loc,
- Expression =>
- New_Reference_To (Excep_Internal, Loc)),
-
- Make_Pragma_Argument_Association (Loc,
- Expression =>
- Make_String_Literal (Loc, Excep_Image)),
-
- Make_Pragma_Argument_Association (Loc,
- Expression =>
- Make_String_Literal (Loc, Excep_Image))));
+ Make_Pragma (Loc,
+ Chars => Name_Export,
+ Pragma_Argument_Associations => New_List (
+ Make_Pragma_Argument_Association (Loc,
+ Expression => Make_Identifier (Loc, Name_C)),
+
+ Make_Pragma_Argument_Association (Loc,
+ Expression =>
+ New_Reference_To (Excep_Internal, Loc)),
+
+ Make_Pragma_Argument_Association (Loc,
+ Expression =>
+ Make_String_Literal (Loc, Excep_Image)),
+
+ Make_Pragma_Argument_Association (Loc,
+ Expression =>
+ Make_String_Literal (Loc, Excep_Image))));
Insert_Action (N, Export_Pragma);
Analyze (Export_Pragma);
diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb
index 4e04ae859aa..1900a9fd7ea 100644
--- a/gcc/ada/exp_util.adb
+++ b/gcc/ada/exp_util.adb
@@ -7944,6 +7944,43 @@ package body Exp_Util is
end if;
end Type_May_Have_Bit_Aligned_Components;
+ ----------------------------------
+ -- Within_Case_Or_If_Expression --
+ ----------------------------------
+
+ function Within_Case_Or_If_Expression (N : Node_Id) return Boolean is
+ Par : Node_Id;
+
+ begin
+ -- Locate an enclosing case or if expression. Note: these constructs can
+ -- get expanded into Expression_With_Actions, hence the need to test
+ -- using the original node.
+
+ Par := N;
+ while Present (Par) loop
+ if Nkind_In (Original_Node (Par), N_Case_Expression,
+ N_If_Expression)
+ then
+ return True;
+
+ -- Prevent the search from going too far
+
+ elsif Nkind_In (Par, N_Entry_Body,
+ N_Package_Body,
+ N_Package_Declaration,
+ N_Protected_Body,
+ N_Subprogram_Body,
+ N_Task_Body)
+ then
+ return False;
+ end if;
+
+ Par := Parent (Par);
+ end loop;
+
+ return False;
+ end Within_Case_Or_If_Expression;
+
----------------------------
-- Wrap_Cleanup_Procedure --
----------------------------
diff --git a/gcc/ada/exp_util.ads b/gcc/ada/exp_util.ads
index 339fd4396a1..e0b0e09f88b 100644
--- a/gcc/ada/exp_util.ads
+++ b/gcc/ada/exp_util.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -818,6 +818,9 @@ package Exp_Util is
-- is conservative, in that a result of False is decisive. A result of True
-- means that such a component may or may not be present.
+ function Within_Case_Or_If_Expression (N : Node_Id) return Boolean;
+ -- Determine whether arbitrary node N is within a case or an if expression
+
procedure Wrap_Cleanup_Procedure (N : Node_Id);
-- Given an N_Subprogram_Body node, this procedure adds an Abort_Defer call
-- at the start of the statement sequence, and an Abort_Undefer call at the
diff --git a/gcc/ada/gcc-interface/Make-lang.in b/gcc/ada/gcc-interface/Make-lang.in
index 96e1611a1de..57f90090dcf 100644
--- a/gcc/ada/gcc-interface/Make-lang.in
+++ b/gcc/ada/gcc-interface/Make-lang.in
@@ -1012,9 +1012,10 @@ ada/targtyps.o : ada/gcc-interface/targtyps.c $(CONFIG_H) $(SYSTEM_H) \
ada/trans.o : ada/gcc-interface/trans.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(TREE_H) $(FLAGS_H) output.h tree-iterator.h $(GIMPLE_H) \
- $(BITMAP_H) $(CGRAPH_H) $(TARGET_H) ada/gcc-interface/ada.h ada/adadecode.h \
- ada/types.h ada/atree.h ada/elists.h ada/namet.h ada/nlists.h ada/snames.h \
- ada/stringt.h ada/uintp.h ada/urealp.h ada/fe.h ada/sinfo.h ada/einfo.h \
+ $(BITMAP_H) $(CGRAPH_H) $(DIAGNOSTIC_H) $(OPTS_H) $(TARGET_H) \
+ ada/gcc-interface/ada.h ada/adadecode.h ada/types.h ada/atree.h \
+ ada/elists.h ada/namet.h ada/nlists.h ada/snames.h ada/stringt.h \
+ ada/uintp.h ada/urealp.h ada/fe.h ada/sinfo.h ada/einfo.h \
ada/gcc-interface/gadaint.h $(ADA_TREE_H) ada/gcc-interface/gigi.h \
gt-ada-trans.h
$(COMPILER) -c $(ALL_COMPILERFLAGS) -I.. $(ALL_CPPFLAGS) $< -o $@
@@ -1078,11 +1079,11 @@ ada/ada.o : ada/ada.ads ada/system.ads
ada/alfa.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alfa.ads ada/alfa.adb ada/gnat.ads ada/g-table.ads \
ada/g-table.adb ada/hostparm.ads ada/output.ads ada/output.adb \
- ada/put_alfa.ads ada/put_alfa.adb ada/system.ads ada/s-exctab.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/types.ads \
- ada/unchconv.ads ada/unchdeal.ads
+ ada/put_alfa.ads ada/put_alfa.adb ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/types.ads ada/unchconv.ads ada/unchdeal.ads
ada/ali-util.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/ali.ads ada/ali.adb ada/ali-util.ads \
@@ -1097,29 +1098,30 @@ ada/ali-util.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/scans.ads ada/scng.ads ada/scng.adb ada/sinfo.ads ada/sinfo.adb \
ada/sinput.ads ada/sinput.adb ada/sinput-c.ads ada/snames.ads \
ada/stand.ads ada/stringt.ads ada/stringt.adb ada/styleg.ads \
- ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-carun8.ads \
- ada/s-crc32.ads ada/s-crc32.adb ada/s-exctab.ads ada/s-htable.ads \
- ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-utf_32.ads ada/s-utf_32.adb ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/types.adb ada/uintp.ads \
- ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/urealp.adb ada/widechar.ads
+ ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
+ ada/s-carun8.ads ada/s-crc32.ads ada/s-crc32.adb ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-utf_32.ads ada/s-utf_32.adb ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/types.adb \
+ ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads
ada/ali.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/ali.ads ada/ali.adb ada/alloc.ads ada/butil.ads ada/casing.ads \
ada/debug.ads ada/fname.ads ada/gnat.ads ada/g-htable.ads \
ada/gnatvsn.ads ada/hostparm.ads ada/interfac.ads ada/namet.ads \
ada/namet.adb ada/opt.ads ada/osint.ads ada/output.ads ada/rident.ads \
- ada/system.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
- ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
- ada/types.ads ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-exctab.adb \
+ ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/widechar.ads
ada/alloc.o : ada/alloc.ads ada/system.ads
@@ -1129,23 +1131,24 @@ ada/aspects.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/einfo.adb ada/gnat.ads ada/g-htable.ads ada/hostparm.ads \
ada/namet.ads ada/nlists.ads ada/nlists.adb ada/opt.ads ada/output.ads \
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-stalib.ads ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
+ ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-stalib.ads ada/s-strhas.ads ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
ada/atree.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads \
ada/hostparm.ads ada/namet.ads ada/nlists.ads ada/nlists.adb \
ada/opt.ads ada/output.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
- ada/snames.ads ada/system.ads ada/s-exctab.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+ ada/snames.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads
ada/back_end.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1158,11 +1161,11 @@ ada/back_end.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/opt.ads ada/osint.ads ada/osint-c.ads ada/output.ads ada/scans.ads \
ada/sinfo.ads ada/sinput.ads ada/sinput.adb ada/snames.ads \
ada/stand.ads ada/stringt.ads ada/switch.ads ada/switch-c.ads \
- ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/bcheck.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
@@ -1176,12 +1179,12 @@ ada/bcheck.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/rident.ads ada/scans.ads ada/scng.ads ada/scng.adb ada/sinfo.ads \
ada/sinput.ads ada/sinput-c.ads ada/snames.ads ada/stringt.ads \
ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
- ada/s-crc32.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/s-assert.ads ada/s-crc32.ads ada/s-exctab.ads ada/s-htable.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/binde.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
@@ -1190,22 +1193,22 @@ ada/binde.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/debug.ads ada/fname.ads ada/gnat.ads ada/g-htable.ads \
ada/gnatvsn.ads ada/hostparm.ads ada/interfac.ads ada/namet.ads \
ada/namet.adb ada/opt.ads ada/osint.ads ada/output.ads ada/rident.ads \
- ada/system.ads ada/s-casuti.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tree_io.ads ada/types.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
+ ada/system.ads ada/s-assert.ads ada/s-casuti.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
+ ada/types.ads ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
ada/binderr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/binderr.ads ada/binderr.adb \
ada/butil.ads ada/debug.ads ada/hostparm.ads ada/namet.ads ada/opt.ads \
- ada/output.ads ada/system.ads ada/s-exctab.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
- ada/unchdeal.ads
+ ada/output.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads \
+ ada/unchconv.ads ada/unchdeal.ads
ada/bindgen.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/ali.ads ada/ali.adb ada/alloc.ads ada/binde.ads \
@@ -1213,41 +1216,42 @@ ada/bindgen.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/butil.ads ada/casing.ads ada/debug.ads ada/fname.ads ada/gnat.ads \
ada/g-hesora.ads ada/g-htable.ads ada/gnatvsn.ads ada/hostparm.ads \
ada/namet.ads ada/opt.ads ada/osint.ads ada/osint-b.ads ada/output.ads \
- ada/rident.ads ada/system.ads ada/s-casuti.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
- ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+ ada/rident.ads ada/system.ads ada/s-assert.ads ada/s-casuti.ads \
+ ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads
ada/bindusg.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/bindusg.ads ada/bindusg.adb \
ada/debug.ads ada/gnatvsn.ads ada/hostparm.ads ada/namet.ads \
ada/opt.ads ada/osint.ads ada/output.ads ada/switch.ads ada/system.ads \
- ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
- ada/unchdeal.ads
+ ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads \
+ ada/unchconv.ads ada/unchdeal.ads
ada/butil.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/butil.ads ada/butil.adb \
ada/debug.ads ada/hostparm.ads ada/namet.ads ada/opt.ads ada/output.ads \
- ada/rident.ads ada/system.ads ada/s-exctab.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
- ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+ ada/rident.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads
ada/casing.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/casing.ads ada/casing.adb \
ada/csets.ads ada/csets.adb ada/debug.ads ada/hostparm.ads \
ada/namet.ads ada/opt.ads ada/output.ads ada/system.ads \
- ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
- ada/types.ads ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
+ ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/widechar.ads
ada/checks.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1273,15 +1277,15 @@ ada/checks.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
ada/snames.ads ada/sprint.ads ada/stand.ads ada/stringt.ads \
ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
- ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
- ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
- ada/validsw.ads ada/widechar.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+ ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+ ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/urealp.adb ada/validsw.ads ada/widechar.ads
ada/comperr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1293,14 +1297,14 @@ ada/comperr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/nlists.ads ada/opt.ads ada/osint.ads ada/output.ads ada/output.adb \
ada/rident.ads ada/sdefault.ads ada/sinfo.ads ada/sinfo.adb \
ada/sinput.ads ada/snames.ads ada/sprint.ads ada/stand.ads \
- ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/targparm.ads ada/tree_io.ads ada/treepr.ads ada/types.ads \
- ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/widechar.ads
+ ada/stringt.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/targparm.ads ada/tree_io.ads ada/treepr.ads \
+ ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/csets.o : ada/ada.ads ada/a-unccon.ads ada/a-uncdea.ads ada/csets.ads \
ada/csets.adb ada/hostparm.ads ada/opt.ads ada/system.ads \
@@ -1325,15 +1329,15 @@ ada/cstand.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_util.ads ada/sem_util.adb ada/sinfo.ads ada/sinfo.adb \
ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
- ada/system.ads ada/s-crc32.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
- ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
- ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/urealp.adb ada/widechar.ads
+ ada/system.ads ada/s-assert.ads ada/s-crc32.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+ ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads
ada/debug.o : ada/debug.ads ada/debug.adb ada/system.ads
@@ -1342,11 +1346,12 @@ ada/debug_a.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/atree.adb ada/casing.ads ada/debug.ads ada/debug_a.ads \
ada/debug_a.adb ada/einfo.ads ada/hostparm.ads ada/namet.ads \
ada/nlists.ads ada/opt.ads ada/output.ads ada/sinfo.ads ada/sinput.ads \
- ada/snames.ads ada/system.ads ada/s-exctab.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+ ada/snames.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads
ada/einfo.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1354,30 +1359,31 @@ ada/einfo.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/gnat.ads ada/g-htable.ads ada/hostparm.ads ada/namet.ads \
ada/nlists.ads ada/nlists.adb ada/opt.ads ada/output.ads ada/sinfo.ads \
ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/snames.adb \
- ada/stand.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
- ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads ada/urealp.adb
+ ada/stand.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb
ada/elists.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/elists.ads \
ada/elists.adb ada/hostparm.ads ada/opt.ads ada/output.ads \
- ada/system.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
+ ada/unchdeal.ads
ada/err_vars.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/err_vars.ads \
ada/hostparm.ads ada/namet.ads ada/opt.ads ada/output.ads \
- ada/system.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
- ada/unchconv.ads ada/unchdeal.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-exctab.adb \
+ ada/s-htable.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads
ada/errout.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1389,14 +1395,14 @@ ada/errout.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/nlists.ads ada/nlists.adb ada/opt.ads ada/output.ads ada/rident.ads \
ada/scans.ads ada/sem_aux.ads ada/sinfo.ads ada/sinfo.adb \
ada/sinput.ads ada/sinput.adb ada/snames.ads ada/stand.ads \
- ada/stringt.ads ada/stylesw.ads ada/system.ads ada/s-exctab.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tree_io.ads ada/types.ads \
- ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/widechar.ads
+ ada/stringt.ads ada/stylesw.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/erroutc.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1405,26 +1411,26 @@ ada/erroutc.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/g-byorma.ads ada/hostparm.ads ada/interfac.ads ada/namet.ads \
ada/namet.adb ada/nlists.ads ada/opt.ads ada/output.ads ada/output.adb \
ada/rident.ads ada/scans.ads ada/sinfo.ads ada/sinput.ads \
- ada/sinput.adb ada/snames.ads ada/system.ads ada/s-exctab.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tree_io.ads ada/types.ads \
- ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
- ada/widechar.ads
+ ada/sinput.adb ada/snames.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/widechar.ads
ada/eval_fat.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/einfo.ads \
ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/eval_fat.ads \
ada/eval_fat.adb ada/exp_tss.ads ada/gnat.ads ada/g-htable.ads \
ada/hostparm.ads ada/namet.ads ada/opt.ads ada/output.ads \
- ada/sem_util.ads ada/snames.ads ada/system.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
- ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads ada/urealp.adb
+ ada/sem_util.ads ada/snames.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-htable.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb
ada/exp_aggr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1450,15 +1456,16 @@ ada/exp_aggr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_util.adb ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb \
ada/sinput.ads ada/snames.ads ada/sprint.ads ada/stand.ads \
ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
- ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-exctab.adb \
- ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
- ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
- ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads ada/validsw.ads ada/widechar.ads
+ ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-exctab.adb ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
+ ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
+ ada/widechar.ads
ada/exp_alfa.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1469,12 +1476,13 @@ ada/exp_alfa.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/opt.ads ada/output.ads ada/rtsfind.ads ada/sem_aux.ads \
ada/sem_aux.adb ada/sem_res.ads ada/sem_util.ads ada/sinfo.ads \
ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tbuild.ads ada/tree_io.ads ada/types.ads \
- ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tbuild.ads ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads
ada/exp_atag.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1489,14 +1497,14 @@ ada/exp_atag.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/rtsfind.adb ada/sem.ads ada/sem_aux.ads ada/sem_aux.adb \
ada/sem_ch7.ads ada/sem_disp.ads ada/sem_dist.ads ada/sem_util.ads \
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/types.ads \
- ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads
+ ada/stringt.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
ada/exp_attr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1523,16 +1531,16 @@ ada/exp_attr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \
- ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-carun8.ads \
- ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
- ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
- ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
- ada/widechar.ads
+ ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
+ ada/s-carun8.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+ ada/ttypes.ads ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb \
+ ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+ ada/validsw.ads ada/widechar.ads
ada/exp_cg.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1543,13 +1551,13 @@ ada/exp_cg.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/nlists.ads ada/opt.ads ada/output.ads ada/sem_aux.ads \
ada/sem_aux.adb ada/sem_disp.ads ada/sem_type.ads ada/sem_util.ads \
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
- ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
ada/exp_ch11.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1568,14 +1576,15 @@ ada/exp_ch11.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_ch6.ads ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_ch9.ads \
ada/sem_prag.ads ada/sem_res.ads ada/sem_util.ads ada/sinfo.ads \
ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
- ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/stringt.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+ ada/tbuild.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/widechar.ads
ada/exp_ch12.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1586,12 +1595,12 @@ ada/exp_ch12.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/output.ads ada/restrict.ads ada/rident.ads ada/rtsfind.ads \
ada/sem_aux.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
ada/snames.ads ada/stand.ads ada/stringt.ads ada/system.ads \
- ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
- ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads
+ ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tbuild.ads ada/tbuild.adb \
+ ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads
ada/exp_ch13.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1605,14 +1614,14 @@ ada/exp_ch13.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/rident.ads ada/rtsfind.ads ada/sem.ads ada/sem_aux.ads \
ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_eval.ads ada/sem_util.ads \
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
- ada/tbuild.ads ada/tree_io.ads ada/types.ads ada/uintp.ads \
- ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
- ada/validsw.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/types.ads \
+ ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/validsw.ads
ada/exp_ch2.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1623,11 +1632,12 @@ ada/exp_ch2.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/nmake.adb ada/opt.ads ada/output.ads ada/rtsfind.ads ada/sem.ads \
ada/sem_eval.ads ada/sem_res.ads ada/sem_util.ads ada/sem_warn.ads \
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tbuild.ads ada/tree_io.ads ada/types.ads \
- ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tbuild.ads ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads
ada/exp_ch3.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1652,15 +1662,15 @@ ada/exp_ch3.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_mech.ads ada/sem_prag.ads ada/sem_res.ads ada/sem_scil.ads \
ada/sem_type.ads ada/sem_util.ads ada/sem_warn.ads ada/sinfo.ads \
ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/sprint.ads \
- ada/stand.ads ada/stringt.ads ada/system.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
- ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
- ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads ada/validsw.ads
+ ada/stand.ads ada/stringt.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
+ ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads
ada/exp_ch4.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1687,15 +1697,16 @@ ada/exp_ch4.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
ada/snames.ads ada/sprint.ads ada/stand.ads ada/stringt.ads \
ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
- ada/system.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
- ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
- ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/urealp.adb ada/validsw.ads ada/widechar.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-exctab.adb \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+ ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+ ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/validsw.ads \
+ ada/widechar.ads
ada/exp_ch5.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1719,15 +1730,15 @@ ada/exp_ch5.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_util.adb ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb \
ada/sinput.ads ada/snames.ads ada/sprint.ads ada/stand.ads \
ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \
- ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
- ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
- ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/validsw.ads
+ ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
+ ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/validsw.ads
ada/exp_ch6.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1758,15 +1769,15 @@ ada/exp_ch6.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
ada/snames.ads ada/sprint.ads ada/stand.ads ada/stringt.ads \
ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
- ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
- ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
- ada/widechar.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+ ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+ ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/validsw.ads ada/widechar.ads
ada/exp_ch7.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1792,13 +1803,13 @@ ada/exp_ch7.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_util.adb ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
ada/snames.ads ada/stand.ads ada/stringt.ads ada/style.ads \
ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
- ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
- ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
- ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+ ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
ada/widechar.ads
@@ -1816,14 +1827,14 @@ ada/exp_ch8.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_ch8.ads ada/sem_eval.ads ada/sem_prag.ads ada/sem_res.ads \
ada/sem_type.ads ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb \
ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
- ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
- ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
- ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
- ada/validsw.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads \
+ ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/validsw.ads
ada/exp_ch9.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1848,15 +1859,15 @@ ada/exp_ch9.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sem_warn.ads \
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
- ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
- ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
- ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
- ada/validsw.ads ada/widechar.ads
+ ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+ ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+ ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/validsw.ads ada/widechar.ads
ada/exp_code.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1877,15 +1888,15 @@ ada/exp_code.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_util.adb ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb \
ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
ada/stringt.adb ada/style.ads ada/styleg.ads ada/styleg.adb \
- ada/stylesw.ads ada/system.ads ada/s-carun8.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
- ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/types.adb \
- ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/widechar.ads
+ ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-carun8.ads \
+ ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+ ada/types.adb ada/uintp.ads ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/exp_dbug.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1896,14 +1907,14 @@ ada/exp_dbug.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/opt.ads ada/output.ads ada/rident.ads ada/sem_aux.ads \
ada/sem_eval.ads ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb \
ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
- ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/types.ads \
- ada/uintp.ads ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/urealp.adb ada/widechar.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads
ada/exp_disp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1926,15 +1937,16 @@ ada/exp_disp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sinfo.ads \
ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \
- ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-carun8.ads \
- ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
- ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
- ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads
+ ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
+ ada/s-carun8.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+ ada/ttypes.ads ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb \
+ ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+ ada/validsw.ads
ada/exp_dist.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1950,14 +1962,14 @@ ada/exp_dist.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_aux.adb ada/sem_cat.ads ada/sem_ch12.ads ada/sem_ch3.ads \
ada/sem_ch8.ads ada/sem_dist.ads ada/sem_eval.ads ada/sem_util.ads \
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
- ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+ ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/exp_fixd.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
@@ -1973,13 +1985,13 @@ ada/exp_fixd.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_eval.adb ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads \
ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
ada/snames.ads ada/stand.ads ada/stringt.ads ada/system.ads \
- ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tbuild.ads ada/tree_io.ads ada/types.ads \
- ada/uintp.ads ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/urealp.adb
+ ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tbuild.ads ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/urealp.adb
ada/exp_imgv.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1995,15 +2007,15 @@ ada/exp_imgv.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/rtsfind.adb ada/sem.ads ada/sem_aux.ads ada/sem_ch7.ads \
ada/sem_dist.ads ada/sem_res.ads ada/sem_util.ads ada/sinfo.ads \
ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/tbuild.ads ada/tbuild.adb \
- ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
- ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/urealp.adb ada/widechar.ads
+ ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tbuild.ads \
+ ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+ ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads
ada/exp_intr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2026,13 +2038,13 @@ ada/exp_intr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput.adb \
ada/snames.ads ada/stand.ads ada/stringt.ads ada/style.ads \
ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
- ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
- ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
- ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+ ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
ada/validsw.ads ada/widechar.ads
@@ -2053,14 +2065,15 @@ ada/exp_pakd.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_prag.ads ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads \
ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
ada/snames.ads ada/sprint.ads ada/stand.ads ada/stringt.ads \
- ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
- ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+ ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+ ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+ ada/validsw.ads
ada/exp_prag.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2075,14 +2088,15 @@ ada/exp_prag.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/scans.ads ada/sem.ads ada/sem_ch8.ads ada/sem_res.ads \
ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
ada/sinput.adb ada/snames.ads ada/snames.adb ada/stand.ads \
- ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
- ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tbuild.ads ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/widechar.ads
ada/exp_sel.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/debug.ads \
@@ -2091,12 +2105,13 @@ ada/exp_sel.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads \
ada/output.ads ada/restrict.ads ada/rident.ads ada/rtsfind.ads \
ada/sem_aux.ads ada/sinfo.ads ada/sinfo.adb ada/snames.ads \
- ada/stand.ads ada/stringt.ads ada/system.ads ada/s-exctab.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/types.ads \
- ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+ ada/stand.ads ada/stringt.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads
ada/exp_smem.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2106,12 +2121,12 @@ ada/exp_smem.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
ada/rtsfind.ads ada/sem.ads ada/sem_aux.ads ada/sem_util.ads \
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-exctab.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tbuild.ads \
- ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads
+ ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tbuild.ads ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
ada/exp_strm.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2123,13 +2138,13 @@ ada/exp_strm.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/output.ads ada/restrict.ads ada/rident.ads ada/rtsfind.ads \
ada/sem_aux.ads ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb \
ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
- ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tbuild.ads \
- ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
- ada/uintp.ads ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
+ ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads
ada/exp_tss.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2143,13 +2158,13 @@ ada/exp_tss.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/restrict.ads ada/restrict.adb ada/rident.ads ada/rtsfind.ads \
ada/sem_aux.ads ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb \
ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
- ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
- ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/exp_util.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2172,16 +2187,16 @@ ada/exp_util.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_prag.ads ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads \
ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
ada/snames.ads ada/stand.ads ada/stringt.ads ada/stringt.adb \
- ada/system.ads ada/s-carun8.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
- ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/types.adb \
- ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/validsw.ads \
- ada/widechar.ads
+ ada/system.ads ada/s-assert.ads ada/s-carun8.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+ ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+ ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
+ ada/validsw.ads ada/widechar.ads
ada/exp_vfpt.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2191,12 +2206,12 @@ ada/exp_vfpt.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
ada/rtsfind.ads ada/sem_res.ads ada/sinfo.ads ada/sinfo.adb \
ada/sinput.ads ada/snames.ads ada/stand.ads ada/system.ads \
- ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tbuild.ads ada/tree_io.ads ada/types.ads \
- ada/uintp.ads ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/urealp.adb
+ ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tbuild.ads ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/urealp.adb
ada/expander.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2214,44 +2229,46 @@ ada/expander.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_ch2.ads ada/sem_ch3.ads ada/sem_ch4.ads ada/sem_ch5.ads \
ada/sem_ch6.ads ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_ch9.ads \
ada/sem_prag.ads ada/sem_util.ads ada/sinfo.ads ada/sinput.ads \
- ada/snames.ads ada/stand.ads ada/system.ads ada/s-exctab.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
+ ada/snames.ads ada/stand.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
ada/fmap.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/fmap.ads ada/fmap.adb \
ada/gnat.ads ada/g-htable.ads ada/hostparm.ads ada/namet.ads \
ada/opt.ads ada/osint.ads ada/output.ads ada/system.ads \
- ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+ ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
+ ada/unchdeal.ads
ada/fname-uf.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/casing.ads ada/debug.ads \
ada/fmap.ads ada/fname.ads ada/fname-uf.ads ada/fname-uf.adb \
ada/gnat.ads ada/g-htable.ads ada/hostparm.ads ada/krunch.ads \
ada/namet.ads ada/opt.ads ada/osint.ads ada/output.ads ada/rident.ads \
- ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
- ada/types.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/widechar.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
+ ada/s-htable.adb ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tree_io.ads ada/types.ads ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/widechar.ads
ada/fname.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/fname.ads \
ada/fname.adb ada/hostparm.ads ada/namet.ads ada/opt.ads ada/output.ads \
- ada/system.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
+ ada/unchdeal.ads
ada/freeze.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2279,15 +2296,15 @@ ada/freeze.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_util.adb ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb \
ada/sinfo-cn.ads ada/sinput.ads ada/snames.ads ada/stand.ads \
ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
- ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-exctab.adb \
- ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
- ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
- ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/validsw.ads ada/widechar.ads
+ ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-exctab.adb ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+ ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/validsw.ads ada/widechar.ads
ada/frontend.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2307,15 +2324,15 @@ ada/frontend.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_scil.ads ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb \
ada/sinput.ads ada/sinput-l.ads ada/snames.ads ada/sprint.ads \
ada/stand.ads ada/stringt.ads ada/style.ads ada/styleg.ads \
- ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-crc32.ads \
- ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
- ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/types.ads \
- ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/widechar.ads
+ ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
+ ada/s-crc32.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/g-byorma.o : ada/gnat.ads ada/g-byorma.ads ada/g-byorma.adb \
ada/system.ads
@@ -2338,9 +2355,9 @@ ada/g-u3spch.o : ada/gnat.ads ada/g-spchge.ads ada/g-spchge.adb \
ada/get_alfa.o : ada/ada.ads ada/a-ioexce.ads ada/a-unccon.ads \
ada/alfa.ads ada/get_alfa.ads ada/get_alfa.adb ada/gnat.ads \
- ada/g-table.ads ada/g-table.adb ada/system.ads ada/s-exctab.ads \
- ada/s-memory.ads ada/s-stalib.ads ada/s-unstyp.ads ada/types.ads \
- ada/unchconv.ads ada/unchdeal.ads
+ ada/g-table.ads ada/g-table.adb ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-memory.ads ada/s-stalib.ads ada/s-unstyp.ads \
+ ada/types.ads ada/unchconv.ads ada/unchdeal.ads
ada/get_targ.o : ada/ada.ads ada/a-unccon.ads ada/get_targ.ads \
ada/get_targ.adb ada/system.ads ada/s-exctab.ads ada/s-stalib.ads \
@@ -2385,13 +2402,13 @@ ada/gnatbind.o : ada/ada.ads ada/a-comlin.ads ada/a-clrefi.ads \
ada/gnatbind.adb ada/gnatvsn.ads ada/hostparm.ads ada/namet.ads \
ada/opt.ads ada/osint.ads ada/osint-b.ads ada/output.ads ada/rident.ads \
ada/snames.ads ada/switch.ads ada/switch.adb ada/switch-b.ads \
- ada/system.ads ada/s-casuti.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tree_io.ads ada/types.ads \
- ada/unchconv.ads ada/unchdeal.ads
+ ada/system.ads ada/s-assert.ads ada/s-casuti.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
+ ada/types.ads ada/unchconv.ads ada/unchdeal.ads
ada/gnatvsn.o : ada/ada.ads ada/a-unccon.ads ada/gnatvsn.ads \
ada/gnatvsn.adb ada/system.ads ada/s-secsta.ads ada/s-stoele.ads \
@@ -2410,12 +2427,13 @@ ada/impunit.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/lib-list.adb ada/lib-sort.adb ada/namet.ads ada/nlists.ads \
ada/opt.ads ada/output.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
ada/snames.ads ada/stand.ads ada/stringt.ads ada/system.ads \
- ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+ ada/widechar.ads
ada/inline.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2428,12 +2446,13 @@ ada/inline.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/nlists.adb ada/opt.ads ada/output.ads ada/sem.ads ada/sem_aux.ads \
ada/sem_ch10.ads ada/sem_ch12.ads ada/sem_ch8.ads ada/sem_util.ads \
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/stringt.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+ ada/widechar.ads
ada/interfac.o : ada/interfac.ads ada/system.ads
@@ -2444,17 +2463,17 @@ ada/itypes.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/itypes.ads ada/itypes.adb ada/namet.ads ada/nlists.ads ada/opt.ads \
ada/output.ads ada/rident.ads ada/sem.ads ada/sem_util.ads \
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
- ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
ada/krunch.o : ada/ada.ads ada/a-unccon.ads ada/hostparm.ads \
- ada/krunch.ads ada/krunch.adb ada/system.ads ada/s-exctab.ads \
- ada/s-stalib.ads ada/s-unstyp.ads ada/types.ads ada/unchconv.ads \
- ada/unchdeal.ads
+ ada/krunch.ads ada/krunch.adb ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-stalib.ads ada/s-unstyp.ads ada/types.ads \
+ ada/unchconv.ads ada/unchdeal.ads
ada/layout.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2473,15 +2492,15 @@ ada/layout.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sinfo.ads \
ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
- ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
- ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
- ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads
+ ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+ ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+ ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads
ada/lib-load.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2497,24 +2516,24 @@ ada/lib-load.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput.adb \
ada/sinput-l.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
- ada/system.ads ada/s-crc32.ads ada/s-exctab.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
- ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/system.ads ada/s-assert.ads ada/s-crc32.ads ada/s-exctab.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tbuild.ads ada/tbuild.adb \
+ ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/lib-util.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads \
ada/lib.ads ada/lib-util.ads ada/lib-util.adb ada/namet.ads ada/opt.ads \
ada/osint.ads ada/osint-c.ads ada/output.ads ada/stringt.ads \
- ada/stringt.adb ada/system.ads ada/s-carun8.ads ada/s-exctab.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tree_io.ads ada/types.ads ada/types.adb ada/uintp.ads \
+ ada/stringt.adb ada/system.ads ada/s-assert.ads ada/s-carun8.ads \
+ ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tree_io.ads ada/types.ads ada/types.adb ada/uintp.ads \
ada/unchconv.ads ada/unchdeal.ads
ada/lib-writ.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
@@ -2534,15 +2553,15 @@ ada/lib-writ.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/snames.ads \
ada/stand.ads ada/stringt.ads ada/stringt.adb ada/style.ads \
ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
- ada/s-casuti.ads ada/s-crc32.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/tbuild.ads ada/tbuild.adb \
- ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
- ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
- ada/widechar.ads
+ ada/s-assert.ads ada/s-casuti.ads ada/s-crc32.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tbuild.ads \
+ ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+ ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/widechar.ads
ada/lib-xref.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alfa.ads ada/alfa.adb ada/alloc.ads \
@@ -2565,15 +2584,15 @@ ada/lib-xref.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
ada/sinput.adb ada/snames.ads ada/stand.ads ada/stringt.ads \
ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
- ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
- ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
- ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
- ada/widechar.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
+ ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+ ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/widechar.ads
ada/lib.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/alloc.ads ada/aspects.ads ada/atree.ads ada/atree.adb \
@@ -2584,12 +2603,12 @@ ada/lib.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/namet.adb ada/nlists.ads ada/nlists.adb ada/opt.ads ada/output.ads \
ada/scans.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput.adb \
ada/snames.ads ada/stand.ads ada/stringt.ads ada/system.ads \
- ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
- ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/live.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2600,43 +2619,44 @@ ada/live.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/namet.ads ada/nlists.ads ada/nlists.adb ada/opt.ads ada/output.ads \
ada/sem_aux.ads ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb \
ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
- ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/namet-sp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/gnat.ads \
ada/g-u3spch.ads ada/hostparm.ads ada/interfac.ads ada/namet.ads \
ada/namet.adb ada/namet-sp.ads ada/namet-sp.adb ada/opt.ads \
- ada/output.ads ada/system.ads ada/s-carun8.ads ada/s-exctab.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcnv.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/types.adb \
- ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
+ ada/output.ads ada/system.ads ada/s-assert.ads ada/s-carun8.ads \
+ ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcnv.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+ ada/types.ads ada/types.adb ada/unchconv.ads ada/unchdeal.ads \
+ ada/widechar.ads
ada/namet.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads \
ada/interfac.ads ada/namet.ads ada/namet.adb ada/opt.ads ada/output.ads \
- ada/system.ads ada/s-carun8.ads ada/s-exctab.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tree_io.ads ada/types.ads ada/types.adb ada/unchconv.ads \
- ada/unchdeal.ads ada/widechar.ads
+ ada/system.ads ada/s-assert.ads ada/s-carun8.ads ada/s-exctab.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tree_io.ads ada/types.ads ada/types.adb \
+ ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
ada/nlists.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads \
ada/hostparm.ads ada/namet.ads ada/nlists.ads ada/nlists.adb \
ada/opt.ads ada/output.ads ada/sinfo.ads ada/sinput.ads ada/snames.ads \
- ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
ada/nmake.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
@@ -2644,11 +2664,11 @@ ada/nmake.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/einfo.ads ada/hostparm.ads ada/namet.ads ada/nlists.ads \
ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads ada/sinfo.ads \
ada/sinfo.adb ada/snames.ads ada/stand.ads ada/system.ads \
- ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
- ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads
+ ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads
ada/opt.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/gnatvsn.ads ada/hostparm.ads ada/opt.ads ada/opt.adb ada/system.ads \
@@ -2661,45 +2681,45 @@ ada/opt.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/osint-b.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads \
ada/namet.ads ada/opt.ads ada/osint.ads ada/osint-b.ads ada/osint-b.adb \
- ada/output.ads ada/rident.ads ada/system.ads ada/s-exctab.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/targparm.ads ada/tree_io.ads ada/types.ads ada/unchconv.ads \
- ada/unchdeal.ads
+ ada/output.ads ada/rident.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/targparm.ads ada/tree_io.ads ada/types.ads \
+ ada/unchconv.ads ada/unchdeal.ads
ada/osint-c.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads \
ada/interfac.ads ada/namet.ads ada/namet.adb ada/opt.ads ada/osint.ads \
ada/osint-c.ads ada/osint-c.adb ada/output.ads ada/system.ads \
- ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/widechar.ads
+ ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/widechar.ads
ada/osint.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/fmap.ads ada/gnat.ads \
ada/g-htable.ads ada/gnatvsn.ads ada/hostparm.ads ada/interfac.ads \
ada/namet.ads ada/namet.adb ada/opt.ads ada/osint.ads ada/osint.adb \
ada/output.ads ada/rident.ads ada/sdefault.ads ada/system.ads \
- ada/s-casuti.ads ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tree_io.ads ada/types.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
+ ada/s-assert.ads ada/s-casuti.ads ada/s-exctab.ads ada/s-htable.ads \
+ ada/s-htable.adb ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
+ ada/types.ads ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
ada/output.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/hostparm.ads ada/output.ads ada/output.adb \
- ada/system.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/types.ads ada/unchconv.ads \
- ada/unchdeal.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-exctab.adb \
+ ada/s-htable.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/types.ads \
+ ada/unchconv.ads ada/unchdeal.ads
ada/par.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/alloc.ads ada/aspects.ads ada/aspects.adb ada/atree.ads \
@@ -2728,16 +2748,16 @@ ada/par.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/sinput-l.ads ada/snames.ads ada/snames.adb ada/stand.ads \
ada/stringt.ads ada/stringt.adb ada/style.ads ada/style.adb \
ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
- ada/s-carun8.ads ada/s-crc32.ads ada/s-exctab.ads ada/s-exctab.adb \
- ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
- ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
- ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
- ada/warnsw.ads ada/widechar.ads
+ ada/s-assert.ads ada/s-carun8.ads ada/s-crc32.ads ada/s-exctab.ads \
+ ada/s-exctab.adb ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+ ada/ttypes.ads ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb \
+ ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+ ada/validsw.ads ada/warnsw.ads ada/widechar.ads
ada/par_sco.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/aspects.adb \
@@ -2752,12 +2772,12 @@ ada/par_sco.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/put_scos.ads ada/put_scos.adb ada/scans.ads ada/scos.ads \
ada/scos.adb ada/sem.ads ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb \
ada/sinput.ads ada/sinput.adb ada/snames.ads ada/stand.ads \
- ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
+ ada/stringt.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/prep.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
@@ -2766,13 +2786,13 @@ ada/prep.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/g-dyntab.adb ada/g-hesorg.ads ada/g-hesorg.adb ada/hostparm.ads \
ada/namet.ads ada/opt.ads ada/osint.ads ada/output.ads ada/prep.ads \
ada/prep.adb ada/scans.ads ada/sinput.ads ada/snames.ads \
- ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-carun8.ads \
- ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads
+ ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-assert.ads \
+ ada/s-carun8.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
ada/prepcomp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/casing.ads \
@@ -2785,28 +2805,29 @@ ada/prepcomp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/scn.ads ada/scng.ads ada/scng.adb ada/sinfo.ads ada/sinput.ads \
ada/sinput-l.ads ada/snames.ads ada/stringt.ads ada/stringt.adb \
ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
- ada/system.ads ada/s-carun8.ads ada/s-crc32.ads ada/s-exctab.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/system.ads ada/s-assert.ads ada/s-carun8.ads ada/s-crc32.ads \
+ ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/put_alfa.o : ada/ada.ads ada/a-unccon.ads ada/alfa.ads ada/gnat.ads \
ada/g-table.ads ada/g-table.adb ada/put_alfa.ads ada/put_alfa.adb \
- ada/system.ads ada/s-exctab.ads ada/s-memory.ads ada/s-stalib.ads \
- ada/s-unstyp.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads \
+ ada/s-stalib.ads ada/s-unstyp.ads ada/types.ads ada/unchconv.ads \
+ ada/unchdeal.ads
ada/put_scos.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/gnat.ads \
ada/g-table.ads ada/g-table.adb ada/hostparm.ads ada/namet.ads \
ada/opt.ads ada/output.ads ada/put_scos.ads ada/put_scos.adb \
- ada/scos.ads ada/system.ads ada/s-exctab.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
- ada/unchdeal.ads
+ ada/scos.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads \
+ ada/unchconv.ads ada/unchdeal.ads
ada/repinfo.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2817,14 +2838,14 @@ ada/repinfo.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/nlists.ads ada/opt.ads ada/output.ads ada/output.adb \
ada/repinfo.ads ada/repinfo.adb ada/scans.ads ada/sinfo.ads \
ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/snames.ads \
- ada/stand.ads ada/stringt.ads ada/system.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
- ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
- ada/widechar.ads
+ ada/stand.ads ada/stringt.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/widechar.ads
ada/restrict.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/aspects.adb \
@@ -2837,14 +2858,14 @@ ada/restrict.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/nlists.ads ada/opt.ads ada/output.ads ada/restrict.ads \
ada/restrict.adb ada/rident.ads ada/scans.ads ada/sinfo.ads \
ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/snames.ads \
- ada/stand.ads ada/stringt.ads ada/system.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
- ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/widechar.ads
+ ada/stand.ads ada/stringt.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/rident.o : ada/rident.ads ada/system.ads ada/s-rident.ads
@@ -2861,14 +2882,14 @@ ada/rtsfind.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/rtsfind.adb ada/sem.ads ada/sem_aux.ads ada/sem_ch7.ads \
ada/sem_dist.ads ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb \
ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
- ada/system.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tbuild.ads ada/tree_io.ads ada/types.ads \
- ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/widechar.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-exctab.adb \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tbuild.ads ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/s-addope.o : ada/ada.ads ada/a-unccon.ads ada/system.ads \
ada/s-addope.ads ada/s-addope.adb
@@ -2935,7 +2956,8 @@ ada/s-htable.o : ada/ada.ads ada/a-uncdea.ads ada/system.ads \
ada/s-htable.ads ada/s-htable.adb ada/s-strhas.ads
ada/s-imenne.o : ada/ada.ads ada/a-unccon.ads ada/system.ads \
- ada/s-imenne.ads ada/s-imenne.adb
+ ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-imenne.adb \
+ ada/s-stalib.ads
ada/s-imgenu.o : ada/ada.ads ada/a-unccon.ads ada/system.ads \
ada/s-imgenu.ads ada/s-imgenu.adb ada/s-secsta.ads ada/s-stoele.ads \
@@ -3025,23 +3047,24 @@ ada/scans.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads \
ada/interfac.ads ada/namet.ads ada/namet.adb ada/opt.ads ada/output.ads \
ada/scans.ads ada/scans.adb ada/snames.ads ada/system.ads \
- ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/widechar.ads
ada/scil_ll.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads \
ada/hostparm.ads ada/namet.ads ada/nlists.ads ada/opt.ads \
ada/output.ads ada/scil_ll.ads ada/scil_ll.adb ada/sinfo.ads \
- ada/sinput.ads ada/snames.ads ada/system.ads ada/s-exctab.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
- ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads
+ ada/sinput.ads ada/snames.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads
ada/scn.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/alloc.ads ada/aspects.ads ada/atree.ads ada/atree.adb \
@@ -3055,15 +3078,15 @@ ada/scn.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/snames.ads \
ada/stand.ads ada/stringt.ads ada/stringt.adb ada/style.ads \
ada/style.adb ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
- ada/system.ads ada/s-carun8.ads ada/s-crc32.ads ada/s-crc32.adb \
- ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-utf_32.ads ada/s-utf_32.adb ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/types.adb ada/uintp.ads \
- ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/urealp.adb ada/widechar.ads
+ ada/system.ads ada/s-assert.ads ada/s-carun8.ads ada/s-crc32.ads \
+ ada/s-crc32.adb ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-utf_32.ads ada/s-utf_32.adb ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/types.adb \
+ ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads
ada/scng.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/casing.ads \
@@ -3071,21 +3094,21 @@ ada/scng.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/interfac.ads ada/namet.ads ada/opt.ads ada/output.ads \
ada/restrict.ads ada/rident.ads ada/scans.ads ada/scng.ads ada/scng.adb \
ada/sinfo.ads ada/sinput.ads ada/snames.ads ada/stringt.ads \
- ada/styleg.ads ada/stylesw.ads ada/system.ads ada/s-crc32.ads \
- ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/styleg.ads ada/stylesw.ads ada/system.ads ada/s-assert.ads \
+ ada/s-crc32.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/scos.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/gnat.ads \
ada/g-table.ads ada/g-table.adb ada/hostparm.ads ada/namet.ads \
ada/opt.ads ada/output.ads ada/scos.ads ada/scos.adb ada/system.ads \
- ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
- ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+ ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads
ada/sem.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/alloc.ads ada/aspects.ads ada/atree.ads ada/atree.adb \
@@ -3102,13 +3125,13 @@ ada/sem.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/sem_ch6.ads ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_ch9.ads \
ada/sem_dim.ads ada/sem_prag.ads ada/sem_util.ads ada/sinfo.ads \
ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
- ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
- ada/widechar.ads
+ ada/stringt.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/sem_aggr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3133,15 +3156,15 @@ ada/sem_aggr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
ada/snames.ads ada/sprint.ads ada/stand.ads ada/stringt.ads \
ada/stringt.adb ada/style.ads ada/styleg.ads ada/styleg.adb \
- ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
- ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
- ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/validsw.ads ada/widechar.ads
+ ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+ ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+ ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/validsw.ads ada/widechar.ads
ada/sem_attr.o : ada/ada.ads ada/a-charac.ads ada/a-chlat1.ads \
ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads ada/alloc.ads \
@@ -3172,14 +3195,14 @@ ada/sem_attr.o : ada/ada.ads ada/a-charac.ads ada/a-chlat1.ads \
ada/sinput.ads ada/sinput.adb ada/snames.ads ada/snames.adb \
ada/sprint.ads ada/stand.ads ada/stringt.ads ada/stringt.adb \
ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
- ada/system.ads ada/s-carun8.ads ada/s-exctab.ads ada/s-exctab.adb \
- ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
- ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
- ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/system.ads ada/s-assert.ads ada/s-carun8.ads ada/s-exctab.ads \
+ ada/s-exctab.adb ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
+ ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
ada/validsw.ads ada/widechar.ads
@@ -3189,10 +3212,10 @@ ada/sem_aux.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/hostparm.ads ada/namet.ads ada/nlists.ads ada/opt.ads \
ada/output.ads ada/sem_aux.ads ada/sem_aux.adb ada/sinfo.ads \
ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
ada/sem_case.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
@@ -3205,13 +3228,14 @@ ada/sem_case.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/output.ads ada/sem.ads ada/sem_aux.ads ada/sem_case.ads \
ada/sem_case.adb ada/sem_eval.ads ada/sem_res.ads ada/sem_type.ads \
ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
- ada/snames.ads ada/stand.ads ada/system.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tbuild.ads \
- ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/snames.ads ada/stand.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tbuild.ads ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+ ada/widechar.ads
ada/sem_cat.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3231,14 +3255,14 @@ ada/sem_cat.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_util.adb ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
ada/snames.ads ada/stand.ads ada/stringt.ads ada/style.ads \
ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
- ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
- ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
- ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/widechar.ads
+ ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads \
+ ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/sem_ch10.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3264,14 +3288,14 @@ ada/sem_ch10.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads \
ada/sinput.adb ada/snames.ads ada/stand.ads ada/stringt.ads \
ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
- ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads \
- ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
+ ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uname.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/sem_ch11.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3286,12 +3310,13 @@ ada/sem_ch11.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_ch8.ads ada/sem_eval.ads ada/sem_res.ads ada/sem_util.ads \
ada/sem_warn.ads ada/sem_warn.adb ada/sinfo.ads ada/sinfo.adb \
ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
- ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads
ada/sem_ch12.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/aspects.adb \
@@ -3318,16 +3343,16 @@ ada/sem_ch12.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_util.adb ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb \
ada/sinfo-cn.ads ada/sinput.ads ada/sinput-l.ads ada/snames.ads \
ada/stand.ads ada/stringt.ads ada/style.ads ada/styleg.ads \
- ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-exctab.ads \
- ada/s-exctab.adb ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
- ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
- ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/urealp.adb ada/widechar.ads
+ ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads ada/s-htable.adb \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+ ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+ ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads
ada/sem_ch13.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/aspects.adb \
@@ -3352,16 +3377,16 @@ ada/sem_ch13.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sem_warn.ads \
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
- ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-exctab.adb \
- ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
- ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
- ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/validsw.ads \
- ada/warnsw.ads ada/widechar.ads
+ ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-exctab.adb ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
+ ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
+ ada/validsw.ads ada/warnsw.ads ada/widechar.ads
ada/sem_ch2.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3370,12 +3395,12 @@ ada/sem_ch2.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/output.ads ada/restrict.ads ada/rident.ads ada/sem_ch2.ads \
ada/sem_ch2.adb ada/sem_ch8.ads ada/sem_dim.ads ada/sinfo.ads \
ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/system.ads ada/s-carun8.ads ada/s-exctab.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
- ada/types.ads ada/types.adb ada/uintp.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads
+ ada/system.ads ada/s-assert.ads ada/s-carun8.ads ada/s-exctab.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tree_io.ads ada/types.ads ada/types.adb ada/uintp.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
ada/sem_ch3.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3406,13 +3431,13 @@ ada/sem_ch3.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads \
ada/sprint.ads ada/stand.ads ada/stringt.ads ada/style.ads \
ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
- ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
- ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
- ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+ ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
ada/validsw.ads ada/widechar.ads
@@ -3440,13 +3465,13 @@ ada/sem_ch4.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads \
ada/snames.ads ada/stand.ads ada/stringt.ads ada/style.ads \
ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
- ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
- ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
- ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+ ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/sem_ch5.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
@@ -3477,14 +3502,15 @@ ada/sem_ch5.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_warn.adb ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads \
ada/sinput.ads ada/snames.ads ada/sprint.ads ada/stand.ads \
ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
- ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
- ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads
+ ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+ ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+ ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/validsw.ads
ada/sem_ch6.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3512,14 +3538,14 @@ ada/sem_ch6.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads \
ada/sinput.ads ada/snames.ads ada/snames.adb ada/stand.ads \
ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \
- ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-carun8.ads \
- ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
- ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
- ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
+ ada/s-carun8.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+ ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
ada/widechar.ads
@@ -3543,15 +3569,15 @@ ada/sem_ch7.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_util.ads ada/sem_util.adb ada/sem_warn.ads ada/sinfo.ads \
ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/snames.adb \
ada/stand.ads ada/stringt.ads ada/style.ads ada/styleg.ads \
- ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
- ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
- ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/widechar.ads
+ ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+ ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/sem_ch8.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3579,14 +3605,15 @@ ada/sem_ch8.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_util.adb ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb \
ada/sinfo-cn.ads ada/sinput.ads ada/snames.ads ada/stand.ads \
ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
- ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
- ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+ ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+ ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/widechar.ads
ada/sem_ch9.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/aspects.adb \
@@ -3615,14 +3642,14 @@ ada/sem_ch9.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads ada/snames.ads \
ada/sprint.ads ada/stand.ads ada/stringt.ads ada/style.ads \
ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
- ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
- ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
- ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads ada/validsw.ads
+ ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads \
+ ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads
ada/sem_dim.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3644,15 +3671,15 @@ ada/sem_dim.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/snames.ads \
ada/stand.ads ada/stringt.ads ada/stringt.adb ada/style.ads \
ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
- ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
- ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
- ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
- ada/widechar.ads
+ ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+ ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+ ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/widechar.ads
ada/sem_disp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3674,14 +3701,14 @@ ada/sem_disp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
- ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
- ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+ ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+ ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+ ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
ada/sem_dist.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3693,12 +3720,12 @@ ada/sem_dist.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_dist.ads ada/sem_dist.adb ada/sem_eval.ads ada/sem_res.ads \
ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
ada/snames.ads ada/stand.ads ada/stringt.ads ada/stringt.adb \
- ada/system.ads ada/s-carun8.ads ada/s-exctab.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/tbuild.ads ada/tree_io.ads \
- ada/types.ads ada/types.adb ada/uintp.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads
+ ada/system.ads ada/s-assert.ads ada/s-carun8.ads ada/s-exctab.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tbuild.ads \
+ ada/tree_io.ads ada/types.ads ada/types.adb ada/uintp.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
ada/sem_elab.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3719,15 +3746,15 @@ ada/sem_elab.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sinfo.ads \
ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
- ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
- ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
- ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
- ada/widechar.ads
+ ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+ ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+ ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/widechar.ads
ada/sem_elim.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3740,13 +3767,14 @@ ada/sem_elim.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem.ads ada/sem_aux.ads ada/sem_aux.adb ada/sem_elim.ads \
ada/sem_elim.adb ada/sem_prag.ads ada/sem_util.ads ada/sinfo.ads \
ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/snames.ads \
- ada/stand.ads ada/stringt.ads ada/system.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/stand.ads ada/stringt.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+ ada/widechar.ads
ada/sem_eval.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3769,15 +3797,15 @@ ada/sem_eval.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_util.adb ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb \
ada/sinfo-cn.ads ada/sinput.ads ada/snames.ads ada/stand.ads \
ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \
- ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
- ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
- ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads ada/urealp.adb
+ ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
+ ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb
ada/sem_intr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3789,13 +3817,14 @@ ada/sem_intr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/output.ads ada/rident.ads ada/sem_aux.ads ada/sem_aux.adb \
ada/sem_eval.ads ada/sem_intr.ads ada/sem_intr.adb ada/sem_util.ads \
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-exctab.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
- ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+ ada/widechar.ads
ada/sem_mech.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3805,12 +3834,12 @@ ada/sem_mech.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/opt.ads ada/output.ads ada/rident.ads ada/sem.ads ada/sem_aux.ads \
ada/sem_mech.ads ada/sem_mech.adb ada/sem_util.ads ada/sinfo.ads \
ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
- ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads
ada/sem_prag.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/ali.ads ada/alloc.ads ada/aspects.ads \
@@ -3845,15 +3874,15 @@ ada/sem_prag.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sinfo-cn.ads ada/sinput.ads ada/sinput.adb ada/snames.ads \
ada/snames.adb ada/sprint.ads ada/stand.ads ada/stringt.ads \
ada/stringt.adb ada/style.ads ada/styleg.ads ada/styleg.adb \
- ada/stylesw.ads ada/system.ads ada/s-casuti.ads ada/s-carun8.ads \
- ada/s-crc32.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
- ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
- ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-casuti.ads \
+ ada/s-carun8.ads ada/s-crc32.ads ada/s-exctab.ads ada/s-exctab.adb \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
+ ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
ada/validsw.ads ada/warnsw.ads ada/widechar.ads
@@ -3885,16 +3914,16 @@ ada/sem_res.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads \
ada/sinput.ads ada/snames.ads ada/sprint.ads ada/stand.ads \
ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \
- ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-carun8.ads \
- ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
- ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
- ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
- ada/validsw.ads ada/widechar.ads
+ ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
+ ada/s-carun8.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+ ada/ttypes.ads ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb \
+ ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+ ada/urealp.adb ada/validsw.ads ada/widechar.ads
ada/sem_scil.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3903,10 +3932,10 @@ ada/sem_scil.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/opt.ads ada/output.ads ada/rtsfind.ads ada/scil_ll.ads \
ada/sem_aux.ads ada/sem_scil.ads ada/sem_scil.adb ada/sinfo.ads \
ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
ada/sem_smem.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
@@ -3916,11 +3945,11 @@ ada/sem_smem.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/namet.ads ada/nlists.ads ada/opt.ads ada/output.ads ada/sem_aux.ads \
ada/sem_smem.ads ada/sem_smem.adb ada/sinfo.ads ada/sinfo.adb \
ada/sinput.ads ada/snames.ads ada/stand.ads ada/system.ads \
- ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads
+ ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
ada/sem_type.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3940,15 +3969,15 @@ ada/sem_type.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_type.adb ada/sem_util.ads ada/sem_util.adb ada/sinfo.ads \
ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
- ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
- ada/treepr.ads ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
- ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
- ada/widechar.ads
+ ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+ ada/tree_io.ads ada/treepr.ads ada/ttypes.ads ada/types.ads \
+ ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/sem_util.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3974,28 +4003,28 @@ ada/sem_util.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_util.ads ada/sem_util.adb ada/sem_warn.ads ada/sinfo.ads \
ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/snames.ads \
ada/stand.ads ada/stringt.ads ada/style.ads ada/styleg.ads \
- ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
- ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
- ada/widechar.ads
+ ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+ ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+ ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/urealp.adb ada/widechar.ads
ada/sem_vfpt.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/cstand.ads \
ada/debug.ads ada/einfo.ads ada/einfo.adb ada/hostparm.ads \
ada/namet.ads ada/nlists.ads ada/opt.ads ada/output.ads ada/rident.ads \
ada/sem_vfpt.ads ada/sem_vfpt.adb ada/sinfo.ads ada/snames.ads \
- ada/stand.ads ada/system.ads ada/s-exctab.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
- ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads
+ ada/stand.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
ada/sem_warn.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4015,14 +4044,15 @@ ada/sem_warn.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_warn.ads ada/sem_warn.adb ada/sinfo.ads ada/sinfo.adb \
ada/sinput.ads ada/sinput.adb ada/snames.ads ada/stand.ads \
ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
- ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
- ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+ ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+ ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/widechar.ads
ada/sinfo-cn.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4030,23 +4060,23 @@ ada/sinfo-cn.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/hostparm.ads ada/namet.ads ada/nlists.ads ada/opt.ads \
ada/output.ads ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads \
ada/sinfo-cn.adb ada/sinput.ads ada/snames.ads ada/system.ads \
- ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads
+ ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
ada/sinfo.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/gnat.ads \
ada/g-htable.ads ada/hostparm.ads ada/namet.ads ada/nlists.ads \
ada/opt.ads ada/output.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
- ada/snames.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
- ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads
+ ada/snames.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
ada/sinput-c.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4054,12 +4084,12 @@ ada/sinput-c.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/g-byorma.ads ada/hostparm.ads ada/namet.ads ada/nlists.ads \
ada/opt.ads ada/output.ads ada/scans.ads ada/sinfo.ads ada/sinput.ads \
ada/sinput.adb ada/sinput-c.ads ada/sinput-c.adb ada/snames.ads \
- ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/sinput-d.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4067,12 +4097,13 @@ ada/sinput-d.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/g-byorma.ads ada/hostparm.ads ada/namet.ads ada/nlists.ads \
ada/opt.ads ada/osint.ads ada/osint-c.ads ada/output.ads ada/scans.ads \
ada/sinfo.ads ada/sinput.ads ada/sinput.adb ada/sinput-d.ads \
- ada/sinput-d.adb ada/snames.ads ada/system.ads ada/s-exctab.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/sinput-d.adb ada/snames.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/widechar.ads
ada/sinput-l.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4087,12 +4118,12 @@ ada/sinput-l.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/sinput-l.ads \
ada/sinput-l.adb ada/snames.ads ada/stand.ads ada/stringt.ads \
ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
- ada/system.ads ada/s-crc32.ads ada/s-exctab.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
- ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/system.ads ada/s-assert.ads ada/s-crc32.ads ada/s-exctab.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/sinput.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
@@ -4101,22 +4132,22 @@ ada/sinput.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/g-byorma.ads ada/hostparm.ads ada/interfac.ads ada/namet.ads \
ada/namet.adb ada/nlists.ads ada/nlists.adb ada/opt.ads ada/output.ads \
ada/scans.ads ada/sinfo.ads ada/sinput.ads ada/sinput.adb \
- ada/snames.ads ada/system.ads ada/s-exctab.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/snames.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/snames.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads \
ada/interfac.ads ada/namet.ads ada/namet.adb ada/opt.ads ada/output.ads \
- ada/snames.ads ada/snames.adb ada/system.ads ada/s-exctab.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/widechar.ads
+ ada/snames.ads ada/snames.adb ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
ada/sprint.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4130,13 +4161,14 @@ ada/sprint.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput.adb \
ada/sinput-d.ads ada/snames.ads ada/sprint.ads ada/sprint.adb \
ada/stand.ads ada/stringt.ads ada/stringt.adb ada/system.ads \
- ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
- ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/urealp.adb ada/widechar.ads
+ ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
+ ada/widechar.ads
ada/stand.o : ada/ada.ads ada/a-unccon.ads ada/a-uncdea.ads ada/stand.ads \
ada/stand.adb ada/system.ads ada/s-exctab.ads ada/s-os_lib.ads \
@@ -4146,11 +4178,11 @@ ada/stand.o : ada/ada.ads ada/a-unccon.ads ada/a-uncdea.ads ada/stand.ads \
ada/stringt.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads \
ada/namet.ads ada/opt.ads ada/output.ads ada/stringt.ads \
- ada/stringt.adb ada/system.ads ada/s-carun8.ads ada/s-exctab.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/types.adb \
- ada/unchconv.ads ada/unchdeal.ads
+ ada/stringt.adb ada/system.ads ada/s-assert.ads ada/s-carun8.ads \
+ ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+ ada/types.ads ada/types.adb ada/unchconv.ads ada/unchdeal.ads
ada/style.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4160,62 +4192,63 @@ ada/style.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/namet.ads ada/namet.adb ada/nlists.ads ada/opt.ads ada/output.ads \
ada/scans.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput.adb \
ada/snames.ads ada/stand.ads ada/style.ads ada/style.adb ada/styleg.ads \
- ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-exctab.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/styleg.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/casing.ads \
ada/csets.ads ada/debug.ads ada/einfo.ads ada/err_vars.ads \
ada/hostparm.ads ada/namet.ads ada/opt.ads ada/output.ads ada/scans.ads \
ada/sinfo.ads ada/sinput.ads ada/snames.ads ada/styleg.ads \
- ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-exctab.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+ ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads
ada/stylesw.o : ada/ada.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/hostparm.ads ada/opt.ads ada/stylesw.ads ada/stylesw.adb \
- ada/system.ads ada/s-exctab.ads ada/s-stalib.ads ada/s-string.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/types.ads ada/unchconv.ads \
- ada/unchdeal.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-stalib.ads \
+ ada/s-string.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/types.ads \
+ ada/unchconv.ads ada/unchdeal.ads
ada/switch-b.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/gnatvsn.ads \
ada/hostparm.ads ada/namet.ads ada/opt.ads ada/osint.ads ada/output.ads \
ada/switch.ads ada/switch-b.ads ada/switch-b.adb ada/system.ads \
- ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
- ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+ ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads
ada/switch-c.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/get_targ.ads \
ada/gnatvsn.ads ada/hostparm.ads ada/lib.ads ada/namet.ads ada/opt.ads \
ada/osint.ads ada/output.ads ada/stylesw.ads ada/switch.ads \
- ada/switch-c.ads ada/switch-c.adb ada/system.ads ada/s-exctab.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/tree_io.ads ada/ttypes.ads \
- ada/types.ads ada/unchconv.ads ada/unchdeal.ads ada/validsw.ads \
- ada/warnsw.ads
+ ada/switch-c.ads ada/switch-c.adb ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+ ada/ttypes.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/validsw.ads ada/warnsw.ads
ada/switch.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/gnatvsn.ads \
ada/hostparm.ads ada/namet.ads ada/opt.ads ada/osint.ads ada/output.ads \
- ada/switch.ads ada/switch.adb ada/system.ads ada/s-exctab.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
- ada/types.ads ada/unchconv.ads ada/unchdeal.ads
+ ada/switch.ads ada/switch.adb ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads
ada/system.o : ada/system.ads
@@ -4230,13 +4263,13 @@ ada/targparm.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/csets.ads ada/debug.ads \
ada/hostparm.ads ada/interfac.ads ada/namet.ads ada/namet.adb \
ada/opt.ads ada/osint.ads ada/output.ads ada/rident.ads ada/system.ads \
- ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/targparm.adb \
- ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/widechar.ads
+ ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/targparm.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/widechar.ads
ada/tbuild.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4247,14 +4280,15 @@ ada/tbuild.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/namet.adb ada/nlists.ads ada/nmake.ads ada/nmake.adb ada/opt.ads \
ada/output.ads ada/restrict.ads ada/rident.ads ada/sem_aux.ads \
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/types.ads \
- ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads
+ ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
+ ada/widechar.ads
ada/tree_gen.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4262,13 +4296,13 @@ ada/tree_gen.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/hostparm.ads ada/lib.ads ada/namet.ads ada/nlists.ads ada/opt.ads \
ada/osint.ads ada/osint-c.ads ada/output.ads ada/repinfo.ads \
ada/sem_aux.ads ada/sinfo.ads ada/sinput.ads ada/snames.ads \
- ada/stand.ads ada/stringt.ads ada/system.ads ada/s-exctab.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
- ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/tree_gen.ads ada/tree_gen.adb ada/tree_in.ads ada/tree_io.ads \
- ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads
+ ada/stand.ads ada/stringt.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/tree_gen.ads ada/tree_gen.adb ada/tree_in.ads \
+ ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads
ada/tree_in.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4276,12 +4310,12 @@ ada/tree_in.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/fname.ads ada/hostparm.ads ada/lib.ads ada/namet.ads ada/nlists.ads \
ada/opt.ads ada/output.ads ada/repinfo.ads ada/sem_aux.ads \
ada/sinfo.ads ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_in.ads ada/tree_in.adb ada/tree_io.ads \
- ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads
+ ada/stringt.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_in.ads ada/tree_in.adb \
+ ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads
ada/tree_io.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/debug.ads ada/hostparm.ads ada/output.ads \
@@ -4300,43 +4334,45 @@ ada/treepr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/nlists.ads ada/nlists.adb ada/opt.ads ada/output.ads ada/output.adb \
ada/scans.ads ada/scil_ll.ads ada/sem_mech.ads ada/sinfo.ads \
ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/snames.ads \
- ada/stand.ads ada/stringt.ads ada/system.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/treepr.ads ada/treepr.adb \
- ada/treeprs.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/stand.ads ada/stringt.ads ada/system.ads ada/s-assert.ads \
+ ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/treepr.ads \
+ ada/treepr.adb ada/treeprs.ads ada/types.ads ada/uintp.ads \
+ ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/widechar.ads
ada/treeprs.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads \
ada/namet.ads ada/opt.ads ada/output.ads ada/sinfo.ads ada/system.ads \
- ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
- ada/treeprs.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads
+ ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tree_io.ads ada/treeprs.ads ada/types.ads ada/uintp.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
ada/ttypes.o : ada/ada.ads ada/a-unccon.ads ada/get_targ.ads \
ada/system.ads ada/s-exctab.ads ada/s-stalib.ads ada/s-unstyp.ads \
ada/ttypes.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads
ada/types.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/system.ads \
- ada/s-carun8.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
- ada/s-parame.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
- ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
- ada/types.ads ada/types.adb ada/unchconv.ads ada/unchdeal.ads
+ ada/s-assert.ads ada/s-carun8.ads ada/s-exctab.ads ada/s-exctab.adb \
+ ada/s-htable.ads ada/s-parame.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads \
+ ada/s-unstyp.ads ada/types.ads ada/types.adb ada/unchconv.ads \
+ ada/unchdeal.ads
ada/uintp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/gnat.ads \
ada/g-htable.ads ada/hostparm.ads ada/opt.ads ada/output.ads \
- ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
- ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
- ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
- ada/unchdeal.ads
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
+ ada/s-htable.adb ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-stalib.ads ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
+ ada/unchconv.ads ada/unchdeal.ads
ada/uname.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4346,32 +4382,33 @@ ada/uname.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/lib-sort.adb ada/namet.ads ada/nlists.ads ada/nlists.adb \
ada/opt.ads ada/output.ads ada/scans.ads ada/sinfo.ads ada/sinfo.adb \
ada/sinput.ads ada/sinput.adb ada/snames.ads ada/stand.ads \
- ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
- ada/uname.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
- ada/widechar.ads
+ ada/stringt.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/uname.ads ada/uname.adb ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/widechar.ads
ada/urealp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/gnat.ads \
ada/g-htable.ads ada/hostparm.ads ada/opt.ads ada/output.ads \
- ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
- ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+ ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+ ada/urealp.adb
ada/usage.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads \
ada/namet.ads ada/opt.ads ada/osint.ads ada/output.ads ada/rident.ads \
- ada/system.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
- ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/usage.ads ada/usage.adb
+ ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tree_io.ads ada/types.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/usage.ads ada/usage.adb
ada/validsw.o : ada/ada.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/hostparm.ads ada/opt.ads ada/system.ads ada/s-exctab.ads \
@@ -4382,12 +4419,12 @@ ada/validsw.o : ada/ada.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/warnsw.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/err_vars.ads \
ada/hostparm.ads ada/namet.ads ada/opt.ads ada/output.ads \
- ada/rident.ads ada/system.ads ada/s-exctab.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
- ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/warnsw.ads ada/warnsw.adb
+ ada/rident.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/warnsw.ads ada/warnsw.adb
ada/widechar.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/hostparm.ads ada/interfac.ads ada/opt.ads \
diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in
index a9548bffb60..0ddde729425 100644
--- a/gcc/ada/gcc-interface/Makefile.in
+++ b/gcc/ada/gcc-interface/Makefile.in
@@ -515,8 +515,6 @@ ifeq ($(strip $(filter-out e500% powerpc% wrs vxworks,$(targ))),)
s-osprim.adb<s-osprim-vxworks.adb \
s-parame.ads<s-parame-vxworks.ads \
s-parame.adb<s-parame-vxworks.adb \
- s-stchop.ads<s-stchop-limit.ads \
- s-stchop.adb<s-stchop-vxworks.adb \
s-taprop.adb<s-taprop-vxworks.adb \
s-tasinf.ads<s-tasinf-vxworks.ads \
s-taspri.ads<s-taspri-vxworks.ads \
@@ -527,6 +525,19 @@ ifeq ($(strip $(filter-out e500% powerpc% wrs vxworks,$(targ))),)
$(ATOMICS_TARGET_PAIRS) \
$(ATOMICS_BUILTINS_TARGET_PAIRS)
+ # VxWorks 5 and 6 both use the same target triplet making them
+ # indistinguishable in the context of this make file. Package
+ # System.Stack_Checking.Operations is not needed on VxWorks 6 as it leads to
+ # an undefined symbol when building a dynamic shared library. To alleviate
+ # this problem and distinguish this case, we use the THREAD_KIND and include
+ # the package only in kernel mode.
+
+ ifeq ($(strip $(filter-out default,$(THREAD_KIND))),)
+ LIBGNAT_TARGET_PAIRS += \
+ s-stchop.ads<s-stchop-limit.ads \
+ s-stchop.adb<s-stchop-vxworks.adb
+ endif
+
TOOLS_TARGET_PAIRS=\
mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
indepsw.adb<indepsw-gnu.adb
diff --git a/gcc/ada/gcc-interface/ada-tree.h b/gcc/ada/gcc-interface/ada-tree.h
index ec00cc4775f..15d1cdd1e82 100644
--- a/gcc/ada/gcc-interface/ada-tree.h
+++ b/gcc/ada/gcc-interface/ada-tree.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 1992-2012, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2013, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
@@ -507,5 +507,11 @@ do { \
#define LOOP_STMT_BOTTOM_COND_P(NODE) TREE_LANG_FLAG_0 (LOOP_STMT_CHECK (NODE))
#define LOOP_STMT_TOP_UPDATE_P(NODE) TREE_LANG_FLAG_1 (LOOP_STMT_CHECK (NODE))
+/* Optimization hints on loops. */
+#define LOOP_STMT_NO_UNROLL(NODE) TREE_LANG_FLAG_2 (LOOP_STMT_CHECK (NODE))
+#define LOOP_STMT_UNROLL(NODE) TREE_LANG_FLAG_3 (LOOP_STMT_CHECK (NODE))
+#define LOOP_STMT_NO_VECTOR(NODE) TREE_LANG_FLAG_4 (LOOP_STMT_CHECK (NODE))
+#define LOOP_STMT_VECTOR(NODE) TREE_LANG_FLAG_5 (LOOP_STMT_CHECK (NODE))
+
#define EXIT_STMT_COND(NODE) TREE_OPERAND_CHECK_CODE (NODE, EXIT_STMT, 0)
#define EXIT_STMT_LABEL(NODE) TREE_OPERAND_CHECK_CODE (NODE, EXIT_STMT, 1)
diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi
index bdad3f62a81..3ef8a524544 100644
--- a/gcc/ada/gnat_rm.texi
+++ b/gcc/ada/gnat_rm.texi
@@ -151,6 +151,7 @@ Implementation Defined Pragmas
* Pragma Finalize_Storage_Only::
* Pragma Float_Representation::
* Pragma Ident::
+* Pragma Implementation_Defined::
* Pragma Implemented::
* Pragma Implicit_Packing::
* Pragma Import_Exception::
@@ -176,10 +177,12 @@ Implementation Defined Pragmas
* Pragma Linker_Destructor::
* Pragma Linker_Section::
* Pragma Long_Float::
+* Pragma Loop_Optimize::
* Pragma Machine_Attribute::
* Pragma Main::
* Pragma Main_Storage::
* Pragma No_Body::
+* Pragma No_Inline::
* Pragma No_Return::
* Pragma No_Strict_Aliasing ::
* Pragma Normalize_Scalars::
@@ -197,6 +200,7 @@ Implementation Defined Pragmas
* Pragma Priority_Specific_Dispatching::
* Pragma Profile (Ravenscar)::
* Pragma Profile (Restricted)::
+* Pragma Profile (Rational)::
* Pragma Psect_Object::
* Pragma Pure_Function::
* Pragma Relative_Deadline::
@@ -900,6 +904,7 @@ consideration, the use of these pragmas should be minimized.
* Pragma Finalize_Storage_Only::
* Pragma Float_Representation::
* Pragma Ident::
+* Pragma Implementation_Defined::
* Pragma Implemented::
* Pragma Implicit_Packing::
* Pragma Import_Exception::
@@ -925,10 +930,12 @@ consideration, the use of these pragmas should be minimized.
* Pragma Linker_Destructor::
* Pragma Linker_Section::
* Pragma Long_Float::
+* Pragma Loop_Optimize::
* Pragma Machine_Attribute::
* Pragma Main::
* Pragma Main_Storage::
* Pragma No_Body::
+* Pragma No_Inline::
* Pragma No_Return::
* Pragma No_Strict_Aliasing::
* Pragma Normalize_Scalars::
@@ -946,6 +953,7 @@ consideration, the use of these pragmas should be minimized.
* Pragma Priority_Specific_Dispatching::
* Pragma Profile (Ravenscar)::
* Pragma Profile (Restricted)::
+* Pragma Profile (Rational)::
* Pragma Psect_Object::
* Pragma Pure_Function::
* Pragma Relative_Deadline::
@@ -2877,6 +2885,34 @@ maximum allowed length is 31 characters, so if it is important to
maintain compatibility with this compiler, you should obey this length
limit.
+@node Pragma Implementation_Defined
+@unnumberedsec Pragma Implementation_Defined
+@findex Implementation_Defined
+@noindent
+Syntax:
+
+@smallexample @c ada
+pragma Implementation_Defined (local_NAME);
+@end smallexample
+
+@noindent
+This pragma marks a previously declared entioty as implementation-defined.
+For an overloaded entity, applies to the most recent homonym.
+
+@smallexample @c ada
+pragma Implementation_Defined;
+@end smallexample
+
+@noindent
+The form with no arguments appears anywhere within a scope, most
+typically a package spec, and indicates that all entities that are
+defined within the package spec are Implementation_Defined.
+
+This pragma is used within the GNAT runtime library to identify
+implementation-defined entities introduced in language-defined units,
+for the purpose of implementing the No_Implementation_Identifiers
+restriction.
+
@node Pragma Implemented
@unnumberedsec Pragma Implemented
@findex Implemented
@@ -2927,6 +2963,7 @@ the target's overriding subprogram kind.
@node Pragma Implicit_Packing
@unnumberedsec Pragma Implicit_Packing
@findex Implicit_Packing
+@cindex Rational Profile
@noindent
Syntax:
@@ -3338,8 +3375,8 @@ pragma Inline_Always (NAME [, NAME]);
@noindent
Similar to pragma @code{Inline} except that inlining is not subject to
-the use of option @option{-gnatn} and the inlining happens regardless of
-whether this option is used.
+the use of option @option{-gnatn} or @option{-gnatN} and the inlining
+happens regardless of whether these options are used.
@node Pragma Inline_Generic
@unnumberedsec Pragma Inline_Generic
@@ -3845,6 +3882,55 @@ For further details on this pragma, see the
@cite{DEC Ada Language Reference Manual}, section 3.5.7b. Note that to use
this pragma, the standard runtime libraries must be recompiled.
+@node Pragma Loop_Optimize
+@unnumberedsec Pragma Loop_Optimize
+@findex Loop_Optimize
+@noindent
+Syntax:
+
+@smallexample @c ada
+pragma Loop_Optimize (OPTIMIZATION_HINT @{, OPTIMIZATION_HINT@});
+
+OPTIMIZATION_HINT ::= No_Unroll | Unroll | No_Vector | Vector
+@end smallexample
+
+@noindent
+This pragma must appear immediately within a loop statement. It allows the
+programmer to specify optimization hints for the enclosing loop. The hints
+are not mutually exclusive and can be freely mixed, but not all combinations
+will yield a sensible outcome.
+
+There are four supported optimization hints for a loop:
+@itemize @bullet
+@item No_Unroll
+
+The loop must not be unrolled. This is a strong hint: the compiler will not
+unroll a loop marked with this hint.
+
+@item Unroll
+
+The loop should be unrolled. This is a weak hint: the compiler will try to
+apply unrolling to this loop preferably to other optimizations, notably
+vectorization, but there is no guarantee that the loop will be unrolled.
+
+@item No_Vector
+
+The loop must not be vectorized. This is a strong hint: the compiler will not
+vectorize a loop marked with this hint.
+
+@item Vector
+
+The loop should be vectorized. This is a weak hint: the compiler will try to
+apply vectorization to this loop preferably to other optimizations, notably
+unrolling, but there is no guarantee that the loop will be vectorized.
+
+@end itemize
+
+These hints do not void the need to pass the appropriate switches to the
+compiler in order to enable the relevant optimizations, that is to say
+@option{-funroll-loops} for unrolling and @option{-ftree-vectorize} for
+vectorization.
+
@node Pragma Machine_Attribute
@unnumberedsec Pragma Machine_Attribute
@findex Machine_Attribute
@@ -3936,6 +4022,24 @@ such a way that a body needed before is no longer needed. The provision of a
dummy body with a No_Body pragma ensures that there is no interference from
earlier versions of the package body.
+@node Pragma No_Inline
+@unnumberedsec Pragma No_Inline
+@findex No_Inline
+@noindent
+Syntax:
+
+@smallexample @c ada
+pragma No_Inline (NAME [, NAME]);
+@end smallexample
+
+@noindent
+This pragma suppresses inlining for the callable entity or the instances of
+the generic subprogram designated by @var{NAME}, including inlining that
+results from the use of pragma @code{Inline}. This pragma is always active,
+in particular it is not subject to the use of option @option{-gnatn} or
+@option{-gnatN}. It is illegal to specify both pragma @code{No_Inline} and
+pragma @code{Inline_Always} for the same @var{NAME}.
+
@node Pragma No_Return
@unnumberedsec Pragma No_Return
@findex No_Return
@@ -4865,6 +4969,28 @@ This set of restrictions causes the automatic selection of a simplified
version of the run time that provides improved performance for the
limited set of tasking functionality permitted by this set of restrictions.
+@node Pragma Profile (Rational)
+@unnumberedsec Pragma Profile (Rational)
+@findex Rational compatibility mode
+@noindent
+Syntax:
+
+@smallexample @c ada
+pragma Profile (Rational);
+@end smallexample
+
+@noindent
+The Rational profile is intended to facilitate porting legacy code that
+compiles with the Rational APEX compiler, even when the code includes non-
+conforming Ada constructs. The profile enables the following three pragmas:
+
+@itemize @bullet
+pragma Implicit_Packing;
+pragma Overriding_Renamings;
+pragma Use_VADS_Size;
+@end itemize
+
+@noindent
@node Pragma Psect_Object
@unnumberedsec Pragma Psect_Object
@findex Psect_Object
@@ -6021,6 +6147,7 @@ of Ada as an implementation-defined pragma.
@node Pragma Use_VADS_Size
@unnumberedsec Pragma Use_VADS_Size
@cindex @code{Size}, VADS compatibility
+@cindex Rational profile
@findex Use_VADS_Size
@noindent
Syntax:
@@ -6154,6 +6281,14 @@ full details see @ref{Warning Message Control,,, gnat_ugn, @value{EDITION}
User's Guide}.
@noindent
+The warnings controlled by the `-gnatw' switch are generated by the front end
+of the compiler. The `GCC' back end can provide additional warnings and they
+are controlled by the `-W' switch.
+The form with a single static_string_EXPRESSION argument also works for the
+latters, but the string must be a single full `-W' switch in this case.
+The above reference lists a few examples of these additional warnings.
+
+@noindent
The specified warnings will be in effect until the end of the program
or another pragma Warnings is encountered. The effect of the pragma is
cumulative. Initially the set of warnings is the standard default set
@@ -6173,9 +6308,18 @@ message @code{warning: 960 bits of "a" unused}. No other regular
expression notations are permitted. All characters other than asterisk in
these three specific cases are treated as literal characters in the match.
+The above use of patterns to match the message applies only to warning
+messages generated by the front end. This form of the pragma with a
+string argument can also be used to control back end warnings controlled
+by a "-Wxxx" switch. Such warnings can be identified by the appearence
+of a string of the form "[-Wxxx]" in the message which identifies the
+"-W" switch that controls the message. By using the text of the
+"-W" switch in the pragma, such back end warnings can be turned on and off.
+
There are two ways to use the pragma in this form. The OFF form can be used as a
configuration pragma. The effect is to suppress all warnings (if any)
-that match the pattern string throughout the compilation.
+that match the pattern string throughout the compilation (or match the
+-W switch in the back end case).
The second usage is to suppress a warning locally, and in this case, two
pragmas must appear in sequence:
@@ -7034,13 +7178,47 @@ this attribute.
@noindent
For every array or record type @var{S}, the representation attribute
@code{Scalar_Storage_Order} denotes the order in which storage elements
-that make up scalar components are ordered within S. Other properties are
+that make up scalar components are ordered within S:
+
+@smallexample @c ada
+ -- Component type definitions
+
+ subtype Yr_Type is Natural range 0 .. 127;
+ subtype Mo_Type is Natural range 1 .. 12;
+ subtype Da_Type is Natural range 1 .. 31;
+
+ -- Record declaration
+
+ type Date is record
+ Years_Since_1980 : Yr_Type;
+ Month : Mo_Type;
+ Day_Of_Month : Da_Type;
+ end record;
+
+ -- Record representation clause
+
+ for Date use record
+ Years_Since_1980 at 0 range 0 .. 6;
+ Month at 0 range 7 .. 10;
+ Day_Of_Month at 0 range 11 .. 15;
+ end record;
+
+ -- Attribute definition clauses
+
+ for Date'Bit_Order use System.High_Order_First;
+ for Date'Scalar_Storage_Order use System.High_Order_First;
+ -- If Scalar_Storage_Order is specified, it must be consistent with
+ -- Bit_Order, so it's best to always define the latter explicitly if
+ -- the former is used.
+@end smallexample
+
+Other properties are
as for standard representation attribute @code{Bit_Order}, as defined by
Ada RM 13.5.3(4). The default is @code{System.Default_Bit_Order}.
For a record type @var{S}, if @code{@var{S}'Scalar_Storage_Order} is
specified explicitly, it shall be equal to @code{@var{S}'Bit_Order}. Note:
-This means that if a @code{Scalar_Storage_Order} attribute definition
+this means that if a @code{Scalar_Storage_Order} attribute definition
clause is not confirming, then the type's @code{Bit_Order} shall be
specified explicitly and set to the same value.
@@ -8171,8 +8349,8 @@ Manual.
@unnumberedsubsec No_Implementation_Identifiers
@findex No_Implementation_Identifiers
[RM 13.12.1] This restriction checks at compile time that no
-implementation-defined identifiers occur within language-defined
-packages.
+implementation-defined identifiers (marked with pragma Implementation_Defined)
+occur within language-defined packages.
@node No_Implementation_Pragmas
@unnumberedsubsec No_Implementation_Pragmas
diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi
index 17478c0b263..1af8a943ef7 100644
--- a/gcc/ada/gnat_ugn.texi
+++ b/gcc/ada/gnat_ugn.texi
@@ -7,7 +7,7 @@
@c o
@c G N A T _ U G N o
@c o
-@c Copyright (C) 1992-2012, Free Software Foundation, Inc. o
+@c Copyright (C) 1992-2013, Free Software Foundation, Inc. o
@c o
@c oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
@@ -4055,7 +4055,8 @@ switches are set. This includes suppression of inlining that
results from the use of the pragma @code{Inline_Always}.
Any occurrences of pragma @code{Inline} or @code{Inline_Always}
are ignored, and @option{-gnatn} and @option{-gnatN} have no
-effect if this switch is present.
+effects if this switch is present. Note that inlining can also
+be suppressed on a finer-grained basis with pragma @code{No_Inline}.
@item -fno-inline-functions
@cindex @option{-fno-inline-functions} (@command{gcc})
@@ -10978,6 +10979,17 @@ types. This is so because, the less information the compiler has about the
bounds of the array, the more fallback code it needs to generate in order to
fix things up at run time.
+It is possible to specify that a given loop should be subject to vectorization
+preferably to other optimizations by means of pragma @code{Loop_Optimize}:
+
+@smallexample @c ada
+ pragma Loop_Optimize (Vector);
+@end smallexample
+
+@noindent
+placed immediately within the loop will convey the appropriate hint to the
+compiler for this loop.
+
You can obtain information about the vectorization performed by the compiler
by specifying @option{-ftree-vectorizer-verbose=N}. For more details of
this switch, see @ref{Debugging Options,,Options for Debugging Your Program
@@ -14916,8 +14928,9 @@ The McCabe cyclomatic complexity metric is defined
in @url{http://www.mccabe.com/pdf/mccabe-nist235r.pdf}
According to McCabe, both control statements and short-circuit control forms
-should be taken into account when computing cyclomatic complexity. For each
-body, we compute three metric values:
+should be taken into account when computing cyclomatic complexity.
+For Ada 2012 we have also take into account conditional expressions
+and quantified expressions. For each body, we compute three metric values:
@itemize @bullet
@item
@@ -14934,6 +14947,10 @@ cyclomatic complexity, which is the sum of these two values.
@noindent
+The cyclomatic complexity is also computed for Ada 2012 expression functions.
+An expression function cannot have statements as its components, so only one
+metric value is computed as a cyclomatic complexity of an expression function.
+
The origin of cyclomatic complexity metric is the need to estimate the number
of independent paths in the control flow graph that in turn gives the number
of tests needed to satisfy paths coverage testing completeness criterion.
@@ -14962,7 +14979,9 @@ suitable for typical Ada usage. For example, short circuit forms
are not penalized as unstructured in the Ada essential complexity metric.
When computing cyclomatic and essential complexity, @command{gnatmetric} skips
-the code in the exception handlers and in all the nested program units.
+the code in the exception handlers and in all the nested program units. The
+code of assertions and predicates (that is, subprogram preconditions and
+postconditions, subtype predicates and type invariants) is also skipped.
By default, all the complexity metrics are computed and reported.
For more fine-grained control you can use
diff --git a/gcc/ada/init.c b/gcc/ada/init.c
index 37c403b803e..f5c3a814411 100644
--- a/gcc/ada/init.c
+++ b/gcc/ada/init.c
@@ -2056,7 +2056,9 @@ __gnat_install_handler(void)
#elif defined(__APPLE__)
#include <signal.h>
+#include <stdlib.h>
#include <sys/syscall.h>
+#include <sys/sysctl.h>
#include <mach/mach_vm.h>
#include <mach/mach_init.h>
#include <mach/vm_statistics.h>
@@ -2095,20 +2097,52 @@ __gnat_is_stack_guard (mach_vm_address_t addr)
#define HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE
+#if defined (__x86_64__)
+static int
+__darwin_major_version (void)
+{
+ static int cache = -1;
+ if (cache < 0)
+ {
+ int mib[2] = {CTL_KERN, KERN_OSRELEASE};
+ size_t len;
+
+ /* Find out how big the buffer needs to be (and set cache to 0
+ on failure). */
+ if (sysctl (mib, 2, NULL, &len, NULL, 0) == 0)
+ {
+ char release[len];
+ sysctl (mib, 2, release, &len, NULL, 0);
+ /* Darwin releases are of the form L.M.N where L is the major
+ version, so strtol will return L. */
+ cache = (int) strtol (release, NULL, 10);
+ }
+ else
+ {
+ cache = 0;
+ }
+ }
+ return cache;
+}
+#endif
+
void
__gnat_adjust_context_for_raise (int signo ATTRIBUTE_UNUSED,
void *ucontext ATTRIBUTE_UNUSED)
{
#if defined (__x86_64__)
- /* Work around radar #10302855/pr50678, where the unwinders (libunwind or
- libgcc_s depending on the system revision) and the DWARF unwind data for
- the sigtramp have different ideas about register numbering (causing rbx
- and rdx to be transposed).. */
- ucontext_t *uc = (ucontext_t *)ucontext ;
- unsigned long t = uc->uc_mcontext->__ss.__rbx;
-
- uc->uc_mcontext->__ss.__rbx = uc->uc_mcontext->__ss.__rdx;
- uc->uc_mcontext->__ss.__rdx = t;
+ if (__darwin_major_version () < 12)
+ {
+ /* Work around radar #10302855, where the unwinders (libunwind or
+ libgcc_s depending on the system revision) and the DWARF unwind
+ data for sigtramp have different ideas about register numbering,
+ causing rbx and rdx to be transposed. */
+ ucontext_t *uc = (ucontext_t *)ucontext;
+ unsigned long t = uc->uc_mcontext->__ss.__rbx;
+
+ uc->uc_mcontext->__ss.__rbx = uc->uc_mcontext->__ss.__rdx;
+ uc->uc_mcontext->__ss.__rdx = t;
+ }
#endif
}
diff --git a/gcc/ada/initialize.c b/gcc/ada/initialize.c
index 6b92d27cb13..00c4d04e13b 100644
--- a/gcc/ada/initialize.c
+++ b/gcc/ada/initialize.c
@@ -88,14 +88,14 @@ append_arg (int *index, LPWSTR dir, LPWSTR value,
{
/* no dir prefix */
dirlen = 0;
- fullvalue = xmalloc ((vallen + 1) * sizeof(TCHAR));
+ fullvalue = (LPWSTR) xmalloc ((vallen + 1) * sizeof(TCHAR));
}
else
{
/* Add dir first */
dirlen = _tcslen (dir);
- fullvalue = xmalloc ((dirlen + vallen + 1) * sizeof(TCHAR));
+ fullvalue = (LPWSTR) xmalloc ((dirlen + vallen + 1) * sizeof(TCHAR));
_tcscpy (fullvalue, dir);
}
@@ -203,7 +203,7 @@ __gnat_initialize (void *eh ATTRIBUTE_UNUSED)
if (ldir != NULL)
{
int n = ldir - wargv[k] + 1;
- dir = xmalloc ((n + 1) * sizeof (TCHAR));
+ dir = (LPWSTR) xmalloc ((n + 1) * sizeof (TCHAR));
_tcsncpy (dir, wargv[k], n);
dir[n] = _T('\0');
}
diff --git a/gcc/ada/make.adb b/gcc/ada/make.adb
index 61649da3bb8..27d0f697e98 100644
--- a/gcc/ada/make.adb
+++ b/gcc/ada/make.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -5895,7 +5895,6 @@ package body Make is
-- projects.
Look_In_Primary_Dir := False;
- Add_Switch ("-I-", Binder, And_Save => True);
end if;
-- If the user wants a program without a main subprogram, add the
diff --git a/gcc/ada/makeutl.adb b/gcc/ada/makeutl.adb
index b2a6d53bb48..6d33aaacca7 100644
--- a/gcc/ada/makeutl.adb
+++ b/gcc/ada/makeutl.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -369,6 +369,14 @@ package body Makeutl is
Status : Boolean;
-- For call to Close
+ Iter : Source_Iterator :=
+ For_Each_Source
+ (In_Tree => Project_Tree,
+ Language => Name_Ada,
+ Encapsulated_Libs => False,
+ Locally_Removed => False);
+ Source : Prj.Source_Id;
+
begin
Tempdir.Create_Temp_File (Mapping_FD, Mapping_Path);
Record_Temp_File (Project_Tree.Shared, Mapping_Path);
@@ -376,57 +384,62 @@ package body Makeutl is
if Mapping_FD /= Invalid_FD then
OK := True;
- -- Traverse all units
+ loop
+ Source := Element (Iter);
+ exit when Source = No_Source;
- Unit := Units_Htable.Get_First (Project_Tree.Units_HT);
- while Unit /= No_Unit_Index loop
- if Unit.Name /= No_Name then
+ Unit := Source.Unit;
- -- If there is a body, put it in the mapping
+ if Unit = No_Unit_Index or else Unit.Name = No_Name then
+ ALI_Name := No_File;
- if Unit.File_Names (Impl) /= No_Source
- and then Unit.File_Names (Impl).Project /= No_Project
- then
- Get_Name_String (Unit.Name);
- Add_Str_To_Name_Buffer ("%b");
- ALI_Unit := Name_Find;
- ALI_Name :=
- Lib_File_Name (Unit.File_Names (Impl).Display_File);
- ALI_Project := Unit.File_Names (Impl).Project;
+ -- If this is a body, put it in the mapping
- -- Otherwise, if there is a spec, put it in the mapping
-
- elsif Unit.File_Names (Spec) /= No_Source
- and then Unit.File_Names (Spec).Project /= No_Project
- then
- Get_Name_String (Unit.Name);
- Add_Str_To_Name_Buffer ("%s");
- ALI_Unit := Name_Find;
- ALI_Name :=
- Lib_File_Name (Unit.File_Names (Spec).Display_File);
- ALI_Project := Unit.File_Names (Spec).Project;
+ elsif Source.Kind = Impl
+ and then Unit.File_Names (Impl) /= No_Source
+ and then Unit.File_Names (Impl).Project /= No_Project
+ then
+ Get_Name_String (Unit.Name);
+ Add_Str_To_Name_Buffer ("%b");
+ ALI_Unit := Name_Find;
+ ALI_Name :=
+ Lib_File_Name (Unit.File_Names (Impl).Display_File);
+ ALI_Project := Unit.File_Names (Impl).Project;
+
+ -- Otherwise, if this is a spec and there is no body, put it in
+ -- the mapping.
+
+ elsif Source.Kind = Spec
+ and then Unit.File_Names (Impl) = No_Source
+ and then Unit.File_Names (Spec) /= No_Source
+ and then Unit.File_Names (Spec).Project /= No_Project
+ then
+ Get_Name_String (Unit.Name);
+ Add_Str_To_Name_Buffer ("%s");
+ ALI_Unit := Name_Find;
+ ALI_Name :=
+ Lib_File_Name (Unit.File_Names (Spec).Display_File);
+ ALI_Project := Unit.File_Names (Spec).Project;
- else
- ALI_Name := No_File;
- end if;
+ else
+ ALI_Name := No_File;
+ end if;
- -- If we have something to put in the mapping then do it now.
- -- However, if the project is extended, we don't put anything
- -- in the mapping file, since we don't know where the ALI file
- -- is: it might be in the extended project object directory as
- -- well as in the extending project object directory.
+ -- If we have something to put in the mapping then do it now. If
+ -- the project is extended, look for the ALI file in the project,
+ -- then in the extending projects in order, and use the last one
+ -- found.
- if ALI_Name /= No_File
- and then ALI_Project.Extended_By = No_Project
- and then ALI_Project.Extends = No_Project
- then
- -- First check if the ALI file exists. If it does not, do
- -- not put the unit in the mapping file.
+ if ALI_Name /= No_File then
+ -- Look in the project and the projects that are extending it
+ -- to find the real ALI file.
- declare
- ALI : constant String := Get_Name_String (ALI_Name);
+ declare
+ ALI : constant String := Get_Name_String (ALI_Name);
- begin
+ ALI_Path : Name_Id := No_Name;
+ begin
+ loop
-- For library projects, use the library ALI directory,
-- for other projects, use the object directory.
@@ -439,63 +452,62 @@ package body Makeutl is
end if;
Add_Str_To_Name_Buffer (ALI);
+
+ if Is_Regular_File (Name_Buffer (1 .. Name_Len)) then
+ ALI_Path := Name_Find;
+ end if;
+
+ ALI_Project := ALI_Project.Extended_By;
+ exit when ALI_Project = No_Project;
+ end loop;
+
+ if ALI_Path /= No_Name then
+ -- First line is the unit name
+
+ Get_Name_String (ALI_Unit);
Add_Char_To_Name_Buffer (ASCII.LF);
+ Bytes :=
+ Write
+ (Mapping_FD,
+ Name_Buffer (1)'Address,
+ Name_Len);
+ OK := Bytes = Name_Len;
- declare
- ALI_Path_Name : constant String :=
- Name_Buffer (1 .. Name_Len);
+ exit when not OK;
- begin
- if Is_Regular_File
- (ALI_Path_Name (1 .. ALI_Path_Name'Last - 1))
- then
- -- First line is the unit name
-
- Get_Name_String (ALI_Unit);
- Add_Char_To_Name_Buffer (ASCII.LF);
- Bytes :=
- Write
- (Mapping_FD,
- Name_Buffer (1)'Address,
- Name_Len);
- OK := Bytes = Name_Len;
-
- exit when not OK;
-
- -- Second line it the ALI file name
-
- Get_Name_String (ALI_Name);
- Add_Char_To_Name_Buffer (ASCII.LF);
- Bytes :=
- Write
- (Mapping_FD,
- Name_Buffer (1)'Address,
- Name_Len);
- OK := (Bytes = Name_Len);
-
- exit when not OK;
-
- -- Third line it the ALI path name
-
- Bytes :=
- Write
- (Mapping_FD,
- ALI_Path_Name (1)'Address,
- ALI_Path_Name'Length);
- OK := (Bytes = ALI_Path_Name'Length);
-
- -- If OK is False, it means we were unable to
- -- write a line. No point in continuing with the
- -- other units.
-
- exit when not OK;
- end if;
- end;
- end;
- end if;
+ -- Second line it the ALI file name
+
+ Get_Name_String (ALI_Name);
+ Add_Char_To_Name_Buffer (ASCII.LF);
+ Bytes :=
+ Write
+ (Mapping_FD,
+ Name_Buffer (1)'Address,
+ Name_Len);
+ OK := (Bytes = Name_Len);
+
+ exit when not OK;
+
+ -- Third line it the ALI path name
+
+ Get_Name_String (ALI_Path);
+ Add_Char_To_Name_Buffer (ASCII.LF);
+ Bytes :=
+ Write
+ (Mapping_FD,
+ Name_Buffer (1)'Address,
+ Name_Len);
+ OK := (Bytes = Name_Len);
+
+ -- If OK is False, it means we were unable to write a
+ -- line. No point in continuing with the other units.
+
+ exit when not OK;
+ end if;
+ end;
end if;
- Unit := Units_Htable.Get_Next (Project_Tree.Units_HT);
+ Next (Iter);
end loop;
Close (Mapping_FD, Status);
diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads
index e2a97e2d434..9beeb583523 100644
--- a/gcc/ada/opt.ads
+++ b/gcc/ada/opt.ads
@@ -1181,6 +1181,11 @@ package Opt is
-- Set to True if the tool should not have any output if there are no
-- errors or warnings.
+ Overriding_Renamings : Boolean := False;
+ -- GNAT
+ -- Set to True to enable compatibility mode with Rational compiler, and
+ -- to accept renamings of implicit operations in their own scope.
+
Replace_In_Comments : Boolean := False;
-- GNATPREP
-- Set to True if -C switch used
diff --git a/gcc/ada/osint.ads b/gcc/ada/osint.ads
index 48a7d8e44c1..dba06aad1c4 100644
--- a/gcc/ada/osint.ads
+++ b/gcc/ada/osint.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -637,6 +637,7 @@ package Osint is
-- Set_Exit_Status as the last action of the program.
procedure OS_Exit_Through_Exception (Status : Integer);
+ pragma No_Return (OS_Exit_Through_Exception);
-- Set the Current_Exit_Status, then raise Types.Terminate_Program
type Exit_Code_Type is (
diff --git a/gcc/ada/par-prag.adb b/gcc/ada/par-prag.adb
index dd7b1d70467..07f31be423c 100644
--- a/gcc/ada/par-prag.adb
+++ b/gcc/ada/par-prag.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -1203,12 +1203,14 @@ begin
Pragma_Locking_Policy |
Pragma_Long_Float |
Pragma_Loop_Invariant |
+ Pragma_Loop_Optimize |
Pragma_Loop_Variant |
Pragma_Machine_Attribute |
Pragma_Main |
Pragma_Main_Storage |
Pragma_Memory_Size |
Pragma_No_Body |
+ Pragma_No_Inline |
Pragma_No_Return |
Pragma_No_Run_Time |
Pragma_No_Strict_Aliasing |
@@ -1218,6 +1220,7 @@ begin
Pragma_Optimize |
Pragma_Optimize_Alignment |
Pragma_Overflow_Mode |
+ Pragma_Overriding_Renamings |
Pragma_Pack |
Pragma_Partition_Elaboration_Policy |
Pragma_Passive |
@@ -1245,6 +1248,7 @@ begin
Pragma_Remote_Call_Interface |
Pragma_Remote_Types |
Pragma_Restricted_Run_Time |
+ Pragma_Rational |
Pragma_Ravenscar |
Pragma_Reviewable |
Pragma_Share_Generic |
diff --git a/gcc/ada/prj-conf.adb b/gcc/ada/prj-conf.adb
index 766ce8e09c7..9ba624cdc0d 100644
--- a/gcc/ada/prj-conf.adb
+++ b/gcc/ada/prj-conf.adb
@@ -2,11 +2,11 @@
-- --
-- GNAT COMPILER COMPONENTS --
-- --
--- P R J . C O N F --
+-- P R J . C O N F --
-- --
-- B o d y --
-- --
--- Copyright (C) 2006-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 2006-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -565,12 +565,10 @@ package body Prj.Conf is
Tgt_Name := Variable.Value;
end if;
- if Target = "" then
- OK := Autoconf_Specified or else Tgt_Name = No_Name;
- else
- OK := Tgt_Name /= No_Name
- and then Target = Get_Name_String (Tgt_Name);
- end if;
+ OK :=
+ Target = ""
+ or else (Tgt_Name /= No_Name
+ and then Target = Get_Name_String (Tgt_Name));
if not OK then
if Autoconf_Specified then
@@ -601,6 +599,7 @@ package body Prj.Conf is
procedure Get_Or_Create_Configuration_File
(Project : Project_Id;
+ Conf_Project : Project_Id;
Project_Tree : Project_Tree_Ref;
Project_Node_Tree : Prj.Tree.Project_Node_Tree_Ref;
Env : in out Prj.Tree.Environment;
@@ -625,6 +624,8 @@ package body Prj.Conf is
-- The configuration project file name. May be modified if there are
-- switches --config= in the Builder package of the main project.
+ Selected_Target : String_Access := new String'(Target_Name);
+
function Default_File_Name return String;
-- Return the name of the default config file that should be tested
@@ -635,6 +636,10 @@ package body Prj.Conf is
procedure Check_Builder_Switches;
-- Check for switches --config and --RTS in package Builder
+ procedure Get_Project_Target;
+ -- Target_Name is empty, get the specifiedtarget in the project file,
+ -- if any.
+
function Get_Config_Switches return Argument_List_Access;
-- Return the --config switches to use for gprconfig
@@ -766,6 +771,48 @@ package body Prj.Conf is
end if;
end Check_Builder_Switches;
+ ------------------------
+ -- Get_Project_Target --
+ ------------------------
+
+ procedure Get_Project_Target is
+ begin
+ if Selected_Target'Length = 0 then
+
+ -- Check if attribute Target is specified in the main
+ -- project, or in a project it extends. If it is, use this
+ -- target to invoke gprconfig.
+
+ declare
+ Variable : Variable_Value;
+ Proj : Project_Id;
+ Tgt_Name : Name_Id := No_Name;
+
+ begin
+ Proj := Project;
+ Project_Loop :
+ while Proj /= No_Project loop
+ Variable :=
+ Value_Of (Name_Target, Proj.Decl.Attributes, Shared);
+
+ if Variable /= Nil_Variable_Value
+ and then not Variable.Default
+ and then Variable.Value /= No_Name
+ then
+ Tgt_Name := Variable.Value;
+ exit Project_Loop;
+ end if;
+
+ Proj := Proj.Extends;
+ end loop Project_Loop;
+
+ if Tgt_Name /= No_Name then
+ Selected_Target := new String'(Get_Name_String (Tgt_Name));
+ end if;
+ end;
+ end if;
+ end Get_Project_Target;
+
-----------------------
-- Default_File_Name --
-----------------------
@@ -775,13 +822,14 @@ package body Prj.Conf is
Tmp : String_Access;
begin
- if Target_Name /= "" then
+ if Selected_Target'Length /= 0 then
if Ada_RTS /= "" then
return
- Target_Name & '-' & Ada_RTS & Config_Project_File_Extension;
+ Selected_Target.all & '-' &
+ Ada_RTS & Config_Project_File_Extension;
else
return
- Target_Name & Config_Project_File_Extension;
+ Selected_Target.all & Config_Project_File_Extension;
end if;
elsif Ada_RTS /= "" then
@@ -813,7 +861,7 @@ package body Prj.Conf is
Obj_Dir : constant Variable_Value :=
Value_Of
(Name_Object_Dir,
- Project.Decl.Attributes,
+ Conf_Project.Decl.Attributes,
Shared);
Gprconfig_Path : String_Access;
@@ -827,10 +875,10 @@ package body Prj.Conf is
("could not locate gprconfig for auto-configuration");
end if;
- -- First, find the object directory of the user's project
+ -- First, find the object directory of the Conf_Project
if Obj_Dir = Nil_Variable_Value or else Obj_Dir.Default then
- Get_Name_String (Project.Directory.Display_Name);
+ Get_Name_String (Conf_Project.Directory.Display_Name);
else
if Is_Absolute_Path (Get_Name_String (Obj_Dir.Value)) then
@@ -839,7 +887,7 @@ package body Prj.Conf is
else
Name_Len := 0;
Add_Str_To_Name_Buffer
- (Get_Name_String (Project.Directory.Display_Name));
+ (Get_Name_String (Conf_Project.Directory.Display_Name));
Add_Str_To_Name_Buffer (Get_Name_String (Obj_Dir.Value));
end if;
end if;
@@ -972,51 +1020,18 @@ package body Prj.Conf is
if Normalized_Hostname = "" then
Arg_Last := 3;
else
- if Target_Name = "" then
-
- -- Check if attribute Target is specified in the main
- -- project, or in a project it extends. If it is, use this
- -- target to invoke gprconfig.
-
- declare
- Variable : Variable_Value;
- Proj : Project_Id;
- Tgt_Name : Name_Id := No_Name;
-
- begin
- Proj := Project;
- Project_Loop :
- while Proj /= No_Project loop
- Variable :=
- Value_Of (Name_Target, Proj.Decl.Attributes, Shared);
-
- if Variable /= Nil_Variable_Value
- and then not Variable.Default
- and then Variable.Value /= No_Name
- then
- Tgt_Name := Variable.Value;
- exit Project_Loop;
- end if;
-
- Proj := Proj.Extends;
- end loop Project_Loop;
-
- if Tgt_Name /= No_Name then
- Args (4) :=
- new String'("--target=" &
- Get_Name_String (Tgt_Name));
-
- elsif At_Least_One_Compiler_Command then
- Args (4) := new String'("--target=all");
-
- else
- Args (4) :=
- new String'("--target=" & Normalized_Hostname);
- end if;
- end;
+ if Selected_Target'Length = 0 then
+ if At_Least_One_Compiler_Command then
+ Args (4) :=
+ new String'("--target=all");
+ else
+ Args (4) :=
+ new String'("--target=" & Normalized_Hostname);
+ end if;
else
- Args (4) := new String'("--target=" & Target_Name);
+ Args (4) :=
+ new String'("--target=" & Selected_Target.all);
end if;
Arg_Last := 4;
@@ -1348,6 +1363,7 @@ package body Prj.Conf is
Free (Config_File_Path);
Config := No_Project;
+ Get_Project_Target;
Check_Builder_Switches;
if Conf_File_Name'Length > 0 then
@@ -1448,7 +1464,8 @@ package body Prj.Conf is
if not Automatically_Generated
and then not
- Check_Target (Config, Autoconf_Specified, Project_Tree, Target_Name)
+ Check_Target
+ (Config, Autoconf_Specified, Project_Tree, Selected_Target.all)
then
Automatically_Generated := True;
goto Process_Config_File;
@@ -1611,6 +1628,43 @@ package body Prj.Conf is
Main_Config_Project : Project_Id;
Success : Boolean;
+ Conf_Project : Project_Id := No_Project;
+ -- The object directory of this project is used to store the config
+ -- project file in auto-configuration. Set by Check_Project below.
+
+ procedure Check_Project (Project : Project_Id);
+ -- Look for a non aggregate project. If one is found, put its project Id
+ -- in Conf_Project.
+
+ -------------------
+ -- Check_Project --
+ -------------------
+
+ procedure Check_Project (Project : Project_Id) is
+ begin
+ if Project.Qualifier = Aggregate
+ or else
+ Project.Qualifier = Aggregate_Library
+ then
+ declare
+ List : Aggregated_Project_List := Project.Aggregated_Projects;
+
+ begin
+ -- Look for a non aggregate project until one is found
+
+ while Conf_Project = No_Project and then List /= null loop
+ Check_Project (List.Project);
+ List := List.Next;
+ end loop;
+ end;
+
+ else
+ Conf_Project := Project;
+ end if;
+ end Check_Project;
+
+ -- Start of processing for Process_Project_And_Apply_Config
+
begin
Main_Project := No_Project;
Automatically_Generated := False;
@@ -1666,11 +1720,25 @@ package body Prj.Conf is
Read_Source_Info_File (Project_Tree);
end if;
+ -- Get the first project that is not an aggregate project or an
+ -- aggregate library project. The object directory of this project will
+ -- be used to store the config project file in auto-configuration.
+
+ Check_Project (Main_Project);
+
+ -- Fail if there is only aggregate projects and aggregate library
+ -- projects in the project tree.
+
+ if Conf_Project = No_Project then
+ Raise_Invalid_Config ("there are no non-aggregate projects");
+ end if;
+
-- Find configuration file
Get_Or_Create_Configuration_File
(Config => Main_Config_Project,
Project => Main_Project,
+ Conf_Project => Conf_Project,
Project_Tree => Project_Tree,
Project_Node_Tree => Project_Node_Tree,
Env => Env,
diff --git a/gcc/ada/prj-conf.ads b/gcc/ada/prj-conf.ads
index f283c6ed2b3..7154e55d23a 100644
--- a/gcc/ada/prj-conf.ads
+++ b/gcc/ada/prj-conf.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2006-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 2006-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -119,6 +119,7 @@ package Prj.Conf is
procedure Get_Or_Create_Configuration_File
(Project : Prj.Project_Id;
+ Conf_Project : Project_Id;
Project_Tree : Prj.Project_Tree_Ref;
Project_Node_Tree : Prj.Tree.Project_Node_Tree_Ref;
Env : in out Prj.Tree.Environment;
@@ -134,7 +135,9 @@ package Prj.Conf is
On_Load_Config : Config_File_Hook := null);
-- Compute the name of the configuration file that should be used. If no
-- default configuration file is found, a new one will be automatically
- -- generated if Allow_Automatic_Generation is true.
+ -- generated if Allow_Automatic_Generation is true. This configuration
+ -- project file will be generated in the object directory of project
+ -- Conf_Project.
--
-- Any error in generating or parsing the config file is reported via the
-- Invalid_Config exception, with an appropriate message.
@@ -160,7 +163,7 @@ package Prj.Conf is
--
-- If a project file could be found, it is automatically parsed and
-- processed (and Packages_To_Check is used to indicate which packages
- -- should be processed)
+ -- should be processed).
procedure Add_Default_GNAT_Naming_Scheme
(Config_File : in out Prj.Tree.Project_Node_Id;
diff --git a/gcc/ada/prj-proc.adb b/gcc/ada/prj-proc.adb
index 39ebe70b4ad..fe4c252b06e 100644
--- a/gcc/ada/prj-proc.adb
+++ b/gcc/ada/prj-proc.adb
@@ -2607,6 +2607,7 @@ package body Prj.Proc is
Loaded_Project : Prj.Tree.Project_Node_Id;
Success : Boolean := True;
Tree : Project_Tree_Ref;
+ Node_Tree : Project_Node_Tree_Ref;
begin
if Project.Qualifier not in Aggregate_Project then
@@ -2623,8 +2624,11 @@ package body Prj.Proc is
List := Project.Aggregated_Projects;
while Success and then List /= null loop
+ Node_Tree := new Project_Node_Tree_Data;
+ Initialize (Node_Tree);
+
Prj.Part.Parse
- (In_Tree => From_Project_Node_Tree,
+ (In_Tree => Node_Tree,
Project => Loaded_Project,
Packages_To_Check => Packages_To_Check,
Project_File_Name => Get_Name_String (List.Path),
@@ -2661,7 +2665,7 @@ package body Prj.Proc is
Packages_To_Check => Packages_To_Check,
Success => Success,
From_Project_Node => Loaded_Project,
- From_Project_Node_Tree => From_Project_Node_Tree,
+ From_Project_Node_Tree => Node_Tree,
Env => Child_Env,
Reset_Tree => False);
else
@@ -2673,7 +2677,7 @@ package body Prj.Proc is
Packages_To_Check => Packages_To_Check,
Success => Success,
From_Project_Node => Loaded_Project,
- From_Project_Node_Tree => From_Project_Node_Tree,
+ From_Project_Node_Tree => Node_Tree,
Env => Env,
Reset_Tree => False);
end if;
diff --git a/gcc/ada/raise-gcc.c b/gcc/ada/raise-gcc.c
index 4da4bd286e5..42c5a5c4b45 100644
--- a/gcc/ada/raise-gcc.c
+++ b/gcc/ada/raise-gcc.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2012, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2013, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
@@ -38,13 +38,12 @@
#include "tconfig.h"
#include "tsystem.h"
-#include <sys/stat.h>
+
#include <stdarg.h>
typedef char bool;
# define true 1
# define false 0
-#include "adaint.h"
#include "raise.h"
#ifdef __APPLE__
@@ -81,7 +80,6 @@ extern struct Exception_Occurrence *__gnat_setup_current_excep
(_Unwind_Exception *);
extern void __gnat_unhandled_except_handler (_Unwind_Exception *);
-#include "dwarf2.h"
#include "unwind-pe.h"
/* The known and handled exception classes. */
@@ -93,6 +91,8 @@ extern void __gnat_unhandled_except_handler (_Unwind_Exception *);
-- The DB stuff below is there for debugging purposes only. --
-------------------------------------------------------------- */
+#ifndef inhibit_libc
+
#define DB_PHASES 0x1
#define DB_CSITE 0x2
#define DB_ACTIONS 0x4
@@ -193,7 +193,11 @@ db_phases (int phases)
db (DB_PHASES, " :\n");
}
-
+#else /* !inhibit_libc */
+#define db_phases(X)
+#define db_indent(X)
+#define db(X, ...)
+#endif /* !inhibit_libc */
/* ---------------------------------------------------------------
-- Now come a set of useful structures and helper routines. --
@@ -516,6 +520,7 @@ get_ip_from_context (_Unwind_Context *uw_context)
static void
db_region_for (region_descriptor *region, _Unwind_Ptr ip)
{
+#ifndef inhibit_libc
if (! (db_accepted_codes () & DB_REGIONS))
return;
@@ -527,6 +532,7 @@ db_region_for (region_descriptor *region, _Unwind_Ptr ip)
db (DB_REGIONS, "no lsda");
db (DB_REGIONS, "\n");
+#endif
}
/* Retrieve the ttype entry associated with FILTER in the REGION's
@@ -647,6 +653,7 @@ typedef struct
static void
db_action_for (action_descriptor *action, _Unwind_Ptr ip)
{
+#ifndef inhibit_libc
db (DB_ACTIONS, "For ip @ %p => ", (void *)ip);
switch (action->kind)
@@ -672,8 +679,7 @@ db_action_for (action_descriptor *action, _Unwind_Ptr ip)
db (DB_ACTIONS, "Err? Unexpected action kind !\n");
break;
}
-
- return;
+#endif
}
/* Search the call_site_table of REGION for an entry appropriate for the
diff --git a/gcc/ada/rtsfind.adb b/gcc/ada/rtsfind.adb
index ac662f8ddbe..5327da54aac 100644
--- a/gcc/ada/rtsfind.adb
+++ b/gcc/ada/rtsfind.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -148,6 +148,7 @@ package body Rtsfind is
-- value in RTU_Id.
procedure Load_Fail (S : String; U_Id : RTU_Id; Id : RE_Id);
+ pragma No_Return (Load_Fail);
-- Internal procedure called if we can't successfully locate or process a
-- run-time unit. The parameters give information about the error message
-- to be given. S is a reason for failing to compile the file and U_Id is
diff --git a/gcc/ada/s-dim.ads b/gcc/ada/s-dim.ads
index 9896de8dd79..f4b10030a1f 100644
--- a/gcc/ada/s-dim.ads
+++ b/gcc/ada/s-dim.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2012, Free Software Foundation, Inc. --
+-- Copyright (C) 2012-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
diff --git a/gcc/ada/s-multip.adb b/gcc/ada/s-multip.adb
index ea1f15c06a9..901cda0c654 100644
--- a/gcc/ada/s-multip.adb
+++ b/gcc/ada/s-multip.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2010, Free Software Foundation, Inc. --
+-- Copyright (C) 2010-2013, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -30,16 +30,22 @@ with Interfaces.C; use Interfaces.C;
package body System.Multiprocessors is
- function Gnat_Number_Of_CPUs return int;
- pragma Import (C, Gnat_Number_Of_CPUs, "__gnat_number_of_cpus");
-
--------------------
-- Number_Of_CPUs --
--------------------
function Number_Of_CPUs return CPU is
begin
- return CPU (Gnat_Number_Of_CPUs);
+ if CPU'Last = 1 then
+ return 1;
+ else
+ declare
+ function Gnat_Number_Of_CPUs return int;
+ pragma Import (C, Gnat_Number_Of_CPUs, "__gnat_number_of_cpus");
+ begin
+ return CPU (Gnat_Number_Of_CPUs);
+ end;
+ end if;
end Number_Of_CPUs;
end System.Multiprocessors;
diff --git a/gcc/ada/s-os_lib.adb b/gcc/ada/s-os_lib.adb
index 100b174bf2c..268e5418656 100644
--- a/gcc/ada/s-os_lib.adb
+++ b/gcc/ada/s-os_lib.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2012, AdaCore --
+-- Copyright (C) 1995-2013, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -1479,7 +1479,7 @@ package body System.OS_Lib is
if not Is_Absolute_Path (Result.all) then
declare
Absolute_Path : constant String :=
- Normalize_Pathname (Result.all);
+ Normalize_Pathname (Result.all, Resolve_Links => False);
begin
Free (Result);
Result := new String'(Absolute_Path);
@@ -1656,7 +1656,7 @@ package body System.OS_Lib is
procedure Normalize_Arguments (Args : in out Argument_List) is
procedure Quote_Argument (Arg : in out String_Access);
- -- Add quote around argument if it contains spaces
+ -- Add quote around argument if it contains spaces (or HT characters)
C_Argument_Needs_Quote : Integer;
pragma Import (C, C_Argument_Needs_Quote, "__gnat_argument_needs_quote");
@@ -1688,7 +1688,7 @@ package body System.OS_Lib is
Res (J) := '"';
Quote_Needed := True;
- elsif Arg (K) = ' ' then
+ elsif Arg (K) = ' ' or else Arg (K) = ASCII.HT then
Res (J) := Arg (K);
Quote_Needed := True;
diff --git a/gcc/ada/s-osprim-mingw.adb b/gcc/ada/s-osprim-mingw.adb
index 931d0127623..874b1cb186a 100644
--- a/gcc/ada/s-osprim-mingw.adb
+++ b/gcc/ada/s-osprim-mingw.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1998-2013, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -31,10 +31,12 @@
-- This is the NT version of this package
+with System.Task_Lock;
with System.Win32.Ext;
package body System.OS_Primitives is
+ use System.Task_Lock;
use System.Win32;
use System.Win32.Ext;
@@ -42,50 +44,53 @@ package body System.OS_Primitives is
-- Data for the high resolution clock --
----------------------------------------
- -- Declare some pointers to access multi-word data above. This is needed
- -- to workaround a limitation in the GNU/Linker auto-import feature used
- -- to build the GNAT runtime DLLs. In fact the Clock and Monotonic_Clock
- -- routines are inlined and they are using some multi-word variables.
- -- GNU/Linker will fail to auto-import those variables when building
- -- libgnarl.dll. The indirection level introduced here has no measurable
- -- penalties.
+ Tick_Frequency : aliased LARGE_INTEGER;
+ -- Holds frequency of high-performance counter used by Clock
+ -- Windows NT uses a 1_193_182 Hz counter on PCs.
- type DA is access all Duration;
- -- Use to have indirect access to multi-word variables
+ Base_Monotonic_Ticks : LARGE_INTEGER;
+ -- Holds the Tick count for the base monotonic time
- type LIA is access all LARGE_INTEGER;
- -- Use to have indirect access to multi-word variables
+ Base_Monotonic_Clock : Duration;
+ -- Holds the current clock for monotonic clock's base time
- type LLIA is access all Long_Long_Integer;
- -- Use to have indirect access to multi-word variables
+ type Clock_Data is record
+ Base_Ticks : LARGE_INTEGER;
+ -- Holds the Tick count for the base time
- Tick_Frequency : aliased LARGE_INTEGER;
- TFA : constant LIA := Tick_Frequency'Access;
- -- Holds frequency of high-performance counter used by Clock
- -- Windows NT uses a 1_193_182 Hz counter on PCs.
+ Base_Time : Long_Long_Integer;
+ -- Holds the base time used to check for system time change, used with
+ -- the standard clock.
- Base_Ticks : aliased LARGE_INTEGER;
- BTA : constant LIA := Base_Ticks'Access;
- -- Holds the Tick count for the base time
+ Base_Clock : Duration;
+ -- Holds the current clock for the standard clock's base time
+ end record;
- Base_Monotonic_Ticks : aliased LARGE_INTEGER;
- BMTA : constant LIA := Base_Monotonic_Ticks'Access;
- -- Holds the Tick count for the base monotonic time
+ type Clock_Data_Access is access all Clock_Data;
- Base_Clock : aliased Duration;
- BCA : constant DA := Base_Clock'Access;
- -- Holds the current clock for the standard clock's base time
+ -- Two base clock buffers. This is used to be able to update a buffer
+ -- while the other buffer is read. The point is that we do not want to
+ -- use a lock inside the Clock routine for performance reasons. We still
+ -- use a lock in the Get_Base_Time which is called very rarely. Current
+ -- is a pointer, the pragma Atomic is there to ensure that the value can
+ -- be set or read atomically. That's it, when Get_Base_Time has updated
+ -- a buffer the switch to the new value is done by changing Current
+ -- pointer.
- Base_Monotonic_Clock : aliased Duration;
- BMCA : constant DA := Base_Monotonic_Clock'Access;
- -- Holds the current clock for monotonic clock's base time
+ First, Second : aliased Clock_Data;
+ Current : Clock_Data_Access := First'Access;
+ pragma Atomic (Current);
- Base_Time : aliased Long_Long_Integer;
- BTiA : constant LLIA := Base_Time'Access;
- -- Holds the base time used to check for system time change, used with
- -- the standard clock.
+ -- The following signature is to detect change on the base clock data
+ -- above. The signature is a modular type, it will wrap around without
+ -- raising an exception. We would need to have exactly 2**32 updates of
+ -- the base data for the changes to get undetected.
- procedure Get_Base_Time;
+ type Signature_Type is mod 2**32;
+ Signature : Signature_Type := 0;
+ pragma Atomic (Signature);
+
+ procedure Get_Base_Time (Data : out Clock_Data);
-- Retrieve the base time and base ticks. These values will be used by
-- clock to compute the current time by adding to it a fraction of the
-- performance counter. This is for the implementation of a
@@ -105,12 +110,28 @@ package body System.OS_Primitives is
function Clock return Duration is
Max_Shift : constant Duration := 2.0;
Hundreds_Nano_In_Sec : constant Long_Long_Float := 1.0E7;
+ Data : Clock_Data;
Current_Ticks : aliased LARGE_INTEGER;
Elap_Secs_Tick : Duration;
Elap_Secs_Sys : Duration;
Now : aliased Long_Long_Integer;
+ Sig1, Sig2 : Signature_Type;
begin
+ -- Try ten times to get a coherent set of base data. For this we just
+ -- check that the signature hasn't changed during the copy of the
+ -- current data.
+ --
+ -- This loop will always be done once if there is no interleaved call
+ -- to Get_Base_Time.
+
+ for K in 1 .. 10 loop
+ Sig1 := Signature;
+ Data := Current.all;
+ Sig2 := Signature;
+ exit when Sig1 = Sig2;
+ end loop;
+
if QueryPerformanceCounter (Current_Ticks'Access) = Win32.FALSE then
return 0.0;
end if;
@@ -118,12 +139,12 @@ package body System.OS_Primitives is
GetSystemTimeAsFileTime (Now'Access);
Elap_Secs_Sys :=
- Duration (Long_Long_Float (abs (Now - BTiA.all)) /
+ Duration (Long_Long_Float (abs (Now - Data.Base_Time)) /
Hundreds_Nano_In_Sec);
Elap_Secs_Tick :=
- Duration (Long_Long_Float (Current_Ticks - BTA.all) /
- Long_Long_Float (TFA.all));
+ Duration (Long_Long_Float (Current_Ticks - Data.Base_Ticks) /
+ Long_Long_Float (Tick_Frequency));
-- If we have a shift of more than Max_Shift seconds we resynchronize
-- the Clock. This is probably due to a manual Clock adjustment, a DST
@@ -131,21 +152,21 @@ package body System.OS_Primitives is
-- for this system (non-monotonic) clock.
if abs (Elap_Secs_Sys - Elap_Secs_Tick) > Max_Shift then
- Get_Base_Time;
+ Get_Base_Time (Data);
Elap_Secs_Tick :=
- Duration (Long_Long_Float (Current_Ticks - BTA.all) /
- Long_Long_Float (TFA.all));
+ Duration (Long_Long_Float (Current_Ticks - Data.Base_Ticks) /
+ Long_Long_Float (Tick_Frequency));
end if;
- return BCA.all + Elap_Secs_Tick;
+ return Data.Base_Clock + Elap_Secs_Tick;
end Clock;
-------------------
-- Get_Base_Time --
-------------------
- procedure Get_Base_Time is
+ procedure Get_Base_Time (Data : out Clock_Data) is
-- The resolution for GetSystemTime is 1 millisecond
@@ -159,11 +180,13 @@ package body System.OS_Primitives is
Max_Elapsed : constant LARGE_INTEGER :=
LARGE_INTEGER (Tick_Frequency / 100_000);
-- Look for a precision of 0.01 ms
+ Sig : constant Signature_Type := Signature;
Loc_Ticks, Ctrl_Ticks : aliased LARGE_INTEGER;
Loc_Time, Ctrl_Time : aliased Long_Long_Integer;
Elapsed : LARGE_INTEGER;
Current_Max : LARGE_INTEGER := LARGE_INTEGER'Last;
+ New_Data : Clock_Data_Access;
begin
-- Here we must be sure that both of these calls are done in a short
@@ -180,6 +203,28 @@ package body System.OS_Primitives is
-- millisecond) otherwise the runtime will use the best value reached
-- during the runs.
+ Lock;
+
+ -- First check that the current value has not been updated. This
+ -- could happen if another task has called Clock at the same time
+ -- and that Max_Shift has been reached too.
+ --
+ -- But if the current value has been changed just before we entered
+ -- into the critical section, we can safely return as the current
+ -- base data (time, clock, ticks) have already been updated.
+
+ if Sig /= Signature then
+ return;
+ end if;
+
+ -- Check for the unused data buffer and set New_Data to point to it
+
+ if Current = First'Access then
+ New_Data := Second'Access;
+ else
+ New_Data := First'Access;
+ end if;
+
for K in 1 .. 10 loop
if QueryPerformanceCounter (Loc_Ticks'Access) = Win32.FALSE then
pragma Assert
@@ -214,8 +259,8 @@ package body System.OS_Primitives is
Elapsed := Ctrl_Ticks - Loc_Ticks;
if Elapsed < Current_Max then
- Base_Time := Loc_Time;
- Base_Ticks := Loc_Ticks;
+ New_Data.Base_Time := Loc_Time;
+ New_Data.Base_Ticks := Loc_Ticks;
Current_Max := Elapsed;
-- Exit the loop when we have reached the expected precision
@@ -224,9 +269,27 @@ package body System.OS_Primitives is
end if;
end loop;
- Base_Clock := Duration
- (Long_Long_Float ((Base_Time - epoch_1970) * system_time_ns) /
- Long_Long_Float (Sec_Unit));
+ New_Data.Base_Clock := Duration
+ (Long_Long_Float ((New_Data.Base_Time - epoch_1970) * system_time_ns) /
+ Long_Long_Float (Sec_Unit));
+
+ -- At this point all the base values have been set into the new data
+ -- record. We just change the pointer (atomic operation) to this new
+ -- values.
+
+ Current := New_Data;
+ Data := New_Data.all;
+
+ -- Set new signature for this data set
+
+ Signature := Signature + 1;
+
+ Unlock;
+
+ exception
+ when others =>
+ Unlock;
+ raise;
end Get_Base_Time;
---------------------
@@ -243,9 +306,9 @@ package body System.OS_Primitives is
else
Elap_Secs_Tick :=
- Duration (Long_Long_Float (Current_Ticks - BMTA.all) /
- Long_Long_Float (TFA.all));
- return BMCA.all + Elap_Secs_Tick;
+ Duration (Long_Long_Float (Current_Ticks - Base_Monotonic_Ticks) /
+ Long_Long_Float (Tick_Frequency));
+ return Base_Monotonic_Clock + Elap_Secs_Tick;
end if;
end Monotonic_Clock;
@@ -328,14 +391,14 @@ package body System.OS_Primitives is
"cannot get high performance counter frequency";
end if;
- Get_Base_Time;
+ Get_Base_Time (Current.all);
-- Keep base clock and ticks for the monotonic clock. These values
-- should never be changed to ensure proper behavior of the monotonic
-- clock.
- Base_Monotonic_Clock := Base_Clock;
- Base_Monotonic_Ticks := Base_Ticks;
+ Base_Monotonic_Clock := Current.Base_Clock;
+ Base_Monotonic_Ticks := Current.Base_Ticks;
end Initialize;
end System.OS_Primitives;
diff --git a/gcc/ada/s-tasloc.ads b/gcc/ada/s-tasloc.ads
index 9db7564dae6..5e370bba36e 100644
--- a/gcc/ada/s-tasloc.ads
+++ b/gcc/ada/s-tasloc.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2010, AdaCore --
+-- Copyright (C) 1998-2013, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -44,7 +44,7 @@
-- a renaming of this package in GNAT.Task_Lock (file g-tasloc.ads).
package System.Task_Lock is
- pragma Elaborate_Body;
+ pragma Preelaborate;
procedure Lock;
pragma Inline (Lock);
diff --git a/gcc/ada/seh_init.c b/gcc/ada/seh_init.c
index 9b3c081081d..3a2cb516b23 100644
--- a/gcc/ada/seh_init.c
+++ b/gcc/ada/seh_init.c
@@ -91,7 +91,7 @@ __gnat_map_SEH (EXCEPTION_RECORD* ExceptionRecord, const char **msg)
*/
if ((ExceptionRecord->ExceptionInformation[1] & 3) != 0
|| IsBadCodePtr
- ((void *)(ExceptionRecord->ExceptionInformation[1] + 4096)))
+ ((FARPROC)(ExceptionRecord->ExceptionInformation[1] + 4096)))
{
*msg = "EXCEPTION_ACCESS_VIOLATION";
return &program_error;
diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb
index 6247952843e..c2a298bbdf8 100644
--- a/gcc/ada/sem_attr.adb
+++ b/gcc/ada/sem_attr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -9821,6 +9821,18 @@ package body Sem_Attr is
when Attribute_Enabled =>
null;
+ ----------------
+ -- Loop_Entry --
+ ----------------
+
+ -- Do not resolve the prefix of Loop_Entry, instead wait until the
+ -- attribute has been expanded (see Expand_Loop_Entry_Attributes).
+ -- The delay ensures that any generated checks or temporaries are
+ -- inserted before the relocated prefix.
+
+ when Attribute_Loop_Entry =>
+ null;
+
--------------------
-- Mechanism_Code --
--------------------
diff --git a/gcc/ada/sem_ch10.adb b/gcc/ada/sem_ch10.adb
index 2e04d60c50f..a4241afabd7 100644
--- a/gcc/ada/sem_ch10.adb
+++ b/gcc/ada/sem_ch10.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -4741,9 +4741,10 @@ package body Sem_Ch10 is
-- compiling the body of the child unit.
if P = Cunit_Entity (Current_Sem_Unit)
- or else
- (Nkind (Unit (Cunit (Current_Sem_Unit))) = N_Package_Body
- and then P = Main_Unit_Entity)
+ or else (Nkind (Unit (Cunit (Current_Sem_Unit))) = N_Package_Body
+ and then P = Main_Unit_Entity
+ and then Is_Ancestor_Unit
+ (Cunit (Main_Unit), Cunit (Current_Sem_Unit)))
then
return;
end if;
diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb
index 85a863ffff3..3f8abe7f58c 100644
--- a/gcc/ada/sem_ch12.adb
+++ b/gcc/ada/sem_ch12.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -10452,23 +10452,24 @@ package body Sem_Ch12 is
T : constant Entity_Id := Get_Instance_Of (Gen_T);
begin
- return (Base_Type (T) = Base_Type (Act_T)
+ -- Some detailed comments would be useful here ???
+
+ return ((Base_Type (T) = Act_T
+ or else Base_Type (T) = Base_Type (Act_T))
and then Subtypes_Statically_Match (T, Act_T))
or else (Is_Class_Wide_Type (Gen_T)
and then Is_Class_Wide_Type (Act_T)
- and then
- Subtypes_Match
- (Get_Instance_Of (Root_Type (Gen_T)),
- Root_Type (Act_T)))
+ and then Subtypes_Match
+ (Get_Instance_Of (Root_Type (Gen_T)),
+ Root_Type (Act_T)))
or else
- ((Ekind (Gen_T) = E_Anonymous_Access_Subprogram_Type
- or else Ekind (Gen_T) = E_Anonymous_Access_Type)
+ (Ekind_In (Gen_T, E_Anonymous_Access_Subprogram_Type,
+ E_Anonymous_Access_Type)
and then Ekind (Act_T) = Ekind (Gen_T)
- and then
- Subtypes_Statically_Match
- (Designated_Type (Gen_T), Designated_Type (Act_T)));
+ and then Subtypes_Statically_Match
+ (Designated_Type (Gen_T), Designated_Type (Act_T)));
end Subtypes_Match;
-----------------------------------------
@@ -10699,13 +10700,16 @@ package body Sem_Ch12 is
-- issues when the generic is a child unit and some aspect of the
-- generic type is declared in a parent unit of the generic. We do
-- the test to handle this special case only after a direct check
- -- for static matching has failed.
+ -- for static matching has failed. The case where both the component
+ -- type and the array type are separate formals, and the component
+ -- type is a private view may also require special checking in
+ -- Subtypes_Match.
if Subtypes_Match
(Component_Type (A_Gen_T), Component_Type (Act_T))
or else Subtypes_Match
- (Find_Actual_Type (Component_Type (A_Gen_T), A_Gen_T),
- Component_Type (Act_T))
+ (Find_Actual_Type (Component_Type (A_Gen_T), A_Gen_T),
+ Component_Type (Act_T))
then
null;
else
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
index f2bcfa84adb..92df5569df6 100644
--- a/gcc/ada/sem_ch13.adb
+++ b/gcc/ada/sem_ch13.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -843,7 +843,9 @@ package body Sem_Ch13 is
Prag :=
Make_Pragma (Loc,
Pragma_Argument_Associations => New_List (
- New_Occurrence_Of (Ent, Sloc (Ident))),
+ Make_Pragma_Argument_Association (Sloc (Ident),
+ Expression => New_Occurrence_Of (Ent, Sloc (Ident)))),
+
Pragma_Identifier =>
Make_Identifier (Sloc (Ident), Chars (Ident)));
@@ -1212,21 +1214,29 @@ package body Sem_Ch13 is
Aitem :=
Make_Pragma (Loc,
Pragma_Argument_Associations => New_List (
- New_Occurrence_Of (E, Loc),
- Relocate_Node (Expr)),
+ Make_Pragma_Argument_Association (Loc,
+ Expression => New_Occurrence_Of (E, Loc)),
+
+ Make_Pragma_Argument_Association (Sloc (Expr),
+ Expression => Relocate_Node (Expr))),
+
Pragma_Identifier =>
Make_Identifier (Sloc (Id), Chars (Id)));
when Aspect_Synchronization =>
-- The aspect corresponds to pragma Implemented.
- -- Construct the pragma
+ -- Construct the pragma.
Aitem :=
Make_Pragma (Loc,
Pragma_Argument_Associations => New_List (
- New_Occurrence_Of (E, Loc),
- Relocate_Node (Expr)),
+ Make_Pragma_Argument_Association (Loc,
+ Expression => New_Occurrence_Of (E, Loc)),
+
+ Make_Pragma_Argument_Association (Sloc (Expr),
+ Expression => Relocate_Node (Expr))),
+
Pragma_Identifier =>
Make_Identifier (Sloc (Id), Name_Implemented));
@@ -1241,8 +1251,11 @@ package body Sem_Ch13 is
Make_Pragma (Loc,
Pragma_Identifier =>
Make_Identifier (Sloc (Id), Name_Attach_Handler),
- Pragma_Argument_Associations =>
- New_List (Ent, Relocate_Node (Expr)));
+ Pragma_Argument_Associations => New_List (
+ Make_Pragma_Argument_Association (Sloc (Ent),
+ Expression => Ent),
+ Make_Pragma_Argument_Association (Sloc (Expr),
+ Expression => Relocate_Node (Expr))));
when Aspect_Dynamic_Predicate |
Aspect_Predicate |
@@ -1253,8 +1266,11 @@ package body Sem_Ch13 is
Aitem :=
Make_Pragma (Loc,
- Pragma_Argument_Associations =>
- New_List (Ent, Relocate_Node (Expr)),
+ Pragma_Argument_Associations => New_List (
+ Make_Pragma_Argument_Association (Sloc (Ent),
+ Expression => Ent),
+ Make_Pragma_Argument_Association (Sloc (Expr),
+ Expression => Relocate_Node (Expr))),
Class_Present => Class_Present (Aspect),
Pragma_Identifier =>
Make_Identifier (Sloc (Id), Name_Predicate));
@@ -1305,8 +1321,7 @@ package body Sem_Ch13 is
while Present (A) loop
A_Name := Chars (Identifier (A));
- if A_Name = Name_Import
- or else
+ if A_Name = Name_Import or else
A_Name = Name_Export
then
if Found then
@@ -1333,7 +1348,11 @@ package body Sem_Ch13 is
Next (A);
end loop;
- Arg_List := New_List (Relocate_Node (Expr), Ent);
+ Arg_List := New_List (
+ Make_Pragma_Argument_Association (Sloc (Expr),
+ Expression => Relocate_Node (Expr)),
+ Make_Pragma_Argument_Association (Sloc (Ent),
+ Expression => Ent));
if Present (L_Assoc) then
Append_To (Arg_List, L_Assoc);
@@ -1361,8 +1380,9 @@ package body Sem_Ch13 is
if Nkind (N) = N_Subprogram_Body then
Aitem :=
Make_Pragma (Loc,
- Pragma_Argument_Associations =>
- New_List (Relocate_Node (Expr)),
+ Pragma_Argument_Associations => New_List (
+ Make_Pragma_Argument_Association (Sloc (Expr),
+ Expression => Relocate_Node (Expr))),
Pragma_Identifier =>
Make_Identifier (Sloc (Id), Chars (Id)));
else
@@ -1380,8 +1400,10 @@ package body Sem_Ch13 is
Aitem :=
Make_Pragma (Loc,
Pragma_Argument_Associations => New_List (
- Relocate_Node (Expr),
- New_Occurrence_Of (E, Loc)),
+ Make_Pragma_Argument_Association (Sloc (Expr),
+ Expression => Relocate_Node (Expr)),
+ Make_Pragma_Argument_Association (Loc,
+ Expression => New_Occurrence_Of (E, Loc))),
Pragma_Identifier =>
Make_Identifier (Sloc (Id), Chars (Id)),
Class_Present => Class_Present (Aspect));
@@ -1409,8 +1431,11 @@ package body Sem_Ch13 is
Aitem :=
Make_Pragma (Loc,
- Pragma_Argument_Associations =>
- New_List (Ent, Relocate_Node (Expr)),
+ Pragma_Argument_Associations => New_List (
+ Make_Pragma_Argument_Association (Sloc (Ent),
+ Expression => Ent),
+ Make_Pragma_Argument_Association (Sloc (Expr),
+ Expression => Relocate_Node (Expr))),
Class_Present => Class_Present (Aspect),
Pragma_Identifier =>
Make_Identifier (Sloc (Id), Name_Invariant));
@@ -1661,6 +1686,7 @@ package body Sem_Ch13 is
when Aspect_Contract_Case |
Aspect_Test_Case =>
+
declare
Args : List_Id;
Comp_Expr : Node_Id;
@@ -1692,10 +1718,9 @@ package body Sem_Ch13 is
while Present (Comp_Expr) loop
New_Expr := Relocate_Node (Comp_Expr);
Set_Original_Node (New_Expr, Comp_Expr);
- Append
- (Make_Pragma_Argument_Association (Sloc (Comp_Expr),
- Expression => New_Expr),
- Args);
+ Append_To (Args,
+ Make_Pragma_Argument_Association (Sloc (Comp_Expr),
+ Expression => New_Expr));
Next (Comp_Expr);
end loop;
@@ -1713,11 +1738,10 @@ package body Sem_Ch13 is
New_Expr := Relocate_Node (Expression (Comp_Assn));
Set_Original_Node (New_Expr, Expression (Comp_Assn));
- Append (Make_Pragma_Argument_Association (
- Sloc => Sloc (Comp_Assn),
+ Append_To (Args,
+ Make_Pragma_Argument_Association (Sloc (Comp_Assn),
Chars => Chars (First (Choices (Comp_Assn))),
- Expression => New_Expr),
- Args);
+ Expression => New_Expr));
Next (Comp_Assn);
end loop;
@@ -1893,7 +1917,9 @@ package body Sem_Ch13 is
if No (Expr) then
Aitem :=
Make_Pragma (Loc,
- Pragma_Argument_Associations => New_List (Ent),
+ Pragma_Argument_Associations => New_List (
+ Make_Pragma_Argument_Association (Sloc (Ent),
+ Expression => Ent)),
Pragma_Identifier =>
Make_Identifier (Sloc (Id), Chars (Id)));
@@ -1940,7 +1966,9 @@ package body Sem_Ch13 is
if Is_True (Static_Boolean (Expr)) then
Aitem :=
Make_Pragma (Loc,
- Pragma_Argument_Associations => New_List (Ent),
+ Pragma_Argument_Associations => New_List (
+ Make_Pragma_Argument_Association (Sloc (Ent),
+ Expression => Ent)),
Pragma_Identifier =>
Make_Identifier (Sloc (Id), Chars (Id)));
@@ -3594,9 +3622,17 @@ package body Sem_Ch13 is
Flag_Non_Static_Expr
("Scalar_Storage_Order requires static expression!", Expr);
- else
- if (Expr_Value (Expr) = 0) /= Bytes_Big_Endian then
+ elsif (Expr_Value (Expr) = 0) /= Bytes_Big_Endian then
+
+ -- Here for the case of a non-default (i.e. non-confirming)
+ -- Scalar_Storage_Order attribute definition.
+
+ if Support_Nondefault_SSO_On_Target then
Set_Reverse_Storage_Order (Base_Type (U_Ent), True);
+ else
+ Error_Msg_N
+ ("non-default Scalar_Storage_Order "
+ & "not supported on target", Expr);
end if;
end if;
end if;
diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb
index f5e0bec769f..2346b10a1d0 100644
--- a/gcc/ada/sem_ch3.adb
+++ b/gcc/ada/sem_ch3.adb
@@ -8295,6 +8295,15 @@ package body Sem_Ch3 is
-- Return the Position number within array Discr_Expr of a discriminant
-- D within the discriminant list of the discriminated type T.
+ procedure Process_Discriminant_Expression
+ (Expr : Node_Id;
+ D : Entity_Id);
+ -- If this is a discriminant constraint on a partial view, do not
+ -- generate an overflow check on the discriminant expression. The check
+ -- will be generated when constraining the full view. Otherwise the
+ -- backend creates duplicate symbols for the temporaries corresponding
+ -- to the expressions to be checked, causing spurious assembler errors.
+
------------------
-- Pos_Of_Discr --
------------------
@@ -8319,6 +8328,31 @@ package body Sem_Ch3 is
raise Program_Error;
end Pos_Of_Discr;
+ -------------------------------------
+ -- Process_Discriminant_Expression --
+ -------------------------------------
+
+ procedure Process_Discriminant_Expression
+ (Expr : Node_Id;
+ D : Entity_Id)
+ is
+ BDT : constant Entity_Id := Base_Type (Etype (D));
+
+ begin
+ -- If this is a discriminant constraint on a partial view, do
+ -- not generate an overflow on the discriminant expression. The
+ -- check will be generated when constraining the full view.
+
+ if Is_Private_Type (T)
+ and then Present (Full_View (T))
+ then
+ Analyze_And_Resolve (Expr, BDT, Suppress => Overflow_Check);
+
+ else
+ Analyze_And_Resolve (Expr, BDT);
+ end if;
+ end Process_Discriminant_Expression;
+
-- Declarations local to Build_Discriminant_Constraints
Discr : Entity_Id;
@@ -8359,7 +8393,7 @@ package body Sem_Ch3 is
Discr_Expr (D) := Error;
else
- Analyze_And_Resolve (Constr, Base_Type (Etype (Discr)));
+ Process_Discriminant_Expression (Constr, Discr);
Discr_Expr (D) := Constr;
end if;
@@ -8470,7 +8504,7 @@ package body Sem_Ch3 is
end if;
Discr_Expr (Position) := Expr;
- Analyze_And_Resolve (Expr, Base_Type (Etype (Discr)));
+ Process_Discriminant_Expression (Expr, Discr);
end if;
-- A discriminant association with more than one discriminant
@@ -9060,17 +9094,16 @@ package body Sem_Ch3 is
Impl_Prag :=
Make_Pragma (Loc,
- Chars => Name_Implemented,
+ Chars => Name_Implemented,
Pragma_Argument_Associations => New_List (
Make_Pragma_Argument_Association (Loc,
- Expression =>
- New_Reference_To (Subp, Loc)),
+ Expression => New_Reference_To (Subp, Loc)),
Make_Pragma_Argument_Association (Loc,
Expression => Make_Identifier (Loc, Iface_Kind))));
-- The pragma doesn't need to be analyzed because it is internally
- -- build. It is safe to directly register it as a rep item since we
+ -- built. It is safe to directly register it as a rep item since we
-- are only interested in the characters of the implementation kind.
Record_Rep_Item (Subp, Impl_Prag);
@@ -10256,19 +10289,23 @@ package body Sem_Ch3 is
Protected_Kind =>
Copy_Node (Priv, Full);
- Set_Has_Discriminants (Full, Has_Discriminants (Full_Base));
- Set_First_Entity (Full, First_Entity (Full_Base));
- Set_Last_Entity (Full, Last_Entity (Full_Base));
+ Set_Has_Discriminants
+ (Full, Has_Discriminants (Full_Base));
+ Set_Has_Unknown_Discriminants
+ (Full, Has_Unknown_Discriminants (Full_Base));
+ Set_First_Entity (Full, First_Entity (Full_Base));
+ Set_Last_Entity (Full, Last_Entity (Full_Base));
when others =>
Copy_Node (Full_Base, Full);
- Set_Chars (Full, Chars (Priv));
- Conditional_Delay (Full, Priv);
- Set_Sloc (Full, Sloc (Priv));
+
+ Set_Chars (Full, Chars (Priv));
+ Conditional_Delay (Full, Priv);
+ Set_Sloc (Full, Sloc (Priv));
end case;
- Set_Next_Entity (Full, Save_Next_Entity);
- Set_Homonym (Full, Save_Homonym);
+ Set_Next_Entity (Full, Save_Next_Entity);
+ Set_Homonym (Full, Save_Homonym);
Set_Associated_Node_For_Itype (Full, Related_Nod);
-- Set common attributes for all subtypes: kind, convention, etc.
@@ -17389,7 +17426,6 @@ package body Sem_Ch3 is
if Is_Private_Type (Id_B) then
Append_Elmt (Id, Private_Dependents (Id_B));
end if;
-
end Prepare_Private_Subtype_Completion;
---------------------------
diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb
index 68eeea347d0..728e4a7a8d7 100644
--- a/gcc/ada/sem_ch6.adb
+++ b/gcc/ada/sem_ch6.adb
@@ -4264,9 +4264,9 @@ package body Sem_Ch6 is
-- This body is subsequently used for inline expansions at call sites.
function Can_Split_Unconstrained_Function (N : Node_Id) return Boolean;
- -- Return true if the function body N has no local declarations and its
- -- unique statement is a single extended return statement with a handled
- -- statements sequence.
+ -- Return true if we generate code for the function body N, the function
+ -- body N has no local declarations and its unique statement is a single
+ -- extended return statement with a handled statements sequence.
function Check_Body_To_Inline
(N : Node_Id;
@@ -5001,7 +5001,13 @@ package body Sem_Ch6 is
end loop;
end if;
- return Present (Ret_Node)
+ -- We only split the inlined function when we are generating the code
+ -- of its body; otherwise we leave duplicated split subprograms in
+ -- the tree which (if referenced) generate wrong references at link
+ -- time.
+
+ return In_Extended_Main_Code_Unit (N)
+ and then Present (Ret_Node)
and then Nkind (Ret_Node) = N_Extended_Return_Statement
and then No (Next (Ret_Node))
and then Present (Handled_Statement_Sequence (Ret_Node));
@@ -9753,6 +9759,30 @@ package body Sem_Ch6 is
Next_Formal (Formal);
end loop;
+
+ -- Special case: An equality function can be redefined for a type
+ -- occurring in a declarative part, and won't otherwise be treated as
+ -- a primitive because it doesn't occur in a package spec and doesn't
+ -- override an inherited subprogram. It's important that we mark it
+ -- primitive so it can be returned by Collect_Primitive_Operations
+ -- and be used in composing the equality operation of later types
+ -- that have a component of the type.
+
+ elsif Chars (S) = Name_Op_Eq
+ and then Etype (S) = Standard_Boolean
+ then
+ B_Typ := Base_Type (Etype (First_Formal (S)));
+
+ if Scope (B_Typ) = Current_Scope
+ and then
+ Base_Type (Etype (Next_Formal (First_Formal (S)))) = B_Typ
+ and then not Is_Limited_Type (B_Typ)
+ then
+ Is_Primitive := True;
+ Set_Is_Primitive (S);
+ Set_Has_Primitive_Operations (B_Typ);
+ Check_Private_Overriding (B_Typ);
+ end if;
end if;
end Check_For_Primitive_Subprogram;
@@ -11735,7 +11765,7 @@ package body Sem_Ch6 is
if not Expander_Active then
CP :=
Make_Pragma (Loc,
- Chars => Name_Postcondition,
+ Chars => Name_Postcondition,
Pragma_Argument_Associations => New_List (
Make_Pragma_Argument_Association (Loc,
Chars => Name_Check,
diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb
index a3837951962..32d49cc6932 100644
--- a/gcc/ada/sem_ch8.adb
+++ b/gcc/ada/sem_ch8.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -2804,18 +2804,31 @@ package body Sem_Ch8 is
end if;
end if;
- if not Is_Actual
- and then (Old_S = New_S
- or else
- (Nkind (Nam) /= N_Expanded_Name
- and then Chars (Old_S) = Chars (New_S))
- or else
- (Nkind (Nam) = N_Expanded_Name
- and then Entity (Prefix (Nam)) = Current_Scope
- and then
- Chars (Selector_Name (Nam)) = Chars (New_S)))
+ if Is_Actual then
+ null;
+
+ -- The following is illegal, because F hides whatever other F may
+ -- be around:
+ -- function F (..) renames F;
+
+ elsif Old_S = New_S
+ or else (Nkind (Nam) /= N_Expanded_Name
+ and then Chars (Old_S) = Chars (New_S))
then
Error_Msg_N ("subprogram cannot rename itself", N);
+
+ elsif Nkind (Nam) = N_Expanded_Name
+ and then Entity (Prefix (Nam)) = Current_Scope
+ and then Chars (Selector_Name (Nam)) = Chars (New_S)
+ then
+ if Overriding_Renamings then
+ null;
+
+ else
+ Error_Msg_NE
+ ("implicit operation& is not visible (RM 8.3 (15))",
+ Nam, Old_S);
+ end if;
end if;
Set_Convention (New_S, Convention (Old_S));
diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index 5a935a55c33..32b5130f797 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -618,9 +618,9 @@ package body Sem_Prag is
-- Common processing for first argument of pragma Interrupt_Handler or
-- pragma Attach_Handler.
- procedure Check_Loop_Invariant_Variant_Placement;
- -- Verify whether pragma Loop_Invariant or pragma Loop_Variant appear
- -- immediately within a construct restricted to loops.
+ procedure Check_Loop_Pragma_Placement;
+ -- Verify whether pragma Loop_Invariant or Loop_Optimize or Loop_Variant
+ -- appear immediately within a construct restricted to loops.
procedure Check_Is_In_Decl_Part_Or_Package_Spec;
-- Check that pragma appears in a declarative part, or in a package
@@ -886,10 +886,15 @@ package body Sem_Prag is
-- to declare types that match predefined C types, especially for cases
-- without corresponding Ada predefined type.
- procedure Process_Inline (Active : Boolean);
- -- Common processing for Inline and Inline_Always. The parameter
- -- indicates if the inline pragma is active, i.e. if it should actually
- -- cause inlining to occur.
+ type Inline_Status is (Suppressed, Disabled, Enabled);
+ -- Inline status of a subprogram, indicated as follows:
+ -- Suppressed: inlining is suppressed for the subprogram
+ -- Disabled: no inlining is requested for the subprogram
+ -- Enabled: inlining is requested/required for the subprogram
+
+ procedure Process_Inline (Status : Inline_Status);
+ -- Common processing for Inline, Inline_Always and No_Inline. Parameter
+ -- indicates the inline status specified by the pragma.
procedure Process_Interface_Name
(Subprogram_Def : Entity_Id;
@@ -947,6 +952,10 @@ package body Sem_Prag is
-- argument has the right form then the Mechanism field of Ent is
-- set appropriately.
+ procedure Set_Rational_Profile;
+ -- Activate the set of configuration pragmas and permissions that make
+ -- up the Rational profile.
+
procedure Set_Ravenscar_Profile (N : Node_Id);
-- Activate the set of configuration pragmas and restrictions that make
-- up the Ravenscar Profile. N is the corresponding pragma node, which
@@ -1918,12 +1927,13 @@ package body Sem_Prag is
end if;
end Check_Interrupt_Or_Attach_Handler;
- --------------------------------------------
- -- Check_Loop_Invariant_Variant_Placement --
- --------------------------------------------
+ ---------------------------------
+ -- Check_Loop_Pragma_Placement --
+ ---------------------------------
- procedure Check_Loop_Invariant_Variant_Placement is
+ procedure Check_Loop_Pragma_Placement is
procedure Placement_Error (Constr : Node_Id);
+ pragma No_Return (Placement_Error);
-- Node Constr denotes the last loop restricted construct before we
-- encountered an illegal relation between enclosing constructs. Emit
-- an error depending on what Constr was.
@@ -1950,7 +1960,7 @@ package body Sem_Prag is
Prev : Node_Id;
Stmt : Node_Id;
- -- Start of processing for Check_Loop_Invariant_Variant_Placement
+ -- Start of processing for Check_Loop_Pragma_Placement
begin
Prev := N;
@@ -2006,7 +2016,7 @@ package body Sem_Prag is
return;
end if;
end loop;
- end Check_Loop_Invariant_Variant_Placement;
+ end Check_Loop_Pragma_Placement;
-------------------------------------------
-- Check_Is_In_Decl_Part_Or_Package_Spec --
@@ -4907,7 +4917,7 @@ package body Sem_Prag is
-- Process_Inline --
--------------------
- procedure Process_Inline (Active : Boolean) is
+ procedure Process_Inline (Status : Inline_Status) is
Assoc : Node_Id;
Decl : Node_Id;
Subp_Id : Node_Id;
@@ -5012,7 +5022,9 @@ package body Sem_Prag is
-- If inlining is not possible, for now do not treat as an error
- elsif Inlining_Not_Possible (Subp) then
+ elsif Status /= Suppressed
+ and then Inlining_Not_Possible (Subp)
+ then
Applies := True;
return;
@@ -5140,18 +5152,56 @@ package body Sem_Prag is
procedure Set_Inline_Flags (Subp : Entity_Id) is
begin
- if Active then
- Set_Is_Inlined (Subp);
- end if;
+ -- First set the Has_Pragma_XXX flags and issue the appropriate
+ -- errors and warnings for suspicious combinations.
- if not Has_Pragma_Inline (Subp) then
- Set_Has_Pragma_Inline (Subp);
- Effective := True;
- end if;
+ if Prag_Id = Pragma_No_Inline then
+ if Has_Pragma_Inline_Always (Subp) then
+ Error_Msg_N
+ ("Inline_Always and No_Inline are mutually exclusive", N);
+ elsif Has_Pragma_Inline (Subp) then
+ Error_Msg_NE
+ ("Inline and No_Inline both specified for& ??",
+ N, Entity (Subp_Id));
+ end if;
+
+ Set_Has_Pragma_No_Inline (Subp);
+ else
+ if Prag_Id = Pragma_Inline_Always then
+ if Has_Pragma_No_Inline (Subp) then
+ Error_Msg_N
+ ("Inline_Always and No_Inline are mutually exclusive",
+ N);
+ end if;
+
+ Set_Has_Pragma_Inline_Always (Subp);
+ else
+ if Has_Pragma_No_Inline (Subp) then
+ Error_Msg_NE
+ ("Inline and No_Inline both specified for& ??",
+ N, Entity (Subp_Id));
+ end if;
+ end if;
- if Prag_Id = Pragma_Inline_Always then
- Set_Has_Pragma_Inline_Always (Subp);
+ if not Has_Pragma_Inline (Subp) then
+ Set_Has_Pragma_Inline (Subp);
+ Effective := True;
+ end if;
end if;
+
+ -- Then adjust the Is_Inlined flag. It can never be set if the
+ -- subprogram is subject to pragma No_Inline.
+
+ case Status is
+ when Suppressed =>
+ Set_Is_Inlined (Subp, False);
+ when Disabled =>
+ null;
+ when Enabled =>
+ if not Has_Pragma_No_Inline (Subp) then
+ Set_Is_Inlined (Subp, True);
+ end if;
+ end case;
end Set_Inline_Flags;
-- Start of processing for Process_Inline
@@ -5160,7 +5210,7 @@ package body Sem_Prag is
Check_No_Identifiers;
Check_At_Least_N_Arguments (1);
- if Active then
+ if Status = Enabled then
Inline_Processing_Required := True;
end if;
@@ -5206,7 +5256,7 @@ package body Sem_Prag is
elsif not Effective
and then Warn_On_Redundant_Constructs
- and then not Suppress_All_Inlining
+ and then not (Status = Suppressed or Suppress_All_Inlining)
then
if Inlining_Not_Possible (Subp) then
Error_Msg_NE
@@ -6049,6 +6099,7 @@ package body Sem_Prag is
S2 : constant String_Id := Strval (New_Name);
procedure Mismatch;
+ pragma No_Return (Mismatch);
-- Called if names do not match
--------------
@@ -6154,9 +6205,11 @@ package body Sem_Prag is
Mech_Name_Id : Name_Id;
procedure Bad_Class;
+ pragma No_Return (Bad_Class);
-- Signal bad descriptor class name
procedure Bad_Mechanism;
+ pragma No_Return (Bad_Mechanism);
-- Signal bad mechanism name
---------------
@@ -6358,6 +6411,20 @@ package body Sem_Prag is
end if;
end Set_Mechanism_Value;
+ --------------------------
+ -- Set_Rational_Profile --
+ --------------------------
+
+ -- The Rational profile includes Implicit_Packing, Use_Vads_Size, and
+ -- and extension to the semantics of renaming declarations.
+
+ procedure Set_Rational_Profile is
+ begin
+ Implicit_Packing := True;
+ Overriding_Renamings := True;
+ Use_VADS_Size := True;
+ end Set_Rational_Profile;
+
---------------------------
-- Set_Ravenscar_Profile --
---------------------------
@@ -7289,8 +7356,7 @@ package body Sem_Prag is
Rewrite (N,
Make_Pragma (Loc,
- Chars => Name_Check_Policy,
-
+ Chars => Name_Check_Policy,
Pragma_Argument_Associations => New_List (
Make_Pragma_Argument_Association (Loc,
Expression => Make_Identifier (Loc, Name_Assertion)),
@@ -8436,11 +8502,10 @@ package body Sem_Prag is
Rewrite (N,
Make_Pragma (Loc,
Chars => Name_Import,
- Pragma_Argument_Associations =>
- New_List (
- Make_Pragma_Argument_Association (Loc,
- Expression => Make_Identifier (Loc, Name_CPP)),
- New_Copy (First (Pragma_Argument_Associations (N))))));
+ Pragma_Argument_Associations => New_List (
+ Make_Pragma_Argument_Association (Loc,
+ Expression => Make_Identifier (Loc, Name_CPP)),
+ New_Copy (First (Pragma_Argument_Associations (N))))));
Analyze (N);
end CPP_Class;
@@ -11041,9 +11106,13 @@ package body Sem_Prag is
when Pragma_Inline =>
- -- Pragma is active if inlining option is active
+ -- Inline status is Enabled if inlining option is active
- Process_Inline (Inline_Active);
+ if Inline_Active then
+ Process_Inline (Enabled);
+ else
+ Process_Inline (Disabled);
+ end if;
-------------------
-- Inline_Always --
@@ -11058,7 +11127,7 @@ package body Sem_Prag is
-- this causes walk order issues.
if not (CodePeer_Mode or Alfa_Mode) then
- Process_Inline (True);
+ Process_Inline (Enabled);
end if;
--------------------
@@ -12321,7 +12390,7 @@ package body Sem_Prag is
GNAT_Pragma;
S14_Pragma;
Check_Arg_Count (1);
- Check_Loop_Invariant_Variant_Placement;
+ Check_Loop_Pragma_Placement;
-- Completely ignore if disabled
@@ -12350,6 +12419,30 @@ package body Sem_Prag is
Analyze (N);
end Loop_Invariant;
+ -------------------
+ -- Loop_Optimize --
+ -------------------
+
+ -- pragma Loop_Optimize ( OPTIMIZATION_HINT {, OPTIMIZATION_HINT } );
+
+ -- OPTIMIZATION_HINT ::= No_Unroll | Unroll | No_Vector | Vector
+
+ when Pragma_Loop_Optimize => Loop_Optimize : declare
+ Hint : Node_Id;
+
+ begin
+ GNAT_Pragma;
+ Check_At_Least_N_Arguments (1);
+ Check_No_Identifiers;
+ Hint := First (Pragma_Argument_Associations (N));
+ while Present (Hint) loop
+ Check_Arg_Is_One_Of (Hint,
+ Name_No_Unroll, Name_Unroll, Name_No_Vector, Name_Vector);
+ Next (Hint);
+ end loop;
+ Check_Loop_Pragma_Placement;
+ end Loop_Optimize;
+
------------------
-- Loop_Variant --
------------------
@@ -12368,7 +12461,7 @@ package body Sem_Prag is
GNAT_Pragma;
S14_Pragma;
Check_At_Least_N_Arguments (1);
- Check_Loop_Invariant_Variant_Placement;
+ Check_Loop_Pragma_Placement;
-- Completely ignore if disabled
@@ -12570,6 +12663,16 @@ package body Sem_Prag is
Pragma_Misplaced;
---------------
+ -- No_Inline --
+ ---------------
+
+ -- pragma No_Inline ( NAME {, NAME} );
+
+ when Pragma_No_Inline =>
+ GNAT_Pragma;
+ Process_Inline (Suppressed);
+
+ ---------------
-- No_Return --
---------------
@@ -13061,6 +13164,9 @@ package body Sem_Prag is
end if;
end Overflow_Mode;
+ when Pragma_Overriding_Renamings =>
+ Overriding_Renamings := True;
+
-------------
-- Ordered --
-------------
@@ -13485,7 +13591,7 @@ package body Sem_Prag is
if In_Body then
Rewrite (N,
Make_Pragma (Loc,
- Chars => Name_Check,
+ Chars => Name_Check,
Pragma_Argument_Associations => New_List (
Make_Pragma_Argument_Association (Loc,
Expression => Make_Identifier (Loc, Name_Precondition)),
@@ -13861,7 +13967,7 @@ package body Sem_Prag is
-- pragma Profile (profile_IDENTIFIER);
- -- profile_IDENTIFIER => Restricted | Ravenscar
+ -- profile_IDENTIFIER => Restricted | Ravenscar | Rational
when Pragma_Profile =>
Ada_2005_Pragma;
@@ -13881,6 +13987,9 @@ package body Sem_Prag is
(Restricted,
N, Warn => Treat_Restrictions_As_Warnings);
+ elsif Chars (Argx) = Name_Rational then
+ Set_Rational_Profile;
+
elsif Chars (Argx) = Name_No_Implementation_Extensions then
Set_Profile_Restrictions
(No_Implementation_Extensions,
@@ -14277,6 +14386,15 @@ package body Sem_Prag is
end if;
end;
+ --------------
+ -- Rational --
+ --------------
+
+ -- pragma Rational, for compatibility with foreign compiler
+
+ when Pragma_Rational =>
+ Set_Rational_Profile;
+
-----------------------
-- Relative_Deadline --
-----------------------
@@ -16017,9 +16135,21 @@ package body Sem_Prag is
if OK then
Chr := Get_Character (C);
+ -- Dash case: only -Wxxx is accepted
+
+ if J = 1
+ and then J < Len
+ and then Chr = '-'
+ then
+ J := J + 1;
+ C := Get_String_Char (Str, J);
+ Chr := Get_Character (C);
+ exit when Chr = 'W';
+ OK := False;
+
-- Dot case
- if J < Len and then Chr = '.' then
+ elsif J < Len and then Chr = '.' then
J := J + 1;
C := Get_String_Char (Str, J);
Chr := Get_Character (C);
@@ -16551,6 +16681,7 @@ package body Sem_Prag is
Pragma_Locking_Policy => -1,
Pragma_Long_Float => -1,
Pragma_Loop_Invariant => -1,
+ Pragma_Loop_Optimize => -1,
Pragma_Loop_Variant => -1,
Pragma_Machine_Attribute => -1,
Pragma_Main => -1,
@@ -16558,6 +16689,7 @@ package body Sem_Prag is
Pragma_Memory_Size => -1,
Pragma_No_Return => 0,
Pragma_No_Body => 0,
+ Pragma_No_Inline => 0,
Pragma_No_Run_Time => -1,
Pragma_No_Strict_Aliasing => -1,
Pragma_Normalize_Scalars => -1,
@@ -16565,6 +16697,7 @@ package body Sem_Prag is
Pragma_Optimize => -1,
Pragma_Optimize_Alignment => -1,
Pragma_Overflow_Mode => 0,
+ Pragma_Overriding_Renamings => 0,
Pragma_Ordered => 0,
Pragma_Pack => 0,
Pragma_Page => -1,
@@ -16589,6 +16722,7 @@ package body Sem_Prag is
Pragma_Pure_12 => -1,
Pragma_Pure_Function => -1,
Pragma_Queuing_Policy => -1,
+ Pragma_Rational => -1,
Pragma_Ravenscar => -1,
Pragma_Relative_Deadline => -1,
Pragma_Remote_Access_Type => -1,
diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb
index 9a4084b05f1..4fcbee93a2c 100644
--- a/gcc/ada/sem_res.adb
+++ b/gcc/ada/sem_res.adb
@@ -3409,7 +3409,47 @@ package body Sem_Res is
Generate_Reference (Orig_A, A, 'm');
elsif not Is_Overloaded (A) then
- Generate_Reference (Orig_A, A);
+ if Ekind (F) /= E_Out_Parameter then
+ Generate_Reference (Orig_A, A);
+
+ -- RM 6.4.1(12): For an out parameter that is passed by
+ -- copy, the formal parameter object is created, and:
+
+ -- * For an access type, the formal parameter is initialized
+ -- from the value of the actual, without checking that the
+ -- value satisfies any constraint, any predicate, or any
+ -- exclusion of the null value.
+
+ -- * For a scalar type that has the Default_Value aspect
+ -- specified, the formal parameter is initialized from the
+ -- value of the actual, without checking that the value
+ -- satisfies any constraint or any predicate.
+ -- I do not understand why this case is included??? this is
+ -- not a case where an OUT parameter is treated as IN OUT.
+
+ -- * For a composite type with discriminants or that has
+ -- implicit initial values for any subcomponents, the
+ -- behavior is as for an in out parameter passed by copy.
+
+ -- Hence for these cases we generate the read reference now
+ -- (the write reference will be generated later by
+ -- Note_Possible_Modification).
+
+ elsif Is_By_Copy_Type (Etype (F))
+ and then
+ (Is_Access_Type (Etype (F))
+ or else
+ (Is_Scalar_Type (Etype (F))
+ and then
+ Present (Default_Aspect_Value (Etype (F))))
+ or else
+ (Is_Composite_Type (Etype (F))
+ and then (Has_Discriminants (Etype (F))
+ or else Is_Partially_Initialized_Type
+ (Etype (F)))))
+ then
+ Generate_Reference (Orig_A, A);
+ end if;
end if;
end if;
end if;
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
index 336ce67c49a..ae6fe607c88 100644
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -1746,6 +1746,7 @@ package body Sem_Util is
if not Analyzed (Expression (Assoc)) then
Comp_Expr :=
New_Copy_Tree (Expression (Assoc));
+ Set_Parent (Comp_Expr, Parent (N));
Preanalyze_Without_Errors (Comp_Expr);
else
Comp_Expr := Expression (Assoc);
@@ -2577,6 +2578,7 @@ package body Sem_Util is
Op_List : Elist_Id;
Formal : Entity_Id;
Is_Prim : Boolean;
+ Is_Type_In_Pkg : Boolean;
Formal_Derived : Boolean := False;
Id : Entity_Id;
@@ -2636,12 +2638,9 @@ package body Sem_Util is
null;
end if;
- elsif (Is_Package_Or_Generic_Package (B_Scope)
- and then
- Nkind (Parent (Declaration_Node (First_Subtype (T)))) /=
- N_Package_Body)
- or else Is_Derived_Type (B_Type)
- then
+ -- Locate the primitive subprograms of the type
+
+ else
-- The primitive operations appear after the base type, except
-- if the derivation happens within the private part of B_Scope
-- and the type is a private type, in which case both the type
@@ -2657,13 +2656,30 @@ package body Sem_Util is
Id := Next_Entity (B_Type);
end if;
+ -- Set flag if this is a type in a package spec
+
+ Is_Type_In_Pkg :=
+ Is_Package_Or_Generic_Package (B_Scope)
+ and then
+ Nkind (Parent (Declaration_Node (First_Subtype (T)))) /=
+ N_Package_Body;
+
while Present (Id) loop
- -- Note that generic formal subprograms are not
- -- considered to be primitive operations and thus
- -- are never inherited.
+ -- Test whether the result type or any of the parameter types of
+ -- each subprogram following the type match that type when the
+ -- type is declared in a package spec, is a derived type, or the
+ -- subprogram is marked as primitive. (The Is_Primitive test is
+ -- needed to find primitives of nonderived types in declarative
+ -- parts that happen to override the predefined "=" operator.)
+
+ -- Note that generic formal subprograms are not considered to be
+ -- primitive operations and thus are never inherited.
if Is_Overloadable (Id)
+ and then (Is_Type_In_Pkg
+ or else Is_Derived_Type (B_Type)
+ or else Is_Primitive (Id))
and then Nkind (Parent (Parent (Id)))
not in N_Formal_Subprogram_Declaration
then
@@ -2684,9 +2700,9 @@ package body Sem_Util is
end loop;
end if;
- -- For a formal derived type, the only primitives are the
- -- ones inherited from the parent type. Operations appearing
- -- in the package declaration are not primitive for it.
+ -- For a formal derived type, the only primitives are the ones
+ -- inherited from the parent type. Operations appearing in the
+ -- package declaration are not primitive for it.
if Is_Prim
and then (not Formal_Derived
@@ -11981,9 +11997,6 @@ package body Sem_Util is
-- Object_Access_Level --
-------------------------
- function Object_Access_Level (Obj : Node_Id) return Uint is
- E : Entity_Id;
-
-- Returns the static accessibility level of the view denoted by Obj. Note
-- that the value returned is the result of a call to Scope_Depth. Only
-- scope depths associated with dynamic scopes can actually be returned.
@@ -11992,6 +12005,12 @@ package body Sem_Util is
-- always one is immaterial (invariant: if level(E2) is deeper than
-- level(E1), then Scope_Depth(E1) < Scope_Depth(E2)).
+ function Object_Access_Level (Obj : Node_Id) return Uint is
+ function Is_Interface_Conversion (N : Node_Id) return Boolean;
+ -- Determine whether N is a construct of the form
+ -- Some_Type (Operand._tag'Address)
+ -- This construct appears in the context of dispatching calls
+
function Reference_To (Obj : Node_Id) return Node_Id;
-- An explicit dereference is created when removing side-effects from
-- expressions for constraint checking purposes. In this case a local
@@ -12000,6 +12019,18 @@ package body Sem_Util is
-- prefix of the dereference is created by an object declaration whose
-- initial expression is a reference.
+ -----------------------------
+ -- Is_Interface_Conversion --
+ -----------------------------
+
+ function Is_Interface_Conversion (N : Node_Id) return Boolean is
+ begin
+ return
+ Nkind (N) = N_Unchecked_Type_Conversion
+ and then Nkind (Expression (N)) = N_Attribute_Reference
+ and then Attribute_Name (Expression (N)) = Name_Address;
+ end Is_Interface_Conversion;
+
------------------
-- Reference_To --
------------------
@@ -12018,6 +12049,10 @@ package body Sem_Util is
end if;
end Reference_To;
+ -- Local variables
+
+ E : Entity_Id;
+
-- Start of processing for Object_Access_Level
begin
@@ -12088,7 +12123,17 @@ package body Sem_Util is
then
return Object_Access_Level (Prefix (Obj));
- elsif not (Comes_From_Source (Obj)) then
+ -- Detect an interface conversion in the context of a dispatching
+ -- call. Use the original form of the conversion to find the access
+ -- level of the operand.
+
+ elsif Is_Interface (Etype (Obj))
+ and then Is_Interface_Conversion (Prefix (Obj))
+ and then Nkind (Original_Node (Obj)) = N_Type_Conversion
+ then
+ return Object_Access_Level (Original_Node (Obj));
+
+ elsif not Comes_From_Source (Obj) then
declare
Ref : constant Node_Id := Reference_To (Obj);
begin
@@ -12103,9 +12148,7 @@ package body Sem_Util is
return Type_Access_Level (Etype (Prefix (Obj)));
end if;
- elsif Nkind (Obj) = N_Type_Conversion
- or else Nkind (Obj) = N_Unchecked_Type_Conversion
- then
+ elsif Nkind_In (Obj, N_Type_Conversion, N_Unchecked_Type_Conversion) then
return Object_Access_Level (Expression (Obj));
elsif Nkind (Obj) = N_Function_Call then
diff --git a/gcc/ada/snames.ads-tmpl b/gcc/ada/snames.ads-tmpl
index e84cce2385e..5e5d1a2743c 100644
--- a/gcc/ada/snames.ads-tmpl
+++ b/gcc/ada/snames.ads-tmpl
@@ -6,7 +6,7 @@
-- --
-- T e m p l a t e --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -408,12 +408,14 @@ package Snames is
Name_Locking_Policy : constant Name_Id := N + $;
Name_Long_Float : constant Name_Id := N + $; -- VMS
Name_Loop_Invariant : constant Name_Id := N + $; -- GNAT
+ Name_Loop_Optimize : constant Name_Id := N + $; -- GNAT
Name_Loop_Variant : constant Name_Id := N + $; -- GNAT
Name_No_Run_Time : constant Name_Id := N + $; -- GNAT
Name_No_Strict_Aliasing : constant Name_Id := N + $; -- GNAT
Name_Normalize_Scalars : constant Name_Id := N + $;
Name_Optimize_Alignment : constant Name_Id := N + $; -- GNAT
Name_Overflow_Mode : constant Name_Id := N + $; -- GNAT
+ Name_Overriding_Renamings : constant Name_Id := N + $; -- GNAT
Name_Partition_Elaboration_Policy : constant Name_Id := N + $; -- Ada 05
Name_Persistent_BSS : constant Name_Id := N + $; -- GNAT
Name_Polling : constant Name_Id := N + $; -- GNAT
@@ -422,6 +424,7 @@ package Snames is
Name_Profile_Warnings : constant Name_Id := N + $; -- GNAT
Name_Propagate_Exceptions : constant Name_Id := N + $; -- GNAT
Name_Queuing_Policy : constant Name_Id := N + $;
+ Name_Rational : constant Name_Id := N + $; -- GNAT
Name_Ravenscar : constant Name_Id := N + $; -- GNAT
Name_Restricted_Run_Time : constant Name_Id := N + $; -- GNAT
Name_Restrictions : constant Name_Id := N + $;
@@ -546,6 +549,7 @@ package Snames is
Name_Main_Storage : constant Name_Id := N + $; -- GNAT
Name_Memory_Size : constant Name_Id := N + $; -- Ada 83
Name_No_Body : constant Name_Id := N + $; -- GNAT
+ Name_No_Inline : constant Name_Id := N + $; -- GNAT
Name_No_Return : constant Name_Id := N + $; -- Ada 05
Name_Obsolescent : constant Name_Id := N + $; -- GNAT
Name_Optimize : constant Name_Id := N + $;
@@ -725,6 +729,8 @@ package Snames is
Name_No_Specification_Of_Aspect : constant Name_Id := N + $;
Name_No_Task_Attributes : constant Name_Id := N + $;
Name_No_Task_Attributes_Package : constant Name_Id := N + $;
+ Name_No_Unroll : constant Name_Id := N + $;
+ Name_No_Vector : constant Name_Id := N + $;
Name_Nominal : constant Name_Id := N + $;
Name_On : constant Name_Id := N + $;
Name_Optional : constant Name_Id := N + $;
@@ -760,10 +766,12 @@ package Snames is
Name_Unit_Name : constant Name_Id := N + $;
Name_Unknown : constant Name_Id := N + $;
Name_Unrestricted : constant Name_Id := N + $;
+ Name_Unroll : constant Name_Id := N + $;
Name_Uppercase : constant Name_Id := N + $;
Name_User : constant Name_Id := N + $;
Name_Variant : constant Name_Id := N + $;
Name_VAX_Float : constant Name_Id := N + $;
+ Name_Vector : constant Name_Id := N + $;
Name_VMS : constant Name_Id := N + $;
Name_Vtable_Ptr : constant Name_Id := N + $;
Name_Working_Storage : constant Name_Id := N + $;
@@ -1703,12 +1711,14 @@ package Snames is
Pragma_Locking_Policy,
Pragma_Long_Float,
Pragma_Loop_Invariant,
+ Pragma_Loop_Optimize,
Pragma_Loop_Variant,
Pragma_No_Run_Time,
Pragma_No_Strict_Aliasing,
Pragma_Normalize_Scalars,
Pragma_Optimize_Alignment,
Pragma_Overflow_Mode,
+ Pragma_Overriding_Renamings,
Pragma_Partition_Elaboration_Policy,
Pragma_Persistent_BSS,
Pragma_Polling,
@@ -1717,6 +1727,7 @@ package Snames is
Pragma_Profile_Warnings,
Pragma_Propagate_Exceptions,
Pragma_Queuing_Policy,
+ Pragma_Rational,
Pragma_Ravenscar,
Pragma_Restricted_Run_Time,
Pragma_Restrictions,
@@ -1809,6 +1820,7 @@ package Snames is
Pragma_Main_Storage,
Pragma_Memory_Size,
Pragma_No_Body,
+ Pragma_No_Inline,
Pragma_No_Return,
Pragma_Obsolescent,
Pragma_Optimize,
diff --git a/gcc/ada/sprint.adb b/gcc/ada/sprint.adb
index 6aa045ff4e2..27173504aed 100644
--- a/gcc/ada/sprint.adb
+++ b/gcc/ada/sprint.adb
@@ -4145,7 +4145,7 @@ package body Sprint is
-- Record subtypes
- when E_Record_Subtype =>
+ when E_Record_Subtype | E_Record_Subtype_With_Private =>
Write_Header (False);
Write_Str ("record");
Indent_Begin;
@@ -4170,7 +4170,7 @@ package body Sprint is
when E_Class_Wide_Type |
E_Class_Wide_Subtype =>
- Write_Header;
+ Write_Header (Ekind (Typ) = E_Class_Wide_Type);
Write_Name_With_Col_Check (Chars (Etype (Typ)));
Write_Str ("'Class");
diff --git a/gcc/ada/targparm.ads b/gcc/ada/targparm.ads
index 5869f0c1013..52a6ee45235 100644
--- a/gcc/ada/targparm.ads
+++ b/gcc/ada/targparm.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1999-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1999-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -436,6 +436,11 @@ package Targparm is
-- the source program may not contain explicit 64-bit shifts. In addition,
-- the code generated for packed arrays will avoid the use of long shifts.
+ Support_Nondefault_SSO_On_Target : Boolean := False;
+ -- If True, the back end supports the non-default Scalar_Storage_Order
+ -- (i.e. allows non-confirming Scalar_Storage_Order attribute definition
+ -- clauses).
+
--------------------
-- Indirect Calls --
--------------------
diff --git a/gcc/ada/ug_words b/gcc/ada/ug_words
index 10f03f5c6f3..77a36ca095f 100644
--- a/gcc/ada/ug_words
+++ b/gcc/ada/ug_words
@@ -74,6 +74,7 @@ gcc -c ^ GNAT COMPILE
-gnateS ^ /SCO_OUTPUT
-gnatet ^ /TARGET_DEPENDENT_INFO
-gnateV ^ /PARAMETER_VALIDITY_CHECK
+-gnateY ^ /IGNORE_STYLE_CHECKS_PRAGMAS
-gnatE ^ /CHECKS=ELABORATION
-gnatf ^ /REPORT_ERRORS=FULL
-gnatF ^ /UPPERCASE_EXTERNALS
diff --git a/gcc/cfgloop.c b/gcc/cfgloop.c
index 9806090f1a9..3619907f727 100644
--- a/gcc/cfgloop.c
+++ b/gcc/cfgloop.c
@@ -359,139 +359,156 @@ init_loops_structure (struct loops *loops, unsigned num_loops)
loops->tree_root = root;
}
+/* Returns whether HEADER is a loop header. */
+
+bool
+bb_loop_header_p (basic_block header)
+{
+ edge_iterator ei;
+ edge e;
+
+ /* If we have an abnormal predecessor, do not consider the
+ loop (not worth the problems). */
+ if (bb_has_abnormal_pred (header))
+ return false;
+
+ /* Look for back edges where a predecessor is dominated
+ by this block. A natural loop has a single entry
+ node (header) that dominates all the nodes in the
+ loop. It also has single back edge to the header
+ from a latch node. */
+ FOR_EACH_EDGE (e, ei, header->preds)
+ {
+ basic_block latch = e->src;
+ if (latch != ENTRY_BLOCK_PTR
+ && dominated_by_p (CDI_DOMINATORS, latch, header))
+ return true;
+ }
+
+ return false;
+}
+
/* Find all the natural loops in the function and save in LOOPS structure and
recalculate loop_father information in basic block structures.
- Return the number of natural loops found. */
+ If LOOPS is non-NULL then the loop structures for already recorded loops
+ will be re-used and their number will not change. We assume that no
+ stale loops exist in LOOPS.
+ When LOOPS is NULL it is allocated and re-built from scratch.
+ Return the built LOOPS structure. */
-int
+struct loops *
flow_loops_find (struct loops *loops)
{
- int b;
- int num_loops;
- edge e;
- sbitmap headers;
- int *dfs_order;
+ bool from_scratch = (loops == NULL);
int *rc_order;
- basic_block header;
- basic_block bb;
+ int b;
+ unsigned i;
+ vec<loop_p> larray;
/* Ensure that the dominators are computed. */
calculate_dominance_info (CDI_DOMINATORS);
- /* Taking care of this degenerate case makes the rest of
- this code simpler. */
- if (n_basic_blocks == NUM_FIXED_BLOCKS)
+ if (!loops)
{
+ loops = ggc_alloc_cleared_loops ();
init_loops_structure (loops, 1);
- return 1;
}
- dfs_order = NULL;
- rc_order = NULL;
+ /* Ensure that loop exits were released. */
+ gcc_assert (loops->exits == NULL);
- /* Count the number of loop headers. This should be the
- same as the number of natural loops. */
- headers = sbitmap_alloc (last_basic_block);
- bitmap_clear (headers);
+ /* Taking care of this degenerate case makes the rest of
+ this code simpler. */
+ if (n_basic_blocks == NUM_FIXED_BLOCKS)
+ return loops;
- num_loops = 0;
- FOR_EACH_BB (header)
- {
- edge_iterator ei;
+ /* The root loop node contains all basic-blocks. */
+ loops->tree_root->num_nodes = n_basic_blocks;
- /* If we have an abnormal predecessor, do not consider the
- loop (not worth the problems). */
- if (bb_has_abnormal_pred (header))
- continue;
+ /* Compute depth first search order of the CFG so that outer
+ natural loops will be found before inner natural loops. */
+ rc_order = XNEWVEC (int, n_basic_blocks);
+ pre_and_rev_post_order_compute (NULL, rc_order, false);
- FOR_EACH_EDGE (e, ei, header->preds)
+ /* Gather all loop headers in reverse completion order and allocate
+ loop structures for loops that are not already present. */
+ larray.create (loops->larray->length());
+ for (b = 0; b < n_basic_blocks - NUM_FIXED_BLOCKS; b++)
+ {
+ basic_block header = BASIC_BLOCK (rc_order[b]);
+ if (bb_loop_header_p (header))
{
- basic_block latch = e->src;
-
- gcc_assert (!(e->flags & EDGE_ABNORMAL));
+ struct loop *loop;
- /* Look for back edges where a predecessor is dominated
- by this block. A natural loop has a single entry
- node (header) that dominates all the nodes in the
- loop. It also has single back edge to the header
- from a latch node. */
- if (latch != ENTRY_BLOCK_PTR
- && dominated_by_p (CDI_DOMINATORS, latch, header))
+ /* The current active loop tree has valid loop-fathers for
+ header blocks. */
+ if (!from_scratch
+ && header->loop_father->header == header)
{
- /* Shared headers should be eliminated by now. */
- bitmap_set_bit (headers, header->index);
- num_loops++;
+ loop = header->loop_father;
+ /* If we found an existing loop remove it from the
+ loop tree. It is going to be inserted again
+ below. */
+ flow_loop_tree_node_remove (loop);
}
+ else
+ {
+ /* Otherwise allocate a new loop structure for the loop. */
+ loop = alloc_loop ();
+ /* ??? We could re-use unused loop slots here. */
+ loop->num = loops->larray->length ();
+ vec_safe_push (loops->larray, loop);
+ loop->header = header;
+
+ if (!from_scratch
+ && dump_file && (dump_flags & TDF_DETAILS))
+ fprintf (dump_file, "flow_loops_find: discovered new "
+ "loop %d with header %d\n",
+ loop->num, header->index);
+ }
+ larray.safe_push (loop);
}
+
+ /* Make blocks part of the loop root node at start. */
+ header->loop_father = loops->tree_root;
}
- /* Allocate loop structures. */
- init_loops_structure (loops, num_loops + 1);
+ free (rc_order);
- /* Find and record information about all the natural loops
- in the CFG. */
- FOR_EACH_BB (bb)
- bb->loop_father = loops->tree_root;
-
- if (num_loops)
+ /* Now iterate over the loops found, insert them into the loop tree
+ and assign basic-block ownership. */
+ for (i = 0; i < larray.length (); ++i)
{
- /* Compute depth first search order of the CFG so that outer
- natural loops will be found before inner natural loops. */
- dfs_order = XNEWVEC (int, n_basic_blocks);
- rc_order = XNEWVEC (int, n_basic_blocks);
- pre_and_rev_post_order_compute (dfs_order, rc_order, false);
+ struct loop *loop = larray[i];
+ basic_block header = loop->header;
+ edge_iterator ei;
+ edge e;
- num_loops = 1;
+ flow_loop_tree_node_add (header->loop_father, loop);
+ loop->num_nodes = flow_loop_nodes_find (loop->header, loop);
- for (b = 0; b < n_basic_blocks - NUM_FIXED_BLOCKS; b++)
+ /* Look for the latch for this header block, if it has just a
+ single one. */
+ FOR_EACH_EDGE (e, ei, header->preds)
{
- struct loop *loop;
- edge_iterator ei;
-
- /* Search the nodes of the CFG in reverse completion order
- so that we can find outer loops first. */
- if (!bitmap_bit_p (headers, rc_order[b]))
- continue;
-
- header = BASIC_BLOCK (rc_order[b]);
-
- loop = alloc_loop ();
- loops->larray->quick_push (loop);
-
- loop->header = header;
- loop->num = num_loops;
- num_loops++;
-
- flow_loop_tree_node_add (header->loop_father, loop);
- loop->num_nodes = flow_loop_nodes_find (loop->header, loop);
+ basic_block latch = e->src;
- /* Look for the latch for this header block, if it has just a
- single one. */
- FOR_EACH_EDGE (e, ei, header->preds)
+ if (flow_bb_inside_loop_p (loop, latch))
{
- basic_block latch = e->src;
-
- if (flow_bb_inside_loop_p (loop, latch))
+ if (loop->latch != NULL)
{
- if (loop->latch != NULL)
- {
- /* More than one latch edge. */
- loop->latch = NULL;
- break;
- }
- loop->latch = latch;
+ /* More than one latch edge. */
+ loop->latch = NULL;
+ break;
}
+ loop->latch = latch;
}
}
-
- free (dfs_order);
- free (rc_order);
}
- sbitmap_free (headers);
+ larray.release();
- loops->exits = NULL;
- return loops->larray->length ();
+ return loops;
}
/* Ratio of frequencies of edges so that one of more latch edges is
@@ -1300,7 +1317,7 @@ verify_loop_structure (void)
{
unsigned *sizes, i, j;
sbitmap irreds;
- basic_block *bbs, bb;
+ basic_block bb;
struct loop *loop;
int err = 0;
edge e;
@@ -1308,7 +1325,7 @@ verify_loop_structure (void)
loop_iterator li;
struct loop_exit *exit, *mexit;
bool dom_available = dom_info_available_p (CDI_DOMINATORS);
- sbitmap visited = sbitmap_alloc (last_basic_block);
+ sbitmap visited;
/* We need up-to-date dominators, compute or verify them. */
if (!dom_available)
@@ -1336,29 +1353,33 @@ verify_loop_structure (void)
}
}
- /* Check get_loop_body. */
- FOR_EACH_LOOP (li, loop, 0)
- {
- bbs = get_loop_body (loop);
+ /* Check the headers. */
+ FOR_EACH_BB (bb)
+ if (bb_loop_header_p (bb)
+ && bb->loop_father->header != bb)
+ {
+ error ("loop with header %d not in loop tree", bb->index);
+ err = 1;
+ }
- for (j = 0; j < loop->num_nodes; j++)
- if (!flow_bb_inside_loop_p (loop, bbs[j]))
- {
- error ("bb %d does not belong to loop %d",
- bbs[j]->index, loop->num);
- err = 1;
- }
- free (bbs);
- }
+ /* Check get_loop_body. */
+ visited = sbitmap_alloc (last_basic_block);
bitmap_clear (visited);
FOR_EACH_LOOP (li, loop, LI_FROM_INNERMOST)
{
- bbs = get_loop_body (loop);
+ basic_block *bbs = get_loop_body (loop);
for (j = 0; j < loop->num_nodes; j++)
{
bb = bbs[j];
+ if (!flow_bb_inside_loop_p (loop, bb))
+ {
+ error ("bb %d does not belong to loop %d",
+ bb->index, loop->num);
+ err = 1;
+ }
+
/* Ignore this block if it is in an inner loop. */
if (bitmap_bit_p (visited, bb->index))
continue;
@@ -1371,14 +1392,21 @@ verify_loop_structure (void)
err = 1;
}
}
+
free (bbs);
}
+ sbitmap_free (visited);
/* Check headers and latches. */
FOR_EACH_LOOP (li, loop, 0)
{
i = loop->num;
+ if (!bb_loop_header_p (loop->header))
+ {
+ error ("loop %d%'s header is not a loop header", i);
+ err = 1;
+ }
if (loops_state_satisfies_p (LOOPS_HAVE_PREHEADERS)
&& EDGE_COUNT (loop->header->preds) != 2)
{
@@ -1542,7 +1570,12 @@ verify_loop_structure (void)
eloops++;
for (loop = bb->loop_father;
- loop != e->dest->loop_father;
+ loop != e->dest->loop_father
+ /* When a loop exit is also an entry edge which
+ can happen when avoiding CFG manipulations
+ then the last loop exited is the outer loop
+ of the loop entered. */
+ && loop != loop_outer (e->dest->loop_father);
loop = loop_outer (loop))
{
eloops--;
@@ -1580,7 +1613,6 @@ verify_loop_structure (void)
gcc_assert (!err);
- sbitmap_free (visited);
free (sizes);
if (!dom_available)
free_dominance_info (CDI_DOMINATORS);
diff --git a/gcc/cfgloop.h b/gcc/cfgloop.h
index 071c8c1dd06..7506ac5758b 100644
--- a/gcc/cfgloop.h
+++ b/gcc/cfgloop.h
@@ -205,7 +205,8 @@ struct GTY (()) loops {
};
/* Loop recognition. */
-extern int flow_loops_find (struct loops *);
+bool bb_loop_header_p (basic_block);
+extern struct loops *flow_loops_find (struct loops *);
extern void disambiguate_loops_with_multiple_latches (void);
extern void flow_loops_free (struct loops *);
extern void flow_loops_dump (FILE *,
diff --git a/gcc/cfgloopmanip.c b/gcc/cfgloopmanip.c
index c72cedaf74e..3e53aa0dddf 100644
--- a/gcc/cfgloopmanip.c
+++ b/gcc/cfgloopmanip.c
@@ -1760,159 +1760,3 @@ loop_version (struct loop *loop,
return nloop;
}
-
-/* The structure of loops might have changed. Some loops might get removed
- (and their headers and latches were set to NULL), loop exists might get
- removed (thus the loop nesting may be wrong), and some blocks and edges
- were changed (so the information about bb --> loop mapping does not have
- to be correct). But still for the remaining loops the header dominates
- the latch, and loops did not get new subloops (new loops might possibly
- get created, but we are not interested in them). Fix up the mess.
-
- If CHANGED_BBS is not NULL, basic blocks whose loop has changed are
- marked in it. */
-
-void
-fix_loop_structure (bitmap changed_bbs)
-{
- basic_block bb;
- struct loop *loop, *ploop;
- loop_iterator li;
- bool record_exits = false;
- struct loop **superloop = XNEWVEC (struct loop *, number_of_loops ());
-
- /* We need exact and fast dominance info to be available. */
- gcc_assert (dom_info_state (CDI_DOMINATORS) == DOM_OK);
-
- /* Remove the old bb -> loop mapping. Remember the depth of the blocks in
- the loop hierarchy, so that we can recognize blocks whose loop nesting
- relationship has changed. */
- FOR_EACH_BB (bb)
- {
- if (changed_bbs)
- bb->aux = (void *) (size_t) loop_depth (bb->loop_father);
- bb->loop_father = current_loops->tree_root;
- }
-
- if (loops_state_satisfies_p (LOOPS_HAVE_RECORDED_EXITS))
- {
- release_recorded_exits ();
- record_exits = true;
- }
-
- /* First re-compute loop latches. */
- FOR_EACH_LOOP (li, loop, 0)
- {
- edge_iterator ei;
- edge e, first_latch = NULL, latch = NULL;
-
- if (!loop->header)
- continue;
-
- FOR_EACH_EDGE (e, ei, loop->header->preds)
- if (dominated_by_p (CDI_DOMINATORS, e->src, loop->header))
- {
- if (!first_latch)
- first_latch = latch = e;
- else
- {
- latch = NULL;
- break;
- }
- }
- /* If there was no latch, schedule the loop for removal. */
- if (!first_latch)
- loop->header = NULL;
- /* If there was a single latch, record it. */
- else if (latch)
- loop->latch = latch->src;
- /* Otherwise there are multiple latches which are eventually
- disambiguated below. */
- else
- loop->latch = NULL;
- }
-
- /* Remove the dead loops from structures. We start from the innermost
- loops, so that when we remove the loops, we know that the loops inside
- are preserved, and do not waste time relinking loops that will be
- removed later. */
- FOR_EACH_LOOP (li, loop, LI_FROM_INNERMOST)
- {
- if (loop->header)
- continue;
-
- while (loop->inner)
- {
- ploop = loop->inner;
- flow_loop_tree_node_remove (ploop);
- flow_loop_tree_node_add (loop_outer (loop), ploop);
- }
-
- /* Remove the loop and free its data. */
- delete_loop (loop);
- }
-
- /* Rescan the bodies of loops, starting from the outermost ones. We assume
- that no optimization interchanges the order of the loops, i.e., it cannot
- happen that L1 was superloop of L2 before and it is subloop of L2 now
- (without explicitly updating loop information). At the same time, we also
- determine the new loop structure. */
- current_loops->tree_root->num_nodes = n_basic_blocks;
- FOR_EACH_LOOP (li, loop, 0)
- {
- superloop[loop->num] = loop->header->loop_father;
- loop->num_nodes = flow_loop_nodes_find (loop->header, loop);
- }
-
- /* Now fix the loop nesting. */
- FOR_EACH_LOOP (li, loop, 0)
- {
- ploop = superloop[loop->num];
- if (ploop != loop_outer (loop))
- {
- flow_loop_tree_node_remove (loop);
- flow_loop_tree_node_add (ploop, loop);
- }
- }
- free (superloop);
-
- /* Mark the blocks whose loop has changed. */
- if (changed_bbs)
- {
- FOR_EACH_BB (bb)
- {
- if ((void *) (size_t) loop_depth (bb->loop_father) != bb->aux)
- bitmap_set_bit (changed_bbs, bb->index);
-
- bb->aux = NULL;
- }
- }
-
- if (!loops_state_satisfies_p (LOOPS_MAY_HAVE_MULTIPLE_LATCHES))
- disambiguate_loops_with_multiple_latches ();
-
- if (loops_state_satisfies_p (LOOPS_HAVE_PREHEADERS))
- {
- int cp_flags = CP_SIMPLE_PREHEADERS;
-
- if (loops_state_satisfies_p (LOOPS_HAVE_FALLTHRU_PREHEADERS))
- cp_flags |= CP_FALLTHRU_PREHEADERS;
-
- create_preheaders (cp_flags);
- }
-
- if (loops_state_satisfies_p (LOOPS_HAVE_SIMPLE_LATCHES))
- force_single_succ_latches ();
-
- if (loops_state_satisfies_p (LOOPS_HAVE_MARKED_IRREDUCIBLE_REGIONS))
- mark_irreducible_loops ();
-
- if (record_exits)
- record_loop_exits ();
-
- loops_state_clear (LOOPS_NEED_FIXUP);
-
-#ifdef ENABLE_CHECKING
- verify_loop_structure ();
-#endif
-}
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index ba07f89bd5c..c6ed44f8a7e 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -135,7 +135,7 @@ delete_insn (rtx insn)
if (! can_delete_label_p (insn))
{
const char *name = LABEL_NAME (insn);
- basic_block bb = BLOCK_FOR_INSN (insn);
+ basic_block bb, label_bb = BLOCK_FOR_INSN (insn);
rtx bb_note = NEXT_INSN (insn);
really_delete = false;
@@ -143,10 +143,16 @@ delete_insn (rtx insn)
NOTE_KIND (insn) = NOTE_INSN_DELETED_LABEL;
NOTE_DELETED_LABEL_NAME (insn) = name;
- if (bb_note != NULL_RTX && NOTE_INSN_BASIC_BLOCK_P (bb_note)
- && BLOCK_FOR_INSN (bb_note) == bb)
+ /* If the note following the label starts a basic block, and the
+ label is a member of the same basic block, interchange the two.
+ If the label is not marked with a bb, assume it's the same bb. */
+ if (bb_note != NULL_RTX
+ && NOTE_INSN_BASIC_BLOCK_P (bb_note)
+ && (label_bb == NOTE_BASIC_BLOCK (bb_note)
+ || label_bb == NULL))
{
reorder_insns_nobb (insn, insn, bb_note);
+ bb = NOTE_BASIC_BLOCK (bb_note);
BB_HEAD (bb) = bb_note;
if (BB_END (bb) == bb_note)
BB_END (bb) = insn;
diff --git a/gcc/collect2.c b/gcc/collect2.c
index 0db908f2636..99dd41dc1c5 100644
--- a/gcc/collect2.c
+++ b/gcc/collect2.c
@@ -1022,20 +1022,20 @@ main (int argc, char **argv)
selected_linker = USE_GOLD_LD;
#ifdef COLLECT_EXPORT_LIST
- /* since -brtl, -bexport, -b64 are not position dependent
- also check for them here */
- if ((argv[i][0] == '-') && (argv[i][1] == 'b'))
- {
- arg = argv[i];
- /* We want to disable automatic exports on AIX when user
- explicitly puts an export list in command line */
- if (arg[2] == 'E' || strncmp (&arg[2], "export", 6) == 0)
- export_flag = 1;
- else if (arg[2] == '6' && arg[3] == '4')
- aix64_flag = 1;
- else if (arg[2] == 'r' && arg[3] == 't' && arg[4] == 'l')
- aixrtl_flag = 1;
- }
+ /* These flags are position independent, although their order
+ is important - subsequent flags override earlier ones. */
+ else if (strcmp (argv[i], "-b64") == 0)
+ aix64_flag = 1;
+ /* -bexport:filename always needs the :filename */
+ else if (strncmp (argv[i], "-bE:", 4) == 0
+ || strncmp (argv[i], "-bexport:", 9) == 0)
+ export_flag = 1;
+ else if (strcmp (argv[i], "-brtl") == 0
+ || strcmp (argv[i], "-bsvr4") == 0
+ || strcmp (argv[i], "-G") == 0)
+ aixrtl_flag = 1;
+ else if (strcmp (argv[i], "-bnortl") == 0)
+ aixrtl_flag = 0;
#endif
}
vflag = debug;
diff --git a/gcc/config/avr/avr-c.c b/gcc/config/avr/avr-c.c
index ddcab546076..4e64405a351 100644
--- a/gcc/config/avr/avr-c.c
+++ b/gcc/config/avr/avr-c.c
@@ -26,10 +26,226 @@
#include "tm_p.h"
#include "cpplib.h"
#include "tree.h"
+#include "target.h"
#include "c-family/c-common.h"
#include "langhooks.h"
+/* IDs for all the AVR builtins. */
+
+enum avr_builtin_id
+ {
+#define DEF_BUILTIN(NAME, N_ARGS, TYPE, CODE, LIBNAME) \
+ AVR_BUILTIN_ ## NAME,
+#include "builtins.def"
+#undef DEF_BUILTIN
+
+ AVR_BUILTIN_COUNT
+ };
+
+
+/* Implement `TARGET_RESOLVE_OVERLOADED_PLUGIN'. */
+
+static tree
+avr_resolve_overloaded_builtin (unsigned int iloc, tree fndecl, void *vargs)
+{
+ tree type0, type1, fold = NULL_TREE;
+ enum avr_builtin_id id = AVR_BUILTIN_COUNT;
+ location_t loc = (location_t) iloc;
+ vec<tree, va_gc> &args = * (vec<tree, va_gc>*) vargs;
+
+ switch (DECL_FUNCTION_CODE (fndecl))
+ {
+ default:
+ break;
+
+ case AVR_BUILTIN_ABSFX:
+ if (args.length() != 1)
+ {
+ error_at (loc, "%qs expects 1 argument but %d given",
+ "absfx", (int) args.length());
+
+ fold = error_mark_node;
+ break;
+ }
+
+ type0 = TREE_TYPE (args[0]);
+
+ if (!FIXED_POINT_TYPE_P (type0))
+ {
+ error_at (loc, "%qs expects a fixed-point value as argument",
+ "absfx");
+
+ fold = error_mark_node;
+ }
+
+ switch (TYPE_MODE (type0))
+ {
+ case QQmode: id = AVR_BUILTIN_ABSHR; break;
+ case HQmode: id = AVR_BUILTIN_ABSR; break;
+ case SQmode: id = AVR_BUILTIN_ABSLR; break;
+ case DQmode: id = AVR_BUILTIN_ABSLLR; break;
+
+ case HAmode: id = AVR_BUILTIN_ABSHK; break;
+ case SAmode: id = AVR_BUILTIN_ABSK; break;
+ case DAmode: id = AVR_BUILTIN_ABSLK; break;
+ case TAmode: id = AVR_BUILTIN_ABSLLK; break;
+
+ case UQQmode:
+ case UHQmode:
+ case USQmode:
+ case UDQmode:
+ case UHAmode:
+ case USAmode:
+ case UDAmode:
+ case UTAmode:
+ warning_at (loc, 0, "using %qs with unsigned type has no effect",
+ "absfx");
+ return args[0];
+
+ default:
+ error_at (loc, "no matching fixed-point overload found for %qs",
+ "absfx");
+
+ fold = error_mark_node;
+ break;
+ }
+
+ fold = targetm.builtin_decl (id, true);
+
+ if (fold != error_mark_node)
+ fold = build_function_call_vec (loc, fold, &args, NULL);
+
+ break; // absfx
+
+ case AVR_BUILTIN_ROUNDFX:
+ if (args.length() != 2)
+ {
+ error_at (loc, "%qs expects 2 arguments but %d given",
+ "roundfx", (int) args.length());
+
+ fold = error_mark_node;
+ break;
+ }
+
+ type0 = TREE_TYPE (args[0]);
+ type1 = TREE_TYPE (args[1]);
+
+ if (!FIXED_POINT_TYPE_P (type0))
+ {
+ error_at (loc, "%qs expects a fixed-point value as first argument",
+ "roundfx");
+
+ fold = error_mark_node;
+ }
+
+ if (!INTEGRAL_TYPE_P (type1))
+ {
+ error_at (loc, "%qs expects an integer value as second argument",
+ "roundfx");
+
+ fold = error_mark_node;
+ }
+
+ switch (TYPE_MODE (type0))
+ {
+ case QQmode: id = AVR_BUILTIN_ROUNDHR; break;
+ case HQmode: id = AVR_BUILTIN_ROUNDR; break;
+ case SQmode: id = AVR_BUILTIN_ROUNDLR; break;
+ case DQmode: id = AVR_BUILTIN_ROUNDLLR; break;
+
+ case UQQmode: id = AVR_BUILTIN_ROUNDUHR; break;
+ case UHQmode: id = AVR_BUILTIN_ROUNDUR; break;
+ case USQmode: id = AVR_BUILTIN_ROUNDULR; break;
+ case UDQmode: id = AVR_BUILTIN_ROUNDULLR; break;
+
+ case HAmode: id = AVR_BUILTIN_ROUNDHK; break;
+ case SAmode: id = AVR_BUILTIN_ROUNDK; break;
+ case DAmode: id = AVR_BUILTIN_ROUNDLK; break;
+ case TAmode: id = AVR_BUILTIN_ROUNDLLK; break;
+
+ case UHAmode: id = AVR_BUILTIN_ROUNDUHK; break;
+ case USAmode: id = AVR_BUILTIN_ROUNDUK; break;
+ case UDAmode: id = AVR_BUILTIN_ROUNDULK; break;
+ case UTAmode: id = AVR_BUILTIN_ROUNDULLK; break;
+
+ default:
+ error_at (loc, "no matching fixed-point overload found for %qs",
+ "roundfx");
+
+ fold = error_mark_node;
+ break;
+ }
+
+ fold = targetm.builtin_decl (id, true);
+
+ if (fold != error_mark_node)
+ fold = build_function_call_vec (loc, fold, &args, NULL);
+
+ break; // roundfx
+
+ case AVR_BUILTIN_COUNTLSFX:
+ if (args.length() != 1)
+ {
+ error_at (loc, "%qs expects 1 argument but %d given",
+ "countlsfx", (int) args.length());
+
+ fold = error_mark_node;
+ break;
+ }
+
+ type0 = TREE_TYPE (args[0]);
+
+ if (!FIXED_POINT_TYPE_P (type0))
+ {
+ error_at (loc, "%qs expects a fixed-point value as first argument",
+ "countlsfx");
+
+ fold = error_mark_node;
+ }
+
+ switch (TYPE_MODE (type0))
+ {
+ case QQmode: id = AVR_BUILTIN_COUNTLSHR; break;
+ case HQmode: id = AVR_BUILTIN_COUNTLSR; break;
+ case SQmode: id = AVR_BUILTIN_COUNTLSLR; break;
+ case DQmode: id = AVR_BUILTIN_COUNTLSLLR; break;
+
+ case UQQmode: id = AVR_BUILTIN_COUNTLSUHR; break;
+ case UHQmode: id = AVR_BUILTIN_COUNTLSUR; break;
+ case USQmode: id = AVR_BUILTIN_COUNTLSULR; break;
+ case UDQmode: id = AVR_BUILTIN_COUNTLSULLR; break;
+
+ case HAmode: id = AVR_BUILTIN_COUNTLSHK; break;
+ case SAmode: id = AVR_BUILTIN_COUNTLSK; break;
+ case DAmode: id = AVR_BUILTIN_COUNTLSLK; break;
+ case TAmode: id = AVR_BUILTIN_COUNTLSLLK; break;
+
+ case UHAmode: id = AVR_BUILTIN_COUNTLSUHK; break;
+ case USAmode: id = AVR_BUILTIN_COUNTLSUK; break;
+ case UDAmode: id = AVR_BUILTIN_COUNTLSULK; break;
+ case UTAmode: id = AVR_BUILTIN_COUNTLSULLK; break;
+
+ default:
+ error_at (loc, "no matching fixed-point overload found for %qs",
+ "countlsfx");
+
+ fold = error_mark_node;
+ break;
+ }
+
+ fold = targetm.builtin_decl (id, true);
+
+ if (fold != error_mark_node)
+ fold = build_function_call_vec (loc, fold, &args, NULL);
+
+ break; // countlsfx
+ }
+
+ return fold;
+}
+
+
/* Implement `REGISTER_TARGET_PRAGMAS'. */
void
@@ -49,6 +265,8 @@ avr_register_target_pragmas (void)
if (!ADDR_SPACE_GENERIC_P (i))
c_register_addr_space (avr_addrspace[i].name, avr_addrspace[i].id);
}
+
+ targetm.resolve_overloaded_builtin = avr_resolve_overloaded_builtin;
}
diff --git a/gcc/config/avr/avr-fixed.md b/gcc/config/avr/avr-fixed.md
index ce7f54d6f0d..7d9b525ef6c 100644
--- a/gcc/config/avr/avr-fixed.md
+++ b/gcc/config/avr/avr-fixed.md
@@ -24,14 +24,16 @@
(define_mode_iterator ALL1Q [QQ UQQ])
(define_mode_iterator ALL2Q [HQ UHQ])
(define_mode_iterator ALL2A [HA UHA])
-(define_mode_iterator ALL2QA [HQ UHQ
- HA UHA])
(define_mode_iterator ALL4A [SA USA])
+(define_mode_iterator ALL2QA [HQ UHQ HA UHA])
+(define_mode_iterator ALL4QA [SQ USQ SA USA])
+(define_mode_iterator ALL124QA [ QQ HQ HA SA SQ
+ UQQ UHQ UHA USA USQ])
(define_mode_iterator ALL2S [HQ HA])
(define_mode_iterator ALL4S [SA SQ])
-(define_mode_iterator ALL24S [ HQ HA SA SQ])
-(define_mode_iterator ALL124S [ QQ HQ HA SA SQ])
+(define_mode_iterator ALL24S [ HQ HA SA SQ])
+(define_mode_iterator ALL124S [ QQ HQ HA SA SQ])
(define_mode_iterator ALL124U [UQQ UHQ UHA USA USQ])
;;; Conversions
@@ -396,3 +398,131 @@
"%~call __<code><mode>3"
[(set_attr "type" "xcall")
(set_attr "cc" "clobber")])
+
+
+;******************************************************************************
+;** Rounding
+;******************************************************************************
+
+;; "roundqq3" "rounduqq3"
+;; "roundhq3" "rounduhq3" "roundha3" "rounduha3"
+;; "roundsq3" "roundusq3" "roundsa3" "roundusa3"
+(define_expand "round<mode>3"
+ [(set (match_dup 4)
+ (match_operand:ALL124QA 1 "register_operand" ""))
+ (set (reg:QI 24)
+ (match_dup 5))
+ (parallel [(set (match_dup 3)
+ (unspec:ALL124QA [(match_dup 4)
+ (reg:QI 24)] UNSPEC_ROUND))
+ (clobber (match_dup 4))])
+ (set (match_operand:ALL124QA 0 "register_operand" "")
+ (match_dup 3))
+ (use (match_operand:HI 2 "nonmemory_operand" ""))]
+ ""
+ {
+ if (CONST_INT_P (operands[2])
+ && !(optimize_size
+ && 4 == GET_MODE_SIZE (<MODE>mode)))
+ {
+ emit_insn (gen_round<mode>3_const (operands[0], operands[1], operands[2]));
+ DONE;
+ }
+
+ // Input and output of the libgcc function
+ const unsigned int regno_in[] = { -1, 22, 22, -1, 18 };
+ const unsigned int regno_out[] = { -1, 24, 24, -1, 22 };
+
+ operands[3] = gen_rtx_REG (<MODE>mode, regno_out[(size_t) GET_MODE_SIZE (<MODE>mode)]);
+ operands[4] = gen_rtx_REG (<MODE>mode, regno_in[(size_t) GET_MODE_SIZE (<MODE>mode)]);
+ operands[5] = simplify_gen_subreg (QImode, force_reg (HImode, operands[2]), HImode, 0);
+ // $2 is no more needed, but is referenced for expand.
+ operands[2] = const0_rtx;
+ })
+
+;; Expand rounding with known rounding points inline so that the addend / mask
+;; will be consumed by operation with immediate operands and there is no
+;; need for a shift with variable offset.
+
+;; "roundqq3_const" "rounduqq3_const"
+;; "roundhq3_const" "rounduhq3_const" "roundha3_const" "rounduha3_const"
+;; "roundsq3_const" "roundusq3_const" "roundsa3_const" "roundusa3_const"
+(define_expand "round<mode>3_const"
+ [(parallel [(match_operand:ALL124QA 0 "register_operand" "")
+ (match_operand:ALL124QA 1 "register_operand" "")
+ (match_operand:HI 2 "const_int_operand" "")])]
+ ""
+ {
+ // The rounding point RP is $2. The smallest fractional
+ // bit that is not cleared by the rounding is 2^(-RP).
+
+ enum machine_mode imode = int_mode_for_mode (<MODE>mode);
+ int fbit = (int) GET_MODE_FBIT (<MODE>mode);
+
+ // Add-Saturate 1/2 * 2^(-RP)
+
+ double_int i_add = double_int_zero.set_bit (fbit-1 - INTVAL (operands[2]));
+ rtx x_add = const_fixed_from_double_int (i_add, <MODE>mode);
+
+ if (SIGNED_FIXED_POINT_MODE_P (<MODE>mode))
+ emit_move_insn (operands[0],
+ gen_rtx_SS_PLUS (<MODE>mode, operands[1], x_add));
+ else
+ emit_move_insn (operands[0],
+ gen_rtx_US_PLUS (<MODE>mode, operands[1], x_add));
+
+ // Keep all bits from RP and higher: ... 2^(-RP)
+ // Clear all bits from RP+1 and lower: 2^(-RP-1) ...
+ // Rounding point ^^^^^^^
+ // Added above ^^^^^^^^^
+
+ rtx xreg = simplify_gen_subreg (imode, operands[0], <MODE>mode, 0);
+ rtx xmask = immed_double_int_const (-i_add - i_add, imode);
+
+ if (SImode == imode)
+ emit_insn (gen_andsi3 (xreg, xreg, xmask));
+ else if (HImode == imode)
+ emit_insn (gen_andhi3 (xreg, xreg, xmask));
+ else if (QImode == imode)
+ emit_insn (gen_andqi3 (xreg, xreg, xmask));
+ else
+ gcc_unreachable();
+
+ DONE;
+ })
+
+
+;; "*roundqq3.libgcc" "*rounduqq3.libgcc"
+(define_insn "*round<mode>3.libgcc"
+ [(set (reg:ALL1Q 24)
+ (unspec:ALL1Q [(reg:ALL1Q 22)
+ (reg:QI 24)] UNSPEC_ROUND))
+ (clobber (reg:ALL1Q 22))]
+ ""
+ "%~call __round<mode>3"
+ [(set_attr "type" "xcall")
+ (set_attr "cc" "clobber")])
+
+;; "*roundhq3.libgcc" "*rounduhq3.libgcc"
+;; "*roundha3.libgcc" "*rounduha3.libgcc"
+(define_insn "*round<mode>3.libgcc"
+ [(set (reg:ALL2QA 24)
+ (unspec:ALL2QA [(reg:ALL2QA 22)
+ (reg:QI 24)] UNSPEC_ROUND))
+ (clobber (reg:ALL2QA 22))]
+ ""
+ "%~call __round<mode>3"
+ [(set_attr "type" "xcall")
+ (set_attr "cc" "clobber")])
+
+;; "*roundsq3.libgcc" "*roundusq3.libgcc"
+;; "*roundsa3.libgcc" "*roundusa3.libgcc"
+(define_insn "*round<mode>3.libgcc"
+ [(set (reg:ALL4QA 22)
+ (unspec:ALL4QA [(reg:ALL4QA 18)
+ (reg:QI 24)] UNSPEC_ROUND))
+ (clobber (reg:ALL4QA 18))]
+ ""
+ "%~call __round<mode>3"
+ [(set_attr "type" "xcall")
+ (set_attr "cc" "clobber")])
diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c
index c833bfbaa79..0f1d2c1647a 100644
--- a/gcc/config/avr/avr.c
+++ b/gcc/config/avr/avr.c
@@ -11489,32 +11489,118 @@ avr_init_builtins (void)
const_memx_ptr_type_node,
NULL);
- tree hr_ftype_hr
- = build_function_type_list (short_fract_type_node,
- short_fract_type_node, NULL);
- tree r_ftype_r
- = build_function_type_list (fract_type_node,
- fract_type_node, NULL);
- tree lr_ftype_lr
- = build_function_type_list (long_fract_type_node,
- long_fract_type_node, NULL);
- tree llr_ftype_llr
- = build_function_type_list (long_long_fract_type_node,
- long_long_fract_type_node, NULL);
-
- tree hk_ftype_hk
- = build_function_type_list (short_accum_type_node,
- short_accum_type_node, NULL);
- tree k_ftype_k
- = build_function_type_list (accum_type_node,
- accum_type_node, NULL);
- tree lk_ftype_lk
- = build_function_type_list (long_accum_type_node,
- long_accum_type_node, NULL);
- tree llk_ftype_llk
- = build_function_type_list (long_long_accum_type_node,
- long_long_accum_type_node, NULL);
+#define ITYP(T) \
+ lang_hooks.types.type_for_size (TYPE_PRECISION (T), TYPE_UNSIGNED (T))
+#define FX_FTYPE_FX(fx) \
+ tree fx##r_ftype_##fx##r \
+ = build_function_type_list (node_##fx##r, node_##fx##r, NULL); \
+ tree fx##k_ftype_##fx##k \
+ = build_function_type_list (node_##fx##k, node_##fx##k, NULL)
+
+#define FX_FTYPE_FX_INT(fx) \
+ tree fx##r_ftype_##fx##r_int \
+ = build_function_type_list (node_##fx##r, node_##fx##r, \
+ integer_type_node, NULL); \
+ tree fx##k_ftype_##fx##k_int \
+ = build_function_type_list (node_##fx##k, node_##fx##k, \
+ integer_type_node, NULL)
+
+#define INT_FTYPE_FX(fx) \
+ tree int_ftype_##fx##r \
+ = build_function_type_list (integer_type_node, node_##fx##r, NULL); \
+ tree int_ftype_##fx##k \
+ = build_function_type_list (integer_type_node, node_##fx##k, NULL)
+
+#define INTX_FTYPE_FX(fx) \
+ tree int##fx##r_ftype_##fx##r \
+ = build_function_type_list (ITYP (node_##fx##r), node_##fx##r, NULL); \
+ tree int##fx##k_ftype_##fx##k \
+ = build_function_type_list (ITYP (node_##fx##k), node_##fx##k, NULL)
+
+#define FX_FTYPE_INTX(fx) \
+ tree fx##r_ftype_int##fx##r \
+ = build_function_type_list (node_##fx##r, ITYP (node_##fx##r), NULL); \
+ tree fx##k_ftype_int##fx##k \
+ = build_function_type_list (node_##fx##k, ITYP (node_##fx##k), NULL)
+
+ tree node_hr = short_fract_type_node;
+ tree node_r = fract_type_node;
+ tree node_lr = long_fract_type_node;
+ tree node_llr = long_long_fract_type_node;
+
+ tree node_uhr = unsigned_short_fract_type_node;
+ tree node_ur = unsigned_fract_type_node;
+ tree node_ulr = unsigned_long_fract_type_node;
+ tree node_ullr = unsigned_long_long_fract_type_node;
+
+ tree node_hk = short_accum_type_node;
+ tree node_k = accum_type_node;
+ tree node_lk = long_accum_type_node;
+ tree node_llk = long_long_accum_type_node;
+
+ tree node_uhk = unsigned_short_accum_type_node;
+ tree node_uk = unsigned_accum_type_node;
+ tree node_ulk = unsigned_long_accum_type_node;
+ tree node_ullk = unsigned_long_long_accum_type_node;
+
+
+ /* For absfx builtins. */
+
+ FX_FTYPE_FX (h);
+ FX_FTYPE_FX ();
+ FX_FTYPE_FX (l);
+ FX_FTYPE_FX (ll);
+
+ /* For roundfx builtins. */
+
+ FX_FTYPE_FX_INT (h);
+ FX_FTYPE_FX_INT ();
+ FX_FTYPE_FX_INT (l);
+ FX_FTYPE_FX_INT (ll);
+
+ FX_FTYPE_FX_INT (uh);
+ FX_FTYPE_FX_INT (u);
+ FX_FTYPE_FX_INT (ul);
+ FX_FTYPE_FX_INT (ull);
+
+ /* For countlsfx builtins. */
+
+ INT_FTYPE_FX (h);
+ INT_FTYPE_FX ();
+ INT_FTYPE_FX (l);
+ INT_FTYPE_FX (ll);
+
+ INT_FTYPE_FX (uh);
+ INT_FTYPE_FX (u);
+ INT_FTYPE_FX (ul);
+ INT_FTYPE_FX (ull);
+
+ /* For bitsfx builtins. */
+
+ INTX_FTYPE_FX (h);
+ INTX_FTYPE_FX ();
+ INTX_FTYPE_FX (l);
+ INTX_FTYPE_FX (ll);
+
+ INTX_FTYPE_FX (uh);
+ INTX_FTYPE_FX (u);
+ INTX_FTYPE_FX (ul);
+ INTX_FTYPE_FX (ull);
+
+ /* For fxbits builtins. */
+
+ FX_FTYPE_INTX (h);
+ FX_FTYPE_INTX ();
+ FX_FTYPE_INTX (l);
+ FX_FTYPE_INTX (ll);
+
+ FX_FTYPE_INTX (uh);
+ FX_FTYPE_INTX (u);
+ FX_FTYPE_INTX (ul);
+ FX_FTYPE_INTX (ull);
+
+
#define DEF_BUILTIN(NAME, N_ARGS, TYPE, CODE, LIBNAME) \
{ \
int id = AVR_BUILTIN_ ## NAME; \
@@ -11647,7 +11733,50 @@ avr_expand_builtin (tree exp, rtx target,
" as first argument", bname);
return target;
}
+
+ break;
}
+
+ case AVR_BUILTIN_ROUNDHR: case AVR_BUILTIN_ROUNDUHR:
+ case AVR_BUILTIN_ROUNDR: case AVR_BUILTIN_ROUNDUR:
+ case AVR_BUILTIN_ROUNDLR: case AVR_BUILTIN_ROUNDULR:
+ case AVR_BUILTIN_ROUNDLLR: case AVR_BUILTIN_ROUNDULLR:
+
+ case AVR_BUILTIN_ROUNDHK: case AVR_BUILTIN_ROUNDUHK:
+ case AVR_BUILTIN_ROUNDK: case AVR_BUILTIN_ROUNDUK:
+ case AVR_BUILTIN_ROUNDLK: case AVR_BUILTIN_ROUNDULK:
+ case AVR_BUILTIN_ROUNDLLK: case AVR_BUILTIN_ROUNDULLK:
+
+ /* Warn about odd rounding. Rounding points >= FBIT will have
+ no effect. */
+
+ if (TREE_CODE (CALL_EXPR_ARG (exp, 1)) != INTEGER_CST)
+ break;
+
+ int rbit = (int) TREE_INT_CST_LOW (CALL_EXPR_ARG (exp, 1));
+
+ if (rbit >= (int) GET_MODE_FBIT (mode))
+ {
+ warning (OPT_Wextra, "rounding to %d bits has no effect for "
+ "fixed-point value with %d fractional bits",
+ rbit, GET_MODE_FBIT (mode));
+
+ return expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX, mode,
+ EXPAND_NORMAL);
+ }
+ else if (rbit <= - (int) GET_MODE_IBIT (mode))
+ {
+ warning (0, "rounding result will always be 0");
+ return CONST0_RTX (mode);
+ }
+
+ /* The rounding points RP satisfies now: -IBIT < RP < FBIT.
+
+ TR 18037 only specifies results for RP > 0. However, the
+ remaining cases of -IBIT < RP <= 0 can easily be supported
+ without any additional overhead. */
+
+ break; /* round */
}
/* No fold found and no insn: Call support function from libgcc. */
@@ -11736,6 +11865,31 @@ avr_fold_builtin (tree fndecl, int n_args ATTRIBUTE_UNUSED, tree *arg,
return avr_fold_absfx (arg[0]);
+ case AVR_BUILTIN_BITSHR: case AVR_BUILTIN_HRBITS:
+ case AVR_BUILTIN_BITSHK: case AVR_BUILTIN_HKBITS:
+ case AVR_BUILTIN_BITSUHR: case AVR_BUILTIN_UHRBITS:
+ case AVR_BUILTIN_BITSUHK: case AVR_BUILTIN_UHKBITS:
+
+ case AVR_BUILTIN_BITSR: case AVR_BUILTIN_RBITS:
+ case AVR_BUILTIN_BITSK: case AVR_BUILTIN_KBITS:
+ case AVR_BUILTIN_BITSUR: case AVR_BUILTIN_URBITS:
+ case AVR_BUILTIN_BITSUK: case AVR_BUILTIN_UKBITS:
+
+ case AVR_BUILTIN_BITSLR: case AVR_BUILTIN_LRBITS:
+ case AVR_BUILTIN_BITSLK: case AVR_BUILTIN_LKBITS:
+ case AVR_BUILTIN_BITSULR: case AVR_BUILTIN_ULRBITS:
+ case AVR_BUILTIN_BITSULK: case AVR_BUILTIN_ULKBITS:
+
+ case AVR_BUILTIN_BITSLLR: case AVR_BUILTIN_LLRBITS:
+ case AVR_BUILTIN_BITSLLK: case AVR_BUILTIN_LLKBITS:
+ case AVR_BUILTIN_BITSULLR: case AVR_BUILTIN_ULLRBITS:
+ case AVR_BUILTIN_BITSULLK: case AVR_BUILTIN_ULLKBITS:
+
+ gcc_assert (TYPE_PRECISION (val_type)
+ == TYPE_PRECISION (TREE_TYPE (arg[0])));
+
+ return build1 (VIEW_CONVERT_EXPR, val_type, arg[0]);
+
case AVR_BUILTIN_INSERT_BITS:
{
tree tbits = arg[1];
diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md
index 6432d638220..e9f5d038f1f 100644
--- a/gcc/config/avr/avr.md
+++ b/gcc/config/avr/avr.md
@@ -68,6 +68,7 @@
UNSPEC_COPYSIGN
UNSPEC_IDENTITY
UNSPEC_INSERT_BITS
+ UNSPEC_ROUND
])
(define_c_enum "unspecv"
diff --git a/gcc/config/avr/builtins.def b/gcc/config/avr/builtins.def
index ecce186870d..ce444abae74 100644
--- a/gcc/config/avr/builtins.def
+++ b/gcc/config/avr/builtins.def
@@ -61,12 +61,109 @@ DEF_BUILTIN (FLASH_SEGMENT, 1, char_ftype_const_memx_ptr, flash_segment, NULL)
/* 7.18a.6.2 The fixed-point absolute value functions. */
-DEF_BUILTIN (ABSHR, 1, hr_ftype_hr, ssabsqq2, NULL)
-DEF_BUILTIN (ABSR, 1, r_ftype_r, ssabshq2, NULL)
-DEF_BUILTIN (ABSLR, 1, lr_ftype_lr, ssabssq2, NULL)
-DEF_BUILTIN (ABSLLR, 1, llr_ftype_llr, nothing, "__ssabsdq2") // GCC extension
-
-DEF_BUILTIN (ABSHK, 1, hk_ftype_hk, ssabsha2, NULL)
-DEF_BUILTIN (ABSK, 1, k_ftype_k, ssabssa2, NULL)
-DEF_BUILTIN (ABSLK, -1, lk_ftype_lk, nothing, "__ssabsda2")
-DEF_BUILTIN (ABSLLK, -1, llk_ftype_llk, nothing, "__ssabsta2") // GCC extension
+DEF_BUILTIN (ABSHR, 1, hr_ftype_hr, ssabsqq2, "__ssabs_1")
+DEF_BUILTIN (ABSR, 1, r_ftype_r, ssabshq2, "__ssabs_2")
+DEF_BUILTIN (ABSLR, 1, lr_ftype_lr, ssabssq2, "__ssabs_4")
+DEF_BUILTIN (ABSLLR, -1, llr_ftype_llr, nothing, "__ssabsdq2") // GCC extension
+
+DEF_BUILTIN (ABSHK, 1, hk_ftype_hk, ssabsha2, "__ssabs_2")
+DEF_BUILTIN (ABSK, 1, k_ftype_k, ssabssa2, "__ssabs_4")
+DEF_BUILTIN (ABSLK, -1, lk_ftype_lk, nothing, "__ssabsda2")
+DEF_BUILTIN (ABSLLK, -1, llk_ftype_llk, nothing, "__ssabsta2") // GCC extension
+
+/* 7.18a.6.3 The fixed-point round functions. */
+
+DEF_BUILTIN (ROUNDHR, 2, hr_ftype_hr_int, roundqq3, "__roundhr")
+DEF_BUILTIN (ROUNDR, 2, r_ftype_r_int, roundhq3, "__roundr")
+DEF_BUILTIN (ROUNDLR, 2, lr_ftype_lr_int, roundsq3, "__roundlr")
+DEF_BUILTIN (ROUNDLLR, -1, llr_ftype_llr_int, nothing, "__rounddq3") // GCC extension
+
+DEF_BUILTIN (ROUNDUHR, 2, uhr_ftype_uhr_int, rounduqq3, "__rounduhr")
+DEF_BUILTIN (ROUNDUR, 2, ur_ftype_ur_int, rounduhq3, "__roundur")
+DEF_BUILTIN (ROUNDULR, 2, ulr_ftype_ulr_int, roundusq3, "__roundulr")
+DEF_BUILTIN (ROUNDULLR, -1, ullr_ftype_ullr_int, nothing, "__roundudq3") // GCC extension
+
+DEF_BUILTIN (ROUNDHK, 2, hk_ftype_hk_int, roundha3, "__roundhk")
+DEF_BUILTIN (ROUNDK, 2, k_ftype_k_int, roundsa3, "__roundk")
+DEF_BUILTIN (ROUNDLK, -1, lk_ftype_lk_int, nothing, "__roundda3")
+DEF_BUILTIN (ROUNDLLK, -1, llk_ftype_llk_int, nothing, "__roundta3") // GCC extension
+
+DEF_BUILTIN (ROUNDUHK, 2, uhk_ftype_uhk_int, rounduha3, "__rounduhk")
+DEF_BUILTIN (ROUNDUK, 2, uk_ftype_uk_int, roundusa3, "__rounduk")
+DEF_BUILTIN (ROUNDULK, -1, ulk_ftype_ulk_int, nothing, "__rounduda3")
+DEF_BUILTIN (ROUNDULLK, -1, ullk_ftype_ullk_int, nothing, "__rounduta3") // GCC extension
+
+/* 7.18a.6.4 The fixed-point bit countls functions. */
+
+DEF_BUILTIN (COUNTLSHR, -1, int_ftype_hr, nothing, "__countlsqi2")
+DEF_BUILTIN (COUNTLSR, -1, int_ftype_r, nothing, "__countlshi2")
+DEF_BUILTIN (COUNTLSLR, -1, int_ftype_lr, nothing, "__countlssi2")
+DEF_BUILTIN (COUNTLSLLR, -1, int_ftype_llr, nothing, "__countlsdi2") // GCC extension
+
+DEF_BUILTIN (COUNTLSUHR, -1, int_ftype_uhr, nothing, "__countlsuqi2")
+DEF_BUILTIN (COUNTLSUR, -1, int_ftype_ur, nothing, "__countlsuhi2")
+DEF_BUILTIN (COUNTLSULR, -1, int_ftype_ulr, nothing, "__countlsusi2")
+DEF_BUILTIN (COUNTLSULLR, -1, int_ftype_ullr, nothing, "__countlsudi2") // GCC extension
+
+DEF_BUILTIN (COUNTLSHK, -1, int_ftype_hk, nothing, "__countlshi2")
+DEF_BUILTIN (COUNTLSK, -1, int_ftype_k, nothing, "__countlssi2")
+DEF_BUILTIN (COUNTLSLK, -1, int_ftype_lk, nothing, "__countlsdi2")
+DEF_BUILTIN (COUNTLSLLK, -1, int_ftype_llk, nothing, "__countlsdi2") // GCC extension
+
+DEF_BUILTIN (COUNTLSUHK, -1, int_ftype_uhk, nothing, "__countlsuhi2")
+DEF_BUILTIN (COUNTLSUK, -1, int_ftype_uk, nothing, "__countlsusi2")
+DEF_BUILTIN (COUNTLSULK, -1, int_ftype_ulk, nothing, "__countlsudi2")
+DEF_BUILTIN (COUNTLSULLK, -1, int_ftype_ullk, nothing, "__countlsudi2") // GCC extension
+
+/* 7.18a.6.5 The bitwise fixed-point to integer conversion functions. */
+
+DEF_BUILTIN (BITSHR, -1, inthr_ftype_hr, nothing, "__ret")
+DEF_BUILTIN (BITSR, -1, intr_ftype_r, nothing, "__ret")
+DEF_BUILTIN (BITSLR, -1, intlr_ftype_lr, nothing, "__ret")
+DEF_BUILTIN (BITSLLR, -1, intllr_ftype_llr, nothing, "__ret") // GCC extension
+
+DEF_BUILTIN (BITSUHR, -1, intuhr_ftype_uhr, nothing, "__ret")
+DEF_BUILTIN (BITSUR, -1, intur_ftype_ur, nothing, "__ret")
+DEF_BUILTIN (BITSULR, -1, intulr_ftype_ulr, nothing, "__ret")
+DEF_BUILTIN (BITSULLR, -1, intullr_ftype_ullr, nothing, "__ret") // GCC extension
+
+DEF_BUILTIN (BITSHK, -1, inthk_ftype_hk, nothing, "__ret")
+DEF_BUILTIN (BITSK, -1, intk_ftype_k, nothing, "__ret")
+DEF_BUILTIN (BITSLK, -1, intlk_ftype_lk, nothing, "__ret")
+DEF_BUILTIN (BITSLLK, -1, intllk_ftype_llk, nothing, "__ret") // GCC extension
+
+DEF_BUILTIN (BITSUHK, -1, intuhk_ftype_uhk, nothing, "__ret")
+DEF_BUILTIN (BITSUK, -1, intuk_ftype_uk, nothing, "__ret")
+DEF_BUILTIN (BITSULK, -1, intulk_ftype_ulk, nothing, "__ret")
+DEF_BUILTIN (BITSULLK, -1, intullk_ftype_ullk, nothing, "__ret") // GCC extension
+
+
+/* 7.18a.6.6 The bitwise integer to fixed-point conversion functions. */
+
+DEF_BUILTIN ( HRBITS, -1, hr_ftype_inthr, nothing, "__ret")
+DEF_BUILTIN ( RBITS, -1, r_ftype_intr, nothing, "__ret")
+DEF_BUILTIN ( LRBITS, -1, lr_ftype_intlr, nothing, "__ret")
+DEF_BUILTIN ( LLRBITS, -1, llr_ftype_intllr, nothing, "__ret") // GCC extension
+
+DEF_BUILTIN ( UHRBITS, -1, uhr_ftype_intuhr, nothing, "__ret")
+DEF_BUILTIN ( URBITS, -1, ur_ftype_intur, nothing, "__ret")
+DEF_BUILTIN ( ULRBITS, -1, ulr_ftype_intulr, nothing, "__ret")
+DEF_BUILTIN (ULLRBITS, -1, ullr_ftype_intullr, nothing, "__ret") // GCC extension
+
+DEF_BUILTIN ( HKBITS, -1, hk_ftype_inthk, nothing, "__ret")
+DEF_BUILTIN ( KBITS, -1, k_ftype_intk, nothing, "__ret")
+DEF_BUILTIN ( LKBITS, -1, lk_ftype_intlk, nothing, "__ret")
+DEF_BUILTIN ( LLKBITS, -1, llk_ftype_intllk, nothing, "__ret") // GCC extension
+
+DEF_BUILTIN ( UHKBITS, -1, uhk_ftype_intuhk, nothing, "__ret")
+DEF_BUILTIN ( UKBITS, -1, uk_ftype_intuk, nothing, "__ret")
+DEF_BUILTIN ( ULKBITS, -1, ulk_ftype_intulk, nothing, "__ret")
+DEF_BUILTIN (ULLKBITS, -1, ullk_ftype_intullk, nothing, "__ret") // GCC extension
+
+/* Overloaded */
+
+/* 7.18a.6.7 Type-generic fixed-point functions. */
+
+DEF_BUILTIN (ABSFX, -1, void_ftype_void /* dummy */, nothing, NULL)
+DEF_BUILTIN (ROUNDFX, -1, void_ftype_void /* dummy */, nothing, NULL)
+DEF_BUILTIN (COUNTLSFX, -1, void_ftype_void /* dummy */, nothing, NULL)
diff --git a/gcc/config/avr/stdfix.h b/gcc/config/avr/stdfix.h
index b86195a3f16..afcacdfb079 100644
--- a/gcc/config/avr/stdfix.h
+++ b/gcc/config/avr/stdfix.h
@@ -35,10 +35,6 @@
#include <stdfix-gcc.h>
-#define _GCC_TYPEPUN(A, B) \
- __builtin_memcpy (&A, &B, sizeof (A))
-
-/* 7.18a.6 The fixed-point intrinsic functions. */
#if __SIZEOF_INT__ == 2
@@ -66,8 +62,7 @@ typedef long long unsigned int uint_ulk_t;
typedef long long int int_llk_t;
typedef long long unsigned int uint_ullk_t;
-#else /* __SIZEOF_INT__ = 1 (for -mint8) */
-
+#elif __SIZEOF_INT__ == 1 /* -mint8 */
typedef signed char int_hr_t;
typedef unsigned char uint_uhr_t;
@@ -84,356 +79,158 @@ typedef long long unsigned int uint_ulr_t;
typedef long long int int_k_t;
typedef long long unsigned int uint_uk_t;
-#endif /* __SIZEOF_INT__ == 2 */
+#endif /* __SIZEOF_INT__ == 1, 2 */
+
+
+/* 7.18a.6 The fixed-point intrinsic functions. */
-/* 7.18a.6.2 The fixed-point absolute value functions. */
+/* 7.18a.6.2 The fixed-point absolute value functions. */
+
+#define abshr __builtin_avr_abshr
+#define absr __builtin_avr_absr
+#define abslr __builtin_avr_abslr
+
+#define abshk __builtin_avr_abshk
+#define absk __builtin_avr_absk
+
+#if __SIZEOF_INT__ == 2
+
+#define abslk __builtin_avr_abslk
+#define absllr __builtin_avr_absllr /* GCC Extension */
+#define absllk __builtin_avr_absllk /* GCC Extension */
-/* short fract (hr): abshr */
+#endif /* sizeof (int) == 2 */
-static __inline__ __attribute__((__always_inline__))
-short fract abshr (const short fract __q)
-{
- return __builtin_avr_abshr (__q);
-}
-/* fract (r): absr */
+/* 7.18a.6.3 The fixed-point round functions. */
-static __inline__ __attribute__((__always_inline__))
-fract absr (const fract __q)
-{
- return __builtin_avr_absr (__q);
-}
+/* The Embedded-C paper specifies results only for rounding points
-/* long fract (lr): abslr */
+ 0 < RP < FBIT
+
+ As an extension, the following functions work as expected
+ with rounding points
-static __inline__ __attribute__((__always_inline__))
-long fract abslr (const long fract __q)
-{
- return __builtin_avr_abslr (__q);
-}
+ -IBIT < RP < FBIT
+
+ For example, rounding an accum with a rounding point of -1 will
+ result in an even integer value. */
-/* short accum (hk): abshk */
+#define roundhr __builtin_avr_roundhr
+#define roundr __builtin_avr_roundr
+#define roundlr __builtin_avr_roundlr
-static __inline__ __attribute__((__always_inline__))
-short accum abshk (const short accum __q)
-{
- return __builtin_avr_abshk (__q);
-}
+#define rounduhr __builtin_avr_rounduhr
+#define roundur __builtin_avr_roundur
+#define roundulr __builtin_avr_roundulr
-/* accum (k): absk */
+#define roundhk __builtin_avr_roundhk
+#define roundk __builtin_avr_roundk
-static __inline__ __attribute__((__always_inline__))
-accum absk (const accum __q)
-{
- return __builtin_avr_absk (__q);
-}
+#define rounduhk __builtin_avr_rounduhk
+#define rounduk __builtin_avr_rounduk
#if __SIZEOF_INT__ == 2
-/* long long fract (llr): absllr */
-
-static __inline__ __attribute__((__always_inline__))
-long long fract absllr (const long long fract __q) /* GCC extension */
-{
- return __builtin_avr_absllr (__q);
-}
-
-/* long accum (lk): abslk */
-
-static __inline__ __attribute__((__always_inline__))
-long accum abslk (const long accum __q)
-{
- return __builtin_avr_abslk (__q);
-}
-
-/* long long accum (llk): absllk */
-
-static __inline__ __attribute__((__always_inline__))
-long long accum absllk (const long long accum __q) /* GCC extension */
-{
- return __builtin_avr_absllk (__q);
-}
-
-#endif /* __SIZEOF_INT__ == 2 */
-
-
-/* 7.18a.6.5 The bitwise fixed-point to integer conversion functions. */
-/* 7.18a.6.6 The bitwise integer to fixed-point conversion functions. */
-
-/* short fract (hr): bitshr, bitsuhr, hrbits, uhrbits */
-
-static __inline__ __attribute__((__always_inline__))
-int_hr_t bitshr (const short fract __q)
-{
- int_hr_t __result;
- _GCC_TYPEPUN (__result, __q);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-uint_uhr_t bitsuhr (const unsigned short fract __q)
-{
- uint_uhr_t __result;
- _GCC_TYPEPUN (__result, __q);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-short fract hrbits (const int_hr_t __i)
-{
- short fract __result;
- _GCC_TYPEPUN (__result, __i);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-unsigned short fract uhrbits (const uint_uhr_t __i)
-{
- unsigned short fract __result;
- _GCC_TYPEPUN (__result, __i);
- return __result;
-}
-
-/* fract (r): bitsr, bitsur, rbits, urbits */
-
-static __inline__ __attribute__((__always_inline__))
-int_r_t bitsr (const fract __q)
-{
- int_r_t __result;
- _GCC_TYPEPUN (__result, __q);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-uint_ur_t bitsur (const unsigned fract __q)
-{
- uint_ur_t __result;
- _GCC_TYPEPUN (__result, __q);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-fract rbits (const int_r_t __i)
-{
- fract __result;
- _GCC_TYPEPUN (__result, __i);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-unsigned fract urbits (const uint_ur_t __i)
-{
- unsigned fract __result;
- _GCC_TYPEPUN (__result, __i);
- return __result;
-}
-
-/* long fract (lr): bitslr, bitsulr, lrbits, ulrbits */
-
-static __inline__ __attribute__((__always_inline__))
-int_lr_t bitslr (const long fract __q)
-{
- int_lr_t __result;
- _GCC_TYPEPUN (__result, __q);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-uint_ulr_t bitsulr (const unsigned long fract __q)
-{
- uint_ulr_t __result;
- _GCC_TYPEPUN (__result, __q);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-long fract lrbits (const int_lr_t __i)
-{
- long fract __result;
- _GCC_TYPEPUN (__result, __i);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-unsigned long fract ulrbits (const uint_ulr_t __i)
-{
- unsigned long fract __result;
- _GCC_TYPEPUN (__result, __i);
- return __result;
-}
-
-/* short accum (hk): bitshk, bitsuhk, hkbits, uhkbits */
-
-static __inline__ __attribute__((__always_inline__))
-int_hk_t bitshk (const short accum __q)
-{
- int_hk_t __result;
- _GCC_TYPEPUN (__result, __q);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-uint_uhk_t bitsuhk (const unsigned short accum __q)
-{
- uint_uhk_t __result;
- _GCC_TYPEPUN (__result, __q);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-short accum hkbits (const int_hk_t __i)
-{
- short accum __result;
- _GCC_TYPEPUN (__result, __i);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-unsigned short accum uhkbits (const uint_uhk_t __i)
-{
- unsigned short accum __result;
- _GCC_TYPEPUN (__result, __i);
- return __result;
-}
-
-/* accum (k): bitsk, bitsuk, kbits, ukbits */
-
-static __inline__ __attribute__((__always_inline__))
-int_k_t bitsk (const accum __q)
-{
- int_k_t __result;
- _GCC_TYPEPUN (__result, __q);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-uint_uk_t bitsuk (const unsigned accum __q)
-{
- uint_uk_t __result;
- _GCC_TYPEPUN (__result, __q);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-accum kbits (const int_k_t __i)
-{
- accum __result;
- _GCC_TYPEPUN (__result, __i);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-unsigned accum ukbits (const uint_uk_t __i)
-{
- unsigned accum __result;
- _GCC_TYPEPUN (__result, __i);
- return __result;
-}
+#define roundlk __builtin_avr_roundlk
+#define roundulk __builtin_avr_roundulk
+#define roundllr __builtin_avr_roundllr /* GCC Extension */
+#define roundullr __builtin_avr_roundullr /* GCC Extension */
+#define roundllk __builtin_avr_roundllk /* GCC Extension */
+#define roundullk __builtin_avr_roundullk /* GCC Extension */
+
+#endif /* sizeof (int) == 2 */
+
+
+/* 7.18a.6.4 The fixed-point bit countls functions. */
+
+#define countlshr __builtin_avr_countlshr
+#define countlsr __builtin_avr_countlsr
+#define countlslr __builtin_avr_countlslr
+
+#define countlsuhr __builtin_avr_countlsuhr
+#define countlsur __builtin_avr_countlsur
+#define countlsulr __builtin_avr_countlsulr
+
+#define countlshk __builtin_avr_countlshk
+#define countlsk __builtin_avr_countlsk
+
+#define countlsuhk __builtin_avr_countlsuhk
+#define countlsuk __builtin_avr_countlsuk
#if __SIZEOF_INT__ == 2
-/* long long fract (llr): bitsllr, bitsullr, llrbits, ullrbits */
-
-static __inline__ __attribute__((__always_inline__))
-int_llr_t bitsllr (const long long fract __q)
-{
- int_llr_t __result;
- _GCC_TYPEPUN (__result, __q);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-uint_ullr_t bitsullr (const unsigned long long fract __q)
-{
- uint_ullr_t __result;
- _GCC_TYPEPUN (__result, __q);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-long long fract llrbits (const int_llr_t __i)
-{
- long long fract __result;
- _GCC_TYPEPUN (__result, __i);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-unsigned long long fract ullrbits (const uint_ullr_t __i)
-{
- unsigned long long fract __result;
- _GCC_TYPEPUN (__result, __i);
- return __result;
-}
-
-/* long accum (lk): bitslk, bitsulk, lkbits, ulkbits */
-
-static __inline__ __attribute__((__always_inline__))
-int_lk_t bitslk (const long accum __q)
-{
- int_lk_t __result;
- _GCC_TYPEPUN (__result, __q);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-uint_ulk_t bitsulk (const unsigned long accum __q)
-{
- uint_ulk_t __result;
- _GCC_TYPEPUN (__result, __q);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-long accum lkbits (const int_lk_t __i)
-{
- long accum __result;
- _GCC_TYPEPUN (__result, __i);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-unsigned long accum ulkbits (const uint_ulk_t __i)
-{
- unsigned long accum __result;
- _GCC_TYPEPUN (__result, __i);
- return __result;
-}
-
-/* long long accum (llk): bitsllk, bitsullk, llkbits, ullkbits */
-
-static __inline__ __attribute__((__always_inline__))
-int_llk_t bitsllk (const long long accum __q)
-{
- int_llk_t __result;
- _GCC_TYPEPUN (__result, __q);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-uint_ullk_t bitsullk (const unsigned long long accum __q)
-{
- uint_ullk_t __result;
- _GCC_TYPEPUN (__result, __q);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-long long accum llkbits (const int_llk_t __i)
-{
- long long accum __result;
- _GCC_TYPEPUN (__result, __i);
- return __result;
-}
-
-static __inline__ __attribute__((__always_inline__))
-unsigned long long accum ullkbits (const uint_ullk_t __i)
-{
- unsigned long long accum __result;
- _GCC_TYPEPUN (__result, __i);
- return __result;
-}
-
-#endif /* __SIZEOF_INT__ == 2 */
+#define countlslk __builtin_avr_countlslk
+#define countlsulk __builtin_avr_countlsulk
+#define countlsllr __builtin_avr_countlsllr /* GCC Extension */
+#define countlsullr __builtin_avr_countlsullr /* GCC Extension */
+#define countlsllk __builtin_avr_countlsllk /* GCC Extension */
+#define countlsullk __builtin_avr_countlsullk /* GCC Extension */
+
+#endif /* sizeof (int) == 2 */
+
+
+/* 7.18a.6.5 The bitwise fixed-point to integer conversion functions. */
+
+#define bitshr __builtin_avr_bitshr
+#define bitsr __builtin_avr_bitsr
+#define bitslr __builtin_avr_bitslr
+
+#define bitsuhr __builtin_avr_bitsuhr
+#define bitsur __builtin_avr_bitsur
+#define bitsulr __builtin_avr_bitsulr
+
+#define bitshk __builtin_avr_bitshk
+#define bitsk __builtin_avr_bitsk
+
+#define bitsuhk __builtin_avr_bitsuhk
+#define bitsuk __builtin_avr_bitsuk
+
+#if __SIZEOF_INT__ == 2
+
+#define bitslk __builtin_avr_bitslk
+#define bitsulk __builtin_avr_bitsulk
+#define bitsllr __builtin_avr_bitsllr /* GCC Extension */
+#define bitsullr __builtin_avr_bitsullr /* GCC Extension */
+#define bitsllk __builtin_avr_bitsllk /* GCC Extension */
+#define bitsullk __builtin_avr_bitsullk /* GCC Extension */
+
+#endif /* sizeof (int) == 2 */
+
+
+/* 7.18a.6.6 The bitwise integer to fixed-point conversion functions. */
+
+#define hrbits __builtin_avr_hrbits
+#define rbits __builtin_avr_rbits
+#define lrbits __builtin_avr_lrbits
+
+#define uhrbits __builtin_avr_uhrbits
+#define urbits __builtin_avr_urbits
+#define ulrbits __builtin_avr_ulrbits
+
+#define hkbits __builtin_avr_hkbits
+#define kbits __builtin_avr_kbits
+
+#define uhkbits __builtin_avr_uhkbits
+#define ukbits __builtin_avr_ukbits
+
+#if __SIZEOF_INT__ == 2
+
+#define lkbits __builtin_avr_lkbits
+#define ulkbits __builtin_avr_ulkbits
+#define llrbits __builtin_avr_llrbits /* GCC Extension */
+#define ullrbits __builtin_avr_ullrbits /* GCC Extension */
+#define llkbits __builtin_avr_llkbits /* GCC Extension */
+#define ullkbits __builtin_avr_ullkbits /* GCC Extension */
+
+#endif /* sizeof (int) == 2 */
+
+
+/* 7.18a.6.7 Type-generic fixed-point functions. */
+
+#define absfx __builtin_avr_absfx
+#define roundfx __builtin_avr_roundfx
+#define countlsfx __builtin_avr_countlsfx
+
#endif /* _AVRGCC_STDFIX_H */
diff --git a/gcc/config/gnu-user.h b/gcc/config/gnu-user.h
index 0024626a3b2..ba627e0ab0d 100644
--- a/gcc/config/gnu-user.h
+++ b/gcc/config/gnu-user.h
@@ -101,14 +101,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* Link -lasan early on the command line. For -static-libasan, don't link
it for -shared link, the executable should be compiled with -static-libasan
in that case, and for executable link link with --{,no-}whole-archive around
- it to force everything into the executable. */
+ it to force everything into the executable. And similarly for -ltsan. */
#if defined(HAVE_LD_STATIC_DYNAMIC)
#undef LIBASAN_EARLY_SPEC
#define LIBASAN_EARLY_SPEC "%{static-libasan:%{!shared:" \
LD_STATIC_OPTION " --whole-archive -lasan --no-whole-archive " \
LD_DYNAMIC_OPTION "}}%{!static-libasan:-lasan}"
+#undef LIBTSAN_EARLY_SPEC
+#define LIBTSAN_EARLY_SPEC "%{static-libtsan:%{!shared:" \
+ LD_STATIC_OPTION " --whole-archive -ltsan --no-whole-archive " \
+ LD_DYNAMIC_OPTION "}}%{!static-libtsan:-ltsan}"
#endif
/* Additional libraries needed by -static-libasan. */
#undef STATIC_LIBASAN_LIBS
#define STATIC_LIBASAN_LIBS "-ldl -lpthread"
+
+/* Additional libraries needed by -static-libtsan. */
+#undef STATIC_LIBTSAN_LIBS
+#define STATIC_LIBTSAN_LIBS "-ldl -lpthread"
diff --git a/gcc/config/gnu.h b/gcc/config/gnu.h
index 604ba8d61e7..263b023a33b 100644
--- a/gcc/config/gnu.h
+++ b/gcc/config/gnu.h
@@ -33,7 +33,7 @@ along with GCC. If not, see <http://www.gnu.org/licenses/>.
builtin_define ("__gnu_hurd__"); \
builtin_define ("__GNU__"); \
builtin_define_std ("unix"); \
- builtin_define_std ("MACH"); \
+ builtin_define ("__MACH__"); \
builtin_assert ("system=gnu"); \
builtin_assert ("system=mach"); \
builtin_assert ("system=unix"); \
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 895028b4bf4..8826acd004b 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -14628,7 +14628,8 @@ ix86_print_operand (FILE *file, rtx x, int code)
putc ('$', file);
/* Sign extend 32bit SFmode immediate to 8 bytes. */
if (code == 'q')
- fprintf (file, "0x%08llx", (unsigned long long) (int) l);
+ fprintf (file, "0x%08" HOST_LONG_LONG_FORMAT "x",
+ (unsigned long long) (int) l);
else
fprintf (file, "0x%08x", (unsigned int) l);
}
@@ -42082,9 +42083,8 @@ static reg_class_t
ix86_spill_class (reg_class_t rclass, enum machine_mode mode)
{
if (TARGET_SSE && TARGET_GENERAL_REGS_SSE_SPILL && ! TARGET_MMX
- && hard_reg_set_subset_p (reg_class_contents[rclass],
- reg_class_contents[GENERAL_REGS])
- && (mode == SImode || (TARGET_64BIT && mode == DImode)))
+ && (mode == SImode || (TARGET_64BIT && mode == DImode))
+ && INTEGER_CLASS_P (rclass))
return SSE_REGS;
return NO_REGS;
}
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 76d7f3da613..8b5f030c551 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -5135,17 +5135,14 @@ mem_operand_gpr (rtx op, enum machine_mode mode)
if (TARGET_POWERPC64 && (offset & 3) != 0)
return false;
- if (GET_CODE (addr) == LO_SUM)
- /* We know by alignment that ABI_AIX medium/large model toc refs
- will not cross a 32k boundary, since all entries in the
- constant pool are naturally aligned and we check alignment for
- other medium model toc-relative addresses. For ABI_V4 and
- ABI_DARWIN lo_sum addresses, we just check that 64-bit
- offsets are 4-byte aligned. */
- return true;
-
extra = GET_MODE_SIZE (mode) - UNITS_PER_WORD;
gcc_assert (extra >= 0);
+
+ if (GET_CODE (addr) == LO_SUM)
+ /* For lo_sum addresses, we must allow any offset except one that
+ causes a wrap, so test only the low 16 bits. */
+ offset = ((offset & 0xffff) ^ 0x8000) - 0x8000;
+
return offset + 0x8000 < 0x10000u - extra;
}
@@ -13823,19 +13820,36 @@ rs6000_secondary_reload (bool in_p,
&& MEM_P (x)
&& GET_MODE_SIZE (GET_MODE (x)) >= UNITS_PER_WORD)
{
- rtx off = address_offset (XEXP (x, 0));
- unsigned int extra = GET_MODE_SIZE (GET_MODE (x)) - UNITS_PER_WORD;
-
- if (off != NULL_RTX
- && (INTVAL (off) & 3) != 0
- && (unsigned HOST_WIDE_INT) INTVAL (off) + 0x8000 < 0x10000 - extra)
- {
- if (in_p)
- sri->icode = CODE_FOR_reload_di_load;
+ rtx addr = XEXP (x, 0);
+ rtx off = address_offset (addr);
+
+ if (off != NULL_RTX)
+ {
+ unsigned int extra = GET_MODE_SIZE (GET_MODE (x)) - UNITS_PER_WORD;
+ unsigned HOST_WIDE_INT offset = INTVAL (off);
+
+ /* We need a secondary reload when our legitimate_address_p
+ says the address is good (as otherwise the entire address
+ will be reloaded), and the offset is not a multiple of
+ four or we have an address wrap. Address wrap will only
+ occur for LO_SUMs since legitimate_offset_address_p
+ rejects addresses for 16-byte mems that will wrap. */
+ if (GET_CODE (addr) == LO_SUM
+ ? (1 /* legitimate_address_p allows any offset for lo_sum */
+ && ((offset & 3) != 0
+ || ((offset & 0xffff) ^ 0x8000) >= 0x10000 - extra))
+ : (offset + 0x8000 < 0x10000 - extra /* legitimate_address_p */
+ && (offset & 3) != 0))
+ {
+ if (in_p)
+ sri->icode = CODE_FOR_reload_di_load;
+ else
+ sri->icode = CODE_FOR_reload_di_store;
+ sri->extra_cost = 2;
+ ret = NO_REGS;
+ }
else
- sri->icode = CODE_FOR_reload_di_store;
- sri->extra_cost = 2;
- ret = NO_REGS;
+ default_p = true;
}
else
default_p = true;
@@ -13845,25 +13859,43 @@ rs6000_secondary_reload (bool in_p,
&& MEM_P (x)
&& GET_MODE_SIZE (GET_MODE (x)) > UNITS_PER_WORD)
{
- rtx off = address_offset (XEXP (x, 0));
- unsigned int extra = GET_MODE_SIZE (GET_MODE (x)) - UNITS_PER_WORD;
-
- /* We need a secondary reload only when our legitimate_address_p
- says the address is good (as otherwise the entire address
- will be reloaded). So for mode sizes of 8 and 16 this will
- be when the offset is in the ranges [0x7ffc,0x7fff] and
- [0x7ff4,0x7ff7] respectively. Note that the address we see
- here may have been manipulated by legitimize_reload_address. */
- if (off != NULL_RTX
- && ((unsigned HOST_WIDE_INT) INTVAL (off) - (0x8000 - extra)
- < UNITS_PER_WORD))
- {
- if (in_p)
- sri->icode = CODE_FOR_reload_si_load;
+ rtx addr = XEXP (x, 0);
+ rtx off = address_offset (addr);
+
+ if (off != NULL_RTX)
+ {
+ unsigned int extra = GET_MODE_SIZE (GET_MODE (x)) - UNITS_PER_WORD;
+ unsigned HOST_WIDE_INT offset = INTVAL (off);
+
+ /* We need a secondary reload when our legitimate_address_p
+ says the address is good (as otherwise the entire address
+ will be reloaded), and we have a wrap.
+
+ legitimate_lo_sum_address_p allows LO_SUM addresses to
+ have any offset so test for wrap in the low 16 bits.
+
+ legitimate_offset_address_p checks for the range
+ [-0x8000,0x7fff] for mode size of 8 and [-0x8000,0x7ff7]
+ for mode size of 16. We wrap at [0x7ffc,0x7fff] and
+ [0x7ff4,0x7fff] respectively, so test for the
+ intersection of these ranges, [0x7ffc,0x7fff] and
+ [0x7ff4,0x7ff7] respectively.
+
+ Note that the address we see here may have been
+ manipulated by legitimize_reload_address. */
+ if (GET_CODE (addr) == LO_SUM
+ ? ((offset & 0xffff) ^ 0x8000) >= 0x10000 - extra
+ : offset - (0x8000 - extra) < UNITS_PER_WORD)
+ {
+ if (in_p)
+ sri->icode = CODE_FOR_reload_si_load;
+ else
+ sri->icode = CODE_FOR_reload_si_store;
+ sri->extra_cost = 2;
+ ret = NO_REGS;
+ }
else
- sri->icode = CODE_FOR_reload_si_store;
- sri->extra_cost = 2;
- ret = NO_REGS;
+ default_p = true;
}
else
default_p = true;
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index b3db6817647..a665fa50abf 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -292,6 +292,9 @@
(define_mode_attr ptrload [(SI "lwz")
(DI "ld")])
+(define_mode_attr ptrm [(SI "m")
+ (DI "Y")])
+
(define_mode_attr rreg [(SF "f")
(DF "ws")
(V4SF "wf")
@@ -10662,8 +10665,8 @@
(define_insn "call_indirect_aix<ptrsize>"
[(call (mem:SI (match_operand:P 0 "register_operand" "c,*l"))
(match_operand 1 "" "g,g"))
- (use (match_operand:P 2 "memory_operand" "m,m"))
- (set (reg:P TOC_REGNUM) (match_operand:P 3 "memory_operand" "m,m"))
+ (use (match_operand:P 2 "memory_operand" "<ptrm>,<ptrm>"))
+ (set (reg:P TOC_REGNUM) (match_operand:P 3 "memory_operand" "<ptrm>,<ptrm>"))
(use (reg:P STATIC_CHAIN_REGNUM))
(clobber (reg:P LR_REGNO))]
"DEFAULT_ABI == ABI_AIX && TARGET_POINTERS_TO_NESTED_FUNCTIONS"
@@ -10680,8 +10683,8 @@
(define_insn "call_indirect_aix<ptrsize>_nor11"
[(call (mem:SI (match_operand:P 0 "register_operand" "c,*l"))
(match_operand 1 "" "g,g"))
- (use (match_operand:P 2 "memory_operand" "m,m"))
- (set (reg:P TOC_REGNUM) (match_operand:P 3 "memory_operand" "m,m"))
+ (use (match_operand:P 2 "memory_operand" "<ptrm>,<ptrm>"))
+ (set (reg:P TOC_REGNUM) (match_operand:P 3 "memory_operand" "<ptrm>,<ptrm>"))
(clobber (reg:P LR_REGNO))]
"DEFAULT_ABI == ABI_AIX && !TARGET_POINTERS_TO_NESTED_FUNCTIONS"
"<ptrload> 2,%2\;b%T0l\;<ptrload> 2,%3"
@@ -10698,8 +10701,8 @@
[(set (match_operand 0 "" "")
(call (mem:SI (match_operand:P 1 "register_operand" "c,*l"))
(match_operand 2 "" "g,g")))
- (use (match_operand:P 3 "memory_operand" "m,m"))
- (set (reg:P TOC_REGNUM) (match_operand:P 4 "memory_operand" "m,m"))
+ (use (match_operand:P 3 "memory_operand" "<ptrm>,<ptrm>"))
+ (set (reg:P TOC_REGNUM) (match_operand:P 4 "memory_operand" "<ptrm>,<ptrm>"))
(use (reg:P STATIC_CHAIN_REGNUM))
(clobber (reg:P LR_REGNO))]
"DEFAULT_ABI == ABI_AIX && TARGET_POINTERS_TO_NESTED_FUNCTIONS"
@@ -10718,8 +10721,8 @@
[(set (match_operand 0 "" "")
(call (mem:SI (match_operand:P 1 "register_operand" "c,*l"))
(match_operand 2 "" "g,g")))
- (use (match_operand:P 3 "memory_operand" "m,m"))
- (set (reg:P TOC_REGNUM) (match_operand:P 4 "memory_operand" "m,m"))
+ (use (match_operand:P 3 "memory_operand" "<ptrm>,<ptrm>"))
+ (set (reg:P TOC_REGNUM) (match_operand:P 4 "memory_operand" "<ptrm>,<ptrm>"))
(clobber (reg:P LR_REGNO))]
"DEFAULT_ABI == ABI_AIX && !TARGET_POINTERS_TO_NESTED_FUNCTIONS"
"<ptrload> 2,%3\;b%T1l\;<ptrload> 2,%4"
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 7bd5402a3c1..6d29ff62c72 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,49 @@
+2013-02-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/56241
+ * init.c (build_vec_init): Don't append NULL values into new_vec.
+ (build_zero_init_1): Don't push anything into v if recursive call
+ returned NULL_TREE.
+ (build_value_init_noctor): Don't push anything into v if
+ build_value_init call returned NULL_TREE.
+
+ PR c++/56239
+ * parser.c (cp_parser_token_starts_cast_expression): Renamed to...
+ (cp_parser_tokens_start_cast_expression): ... this. Change parameter
+ to cp_parser *, call cp_lexer_peek_token first. For CPP_OPEN_PAREN,
+ return true only if 2nd token isn't CPP_CLOSE_PAREN.
+ (cp_parser_cast_expression): Adjust caller.
+
+ PR c++/56237
+ * decl.c (push_local_name): Look at DECL_DISCRIMINATOR (t)
+ only if DECL_DISCRIMINATOR_SET_P (t) rather than just
+ DECL_LANG_SPECIFIC (t).
+
+2013-02-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/56235
+ * method.c (do_build_copy_constructor): Don't bother turning
+ scalars from lvalues to xvalues.
+ (do_build_copy_assign): Likewise.
+
+2013-02-06 Jason Merrill <jason@redhat.com>
+
+ * parser.c (cp_parser_enum_specifier): Check for error_mark_node.
+
+2013-02-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/54122
+ * tree.c (lvalue_kind) [INDIRECT_REF]: Don't check for
+ METHOD_TYPE.
+
+ PR c++/56177
+ * decl.c (start_preparsed_function): Update restype if we change
+ decl1.
+
+ PR c++/56208
+ * pt.c (fn_type_unification): Discard any access checks from
+ substituting explicit args.
+
2013-01-31 Jason Merrill <jason@redhat.com>
PR c++/56162
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 9b40018370f..5317fcf43cb 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -920,7 +920,7 @@ push_local_name (tree decl)
if (!DECL_LANG_SPECIFIC (decl))
retrofit_lang_decl (decl);
DECL_LANG_SPECIFIC (decl)->u.base.u2sel = 1;
- if (DECL_LANG_SPECIFIC (t))
+ if (DECL_DISCRIMINATOR_SET_P (t))
DECL_DISCRIMINATOR (decl) = DECL_DISCRIMINATOR (t) + 1;
else
DECL_DISCRIMINATOR (decl) = 1;
@@ -13116,6 +13116,7 @@ start_preparsed_function (tree decl1, tree attrs, int flags)
DECL_CONTEXT (decl1) = DECL_CONTEXT (DECL_TI_TEMPLATE (decl1));
}
fntype = TREE_TYPE (decl1);
+ restype = TREE_TYPE (fntype);
/* If #pragma weak applies, mark the decl appropriately now.
The pragma only applies to global functions. Because
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index b9d604b3095..6f46404760e 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -253,8 +253,6 @@ build_zero_init_1 (tree type, tree nelts, bool static_storage_p,
{
constructor_elt ce;
- vec_alloc (v, 1);
-
/* If this is a one element array, we just use a regular init. */
if (tree_int_cst_equal (size_zero_node, max_index))
ce.index = size_zero_node;
@@ -265,7 +263,11 @@ build_zero_init_1 (tree type, tree nelts, bool static_storage_p,
ce.value = build_zero_init_1 (TREE_TYPE (type),
/*nelts=*/NULL_TREE,
static_storage_p, NULL_TREE);
- v->quick_push (ce);
+ if (ce.value)
+ {
+ vec_alloc (v, 1);
+ v->quick_push (ce);
+ }
}
/* Build a constructor to contain the initializations. */
@@ -447,8 +449,6 @@ build_value_init_noctor (tree type, tsubst_flags_t complain)
{
constructor_elt ce;
- vec_alloc (v, 1);
-
/* If this is a one element array, we just use a regular init. */
if (tree_int_cst_equal (size_zero_node, max_index))
ce.index = size_zero_node;
@@ -456,16 +456,20 @@ build_value_init_noctor (tree type, tsubst_flags_t complain)
ce.index = build2 (RANGE_EXPR, sizetype, size_zero_node, max_index);
ce.value = build_value_init (TREE_TYPE (type), complain);
- v->quick_push (ce);
+ if (ce.value)
+ {
+ if (ce.value == error_mark_node)
+ return error_mark_node;
- if (ce.value == error_mark_node)
- return error_mark_node;
+ vec_alloc (v, 1);
+ v->quick_push (ce);
- /* We shouldn't have gotten here for anything that would need
- non-trivial initialization, and gimplify_init_ctor_preeval
- would need to be fixed to allow it. */
- gcc_assert (TREE_CODE (ce.value) != TARGET_EXPR
- && TREE_CODE (ce.value) != AGGR_INIT_EXPR);
+ /* We shouldn't have gotten here for anything that would need
+ non-trivial initialization, and gimplify_init_ctor_preeval
+ would need to be fixed to allow it. */
+ gcc_assert (TREE_CODE (ce.value) != TARGET_EXPR
+ && TREE_CODE (ce.value) != AGGR_INIT_EXPR);
+ }
}
/* Build a constructor to contain the initializations. */
@@ -3469,9 +3473,12 @@ build_vec_init (tree base, tree maxindex, tree init,
else
{
if (do_static_init)
- CONSTRUCTOR_APPEND_ELT (new_vec, field,
- build_zero_init (TREE_TYPE (e),
- NULL_TREE, true));
+ {
+ tree value = build_zero_init (TREE_TYPE (e), NULL_TREE,
+ true);
+ if (value)
+ CONSTRUCTOR_APPEND_ELT (new_vec, field, value);
+ }
saw_non_const = true;
}
}
diff --git a/gcc/cp/method.c b/gcc/cp/method.c
index d13a0cf3a9e..a1bab95049c 100644
--- a/gcc/cp/method.c
+++ b/gcc/cp/method.c
@@ -610,7 +610,9 @@ do_build_copy_constructor (tree fndecl)
}
init = build3 (COMPONENT_REF, expr_type, parm, field, NULL_TREE);
- if (move_p && TREE_CODE (expr_type) != REFERENCE_TYPE)
+ if (move_p && TREE_CODE (expr_type) != REFERENCE_TYPE
+ /* 'move' breaks bit-fields, and has no effect for scalars. */
+ && !scalarish_type_p (expr_type))
init = move (init);
init = build_tree_list (NULL_TREE, init);
@@ -724,7 +726,9 @@ do_build_copy_assign (tree fndecl)
expr_type = cp_build_qualified_type (expr_type, quals);
init = build3 (COMPONENT_REF, expr_type, init, field, NULL_TREE);
- if (move_p && TREE_CODE (expr_type) != REFERENCE_TYPE)
+ if (move_p && TREE_CODE (expr_type) != REFERENCE_TYPE
+ /* 'move' breaks bit-fields, and has no effect for scalars. */
+ && !scalarish_type_p (expr_type))
init = move (init);
if (DECL_NAME (field))
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 74db9aef3e0..402f384102b 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -7091,8 +7091,9 @@ cp_parser_delete_expression (cp_parser* parser)
otherwise. */
static bool
-cp_parser_token_starts_cast_expression (cp_token *token)
+cp_parser_tokens_start_cast_expression (cp_parser *parser)
{
+ cp_token *token = cp_lexer_peek_token (parser->lexer);
switch (token->type)
{
case CPP_COMMA:
@@ -7133,6 +7134,12 @@ cp_parser_token_starts_cast_expression (cp_token *token)
case CPP_EOF:
return false;
+ case CPP_OPEN_PAREN:
+ /* In ((type ()) () the last () isn't a valid cast-expression,
+ so the whole must be parsed as postfix-expression. */
+ return cp_lexer_peek_nth_token (parser->lexer, 2)->type
+ != CPP_CLOSE_PAREN;
+
/* '[' may start a primary-expression in obj-c++. */
case CPP_OPEN_SQUARE:
return c_dialect_objc ();
@@ -7225,8 +7232,7 @@ cp_parser_cast_expression (cp_parser *parser, bool address_p, bool cast_p,
parenthesized ctor such as `(T ())' that looks like a cast to
function returning T. */
if (!cp_parser_error_occurred (parser)
- && cp_parser_token_starts_cast_expression (cp_lexer_peek_token
- (parser->lexer)))
+ && cp_parser_tokens_start_cast_expression (parser))
{
cp_parser_parse_definitely (parser);
expr = cp_parser_cast_expression (parser,
@@ -14567,7 +14573,7 @@ cp_parser_enum_specifier (cp_parser* parser)
/*check_dependency=*/true,
/*ambiguous_decls=*/NULL,
input_location);
- if (name)
+ if (name && name != error_mark_node)
{
type = TREE_TYPE (name);
if (TREE_CODE (type) == TYPENAME_TYPE)
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 743028942ed..aa127ed7099 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -14989,6 +14989,12 @@ fn_type_unification (tree fn,
if (fntype == error_mark_node)
goto fail;
+ /* Throw away these access checks; we'll see them again in
+ instantiate_template and they might have the wrong
+ access path at this point. */
+ pop_deferring_access_checks ();
+ push_deferring_access_checks (dk_deferred);
+
/* Place the explicitly specified arguments in TARGS. */
for (i = NUM_TMPL_ARGS (explicit_targs); i--;)
TREE_VEC_ELT (targs, i) = TREE_VEC_ELT (explicit_targs, i);
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index d1f14fcfc76..18d9a98effd 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -143,9 +143,7 @@ lvalue_kind (const_tree ref)
case ARRAY_REF:
case PARM_DECL:
case RESULT_DECL:
- if (TREE_CODE (TREE_TYPE (ref)) != METHOD_TYPE)
- return clk_ordinary;
- break;
+ return clk_ordinary;
/* A scope ref in a template, left as SCOPE_REF to support later
access checking. */
diff --git a/gcc/cse.c b/gcc/cse.c
index 32bed42befe..b200fef4dfb 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -5311,33 +5311,33 @@ cse_insn (rtx insn)
}
/* If this is a single SET, we are setting a register, and we have an
- equivalent constant, we want to add a REG_NOTE. We don't want
- to write a REG_EQUAL note for a constant pseudo since verifying that
- that pseudo hasn't been eliminated is a pain. Such a note also
- won't help anything.
+ equivalent constant, we want to add a REG_EQUAL note if the constant
+ is different from the source. We don't want to do it for a constant
+ pseudo since verifying that this pseudo hasn't been eliminated is a
+ pain; moreover such a note won't help anything.
Avoid a REG_EQUAL note for (CONST (MINUS (LABEL_REF) (LABEL_REF)))
which can be created for a reference to a compile time computable
entry in a jump table. */
-
- if (n_sets == 1 && src_const && REG_P (dest)
+ if (n_sets == 1
+ && REG_P (dest)
+ && src_const
&& !REG_P (src_const)
- && ! (GET_CODE (src_const) == CONST
- && GET_CODE (XEXP (src_const, 0)) == MINUS
- && GET_CODE (XEXP (XEXP (src_const, 0), 0)) == LABEL_REF
- && GET_CODE (XEXP (XEXP (src_const, 0), 1)) == LABEL_REF))
+ && !(GET_CODE (src_const) == SUBREG
+ && REG_P (SUBREG_REG (src_const)))
+ && !(GET_CODE (src_const) == CONST
+ && GET_CODE (XEXP (src_const, 0)) == MINUS
+ && GET_CODE (XEXP (XEXP (src_const, 0), 0)) == LABEL_REF
+ && GET_CODE (XEXP (XEXP (src_const, 0), 1)) == LABEL_REF)
+ && !rtx_equal_p (src, src_const))
{
- /* We only want a REG_EQUAL note if src_const != src. */
- if (! rtx_equal_p (src, src_const))
- {
- /* Make sure that the rtx is not shared. */
- src_const = copy_rtx (src_const);
+ /* Make sure that the rtx is not shared. */
+ src_const = copy_rtx (src_const);
- /* Record the actual constant value in a REG_EQUAL note,
- making a new one if one does not already exist. */
- set_unique_reg_note (insn, REG_EQUAL, src_const);
- df_notes_rescan (insn);
- }
+ /* Record the actual constant value in a REG_EQUAL note,
+ making a new one if one does not already exist. */
+ set_unique_reg_note (insn, REG_EQUAL, src_const);
+ df_notes_rescan (insn);
}
/* Now deal with the destination. */
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index 92bfc8bd396..1265129988e 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -1619,9 +1619,9 @@ variable (@env{LD_LIBRARY_PATH} on GNU/Linux and Solaris systems).
These flags are applicable to the host platform only. When building
a cross compiler, they will not be used to configure target libraries.
-@item --with-ppl=@var{pathname}
-@itemx --with-ppl-include=@var{pathname}
-@itemx --with-ppl-lib=@var{pathname}
+@item --with-isl=@var{pathname}
+@itemx --with-isl-include=@var{pathname}
+@itemx --with-isl-lib=@var{pathname}
@itemx --with-cloog=@var{pathname}
@itemx --with-cloog-include=@var{pathname}
@itemx --with-cloog-lib=@var{pathname}
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 06cfb18a0ce..4e75407fedf 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -2351,6 +2351,7 @@ static void dwarf2out_imported_module_or_decl_1 (tree, tree, tree,
static void dwarf2out_abstract_function (tree);
static void dwarf2out_var_location (rtx);
static void dwarf2out_begin_function (tree);
+static void dwarf2out_end_function (unsigned int);
static void dwarf2out_set_name (tree, tree);
/* The debug hooks structure. */
@@ -2378,7 +2379,7 @@ const struct gcc_debug_hooks dwarf2_debug_hooks =
#endif
dwarf2out_end_epilogue,
dwarf2out_begin_function,
- debug_nothing_int, /* end_function */
+ dwarf2out_end_function, /* end_function */
dwarf2out_function_decl, /* function_decl */
dwarf2out_global_decl,
dwarf2out_type_decl, /* type_decl */
@@ -10864,7 +10865,16 @@ based_loc_descr (rtx reg, HOST_WIDE_INT offset,
}
}
- regno = DWARF_FRAME_REGNUM (REGNO (reg));
+ regno = REGNO (reg);
+#ifdef LEAF_REG_REMAP
+ if (crtl->uses_only_leaf_regs)
+ {
+ int leaf_reg = LEAF_REG_REMAP (regno);
+ if (leaf_reg != -1)
+ regno = (unsigned) leaf_reg;
+ }
+#endif
+ regno = DWARF_FRAME_REGNUM (regno);
if (!optimize && fde
&& (fde->drap_reg == regno || fde->vdrap_reg == regno))
@@ -20627,6 +20637,14 @@ dwarf2out_set_name (tree decl, tree name)
add_name_attribute (die, dname);
}
+/* True if before or during processing of the first function being emitted. */
+static bool in_first_function_p = true;
+/* True if loc_note during dwarf2out_var_location call might still be
+ before first real instruction at address equal to .Ltext0. */
+static bool maybe_at_text_label_p = true;
+/* One above highest N where .LVLN label might be equal to .Ltext0 label. */
+static unsigned int first_loclabel_num_not_at_text_label;
+
/* Called by the final INSN scan whenever we see a var location. We
use it to drop labels in the right places, and throw the location in
our lookup table. */
@@ -20734,6 +20752,45 @@ dwarf2out_var_location (rtx loc_note)
ASM_OUTPUT_DEBUG_LABEL (asm_out_file, "LVL", loclabel_num);
loclabel_num++;
last_label = ggc_strdup (loclabel);
+ /* See if loclabel might be equal to .Ltext0. If yes,
+ bump first_loclabel_num_not_at_text_label. */
+ if (!have_multiple_function_sections
+ && in_first_function_p
+ && maybe_at_text_label_p)
+ {
+ static rtx last_start;
+ rtx insn;
+ for (insn = loc_note; insn; insn = previous_insn (insn))
+ if (insn == last_start)
+ break;
+ else if (!NONDEBUG_INSN_P (insn))
+ continue;
+ else
+ {
+ rtx body = PATTERN (insn);
+ if (GET_CODE (body) == USE || GET_CODE (body) == CLOBBER)
+ continue;
+ /* Inline asm could occupy zero bytes. */
+ else if (GET_CODE (body) == ASM_INPUT
+ || asm_noperands (body) >= 0)
+ continue;
+#ifdef HAVE_attr_length
+ else if (get_attr_min_length (insn) == 0)
+ continue;
+#endif
+ else
+ {
+ /* Assume insn has non-zero length. */
+ maybe_at_text_label_p = false;
+ break;
+ }
+ }
+ if (maybe_at_text_label_p)
+ {
+ last_start = loc_note;
+ first_loclabel_num_not_at_text_label = loclabel_num;
+ }
+ }
}
if (!var_loc_p)
@@ -20903,6 +20960,59 @@ dwarf2out_begin_function (tree fun)
set_cur_line_info_table (sec);
}
+/* Helper function of dwarf2out_end_function, called only after emitting
+ the very first function into assembly. Check if some .debug_loc range
+ might end with a .LVL* label that could be equal to .Ltext0.
+ In that case we must force using absolute addresses in .debug_loc ranges,
+ because this range could be .LVLN-.Ltext0 .. .LVLM-.Ltext0 for
+ .LVLN == .LVLM == .Ltext0, thus 0 .. 0, which is a .debug_loc
+ list terminator.
+ Set have_multiple_function_sections to true in that case and
+ terminate htab traversal. */
+
+static int
+find_empty_loc_ranges_at_text_label (void **slot, void *)
+{
+ var_loc_list *entry;
+ struct var_loc_node *node;
+
+ entry = (var_loc_list *) *slot;
+ node = entry->first;
+ if (node && node->next && node->next->label)
+ {
+ unsigned int i;
+ const char *label = node->next->label;
+ char loclabel[MAX_ARTIFICIAL_LABEL_BYTES];
+
+ for (i = 0; i < first_loclabel_num_not_at_text_label; i++)
+ {
+ ASM_GENERATE_INTERNAL_LABEL (loclabel, "LVL", i);
+ if (strcmp (label, loclabel) == 0)
+ {
+ have_multiple_function_sections = true;
+ return 0;
+ }
+ }
+ }
+ return 1;
+}
+
+/* Hook called after emitting a function into assembly.
+ This does something only for the very first function emitted. */
+
+static void
+dwarf2out_end_function (unsigned int)
+{
+ if (in_first_function_p
+ && !have_multiple_function_sections
+ && first_loclabel_num_not_at_text_label
+ && decl_loc_table)
+ htab_traverse (decl_loc_table, find_empty_loc_ranges_at_text_label,
+ NULL);
+ in_first_function_p = false;
+ maybe_at_text_label_p = false;
+}
+
/* Add OPCODE+VAL as an entry at the end of the opcode array in TABLE. */
static void
diff --git a/gcc/fixed-value.c b/gcc/fixed-value.c
index 2e97a492619..18ce47e3657 100644
--- a/gcc/fixed-value.c
+++ b/gcc/fixed-value.c
@@ -83,7 +83,7 @@ check_real_for_fixed_mode (REAL_VALUE_TYPE *real_value, enum machine_mode mode)
/* Construct a CONST_FIXED from a bit payload and machine mode MODE.
- The bits in PAYLOAD are used verbatim. */
+ The bits in PAYLOAD are sign-extended/zero-extended according to MODE. */
FIXED_VALUE_TYPE
fixed_from_double_int (double_int payload, enum machine_mode mode)
@@ -92,7 +92,13 @@ fixed_from_double_int (double_int payload, enum machine_mode mode)
gcc_assert (GET_MODE_BITSIZE (mode) <= HOST_BITS_PER_DOUBLE_INT);
- value.data = payload;
+ if (SIGNED_SCALAR_FIXED_POINT_MODE_P (mode))
+ value.data = payload.sext (1 + GET_MODE_IBIT (mode) + GET_MODE_FBIT (mode));
+ else if (UNSIGNED_SCALAR_FIXED_POINT_MODE_P (mode))
+ value.data = payload.zext (GET_MODE_IBIT (mode) + GET_MODE_FBIT (mode));
+ else
+ gcc_unreachable();
+
value.mode = mode;
return value;
diff --git a/gcc/fixed-value.h b/gcc/fixed-value.h
index 5ffe67ca87a..f59466ad4f1 100644
--- a/gcc/fixed-value.h
+++ b/gcc/fixed-value.h
@@ -50,12 +50,12 @@ extern FIXED_VALUE_TYPE fconst1[MAX_FCONST1];
extern rtx const_fixed_from_fixed_value (FIXED_VALUE_TYPE, enum machine_mode);
/* Construct a FIXED_VALUE from a bit payload and machine mode MODE.
- The bits in PAYLOAD are used verbatim. */
+ The bits in PAYLOAD are sign-extended/zero-extended according to MODE. */
extern FIXED_VALUE_TYPE fixed_from_double_int (double_int,
enum machine_mode);
/* Return a CONST_FIXED from a bit payload and machine mode MODE.
- The bits in PAYLOAD are used verbatim. */
+ The bits in PAYLOAD are sign-extended/zero-extended according to MODE. */
static inline rtx
const_fixed_from_double_int (double_int payload,
enum machine_mode mode)
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 93f38cbbf21..5acb4ad0059 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -5695,6 +5695,11 @@ extract_muldiv_1 (tree t, tree c, enum tree_code code, tree wide_type,
break;
/* FALLTHROUGH */
case NEGATE_EXPR:
+ /* For division and modulus, type can't be unsigned, as e.g.
+ (-(x / 2U)) / 2U isn't equal to -((x / 2U) / 2U) for x >= 2.
+ For signed types, even with wrapping overflow, this is fine. */
+ if (code != MULT_EXPR && TYPE_UNSIGNED (type))
+ break;
if ((t1 = extract_muldiv (op0, c, code, wide_type, strict_overflow_p))
!= 0)
return fold_build1 (tcode, ctype, fold_convert (ctype, t1));
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index c22d3d9908f..a0a0e022ad4 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,19 @@
+2013-02-07 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/54339
+ * gfortran.texi (Standards): Mention TS29113.
+ (Varying Length Character): Mention deferred-length
+ strings.
+ (Fortran 2003 Status): Add unlimited polymorphic.
+ (TS 29113 Status): Add TYPE(*) and DIMENSION(..).
+ (C Interop): Update the section about TS29113.
+
+2013-02-06 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/55789
+ * trans-array.c (trans_array_constructor): Remove condition
+ 'dynamic' = true if the loop ubound is a VAR_DECL.
+
2013-02-04 Paul Thomas <pault@gcc.gnu.org>
PR fortran/56008
diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi
index eff12d73dc0..2dccb16d81a 100644
--- a/gcc/fortran/gfortran.texi
+++ b/gcc/fortran/gfortran.texi
@@ -221,7 +221,7 @@ compiler.
The GNU Fortran compiler front end was
designed initially as a free replacement for,
-or alternative to, the unix @command{f95} command;
+or alternative to, the Unix @command{f95} command;
@command{gfortran} is the command you will use to invoke the compiler.
@menu
@@ -522,12 +522,13 @@ ISO/IEC 1539:1997 (Fortran 95). As such, it can also compile essentially all
standard-compliant Fortran 90 and Fortran 77 programs. It also supports
the ISO/IEC TR-15581 enhancements to allocatable arrays.
-In the future, the GNU Fortran compiler will also support ISO/IEC
-1539-1:2004 (Fortran 2003), ISO/IEC 1539-1:2010 (Fortran 2008) and
-future Fortran standards. Partial support of the Fortran 2003 and
-Fortran 2008 standard is already provided; the current status of the
-support is reported in the @ref{Fortran 2003 status} and
-@ref{Fortran 2008 status} sections of the documentation.
+GNU Fortran also have a partial support for ISO/IEC 1539-1:2004 (Fortran
+2003), ISO/IEC 1539-1:2010 (Fortran 2008), the Technical Specification
+@code{Further Interoperability of Fortran with C} (ISO/IEC TS 29113:2012).
+Full support of those standards and future Fortran standards is planned.
+The current status of the support is can be found in the
+@ref{Fortran 2003 status}, @ref{Fortran 2008 status} and
+@ref{TS 29113 status} sections of the documentation.
Additionally, the GNU Fortran compilers supports the OpenMP specification
(version 3.1, @url{http://openmp.org/@/wp/@/openmp-specifications/}).
@@ -545,6 +546,10 @@ for them, which work with GNU Fortran. They can be found at
@uref{http://www.fortran.com/@/iso_varying_string.f95} and at
@uref{ftp://ftp.nag.co.uk/@/sc22wg5/@/ISO_VARYING_STRING/}.
+Deferred-length character strings of Fortran 2003 supports part of
+the features of @code{ISO_VARYING_STRING} and should be considered as
+replacement. (Namely, allocatable or pointers of the type
+@code{character(len=:)}.)
@c =====================================================================
@@ -807,8 +812,8 @@ operators bound to a type.
override type-bound procedures or to have deferred binding.
@item Polymorphic entities (``@code{CLASS}'') for derived types -- including
-@code{SAME_TYPE_AS}, @code{EXTENDS_TYPE_OF} and @code{SELECT TYPE}.
-Note that unlimited polymorphism is currently not supported.
+@code{SAME_TYPE_AS}, @code{EXTENDS_TYPE_OF} and @code{SELECT TYPE} for
+scalars and arrays, including unlimited polymorphism.
@item Generic interface names, which have the same name as derived types,
are now supported. This allows one to write constructor functions. Note
@@ -1079,16 +1084,23 @@ The @uref{http://gcc.gnu.org/wiki/TS29113Status, wiki} has some information
about the current TS 29113 implementation status. In particular, the
following is implemented.
+See also @ref{Further Interoperability of Fortran with C}.
+
@itemize
@item The @option{-std=f2008ts} option.
@item The @code{OPTIONAL} attribute is allowed for dummy arguments
of @code{BIND(C) procedures.}
-@item The RANK intrinsic is supported.
+@item The @code{RANK} intrinsic is supported.
@item GNU Fortran's implementation for variables with @code{ASYNCHRONOUS}
attribute is compatible with TS 29113.
+
+@item Assumed types (@code{TYPE(*)}.
+
+@item Assumed-rank (@code{DIMENSION(..)}). However, the array descriptor
+of the TS is not yet supported.
@end itemize
@@ -2264,7 +2276,7 @@ Derived types with the C binding attribute shall not have the @code{sequence}
attribute, type parameters, the @code{extends} attribute, nor type-bound
procedures. Every component must be of interoperable type and kind and may not
have the @code{pointer} or @code{allocatable} attribute. The names of the
-variables are irrelevant for interoperability.
+components are irrelevant for interoperability.
As there exist no direct Fortran equivalents, neither unions nor structs
with bit field or variable-length array members are interoperable.
@@ -2304,11 +2316,14 @@ be compatible with C. The dummy argument declaration is relatively
straightforward. However, one needs to be careful because C uses
call-by-value by default while Fortran behaves usually similar to
call-by-reference. Furthermore, strings and pointers are handled
-differently. Note that only explicit size and assumed-size arrays are
-supported but not assumed-shape or allocatable arrays.
+differently. Note that in Fortran 2003 and 2008 only explicit size
+and assumed-size arrays are supported but not assumed-shape or
+deferred-shape (i.e. allocatable or pointer) arrays. However, those
+are allowed since the Technical Specification 29113, see
+@ref{Further Interoperability of Fortran with C}
To pass a variable by value, use the @code{VALUE} attribute.
-Thus the following C prototype
+Thus, the following C prototype
@smallexample
@code{int func(int i, int *j)}
@@ -2401,6 +2416,11 @@ The intrinsic procedures are described in @ref{Intrinsic Procedures}.
C pointers are represented in Fortran via the special opaque derived type
@code{type(c_ptr)} (with private components). Thus one needs to
use intrinsic conversion procedures to convert from or to C pointers.
+
+For some applications, using an assumed type (@code{TYPE(*)}) can be an
+alternative to a C pointer; see
+@ref{Further Interoperability of Fortran with C}.
+
For example,
@smallexample
@@ -2546,17 +2566,76 @@ END MODULE m
@node Further Interoperability of Fortran with C
@subsection Further Interoperability of Fortran with C
-Assumed-shape and allocatable arrays are passed using an array descriptor
-(dope vector). The internal structure of the array descriptor used
-by GNU Fortran is not yet documented and will change. There will also be
-a Technical Specification (TS 29113) which standardizes an interoperable
-array descriptor. Until then, you can use the Chasm Language
+The Technical Specification ISO/IEC TS 29113:2012 on further
+interoperability of Fortran with C extends the interoperability support
+of Fortran 2003 and Fortran 2008. Besides removing some restrictions
+and constraints, it adds assumed-type (@code{TYPE(*)}) and assumed-rank
+(@code{dimension}) variables and allows for interoperability of
+assumed-shape, assumed-rank and deferred-shape arrays, including
+allocatables and pointers.
+
+Note: Currently, GNU Fortran does not support the array descriptor
+(dope vector) as specified in the Technical Specification, but uses
+an array descriptor with different fields. The Chasm Language
Interoperability Tools, @url{http://chasm-interop.sourceforge.net/},
-which provide an interface to GNU Fortran's array descriptor.
+provide an interface to GNU Fortran's array descriptor.
+
+The Technical Specification adds the following new features, which
+are supported by GNU Fortran:
-GNU Fortran already supports the C-interoperable @code{OPTIONAL}
-attribute; for absent arguments, a @code{NULL} pointer is passed.
+@itemize @bullet
+@item The @code{ASYNCHRONOUS} attribute has been clarified and
+extended to allow its use with asynchronous communication in
+user-provided libraries such as in implementations of the
+Message Passing Interface specification.
+
+@item Many constraints have been relaxed, in particular for
+the @code{C_LOC} and @code{C_F_POINTER} intrinsics.
+
+@item The @code{OPTIONAL} attribute is now allowed for dummy
+arguments; an absent argument matches a @code{NULL} pointer.
+
+@item Assumed types (@code{TYPE(*)}) have been added, which may
+only be used for dummy arguments. They are unlimited polymorphic
+but contrary to @code{CLASS(*)} they do not contain any type
+information, similar to C's @code{void *} pointers. Expressions
+of any type and kind can be passed; thus, it can be used as
+replacement for @code{TYPE(C_PTR)}, avoiding the use of
+@code{C_LOC} in the caller.
+
+Note, however, that @code{TYPE(*)} only accepts scalar arguments,
+unless the @code{DIMENSION} is explicitly specified. As
+@code{DIMENSION(*)} only supports array (including array elements) but
+no scalars, it is not a full replacement for @code{C_LOC}. On the
+other hand, assumed-type assumed-rank dummy arguments
+(@code{TYPE(*), DIMENSION(..)}) allow for both scalars and arrays, but
+require special code on the callee side to handle the array descriptor.
+
+@item Assumed-shape arrays (@code{DIMENSION(..)}) as dummy argument
+allow that scalars and arrays of any rank can be passed as actual
+argument. As the Technical Specification does not provide for direct
+means to operate with them, they have to be used either from the C side
+or be converted using @code{C_LOC} and @code{C_F_POINTER} to scalars
+or arrays of a specific rank. The rank can be determined using the
+@code{RANK} intrinisic.
+@end itemize
+
+
+Currently unimplemented:
+
+@itemize @bullet
+
+@item GNU Fortran always uses an array descriptor, which does not
+match the one of the Technical Specification. The
+@code{ISO_Fortran_binding.h} header file and the C functions it
+specifies are not available.
+
+@item Using assumed-shape, assumed-rank and deferred-shape arrays in
+@code{BIND(C)} procedures is not fully supported. In particular,
+C interoperable strings of other length than one are not supported
+as this requires the new array descriptor.
+@end itemize
@node GNU Fortran Compiler Directives
@@ -3100,7 +3179,7 @@ Environment variable for filename for * IO-unit.
Environment variable for temporary file directory.
@item
-Environment variable forcing standard output to be line buffered (unix).
+Environment variable forcing standard output to be line buffered (Unix).
@end itemize
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c
index 4553ddc5b53..ee2954e5bca 100644
--- a/gcc/fortran/trans-array.c
+++ b/gcc/fortran/trans-array.c
@@ -2307,9 +2307,6 @@ trans_array_constructor (gfc_ss * ss, locus * where)
}
}
- if (TREE_CODE (*loop_ubound0) == VAR_DECL)
- dynamic = true;
-
gfc_trans_create_temp_array (&outer_loop->pre, &outer_loop->post, ss, type,
NULL_TREE, dynamic, true, false, where);
diff --git a/gcc/fwprop.c b/gcc/fwprop.c
index 6a82deabfd1..17cc62aa2e4 100644
--- a/gcc/fwprop.c
+++ b/gcc/fwprop.c
@@ -1316,10 +1316,16 @@ forward_propagate_and_simplify (df_ref use, rtx def_insn, rtx def_set)
separately try plugging the definition in the note and simplifying.
And only install a REQ_EQUAL note when the destination is a REG
that isn't mentioned in USE_SET, as the note would be invalid
- otherwise. */
- set_reg_equal = (note == NULL_RTX && REG_P (SET_DEST (use_set))
- && ! reg_mentioned_p (SET_DEST (use_set),
- SET_SRC (use_set)));
+ otherwise. We also don't want to install a note if we are merely
+ propagating a pseudo since verifying that this pseudo isn't dead
+ is a pain; moreover such a note won't help anything. */
+ set_reg_equal = (note == NULL_RTX
+ && REG_P (SET_DEST (use_set))
+ && !REG_P (src)
+ && !(GET_CODE (src) == SUBREG
+ && REG_P (SUBREG_REG (src)))
+ && !reg_mentioned_p (SET_DEST (use_set),
+ SET_SRC (use_set)));
}
if (GET_MODE (*loc) == VOIDmode)
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 29735be1b9b..5022789609c 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -564,12 +564,25 @@ proper position among the other output files. */
#endif
#ifndef LIBTSAN_SPEC
-#ifdef HAVE_LD_STATIC_DYNAMIC
+#ifdef STATIC_LIBTSAN_LIBS
+#define ADD_STATIC_LIBTSAN_LIBS \
+ " %{static-libtsan:" STATIC_LIBTSAN_LIBS "}"
+#else
+#define ADD_STATIC_LIBTSAN_LIBS
+#endif
+#ifdef LIBTSAN_EARLY_SPEC
+#define LIBTSAN_SPEC ADD_STATIC_LIBTSAN_LIBS
+#elif defined(HAVE_LD_STATIC_DYNAMIC)
#define LIBTSAN_SPEC "%{static-libtsan:" LD_STATIC_OPTION \
- "} -ltsan %{static-libtsan:" LD_DYNAMIC_OPTION "}"
+ "} -ltsan %{static-libtsan:" LD_DYNAMIC_OPTION "}" \
+ ADD_STATIC_LIBTSAN_LIBS
#else
-#define LIBTSAN_SPEC "-ltsan"
+#define LIBTSAN_SPEC "-ltsan" ADD_STATIC_LIBTSAN_LIBS
+#endif
#endif
+
+#ifndef LIBTSAN_EARLY_SPEC
+#define LIBTSAN_EARLY_SPEC ""
#endif
/* config.h can define LIBGCC_SPEC to override how and when libgcc.a is
@@ -691,6 +704,21 @@ proper position among the other output files. */
%e-fuse-linker-plugin is not supported in this configuration}"
#endif
+/* Linker command line options for -fsanitize= early on the command line. */
+#ifndef SANITIZER_EARLY_SPEC
+#define SANITIZER_EARLY_SPEC "\
+%{!nostdlib:%{!nodefaultlibs:%{fsanitize=address:" LIBASAN_EARLY_SPEC "} \
+ %{fsanitize=thread:" LIBTSAN_EARLY_SPEC "}}}"
+#endif
+
+/* Linker command line options for -fsanitize= late on the command line. */
+#ifndef SANITIZER_SPEC
+#define SANITIZER_SPEC "\
+%{!nostdlib:%{!nodefaultlibs:%{fsanitize=address:" LIBASAN_SPEC "\
+ %{static:%ecannot specify -static with -fsanitize=address}}\
+ %{fsanitize=thread:" LIBTSAN_SPEC "\
+ %{!pie:%{!shared:%e-fsanitize=thread linking must be done with -pie or -shared}}}}}"
+#endif
/* -u* was put back because both BSD and SysV seem to support it. */
/* %{static:} simply prevents an error message if the target machine
@@ -706,19 +734,16 @@ proper position among the other output files. */
%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\
%(linker) " \
LINK_PLUGIN_SPEC \
- "%{flto|flto=*:%<fcompare-debug*} \
+ "%{flto|flto=*:%<fcompare-debug*} \
%{flto} %{flto=*} %l " LINK_PIE_SPEC \
"%{fuse-ld=*:-fuse-ld=%*}\
%X %{o*} %{e*} %{N} %{n} %{r}\
%{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}}\
- %{static:} %{L*} %(mfwrap) %(link_libgcc) \
- %{fsanitize=address:" LIBASAN_EARLY_SPEC "} %o\
+ %{static:} %{L*} %(mfwrap) %(link_libgcc) " SANITIZER_EARLY_SPEC " %o\
%{fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)}\
%{fgnu-tm:%:include(libitm.spec)%(link_itm)}\
%(mflib) " STACK_SPLIT_SPEC "\
- %{fprofile-arcs|fprofile-generate*|coverage:-lgcov}\
- %{fsanitize=address:" LIBASAN_SPEC "%{static:%ecannot specify -static with -fsanitize=address}}\
- %{fsanitize=thread:" LIBTSAN_SPEC "}\
+ %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} " SANITIZER_SPEC " \
%{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\
%{!nostdlib:%{!nostartfiles:%E}} %{T*} }}}}}}"
#endif
diff --git a/gcc/ggc-page.c b/gcc/ggc-page.c
index 32768b2fc86..5b18468439d 100644
--- a/gcc/ggc-page.c
+++ b/gcc/ggc-page.c
@@ -2170,31 +2170,31 @@ ggc_print_statistics (void)
{
fprintf (stderr, "\nTotal allocations and overheads during the compilation process\n");
- fprintf (stderr, "Total Overhead: %10lld\n",
+ fprintf (stderr, "Total Overhead: %10" HOST_LONG_LONG_FORMAT "d\n",
G.stats.total_overhead);
- fprintf (stderr, "Total Allocated: %10lld\n",
+ fprintf (stderr, "Total Allocated: %10" HOST_LONG_LONG_FORMAT "d\n",
G.stats.total_allocated);
- fprintf (stderr, "Total Overhead under 32B: %10lld\n",
+ fprintf (stderr, "Total Overhead under 32B: %10" HOST_LONG_LONG_FORMAT "d\n",
G.stats.total_overhead_under32);
- fprintf (stderr, "Total Allocated under 32B: %10lld\n",
+ fprintf (stderr, "Total Allocated under 32B: %10" HOST_LONG_LONG_FORMAT "d\n",
G.stats.total_allocated_under32);
- fprintf (stderr, "Total Overhead under 64B: %10lld\n",
+ fprintf (stderr, "Total Overhead under 64B: %10" HOST_LONG_LONG_FORMAT "d\n",
G.stats.total_overhead_under64);
- fprintf (stderr, "Total Allocated under 64B: %10lld\n",
+ fprintf (stderr, "Total Allocated under 64B: %10" HOST_LONG_LONG_FORMAT "d\n",
G.stats.total_allocated_under64);
- fprintf (stderr, "Total Overhead under 128B: %10lld\n",
+ fprintf (stderr, "Total Overhead under 128B: %10" HOST_LONG_LONG_FORMAT "d\n",
G.stats.total_overhead_under128);
- fprintf (stderr, "Total Allocated under 128B: %10lld\n",
+ fprintf (stderr, "Total Allocated under 128B: %10" HOST_LONG_LONG_FORMAT "d\n",
G.stats.total_allocated_under128);
for (i = 0; i < NUM_ORDERS; i++)
if (G.stats.total_allocated_per_order[i])
{
- fprintf (stderr, "Total Overhead page size %7lu: %10lld\n",
+ fprintf (stderr, "Total Overhead page size %7lu: %10" HOST_LONG_LONG_FORMAT "d\n",
(unsigned long) OBJECT_SIZE (i),
G.stats.total_overhead_per_order[i]);
- fprintf (stderr, "Total Allocated page size %7lu: %10lld\n",
+ fprintf (stderr, "Total Allocated page size %7lu: %10" HOST_LONG_LONG_FORMAT "d\n",
(unsigned long) OBJECT_SIZE (i),
G.stats.total_allocated_per_order[i]);
}
diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c
index 3824a2fa938..07ba90fa19b 100644
--- a/gcc/ipa-pure-const.c
+++ b/gcc/ipa-pure-const.c
@@ -779,8 +779,10 @@ end:
{
/* Preheaders are needed for SCEV to work.
Simple latches and recorded exits improve chances that loop will
- proved to be finite in testcases such as in loop-15.c and loop-24.c */
- loop_optimizer_init (LOOPS_NORMAL
+ proved to be finite in testcases such as in loop-15.c
+ and loop-24.c */
+ loop_optimizer_init (LOOPS_HAVE_PREHEADERS
+ | LOOPS_HAVE_SIMPLE_LATCHES
| LOOPS_HAVE_RECORDED_EXITS);
if (dump_file && (dump_flags & TDF_DETAILS))
flow_loops_dump (dump_file, NULL, 0);
@@ -799,7 +801,8 @@ end:
if (!finite_loop_p (loop))
{
if (dump_file)
- fprintf (dump_file, " can not prove finiteness of loop %i\n", loop->num);
+ fprintf (dump_file, " can not prove finiteness of "
+ "loop %i\n", loop->num);
l->looping =true;
FOR_EACH_LOOP_BREAK (li);
}
diff --git a/gcc/ira-build.c b/gcc/ira-build.c
index da19b590141..dd66091a335 100644
--- a/gcc/ira-build.c
+++ b/gcc/ira-build.c
@@ -149,10 +149,10 @@ create_loop_tree_nodes (void)
}
ira_loop_nodes = ((struct ira_loop_tree_node *)
ira_allocate (sizeof (struct ira_loop_tree_node)
- * vec_safe_length (ira_loops.larray)));
- FOR_EACH_VEC_SAFE_ELT (ira_loops.larray, i, loop)
+ * number_of_loops ()));
+ FOR_EACH_VEC_SAFE_ELT (get_loops (), i, loop)
{
- if (loop != ira_loops.tree_root)
+ if (loop_outer (loop) != NULL)
{
ira_loop_nodes[i].regno_allocno_map = NULL;
skip_p = false;
@@ -189,7 +189,7 @@ more_one_region_p (void)
loop_p loop;
if (current_loops != NULL)
- FOR_EACH_VEC_SAFE_ELT (ira_loops.larray, i, loop)
+ FOR_EACH_VEC_SAFE_ELT (get_loops (), i, loop)
if (ira_loop_nodes[i].regno_allocno_map != NULL
&& ira_loop_tree_root != &ira_loop_nodes[i])
return true;
@@ -222,7 +222,7 @@ finish_loop_tree_nodes (void)
if (current_loops == NULL)
finish_loop_tree_node (&ira_loop_nodes[0]);
else
- FOR_EACH_VEC_SAFE_ELT (ira_loops.larray, i, loop)
+ FOR_EACH_VEC_SAFE_ELT (get_loops (), i, loop)
finish_loop_tree_node (&ira_loop_nodes[i]);
ira_free (ira_loop_nodes);
for (i = 0; i < (unsigned int) last_basic_block_before_change; i++)
@@ -378,7 +378,7 @@ rebuild_regno_allocno_maps (void)
ira_assert (current_loops != NULL);
max_regno = max_reg_num ();
- FOR_EACH_VEC_SAFE_ELT (ira_loops.larray, l, loop)
+ FOR_EACH_VEC_SAFE_ELT (get_loops (), l, loop)
if (ira_loop_nodes[l].regno_allocno_map != NULL)
{
ira_free (ira_loop_nodes[l].regno_allocno_map);
@@ -2021,8 +2021,8 @@ mark_loops_for_removal (void)
ira_assert (current_loops != NULL);
sorted_loops
= (ira_loop_tree_node_t *) ira_allocate (sizeof (ira_loop_tree_node_t)
- * vec_safe_length (ira_loops.larray));
- for (n = i = 0; vec_safe_iterate (ira_loops.larray, i, &loop); i++)
+ * number_of_loops ());
+ for (n = i = 0; vec_safe_iterate (get_loops (), i, &loop); i++)
if (ira_loop_nodes[i].regno_allocno_map != NULL)
{
if (ira_loop_nodes[i].parent == NULL)
@@ -2066,7 +2066,7 @@ mark_all_loops_for_removal (void)
loop_p loop;
ira_assert (current_loops != NULL);
- FOR_EACH_VEC_SAFE_ELT (ira_loops.larray, i, loop)
+ FOR_EACH_VEC_SAFE_ELT (get_loops (), i, loop)
if (ira_loop_nodes[i].regno_allocno_map != NULL)
{
if (ira_loop_nodes[i].parent == NULL)
@@ -2376,8 +2376,8 @@ remove_unnecessary_regions (bool all_p)
mark_all_loops_for_removal ();
else
mark_loops_for_removal ();
- children_vec.create(last_basic_block + vec_safe_length(ira_loops.larray));
- removed_loop_vec.create(last_basic_block + vec_safe_length(ira_loops.larray));
+ children_vec.create(last_basic_block + number_of_loops ());
+ removed_loop_vec.create(last_basic_block + number_of_loops ());
remove_uneccesary_loop_nodes_from_loop_tree (ira_loop_tree_root);
children_vec.release ();
if (all_p)
@@ -3258,7 +3258,7 @@ ira_build (void)
}
}
fprintf (ira_dump_file, " regions=%d, blocks=%d, points=%d\n",
- current_loops == NULL ? 1 : vec_safe_length (ira_loops.larray),
+ current_loops == NULL ? 1 : number_of_loops (),
n_basic_blocks, ira_max_point);
fprintf (ira_dump_file,
" allocnos=%d (big %d), copies=%d, conflicts=%d, ranges=%d\n",
diff --git a/gcc/ira-emit.c b/gcc/ira-emit.c
index 661336050fc..c18391fc3e5 100644
--- a/gcc/ira-emit.c
+++ b/gcc/ira-emit.c
@@ -434,7 +434,7 @@ setup_entered_from_non_parent_p (void)
loop_p loop;
ira_assert (current_loops != NULL);
- FOR_EACH_VEC_SAFE_ELT (ira_loops.larray, i, loop)
+ FOR_EACH_VEC_SAFE_ELT (get_loops (), i, loop)
if (ira_loop_nodes[i].regno_allocno_map != NULL)
ira_loop_nodes[i].entered_from_non_parent_p
= entered_from_non_parent_p (&ira_loop_nodes[i]);
diff --git a/gcc/ira-int.h b/gcc/ira-int.h
index df64d3f12c0..096f33048e3 100644
--- a/gcc/ira-int.h
+++ b/gcc/ira-int.h
@@ -47,9 +47,6 @@ along with GCC; see the file COPYING3. If not see
? REG_FREQ_MAX : (freq * REG_FREQ_MAX / BB_FREQ_MAX) \
? (freq * REG_FREQ_MAX / BB_FREQ_MAX) : 1)
-/* All natural loops. */
-extern struct loops ira_loops;
-
/* A modified value of flag `-fira-verbose' used internally. */
extern int internal_flag_ira_verbose;
diff --git a/gcc/ira.c b/gcc/ira.c
index 2da7747e41a..d3bd2bae4bf 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -4338,9 +4338,6 @@ allocate_initial_values (void)
function. */
bool ira_use_lra_p;
-/* All natural loops. */
-struct loops ira_loops;
-
/* True if we have allocno conflicts. It is false for non-optimized
mode or when the conflict table is too big. */
bool ira_conflicts_p;
@@ -4464,11 +4461,7 @@ ira (FILE *f)
ira_assert (current_loops == NULL);
if (flag_ira_region == IRA_REGION_ALL || flag_ira_region == IRA_REGION_MIXED)
- {
- flow_loops_find (&ira_loops);
- current_loops = &ira_loops;
- record_loop_exits ();
- }
+ loop_optimizer_init (AVOID_CFG_MODIFICATIONS | LOOPS_HAVE_RECORDED_EXITS);
if (internal_flag_ira_verbose > 0 && ira_dump_file != NULL)
fprintf (ira_dump_file, "Building IRA IR\n");
@@ -4526,11 +4519,10 @@ ira (FILE *f)
/* ??? Rebuild the loop tree, but why? Does the loop tree
change if new insns were generated? Can that be handled
by updating the loop tree incrementally? */
- release_recorded_exits ();
- flow_loops_free (&ira_loops);
- flow_loops_find (&ira_loops);
- current_loops = &ira_loops;
- record_loop_exits ();
+ loop_optimizer_finalize ();
+ free_dominance_info (CDI_DOMINATORS);
+ loop_optimizer_init (AVOID_CFG_MODIFICATIONS
+ | LOOPS_HAVE_RECORDED_EXITS);
if (! ira_use_lra_p)
{
@@ -4607,8 +4599,7 @@ do_reload (void)
{
if (current_loops != NULL)
{
- release_recorded_exits ();
- flow_loops_free (&ira_loops);
+ loop_optimizer_finalize ();
free_dominance_info (CDI_DOMINATORS);
}
FOR_ALL_BB (bb)
@@ -4657,8 +4648,7 @@ do_reload (void)
ira_destroy ();
if (current_loops != NULL)
{
- release_recorded_exits ();
- flow_loops_free (&ira_loops);
+ loop_optimizer_finalize ();
free_dominance_info (CDI_DOMINATORS);
}
FOR_ALL_BB (bb)
diff --git a/gcc/loop-init.c b/gcc/loop-init.c
index 7e33de0f7e4..d64c110c1b5 100644
--- a/gcc/loop-init.c
+++ b/gcc/loop-init.c
@@ -32,37 +32,11 @@ along with GCC; see the file COPYING3. If not see
#include "ggc.h"
-/* Initialize loop structures. This is used by the tree and RTL loop
- optimizers. FLAGS specify what properties to compute and/or ensure for
- loops. */
+/* Apply FLAGS to the loop state. */
-void
-loop_optimizer_init (unsigned flags)
+static void
+apply_loop_flags (unsigned flags)
{
- timevar_push (TV_LOOP_INIT);
- if (!current_loops)
- {
- struct loops *loops = ggc_alloc_cleared_loops ();
-
- gcc_assert (!(cfun->curr_properties & PROP_loops));
-
- /* Find the loops. */
-
- flow_loops_find (loops);
- current_loops = loops;
- }
- else
- {
- gcc_assert (cfun->curr_properties & PROP_loops);
-
- /* Ensure that the dominators are computed, like flow_loops_find does. */
- calculate_dominance_info (CDI_DOMINATORS);
-
-#ifdef ENABLE_CHECKING
- verify_loop_structure ();
-#endif
- }
-
if (flags & LOOPS_MAY_HAVE_MULTIPLE_LATCHES)
{
/* If the loops may have multiple latches, we cannot canonicalize
@@ -97,6 +71,38 @@ loop_optimizer_init (unsigned flags)
if (flags & LOOPS_HAVE_RECORDED_EXITS)
record_loop_exits ();
+}
+
+/* Initialize loop structures. This is used by the tree and RTL loop
+ optimizers. FLAGS specify what properties to compute and/or ensure for
+ loops. */
+
+void
+loop_optimizer_init (unsigned flags)
+{
+ timevar_push (TV_LOOP_INIT);
+
+ if (!current_loops)
+ {
+ gcc_assert (!(cfun->curr_properties & PROP_loops));
+
+ /* Find the loops. */
+ current_loops = flow_loops_find (NULL);
+ }
+ else
+ {
+ gcc_assert (cfun->curr_properties & PROP_loops);
+
+ /* Ensure that the dominators are computed, like flow_loops_find does. */
+ calculate_dominance_info (CDI_DOMINATORS);
+
+#ifdef ENABLE_CHECKING
+ verify_loop_structure ();
+#endif
+ }
+
+ /* Apply flags to loops. */
+ apply_loop_flags (flags);
/* Dump loops. */
flow_loops_dump (dump_file, NULL, 1);
@@ -157,6 +163,97 @@ loop_fini_done:
timevar_pop (TV_LOOP_FINI);
}
+/* The structure of loops might have changed. Some loops might get removed
+ (and their headers and latches were set to NULL), loop exists might get
+ removed (thus the loop nesting may be wrong), and some blocks and edges
+ were changed (so the information about bb --> loop mapping does not have
+ to be correct). But still for the remaining loops the header dominates
+ the latch, and loops did not get new subloops (new loops might possibly
+ get created, but we are not interested in them). Fix up the mess.
+
+ If CHANGED_BBS is not NULL, basic blocks whose loop has changed are
+ marked in it. */
+
+void
+fix_loop_structure (bitmap changed_bbs)
+{
+ basic_block bb;
+ int record_exits = 0;
+ loop_iterator li;
+ struct loop *loop;
+
+ timevar_push (TV_LOOP_INIT);
+
+ /* We need exact and fast dominance info to be available. */
+ gcc_assert (dom_info_state (CDI_DOMINATORS) == DOM_OK);
+
+ if (loops_state_satisfies_p (LOOPS_HAVE_RECORDED_EXITS))
+ {
+ release_recorded_exits ();
+ record_exits = LOOPS_HAVE_RECORDED_EXITS;
+ }
+
+ /* Remember the depth of the blocks in the loop hierarchy, so that we can
+ recognize blocks whose loop nesting relationship has changed. */
+ if (changed_bbs)
+ FOR_EACH_BB (bb)
+ bb->aux = (void *) (size_t) loop_depth (bb->loop_father);
+
+ /* Remove the dead loops from structures. We start from the innermost
+ loops, so that when we remove the loops, we know that the loops inside
+ are preserved, and do not waste time relinking loops that will be
+ removed later. */
+ FOR_EACH_LOOP (li, loop, LI_FROM_INNERMOST)
+ {
+ /* Detect the case that the loop is no longer present even though
+ it wasn't marked for removal.
+ ??? If we do that we can get away with not marking loops for
+ removal at all. And possibly avoid some spurious removals. */
+ if (loop->header
+ && bb_loop_header_p (loop->header))
+ continue;
+
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ fprintf (dump_file, "fix_loop_structure: removing loop %d\n",
+ loop->num);
+
+ while (loop->inner)
+ {
+ struct loop *ploop = loop->inner;
+ flow_loop_tree_node_remove (ploop);
+ flow_loop_tree_node_add (loop_outer (loop), ploop);
+ }
+
+ /* Remove the loop and free its data. */
+ delete_loop (loop);
+ }
+
+ /* Re-compute loop structure in-place. */
+ flow_loops_find (current_loops);
+
+ /* Mark the blocks whose loop has changed. */
+ if (changed_bbs)
+ {
+ FOR_EACH_BB (bb)
+ {
+ if ((void *) (size_t) loop_depth (bb->loop_father) != bb->aux)
+ bitmap_set_bit (changed_bbs, bb->index);
+
+ bb->aux = NULL;
+ }
+ }
+
+ loops_state_clear (LOOPS_NEED_FIXUP);
+
+ /* Apply flags to loops. */
+ apply_loop_flags (current_loops->state | record_exits);
+
+#ifdef ENABLE_CHECKING
+ verify_loop_structure ();
+#endif
+
+ timevar_pop (TV_LOOP_INIT);
+}
/* Gate for the RTL loop superpass. The actual passes are subpasses.
See passes.c for more on that. */
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
index cc288540fc2..af68c3aee4c 100644
--- a/gcc/lra-constraints.c
+++ b/gcc/lra-constraints.c
@@ -1895,7 +1895,22 @@ process_alt_operands (int only_alternative)
? in_hard_reg_set_p (this_alternative_set,
mode, hard_regno[nop])
: in_class_p (op, this_alternative, NULL))))
- losers++;
+ {
+ /* Strict_low_part requires to reload the register
+ not the sub-register. In this case we should
+ check that a final reload hard reg can hold the
+ value mode. */
+ if (curr_static_id->operand[nop].strict_low
+ && REG_P (op)
+ && hard_regno[nop] < 0
+ && GET_CODE (*curr_id->operand_loc[nop]) == SUBREG
+ && ira_class_hard_regs_num[this_alternative] > 0
+ && ! HARD_REGNO_MODE_OK (ira_class_hard_regs
+ [this_alternative][0],
+ GET_MODE (op)))
+ goto fail;
+ losers++;
+ }
if (operand_reg[nop] != NULL_RTX
/* Output operands and matched input operands are
not inherited. The following conditions do not
diff --git a/gcc/lto-streamer-in.c b/gcc/lto-streamer-in.c
index fe9dd22c24c..f3a08884b53 100644
--- a/gcc/lto-streamer-in.c
+++ b/gcc/lto-streamer-in.c
@@ -123,58 +123,48 @@ canon_file_name (const char *string)
}
-/* Clear the line info stored in DATA_IN. */
-
-static void
-clear_line_info (struct data_in *data_in)
-{
- if (data_in->current_file)
- linemap_add (line_table, LC_LEAVE, false, NULL, 0);
- data_in->current_file = NULL;
- data_in->current_line = 0;
- data_in->current_col = 0;
-}
-
-
/* Read a location bitpack from input block IB. */
location_t
lto_input_location (struct bitpack_d *bp, struct data_in *data_in)
{
+ static const char *current_file;
+ static int current_line;
+ static int current_col;
bool file_change, line_change, column_change;
unsigned len;
- bool prev_file = data_in->current_file != NULL;
+ bool prev_file = current_file != NULL;
if (bp_unpack_value (bp, 1))
return UNKNOWN_LOCATION;
file_change = bp_unpack_value (bp, 1);
+ line_change = bp_unpack_value (bp, 1);
+ column_change = bp_unpack_value (bp, 1);
+
if (file_change)
- data_in->current_file = canon_file_name
- (string_for_index (data_in,
- bp_unpack_var_len_unsigned (bp),
- &len));
+ current_file = canon_file_name
+ (string_for_index (data_in,
+ bp_unpack_var_len_unsigned (bp),
+ &len));
- line_change = bp_unpack_value (bp, 1);
if (line_change)
- data_in->current_line = bp_unpack_var_len_unsigned (bp);
+ current_line = bp_unpack_var_len_unsigned (bp);
- column_change = bp_unpack_value (bp, 1);
if (column_change)
- data_in->current_col = bp_unpack_var_len_unsigned (bp);
+ current_col = bp_unpack_var_len_unsigned (bp);
if (file_change)
{
if (prev_file)
linemap_add (line_table, LC_LEAVE, false, NULL, 0);
- linemap_add (line_table, LC_ENTER, false, data_in->current_file,
- data_in->current_line);
+ linemap_add (line_table, LC_ENTER, false, current_file, current_line);
}
else if (line_change)
- linemap_line_start (line_table, data_in->current_line, data_in->current_col);
+ linemap_line_start (line_table, current_line, current_col);
- return linemap_position_for_column (line_table, data_in->current_col);
+ return linemap_position_for_column (line_table, current_col);
}
@@ -806,7 +796,6 @@ input_function (tree fn_decl, struct data_in *data_in,
fn = DECL_STRUCT_FUNCTION (fn_decl);
tag = streamer_read_record_start (ib);
- clear_line_info (data_in);
gimple_register_cfg_hooks ();
lto_tag_check (tag, LTO_function);
@@ -987,7 +976,6 @@ lto_read_body (struct lto_file_decl_data *file_data, tree fn_decl,
pop_cfun ();
}
- clear_line_info (data_in);
lto_data_in_delete (data_in);
}
@@ -1137,7 +1125,6 @@ lto_input_toplevel_asms (struct lto_file_decl_data *file_data, int order_base)
symtab_order = node->order + 1;
}
- clear_line_info (data_in);
lto_data_in_delete (data_in);
lto_free_section_data (file_data, LTO_section_asm, NULL, data, len);
diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c
index f97f1e228ce..f8207c8e022 100644
--- a/gcc/lto-streamer-out.c
+++ b/gcc/lto-streamer-out.c
@@ -162,6 +162,9 @@ lto_output_location (struct output_block *ob, struct bitpack_d *bp,
xloc = expand_location (loc);
bp_pack_value (bp, ob->current_file != xloc.file, 1);
+ bp_pack_value (bp, ob->current_line != xloc.line, 1);
+ bp_pack_value (bp, ob->current_col != xloc.column, 1);
+
if (ob->current_file != xloc.file)
bp_pack_var_len_unsigned (bp,
streamer_string_index (ob, xloc.file,
@@ -169,12 +172,10 @@ lto_output_location (struct output_block *ob, struct bitpack_d *bp,
true));
ob->current_file = xloc.file;
- bp_pack_value (bp, ob->current_line != xloc.line, 1);
if (ob->current_line != xloc.line)
bp_pack_var_len_unsigned (bp, xloc.line);
ob->current_line = xloc.line;
- bp_pack_value (bp, ob->current_col != xloc.column, 1);
if (ob->current_col != xloc.column)
bp_pack_var_len_unsigned (bp, xloc.column);
ob->current_col = xloc.column;
diff --git a/gcc/lto-streamer.h b/gcc/lto-streamer.h
index 4e4a4e956e9..919e304e107 100644
--- a/gcc/lto-streamer.h
+++ b/gcc/lto-streamer.h
@@ -691,10 +691,6 @@ struct data_in
/* Number of unnamed labels. */
unsigned int num_unnamed_labels;
- const char *current_file;
- int current_line;
- int current_col;
-
/* Maps each reference number to the resolution done by the linker. */
vec<ld_plugin_symbol_resolution_t> globals_resolution;
diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog
index 2da6ae1d205..e3530da973e 100644
--- a/gcc/lto/ChangeLog
+++ b/gcc/lto/ChangeLog
@@ -1,3 +1,14 @@
+2013-02-08 Richard Biener <rguenther@suse.de>
+
+ PR lto/56231
+ * lto-lang.c (lto_init): Do not enter a dummy file.
+
+2013-02-07 Uros Bizjak <ubizjak@gmail.com>
+
+ PR bootstrap/56227
+ * lto.c (lto_resolution_ready): Use %wx instead of
+ HOST_WIDE_INT_PRINT_HEX_PURE in the argument to internal_error.
+
2013-02-04 Richard Guenther <rguenther@suse.de>
PR lto/56168
diff --git a/gcc/lto/lto-lang.c b/gcc/lto/lto-lang.c
index b2919ee1aee..87a756d5763 100644
--- a/gcc/lto/lto-lang.c
+++ b/gcc/lto/lto-lang.c
@@ -1156,9 +1156,6 @@ lto_init (void)
/* We need to generate LTO if running in WPA mode. */
flag_generate_lto = flag_wpa;
- /* Initialize libcpp line maps for gcc_assert to work. */
- linemap_add (line_table, LC_ENTER, 0, NULL, 0);
-
/* Create the basic integer types. */
build_common_tree_nodes (flag_signed_char, /*short_double=*/false);
diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c
index 6edf87a45b0..983fa03aa1c 100644
--- a/gcc/lto/lto.c
+++ b/gcc/lto/lto.c
@@ -2225,8 +2225,7 @@ lto_resolution_read (splay_tree file_ids, FILE *resolution, lto_file *file)
{
nd = lto_splay_tree_lookup (file_ids, id);
if (nd == NULL)
- internal_error ("resolution sub id " HOST_WIDE_INT_PRINT_HEX_PURE
- " not in object file", id);
+ internal_error ("resolution sub id %wx not in object file", id);
}
file_data = (struct lto_file_decl_data *)nd->value;
diff --git a/gcc/omp-low.c b/gcc/omp-low.c
index e09024af620..ef4ed5e98ac 100644
--- a/gcc/omp-low.c
+++ b/gcc/omp-low.c
@@ -757,12 +757,20 @@ use_pointer_for_field (tree decl, omp_context *shared_ctx)
if (TREE_ADDRESSABLE (decl))
return true;
+ /* lower_send_shared_vars only uses copy-in, but not copy-out
+ for these. */
+ if (TREE_READONLY (decl)
+ || ((TREE_CODE (decl) == RESULT_DECL
+ || TREE_CODE (decl) == PARM_DECL)
+ && DECL_BY_REFERENCE (decl)))
+ return false;
+
/* Disallow copy-in/out in nested parallel if
decl is shared in outer parallel, otherwise
each thread could store the shared variable
in its own copy-in location, making the
variable no longer really shared. */
- if (!TREE_READONLY (decl) && shared_ctx->is_nested)
+ if (shared_ctx->is_nested)
{
omp_context *up;
@@ -785,11 +793,10 @@ use_pointer_for_field (tree decl, omp_context *shared_ctx)
}
}
- /* For tasks avoid using copy-in/out, unless they are readonly
- (in which case just copy-in is used). As tasks can be
+ /* For tasks avoid using copy-in/out. As tasks can be
deferred or executed in different thread, when GOMP_task
returns, the task hasn't necessarily terminated. */
- if (!TREE_READONLY (decl) && is_task_ctx (shared_ctx))
+ if (is_task_ctx (shared_ctx))
{
tree outer;
maybe_mark_addressable_and_ret:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 58f1643314b..ae21e6b9cd0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,6 +1,119 @@
+2013-02-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56250
+ * gcc.c-torture/execute/pr56250.c: New test.
+
+2013-02-08 Georg-Johann Lay <avr@gjlay.de>
+
+ PR tree-optimization/56064
+ * gcc.dg/fixed-point/view-convert-2.c: New test.
+
+2013-02-08 Michael Matz <matz@suse.de>
+
+ PR tree-optimization/52448
+ * gcc.dg/pr52448.c: New test.
+
+2013-02-08 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/56181
+ * gcc.dg/torture/pr56181.c: New testcase.
+
+2013-02-08 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/54222
+ * gcc.target/avr/torture/builtins-4-roundfx.c: New test.
+ * gcc.target/avr/torture/builtins-5-countlsfx.c: New test.
+
+2013-02-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/56241
+ * g++.dg/parse/crash61.C: New test.
+
+ PR c++/56239
+ * g++.dg/parse/pr56239.C: New test.
+
+ PR c++/56237
+ * g++.dg/abi/mangle61.C: New test.
+
+2013-02-07 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/56225
+ * gcc.target/i386/pr56225.c: New test.
+
+2013-02-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/56154
+ * gcc.dg/guality/pr56154-1.c: New test.
+ * gcc.dg/guality/pr56154-2.c: New test.
+ * gcc.dg/guality/pr56154-3.c: New test.
+ * gcc.dg/guality/pr56154-4.c: New test.
+ * gcc.dg/guality/pr56154-aux.c: New file.
+
+ PR tree-optimization/55789
+ * g++.dg/ipa/inline-3.C: Use cleanup-ipa-dump instead of
+ cleanup-tree-dump.
+ * gcc.dg/tree-ssa/inline-3.c: Add
+ --param max-early-inliner-iterations=2 option.
+
+2013-02-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR debug/53363
+ * g++.dg/debug/dwarf2/thunk1.C: Restrict to 32-bit x86.
+ Add -fno-dwarf2-cfi-asm to dg-options.
+ Adapt match count.
+
+2013-02-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/56228
+ * gcc.dg/pr56228.c: New test.
+
+2013-02-07 Alan Modra <amodra@gmail.com>
+
+ PR target/54009
+ * gcc.target/powerpc/pr54009.c: New test.
+ PR target/54131
+ * gfortran.dg/pr54131.f: New test.
+
+2013-02-06 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/55789
+ * gfortran.dg/array_constructor_41.f90: New test.
+
+2013-02-06 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/55978
+ * gfortran.dg/class_optional_2.f90: Uncomment some cases which work now.
+
+2013-02-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/56217
+ * g++.dg/gomp/pr56217.C: New test.
+
+2013-02-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56205
+ * gcc.dg/tree-ssa/stdarg-6.c: New test.
+ * gcc.c-torture/execute/pr56205.c: New test.
+
+2013-02-05 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/53342
+ PR tree-optimization/53185
+ * gcc.dg/vect/pr53185-2.c: New testcase.
+
+2013-02-05 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimization/55789
+ * g++.dg/tree-ssa/inline-1.C: Update max-inliner-iterations.
+ * g++.dg/tree-ssa/inline-2.C: Update max-inliner-iterations.
+ * g++.dg/tree-ssa/inline-3.C: Update max-inliner-iterations.
+ * g++.dg/ipa/inline-1.C: New testcase.
+ * g++.dg/ipa/inline-2.C: New testcase.
+ * g++.dg/ipa/inline-3.C: New testcase.
+
2013-02-05 Jan Hubicka <jh@suse.cz>
- PR tree-optimization/r55789
+ PR tree-optimization/55789
* g++.dg/torture/pr55789.C: New testcase.
2013-02-05 Jakub Jelinek <jakub@redhat.com>
diff --git a/gcc/testsuite/g++.dg/abi/mangle61.C b/gcc/testsuite/g++.dg/abi/mangle61.C
new file mode 100644
index 00000000000..2ae336e42a3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/mangle61.C
@@ -0,0 +1,28 @@
+// PR c++/56237
+// { dg-do compile }
+
+void *p[4];
+
+void
+foo ()
+{
+ static union { } u;
+ p[0] = &u;
+ {
+ static union { } u;
+ p[1] = &u;
+ {
+ static union { } u;
+ p[2] = &u;
+ }
+ }
+ {
+ static union { } u;
+ p[3] = &u;
+ }
+}
+
+// { dg-final { scan-assembler "_ZZ3foovE1u\[^_\]" } }
+// { dg-final { scan-assembler "_ZZ3foovE1u_0" } }
+// { dg-final { scan-assembler "_ZZ3foovE1u_1" } }
+// { dg-final { scan-assembler "_ZZ3foovE1u_2" } }
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this7.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this7.C
new file mode 100644
index 00000000000..6e25c331b45
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this7.C
@@ -0,0 +1,11 @@
+// PR c++/54122
+// { dg-options -std=c++11 }
+
+enum E { F };
+
+template <typename A>
+struct C
+{
+ E e;
+ void f () { auto l = [&](void)->void { if (e == F) return; }; }
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae43.C b/gcc/testsuite/g++.dg/cpp0x/sfinae43.C
new file mode 100644
index 00000000000..22efe657fa7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae43.C
@@ -0,0 +1,31 @@
+// PR c++/56208
+// { dg-options -std=c++11 }
+
+struct ostream {
+ ostream& operator<<(int);
+};
+
+struct sfinae_base {
+
+ typedef char one;
+ typedef char (&two)[2];
+
+ template<class T>
+ static T make();
+
+ template<unsigned> struct ok { typedef int type; };
+
+ template<class U, class T>
+ static one test(decltype((make<U>() << make<T>()), 0));
+
+ template<class, class>
+ static two test(...);
+};
+
+template<class T>
+struct is_printable : private sfinae_base
+{
+ enum { value = sizeof(test<ostream&, T>(0)) == sizeof(one) };
+};
+
+typedef int ok[is_printable<int>::value ? 1 : -1];
diff --git a/gcc/testsuite/g++.dg/cpp1y/auto-fn14.C b/gcc/testsuite/g++.dg/cpp1y/auto-fn14.C
new file mode 100644
index 00000000000..e7e86991ed3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1y/auto-fn14.C
@@ -0,0 +1,5 @@
+// PR c++/56177
+// { dg-options "-std=c++1y" }
+
+auto f ();
+auto f () { return 33; }
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/thunk1.C b/gcc/testsuite/g++.dg/debug/dwarf2/thunk1.C
index c34373e2681..1eb129523a4 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/thunk1.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/thunk1.C
@@ -1,7 +1,7 @@
// Test that we don't add the x86 PC thunk to .debug_ranges
-// { dg-do compile { target i?86-*-* } }
-// { dg-options "-g -fpic" }
-// { dg-final { scan-assembler-times "LFB3" 1 } }
+// { dg-do compile { target { { i?86-*-* x86_64-*-* } && ia32 } } }
+// { dg-options "-g -fpic -fno-dwarf2-cfi-asm" }
+// { dg-final { scan-assembler-times "LFB3" 5 } }
template <class T> void f(T t) { }
diff --git a/gcc/testsuite/g++.dg/gomp/pr56217.C b/gcc/testsuite/g++.dg/gomp/pr56217.C
new file mode 100644
index 00000000000..03dfc5f180b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/gomp/pr56217.C
@@ -0,0 +1,14 @@
+// PR middle-end/56217
+// { dg-do compile }
+// { dg-options "-fopenmp" }
+
+struct S { int *p; S (); S (S &); };
+
+S
+foo ()
+{
+ S s;
+ #pragma omp task shared (s)
+ s.p = 0;
+ return s;
+}
diff --git a/gcc/testsuite/g++.dg/init/bitfield4.C b/gcc/testsuite/g++.dg/init/bitfield4.C
new file mode 100644
index 00000000000..30041c43599
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/bitfield4.C
@@ -0,0 +1,24 @@
+// PR c++/56235
+
+struct A
+{
+ A (const A &);
+};
+
+struct B
+{
+ A a;
+ enum Mode { };
+ Mode m:8;
+};
+
+struct C
+{
+ C();
+ B b;
+};
+
+C fn()
+{
+ return C();
+}
diff --git a/gcc/testsuite/g++.dg/ipa/inline-1.C b/gcc/testsuite/g++.dg/ipa/inline-1.C
index b3dee080be2..dbbfb4e33bd 100644
--- a/gcc/testsuite/g++.dg/ipa/inline-1.C
+++ b/gcc/testsuite/g++.dg/ipa/inline-1.C
@@ -31,6 +31,6 @@ int main(int argc, char **argv)
foreach (argv, argv + argc, inline_me_too);
}
-/* { dg-final { scan-tree-dump-times "Considering void inline_me\\(" 1 "inline"} } */
-/* { dg-final { scan-tree-dump-times "Considering void inline_me_too\\(" 1 "inline"} } */
-/* { dg-final { cleanup-tree-dump "einline" } } */
+/* { dg-final { scan-ipa-dump-times "Considering void inline_me\\(" 1 "inline"} } */
+/* { dg-final { scan-ipa-dump-times "Considering void inline_me_too\\(" 1 "inline"} } */
+/* { dg-final { cleanup-ipa-dump "inline" } } */
diff --git a/gcc/testsuite/g++.dg/ipa/inline-3.C b/gcc/testsuite/g++.dg/ipa/inline-3.C
index 602b140971b..8d5f905cf4f 100644
--- a/gcc/testsuite/g++.dg/ipa/inline-3.C
+++ b/gcc/testsuite/g++.dg/ipa/inline-3.C
@@ -26,4 +26,4 @@ int main(int argc, char **argv)
/* { dg-final { scan-ipa-dump-times "Considering void inline_me\\(" 1 "inline"} } */
/* { dg-final { scan-ipa-dump-times "Considering void inline_me_too\\(" 1 "inline"} } */
-/* { dg-final { cleanup-tree-dump "inline" } } */
+/* { dg-final { cleanup-ipa-dump "inline" } } */
diff --git a/gcc/testsuite/g++.dg/parse/crash61.C b/gcc/testsuite/g++.dg/parse/crash61.C
new file mode 100644
index 00000000000..790df0e4bc4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/crash61.C
@@ -0,0 +1,6 @@
+// PR c++/56241
+// { dg-do compile }
+
+struct pair { constexpr pair (const) : }; // { dg-error "" }
+template <0> make_pair () {} // { dg-error "" }
+pair prefix[] = { 0, make_pair } // { dg-error "" }
diff --git a/gcc/testsuite/g++.dg/parse/enum10.C b/gcc/testsuite/g++.dg/parse/enum10.C
new file mode 100644
index 00000000000..8760597a7fb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/enum10.C
@@ -0,0 +1,2 @@
+namespace A { }
+enum A::B { }; // { dg-error "" }
diff --git a/gcc/testsuite/g++.dg/parse/pr56239.C b/gcc/testsuite/g++.dg/parse/pr56239.C
new file mode 100644
index 00000000000..08f7f688938
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/pr56239.C
@@ -0,0 +1,13 @@
+// PR c++/56239
+// { dg-do compile }
+
+struct S
+{
+ int operator () () { return 0; }
+};
+
+int
+main ()
+{
+ return (S ()) ();
+}
diff --git a/gcc/testsuite/g++.dg/tree-ssa/inline-3.C b/gcc/testsuite/g++.dg/tree-ssa/inline-3.C
index 512f83dd07e..2804a63539d 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/inline-3.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/inline-3.C
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-einline --param max-early-inliner-iterations=3" } */
+/* { dg-options "-O2 -fdump-tree-einline --param max-early-inliner-iterations=5" } */
/* { dg-add-options bind_pic_locally } */
#include <algorithm>
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr56205.c b/gcc/testsuite/gcc.c-torture/execute/pr56205.c
new file mode 100644
index 00000000000..bf39685946b
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr56205.c
@@ -0,0 +1,61 @@
+/* PR tree-optimization/56205 */
+
+#include <stdarg.h>
+
+int a, b;
+char c[128];
+
+__attribute__((noinline, noclone)) static void
+f1 (const char *fmt, ...)
+{
+ va_list ap;
+ asm volatile ("" : : : "memory");
+ if (__builtin_strcmp (fmt, "%s %d %s") != 0)
+ __builtin_abort ();
+ va_start (ap, fmt);
+ if (__builtin_strcmp (va_arg (ap, const char *), "foo") != 0
+ || va_arg (ap, int) != 1
+ || __builtin_strcmp (va_arg (ap, const char *), "bar") != 0)
+ __builtin_abort ();
+ va_end (ap);
+}
+
+__attribute__((noinline, noclone)) static void
+f2 (const char *fmt, va_list ap)
+{
+ asm volatile ("" : : : "memory");
+ if (__builtin_strcmp (fmt, "baz") != 0
+ || __builtin_strcmp (va_arg (ap, const char *), "foo") != 0
+ || va_arg (ap, double) != 12.0
+ || va_arg (ap, int) != 26)
+ __builtin_abort ();
+}
+
+static void
+f3 (int x, char const *y, va_list z)
+{
+ f1 ("%s %d %s", x ? "" : "foo", ++a, (y && *y) ? "bar" : "");
+ if (y && *y)
+ f2 (y, z);
+}
+
+__attribute__((noinline, noclone)) void
+f4 (int x, char const *y, ...)
+{
+ va_list z;
+ va_start (z, y);
+ if (!x && *c == '\0')
+ ++b;
+ f3 (x, y, z);
+ va_end (z);
+}
+
+int
+main ()
+{
+ asm volatile ("" : : : "memory");
+ f4 (0, "baz", "foo", 12.0, 26);
+ if (a != 1 || b != 1)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr56250.c b/gcc/testsuite/gcc.c-torture/execute/pr56250.c
new file mode 100644
index 00000000000..8da36f83a8e
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr56250.c
@@ -0,0 +1,13 @@
+/* PR tree-optimization/56250 */
+
+extern void abort (void);
+
+int
+main ()
+{
+ unsigned int x = 2;
+ unsigned int y = (0U - x / 2) / 2;
+ if (-1U / x != y)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/fixed-point/view-convert-2.c b/gcc/testsuite/gcc.dg/fixed-point/view-convert-2.c
new file mode 100644
index 00000000000..fbce5185e16
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/fixed-point/view-convert-2.c
@@ -0,0 +1,139 @@
+/* PR tree-optimization/56064 */
+/* { dg-do run } */
+/* { dg-options "-std=gnu99 -O2" } */
+
+extern void abort (void);
+extern void exit (int);
+
+void test_k (void)
+{
+ _Accum a;
+ __INT32_TYPE__ i = -__INT32_MAX__;
+
+ if (sizeof (a) != sizeof (i))
+ return;
+
+ __builtin_memcpy (&a, &i, sizeof (a));
+
+ if (a >= 0k)
+ abort();
+}
+
+void test_0k (void)
+{
+ _Accum a;
+ __INT32_TYPE__ i = 0;
+
+ if (sizeof (a) != sizeof (i))
+ return;
+
+ __builtin_memcpy (&a, &i, sizeof (a));
+
+ if (a != 0k)
+ abort();
+}
+
+
+void test_hr (void)
+{
+ short _Fract a;
+ __INT8_TYPE__ i = -__INT8_MAX__;
+
+ if (sizeof (a) != sizeof (i))
+ return;
+
+ __builtin_memcpy (&a, &i, sizeof (a));
+
+ if (a >= 0hr)
+ abort();
+}
+
+void test_0hr (void)
+{
+ short _Fract a;
+ __INT8_TYPE__ i = 0;
+
+ if (sizeof (a) != sizeof (i))
+ return;
+
+ __builtin_memcpy (&a, &i, sizeof (a));
+
+ if (a != 0hr)
+ abort();
+}
+
+
+void test_si (void)
+{
+ _Accum a = __ACCUM_MIN__;
+ __INT32_TYPE__ i;
+
+ if (sizeof (a) != sizeof (i))
+ return;
+
+ __builtin_memcpy (&i, &a, sizeof (i));
+
+ if (i >= 0)
+ abort();
+}
+
+void test_0si (void)
+{
+ _Accum a = 0;
+ __INT32_TYPE__ i;
+
+ if (sizeof (a) != sizeof (i))
+ return;
+
+ __builtin_memcpy (&i, &a, sizeof (i));
+
+ if (i != 0)
+ abort();
+}
+
+
+void test_qi (void)
+{
+ short _Fract a = __SFRACT_MIN__;
+ __INT8_TYPE__ i;
+
+ if (sizeof (a) != sizeof (i))
+ return;
+
+ __builtin_memcpy (&i, &a, sizeof (i));
+
+ if (i >= 0)
+ abort();
+}
+
+void test_0qi (void)
+{
+ short _Fract a = 0hr;
+ __INT8_TYPE__ i;
+
+ if (sizeof (a) != sizeof (i))
+ return;
+
+ __builtin_memcpy (&i, &a, sizeof (i));
+
+ if (i != 0)
+ abort();
+}
+
+
+int main (void)
+{
+ test_hr();
+ test_k();
+ test_qi();
+ test_si();
+
+ test_0hr();
+ test_0k();
+ test_0qi();
+ test_0si();
+
+ exit (0);
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/guality/pr56154-1.c b/gcc/testsuite/gcc.dg/guality/pr56154-1.c
new file mode 100644
index 00000000000..4f02bc96e21
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/guality/pr56154-1.c
@@ -0,0 +1,29 @@
+/* PR debug/56154 */
+/* { dg-do run } */
+/* { dg-options "-g" } */
+/* { dg-additional-sources "pr56154-aux.c" } */
+
+#include "../nop.h"
+
+union U { int a, b; };
+volatile int z;
+
+__attribute__((noinline, noclone)) int
+foo (int fd, union U x)
+{
+ int result = x.a != 0;
+ if (fd != 0)
+ result = x.a == 0;
+ asm (NOP : : : "memory"); /* { dg-final { gdb-test pr56154-1.c:17 "x.a" "4" } } */
+ z = x.a;
+ x.a = 6;
+ asm (NOP : : : "memory"); /* { dg-final { gdb-test pr56154-1.c:20 "x.a" "6" } } */
+ return result;
+}
+
+void
+test_main (void)
+{
+ union U u = { .a = 4 };
+ foo (0, u);
+}
diff --git a/gcc/testsuite/gcc.dg/guality/pr56154-2.c b/gcc/testsuite/gcc.dg/guality/pr56154-2.c
new file mode 100644
index 00000000000..6c1d5d977f8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/guality/pr56154-2.c
@@ -0,0 +1,39 @@
+/* PR debug/56154 */
+/* { dg-do run } */
+/* { dg-options "-g" } */
+/* { dg-additional-sources "pr56154-aux.c" } */
+
+#include "../nop.h"
+
+extern void abort (void);
+
+__attribute__((noinline, noclone)) int
+foo (int x)
+{
+ asm ("");
+ x++;
+ asm ("");
+ x++;
+ asm ("");
+ x++;
+ asm ("");
+ x++;
+ asm ("");
+ x++;
+ asm ("");
+ x++;
+ asm ("");
+ x++;
+ asm ("");
+ x++;
+ asm (NOP : : : "memory");
+ asm (NOP : : : "memory"); /* { dg-final { gdb-test pr56154-2.c:30 "x" "28" } } */
+ return x;
+}
+
+void
+test_main (void)
+{
+ if (foo (20) != 28)
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.dg/guality/pr56154-3.c b/gcc/testsuite/gcc.dg/guality/pr56154-3.c
new file mode 100644
index 00000000000..095dce9f656
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/guality/pr56154-3.c
@@ -0,0 +1,31 @@
+/* PR debug/56154 */
+/* { dg-do run } */
+/* { dg-options "-g" } */
+/* { dg-additional-sources "pr56154-aux.c" } */
+
+#include "../nop.h"
+
+extern void abort (void);
+
+__attribute__((noinline, noclone)) int
+foo (int x)
+{
+ x++;
+ x++;
+ x++;
+ x++;
+ x++;
+ x++;
+ x++;
+ x++;
+ asm (NOP : : : "memory");
+ asm (NOP : : : "memory"); /* { dg-final { gdb-test pr56154-3.c:22 "x" "28" } } */
+ return x;
+}
+
+void
+test_main (void)
+{
+ if (foo (20) != 28)
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.dg/guality/pr56154-4.c b/gcc/testsuite/gcc.dg/guality/pr56154-4.c
new file mode 100644
index 00000000000..bfe7338d62c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/guality/pr56154-4.c
@@ -0,0 +1,34 @@
+/* PR debug/56154 */
+/* { dg-do run } */
+/* { dg-options "-g" } */
+/* { dg-additional-sources "pr56154-aux.c" } */
+
+#include "../nop.h"
+
+extern void abort (void);
+
+volatile int z;
+
+__attribute__((noinline, noclone)) int
+foo (int x)
+{
+ z = 6;
+ x++;
+ x++;
+ x++;
+ x++;
+ x++;
+ x++;
+ x++;
+ x++;
+ asm (NOP : : : "memory");
+ asm (NOP : : : "memory"); /* { dg-final { gdb-test pr56154-4.c:25 "x" "28" } } */
+ return x;
+}
+
+void
+test_main (void)
+{
+ if (foo (20) != 28)
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.dg/guality/pr56154-aux.c b/gcc/testsuite/gcc.dg/guality/pr56154-aux.c
new file mode 100644
index 00000000000..131173cb3f3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/guality/pr56154-aux.c
@@ -0,0 +1,11 @@
+/* PR debug/56154 */
+/* { dg-do compile } */
+
+extern void test_main (void);
+
+int
+main ()
+{
+ test_main ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr52448.c b/gcc/testsuite/gcc.dg/pr52448.c
new file mode 100644
index 00000000000..0aeb2130f2c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr52448.c
@@ -0,0 +1,30 @@
+/* PR tree-optimization/52448 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-cselim -fdump-tree-cselim-details" } */
+
+extern void perhaps_free_something (void);
+
+void f1 (int *p, int a, int b, int cond, int cond2)
+{
+ *p = a;
+ if (cond)
+ perhaps_free_something ();
+ if (cond2)
+ *p = b;
+}
+
+void f2 (int *p, int a, int b, int *cond, int *cond2)
+{
+ int i;
+ *p = a;
+ for (i = 0; cond[i]; i++)
+ {
+ if (cond2[i])
+ *p = b;
+ perhaps_free_something ();
+ }
+}
+
+/* None of the above conditional stores might be made unconditional. */
+/* { dg-final { scan-tree-dump-not "cstore" "cselim" } } */
+/* { dg-final { cleanup-tree-dump "cselim" } } */
diff --git a/gcc/testsuite/gcc.dg/pr56228.c b/gcc/testsuite/gcc.dg/pr56228.c
new file mode 100644
index 00000000000..ccdcbe199a4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr56228.c
@@ -0,0 +1,16 @@
+/* PR target/56228 */
+/* { dg-do assemble } */
+/* { dg-options "-O2" } */
+
+short a[14] = { 1, 2 };
+short b[15] = { 3, 4 };
+
+int
+foo ()
+{
+ void (*fna) (void) = (void (*) (void)) a;
+ void (*fnb) (void) = (void (*) (void)) b;
+ fna ();
+ fnb ();
+ return a[1] == b[1];
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr56181.c b/gcc/testsuite/gcc.dg/torture/pr56181.c
new file mode 100644
index 00000000000..c382b29c43b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr56181.c
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+/* { dg-options "-ftracer" } */
+
+int a, b;
+
+void f(void)
+{
+ if(a++)
+ {
+ for(a = 0; a < 1;)
+ {
+ for(b = 0; b < 1; b++)
+ {
+ while(a++ < 0);
+lbl:
+ ;
+ }
+
+ if(a)
+ goto lbl;
+ }
+
+ goto lbl;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/inline-3.c b/gcc/testsuite/gcc.dg/tree-ssa/inline-3.c
index ff140ed5414..35c3ebbdaf7 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/inline-3.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/inline-3.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-einline" } */
+/* { dg-options "-O2 -fdump-tree-einline --param max-early-inliner-iterations=2" } */
/* { dg-add-options bind_pic_locally } */
extern void inlined ();
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/stdarg-6.c b/gcc/testsuite/gcc.dg/tree-ssa/stdarg-6.c
new file mode 100644
index 00000000000..c21dc17b527
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/stdarg-6.c
@@ -0,0 +1,35 @@
+/* PR tree-optimization/56205 */
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-stdarg" } */
+
+#include <stdarg.h>
+
+int a, b;
+char c[128];
+
+static inline void
+foo (int x, char const *y, va_list z)
+{
+ __builtin_printf ("%s %d %s", x ? "" : "foo", ++a, (y && *y) ? "bar" : "");
+ if (y && *y)
+ __builtin_vprintf (y, z);
+}
+
+void
+bar (int x, char const *y, ...)
+{
+ va_list z;
+ va_start (z, y);
+ if (!x && *c == '\0')
+ ++b;
+ foo (x, y, z);
+ va_end (z);
+}
+
+/* { dg-final { scan-tree-dump "bar: va_list escapes 1, needs to save all GPR units and all FPR units" "stdarg" { target { { i?86-*-* x86_64-*-* } && { ! { ia32 } } } } } } */
+/* { dg-final { scan-tree-dump "bar: va_list escapes 1, needs to save all GPR units and all FPR units" "stdarg" { target { powerpc*-*-linux* && ilp32 } } } } */
+/* { dg-final { scan-tree-dump "bar: va_list escapes 1, needs to save all GPR units and all FPR units" "stdarg" { target alpha*-*-linux* } } } */
+/* { dg-final { scan-tree-dump "bar: va_list escapes 1, needs to save all GPR units and all FPR units" "stdarg" { target s390*-*-linux* } } } */
+/* { dg-final { scan-tree-dump "bar: va_list escapes 1, needs to save all GPR units" "stdarg" { target { { i?86-*-* x86_64-*-* } && ia32 } } } } */
+/* { dg-final { scan-tree-dump "bar: va_list escapes 1, needs to save all GPR units" "stdarg" { target ia64-*-* } } } */
+/* { dg-final { scan-tree-dump "bar: va_list escapes 1, needs to save all GPR units" "stdarg" { target { powerpc*-*-* && lp64 } } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/pr53185-2.c b/gcc/testsuite/gcc.dg/vect/pr53185-2.c
new file mode 100644
index 00000000000..2f9ea16ea92
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr53185-2.c
@@ -0,0 +1,27 @@
+void __attribute__((noinline,noclone))
+fn1 (int * __restrict f, int * __restrict d, unsigned short a, int c)
+{
+ unsigned short e;
+ for (e = 0; e < a; ++e)
+ f[e] = d[e * c];
+}
+
+extern void abort (void);
+
+int main ()
+{
+ int a[32], b[3 * 32];
+ int i, off;
+ for (i = 0; i < 3 * 32; ++i)
+ b[i] = i;
+ for (off = 0; off < 8; ++off)
+ {
+ fn1 (&a[off], &b[off], 32 - off, 3);
+ for (i = 0; i < 32 - off; ++i)
+ if (a[off+i] != b[off+i*3])
+ abort ();
+ }
+ return 0;
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.target/avr/torture/builtins-4-roundfx.c b/gcc/testsuite/gcc.target/avr/torture/builtins-4-roundfx.c
new file mode 100644
index 00000000000..6ad0775553a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/avr/torture/builtins-4-roundfx.c
@@ -0,0 +1,161 @@
+/* { dg-options "-std=gnu99" } */
+/* { dg-do run } */
+
+#include <stdfix.h>
+
+extern void abort (void);
+
+typedef short _Fract fx_hr_t;
+typedef _Fract fx_r_t;
+typedef long _Fract fx_lr_t;
+typedef long long _Fract fx_llr_t;
+
+typedef unsigned short _Fract fx_uhr_t;
+typedef unsigned _Fract fx_ur_t;
+typedef unsigned long _Fract fx_ulr_t;
+typedef unsigned long long _Fract fx_ullr_t;
+
+typedef short _Accum fx_hk_t;
+typedef _Accum fx_k_t;
+typedef long _Accum fx_lk_t;
+typedef long long _Accum fx_llk_t;
+
+typedef unsigned short _Accum fx_uhk_t;
+typedef unsigned _Accum fx_uk_t;
+typedef unsigned long _Accum fx_ulk_t;
+typedef unsigned long long _Accum fx_ullk_t;
+
+
+typedef unsigned char int_uhr_t;
+typedef unsigned int int_ur_t;
+typedef unsigned long int_ulr_t;
+typedef unsigned long long int_ullr_t;
+
+typedef unsigned int int_uhk_t;
+typedef unsigned long int_uk_t;
+typedef unsigned long long int_ulk_t;
+typedef unsigned long long int_ullk_t;
+
+
+#define DEFTEST1(T,FX) \
+ T test1_##FX (T x, int rp) \
+ { \
+ return round##FX (x, rp); \
+ } \
+ \
+ unsigned T test1_u##FX (unsigned T x, int rp) \
+ { \
+ return roundu##FX (x, rp); \
+ }
+
+DEFTEST1 (short fract, hr)
+DEFTEST1 (fract, r)
+DEFTEST1 (long fract, lr)
+DEFTEST1 (long long fract, llr)
+
+DEFTEST1 (short accum, hk)
+DEFTEST1 (accum, k)
+
+DEFTEST1 (long accum, lk)
+DEFTEST1 (long long accum, llk)
+
+
+#define TEST2(FX, RP, VAL, ROUND) \
+ { \
+ if (round##FX (FX##bits (VAL), RP) != FX##bits (ROUND)) \
+ abort(); \
+ fx_##FX##_t (*f)(fx_##FX##_t,int) = round##FX; \
+ asm ("" : "+r" (f)); \
+ if (f (FX##bits (VAL), RP) != FX##bits (ROUND)) \
+ abort(); \
+ }
+
+static void test2hr (void)
+{
+ TEST2 (hr, 1, 0x7f, 0x40);
+ TEST2 (hr, 2, 0x7f, 0b1100000);
+ TEST2 (hr, 3, 0x7f, 0b1110000);
+ TEST2 (hr, 4, 0x7f, 0b1111000);
+
+ TEST2 (uhr, 1, 0x7f, 0x80);
+ TEST2 (uhr, 2, 0x7f, 0x80);
+ TEST2 (uhr, 3, 0x7f, 0x80);
+ TEST2 (uhr, 4, 0x7f, 0x80);
+}
+
+void test2k (void)
+{
+ TEST2 (k, 1, 0x7fffffff, 0x7fff8000 | 0b100000000000000);
+ TEST2 (k, 2, 0x7fffffff, 0x7fff8000 | 0b110000000000000);
+ TEST2 (k, 3, 0x7fffffff, 0x7fff8000 | 0b111000000000000);
+ TEST2 (k, 4, 0x7fffffff, 0x7fff8000 | 0b111100000000000);
+
+ TEST2 (uk, 1, 0x7fffffff, 1ul << 31);
+ TEST2 (uk, 2, 0x7fffffff, 1ul << 31);
+ TEST2 (uk, 3, 0x7fffffff, 1ul << 31);
+ TEST2 (uk, 4, 0x7fffffff, 1ul << 31);
+}
+
+#define DEFTEST3(FX, FBIT) \
+ void test3##FX (void) \
+ { \
+ TEST2 (FX, FBIT-1, 0b01100, 0b01100); \
+ TEST2 (FX, FBIT-2, 0b01100, 0b01100); \
+ TEST2 (FX, FBIT-3, 0b01100, 0b10000); \
+ TEST2 (FX, FBIT-4, 0b01100, 0b10000); \
+ TEST2 (FX, FBIT-5, 0b01100, 0); \
+ \
+ if (FX##bits ((int_##FX##_t) -1) > 0) \
+ return; \
+ \
+ TEST2 (FX, FBIT-1, -0b01100, -0b01100); \
+ TEST2 (FX, FBIT-2, -0b01100, -0b01100); \
+ TEST2 (FX, FBIT-3, -0b01100, -0b01000); \
+ TEST2 (FX, FBIT-4, -0b01100, -0b10000); \
+ TEST2 (FX, FBIT-5, -0b01100, -0b00000); \
+ }
+
+DEFTEST3 (hr, SFRACT_FBIT)
+DEFTEST3 (r, FRACT_FBIT)
+DEFTEST3 (lr, LFRACT_FBIT)
+
+DEFTEST3 (uhr, USFRACT_FBIT)
+DEFTEST3 (ur, UFRACT_FBIT)
+DEFTEST3 (ulr, ULFRACT_FBIT)
+
+DEFTEST3 (hk, SACCUM_FBIT)
+DEFTEST3 (k, ACCUM_FBIT)
+DEFTEST3 (lk, LACCUM_FBIT)
+DEFTEST3 (llk, LLACCUM_FBIT)
+
+DEFTEST3 (uhk, USACCUM_FBIT)
+DEFTEST3 (uk, UACCUM_FBIT)
+DEFTEST3 (ulk, ULACCUM_FBIT)
+DEFTEST3 (ullk, ULLACCUM_FBIT)
+
+int main (void)
+{
+ test2hr();
+ test2k();
+
+ test3hr();
+ test3r();
+ test3lr();
+
+ test3uhr();
+ test3ur();
+ test3ulr();
+
+ test3hk();
+ test3k();
+ test3lk();
+ test3llk();
+
+ test3uhk();
+ test3uk();
+ test3ulk();
+ test3ullk();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/avr/torture/builtins-5-countlsfx.c b/gcc/testsuite/gcc.target/avr/torture/builtins-5-countlsfx.c
new file mode 100644
index 00000000000..b0ff5e3d48a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/avr/torture/builtins-5-countlsfx.c
@@ -0,0 +1,82 @@
+/* { dg-options "-std=gnu99" } */
+/* { dg-do run } */
+
+#include <stdfix.h>
+
+extern void abort (void);
+
+#define DEFTEST1(T,FX) \
+ int test1_##FX (T x) \
+ { \
+ return countls##FX (x); \
+ } \
+ \
+ int test1_u##FX (unsigned T x) \
+ { \
+ return countlsu##FX (x); \
+ }
+
+DEFTEST1 (short fract, hr)
+DEFTEST1 (fract, r)
+DEFTEST1 (long fract, lr)
+DEFTEST1 (long long fract, llr)
+
+DEFTEST1 (short accum, hk)
+DEFTEST1 (accum, k)
+DEFTEST1 (long accum, lk)
+DEFTEST1 (long long accum, llk)
+
+
+#define TEST2P(FX, VAL, DD) \
+ { \
+ if (countls##FX (FX##bits (VAL)) != 8 * sizeof (0##FX) - DD) \
+ abort(); \
+ \
+ if (countlsu##FX (u##FX##bits (VAL)) != 8 * sizeof (0u##FX) + 1 - DD) \
+ abort(); \
+ }
+
+
+#define TEST2M(FX, VAL, DD) \
+ { \
+ if (countls##FX (FX##bits (VAL)) != 8 * sizeof (0##FX) - (DD)) \
+ abort(); \
+ \
+ if (countlsu##FX (u##FX##bits (VAL)) != 0) \
+ abort(); \
+ }
+
+
+#define TEST2PX(VAL, DD) \
+ TEST2P (hr, VAL, DD); \
+ TEST2P (r, VAL, DD); \
+ TEST2P (lr, VAL, DD); \
+ \
+ TEST2P (hk, VAL, DD); \
+ TEST2P (k, VAL, DD); \
+ TEST2P (lk, VAL, DD); \
+ TEST2P (llk, VAL, DD)
+
+#define TEST2MX(VAL, DD) \
+ TEST2M (hr, VAL, DD); \
+ TEST2M (r, VAL, DD); \
+ TEST2M (lr, VAL, DD); \
+ \
+ TEST2M (hk, VAL, DD); \
+ TEST2M (k, VAL, DD); \
+ TEST2M (lk, VAL, DD); \
+ TEST2M (llk, VAL, DD)
+
+
+int main (void)
+{
+ TEST2PX (1, 2);
+ TEST2PX (2, 3);
+ TEST2PX (3, 3);
+
+ TEST2MX (-1, 1);
+ TEST2MX (-2, 2);
+ TEST2MX (-3, 3);
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr56225.c b/gcc/testsuite/gcc.target/i386/pr56225.c
new file mode 100644
index 00000000000..638c0cef5f2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr56225.c
@@ -0,0 +1,12 @@
+/* PR target/56225 */
+/* { dg-do compile { target { ia32 } } } */
+/* { dg-options "-O2 -march=pentium3 -mtune=generic" } */
+
+void bar (int);
+
+void
+foo (int x, int y)
+{
+ __attribute__ ((vector_size (8 * sizeof (short)))) short s0 = { x };
+ bar ((short) (long) &s0 + y);
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/pr54009.c b/gcc/testsuite/gcc.target/powerpc/pr54009.c
new file mode 100644
index 00000000000..9af98ab6c8b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr54009.c
@@ -0,0 +1,43 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-require-effective-target powerpc_fprs } */
+/* { dg-options "-O2" } */
+/* { dg-final { scan-assembler-not "\[\+\]32768" } } */
+
+/* -O2 -m32 store to x.d in w was
+ lis 9,x+32764@ha
+ stw 10,x+32764@l(9)
+ stw 11,x+32768@l(9) <-- wrap! */
+
+struct big {
+ char a[32764];
+ double d __attribute__ ((aligned (4)));
+} __attribute__ ((packed));
+
+extern struct big x;
+double y;
+
+void r (void)
+{
+ double tmp = x.d;
+#if 1
+ asm ("#": "+r" (tmp)
+ : : "fr0", "fr1", "fr2", "fr3", "fr4", "fr5", "fr6", "fr7",
+ "fr8", "fr9", "fr10", "fr11", "fr12", "fr13", "fr14", "fr15",
+ "fr16", "fr17", "fr18", "fr19", "fr20", "fr21", "fr22", "fr23",
+ "fr24", "fr25", "fr26", "fr27", "fr28", "fr29", "fr30", "fr31");
+#endif
+ y = tmp;
+}
+
+void w (void)
+{
+ double tmp = y;
+#if 1
+ asm ("#": "+r" (tmp)
+ : : "fr0", "fr1", "fr2", "fr3", "fr4", "fr5", "fr6", "fr7",
+ "fr8", "fr9", "fr10", "fr11", "fr12", "fr13", "fr14", "fr15",
+ "fr16", "fr17", "fr18", "fr19", "fr20", "fr21", "fr22", "fr23",
+ "fr24", "fr25", "fr26", "fr27", "fr28", "fr29", "fr30", "fr31");
+#endif
+ x.d = tmp;
+}
diff --git a/gcc/testsuite/gfortran.dg/array_constructor_41.f90 b/gcc/testsuite/gfortran.dg/array_constructor_41.f90
new file mode 100644
index 00000000000..eb5fd92a1ee
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/array_constructor_41.f90
@@ -0,0 +1,33 @@
+! { dg-do compile }
+! { dg-options "-fdump-tree-original" }
+! Test fix for PR55789
+!
+! Contributed by Joost VandVandole <Joost.VandeVondele@mat.ethz.ch>
+!
+MODULE M1
+CONTAINS
+ SUBROUTINE cp_1d_i4_sort(arr)
+ INTEGER(kind=4), DIMENSION(:), &
+ INTENT(inout) :: arr
+ arr = (/ (i, i = 1, SIZE(arr)) /)
+ END SUBROUTINE
+END MODULE M1
+
+PROGRAM TEST
+ USE M1
+ INTEGER :: arr(1)
+ INTERFACE
+ SUBROUTINE mtrace() BIND(C,name="mtrace")
+ END SUBROUTINE
+ END INTERFACE
+ INTERFACE
+ SUBROUTINE muntrace() BIND(C,name="muntrace")
+ END SUBROUTINE
+ END INTERFACE
+ CALL mtrace()
+ CALL cp_1d_i4_sort(arr)
+ CALL muntrace()
+END
+
+! { dg-final { scan-tree-dump-times "realloc" 0 "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
diff --git a/gcc/testsuite/gfortran.dg/class_optional_2.f90 b/gcc/testsuite/gfortran.dg/class_optional_2.f90
index 90b1719c117..3472eaa9735 100644
--- a/gcc/testsuite/gfortran.dg/class_optional_2.f90
+++ b/gcc/testsuite/gfortran.dg/class_optional_2.f90
@@ -3,7 +3,7 @@
!
! PR fortran/50981
! PR fortran/54618
-!
+! PR fortran/55978
implicit none
type t
@@ -547,7 +547,7 @@ contains
! call s2elem(z5) ! FIXME: Segfault
! call s2elem_t(x) ! FIXME: Conditional jump or move depends on uninitialised value
! call s2elem_t(y) ! FIXME: Conditional jump or move depends on uninitialised value
-! call s2elem_t(z) ! FIXME: Conditional jump or move depends on uninitialised value
+ call s2elem_t(z)
! call s2elem_t(z2) ! FIXME: Segfault
! call s2elem_t(z3) ! FIXME: Segfault
! call s2elem_t(z4) ! FIXME: Segfault
@@ -590,7 +590,7 @@ contains
! call s2elem(z5) ! FIXME: Segfault
! call s2elem_t2(x) ! FIXME: Conditional jump or move depends on uninitialised value
! call s2elem_t2(y) ! FIXME: Conditional jump or move depends on uninitialised value
-! call s2elem_t2(z) ! FIXME: Conditional jump or move depends on uninitialised value
+ call s2elem_t2(z)
! call s2elem_t2(z2) ! FIXME: Segfault
! call s2elem_t2(z3) ! FIXME: Segfault
! call s2elem_t2(z4) ! FIXME: Segfault
diff --git a/gcc/testsuite/gfortran.dg/pr54131.f b/gcc/testsuite/gfortran.dg/pr54131.f
new file mode 100644
index 00000000000..1550967dfb6
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr54131.f
@@ -0,0 +1,23 @@
+! { dg-do compile }
+! { dg-options "-O2 -funroll-loops" }
+
+ SUBROUTINE EFPGRD(IFCM,NAT,NVIB,NPUN,FCM,
+ * DEN,GRD,ENG,DIP,NVST,NFTODO,LIST)
+ IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+ DIMENSION DEN(*),GRD(*),ENG(*),DIP(*),LIST(*)
+ PARAMETER (MXPT=100, MXFRG=50, MXFGPT=MXPT*MXFRG)
+ COMMON /FGRAD / DEF(3,MXFGPT),DEFT(3,MXFRG),TORQ(3,MXFRG),
+ * ATORQ(3,MXFRG)
+ IF(NVST.EQ.0) THEN
+ CALL PUVIB(IFCM,IW,.FALSE.,NCOORD,IVIB,IATOM,ICOORD,
+ * ENG(IENG),GRD(IGRD),DIP(IDIP))
+ END IF
+ DO 290 IVIB=1,NVIB
+ DO 220 IFRG=1,NFRG
+ DO 215 J=1,3
+ DEFT(J,IFRG)=GRD(INDX+J-1)
+ 215 CONTINUE
+ INDX=INDX+6
+ 220 CONTINUE
+ 290 CONTINUE
+ END
diff --git a/gcc/tracer.c b/gcc/tracer.c
index c7b9d964b9f..975cadb9285 100644
--- a/gcc/tracer.c
+++ b/gcc/tracer.c
@@ -380,9 +380,9 @@ tracer (void)
if (changed)
{
free_dominance_info (CDI_DOMINATORS);
- calculate_dominance_info (CDI_DOMINATORS);
+ /* If we changed the CFG schedule loops for fixup by cleanup_cfg. */
if (current_loops)
- fix_loop_structure (NULL);
+ loops_state_set (LOOPS_NEED_FIXUP);
}
if (dump_file)
diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c
index eee497296ca..61199437dbe 100644
--- a/gcc/tree-ssa-phiopt.c
+++ b/gcc/tree-ssa-phiopt.c
@@ -1233,6 +1233,7 @@ abs_replacement (basic_block cond_bb, basic_block middle_bb,
struct name_to_bb
{
unsigned int ssa_name_ver;
+ unsigned int phase;
bool store;
HOST_WIDE_INT offset, size;
basic_block bb;
@@ -1241,6 +1242,10 @@ struct name_to_bb
/* The hash table for remembering what we've seen. */
static htab_t seen_ssa_names;
+/* Used for quick clearing of the hash-table when we see calls.
+ Hash entries with phase < nt_call_phase are invalid. */
+static unsigned int nt_call_phase;
+
/* The set of MEM_REFs which can't trap. */
static struct pointer_set_t *nontrap_set;
@@ -1291,6 +1296,7 @@ add_or_mark_expr (basic_block bb, tree exp,
/* Try to find the last seen MEM_REF through the same
SSA_NAME, which can trap. */
map.ssa_name_ver = SSA_NAME_VERSION (name);
+ map.phase = 0;
map.bb = 0;
map.store = store;
map.offset = tree_low_cst (TREE_OPERAND (exp, 1), 0);
@@ -1298,13 +1304,13 @@ add_or_mark_expr (basic_block bb, tree exp,
slot = htab_find_slot (seen_ssa_names, &map, INSERT);
n2bb = (struct name_to_bb *) *slot;
- if (n2bb)
+ if (n2bb && n2bb->phase >= nt_call_phase)
found_bb = n2bb->bb;
/* If we've found a trapping MEM_REF, _and_ it dominates EXP
(it's in a basic block on the path from us to the dominator root)
then we can't trap. */
- if (found_bb && found_bb->aux == (void *)1)
+ if (found_bb && (((size_t)found_bb->aux) & 1) == 1)
{
pointer_set_insert (nontrap, exp);
}
@@ -1313,12 +1319,14 @@ add_or_mark_expr (basic_block bb, tree exp,
/* EXP might trap, so insert it into the hash table. */
if (n2bb)
{
+ n2bb->phase = nt_call_phase;
n2bb->bb = bb;
}
else
{
n2bb = XNEW (struct name_to_bb);
n2bb->ssa_name_ver = SSA_NAME_VERSION (name);
+ n2bb->phase = nt_call_phase;
n2bb->bb = bb;
n2bb->store = store;
n2bb->offset = map.offset;
@@ -1329,20 +1337,55 @@ add_or_mark_expr (basic_block bb, tree exp,
}
}
+/* Return true when CALL is a call stmt that definitely doesn't
+ free any memory or makes it unavailable otherwise. */
+static bool
+nonfreeing_call_p (gimple call)
+{
+ if (gimple_call_builtin_p (call, BUILT_IN_NORMAL)
+ && gimple_call_flags (call) & ECF_LEAF)
+ switch (DECL_FUNCTION_CODE (gimple_call_fndecl (call)))
+ {
+ /* Just in case these become ECF_LEAF in the future. */
+ case BUILT_IN_FREE:
+ case BUILT_IN_TM_FREE:
+ case BUILT_IN_REALLOC:
+ case BUILT_IN_STACK_RESTORE:
+ return false;
+ default:
+ return true;
+ }
+
+ return false;
+}
+
/* Called by walk_dominator_tree, when entering the block BB. */
static void
nt_init_block (struct dom_walk_data *data ATTRIBUTE_UNUSED, basic_block bb)
{
+ edge e;
+ edge_iterator ei;
gimple_stmt_iterator gsi;
- /* Mark this BB as being on the path to dominator root. */
- bb->aux = (void*)1;
+
+ /* If we haven't seen all our predecessors, clear the hash-table. */
+ FOR_EACH_EDGE (e, ei, bb->preds)
+ if ((((size_t)e->src->aux) & 2) == 0)
+ {
+ nt_call_phase++;
+ break;
+ }
+
+ /* Mark this BB as being on the path to dominator root and as visited. */
+ bb->aux = (void*)(1 | 2);
/* And walk the statements in order. */
for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple stmt = gsi_stmt (gsi);
- if (gimple_assign_single_p (stmt) && !gimple_has_volatile_ops (stmt))
+ if (is_gimple_call (stmt) && !nonfreeing_call_p (stmt))
+ nt_call_phase++;
+ else if (gimple_assign_single_p (stmt) && !gimple_has_volatile_ops (stmt))
{
add_or_mark_expr (bb, gimple_assign_lhs (stmt), nontrap_set, true);
add_or_mark_expr (bb, gimple_assign_rhs1 (stmt), nontrap_set, false);
@@ -1355,7 +1398,7 @@ static void
nt_fini_block (struct dom_walk_data *data ATTRIBUTE_UNUSED, basic_block bb)
{
/* This BB isn't on the path to dominator root anymore. */
- bb->aux = NULL;
+ bb->aux = (void*)2;
}
/* This is the entry point of gathering non trapping memory accesses.
@@ -1368,6 +1411,7 @@ get_non_trapping (void)
struct pointer_set_t *nontrap;
struct dom_walk_data walk_data;
+ nt_call_phase = 0;
nontrap = pointer_set_create ();
seen_ssa_names = htab_create (128, name_to_bb_hash, name_to_bb_eq,
free);
@@ -1389,6 +1433,7 @@ get_non_trapping (void)
fini_walk_dominator_tree (&walk_data);
htab_delete (seen_ssa_names);
+ clear_aux_for_blocks ();
return nontrap;
}
diff --git a/gcc/tree-stdarg.c b/gcc/tree-stdarg.c
index cd573a339cf..8ad9fc2d22e 100644
--- a/gcc/tree-stdarg.c
+++ b/gcc/tree-stdarg.c
@@ -526,6 +526,37 @@ check_all_va_list_escapes (struct stdarg_info *si)
{
gimple_stmt_iterator i;
+ for (i = gsi_start_phis (bb); !gsi_end_p (i); gsi_next (&i))
+ {
+ tree lhs;
+ use_operand_p uop;
+ ssa_op_iter soi;
+ gimple phi = gsi_stmt (i);
+
+ lhs = PHI_RESULT (phi);
+ if (virtual_operand_p (lhs)
+ || bitmap_bit_p (si->va_list_escape_vars,
+ SSA_NAME_VERSION (lhs)))
+ continue;
+
+ FOR_EACH_PHI_ARG (uop, phi, soi, SSA_OP_USE)
+ {
+ tree rhs = USE_FROM_PTR (uop);
+ if (TREE_CODE (rhs) == SSA_NAME
+ && bitmap_bit_p (si->va_list_escape_vars,
+ SSA_NAME_VERSION (rhs)))
+ {
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ {
+ fputs ("va_list escapes in ", dump_file);
+ print_gimple_stmt (dump_file, phi, 0, dump_flags);
+ fputc ('\n', dump_file);
+ }
+ return true;
+ }
+ }
+ }
+
for (i = gsi_start_bb (bb); !gsi_end_p (i); gsi_next (&i))
{
gimple stmt = gsi_stmt (i);
diff --git a/gcc/tree-tailcall.c b/gcc/tree-tailcall.c
index e08978ca257..80c0521d831 100644
--- a/gcc/tree-tailcall.c
+++ b/gcc/tree-tailcall.c
@@ -33,6 +33,7 @@ along with GCC; see the file COPYING3. If not see
#include "langhooks.h"
#include "dbgcnt.h"
#include "target.h"
+#include "cfgloop.h"
#include "common/common-target.h"
/* The file implements the tail recursion elimination. It is also used to
@@ -1011,7 +1012,12 @@ tree_optimize_tail_calls_1 (bool opt_tailcalls)
}
if (changed)
- free_dominance_info (CDI_DOMINATORS);
+ {
+ /* We may have created new loops. Make them magically appear. */
+ if (current_loops)
+ loops_state_set (LOOPS_NEED_FIXUP);
+ free_dominance_info (CDI_DOMINATORS);
+ }
/* Add phi nodes for the virtual operands defined in the function to the
header of the loop created by tail recursion elimination. Do so
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
index 8a772750c68..74d8c3a41fa 100644
--- a/gcc/tree-vect-data-refs.c
+++ b/gcc/tree-vect-data-refs.c
@@ -1615,18 +1615,6 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
&& GROUP_FIRST_ELEMENT (stmt_info) != stmt)
continue;
- /* FORNOW: Any strided load prevents peeling. The induction
- variable analysis will fail when the prologue loop is generated,
- and so we can't generate the new base for the pointer. */
- if (STMT_VINFO_STRIDE_LOAD_P (stmt_info))
- {
- if (dump_enabled_p ())
- dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
- "strided load prevents peeling");
- do_peeling = false;
- break;
- }
-
/* For invariant accesses there is nothing to enhance. */
if (integer_zerop (DR_STEP (dr)))
continue;
@@ -2890,9 +2878,8 @@ vect_check_gather (gimple stmt, loop_vec_info loop_vinfo, tree *basep,
This handles ARRAY_REFs (with variant index) and MEM_REFs (with variant
base pointer) only. */
-bool
-vect_check_strided_load (gimple stmt, loop_vec_info loop_vinfo, tree *basep,
- tree *stepp)
+static bool
+vect_check_strided_load (gimple stmt, loop_vec_info loop_vinfo)
{
struct loop *loop = LOOP_VINFO_LOOP (loop_vinfo);
stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
@@ -2925,10 +2912,6 @@ vect_check_strided_load (gimple stmt, loop_vec_info loop_vinfo, tree *basep,
|| !simple_iv (loop, loop_containing_stmt (stmt), off, &iv, true))
return false;
- if (basep)
- *basep = iv.base;
- if (stepp)
- *stepp = iv.step;
return true;
}
@@ -3473,8 +3456,7 @@ vect_analyze_data_refs (loop_vec_info loop_vinfo,
{
bool strided_load = false;
if (!nested_in_vect_loop_p (loop, stmt))
- strided_load
- = vect_check_strided_load (stmt, loop_vinfo, NULL, NULL);
+ strided_load = vect_check_strided_load (stmt, loop_vinfo);
if (!strided_load)
{
if (dump_enabled_p ())
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index 1f7da00ffea..1712d950e60 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -4353,7 +4353,6 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
tree aggr_type;
tree gather_base = NULL_TREE, gather_off = NULL_TREE;
tree gather_off_vectype = NULL_TREE, gather_decl = NULL_TREE;
- tree stride_base, stride_step;
int gather_scale = 1;
enum vect_def_type gather_dt = vect_unknown_def_type;
@@ -4462,11 +4461,7 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
}
}
else if (STMT_VINFO_STRIDE_LOAD_P (stmt_info))
- {
- if (!vect_check_strided_load (stmt, loop_vinfo,
- &stride_base, &stride_step))
- return false;
- }
+ ;
else
{
negative = tree_int_cst_compare (nested_in_vect_loop
@@ -4674,13 +4669,21 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
bool insert_after;
gimple incr;
tree offvar;
- tree ref = DR_REF (dr);
tree ivstep;
tree running_off;
vec<constructor_elt, va_gc> *v = NULL;
gimple_seq stmts = NULL;
+ tree stride_base, stride_step, alias_off;
+
+ gcc_assert (!nested_in_vect_loop);
- gcc_assert (stride_base && stride_step);
+ stride_base
+ = fold_build_pointer_plus
+ (unshare_expr (DR_BASE_ADDRESS (dr)),
+ size_binop (PLUS_EXPR,
+ convert_to_ptrofftype (unshare_expr (DR_OFFSET (dr))),
+ convert_to_ptrofftype (DR_INIT(dr))));
+ stride_step = fold_convert (sizetype, unshare_expr (DR_STEP (dr)));
/* For a load with loop-invariant (but other than power-of-2)
stride (i.e. not a grouped access) like so:
@@ -4716,6 +4719,7 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
prev_stmt_info = NULL;
running_off = offvar;
+ alias_off = build_int_cst (reference_alias_ptr_type (DR_REF (dr)), 0);
for (j = 0; j < ncopies; j++)
{
tree vec_inv;
@@ -4725,33 +4729,16 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
{
tree newref, newoff;
gimple incr;
- if (TREE_CODE (ref) == ARRAY_REF)
- {
- newref = build4 (ARRAY_REF, TREE_TYPE (ref),
- unshare_expr (TREE_OPERAND (ref, 0)),
- running_off,
- NULL_TREE, NULL_TREE);
- if (!useless_type_conversion_p (TREE_TYPE (vectype),
- TREE_TYPE (newref)))
- newref = build1 (VIEW_CONVERT_EXPR, TREE_TYPE (vectype),
- newref);
- }
- else
- newref = build2 (MEM_REF, TREE_TYPE (vectype),
- running_off,
- TREE_OPERAND (ref, 1));
+ newref = build2 (MEM_REF, TREE_TYPE (vectype),
+ running_off, alias_off);
newref = force_gimple_operand_gsi (gsi, newref, true,
NULL_TREE, true,
GSI_SAME_STMT);
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, newref);
newoff = copy_ssa_name (running_off, NULL);
- if (POINTER_TYPE_P (TREE_TYPE (newoff)))
- incr = gimple_build_assign_with_ops (POINTER_PLUS_EXPR, newoff,
- running_off, stride_step);
- else
- incr = gimple_build_assign_with_ops (PLUS_EXPR, newoff,
- running_off, stride_step);
+ incr = gimple_build_assign_with_ops (POINTER_PLUS_EXPR, newoff,
+ running_off, stride_step);
vect_finish_stmt_generation (stmt, incr, gsi);
running_off = newoff;
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h
index 6fb9cfd39d8..8d3a3def1f4 100644
--- a/gcc/tree-vectorizer.h
+++ b/gcc/tree-vectorizer.h
@@ -923,7 +923,6 @@ extern bool vect_analyze_data_ref_accesses (loop_vec_info, bb_vec_info);
extern bool vect_prune_runtime_alias_test_list (loop_vec_info);
extern tree vect_check_gather (gimple, loop_vec_info, tree *, tree *,
int *);
-extern bool vect_check_strided_load (gimple, loop_vec_info, tree *, tree *);
extern bool vect_analyze_data_refs (loop_vec_info, bb_vec_info, int *);
extern tree vect_create_data_ref_ptr (gimple, tree, struct loop *, tree,
tree *, gimple_stmt_iterator *,
diff --git a/gcc/tree.h b/gcc/tree.h
index 3bc39931d27..c3c814ca33a 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -3198,13 +3198,14 @@ struct GTY(()) tree_decl_with_vis {
/* Belong to VAR_DECL exclusively. */
unsigned defer_output : 1;
unsigned hard_register : 1;
- unsigned thread_local : 1;
unsigned common_flag : 1;
unsigned in_text_section : 1;
unsigned in_constant_pool : 1;
unsigned dllimport_flag : 1;
/* Don't belong to VAR_DECL exclusively. */
unsigned weak_flag : 1;
+ /* When SECTION_NAME is implied by -ffunction-section. */
+ unsigned implicit_section_name_p : 1;
unsigned seen_in_bind_expr : 1;
unsigned comdat_flag : 1;
@@ -3217,9 +3218,7 @@ struct GTY(()) tree_decl_with_vis {
unsigned init_priority_p : 1;
/* Used by C++ only. Might become a generic decl flag. */
unsigned shadowed_for_var_p : 1;
- /* When SECTION_NAME is implied by -ffunsection-section. */
- unsigned implicit_section_name_p : 1;
- /* 13 unused bits. */
+ /* 14 unused bits. */
};
extern tree decl_debug_expr_lookup (tree);
diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c
index 714acb69692..0db15625b70 100644
--- a/gcc/var-tracking.c
+++ b/gcc/var-tracking.c
@@ -9502,31 +9502,34 @@ vt_add_function_parameter (tree parm)
/* DECL_INCOMING_RTL uses the INCOMING_REGNO of parameter registers.
If the target machine has an explicit window save instruction, the
actual entry value is the corresponding OUTGOING_REGNO instead. */
- if (REG_P (incoming)
- && HARD_REGISTER_P (incoming)
- && OUTGOING_REGNO (REGNO (incoming)) != REGNO (incoming))
+ if (HAVE_window_save && !crtl->uses_only_leaf_regs)
{
- parm_reg_t p;
- p.incoming = incoming;
- incoming
- = gen_rtx_REG_offset (incoming, GET_MODE (incoming),
- OUTGOING_REGNO (REGNO (incoming)), 0);
- p.outgoing = incoming;
- vec_safe_push (windowed_parm_regs, p);
- }
- else if (MEM_P (incoming)
- && REG_P (XEXP (incoming, 0))
- && HARD_REGISTER_P (XEXP (incoming, 0)))
- {
- rtx reg = XEXP (incoming, 0);
- if (OUTGOING_REGNO (REGNO (reg)) != REGNO (reg))
+ if (REG_P (incoming)
+ && HARD_REGISTER_P (incoming)
+ && OUTGOING_REGNO (REGNO (incoming)) != REGNO (incoming))
{
parm_reg_t p;
- p.incoming = reg;
- reg = gen_raw_REG (GET_MODE (reg), OUTGOING_REGNO (REGNO (reg)));
- p.outgoing = reg;
+ p.incoming = incoming;
+ incoming
+ = gen_rtx_REG_offset (incoming, GET_MODE (incoming),
+ OUTGOING_REGNO (REGNO (incoming)), 0);
+ p.outgoing = incoming;
vec_safe_push (windowed_parm_regs, p);
- incoming = replace_equiv_address_nv (incoming, reg);
+ }
+ else if (MEM_P (incoming)
+ && REG_P (XEXP (incoming, 0))
+ && HARD_REGISTER_P (XEXP (incoming, 0)))
+ {
+ rtx reg = XEXP (incoming, 0);
+ if (OUTGOING_REGNO (REGNO (reg)) != REGNO (reg))
+ {
+ parm_reg_t p;
+ p.incoming = reg;
+ reg = gen_raw_REG (GET_MODE (reg), OUTGOING_REGNO (REGNO (reg)));
+ p.outgoing = reg;
+ vec_safe_push (windowed_parm_regs, p);
+ incoming = replace_equiv_address_nv (incoming, reg);
+ }
}
}
#endif
diff --git a/libcpp/po/ChangeLog b/libcpp/po/ChangeLog
index 493ece35b27..6f3c3800cd0 100644
--- a/libcpp/po/ChangeLog
+++ b/libcpp/po/ChangeLog
@@ -1,3 +1,7 @@
+2013-02-05 Joseph Myers <joseph@codesourcery.com>
+
+ * eo.po: New.
+
2012-09-26 Joseph Myers <joseph@codesourcery.com>
* sv.po: Update.
diff --git a/libcpp/po/eo.po b/libcpp/po/eo.po
new file mode 100644
index 00000000000..601ff2d57c4
--- /dev/null
+++ b/libcpp/po/eo.po
@@ -0,0 +1,955 @@
+# Translation of cpplib to Esperanto
+# Copyright (C) 2013 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gcc package.
+# Felipe Castro <fefcas@gmail.com>, 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: cpplib 4.7.2\n"
+"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
+"POT-Creation-Date: 2012-01-27 16:12+0000\n"
+"PO-Revision-Date: 2013-02-05 16:18-0300\n"
+"Last-Translator: Felipe Castro <fefcas@gmail.com>\n"
+"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: charset.c:674
+#, c-format
+msgid "conversion from %s to %s not supported by iconv"
+msgstr "Konverto de %s al %s ne estas subtenata de iconv"
+
+#: charset.c:677
+msgid "iconv_open"
+msgstr "iconv_open"
+
+#: charset.c:685
+#, c-format
+msgid "no iconv implementation, cannot convert from %s to %s"
+msgstr "neniu realigo de iconv, ne eblas konverti de %s al %s"
+
+#: charset.c:781
+#, c-format
+msgid "character 0x%lx is not in the basic source character set\n"
+msgstr "la signo 0x%lx ne estas en la baza fonta signaro\n"
+
+#: charset.c:798 charset.c:1444
+msgid "converting to execution character set"
+msgstr "konverto al plenumiga signaro"
+
+#: charset.c:804
+#, c-format
+msgid "character 0x%lx is not unibyte in execution character set"
+msgstr "la signo 0x%lx ne estas unubajta en plenumiga signaro"
+
+#: charset.c:928
+#, c-format
+msgid "Character %x might not be NFKC"
+msgstr "La signo %x povas ne esti NFKC"
+
+#: charset.c:994
+msgid "universal character names are only valid in C++ and C99"
+msgstr "universalaj signo-nomoj nur validas en C++ kaj C99"
+
+#: charset.c:997
+#, c-format
+msgid "the meaning of '\\%c' is different in traditional C"
+msgstr "la signifo de '\\%c' estas malsama en tradicia C"
+
+#: charset.c:1006
+msgid "In _cpp_valid_ucn but not a UCN"
+msgstr "En _cpp_valid_ucn sed ne estas UCN"
+
+#: charset.c:1031
+#, c-format
+msgid "incomplete universal character name %.*s"
+msgstr "nekompleta universala signo-nomo %.*s"
+
+#: charset.c:1046
+#, c-format
+msgid "%.*s is not a valid universal character"
+msgstr "%.*s ne estas valida universala signo"
+
+#: charset.c:1056 lex.c:1052
+msgid "'$' in identifier or number"
+msgstr "'$' en identiganto aŭ numero"
+
+#: charset.c:1066
+#, c-format
+msgid "universal character %.*s is not valid in an identifier"
+msgstr "la universala signo %.*s ne estas valida en identiganto"
+
+#: charset.c:1070
+#, c-format
+msgid "universal character %.*s is not valid at the start of an identifier"
+msgstr "la universala signo %.*s ne estas valida en komenco de identiganto"
+
+#: charset.c:1102 charset.c:1674
+msgid "converting UCN to source character set"
+msgstr "konverto de UCN al la fonta signaro"
+
+#: charset.c:1106
+msgid "converting UCN to execution character set"
+msgstr "konverto de UCN al la plenumiga signaro"
+
+#: charset.c:1178
+msgid "the meaning of '\\x' is different in traditional C"
+msgstr "la signifo de '\\x' estas malsama en tradicia C"
+
+#: charset.c:1195
+msgid "\\x used with no following hex digits"
+msgstr "\\x estis uzata kun la jenaj deksesumaj ciferoj"
+
+#: charset.c:1202
+msgid "hex escape sequence out of range"
+msgstr "deksesuma eskapa sekvo estas for de intervalo"
+
+#: charset.c:1240
+msgid "octal escape sequence out of range"
+msgstr "okuma eskapa sekvo estas for de intervalo"
+
+#: charset.c:1306
+msgid "the meaning of '\\a' is different in traditional C"
+msgstr "la signifo de '\\a' estas malsama en tradicia C"
+
+#: charset.c:1313
+#, c-format
+msgid "non-ISO-standard escape sequence, '\\%c'"
+msgstr "ne-ISO-norma eskapa sekvo, '\\%c'"
+
+#: charset.c:1321
+#, c-format
+msgid "unknown escape sequence: '\\%c'"
+msgstr "nekonata eskapa sekvo: '\\%c'"
+
+#: charset.c:1329
+#, c-format
+msgid "unknown escape sequence: '\\%s'"
+msgstr "nekonata eskapa sekvo: '\\%s'"
+
+#: charset.c:1336
+msgid "converting escape sequence to execution character set"
+msgstr "konverto de eskapa sekvo al plenumiga signaro"
+
+#: charset.c:1509 charset.c:1573
+msgid "character constant too long for its type"
+msgstr "signa konstanto tro longas por ties tipo"
+
+#: charset.c:1512
+msgid "multi-character character constant"
+msgstr "plursigna signa konstanto"
+
+#: charset.c:1612
+msgid "empty character constant"
+msgstr "malplena signa konstanto"
+
+#: charset.c:1721
+#, c-format
+msgid "failure to convert %s to %s"
+msgstr "problemo por konverti %s al %s"
+
+#: directives.c:223 directives.c:249
+#, c-format
+msgid "extra tokens at end of #%s directive"
+msgstr "kromaj ĵetonoj ĉe la fino de la instrukcio #%s"
+
+#: directives.c:356
+#, c-format
+msgid "#%s is a GCC extension"
+msgstr "#%s estas aldono de GCC"
+
+#: directives.c:361
+#, c-format
+msgid "#%s is a deprecated GCC extension"
+msgstr "#%s estas evitinda aldono de GCC"
+
+#: directives.c:374
+msgid "suggest not using #elif in traditional C"
+msgstr "sugesti ne uzi #elif en tradicia C"
+
+#: directives.c:377
+#, c-format
+msgid "traditional C ignores #%s with the # indented"
+msgstr "tradicia C preteratentas #%s kun la # krommarĝenita"
+
+#: directives.c:381
+#, c-format
+msgid "suggest hiding #%s from traditional C with an indented #"
+msgstr "sugesti kaŝi #%s el tradicia C per krommarĝenigo de #"
+
+#: directives.c:407
+msgid "embedding a directive within macro arguments is not portable"
+msgstr "enkorpigi instrukcion ene de makroaj argumentoj ne estas portebla"
+
+#: directives.c:427
+msgid "style of line directive is a GCC extension"
+msgstr "stilo de lini-instrukcioj estas aldono de GCC"
+
+#: directives.c:482
+#, c-format
+msgid "invalid preprocessing directive #%s"
+msgstr "malvalida antaŭproceza instrukcio #%s"
+
+#: directives.c:550
+msgid "\"defined\" cannot be used as a macro name"
+msgstr "\"defined\" ne povas estis uzata kiel makroa nomo"
+
+#: directives.c:556
+#, c-format
+msgid "\"%s\" cannot be used as a macro name as it is an operator in C++"
+msgstr "\"%s\" ne povas esti uzata kiel makroa nomo ĉar ĝi estas operatoro en C++"
+
+#: directives.c:559
+#, c-format
+msgid "no macro name given in #%s directive"
+msgstr "neniu makroa nomo estas indikita en la instrukcio #%s"
+
+#: directives.c:562
+msgid "macro names must be identifiers"
+msgstr "makroaj nomoj devas esti identigantoj"
+
+#: directives.c:611
+#, c-format
+msgid "undefining \"%s\""
+msgstr "ni maldifinas \"%s\""
+
+#: directives.c:666
+msgid "missing terminating > character"
+msgstr "mankas finiganta signo >"
+
+#: directives.c:725
+#, c-format
+msgid "#%s expects \"FILENAME\" or <FILENAME>"
+msgstr "#%s atendas \"DOSIERNOMO\" aŭ <DOSIERNOMO>"
+
+#: directives.c:771
+#, c-format
+msgid "empty filename in #%s"
+msgstr "malplena dosiernomo en #%s"
+
+#: directives.c:781
+msgid "#include nested too deeply"
+msgstr "#include estas ingita tro profunde"
+
+#: directives.c:822
+msgid "#include_next in primary source file"
+msgstr "#include_next en ĉefa fonta dosiero"
+
+#: directives.c:848
+#, c-format
+msgid "invalid flag \"%s\" in line directive"
+msgstr "malvalida flago \"%s\" en lini-instrukcio"
+
+#: directives.c:908
+msgid "unexpected end of file after #line"
+msgstr "neatendita dosierfino post #line"
+
+#: directives.c:911
+#, c-format
+msgid "\"%s\" after #line is not a positive integer"
+msgstr "\"%s\" post #line ne estas pozitiva entjero"
+
+#: directives.c:917 directives.c:919
+msgid "line number out of range"
+msgstr "lininumero estas for de intervalo"
+
+#: directives.c:932 directives.c:1012
+#, c-format
+msgid "\"%s\" is not a valid filename"
+msgstr "\"%s\" ne estas valida dosiernomo"
+
+#: directives.c:972
+#, c-format
+msgid "\"%s\" after # is not a positive integer"
+msgstr "\"%s\" post # ne estas pozitiva entjero"
+
+#: directives.c:1067 directives.c:1069 directives.c:1071
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: directives.c:1095
+#, c-format
+msgid "invalid #%s directive"
+msgstr "malvalida instrukcio #%s"
+
+#: directives.c:1158
+#, c-format
+msgid "registering pragmas in namespace \"%s\" with mismatched name expansion"
+msgstr "registro de pragma en nomspaco \"%s\" kun nekongrua nom-etendigo"
+
+#: directives.c:1167
+#, c-format
+msgid "registering pragma \"%s\" with name expansion and no namespace"
+msgstr "registro de pragma \"%s\" kun nom-etendigo kaj sen nomspaco"
+
+#: directives.c:1185
+#, c-format
+msgid "registering \"%s\" as both a pragma and a pragma namespace"
+msgstr "registro de \"%s\" kaj kiel pragma kaj kiel pragma-nomspaco"
+
+#: directives.c:1188
+#, c-format
+msgid "#pragma %s %s is already registered"
+msgstr "#pragma %s %s jam estas registrita"
+
+#: directives.c:1191
+#, c-format
+msgid "#pragma %s is already registered"
+msgstr "#pragma %s jam estas registrita"
+
+#: directives.c:1221
+msgid "registering pragma with NULL handler"
+msgstr "registro de pragma kun traktilo de NULL"
+
+#: directives.c:1462
+msgid "#pragma once in main file"
+msgstr "#pragma unufoje en ĉefdosiero"
+
+#: directives.c:1485
+msgid "invalid #pragma push_macro directive"
+msgstr "malvalida instrukcio #pragma push_macro"
+
+#: directives.c:1540
+msgid "invalid #pragma pop_macro directive"
+msgstr "malvalida instrukcio #pragma pop_macro"
+
+#: directives.c:1595
+msgid "invalid #pragma GCC poison directive"
+msgstr "malvalida instrukcio #pragma GCC poison"
+
+#: directives.c:1604
+#, c-format
+msgid "poisoning existing macro \"%s\""
+msgstr "venenigo de ekzistanta makroo \"%s\""
+
+#: directives.c:1623
+msgid "#pragma system_header ignored outside include file"
+msgstr "#pragma system_header estis preteratentata for de inkluziv-dosiero"
+
+#: directives.c:1648
+#, c-format
+msgid "cannot find source file %s"
+msgstr "ne eblas trovi la fontan dosieron %s"
+
+#: directives.c:1652
+#, c-format
+msgid "current file is older than %s"
+msgstr "nuna dosiero estas pli malnova ol %s"
+
+#: directives.c:1837
+msgid "_Pragma takes a parenthesized string literal"
+msgstr "_Pragma prenas kurbkrampitan ĉenan literaĵon"
+
+#: directives.c:1958
+msgid "#else without #if"
+msgstr "#else sen #if"
+
+#: directives.c:1963
+msgid "#else after #else"
+msgstr "#else post #else"
+
+#: directives.c:1965 directives.c:1998
+msgid "the conditional began here"
+msgstr "la kondiĉo komencis ĉi tie"
+
+#: directives.c:1991
+msgid "#elif without #if"
+msgstr "#elif sen #if"
+
+#: directives.c:1996
+msgid "#elif after #else"
+msgstr "#elif post #else"
+
+#: directives.c:2034
+msgid "#endif without #if"
+msgstr "#endif sen #if"
+
+#: directives.c:2114
+msgid "missing '(' after predicate"
+msgstr "mankas '(' post predikato"
+
+#: directives.c:2129
+msgid "missing ')' to complete answer"
+msgstr "mankas ')' por kompletigi respondon"
+
+#: directives.c:2149
+msgid "predicate's answer is empty"
+msgstr "respondo de predikato estas malplena"
+
+#: directives.c:2176
+msgid "assertion without predicate"
+msgstr "aserto sen predikato"
+
+#: directives.c:2179
+msgid "predicate must be an identifier"
+msgstr "predikato devas esti identiganto"
+
+#: directives.c:2265
+#, c-format
+msgid "\"%s\" re-asserted"
+msgstr "\"%s\" estas re-asertita"
+
+#: directives.c:2556
+#, c-format
+msgid "unterminated #%s"
+msgstr "nefinigita #%s"
+
+#: directives-only.c:222 lex.c:2133 traditional.c:163
+msgid "unterminated comment"
+msgstr "nefinigita komento"
+
+#: errors.c:235
+msgid "stdout"
+msgstr "ĉefeligujo"
+
+#: errors.c:237
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: expr.c:424
+msgid "too many decimal points in number"
+msgstr "tro multaj frakciaj ciferoj en numero"
+
+#: expr.c:453 expr.c:547
+msgid "fixed-point constants are a GCC extension"
+msgstr "fisk-komaj konstantoj estas aldono de GCC"
+
+#: expr.c:466
+#, c-format
+msgid "invalid digit \"%c\" in binary constant"
+msgstr "malvalida cifero \"%c\" en duuma konstanto"
+
+#: expr.c:468
+#, c-format
+msgid "invalid digit \"%c\" in octal constant"
+msgstr "malvalida cifero \"%c\" en okuma konstanto"
+
+#: expr.c:476
+msgid "invalid prefix \"0b\" for floating constant"
+msgstr "malvalida prefikso \"0b\" por glitkoma konstanto"
+
+#: expr.c:481
+msgid "no digits in hexadecimal floating constant"
+msgstr "neniu cifero en deksesuma glitkoma konstanto"
+
+#: expr.c:485
+msgid "use of C99 hexadecimal floating constant"
+msgstr "uzo de deksesuma glitkoma konstanto laŭ C99"
+
+#: expr.c:494
+msgid "exponent has no digits"
+msgstr "eksponento ne havas ciferojn"
+
+#: expr.c:501
+msgid "hexadecimal floating constants require an exponent"
+msgstr "deksesumaj glitkomaj konstantoj postulas eksponenton"
+
+#: expr.c:515
+#, c-format
+msgid "invalid suffix \"%.*s\" on floating constant"
+msgstr "malvalida sufikso \"%.*s\" en glitkoma konstanto"
+
+#: expr.c:526 expr.c:585
+#, c-format
+msgid "traditional C rejects the \"%.*s\" suffix"
+msgstr "tradicia C rifuzas la sufikson \"%.*s\""
+
+#: expr.c:534
+msgid "suffix for double constant is a GCC extension"
+msgstr "sufikso por duobla konstanto estas aldono de GCC"
+
+#: expr.c:540
+#, c-format
+msgid "invalid suffix \"%.*s\" with hexadecimal floating constant"
+msgstr "malvalida sufikso \"%.*s\" kun deksesuma glitkoma konstanto"
+
+#: expr.c:551
+msgid "decimal float constants are a GCC extension"
+msgstr "dekumaj glitkomaj konstantoj estas aldono de GCC"
+
+#: expr.c:569
+#, c-format
+msgid "invalid suffix \"%.*s\" on integer constant"
+msgstr "malvalida sufikso \"%.*s\" en entjera konstanto"
+
+#: expr.c:593
+msgid "use of C++0x long long integer constant"
+msgstr "uzo de konstanto C++0x long long integer"
+
+#: expr.c:594
+msgid "use of C99 long long integer constant"
+msgstr "uzo de konstanto de C99 long long integer"
+
+#: expr.c:608
+msgid "imaginary constants are a GCC extension"
+msgstr "imaginaraj konstantoj estas aldono de GCC"
+
+#: expr.c:611
+msgid "binary constants are a GCC extension"
+msgstr "duumaj konstantoj estas aldono de GCC"
+
+#: expr.c:704
+msgid "integer constant is too large for its type"
+msgstr "entjera konstanto tro larĝas pro ties tipo"
+
+#: expr.c:735
+msgid "integer constant is so large that it is unsigned"
+msgstr "entjera konstanto estas tiom larĝa ke ĝi estas sen-signuma"
+
+#: expr.c:830
+msgid "missing ')' after \"defined\""
+msgstr "mankas ')' post \"defined\""
+
+#: expr.c:837
+msgid "operator \"defined\" requires an identifier"
+msgstr "la operatoro \"defined\" postulas identiganton"
+
+#: expr.c:845
+#, c-format
+msgid "(\"%s\" is an alternative token for \"%s\" in C++)"
+msgstr "(\"%s\" estas alternativa ĵetono por \"%s\" en C++)"
+
+#: expr.c:855
+msgid "this use of \"defined\" may not be portable"
+msgstr "tiu ĉi uzo de \"defined\" eble ne estas portebla"
+
+#: expr.c:914
+msgid "user-defined literal in preprocessor expression"
+msgstr "uzant-difinita literaĵo en antaŭproceza esprimo"
+
+#: expr.c:919
+msgid "floating constant in preprocessor expression"
+msgstr "glitkoma konstanto en antaŭproceza esprimo"
+
+#: expr.c:925
+msgid "imaginary number in preprocessor expression"
+msgstr "imaginara numero en antaŭproceza esprimo"
+
+#: expr.c:972
+#, c-format
+msgid "\"%s\" is not defined"
+msgstr "\"%s\" ne estas difinita"
+
+#: expr.c:984
+msgid "assertions are a GCC extension"
+msgstr "asertoj estas aldono de GCC"
+
+#: expr.c:987
+msgid "assertions are a deprecated extension"
+msgstr "asertoj estas evitinda aldono"
+
+#: expr.c:1120 expr.c:1149
+#, c-format
+msgid "missing binary operator before token \"%s\""
+msgstr "mankas duuma operatoro antaŭ la ĵetono \"%s\""
+
+#: expr.c:1140
+#, c-format
+msgid "token \"%s\" is not valid in preprocessor expressions"
+msgstr "la ĵetono \"%s\" ne estas valida en antaŭprocezaj esprimoj"
+
+#: expr.c:1157
+msgid "missing expression between '(' and ')'"
+msgstr "mankas esprimo inter '(' kaj ')'"
+
+#: expr.c:1160
+#, c-format
+msgid "%s with no expression"
+msgstr "%s sen iu ajn esprimo"
+
+#: expr.c:1163
+#, c-format
+msgid "operator '%s' has no right operand"
+msgstr "la operatoro '%s' havas neniun desktran operaciaton"
+
+#: expr.c:1168
+#, c-format
+msgid "operator '%s' has no left operand"
+msgstr "la operatoro '%s' havas neniun maldesktran operaciaton"
+
+#: expr.c:1194
+msgid " ':' without preceding '?'"
+msgstr " ':' sen antaŭanta '?'"
+
+#: expr.c:1222
+#, c-format
+msgid "unbalanced stack in %s"
+msgstr "neekvilibrita stako en %s"
+
+#: expr.c:1242
+#, c-format
+msgid "impossible operator '%u'"
+msgstr "neebla operatoro '%u'"
+
+#: expr.c:1343
+msgid "missing ')' in expression"
+msgstr "mankas ')' en esprimo"
+
+#: expr.c:1372
+msgid "'?' without following ':'"
+msgstr "'?' sen sekvanta ':'"
+
+#: expr.c:1382
+msgid "integer overflow in preprocessor expression"
+msgstr "entjera troigo en antaŭproceza esprimo"
+
+#: expr.c:1387
+msgid "missing '(' in expression"
+msgstr "mankas '(' en esprimo"
+
+#: expr.c:1419
+#, c-format
+msgid "the left operand of \"%s\" changes sign when promoted"
+msgstr "la maldekstra operaciato de \"%s\" ŝanĝas signumon kiam promociita"
+
+#: expr.c:1424
+#, c-format
+msgid "the right operand of \"%s\" changes sign when promoted"
+msgstr "la dekstra operaciato de \"%s\" ŝanĝas signumon kiam promociita"
+
+#: expr.c:1683
+msgid "traditional C rejects the unary plus operator"
+msgstr "tradicia C rifuzas la unuloka plusan operatoron"
+
+#: expr.c:1766
+msgid "comma operator in operand of #if"
+msgstr "koma operatoro en operaciado de #if"
+
+#: expr.c:1902
+msgid "division by zero in #if"
+msgstr "divido per nulo en #if"
+
+#: files.c:463
+msgid "NULL directory in find_file"
+msgstr "NULL-dosierujo en find_file"
+
+#: files.c:500
+msgid "one or more PCH files were found, but they were invalid"
+msgstr "unu aŭ pli dosieroj PCH estis trovataj, sed ili estas malvalidaj"
+
+#: files.c:503
+msgid "use -Winvalid-pch for more information"
+msgstr "uzu -Winvalid-pch por pli da informo"
+
+#: files.c:594
+#, c-format
+msgid "%s is a block device"
+msgstr "%s estas blok-aparato"
+
+#: files.c:611
+#, c-format
+msgid "%s is too large"
+msgstr "%s tro larĝas"
+
+#: files.c:646
+#, c-format
+msgid "%s is shorter than expected"
+msgstr "%s estas pli mallonga ol atendite"
+
+#: files.c:881
+#, c-format
+msgid "no include path in which to search for %s"
+msgstr "estas neniu inkluziva vojo por serĉi %s"
+
+#: files.c:1305
+msgid "Multiple include guards may be useful for:\n"
+msgstr "Multoblaj inkluzivaj gardnodoj povas esti utilaj por:\n"
+
+#: init.c:512
+msgid "cppchar_t must be an unsigned type"
+msgstr "cppchar_t devas esti sensignuma tipo"
+
+#: init.c:516
+#, c-format
+msgid "preprocessor arithmetic has maximum precision of %lu bits; target requires %lu bits"
+msgstr "antaŭproceza aritmetiko havas maksimuman precizecon de %lu bitoj; la celo postulas %lu bitojn"
+
+#: init.c:523
+msgid "CPP arithmetic must be at least as precise as a target int"
+msgstr "Aritmetiko de CPP devas esti minimue tiel preciza kiel la celata int"
+
+#: init.c:526
+msgid "target char is less than 8 bits wide"
+msgstr "la celata char estas pli eta ol 8 bitoj"
+
+#: init.c:530
+msgid "target wchar_t is narrower than target char"
+msgstr "la celata wchar_t estas pli mallarĝa ol la celata char"
+
+#: init.c:534
+msgid "target int is narrower than target char"
+msgstr "la celata int estas pli mallarĝa ol la celata char"
+
+#: init.c:539
+msgid "CPP half-integer narrower than CPP character"
+msgstr "duon-entjero de CPP estas pli mallarĝa ol la signo de CPP"
+
+#: init.c:543
+#, c-format
+msgid "CPP on this host cannot handle wide character constants over %lu bits, but the target requires %lu bits"
+msgstr "CPP en tiu ĉi komputilo ne povas trakti larĝ-signajn konstantoj plilarĝaj ol %lu bitoj, sed la celato postulas %lu bitojn"
+
+#: lex.c:846
+msgid "backslash and newline separated by space"
+msgstr "retroklino kaj novlinio apartitaj de spaco"
+
+#: lex.c:851
+msgid "backslash-newline at end of file"
+msgstr "retroklino-novlinio ĉe dosierfino"
+
+#: lex.c:867
+#, c-format
+msgid "trigraph ??%c converted to %c"
+msgstr "trigrafikaĵo ??%c konvertita al %c"
+
+#: lex.c:875
+#, c-format
+msgid "trigraph ??%c ignored, use -trigraphs to enable"
+msgstr "trigrafikaĵo ??%c preteratentita, uzu -trigraphs por ebligi"
+
+#: lex.c:924
+msgid "\"/*\" within comment"
+msgstr "\"/*\" ene de komento"
+
+#: lex.c:982
+#, c-format
+msgid "%s in preprocessing directive"
+msgstr "%s en antaŭproceza instrukcio"
+
+#: lex.c:991
+msgid "null character(s) ignored"
+msgstr "nul-signo(j) estas preteratentitaj"
+
+#: lex.c:1028
+#, c-format
+msgid "`%.*s' is not in NFKC"
+msgstr "'%.*s' ne estas en NFKC"
+
+#: lex.c:1031
+#, c-format
+msgid "`%.*s' is not in NFC"
+msgstr "'%.*s' ne estas en NFC"
+
+#: lex.c:1099 lex.c:1176
+#, c-format
+msgid "attempt to use poisoned \"%s\""
+msgstr "provo uzi venenitan \"%s\""
+
+#: lex.c:1107 lex.c:1184
+msgid "__VA_ARGS__ can only appear in the expansion of a C99 variadic macro"
+msgstr "__VA_ARGS__ nur povas aperi en la etendigo de variebl-argumenta makroo de C99"
+
+#: lex.c:1113 lex.c:1190
+#, c-format
+msgid "identifier \"%s\" is a special operator name in C++"
+msgstr "la identiganto \"%s\" estas speciala operator-nomo en C++"
+
+#: lex.c:1334
+msgid "raw string delimiter longer than 16 characters"
+msgstr "kruda ĉen-apartigilo pli longas ol 16 signoj"
+
+#: lex.c:1337
+#, c-format
+msgid "invalid character '%c' in raw string delimiter"
+msgstr "malvalida signo '%c' en kruda ĉen-apartigilo"
+
+#: lex.c:1460 lex.c:1482
+msgid "unterminated raw string"
+msgstr "nefinigita kruda ĉeno"
+
+#: lex.c:1601
+msgid "null character(s) preserved in literal"
+msgstr "nul-signo(j) tenitaj en literaĵo"
+
+#: lex.c:1604
+#, c-format
+msgid "missing terminating %c character"
+msgstr "mankas finigantan signon %c"
+
+#: lex.c:2144
+msgid "C++ style comments are not allowed in ISO C90"
+msgstr "Komentojn laŭ la estilo de C++ ne estas permesataj en ISO C90"
+
+#: lex.c:2146
+msgid "(this will be reported only once per input file)"
+msgstr "(tio ĉi estos raportata nur po unu foje por ĉiu enigdosiero)"
+
+#: lex.c:2151
+msgid "multi-line comment"
+msgstr "plurlinia komento"
+
+#: lex.c:2471
+#, c-format
+msgid "unspellable token %s"
+msgstr "neliterumebla ĵetono %s"
+
+#: macro.c:188
+#, c-format
+msgid "macro \"%s\" is not used"
+msgstr "makroo \"%s\" ne estas uzata"
+
+#: macro.c:226 macro.c:423
+#, c-format
+msgid "invalid built-in macro \"%s\""
+msgstr "malvalida enkonstruita makroo \"%s\""
+
+#: macro.c:260
+msgid "could not determine file timestamp"
+msgstr "ne eblis determini la dosieran tempomarkon"
+
+#: macro.c:358
+msgid "could not determine date and time"
+msgstr "ne eblis determini la daton kaj horon"
+
+#: macro.c:374
+msgid "__COUNTER__ expanded inside directive with -fdirectives-only"
+msgstr "__COUNTER__ estas etendigata interne de instrukcio per -fdirectives-only"
+
+#: macro.c:532
+msgid "invalid string literal, ignoring final '\\'"
+msgstr "malvalida ĉena literaĵo, ni preterpasas finan '\\'"
+
+#: macro.c:592
+#, c-format
+msgid "pasting \"%s\" and \"%s\" does not give a valid preprocessing token"
+msgstr "algluo de \"%s\" kaj \"%s\" ne rezultas en valida antaŭproceza ĵetono"
+
+#: macro.c:682
+msgid "ISO C99 requires rest arguments to be used"
+msgstr "ISO C99 postulas ke restantaj argumentoj estu uzataj"
+
+#: macro.c:687
+#, c-format
+msgid "macro \"%s\" requires %u arguments, but only %u given"
+msgstr "la makroo \"%s\" postulas %u argumentojn, sed nur %u estis indikataj"
+
+#: macro.c:692
+#, c-format
+msgid "macro \"%s\" passed %u arguments, but takes just %u"
+msgstr "la makroo \"%s\" pasis %u argumentojn, sed ĝi prenas nur %u"
+
+#: macro.c:886 traditional.c:681
+#, c-format
+msgid "unterminated argument list invoking macro \"%s\""
+msgstr "nefinigita argumentlisto alvokanta la makroon \"%s\""
+
+#: macro.c:1026
+#, c-format
+msgid "function-like macro \"%s\" must be used with arguments in traditional C"
+msgstr "funkci-simila makroo \"%s\" devas esti uzata kun argumentoj laŭ tradicia C"
+
+#: macro.c:1694
+#, c-format
+msgid "invoking macro %s argument %d: empty macro arguments are undefined in ISO C90 and ISO C++98"
+msgstr "alvoko de makroo %s, argumento %d: malplenaj makro-argumentoj estas nedifinitaj en ISO C90 kaj ISO C++98"
+
+#: macro.c:2596
+#, c-format
+msgid "duplicate macro parameter \"%s\""
+msgstr "duobligata makro-parametro \"%s\""
+
+#: macro.c:2642
+#, c-format
+msgid "\"%s\" may not appear in macro parameter list"
+msgstr "\"%s\" ne povas aperi en makroa parametro-listo"
+
+#: macro.c:2650
+msgid "macro parameters must be comma-separated"
+msgstr "makro-parametroj devas esti apartitaj per komoj"
+
+#: macro.c:2667
+msgid "parameter name missing"
+msgstr "mankas parametra nomo"
+
+#: macro.c:2685
+msgid "anonymous variadic macros were introduced in C99"
+msgstr "sennomaj variebl-argumentaj makrooj estis enkondukataj en C99"
+
+#: macro.c:2690
+msgid "ISO C does not permit named variadic macros"
+msgstr "ISO C ne permesas nomitajn variebl-argumentajn makroojn"
+
+#: macro.c:2699
+msgid "missing ')' in macro parameter list"
+msgstr "mankas ')' en makroa parametro-listo"
+
+#: macro.c:2748
+msgid "'##' cannot appear at either end of a macro expansion"
+msgstr "'##' ne povas aperi ĉe iu ajn fino de makroa etendigo"
+
+#: macro.c:2783
+msgid "ISO C99 requires whitespace after the macro name"
+msgstr "ISO C99 postulas blankspacon post la makroa nomo"
+
+#: macro.c:2807
+msgid "missing whitespace after the macro name"
+msgstr "mankas blankspacon post la makroa nomo"
+
+#: macro.c:2841
+msgid "'#' is not followed by a macro parameter"
+msgstr "'#' ne estas sekvata de makroa parametro"
+
+#: macro.c:2999
+#, c-format
+msgid "\"%s\" redefined"
+msgstr "\"%s\" estas redifinita"
+
+#: macro.c:3005
+msgid "this is the location of the previous definition"
+msgstr "tiu ĉi estas la loko de la antaŭa difino"
+
+#: macro.c:3066
+#, c-format
+msgid "macro argument \"%s\" would be stringified in traditional C"
+msgstr "makroa argumento \"%s\" devus esti ĉenigita laŭ tradicia C"
+
+#: macro.c:3093
+#, c-format
+msgid "invalid hash type %d in cpp_macro_definition"
+msgstr "malvalida haketa tipo %d en cpp_macro_definition"
+
+#: pch.c:88 pch.c:336 pch.c:348 pch.c:366 pch.c:372 pch.c:381 pch.c:388
+msgid "while writing precompiled header"
+msgstr "dum skribo de antaŭkompilita kapo"
+
+#: pch.c:608
+#, c-format
+msgid "%s: not used because `%.*s' is poisoned"
+msgstr "%s: ne uzata ĉar '%.*s' estas venenita"
+
+#: pch.c:630
+#, c-format
+msgid "%s: not used because `%.*s' not defined"
+msgstr "%s: ne uzata ĉar '%.*s' ne estas difinita"
+
+#: pch.c:642
+#, c-format
+msgid "%s: not used because `%.*s' defined as `%s' not `%.*s'"
+msgstr "%s: ne uzata ĉar '%.*s' estas difinita kiel '%s', ne '%.*s'"
+
+#: pch.c:683
+#, c-format
+msgid "%s: not used because `%s' is defined"
+msgstr "%s: ne uzata ĉar '%s' estas difinita"
+
+#: pch.c:703
+#, c-format
+msgid "%s: not used because `__COUNTER__' is invalid"
+msgstr "%s: ne uzata ĉar '__COUNTER__' estas malvalida"
+
+#: pch.c:712 pch.c:888
+msgid "while reading precompiled header"
+msgstr "dum lego de antaŭkompilita kapo"
+
+#: traditional.c:751
+#, c-format
+msgid "detected recursion whilst expanding macro \"%s\""
+msgstr "estis detektata rekursigo dum etendigo de la makroo \"%s\""
+
+#: traditional.c:969
+msgid "syntax error in macro parameter list"
+msgstr "sintaksa eraro en makroa parametro-listo"
diff --git a/libdecnumber/ChangeLog b/libdecnumber/ChangeLog
index 138aa6edc8f..87e7e11bd5b 100644
--- a/libdecnumber/ChangeLog
+++ b/libdecnumber/ChangeLog
@@ -1,3 +1,7 @@
+2013-02-06 Richard Sandiford <rdsandiford@googlemail.com>
+
+ Update copyright years.
+
2012-11-04 Thomas Schwinge <thomas@codesourcery.com>
* configure: Regenerate.
diff --git a/libdecnumber/Makefile.in b/libdecnumber/Makefile.in
index c64f22c984e..e67ff272f72 100644
--- a/libdecnumber/Makefile.in
+++ b/libdecnumber/Makefile.in
@@ -1,8 +1,7 @@
# @configure_input@
# Makefile for libdecnumber. Run 'configure' to generate Makefile from Makefile.in
-# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# Copyright (C) 2005-2013 Free Software Foundation, Inc.
#This file is part of GCC.
diff --git a/libdecnumber/bid/bid-dpd.h b/libdecnumber/bid/bid-dpd.h
index e100cc916ac..3889bcafa15 100644
--- a/libdecnumber/bid/bid-dpd.h
+++ b/libdecnumber/bid/bid-dpd.h
@@ -1,5 +1,4 @@
-/* Copyright (C) 2007, 2009
- Free Software Foundation, Inc.
+/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libdecnumber/bid/bid2dpd_dpd2bid.c b/libdecnumber/bid/bid2dpd_dpd2bid.c
index 7e55eb01514..661de889372 100644
--- a/libdecnumber/bid/bid2dpd_dpd2bid.c
+++ b/libdecnumber/bid/bid2dpd_dpd2bid.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libdecnumber/bid/bid2dpd_dpd2bid.h b/libdecnumber/bid/bid2dpd_dpd2bid.h
index b501bdcc0c3..af6c541c518 100644
--- a/libdecnumber/bid/bid2dpd_dpd2bid.h
+++ b/libdecnumber/bid/bid2dpd_dpd2bid.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libdecnumber/bid/decimal128.c b/libdecnumber/bid/decimal128.c
index db30bd39d6d..f958a534b10 100644
--- a/libdecnumber/bid/decimal128.c
+++ b/libdecnumber/bid/decimal128.c
@@ -1,5 +1,4 @@
-/* Copyright (C) 2007, 2009
- Free Software Foundation, Inc.
+/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libdecnumber/bid/decimal32.c b/libdecnumber/bid/decimal32.c
index 1cd760759c2..51bd49b6310 100644
--- a/libdecnumber/bid/decimal32.c
+++ b/libdecnumber/bid/decimal32.c
@@ -1,5 +1,4 @@
-/* Copyright (C) 2007, 2009
- Free Software Foundation, Inc.
+/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libdecnumber/bid/decimal64.c b/libdecnumber/bid/decimal64.c
index fd637388a25..56f96a8c7c5 100644
--- a/libdecnumber/bid/decimal64.c
+++ b/libdecnumber/bid/decimal64.c
@@ -1,5 +1,4 @@
-/* Copyright (C) 2007, 2009
- Free Software Foundation, Inc.
+/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libdecnumber/bid/host-ieee128.c b/libdecnumber/bid/host-ieee128.c
index 9e2d005cdc7..ba5092c3e63 100644
--- a/libdecnumber/bid/host-ieee128.c
+++ b/libdecnumber/bid/host-ieee128.c
@@ -1,5 +1,5 @@
/* This is a software decimal floating point library.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libdecnumber/bid/host-ieee32.c b/libdecnumber/bid/host-ieee32.c
index 1de6dc2eccd..650051eb117 100644
--- a/libdecnumber/bid/host-ieee32.c
+++ b/libdecnumber/bid/host-ieee32.c
@@ -1,5 +1,5 @@
/* This is a software decimal floating point library.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libdecnumber/bid/host-ieee64.c b/libdecnumber/bid/host-ieee64.c
index 825eb0ab13c..ede5cd84069 100644
--- a/libdecnumber/bid/host-ieee64.c
+++ b/libdecnumber/bid/host-ieee64.c
@@ -1,5 +1,5 @@
/* This is a software decimal floating point library.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libdecnumber/configure.ac b/libdecnumber/configure.ac
index 87820bf2205..a6f7f07118c 100644
--- a/libdecnumber/configure.ac
+++ b/libdecnumber/configure.ac
@@ -1,7 +1,7 @@
# configure.ac for libdecnumber -*- Autoconf -*-
# Process this file with autoconf to generate a configuration script.
-# Copyright 2005, 2006, 2009 Free Software Foundation, Inc.
+# Copyright (C) 2005-2013 Free Software Foundation, Inc.
# This file is part of GCC.
diff --git a/libdecnumber/dconfig.h b/libdecnumber/dconfig.h
index 975f9a1c891..de634b6ae2b 100644
--- a/libdecnumber/dconfig.h
+++ b/libdecnumber/dconfig.h
@@ -1,5 +1,5 @@
/* Configure decNumber for either host or target.
- Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2008-2013 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libdecnumber/decBasic.c b/libdecnumber/decBasic.c
index 75ce17bce17..6fbf48eb416 100644
--- a/libdecnumber/decBasic.c
+++ b/libdecnumber/decBasic.c
@@ -1,5 +1,5 @@
/* Common base code for the decNumber C Library.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/decCommon.c b/libdecnumber/decCommon.c
index add1f2ed716..42b05b235ed 100644
--- a/libdecnumber/decCommon.c
+++ b/libdecnumber/decCommon.c
@@ -1,5 +1,5 @@
/* Common code for fixed-size types in the decNumber C Library.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/decContext.c b/libdecnumber/decContext.c
index aa8195928e4..d0e2e2876d6 100644
--- a/libdecnumber/decContext.c
+++ b/libdecnumber/decContext.c
@@ -1,5 +1,5 @@
/* Decimal context module for the decNumber C Library.
- Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2005-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/decContext.h b/libdecnumber/decContext.h
index ae0ca07b859..fed7a0e379c 100644
--- a/libdecnumber/decContext.h
+++ b/libdecnumber/decContext.h
@@ -1,5 +1,5 @@
/* Decimal context header module for the decNumber C Library.
- Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2005-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/decDPD.h b/libdecnumber/decDPD.h
index db4d3434d03..83359df7aef 100644
--- a/libdecnumber/decDPD.h
+++ b/libdecnumber/decDPD.h
@@ -1,5 +1,5 @@
/* Conversion lookup tables for the decNumber C Library.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/decDouble.c b/libdecnumber/decDouble.c
index 9af8e15c6c5..b88786974c9 100644
--- a/libdecnumber/decDouble.c
+++ b/libdecnumber/decDouble.c
@@ -1,5 +1,5 @@
/* decDouble module for the decNumber C Library.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/decDouble.h b/libdecnumber/decDouble.h
index 0aaf66ec62c..fa664807408 100644
--- a/libdecnumber/decDouble.h
+++ b/libdecnumber/decDouble.h
@@ -1,5 +1,5 @@
/* decDouble module header for the decNumber C Library.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/decExcept.c b/libdecnumber/decExcept.c
index 99c20db4313..945a7f244ea 100644
--- a/libdecnumber/decExcept.c
+++ b/libdecnumber/decExcept.c
@@ -1,5 +1,5 @@
/* Temporary library support for decimal floating point.
- Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2005-2013 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libdecnumber/decExcept.h b/libdecnumber/decExcept.h
index 73eb9af14ef..83a70c96070 100644
--- a/libdecnumber/decExcept.h
+++ b/libdecnumber/decExcept.h
@@ -1,5 +1,5 @@
/* Temporary library support for decimal floating point.
- Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2006-2013 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libdecnumber/decLibrary.c b/libdecnumber/decLibrary.c
index 323a0d6acf4..3b860de5811 100644
--- a/libdecnumber/decLibrary.c
+++ b/libdecnumber/decLibrary.c
@@ -1,5 +1,5 @@
/* Temporary library support for decimal floating point.
- Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2005-2013 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libdecnumber/decNumber.c b/libdecnumber/decNumber.c
index cf2d32e40d4..72cdbf2ac1f 100644
--- a/libdecnumber/decNumber.c
+++ b/libdecnumber/decNumber.c
@@ -1,5 +1,5 @@
/* Decimal number arithmetic module for the decNumber C Library.
- Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2005-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/decNumber.h b/libdecnumber/decNumber.h
index 05ccb9fdf56..90087df437c 100644
--- a/libdecnumber/decNumber.h
+++ b/libdecnumber/decNumber.h
@@ -1,5 +1,5 @@
/* Decimal number arithmetic module header for the decNumber C Library.
- Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2005-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/decNumberLocal.h b/libdecnumber/decNumberLocal.h
index dca79e51db7..c8dbafc3f4b 100644
--- a/libdecnumber/decNumberLocal.h
+++ b/libdecnumber/decNumberLocal.h
@@ -1,5 +1,5 @@
/* Local definitions for the decNumber C Library.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/decPacked.c b/libdecnumber/decPacked.c
index 3e77bad13e8..193af834023 100644
--- a/libdecnumber/decPacked.c
+++ b/libdecnumber/decPacked.c
@@ -1,5 +1,5 @@
/* Packed decimal conversion module for the decNumber C Library.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/decPacked.h b/libdecnumber/decPacked.h
index 539653b1088..94b60fae114 100644
--- a/libdecnumber/decPacked.h
+++ b/libdecnumber/decPacked.h
@@ -1,5 +1,5 @@
/* Packed decimal conversion module header for the decNumber C Library.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/decQuad.c b/libdecnumber/decQuad.c
index dcd670b53fc..e18e9dfcce6 100644
--- a/libdecnumber/decQuad.c
+++ b/libdecnumber/decQuad.c
@@ -1,5 +1,5 @@
/* decQuad module for the decNumber C Library.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/decQuad.h b/libdecnumber/decQuad.h
index 60cc632cbe5..d05c945f373 100644
--- a/libdecnumber/decQuad.h
+++ b/libdecnumber/decQuad.h
@@ -1,5 +1,5 @@
/* decQuad module header for the decNumber C Library.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/decRound.c b/libdecnumber/decRound.c
index 811bea81d02..1f4054187b4 100644
--- a/libdecnumber/decRound.c
+++ b/libdecnumber/decRound.c
@@ -1,6 +1,6 @@
/* Internal testing support for rounding for decimal float.
- Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2005-2013 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libdecnumber/decRound.h b/libdecnumber/decRound.h
index c17b6d12026..44097ec49bc 100644
--- a/libdecnumber/decRound.h
+++ b/libdecnumber/decRound.h
@@ -1,6 +1,6 @@
/* Internal testing support for rounding for decimal float.
- Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2006-2013 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libdecnumber/decSingle.c b/libdecnumber/decSingle.c
index c79b7f1a9ad..cd6f12b3df6 100644
--- a/libdecnumber/decSingle.c
+++ b/libdecnumber/decSingle.c
@@ -1,5 +1,5 @@
/* decSingle module for the decNumber C Library.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/decSingle.h b/libdecnumber/decSingle.h
index 3904d945a55..05b54ae6732 100644
--- a/libdecnumber/decSingle.h
+++ b/libdecnumber/decSingle.h
@@ -1,5 +1,5 @@
/* decSingle module header for the decNumber C Library.
- Copyright (C) 2005, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2005-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/dpd/decimal128.c b/libdecnumber/dpd/decimal128.c
index cd2db938d95..92af60f2bd5 100644
--- a/libdecnumber/dpd/decimal128.c
+++ b/libdecnumber/dpd/decimal128.c
@@ -1,5 +1,5 @@
/* Decimal 128-bit format module for the decNumber C Library.
- Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2005-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/dpd/decimal128.h b/libdecnumber/dpd/decimal128.h
index 3c83c81fcaa..42da6fccb54 100644
--- a/libdecnumber/dpd/decimal128.h
+++ b/libdecnumber/dpd/decimal128.h
@@ -1,5 +1,5 @@
/* Decimal 128-bit format module header for the decNumber C Library.
- Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2005-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/dpd/decimal128Local.h b/libdecnumber/dpd/decimal128Local.h
index 1963678cddb..e27bcc531ab 100644
--- a/libdecnumber/dpd/decimal128Local.h
+++ b/libdecnumber/dpd/decimal128Local.h
@@ -1,5 +1,5 @@
/* Local definitions for use with the decNumber C Library.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libdecnumber/dpd/decimal32.c b/libdecnumber/dpd/decimal32.c
index 9084ac868b8..6f034d0e673 100644
--- a/libdecnumber/dpd/decimal32.c
+++ b/libdecnumber/dpd/decimal32.c
@@ -1,5 +1,5 @@
/* Decimal 32-bit format module for the decNumber C Library.
- Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2005-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/dpd/decimal32.h b/libdecnumber/dpd/decimal32.h
index 94ddeb80f3f..79f95eae20e 100644
--- a/libdecnumber/dpd/decimal32.h
+++ b/libdecnumber/dpd/decimal32.h
@@ -1,5 +1,5 @@
/* Decimal 32-bit format module header for the decNumber C Library.
- Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2005-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/dpd/decimal64.c b/libdecnumber/dpd/decimal64.c
index d5153a2b114..0815ba21418 100644
--- a/libdecnumber/dpd/decimal64.c
+++ b/libdecnumber/dpd/decimal64.c
@@ -1,5 +1,5 @@
/* Decimal 64-bit format module for the decNumber C Library.
- Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2005-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libdecnumber/dpd/decimal64.h b/libdecnumber/dpd/decimal64.h
index c501415381e..8a0b617ac63 100644
--- a/libdecnumber/dpd/decimal64.h
+++ b/libdecnumber/dpd/decimal64.h
@@ -1,5 +1,5 @@
/* Decimal 64-bit format module header for the decNumber C Library.
- Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2005-2013 Free Software Foundation, Inc.
Contributed by IBM Corporation. Author Mike Cowlishaw.
This file is part of GCC.
diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index e53ac5fddbc..ab2aee6a9a0 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -1,3 +1,8 @@
+2013-02-06 Andreas Tobler <andreast@fgznet.ch>
+
+ * src/powerpc/ffi.c (ffi_prep_cif_machdep): Fix case where
+ DOUBLE equal LONGDOUBLE.
+
2013-01-07 Thorsten Glaser <tg@mirbsd.org>
* testsuite/libffi.call/cls_uchar_va.c,
diff --git a/libffi/src/powerpc/ffi.c b/libffi/src/powerpc/ffi.c
index baca69448fe..257f02fab3e 100644
--- a/libffi/src/powerpc/ffi.c
+++ b/libffi/src/powerpc/ffi.c
@@ -664,9 +664,11 @@ ffi_prep_cif_machdep (ffi_cif *cif)
switch (type)
{
#ifndef __NO_FPRS__
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
case FFI_TYPE_LONGDOUBLE:
flags |= FLAG_RETURNS_128BITS;
/* Fall through. */
+#endif
case FFI_TYPE_DOUBLE:
flags |= FLAG_RETURNS_64BITS;
/* Fall through. */
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index ed8c0a159ed..13fc01dd31d 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,17 @@
+2013-02-08 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/54222
+ * config/avr/lib2funcs.c: New C sources for modules for libgcc.a.
+ * config/avr/lib2-object.mk: New iterator to build objects from it.
+ * config/avr/t-avr: Iterate lib2-object.mk to build objects from
+ lib2funcs.c.
+ (LIB2FUNCS_EXCLUDE): Add _clrsbdi2.
+ (LIB1ASMFUNCS): Add: _ssabs_1, _mask1, _ret, _roundqq3, _rounduqq3,
+ _round_s2, _round_u2, _round_2_const, _addmask_2, _round_s4,
+ _round_u4, _round_4_const, _addmask_4, _round_x8, _rounddq3
+ _roundudq3, _roundda3 _rounduda3, _roundta3 _rounduta3.
+ * config/avr/lib1funcs-fixed.S: Implement them.
+
2013-02-04 Richard Sandiford <rdsandiford@googlemail.com>
Update copyright years.
diff --git a/libgcc/config/avr/lib1funcs-fixed.S b/libgcc/config/avr/lib1funcs-fixed.S
index 731da44beb0..92d8eaf44f5 100644
--- a/libgcc/config/avr/lib1funcs-fixed.S
+++ b/libgcc/config/avr/lib1funcs-fixed.S
@@ -959,6 +959,28 @@ ENDF __udivusa3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Saturation, 1 Byte
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; First Argument and Return Register
+#define A0 24
+
+#if defined (L_ssabs_1)
+DEFUN __ssabs_1
+ sbrs A0, 7
+ ret
+ neg A0
+ sbrc A0,7
+ dec A0
+ ret
+ENDF __ssabs_1
+#endif /* L_ssabs_1 */
+
+#undef A0
+
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Saturation, 2 Bytes
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -1176,3 +1198,509 @@ ENDF __sssub_8
#undef B5
#undef B6
#undef B7
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Rounding Helpers
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+#ifdef L_mask1
+
+#define AA 24
+#define CC 25
+
+;; R25 = 1 << (R24 & 7)
+;; CC = 1 << (AA & 7)
+;; Clobbers: None
+DEFUN __mask1
+ ;; CC = 2 ^ AA.1
+ ldi CC, 1 << 2
+ sbrs AA, 1
+ ldi CC, 1 << 0
+ ;; CC *= 2 ^ AA.0
+ sbrc AA, 0
+ lsl CC
+ ;; CC *= 2 ^ AA.2
+ sbrc AA, 2
+ swap CC
+ ret
+ENDF __mask1
+
+#undef AA
+#undef CC
+#endif /* L_mask1 */
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; The rounding point. Any bits smaller than
+;; 2^{-RP} will be cleared.
+#define RP R24
+
+#define A0 22
+#define A1 A0 + 1
+
+#define C0 24
+#define C1 C0 + 1
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Rounding, 1 Byte
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+#ifdef L_roundqq3
+
+;; R24 = round (R22, R24)
+;; Clobbers: R22, __tmp_reg__
+DEFUN __roundqq3
+ mov __tmp_reg__, C1
+ subi RP, __QQ_FBIT__ - 1
+ neg RP
+ ;; R25 = 1 << RP (Total offset is FBIT-1 - RP)
+ XCALL __mask1
+ mov C0, C1
+ ;; Add-Saturate 2^{-RP-1}
+ add A0, C0
+ brvc 0f
+ ldi A0, 0x7f
+0: ;; Mask out bits beyond RP
+ lsl C0
+ neg C0
+ and C0, A0
+ mov C1, __tmp_reg__
+ ret
+ENDF __roundqq3
+#endif /* L_roundqq3 */
+
+#ifdef L_rounduqq3
+
+;; R24 = round (R22, R24)
+;; Clobbers: R22, __tmp_reg__
+DEFUN __rounduqq3
+ mov __tmp_reg__, C1
+ subi RP, __UQQ_FBIT__ - 1
+ neg RP
+ ;; R25 = 1 << RP (Total offset is FBIT-1 - RP)
+ XCALL __mask1
+ mov C0, C1
+ ;; Add-Saturate 2^{-RP-1}
+ add A0, C0
+ brcc 0f
+ ldi A0, 0xff
+0: ;; Mask out bits beyond RP
+ lsl C0
+ neg C0
+ and C0, A0
+ mov C1, __tmp_reg__
+ ret
+ENDF __rounduqq3
+#endif /* L_rounduqq3 */
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Rounding, 2 Bytes
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+#ifdef L_addmask_2
+
+;; [ R25:R24 = 1 << (R24 & 15)
+;; R23:R22 += 1 << (R24 & 15) ]
+;; SREG is set according to the addition
+DEFUN __addmask_2
+ ;; R25 = 1 << (R24 & 7)
+ XCALL __mask1
+ cpi RP, 1 << 3
+ sbc C0, C0
+ ;; Swap C0 and C1 if RP.3 was set
+ and C0, C1
+ eor C1, C0
+ ;; Finally, add the power-of-two: A[] += C[]
+ add A0, C0
+ adc A1, C1
+ ret
+ENDF __addmask_2
+#endif /* L_addmask_2 */
+
+#ifdef L_round_s2
+
+;; R25:R24 = round (R23:R22, R24)
+;; Clobbers: R23, R22
+DEFUN __roundhq3
+ subi RP, __HQ_FBIT__ - __HA_FBIT__
+ENDF __roundhq3
+DEFUN __roundha3
+ subi RP, __HA_FBIT__ - 1
+ neg RP
+ ;; [ R25:R24 = 1 << (FBIT-1 - RP)
+ ;; R23:R22 += 1 << (FBIT-1 - RP) ]
+ XCALL __addmask_2
+ XJMP __round_s2_const
+ENDF __roundha3
+
+#endif /* L_round_s2 */
+
+#ifdef L_round_u2
+
+;; R25:R24 = round (R23:R22, R24)
+;; Clobbers: R23, R22
+DEFUN __rounduhq3
+ subi RP, __UHQ_FBIT__ - __UHA_FBIT__
+ENDF __rounduhq3
+DEFUN __rounduha3
+ subi RP, __UHA_FBIT__ - 1
+ neg RP
+ ;; [ R25:R24 = 1 << (FBIT-1 - RP)
+ ;; R23:R22 += 1 << (FBIT-1 - RP) ]
+ XCALL __addmask_2
+ XJMP __round_u2_const
+ENDF __rounduha3
+
+#endif /* L_round_u2 */
+
+
+#ifdef L_round_2_const
+
+;; Helpers for 2 byte wide rounding
+
+DEFUN __round_s2_const
+ brvc 2f
+ ldi A1, 0x7f
+ rjmp 1f
+ ;; FALLTHRU (Barrier)
+ENDF __round_s2_const
+
+DEFUN __round_u2_const
+ brcc 2f
+ ldi A1, 0xff
+1:
+ ldi A0, 0xff
+2:
+ ;; Saturation is performed now.
+ ;; Currently, we have C[] = 2^{-RP-1}
+ ;; C[] = 2^{-RP}
+ lsl C0
+ rol C1
+ ;;
+ NEG2 C0
+ ;; Clear the bits beyond the rounding point.
+ and C0, A0
+ and C1, A1
+ ret
+ENDF __round_u2_const
+
+#endif /* L_round_2_const */
+
+#undef A0
+#undef A1
+#undef C0
+#undef C1
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Rounding, 4 Bytes
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+#define A0 18
+#define A1 A0 + 1
+#define A2 A0 + 2
+#define A3 A0 + 3
+
+#define C0 22
+#define C1 C0 + 1
+#define C2 C0 + 2
+#define C3 C0 + 3
+
+#ifdef L_addmask_4
+
+;; [ R25:R22 = 1 << (R24 & 31)
+;; R21:R18 += 1 << (R24 & 31) ]
+;; SREG is set according to the addition
+DEFUN __addmask_4
+ ;; R25 = 1 << (R24 & 7)
+ XCALL __mask1
+ cpi RP, 1 << 4
+ sbc C0, C0
+ sbc C1, C1
+ ;; Swap C2 with C3 if RP.3 is not set
+ cpi RP, 1 << 3
+ sbc C2, C2
+ and C2, C3
+ eor C3, C2
+ ;; Swap C3:C2 with C1:C0 if RP.4 is not set
+ and C0, C2 $ eor C2, C0
+ and C1, C3 $ eor C3, C1
+ ;; Finally, add the power-of-two: A[] += C[]
+ add A0, C0
+ adc A1, C1
+ adc A2, C2
+ adc A3, C3
+ ret
+ENDF __addmask_4
+#endif /* L_addmask_4 */
+
+#ifdef L_round_s4
+
+;; R25:R22 = round (R21:R18, R24)
+;; Clobbers: R18...R21
+DEFUN __roundsq3
+ subi RP, __SQ_FBIT__ - __SA_FBIT__
+ENDF __roundsq3
+DEFUN __roundsa3
+ subi RP, __SA_FBIT__ - 1
+ neg RP
+ ;; [ R25:R22 = 1 << (FBIT-1 - RP)
+ ;; R21:R18 += 1 << (FBIT-1 - RP) ]
+ XCALL __addmask_4
+ XJMP __round_s4_const
+ENDF __roundsa3
+
+#endif /* L_round_s4 */
+
+#ifdef L_round_u4
+
+;; R25:R22 = round (R21:R18, R24)
+;; Clobbers: R18...R21
+DEFUN __roundusq3
+ subi RP, __USQ_FBIT__ - __USA_FBIT__
+ENDF __roundusq3
+DEFUN __roundusa3
+ subi RP, __USA_FBIT__ - 1
+ neg RP
+ ;; [ R25:R22 = 1 << (FBIT-1 - RP)
+ ;; R21:R18 += 1 << (FBIT-1 - RP) ]
+ XCALL __addmask_4
+ XJMP __round_u4_const
+ENDF __roundusa3
+
+#endif /* L_round_u4 */
+
+
+#ifdef L_round_4_const
+
+;; Helpers for 4 byte wide rounding
+
+DEFUN __round_s4_const
+ brvc 2f
+ ldi A3, 0x7f
+ rjmp 1f
+ ;; FALLTHRU (Barrier)
+ENDF __round_s4_const
+
+DEFUN __round_u4_const
+ brcc 2f
+ ldi A3, 0xff
+1:
+ ldi A2, 0xff
+ ldi A1, 0xff
+ ldi A0, 0xff
+2:
+ ;; Saturation is performed now.
+ ;; Currently, we have C[] = 2^{-RP-1}
+ ;; C[] = 2^{-RP}
+ lsl C0
+ rol C1
+ rol C2
+ rol C3
+ XCALL __negsi2
+ ;; Clear the bits beyond the rounding point.
+ and C0, A0
+ and C1, A1
+ and C2, A2
+ and C3, A3
+ ret
+ENDF __round_u4_const
+
+#endif /* L_round_4_const */
+
+#undef A0
+#undef A1
+#undef A2
+#undef A3
+#undef C0
+#undef C1
+#undef C2
+#undef C3
+
+#undef RP
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Rounding, 8 Bytes
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+#define RP 16
+#define FBITm1 31
+
+#define C0 18
+#define C1 C0 + 1
+#define C2 C0 + 2
+#define C3 C0 + 3
+#define C4 C0 + 4
+#define C5 C0 + 5
+#define C6 C0 + 6
+#define C7 C0 + 7
+
+#define A0 16
+#define A1 17
+#define A2 26
+#define A3 27
+#define A4 28
+#define A5 29
+#define A6 30
+#define A7 31
+
+
+#ifdef L_rounddq3
+;; R25:R18 = round (R25:R18, R16)
+;; Clobbers: ABI
+DEFUN __rounddq3
+ ldi FBITm1, __DQ_FBIT__ - 1
+ clt
+ XJMP __round_x8
+ENDF __rounddq3
+#endif /* L_rounddq3 */
+
+#ifdef L_roundudq3
+;; R25:R18 = round (R25:R18, R16)
+;; Clobbers: ABI
+DEFUN __roundudq3
+ ldi FBITm1, __UDQ_FBIT__ - 1
+ set
+ XJMP __round_x8
+ENDF __roundudq3
+#endif /* L_roundudq3 */
+
+#ifdef L_roundda3
+;; R25:R18 = round (R25:R18, R16)
+;; Clobbers: ABI
+DEFUN __roundda3
+ ldi FBITm1, __DA_FBIT__ - 1
+ clt
+ XJMP __round_x8
+ENDF __roundda3
+#endif /* L_roundda3 */
+
+#ifdef L_rounduda3
+;; R25:R18 = round (R25:R18, R16)
+;; Clobbers: ABI
+DEFUN __rounduda3
+ ldi FBITm1, __UDA_FBIT__ - 1
+ set
+ XJMP __round_x8
+ENDF __rounduda3
+#endif /* L_rounduda3 */
+
+#ifdef L_roundta3
+;; R25:R18 = round (R25:R18, R16)
+;; Clobbers: ABI
+DEFUN __roundta3
+ ldi FBITm1, __TA_FBIT__ - 1
+ clt
+ XJMP __round_x8
+ENDF __roundta3
+#endif /* L_roundta3 */
+
+#ifdef L_rounduta3
+;; R25:R18 = round (R25:R18, R16)
+;; Clobbers: ABI
+DEFUN __rounduta3
+ ldi FBITm1, __UTA_FBIT__ - 1
+ set
+ XJMP __round_x8
+ENDF __rounduta3
+#endif /* L_rounduta3 */
+
+
+#ifdef L_round_x8
+DEFUN __round_x8
+ push r16
+ push r17
+ push r28
+ push r29
+ ;; Compute log2 of addend from rounding point
+ sub RP, FBITm1
+ neg RP
+ ;; Move input to work register A[]
+ push C0
+ mov A1, C1
+ wmov A2, C2
+ wmov A4, C4
+ wmov A6, C6
+ ;; C[] = 1 << (FBIT-1 - RP)
+ XCALL __clr_8
+ inc C0
+ XCALL __ashldi3
+ pop A0
+ ;; A[] += C[]
+ add A0, C0
+ adc A1, C1
+ adc A2, C2
+ adc A3, C3
+ adc A4, C4
+ adc A5, C5
+ adc A6, C6
+ adc A7, C7
+ brts 1f
+ ;; Signed
+ brvc 3f
+ ;; Signed overflow: A[] = 0x7f...
+ brvs 2f
+1: ;; Unsigned
+ brcc 3f
+ ;; Unsigned overflow: A[] = 0xff...
+2: ldi A7, 0xff
+ ldi A6, 0xff
+ wmov A0, A6
+ wmov A2, A6
+ wmov A4, A6
+ bld A7, 7
+3:
+ ;; C[] = -C[] - C[]
+ push A0
+ ldi r16, 1
+ XCALL __ashldi3
+ pop A0
+ XCALL __negdi2
+ ;; Clear the bits beyond the rounding point.
+ and C0, A0
+ and C1, A1
+ and C2, A2
+ and C3, A3
+ and C4, A4
+ and C5, A5
+ and C6, A6
+ and C7, A7
+ ;; Epilogue
+ pop r29
+ pop r28
+ pop r17
+ pop r16
+ ret
+ENDF __round_x8
+
+#endif /* L_round_x8 */
+
+#undef A0
+#undef A1
+#undef A2
+#undef A3
+#undef A4
+#undef A5
+#undef A6
+#undef A7
+
+#undef C0
+#undef C1
+#undef C2
+#undef C3
+#undef C4
+#undef C5
+#undef C6
+#undef C7
+
+#undef RP
+#undef FBITm1
+
+
+;; Supply implementations / symbols for the bit-banging functions
+;; __builtin_avr_bitsfx and __builtin_avr_fxbits
+#ifdef L_ret
+DEFUN __ret
+ ret
+ENDF __ret
+#endif /* L_ret */
diff --git a/libgcc/config/avr/lib1funcs.S b/libgcc/config/avr/lib1funcs.S
index 9ca83a8652c..0a406d580a5 100644
--- a/libgcc/config/avr/lib1funcs.S
+++ b/libgcc/config/avr/lib1funcs.S
@@ -1684,12 +1684,12 @@ DEFUN __divdi3_moddi3
ENDF __divdi3_moddi3
+#endif /* L_divdi3 */
+
#undef R_cnt
#undef SS
#undef NN
-#endif /* L_divdi3 */
-
.section .text.libgcc, "ax", @progbits
#define TT __tmp_reg__
diff --git a/libgcc/config/avr/lib2-object.mk b/libgcc/config/avr/lib2-object.mk
new file mode 100644
index 00000000000..6a9e04de0f7
--- /dev/null
+++ b/libgcc/config/avr/lib2-object.mk
@@ -0,0 +1,23 @@
+# This file is included several times in a row, once for each element of
+# $(iter-items). On each inclusion, we advance $o to the next element.
+# $(iter-labels) and $(iter-flags) are also advanced.
+# This works similar to $(srcdir)/siditi-object.mk.
+
+o := $(firstword $(iter-items))
+iter-items := $(filter-out $o,$(iter-items))
+
+$o-label := $(firstword $(iter-labels))
+iter-labels := $(wordlist 2,$(words $(iter-labels)),$(iter-labels))
+
+$o-flag := $(firstword $(iter-flags))
+iter-flags := $(wordlist 2,$(words $(iter-flags)),$(iter-flags))
+
+$o$(objext): %$(objext): $(srcdir)/config/avr/lib2funcs.c
+ $(gcc_compile) -DL_$($*-label) -DL_LABEL=$($*-label) $($*-flag) \
+ -c $< $(vis_hide)
+
+ifeq ($(enable_shared),yes)
+$(o)_s$(objext): %_s$(objext): $(srcdir)/config/avr/lib2funcs.c
+ $(gcc_s_compile) -DL_$($*-label) -DL_LABEL=$($*-label) $($*-flag) \
+ -c $<
+endif
diff --git a/libgcc/config/avr/lib2funcs.c b/libgcc/config/avr/lib2funcs.c
new file mode 100644
index 00000000000..83f2e23fb05
--- /dev/null
+++ b/libgcc/config/avr/lib2funcs.c
@@ -0,0 +1,226 @@
+/* Copyright (C) 2013 Free Software Foundation, Inc.
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 3, or (at your option) any later
+ version.
+
+ GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ Under Section 7 of GPL version 3, you are granted additional
+ permissions described in the GCC Runtime Library Exception, version
+ 3.1, as published by the Free Software Foundation.
+
+ You should have received a copy of the GNU General Public License and
+ a copy of the GCC Runtime Library Exception along with this program;
+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+
+/* This file supplies implementations for some AVR-specific builtin
+ functions so that code like the following works as expected:
+
+ int (*f (void))(_Fract)
+ {
+ return __builtin_avr_countlsr;
+ }
+
+ In this specific case, the generated code is:
+
+ f:
+ ldi r24,lo8(gs(__countlsHI))
+ ldi r25,hi8(gs(__countlsHI))
+ ret
+*/
+
+/* Map fixed-point suffix to the corresponding fixed-point type. */
+
+typedef short _Fract fx_hr_t;
+typedef _Fract fx_r_t;
+typedef long _Fract fx_lr_t;
+typedef long long _Fract fx_llr_t;
+
+typedef unsigned short _Fract fx_uhr_t;
+typedef unsigned _Fract fx_ur_t;
+typedef unsigned long _Fract fx_ulr_t;
+typedef unsigned long long _Fract fx_ullr_t;
+
+typedef short _Accum fx_hk_t;
+typedef _Accum fx_k_t;
+typedef long _Accum fx_lk_t;
+typedef long long _Accum fx_llk_t;
+
+typedef unsigned short _Accum fx_uhk_t;
+typedef unsigned _Accum fx_uk_t;
+typedef unsigned long _Accum fx_ulk_t;
+typedef unsigned long long _Accum fx_ullk_t;
+
+/* Map fixed-point suffix to the corresponding natural integer type. */
+
+typedef char int_hr_t;
+typedef int int_r_t;
+typedef long int_lr_t;
+typedef long long int_llr_t;
+
+typedef unsigned char int_uhr_t;
+typedef unsigned int int_ur_t;
+typedef unsigned long int_ulr_t;
+typedef unsigned long long int_ullr_t;
+
+typedef int int_hk_t;
+typedef long int_k_t;
+typedef long long int_lk_t;
+typedef long long int_llk_t;
+
+typedef unsigned int int_uhk_t;
+typedef unsigned long int_uk_t;
+typedef unsigned long long int_ulk_t;
+typedef unsigned long long int_ullk_t;
+
+/* Map mode to the corresponding integer type. */
+
+typedef char int_qi_t;
+typedef int int_hi_t;
+typedef long int_si_t;
+typedef long long int_di_t;
+
+typedef unsigned char uint_qi_t;
+typedef unsigned int uint_hi_t;
+typedef unsigned long uint_si_t;
+typedef unsigned long long uint_di_t;
+
+
+
+/************************************************************************/
+
+/* Supply implementations / symbols for __builtin_roundFX ASM_NAME. */
+
+#ifdef L_round
+
+#define ROUND1(FX) \
+ ROUND2 (FX)
+
+#define ROUND2(FX) \
+ extern fx_## FX ##_t __round## FX (fx_## FX ##_t x, int rpoint); \
+ \
+ fx_## FX ##_t \
+ __round## FX (fx_## FX ##_t x, int rpoint) \
+ { \
+ return __builtin_avr_round ##FX (x, rpoint); \
+ }
+
+ROUND1(L_LABEL)
+
+#endif /* L_round */
+
+
+
+/*********************************************************************/
+
+/* Implement some count-leading-redundant-sign-bits to be used with
+ coundlsFX implementation. */
+
+#ifdef L__clrsbqi
+extern int __clrsbqi2 (char x);
+
+int
+__clrsbqi2 (char x)
+{
+ int ret;
+
+ if (x < 0)
+ x = ~x;
+
+ if (x == 0)
+ return 8 * sizeof (x) -1;
+
+ ret = __builtin_clz (x << 8);
+ return ret - 1;
+}
+#endif /* L__clrsbqi */
+
+
+#ifdef L__clrsbdi
+extern int __clrsbdi2 (long long x);
+
+int
+__clrsbdi2 (long long x)
+{
+ int ret;
+
+ if (x < 0LL)
+ x = ~x;
+
+ if (x == 0LL)
+ return 8 * sizeof (x) -1;
+
+ ret = __builtin_clzll ((unsigned long long) x);
+ return ret - 1;
+}
+#endif /* L__clrsbdi */
+
+
+
+/*********************************************************************/
+
+/* Supply implementations / symbols for __builtin_avr_countlsFX. */
+
+/* Signed */
+
+#ifdef L_countls
+
+#define COUNTLS1(MM) \
+ COUNTLS2 (MM)
+
+#define COUNTLS2(MM) \
+ extern int __countls## MM ##2 (int_## MM ##_t); \
+ extern int __clrsb## MM ##2 (int_## MM ##_t); \
+ \
+ int \
+ __countls## MM ##2 (int_## MM ##_t x) \
+ { \
+ if (x == 0) \
+ return __INT8_MAX__; \
+ \
+ return __clrsb## MM ##2 (x); \
+ }
+
+COUNTLS1(L_LABEL)
+
+#endif /* L_countls */
+
+/* Unsigned */
+
+#ifdef L_countlsu
+
+#define clz_qi2 __builtin_clz /* unused, avoid warning */
+#define clz_hi2 __builtin_clz
+#define clz_si2 __builtin_clzl
+#define clz_di2 __builtin_clzll
+
+#define COUNTLS1(MM) \
+ COUNTLS2 (MM)
+
+#define COUNTLS2(MM) \
+ extern int __countlsu## MM ##2 (uint_## MM ##_t); \
+ \
+ int \
+ __countlsu## MM ##2 (uint_## MM ##_t x) \
+ { \
+ if (x == 0) \
+ return __INT8_MAX__; \
+ \
+ if (sizeof (x) == 1) \
+ return clz_hi2 (x << 8); \
+ else \
+ return clz_## MM ##2 (x); \
+ }
+
+COUNTLS1(L_LABEL)
+
+#endif /* L_countlsu */
diff --git a/libgcc/config/avr/t-avr b/libgcc/config/avr/t-avr
index 3bc07186d3b..a4b8113e02e 100644
--- a/libgcc/config/avr/t-avr
+++ b/libgcc/config/avr/t-avr
@@ -75,13 +75,24 @@ LIB1ASMFUNCS += \
_divsa3 _udivusa3 \
_clr_8 \
_ssneg_2 _ssneg_4 _ssneg_8 \
- _ssabs_2 _ssabs_4 _ssabs_8 \
+ _ssabs_1 _ssabs_2 _ssabs_4 _ssabs_8 \
_ssadd_8 _sssub_8 \
- _usadd_8 _ussub_8
+ _usadd_8 _ussub_8 \
+ _mask1 _ret \
+ _roundqq3 _rounduqq3 \
+ _round_s2 _round_u2 _round_2_const _addmask_2 \
+ _round_s4 _round_u4 _round_4_const _addmask_4 \
+ _round_x8 \
+ _rounddq3 _roundudq3 \
+ _roundda3 _rounduda3 \
+ _roundta3 _rounduta3 \
+
LIB2FUNCS_EXCLUDE = \
_moddi3 _umoddi3 \
- _clz
+ _clz \
+ _clrsbdi2 \
+
# We do not have the DF type.
# Most of the C functions in libgcc2 use almost all registers,
@@ -106,13 +117,84 @@ ifeq ($(enable_shared),yes)
libgcc-s-objects += $(patsubst %,%_s$(objext),$(hiintfuncs16))
endif
-
-# Filter out supported conversions from fixed-bit.c
-# Also filter out TQ and UTQ.
+###
conv_XY=$(conv)$(mode1)$(mode2)
func_X=$(func)$(mode)
+# Compile C functions from lib2funcs.c and add them to libgcc.a.
+#
+# Some functions which are not performance.critical are more convenient
+# to implement in C than in assembler. Most of them serve as implementation
+# for AVR-specific builtins in the case where the address of a builtin
+# function is taken or if there is no insn that implements the builtin.
+#
+# We don't use LIB2ADD because we want to iterate over the source for
+# different modes, fixed-point suffixes, etc. See iter-labels and L_LABEL.
+# iter-label will get one more underscore in order to avoid too short
+# labels like -DLk and we use -DL_k instead.
+
+# Build roundFX functions from lib2funcs.c
+
+round_suffix := hr r lr uhr ur ulr \
+ hk k uhk uk
+round_funcs := $(foreach func,_round,\
+ $(foreach mode,$(round_suffix),$(func_X)))
+
+iter-items := $(round_funcs)
+iter-labels := $(round_suffix)
+iter-flags := $(patsubst %,-DL_round,$(iter-items))
+
+include $(srcdir)/empty.mk $(patsubst %,$(srcdir)/config/avr/lib2-object.mk,$(iter-items))
+
+libgcc-objects += $(patsubst %,%$(objext),$(round_funcs))
+
+# Build clrsbXX functions from lib2funcs.c
+
+clrsb_modes := qi di
+clrsb_funcs := $(foreach func,_clrsb,\
+ $(foreach mode,$(clrsb_modes),$(func_X)))
+
+iter-items := $(clrsb_funcs)
+iter-labels := $(clrsb_funcs)
+iter-flags := $(patsubst %,-DL_clrsb,$(iter-items))
+
+include $(srcdir)/empty.mk $(patsubst %,$(srcdir)/config/avr/lib2-object.mk,$(iter-items))
+
+libgcc-objects += $(patsubst %,%$(objext),$(clrsb_funcs))
+
+# Build signed countlsFX functions from lib2funcs.c
+
+countls_modes := qi hi si di
+countls_funcs := $(foreach func,_countls,\
+ $(foreach mode,$(countls_modes),$(func_X)))
+
+iter-items := $(countls_funcs)
+iter-labels := $(countls_modes)
+iter-flags := $(patsubst %,-DL_countls,$(iter-items))
+
+include $(srcdir)/empty.mk $(patsubst %,$(srcdir)/config/avr/lib2-object.mk,$(iter-items))
+
+libgcc-objects += $(patsubst %,%$(objext),$(countls_funcs))
+
+# Build unsigned countlsFX functions from lib2funcs.c
+
+countlsu_modes := qi hi si di
+countlsu_funcs := $(foreach func,_countlsu,\
+ $(foreach mode,$(countlsu_modes),$(func_X)))
+
+iter-items := $(countlsu_funcs)
+iter-labels := $(countlsu_modes)
+iter-flags := $(patsubst %,-DL_countlsu,$(iter-items))
+
+include $(srcdir)/empty.mk $(patsubst %,$(srcdir)/config/avr/lib2-object.mk,$(iter-items))
+
+libgcc-objects += $(patsubst %,%$(objext),$(countlsu_funcs))
+
+
+# Filter out supported conversions from fixed-bit.c
+# Also filter out TQ and UTQ.
+
# Conversions supported by the compiler
convf_modes = QI UQI QQ UQQ \
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index d4ccff4f2a6..1a42a8449a9 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2013-02-06 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/55978
+ * runtime/in_pack_generic.c (internal_pack): Return if base_addr is
+ NULL.
+
2013-01-23 Janne Blomqvist <jb@gcc.gnu.org>
* io/file_pos.c (unformatted_backspace): Use __builtin_bswapXX
diff --git a/libgfortran/runtime/in_pack_generic.c b/libgfortran/runtime/in_pack_generic.c
index 34b55033caf..330f0f425db 100644
--- a/libgfortran/runtime/in_pack_generic.c
+++ b/libgfortran/runtime/in_pack_generic.c
@@ -48,6 +48,9 @@ internal_pack (gfc_array_char * source)
index_type size;
index_type type_size;
+ if (source->base_addr == NULL)
+ return NULL;
+
type_size = GFC_DTYPE_TYPE_SIZE(source);
size = GFC_DESCRIPTOR_SIZE (source);
switch (type_size)
diff --git a/libgo/Makefile.am b/libgo/Makefile.am
index f68443cb5a2..4ba3145daab 100644
--- a/libgo/Makefile.am
+++ b/libgo/Makefile.am
@@ -1991,12 +1991,6 @@ BUILDPACKAGE = \
files=`echo $^ | sed -e 's/[^ ]*\.gox//g'`; \
$(LTGOCOMPILE) -I . -c -fgo-pkgpath=`echo $@ | sed -e 's/.lo$$//' -e 's/-go$$//'` -o $@ $$files
-if LIBGO_IS_RTEMS
-use_dejagnu = yes
-else
-use_dejagnu = no
-endif
-
GOTESTFLAGS =
# Check a package.
@@ -2015,7 +2009,7 @@ CHECK = \
export LD_LIBRARY_PATH; \
$(MKDIR_P) $(@D); \
rm -f $@-testsum $@-testlog; \
- if test "$(use_dejagnu)" = "yes"; then \
+ if test "$(USE_DEJAGNU)" = "yes"; then \
$(SHELL) $(srcdir)/testsuite/gotest --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$(go_$(subst /,_,$(@D))_files)" --testname="$(@D)" --goarch="$(GOARCH)" $(GOTESTFLAGS) $(go_$(subst /,_,$(@D))_test_files); \
else \
if $(SHELL) $(srcdir)/testsuite/gotest --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$(go_$(subst /,_,$(@D))_files)" --goarch="$(GOARCH)" $(GOTESTFLAGS) $(go_$(subst /,_,$(@D))_test_files) >>$@-testlog 2>&1; then \
diff --git a/libgo/Makefile.in b/libgo/Makefile.in
index ad8ddc3b1f9..e33d83caff3 100644
--- a/libgo/Makefile.in
+++ b/libgo/Makefile.in
@@ -387,6 +387,7 @@ SPLIT_STACK = @SPLIT_STACK@
STRINGOPS_FLAG = @STRINGOPS_FLAG@
STRIP = @STRIP@
STRUCT_EPOLL_EVENT_FD_OFFSET = @STRUCT_EPOLL_EVENT_FD_OFFSET@
+USE_DEJAGNU = @USE_DEJAGNU@
VERSION = @VERSION@
WARN_FLAGS = @WARN_FLAGS@
WERROR = @WERROR@
@@ -2135,8 +2136,6 @@ BUILDPACKAGE = \
files=`echo $^ | sed -e 's/[^ ]*\.gox//g'`; \
$(LTGOCOMPILE) -I . -c -fgo-pkgpath=`echo $@ | sed -e 's/.lo$$//' -e 's/-go$$//'` -o $@ $$files
-@LIBGO_IS_RTEMS_FALSE@use_dejagnu = no
-@LIBGO_IS_RTEMS_TRUE@use_dejagnu = yes
GOTESTFLAGS =
# Check a package.
@@ -2155,7 +2154,7 @@ CHECK = \
export LD_LIBRARY_PATH; \
$(MKDIR_P) $(@D); \
rm -f $@-testsum $@-testlog; \
- if test "$(use_dejagnu)" = "yes"; then \
+ if test "$(USE_DEJAGNU)" = "yes"; then \
$(SHELL) $(srcdir)/testsuite/gotest --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$(go_$(subst /,_,$(@D))_files)" --testname="$(@D)" --goarch="$(GOARCH)" $(GOTESTFLAGS) $(go_$(subst /,_,$(@D))_test_files); \
else \
if $(SHELL) $(srcdir)/testsuite/gotest --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$(go_$(subst /,_,$(@D))_files)" --goarch="$(GOARCH)" $(GOTESTFLAGS) $(go_$(subst /,_,$(@D))_test_files) >>$@-testlog 2>&1; then \
diff --git a/libgo/configure b/libgo/configure
index 294ccba15ff..f4d7c82bf12 100755
--- a/libgo/configure
+++ b/libgo/configure
@@ -653,6 +653,7 @@ LIBGO_IS_ALPHA_FALSE
LIBGO_IS_ALPHA_TRUE
LIBGO_IS_386_FALSE
LIBGO_IS_386_TRUE
+USE_DEJAGNU
GOOS
LIBGO_IS_SOLARIS_FALSE
LIBGO_IS_SOLARIS_TRUE
@@ -709,7 +710,6 @@ GOC
am__fastdepCC_FALSE
am__fastdepCC_TRUE
CCDEPMODE
-am__nodep
AMDEPBACKSLASH
AMDEP_FALSE
AMDEP_TRUE
@@ -3132,11 +3132,11 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
# We need awk for the "check" target. The system "awk" is bad on
# some platforms.
-# Always define AMTAR for backward compatibility. Yes, it's still used
-# in the wild :-( We should find a proper way to deprecate it ...
-AMTAR='$${TAR-tar}'
+# Always define AMTAR for backward compatibility.
-am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
@@ -3963,7 +3963,6 @@ fi
if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\'
- am__nodep='_no'
fi
if test "x$enable_dependency_tracking" != xno; then
AMDEP_TRUE=
@@ -3988,7 +3987,6 @@ else
# 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'.
- rm -rf conftest.dir
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
@@ -4048,7 +4046,7 @@ else
break
fi
;;
- msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ msvisualcpp | msvcmsys)
# This compiler won't grok `-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
@@ -11107,11 +11105,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-<<<<<<< .mine
#line 11108 "configure"
-=======
-#line 11107 "configure"
->>>>>>> .r195527
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11217,11 +11211,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-<<<<<<< .mine
#line 11214 "configure"
-=======
-#line 11213 "configure"
->>>>>>> .r195527
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -13573,6 +13563,14 @@ fi
+USE_DEJAGNU=no
+case ${host} in
+ *-*-rtems*) USE_DEJAGNU=yes ;;
+ ${build}) ;;
+ *) USE_DEJAGNU=yes ;;
+esac
+
+
is_386=no
is_alpha=no
is_arm=no
diff --git a/libgo/configure.ac b/libgo/configure.ac
index 6cc2307bc52..ff0b7bdb6d9 100644
--- a/libgo/configure.ac
+++ b/libgo/configure.ac
@@ -156,6 +156,17 @@ AM_CONDITIONAL(LIBGO_IS_RTEMS, test $is_rtems = yes)
AM_CONDITIONAL(LIBGO_IS_SOLARIS, test $is_solaris = yes)
AC_SUBST(GOOS)
+dnl Test whether we need to use DejaGNU or whether we can use the
+dnl simpler gotest approach. We can only use gotest for a native
+dnl build.
+USE_DEJAGNU=no
+case ${host} in
+ *-*-rtems*) USE_DEJAGNU=yes ;;
+ ${build}) ;;
+ *) USE_DEJAGNU=yes ;;
+esac
+AC_SUBST(USE_DEJAGNU)
+
dnl N.B. Keep in sync with gcc/testsuite/go.test/go-test.exp (go-set-goarch).
is_386=no
is_alpha=no
diff --git a/libgo/go/crypto/md5/md5block.go b/libgo/go/crypto/md5/md5block.go
index 59f8f6f5afa..0ca42177403 100644
--- a/libgo/go/crypto/md5/md5block.go
+++ b/libgo/go/crypto/md5/md5block.go
@@ -5,6 +5,16 @@ import (
"unsafe"
)
+const x86 = runtime.GOARCH == "amd64" || runtime.GOARCH == "386"
+
+var littleEndian bool
+
+func init() {
+ x := uint32(0x04030201)
+ y := [4]byte{0x1, 0x2, 0x3, 0x4}
+ littleEndian = *(*[4]byte)(unsafe.Pointer(&x)) == y
+}
+
func block(dig *digest, p []byte) {
a := dig.s[0]
b := dig.s[1]
@@ -16,13 +26,13 @@ func block(dig *digest, p []byte) {
aa, bb, cc, dd := a, b, c, d
// This is a constant condition - it is not evaluated on each iteration.
- if runtime.GOARCH == "amd64" || runtime.GOARCH == "386" {
+ if x86 {
// MD5 was designed so that x86 processors can just iterate
// over the block data directly as uint32s, and we generate
// less code and run 1.3x faster if we take advantage of that.
// My apologies.
X = (*[16]uint32)(unsafe.Pointer(&p[0]))
- } else if uintptr(unsafe.Pointer(&p[0]))&(unsafe.Alignof(uint32(0))-1) == 0 {
+ } else if littleEndian && uintptr(unsafe.Pointer(&p[0]))&(unsafe.Alignof(uint32(0))-1) == 0 {
X = (*[16]uint32)(unsafe.Pointer(&p[0]))
} else {
X = &xbuf
diff --git a/libgo/go/net/fd_bsd.go b/libgo/go/net/fd_bsd.go
index 4f5dd6e524a..f5a55bb44a7 100644
--- a/libgo/go/net/fd_bsd.go
+++ b/libgo/go/net/fd_bsd.go
@@ -64,7 +64,7 @@ func (p *pollster) AddFD(fd int, mode int, repeat bool) (bool, error) {
return false, nil
}
-func (p *pollster) DelFD(fd int, mode int) {
+func (p *pollster) DelFD(fd int, mode int) bool {
// pollServer is locked.
var kmode int
@@ -77,6 +77,7 @@ func (p *pollster) DelFD(fd int, mode int) {
// EV_DELETE - delete event from kqueue list
syscall.SetKevent(ev, fd, kmode, syscall.EV_DELETE)
syscall.Kevent(p.kq, p.kbuf[:], nil, nil)
+ return false
}
func (p *pollster) WaitFD(s *pollServer, nsec int64) (fd int, mode int, err error) {
diff --git a/libgo/go/net/fd_linux.go b/libgo/go/net/fd_linux.go
index 085e423072a..8ecbff8bdf0 100644
--- a/libgo/go/net/fd_linux.go
+++ b/libgo/go/net/fd_linux.go
@@ -114,7 +114,7 @@ func (p *pollster) StopWaiting(fd int, bits uint) {
}
}
-func (p *pollster) DelFD(fd int, mode int) {
+func (p *pollster) DelFD(fd int, mode int) bool {
// pollServer is locked.
if mode == 'r' {
@@ -133,6 +133,7 @@ func (p *pollster) DelFD(fd int, mode int) {
i++
}
}
+ return false
}
func (p *pollster) WaitFD(s *pollServer, nsec int64) (fd int, mode int, err error) {
diff --git a/libgo/go/net/fd_select.go b/libgo/go/net/fd_select.go
index 22db1cbcac2..4103c57e2cb 100644
--- a/libgo/go/net/fd_select.go
+++ b/libgo/go/net/fd_select.go
@@ -7,6 +7,7 @@
package net
import (
+ "errors"
"os"
"syscall"
)
@@ -17,6 +18,7 @@ type pollster struct {
readyReadFds, readyWriteFds *syscall.FdSet
nReady int
lastFd int
+ closed bool
}
func newpollster() (p *pollster, err error) {
@@ -35,6 +37,10 @@ func newpollster() (p *pollster, err error) {
func (p *pollster) AddFD(fd int, mode int, repeat bool) (bool, error) {
// pollServer is locked.
+ if p.closed {
+ return false, errors.New("pollster closed")
+ }
+
if mode == 'r' {
syscall.FDSet(fd, p.readFds)
} else {
@@ -52,19 +58,23 @@ func (p *pollster) AddFD(fd int, mode int, repeat bool) (bool, error) {
return true, nil
}
-func (p *pollster) DelFD(fd int, mode int) {
+func (p *pollster) DelFD(fd int, mode int) bool {
// pollServer is locked.
+ if p.closed {
+ return false
+ }
+
if mode == 'r' {
if !syscall.FDIsSet(fd, p.readFds) {
print("Select unexpected fd=", fd, " for read\n")
- return
+ return false
}
syscall.FDClr(fd, p.readFds)
} else {
if !syscall.FDIsSet(fd, p.writeFds) {
print("Select unexpected fd=", fd, " for write\n")
- return
+ return false
}
syscall.FDClr(fd, p.writeFds)
}
@@ -73,6 +83,8 @@ func (p *pollster) DelFD(fd int, mode int) {
syscall.FDClr(fd, p.repeatFds)
// We don't worry about maxFd here.
+
+ return true
}
func (p *pollster) WaitFD(s *pollServer, nsec int64) (fd int, mode int, err error) {
@@ -89,6 +101,10 @@ func (p *pollster) WaitFD(s *pollServer, nsec int64) (fd int, mode int, err erro
var e error
var tmpReadFds, tmpWriteFds syscall.FdSet
for {
+ if p.closed {
+ return -1, 0, errors.New("pollster closed")
+ }
+
// Temporary syscall.FdSet's into which the values are copied
// because select mutates the values.
tmpReadFds = *p.readFds
@@ -161,5 +177,6 @@ func (p *pollster) WaitFD(s *pollServer, nsec int64) (fd int, mode int, err erro
}
func (p *pollster) Close() error {
+ p.closed = true
return nil
}
diff --git a/libgo/go/net/fd_unix.go b/libgo/go/net/fd_unix.go
index e9d2e4165f1..42b0c74f218 100644
--- a/libgo/go/net/fd_unix.go
+++ b/libgo/go/net/fd_unix.go
@@ -110,16 +110,24 @@ func (s *pollServer) AddFD(fd *netFD, mode int) error {
// any I/O running on fd. The caller must have locked
// pollserver.
func (s *pollServer) Evict(fd *netFD) {
+ doWakeup := false
if s.pending[fd.sysfd<<1] == fd {
s.WakeFD(fd, 'r', errClosing)
- s.poll.DelFD(fd.sysfd, 'r')
+ if s.poll.DelFD(fd.sysfd, 'r') {
+ doWakeup = true
+ }
delete(s.pending, fd.sysfd<<1)
}
if s.pending[fd.sysfd<<1|1] == fd {
s.WakeFD(fd, 'w', errClosing)
- s.poll.DelFD(fd.sysfd, 'w')
+ if s.poll.DelFD(fd.sysfd, 'w') {
+ doWakeup = true
+ }
delete(s.pending, fd.sysfd<<1|1)
}
+ if doWakeup {
+ s.Wakeup()
+ }
}
var wakeupbuf [1]byte
diff --git a/libgo/go/net/multicast_posix_test.go b/libgo/go/net/multicast_posix_test.go
index 5850a6be0f7..ff1edaf838c 100644
--- a/libgo/go/net/multicast_posix_test.go
+++ b/libgo/go/net/multicast_posix_test.go
@@ -47,7 +47,7 @@ var multicastListenerTests = []struct {
// listener with same address family, same group address and same port.
func TestMulticastListener(t *testing.T) {
switch runtime.GOOS {
- case "netbsd", "openbsd", "plan9", "windows":
+ case "netbsd", "openbsd", "plan9", "solaris", "windows":
t.Skipf("skipping test on %q", runtime.GOOS)
case "linux":
if runtime.GOARCH == "arm" || runtime.GOARCH == "alpha" {
diff --git a/libgo/runtime/goc2c.c b/libgo/runtime/goc2c.c
index f3e8f380928..87db58f50e5 100644
--- a/libgo/runtime/goc2c.c
+++ b/libgo/runtime/goc2c.c
@@ -633,7 +633,7 @@ usage(void)
sysfatal("Usage: goc2c [--go-pkgpath PKGPATH] [--go-prefix PREFIX] [file]\n");
}
-void
+int
main(int argc, char **argv)
{
char *goarch;
diff --git a/libgo/runtime/mheap.c b/libgo/runtime/mheap.c
index 1b478f9ae83..6636b015d94 100644
--- a/libgo/runtime/mheap.c
+++ b/libgo/runtime/mheap.c
@@ -405,7 +405,7 @@ runtime_MHeap_Scavenger(void* dummy)
// GC blocks other goroutines via the runtime_worldsema.
runtime_noteclear(&note);
notep = &note;
- __go_go(forcegchelper, (void*)&notep);
+ __go_go(forcegchelper, (void*)notep);
runtime_entersyscall();
runtime_notesleep(&note);
runtime_exitsyscall();
diff --git a/libgo/testsuite/Makefile.in b/libgo/testsuite/Makefile.in
index 8c40e7ec30a..5ac4fd96e39 100644
--- a/libgo/testsuite/Makefile.in
+++ b/libgo/testsuite/Makefile.in
@@ -159,6 +159,7 @@ SPLIT_STACK = @SPLIT_STACK@
STRINGOPS_FLAG = @STRINGOPS_FLAG@
STRIP = @STRIP@
STRUCT_EPOLL_EVENT_FD_OFFSET = @STRUCT_EPOLL_EVENT_FD_OFFSET@
+USE_DEJAGNU = @USE_DEJAGNU@
VERSION = @VERSION@
WARN_FLAGS = @WARN_FLAGS@
WERROR = @WERROR@
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index 2bbb789c1a4..b0dc764c9c1 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,8 @@
+2013-02-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/56217
+ * testsuite/libgomp.c++/pr56217.C: New test.
+
2013-02-01 Alan Modra <amodra@gmail.com>
* task.c (GOMP_task, GOMP_taskwait): Comment.
diff --git a/libgomp/testsuite/libgomp.c++/pr56217.C b/libgomp/testsuite/libgomp.c++/pr56217.C
new file mode 100644
index 00000000000..19da9185350
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c++/pr56217.C
@@ -0,0 +1,36 @@
+// PR middle-end/56217
+// { dg-do run }
+// { dg-options "-std=c++0x" }
+
+extern "C" void abort ();
+
+template <typename T>
+struct ptr {
+ T *p;
+ ptr () : p () {}
+ ptr (ptr &) = delete;
+ ptr (ptr &&o) : p(o) {}
+ operator T * () { return p; }
+};
+
+int a[6] = { 100, 101, 102, 103, 104, 105 };
+
+static ptr<int>
+f ()
+{
+ ptr<int> pt;
+ #pragma omp task shared (pt)
+ pt.p = a + 2;
+ #pragma omp taskwait
+ return pt;
+}
+
+int
+main ()
+{
+ ptr<int> pt;
+ #pragma omp parallel
+ #pragma omp single
+ if (f () != a + 2 || *f () != 102)
+ abort ();
+}
diff --git a/libquadmath/ChangeLog b/libquadmath/ChangeLog
index 002ee557aa8..f8e7c71303d 100644
--- a/libquadmath/ChangeLog
+++ b/libquadmath/ChangeLog
@@ -1,3 +1,7 @@
+2013-02-06 Richard Sandiford <rdsandiford@googlemail.com>
+
+ Revert previous patch.
+
2013-02-03 Richard Sandiford <rdsandiford@googlemail.com>
Update copyright years.
diff --git a/libquadmath/math/cacoshq.c b/libquadmath/math/cacoshq.c
index 7326d50837d..263e03d0c11 100644
--- a/libquadmath/math/cacoshq.c
+++ b/libquadmath/math/cacoshq.c
@@ -1,5 +1,5 @@
/* Return arc hyperbole cosine for __float128 value.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/cacosq.c b/libquadmath/math/cacosq.c
index bb0720703ba..3c257b029bf 100644
--- a/libquadmath/math/cacosq.c
+++ b/libquadmath/math/cacosq.c
@@ -1,5 +1,5 @@
/* Return cosine of complex __float128 value.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/casinhq.c b/libquadmath/math/casinhq.c
index 7b2680c0f50..11487b967fc 100644
--- a/libquadmath/math/casinhq.c
+++ b/libquadmath/math/casinhq.c
@@ -1,5 +1,5 @@
/* Return arc hyperbole sine for __float128 value.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/casinq.c b/libquadmath/math/casinq.c
index 1431ae569ad..122ef5d85ae 100644
--- a/libquadmath/math/casinq.c
+++ b/libquadmath/math/casinq.c
@@ -1,5 +1,5 @@
/* Return arc sine of complex __float128 value.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/catanhq.c b/libquadmath/math/catanhq.c
index bd0200e5a37..6a86e2d0202 100644
--- a/libquadmath/math/catanhq.c
+++ b/libquadmath/math/catanhq.c
@@ -1,5 +1,5 @@
/* Return arc hyperbole tangent for __float128 value.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/catanq.c b/libquadmath/math/catanq.c
index f857adf8dea..a9c92579734 100644
--- a/libquadmath/math/catanq.c
+++ b/libquadmath/math/catanq.c
@@ -1,5 +1,5 @@
/* Return arc tangent of complex __float128 value.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/ccoshq.c b/libquadmath/math/ccoshq.c
index 437363b6b8f..8d55ad3a99d 100644
--- a/libquadmath/math/ccoshq.c
+++ b/libquadmath/math/ccoshq.c
@@ -1,5 +1,5 @@
/* Complex cosine hyperbole function for complex __float128.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/cexpq.c b/libquadmath/math/cexpq.c
index f40302e1612..bd4be1ebe71 100644
--- a/libquadmath/math/cexpq.c
+++ b/libquadmath/math/cexpq.c
@@ -1,5 +1,5 @@
/* Return value of complex exponential function for complex __float128 value.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/cimagq.c b/libquadmath/math/cimagq.c
index 196fb35e951..9b3bf70a10d 100644
--- a/libquadmath/math/cimagq.c
+++ b/libquadmath/math/cimagq.c
@@ -1,5 +1,5 @@
/* Return imaginary part of complex __float128 value.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/clog10q.c b/libquadmath/math/clog10q.c
index c813105548d..c379bec72b6 100644
--- a/libquadmath/math/clog10q.c
+++ b/libquadmath/math/clog10q.c
@@ -1,5 +1,5 @@
/* Compute complex base 10 logarithm for complex __float128.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/clogq.c b/libquadmath/math/clogq.c
index 315275a636b..1a772cd434d 100644
--- a/libquadmath/math/clogq.c
+++ b/libquadmath/math/clogq.c
@@ -1,5 +1,5 @@
/* Compute complex natural logarithm for complex __float128.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/complex.c b/libquadmath/math/complex.c
index d90ba7c9f2d..8cf9e9808cc 100644
--- a/libquadmath/math/complex.c
+++ b/libquadmath/math/complex.c
@@ -1,5 +1,5 @@
/* GCC Quad-Precision Math Library
- Copyright (C) 2010-2013 Free Software Foundation, Inc.
+ Copyright (C) 2010, 2011 Free Software Foundation, Inc.
Written by Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
This file is part of the libquadmath library.
diff --git a/libquadmath/math/conjq.c b/libquadmath/math/conjq.c
index ccc708107fe..8587d12193b 100644
--- a/libquadmath/math/conjq.c
+++ b/libquadmath/math/conjq.c
@@ -1,5 +1,5 @@
/* Return complex conjugate of complex __float128 value.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/cosq_kernel.c b/libquadmath/math/cosq_kernel.c
index 8ee7c34497d..42d29adfd8c 100644
--- a/libquadmath/math/cosq_kernel.c
+++ b/libquadmath/math/cosq_kernel.c
@@ -1,5 +1,5 @@
/* Quad-precision floating point cosine on <-pi/4,pi/4>.
- Copyright (C) 1999-2013 Free Software Foundation, Inc.
+ Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jj@ultra.linux.cz>
diff --git a/libquadmath/math/cprojq.c b/libquadmath/math/cprojq.c
index d79e662ae19..6092c732503 100644
--- a/libquadmath/math/cprojq.c
+++ b/libquadmath/math/cprojq.c
@@ -1,5 +1,5 @@
/* Compute projection of complex __float128 value to Riemann sphere.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/crealq.c b/libquadmath/math/crealq.c
index 8156df7f9d6..71f4a4405aa 100644
--- a/libquadmath/math/crealq.c
+++ b/libquadmath/math/crealq.c
@@ -1,5 +1,5 @@
/* Return real part of complex __float128 value.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/csinhq.c b/libquadmath/math/csinhq.c
index 635a978acb4..c16d576f4da 100644
--- a/libquadmath/math/csinhq.c
+++ b/libquadmath/math/csinhq.c
@@ -1,5 +1,5 @@
/* Complex sine hyperbole function for complex __float128.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/csinq.c b/libquadmath/math/csinq.c
index 77c9c9f69a1..c837e50b87f 100644
--- a/libquadmath/math/csinq.c
+++ b/libquadmath/math/csinq.c
@@ -1,5 +1,5 @@
/* Complex sine function for complex __float128.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/csqrtq.c b/libquadmath/math/csqrtq.c
index aaf081251f7..5279e4378a2 100644
--- a/libquadmath/math/csqrtq.c
+++ b/libquadmath/math/csqrtq.c
@@ -1,5 +1,5 @@
/* Complex square root of __float128 value.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Based on an algorithm by Stephen L. Moshier <moshier@world.std.com>.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/ctanhq.c b/libquadmath/math/ctanhq.c
index 30bd50e9743..8934cfad59f 100644
--- a/libquadmath/math/ctanhq.c
+++ b/libquadmath/math/ctanhq.c
@@ -1,5 +1,5 @@
/* Complex hyperbole tangent for __float128.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/ctanq.c b/libquadmath/math/ctanq.c
index 026e6080a87..d390511ca20 100644
--- a/libquadmath/math/ctanq.c
+++ b/libquadmath/math/ctanq.c
@@ -1,5 +1,5 @@
/* Complex tangent function for complex __float128.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/expq.c b/libquadmath/math/expq.c
index 5733b4906d9..70c638d7a08 100644
--- a/libquadmath/math/expq.c
+++ b/libquadmath/math/expq.c
@@ -1,5 +1,5 @@
/* Quad-precision floating point e^x.
- Copyright (C) 1999-2013 Free Software Foundation, Inc.
+ Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jj@ultra.linux.cz>
Partly based on double-precision code
diff --git a/libquadmath/math/fdimq.c b/libquadmath/math/fdimq.c
index 0ff08372e7c..539fb08c641 100644
--- a/libquadmath/math/fdimq.c
+++ b/libquadmath/math/fdimq.c
@@ -1,5 +1,5 @@
/* Return positive difference between arguments.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2004, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/fmaq.c b/libquadmath/math/fmaq.c
index 407a649c62c..d3c5fb3901a 100644
--- a/libquadmath/math/fmaq.c
+++ b/libquadmath/math/fmaq.c
@@ -1,5 +1,5 @@
/* Compute x * y + z as ternary operation.
- Copyright (C) 2010-2013 Free Software Foundation, Inc.
+ Copyright (C) 2010-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2010.
diff --git a/libquadmath/math/fmaxq.c b/libquadmath/math/fmaxq.c
index a9099ffd2f0..e8ed6f440aa 100644
--- a/libquadmath/math/fmaxq.c
+++ b/libquadmath/math/fmaxq.c
@@ -1,5 +1,5 @@
/* Return maximum numeric value of X and Y.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/fminq.c b/libquadmath/math/fminq.c
index 680cf757c60..2fbe4116a6d 100644
--- a/libquadmath/math/fminq.c
+++ b/libquadmath/math/fminq.c
@@ -1,5 +1,5 @@
/* Return minimum numeric value of X and Y.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/math/llrintq.c b/libquadmath/math/llrintq.c
index f6349e7e37f..eef31d823b6 100644
--- a/libquadmath/math/llrintq.c
+++ b/libquadmath/math/llrintq.c
@@ -1,6 +1,6 @@
/* Round argument to nearest integral value according to current rounding
direction.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
Jakub Jelinek <jj@ultra.linux.cz>, 1999.
diff --git a/libquadmath/math/llroundq.c b/libquadmath/math/llroundq.c
index 8d89edcf34b..d22180d6bba 100644
--- a/libquadmath/math/llroundq.c
+++ b/libquadmath/math/llroundq.c
@@ -1,5 +1,5 @@
/* Round __float128 value to long long int.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
Jakub Jelinek <jj@ultra.linux.cz>, 1999.
diff --git a/libquadmath/math/lrintq.c b/libquadmath/math/lrintq.c
index 446bee150b8..d1497ae3882 100644
--- a/libquadmath/math/lrintq.c
+++ b/libquadmath/math/lrintq.c
@@ -1,6 +1,6 @@
/* Round argument to nearest integral value according to current rounding
direction.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999, 2004, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
Jakub Jelinek <jj@ultra.linux.cz>, 1999.
diff --git a/libquadmath/math/lroundq.c b/libquadmath/math/lroundq.c
index 2c547ac6e26..59c883a1464 100644
--- a/libquadmath/math/lroundq.c
+++ b/libquadmath/math/lroundq.c
@@ -1,5 +1,5 @@
/* Round __float128 value to long int.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
Jakub Jelinek <jj@ultra.linux.cz>, 1999.
diff --git a/libquadmath/math/rem_pio2q.c b/libquadmath/math/rem_pio2q.c
index d93ccfbe90c..60653c8d1d3 100644
--- a/libquadmath/math/rem_pio2q.c
+++ b/libquadmath/math/rem_pio2q.c
@@ -312,7 +312,7 @@ recompute:
/* Quad-precision floating point argument reduction.
- Copyright (C) 1999-2013 Free Software Foundation, Inc.
+ Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jj@ultra.linux.cz>
diff --git a/libquadmath/math/remquoq.c b/libquadmath/math/remquoq.c
index 0778b8748c8..f7001afc3e5 100644
--- a/libquadmath/math/remquoq.c
+++ b/libquadmath/math/remquoq.c
@@ -1,5 +1,5 @@
/* Compute remainder and a congruent to the quotient.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
Jakub Jelinek <jj@ultra.linux.cz>, 1999.
diff --git a/libquadmath/math/roundq.c b/libquadmath/math/roundq.c
index c3bba44dffe..7c9d640e933 100644
--- a/libquadmath/math/roundq.c
+++ b/libquadmath/math/roundq.c
@@ -1,5 +1,5 @@
/* Round __float128 to integer away from zero.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
Jakub Jelinek <jj@ultra.linux.cz>, 1999.
diff --git a/libquadmath/math/sincos_table.c b/libquadmath/math/sincos_table.c
index d78782575c0..b7e7c750314 100644
--- a/libquadmath/math/sincos_table.c
+++ b/libquadmath/math/sincos_table.c
@@ -1,5 +1,5 @@
/* Quad-precision floating point sine and cosine tables.
- Copyright (C) 1999-2013 Free Software Foundation, Inc.
+ Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jj@ultra.linux.cz>
diff --git a/libquadmath/math/sincosq.c b/libquadmath/math/sincosq.c
index 48a6fdd4d7a..b7c221486d7 100644
--- a/libquadmath/math/sincosq.c
+++ b/libquadmath/math/sincosq.c
@@ -1,5 +1,5 @@
/* Compute sine and cosine of argument.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
Jakub Jelinek <jj@ultra.linux.cz>.
diff --git a/libquadmath/math/sincosq_kernel.c b/libquadmath/math/sincosq_kernel.c
index 91b61aebb13..f6341a4d948 100644
--- a/libquadmath/math/sincosq_kernel.c
+++ b/libquadmath/math/sincosq_kernel.c
@@ -1,5 +1,5 @@
/* Quad-precision floating point sine and cosine on <-pi/4,pi/4>.
- Copyright (C) 1999-2013 Free Software Foundation, Inc.
+ Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jj@ultra.linux.cz>
diff --git a/libquadmath/math/sinq_kernel.c b/libquadmath/math/sinq_kernel.c
index 8ce61af075a..86034551d43 100644
--- a/libquadmath/math/sinq_kernel.c
+++ b/libquadmath/math/sinq_kernel.c
@@ -1,5 +1,5 @@
/* Quad-precision floating point sine on <-pi/4,pi/4>.
- Copyright (C) 1999-2013 Free Software Foundation, Inc.
+ Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jj@ultra.linux.cz>
diff --git a/libquadmath/math/tgammaq.c b/libquadmath/math/tgammaq.c
index 9636801aa0a..a07d5831de0 100644
--- a/libquadmath/math/tgammaq.c
+++ b/libquadmath/math/tgammaq.c
@@ -1,5 +1,5 @@
/* Implementation of gamma function according to ISO C.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999, 2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
Jakub Jelinek <jj@ultra.linux.cz, 1999.
diff --git a/libquadmath/math/truncq.c b/libquadmath/math/truncq.c
index b2e950eaf6e..608871785d1 100644
--- a/libquadmath/math/truncq.c
+++ b/libquadmath/math/truncq.c
@@ -1,5 +1,5 @@
/* Truncate argument to nearest integral value not larger than the argument.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
Jakub Jelinek <jj@ultra.linux.cz>, 1999.
diff --git a/libquadmath/math/x2y2m1q.c b/libquadmath/math/x2y2m1q.c
index 1843bae6ee7..90bbc2f605d 100644
--- a/libquadmath/math/x2y2m1q.c
+++ b/libquadmath/math/x2y2m1q.c
@@ -1,5 +1,5 @@
/* Compute x^2 + y^2 - 1, without large cancellation error.
- Copyright (C) 2012-2013 Free Software Foundation, Inc.
+ Copyright (C) 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
diff --git a/libquadmath/printf/_i18n_number.h b/libquadmath/printf/_i18n_number.h
index bddcac0a0d1..80065d88b13 100644
--- a/libquadmath/printf/_i18n_number.h
+++ b/libquadmath/printf/_i18n_number.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000-2013 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2004, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 2000.
diff --git a/libquadmath/printf/_itoa.h b/libquadmath/printf/_itoa.h
index 4dc98f38596..a0cd2b05ca4 100644
--- a/libquadmath/printf/_itoa.h
+++ b/libquadmath/printf/_itoa.h
@@ -1,5 +1,5 @@
/* Internal function for converting integers to ASCII.
- Copyright (C) 1994-2013 Free Software Foundation, Inc.
+ Copyright (C) 1994-1999,2002,2003,2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
diff --git a/libquadmath/printf/_itowa.h b/libquadmath/printf/_itowa.h
index 2e16dc672d5..4717b5c654d 100644
--- a/libquadmath/printf/_itowa.h
+++ b/libquadmath/printf/_itowa.h
@@ -1,5 +1,5 @@
/* Internal function for converting integers to ASCII.
- Copyright (C) 1994-2013 Free Software Foundation, Inc.
+ Copyright (C) 1994,95,96,97,98,99,2002,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
diff --git a/libquadmath/printf/add_n.c b/libquadmath/printf/add_n.c
index 8183cee8960..749cf3ee8ad 100644
--- a/libquadmath/printf/add_n.c
+++ b/libquadmath/printf/add_n.c
@@ -1,6 +1,6 @@
/* mpn_add_n -- Add two limb vectors of equal, non-zero length.
-Copyright (C) 1992-2013 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
diff --git a/libquadmath/printf/addmul_1.c b/libquadmath/printf/addmul_1.c
index f99ee8cb4cb..f527f984839 100644
--- a/libquadmath/printf/addmul_1.c
+++ b/libquadmath/printf/addmul_1.c
@@ -3,7 +3,7 @@
limb vector pointed to by RES_PTR. Return the most significant limb of
the product, adjusted for carry-out from the addition.
-Copyright (C) 1992-2013 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
diff --git a/libquadmath/printf/cmp.c b/libquadmath/printf/cmp.c
index 31e83e7e603..a4be43e2a17 100644
--- a/libquadmath/printf/cmp.c
+++ b/libquadmath/printf/cmp.c
@@ -1,6 +1,6 @@
/* mpn_cmp -- Compare two low-level natural-number integers.
-Copyright (C) 1991-2013 Free Software Foundation, Inc.
+Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
diff --git a/libquadmath/printf/divrem.c b/libquadmath/printf/divrem.c
index 25640fdd8c2..944d1a0c08c 100644
--- a/libquadmath/printf/divrem.c
+++ b/libquadmath/printf/divrem.c
@@ -1,7 +1,7 @@
/* mpn_divrem -- Divide natural numbers, producing both remainder and
quotient.
-Copyright (C) 1993-2013 Free Software Foundation, Inc.
+Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
diff --git a/libquadmath/printf/flt1282mpn.c b/libquadmath/printf/flt1282mpn.c
index 0c091efb95d..0105314ef3a 100644
--- a/libquadmath/printf/flt1282mpn.c
+++ b/libquadmath/printf/flt1282mpn.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1995-2013 Free Software Foundation, Inc.
+/* Copyright (C) 1995,1996,1997,1998,1999,2002,2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
diff --git a/libquadmath/printf/fpioconst.c b/libquadmath/printf/fpioconst.c
index 9f9aff7d3a6..cacb1446dde 100644
--- a/libquadmath/printf/fpioconst.c
+++ b/libquadmath/printf/fpioconst.c
@@ -1,5 +1,6 @@
/* Table of MP integer constants 10^(2^i), used for floating point <-> decimal.
- Copyright (C) 1995-2013 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1996, 1997, 1998, 1999, 2002, 2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
diff --git a/libquadmath/printf/fpioconst.h b/libquadmath/printf/fpioconst.h
index 40375a4c426..7b7a40a27b0 100644
--- a/libquadmath/printf/fpioconst.h
+++ b/libquadmath/printf/fpioconst.h
@@ -1,5 +1,6 @@
/* Header file for constants used in floating point <-> decimal conversions.
- Copyright (C) 1995-2013 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1996, 1997, 1998, 1999, 2002, 2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
diff --git a/libquadmath/printf/gmp-impl.h b/libquadmath/printf/gmp-impl.h
index bf280900140..0f1419277de 100644
--- a/libquadmath/printf/gmp-impl.h
+++ b/libquadmath/printf/gmp-impl.h
@@ -1,6 +1,6 @@
/* Include file for internal GNU MP types and definitions.
-Copyright (C) 1991-2013 Free Software Foundation, Inc.
+Copyright (C) 1991, 1993, 1994, 1995, 1996, 2011 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
diff --git a/libquadmath/printf/lshift.c b/libquadmath/printf/lshift.c
index 62108bf7b21..58aa8d4649f 100644
--- a/libquadmath/printf/lshift.c
+++ b/libquadmath/printf/lshift.c
@@ -1,6 +1,6 @@
/* mpn_lshift -- Shift left low level.
-Copyright (C) 1991-2013 Free Software Foundation, Inc.
+Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
diff --git a/libquadmath/printf/mul.c b/libquadmath/printf/mul.c
index 1cd44b2958c..d31fa36fa98 100644
--- a/libquadmath/printf/mul.c
+++ b/libquadmath/printf/mul.c
@@ -1,6 +1,6 @@
/* mpn_mul -- Multiply two natural numbers.
-Copyright (C) 1991-2013 Free Software Foundation, Inc.
+Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
diff --git a/libquadmath/printf/mul_1.c b/libquadmath/printf/mul_1.c
index e0e40f446e7..48a273f075b 100644
--- a/libquadmath/printf/mul_1.c
+++ b/libquadmath/printf/mul_1.c
@@ -1,7 +1,7 @@
/* mpn_mul_1 -- Multiply a limb vector with a single limb and
store the product in a second limb vector.
-Copyright (C) 1991-2013 Free Software Foundation, Inc.
+Copyright (C) 1991, 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
diff --git a/libquadmath/printf/mul_n.c b/libquadmath/printf/mul_n.c
index 15627b3d357..c4bc1bed28f 100644
--- a/libquadmath/printf/mul_n.c
+++ b/libquadmath/printf/mul_n.c
@@ -1,6 +1,6 @@
/* mpn_mul_n -- Multiply two natural numbers of length n.
-Copyright (C) 1991-2013 Free Software Foundation, Inc.
+Copyright (C) 1991, 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
diff --git a/libquadmath/printf/printf_fp.c b/libquadmath/printf/printf_fp.c
index fc08dc1f6c0..8effcee88fa 100644
--- a/libquadmath/printf/printf_fp.c
+++ b/libquadmath/printf/printf_fp.c
@@ -1,5 +1,5 @@
/* Floating point output for `printf'.
- Copyright (C) 1995-2013 Free Software Foundation, Inc.
+ Copyright (C) 1995-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
diff --git a/libquadmath/printf/printf_fphex.c b/libquadmath/printf/printf_fphex.c
index 2ab249b7954..fc960f38eb9 100644
--- a/libquadmath/printf/printf_fphex.c
+++ b/libquadmath/printf/printf_fphex.c
@@ -1,5 +1,5 @@
/* Print floating point number in hexadecimal notation according to ISO C99.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/printf/quadmath-printf.c b/libquadmath/printf/quadmath-printf.c
index 44c1f4904ab..b70f432cce0 100644
--- a/libquadmath/printf/quadmath-printf.c
+++ b/libquadmath/printf/quadmath-printf.c
@@ -1,5 +1,5 @@
/* GCC Quad-Precision Math Library
- Copyright (C) 2011-2013 Free Software Foundation, Inc.
+ Copyright (C) 2011 Free Software Foundation, Inc.
Written by Jakub Jelinek <jakub@redhat.com>
This file is part of the libquadmath library.
diff --git a/libquadmath/printf/quadmath-printf.h b/libquadmath/printf/quadmath-printf.h
index 60e0d994a45..32ebcec928c 100644
--- a/libquadmath/printf/quadmath-printf.h
+++ b/libquadmath/printf/quadmath-printf.h
@@ -1,5 +1,5 @@
/* GCC Quad-Precision Math Library
- Copyright (C) 2011-2013 Free Software Foundation, Inc.
+ Copyright (C) 2011 Free Software Foundation, Inc.
Written by Jakub Jelinek <jakub@redhat.com>
This file is part of the libquadmath library.
diff --git a/libquadmath/printf/rshift.c b/libquadmath/printf/rshift.c
index bc56855db22..17fd914d9d0 100644
--- a/libquadmath/printf/rshift.c
+++ b/libquadmath/printf/rshift.c
@@ -1,6 +1,6 @@
/* mpn_rshift -- Shift right a low-level natural-number integer.
-Copyright (C) 1991-2013 Free Software Foundation, Inc.
+Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
diff --git a/libquadmath/printf/sub_n.c b/libquadmath/printf/sub_n.c
index 777e091cdda..92e7187313b 100644
--- a/libquadmath/printf/sub_n.c
+++ b/libquadmath/printf/sub_n.c
@@ -1,6 +1,6 @@
/* mpn_sub_n -- Subtract two limb vectors of equal, non-zero length.
-Copyright (C) 1992-2013 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
diff --git a/libquadmath/printf/submul_1.c b/libquadmath/printf/submul_1.c
index bb922e9d9aa..31903c6284e 100644
--- a/libquadmath/printf/submul_1.c
+++ b/libquadmath/printf/submul_1.c
@@ -3,7 +3,7 @@
from the limb vector pointed to by RES_PTR. Return the most significant
limb of the product, adjusted for carry-out from the subtraction.
-Copyright (C) 1992-2013 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1996, 2005 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
diff --git a/libquadmath/quadmath-imp.h b/libquadmath/quadmath-imp.h
index 3e21dc64316..40b346b6ff2 100644
--- a/libquadmath/quadmath-imp.h
+++ b/libquadmath/quadmath-imp.h
@@ -1,5 +1,5 @@
/* GCC Quad-Precision Math Library
- Copyright (C) 2010-2013 Free Software Foundation, Inc.
+ Copyright (C) 2010, 2011 Free Software Foundation, Inc.
Written by Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
This file is part of the libquadmath library.
diff --git a/libquadmath/quadmath-rounding-mode.h b/libquadmath/quadmath-rounding-mode.h
index 2ad7ca58d5a..a806794835a 100644
--- a/libquadmath/quadmath-rounding-mode.h
+++ b/libquadmath/quadmath-rounding-mode.h
@@ -1,5 +1,5 @@
/* GCC Quad-Precision Math Library
- Copyright (C) 2012-2013 Free Software Foundation, Inc.
+ Copyright (C) 2012 Free Software Foundation, Inc.
This file is part of the libquadmath library.
Libquadmath is free software; you can redistribute it and/or
diff --git a/libquadmath/quadmath.h b/libquadmath/quadmath.h
index 73e6b2c55fd..863fe440b23 100644
--- a/libquadmath/quadmath.h
+++ b/libquadmath/quadmath.h
@@ -1,5 +1,5 @@
/* GCC Quad-Precision Math Library
- Copyright (C) 2010-2013 Free Software Foundation, Inc.
+ Copyright (C) 2010, 2011 Free Software Foundation, Inc.
Written by Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
This file is part of the libquadmath library.
diff --git a/libquadmath/quadmath_weak.h b/libquadmath/quadmath_weak.h
index 25befd2102d..986079abc40 100644
--- a/libquadmath/quadmath_weak.h
+++ b/libquadmath/quadmath_weak.h
@@ -1,5 +1,5 @@
/* GCC Quad-Precision Math Library
- Copyright (C) 2010-2013 Free Software Foundation, Inc.
+ Copyright (C) 2010, 2011 Free Software Foundation, Inc.
Written by Tobias Burnus <burnus@net-b.de>
This file is part of the libquadmath library.
diff --git a/libquadmath/strtod/grouping.h b/libquadmath/strtod/grouping.h
index de1ad10d39c..a1660871254 100644
--- a/libquadmath/strtod/grouping.h
+++ b/libquadmath/strtod/grouping.h
@@ -1,5 +1,5 @@
/* Internal header for proving correct grouping in strings of numbers.
- Copyright (C) 1995-2013 Free Software Foundation, Inc.
+ Copyright (C) 1995,1996,1997,1998,2000,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
diff --git a/libquadmath/strtod/mpn2flt128.c b/libquadmath/strtod/mpn2flt128.c
index 5e8b06c2c8f..844ae97d834 100644
--- a/libquadmath/strtod/mpn2flt128.c
+++ b/libquadmath/strtod/mpn2flt128.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1995-2013 Free Software Foundation, Inc.
+/* Copyright (C) 1995,1996,1997,1998,1999,2002,2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
diff --git a/libquadmath/strtod/strtod_l.c b/libquadmath/strtod/strtod_l.c
index 01d755f37bb..d1845a8039c 100644
--- a/libquadmath/strtod/strtod_l.c
+++ b/libquadmath/strtod/strtod_l.c
@@ -1,5 +1,5 @@
/* Convert string representing a number to float value, using given locale.
- Copyright (C) 1997-2013 Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
diff --git a/libquadmath/strtod/strtoflt128.c b/libquadmath/strtod/strtoflt128.c
index c21c03abe62..acdf36e9e8a 100644
--- a/libquadmath/strtod/strtoflt128.c
+++ b/libquadmath/strtod/strtoflt128.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999-2013 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
diff --git a/libssp/ChangeLog b/libssp/ChangeLog
index c586b99d2b3..eb020d9dcf8 100644
--- a/libssp/ChangeLog
+++ b/libssp/ChangeLog
@@ -1,3 +1,7 @@
+2013-02-06 Richard Sandiford <rdsandiford@googlemail.com>
+
+ Revert previous patch.
+
2013-02-03 Richard Sandiford <rdsandiford@googlemail.com>
Update copyright years.
diff --git a/libssp/Makefile.am b/libssp/Makefile.am
index a74f0b9801a..5a2ecac1f45 100644
--- a/libssp/Makefile.am
+++ b/libssp/Makefile.am
@@ -1,6 +1,7 @@
## Makefile for the toplevel directory of the libssp library.
##
-## Copyright (C) 2005-2013 Free Software Foundation, Inc.
+## Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+## Free Software Foundation, Inc.
##
AUTOMAKE_OPTIONS = 1.9.5 foreign
diff --git a/libssp/gets-chk.c b/libssp/gets-chk.c
index 65921bc1ff8..053c4462647 100644
--- a/libssp/gets-chk.c
+++ b/libssp/gets-chk.c
@@ -1,5 +1,5 @@
/* Checking gets.
- Copyright (C) 2005-2013 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libssp/memcpy-chk.c b/libssp/memcpy-chk.c
index 832e6ebff0d..ad3f0b340ce 100644
--- a/libssp/memcpy-chk.c
+++ b/libssp/memcpy-chk.c
@@ -1,5 +1,5 @@
/* Checking memcpy.
- Copyright (C) 2005-2013 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libssp/memmove-chk.c b/libssp/memmove-chk.c
index 64268f6bc99..c28e1b59f2f 100644
--- a/libssp/memmove-chk.c
+++ b/libssp/memmove-chk.c
@@ -1,5 +1,5 @@
/* Checking memmove.
- Copyright (C) 2005-2013 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009, 2010 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libssp/mempcpy-chk.c b/libssp/mempcpy-chk.c
index aefb2dde669..8c254c17dd3 100644
--- a/libssp/mempcpy-chk.c
+++ b/libssp/mempcpy-chk.c
@@ -1,5 +1,5 @@
/* Checking mempcpy.
- Copyright (C) 2005-2013 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libssp/memset-chk.c b/libssp/memset-chk.c
index fa9152d5bf4..a1820694a3b 100644
--- a/libssp/memset-chk.c
+++ b/libssp/memset-chk.c
@@ -1,5 +1,5 @@
/* Checking memset.
- Copyright (C) 2005-2013 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libssp/snprintf-chk.c b/libssp/snprintf-chk.c
index ff1c775bbfd..37ce77b1498 100644
--- a/libssp/snprintf-chk.c
+++ b/libssp/snprintf-chk.c
@@ -1,5 +1,5 @@
/* Checking snprintf.
- Copyright (C) 2005-2013 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libssp/sprintf-chk.c b/libssp/sprintf-chk.c
index 61de6b85b2e..b47b115c18c 100644
--- a/libssp/sprintf-chk.c
+++ b/libssp/sprintf-chk.c
@@ -1,5 +1,5 @@
/* Checking sprintf.
- Copyright (C) 2005-2013 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libssp/ssp-local.c b/libssp/ssp-local.c
index b504beb982c..19f9d8c800d 100644
--- a/libssp/ssp-local.c
+++ b/libssp/ssp-local.c
@@ -1,5 +1,5 @@
/* Stack protector support.
- Copyright (C) 2005-2013 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libssp/ssp.c b/libssp/ssp.c
index 85220a8e375..aaa5a322c8d 100644
--- a/libssp/ssp.c
+++ b/libssp/ssp.c
@@ -1,5 +1,5 @@
/* Stack protector support.
- Copyright (C) 2005-2013 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libssp/ssp/ssp.h.in b/libssp/ssp/ssp.h.in
index daab2d6c7f3..9a50d3e3a35 100644
--- a/libssp/ssp/ssp.h.in
+++ b/libssp/ssp/ssp.h.in
@@ -1,5 +1,5 @@
/* Object size checking support macros.
- Copyright (C) 2004-2013 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libssp/ssp/stdio.h b/libssp/ssp/stdio.h
index b403dfd99a2..283ca6273dd 100644
--- a/libssp/ssp/stdio.h
+++ b/libssp/ssp/stdio.h
@@ -1,5 +1,5 @@
/* Checking macros for stdio functions.
- Copyright (C) 2004-2013 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libssp/ssp/string.h b/libssp/ssp/string.h
index cf919bd936f..9e4754c617b 100644
--- a/libssp/ssp/string.h
+++ b/libssp/ssp/string.h
@@ -1,5 +1,5 @@
/* Checking macros for string functions.
- Copyright (C) 2004-2013 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libssp/ssp/unistd.h b/libssp/ssp/unistd.h
index d821aa49ceb..343fe5034eb 100644
--- a/libssp/ssp/unistd.h
+++ b/libssp/ssp/unistd.h
@@ -1,5 +1,5 @@
/* Checking macros for unistd functions.
- Copyright (C) 2005-2013 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libssp/stpcpy-chk.c b/libssp/stpcpy-chk.c
index b15140784f2..20d549faa44 100644
--- a/libssp/stpcpy-chk.c
+++ b/libssp/stpcpy-chk.c
@@ -1,5 +1,5 @@
/* Checking stpcpy.
- Copyright (C) 2005-2013 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libssp/strcat-chk.c b/libssp/strcat-chk.c
index 5f436adf8bb..2481933ebf6 100644
--- a/libssp/strcat-chk.c
+++ b/libssp/strcat-chk.c
@@ -1,5 +1,5 @@
/* Checking strcat.
- Copyright (C) 1991-2013 Free Software Foundation, Inc.
+ Copyright (C) 1991, 1997, 2003, 2004, 2005, 2009 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libssp/strcpy-chk.c b/libssp/strcpy-chk.c
index a384d98ab42..7568cdbcd96 100644
--- a/libssp/strcpy-chk.c
+++ b/libssp/strcpy-chk.c
@@ -1,5 +1,5 @@
/* Checking strcpy.
- Copyright (C) 2005-2013 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libssp/strncat-chk.c b/libssp/strncat-chk.c
index 17d66fcad23..6ab41ffbc68 100644
--- a/libssp/strncat-chk.c
+++ b/libssp/strncat-chk.c
@@ -1,5 +1,5 @@
/* Checking strncat.
- Copyright (C) 1991-2013 Free Software Foundation, Inc.
+ Copyright (C) 1991, 1997, 2003, 2004, 2005, 2009 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libssp/strncpy-chk.c b/libssp/strncpy-chk.c
index cd434ed0139..a69db68ecd0 100644
--- a/libssp/strncpy-chk.c
+++ b/libssp/strncpy-chk.c
@@ -1,5 +1,5 @@
/* Checking strncpy.
- Copyright (C) 2005-2013 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libssp/vsnprintf-chk.c b/libssp/vsnprintf-chk.c
index 143b6dbf17e..d7b4f64abd0 100644
--- a/libssp/vsnprintf-chk.c
+++ b/libssp/vsnprintf-chk.c
@@ -1,5 +1,5 @@
/* Checking vsnprintf.
- Copyright (C) 2005-2013 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libssp/vsprintf-chk.c b/libssp/vsprintf-chk.c
index d9262459ab9..a6e2578284c 100644
--- a/libssp/vsprintf-chk.c
+++ b/libssp/vsprintf-chk.c
@@ -1,5 +1,5 @@
/* Checking vsprintf.
- Copyright (C) 2005-2013 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index dc96107a1f9..2754cd06397 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,40 @@
+2013-02-08 Edward Smith-Rowland <3dw4rd@verizon.net>
+
+ PR libstdc++/56216
+ * include/tr1/special_function_util.h: Remove spurious const
+ from numeric arguments.
+ * include/tr1/riemann_zeta.tcc: Ditto.
+ * include/tr1/exp_integral.tcc: Ditto.
+ * include/tr1/bessel_function.tcc: Ditto.
+ * include/tr1/hypergeometric.tcc: Ditto.
+ * include/tr1/modified_bessel_func.tcc: Ditto.
+ * include/tr1/poly_laguerre.tcc: Ditto.
+ * include/tr1/gamma.tcc: Ditto.
+ * include/tr1/legendre_function.tcc: Ditto.
+ * include/tr1/poly_hermite.tcc: Ditto.
+ * include/tr1/ell_integral.tcc: Ditto.
+ * include/tr1/bessel_function.tcc (__cyl_bessel_ij_series):
+ If argument is zero return function value.
+ * testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/pr56216.cc:
+ New file.
+
+2013-02-07 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/27_io/basic_ios/pr56193.cc: Tweak.
+
+2013-02-06 Edward Smith-Rowland <3dw4rd@verizon.net>
+
+ PR libstdc++/56193
+ * include/bits/basic_ios.h: Replace operator void*() const
+ with explicit operator bool() const in C++11 and greater.
+ * testsuite/27_io/basic_ios/pr56193.cc: New file.
+
+2013-02-04 Dodji Seketeli <dodji@redhat.com>
+
+ Add missing explicit instantiation for std::lower_bound template
+ * libstdc++-v3/src/c++11/hashtable_c++0x.cc (namespace std): Add
+ missing instantiation for std::lower_bound template.
+
2013-02-04 François Dumont <fdumont@gcc.gnu.org>
* include/bits/functional_hash.h (std::__is_fast_hash<>): New.
diff --git a/libstdc++-v3/include/bits/basic_ios.h b/libstdc++-v3/include/bits/basic_ios.h
index b78b464ba02..bda40f0a7a3 100644
--- a/libstdc++-v3/include/bits/basic_ios.h
+++ b/libstdc++-v3/include/bits/basic_ios.h
@@ -112,8 +112,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
* This allows you to write constructs such as
* <code>if (!a_stream) ...</code> and <code>while (a_stream) ...</code>
*/
+#if __cplusplus >= 201103L
+ explicit operator bool() const
+ { return !this->fail(); }
+#else
operator void*() const
{ return this->fail() ? 0 : const_cast<basic_ios*>(this); }
+#endif
bool
operator!() const
diff --git a/libstdc++-v3/include/tr1/bessel_function.tcc b/libstdc++-v3/include/tr1/bessel_function.tcc
index e30647121b7..6cc152a2d0e 100644
--- a/libstdc++-v3/include/tr1/bessel_function.tcc
+++ b/libstdc++-v3/include/tr1/bessel_function.tcc
@@ -86,8 +86,8 @@ namespace tr1
*/
template <typename _Tp>
void
- __gamma_temme(const _Tp __mu,
- _Tp & __gam1, _Tp & __gam2, _Tp & __gampl, _Tp & __gammi)
+ __gamma_temme(_Tp __mu,
+ _Tp & __gam1, _Tp & __gam2, _Tp & __gampl, _Tp & __gammi)
{
#if _GLIBCXX_USE_C99_MATH_TR1
__gampl = _Tp(1) / std::tr1::tgamma(_Tp(1) + __mu);
@@ -124,7 +124,7 @@ namespace tr1
*/
template <typename _Tp>
void
- __bessel_jn(const _Tp __nu, const _Tp __x,
+ __bessel_jn(_Tp __nu, _Tp __x,
_Tp & __Jnu, _Tp & __Nnu, _Tp & __Jpnu, _Tp & __Npnu)
{
if (__x == _Tp(0))
@@ -349,11 +349,8 @@ namespace tr1
*/
template <typename _Tp>
void
- __cyl_bessel_jn_asymp(const _Tp __nu, const _Tp __x,
- _Tp & __Jnu, _Tp & __Nnu)
+ __cyl_bessel_jn_asymp(_Tp __nu, _Tp __x, _Tp & __Jnu, _Tp & __Nnu)
{
- const _Tp __coef = std::sqrt(_Tp(2)
- / (__numeric_constants<_Tp>::__pi() * __x));
const _Tp __mu = _Tp(4) * __nu * __nu;
const _Tp __mum1 = __mu - _Tp(1);
const _Tp __mum9 = __mu - _Tp(9);
@@ -370,6 +367,8 @@ namespace tr1
const _Tp __c = std::cos(__chi);
const _Tp __s = std::sin(__chi);
+ const _Tp __coef = std::sqrt(_Tp(2)
+ / (__numeric_constants<_Tp>::__pi() * __x));
__Jnu = __coef * (__c * __P - __s * __Q);
__Nnu = __coef * (__s * __P + __c * __Q);
@@ -406,10 +405,18 @@ namespace tr1
*/
template <typename _Tp>
_Tp
- __cyl_bessel_ij_series(const _Tp __nu, const _Tp __x, const _Tp __sgn,
- const unsigned int __max_iter)
+ __cyl_bessel_ij_series(_Tp __nu, _Tp __x, _Tp __sgn,
+ unsigned int __max_iter)
{
-
+ if (__x == _Tp(0))
+ {
+ if (__nu == _Tp(0))
+ return _Tp(1);
+ else if (__nu == _Tp(1))
+ return _Tp(0);
+ else
+ return _Tp(0);
+ }
const _Tp __x2 = __x / _Tp(2);
_Tp __fact = __nu * std::log(__x2);
#if _GLIBCXX_USE_C99_MATH_TR1
@@ -450,7 +457,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __cyl_bessel_j(const _Tp __nu, const _Tp __x)
+ __cyl_bessel_j(_Tp __nu, _Tp __x)
{
if (__nu < _Tp(0) || __x < _Tp(0))
std::__throw_domain_error(__N("Bad argument "
@@ -492,7 +499,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __cyl_neumann_n(const _Tp __nu, const _Tp __x)
+ __cyl_neumann_n(_Tp __nu, _Tp __x)
{
if (__nu < _Tp(0) || __x < _Tp(0))
std::__throw_domain_error(__N("Bad argument "
@@ -529,7 +536,7 @@ namespace tr1
*/
template <typename _Tp>
void
- __sph_bessel_jn(const unsigned int __n, const _Tp __x,
+ __sph_bessel_jn(unsigned int __n, _Tp __x,
_Tp & __j_n, _Tp & __n_n, _Tp & __jp_n, _Tp & __np_n)
{
const _Tp __nu = _Tp(__n) + _Tp(0.5L);
@@ -564,7 +571,7 @@ namespace tr1
*/
template <typename _Tp>
_Tp
- __sph_bessel(const unsigned int __n, const _Tp __x)
+ __sph_bessel(unsigned int __n, _Tp __x)
{
if (__x < _Tp(0))
std::__throw_domain_error(__N("Bad argument "
@@ -602,7 +609,7 @@ namespace tr1
*/
template <typename _Tp>
_Tp
- __sph_neumann(const unsigned int __n, const _Tp __x)
+ __sph_neumann(unsigned int __n, _Tp __x)
{
if (__x < _Tp(0))
std::__throw_domain_error(__N("Bad argument "
diff --git a/libstdc++-v3/include/tr1/ell_integral.tcc b/libstdc++-v3/include/tr1/ell_integral.tcc
index 7482cae0164..b53076b0281 100644
--- a/libstdc++-v3/include/tr1/ell_integral.tcc
+++ b/libstdc++-v3/include/tr1/ell_integral.tcc
@@ -70,7 +70,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __ellint_rf(const _Tp __x, const _Tp __y, const _Tp __z)
+ __ellint_rf(_Tp __x, _Tp __y, _Tp __z)
{
const _Tp __min = std::numeric_limits<_Tp>::min();
const _Tp __max = std::numeric_limits<_Tp>::max();
@@ -149,7 +149,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __comp_ellint_1_series(const _Tp __k)
+ __comp_ellint_1_series(_Tp __k)
{
const _Tp __kk = __k * __k;
@@ -187,7 +187,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __comp_ellint_1(const _Tp __k)
+ __comp_ellint_1(_Tp __k)
{
if (__isnan(__k))
@@ -215,7 +215,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __ellint_1(const _Tp __k, const _Tp __phi)
+ __ellint_1(_Tp __k, _Tp __phi)
{
if (__isnan(__k) || __isnan(__phi))
@@ -262,7 +262,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __comp_ellint_2_series(const _Tp __k)
+ __comp_ellint_2_series(_Tp __k)
{
const _Tp __kk = __k * __k;
@@ -310,7 +310,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __ellint_rd(const _Tp __x, const _Tp __y, const _Tp __z)
+ __ellint_rd(_Tp __x, _Tp __y, _Tp __z)
{
const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
const _Tp __errtol = std::pow(__eps / _Tp(8), _Tp(1) / _Tp(6));
@@ -398,7 +398,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __comp_ellint_2(const _Tp __k)
+ __comp_ellint_2(_Tp __k)
{
if (__isnan(__k))
@@ -432,7 +432,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __ellint_2(const _Tp __k, const _Tp __phi)
+ __ellint_2(_Tp __k, _Tp __phi)
{
if (__isnan(__k) || __isnan(__phi))
@@ -491,7 +491,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __ellint_rc(const _Tp __x, const _Tp __y)
+ __ellint_rc(_Tp __x, _Tp __y)
{
const _Tp __min = std::numeric_limits<_Tp>::min();
const _Tp __max = std::numeric_limits<_Tp>::max();
@@ -562,7 +562,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __ellint_rj(const _Tp __x, const _Tp __y, const _Tp __z, const _Tp __p)
+ __ellint_rj(_Tp __x, _Tp __y, _Tp __z, _Tp __p)
{
const _Tp __min = std::numeric_limits<_Tp>::min();
const _Tp __max = std::numeric_limits<_Tp>::max();
@@ -666,7 +666,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __comp_ellint_3(const _Tp __k, const _Tp __nu)
+ __comp_ellint_3(_Tp __k, _Tp __nu)
{
if (__isnan(__k) || __isnan(__nu))
@@ -706,7 +706,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __ellint_3(const _Tp __k, const _Tp __nu, const _Tp __phi)
+ __ellint_3(_Tp __k, _Tp __nu, _Tp __phi)
{
if (__isnan(__k) || __isnan(__nu) || __isnan(__phi))
diff --git a/libstdc++-v3/include/tr1/exp_integral.tcc b/libstdc++-v3/include/tr1/exp_integral.tcc
index 8c7fdce48e9..86c03a6ddc9 100644
--- a/libstdc++-v3/include/tr1/exp_integral.tcc
+++ b/libstdc++-v3/include/tr1/exp_integral.tcc
@@ -58,7 +58,7 @@ namespace tr1
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
- template<typename _Tp> _Tp __expint_E1(const _Tp);
+ template<typename _Tp> _Tp __expint_E1(_Tp);
/**
* @brief Return the exponential integral @f$ E_1(x) @f$
@@ -75,7 +75,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __expint_E1_series(const _Tp __x)
+ __expint_E1_series(_Tp __x)
{
const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
_Tp __term = _Tp(1);
@@ -112,7 +112,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __expint_E1_asymp(const _Tp __x)
+ __expint_E1_asymp(_Tp __x)
{
_Tp __term = _Tp(1);
_Tp __esum = _Tp(1);
@@ -149,7 +149,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __expint_En_series(const unsigned int __n, const _Tp __x)
+ __expint_En_series(unsigned int __n, _Tp __x)
{
const unsigned int __max_iter = 100;
const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
@@ -195,7 +195,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __expint_En_cont_frac(const unsigned int __n, const _Tp __x)
+ __expint_En_cont_frac(unsigned int __n, _Tp __x)
{
const unsigned int __max_iter = 100;
const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
@@ -240,7 +240,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __expint_En_recursion(const unsigned int __n, const _Tp __x)
+ __expint_En_recursion(unsigned int __n, _Tp __x)
{
_Tp __En;
_Tp __E1 = __expint_E1(__x);
@@ -284,7 +284,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __expint_Ei_series(const _Tp __x)
+ __expint_Ei_series(_Tp __x)
{
_Tp __term = _Tp(1);
_Tp __sum = _Tp(0);
@@ -315,7 +315,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __expint_Ei_asymp(const _Tp __x)
+ __expint_Ei_asymp(_Tp __x)
{
_Tp __term = _Tp(1);
_Tp __sum = _Tp(1);
@@ -348,7 +348,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __expint_Ei(const _Tp __x)
+ __expint_Ei(_Tp __x)
{
if (__x < _Tp(0))
return -__expint_E1(-__x);
@@ -372,7 +372,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __expint_E1(const _Tp __x)
+ __expint_E1(_Tp __x)
{
if (__x < _Tp(0))
return -__expint_Ei(-__x);
@@ -402,7 +402,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __expint_asymp(const unsigned int __n, const _Tp __x)
+ __expint_asymp(unsigned int __n, _Tp __x)
{
_Tp __term = _Tp(1);
_Tp __sum = _Tp(1);
@@ -436,7 +436,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __expint_large_n(const unsigned int __n, const _Tp __x)
+ __expint_large_n(unsigned int __n, _Tp __x)
{
const _Tp __xpn = __x + __n;
const _Tp __xpn2 = __xpn * __xpn;
@@ -470,7 +470,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __expint(const unsigned int __n, const _Tp __x)
+ __expint(unsigned int __n, _Tp __x)
{
// Return NaN on NaN input.
if (__isnan(__x))
@@ -510,7 +510,7 @@ namespace tr1
*/
template<typename _Tp>
inline _Tp
- __expint(const _Tp __x)
+ __expint(_Tp __x)
{
if (__isnan(__x))
return std::numeric_limits<_Tp>::quiet_NaN();
diff --git a/libstdc++-v3/include/tr1/gamma.tcc b/libstdc++-v3/include/tr1/gamma.tcc
index a642eec5638..7ec19a3ed38 100644
--- a/libstdc++-v3/include/tr1/gamma.tcc
+++ b/libstdc++-v3/include/tr1/gamma.tcc
@@ -67,7 +67,8 @@ namespace tr1
* @return The Bernoulli number of order n.
*/
template <typename _Tp>
- _Tp __bernoulli_series(unsigned int __n)
+ _Tp
+ __bernoulli_series(unsigned int __n)
{
static const _Tp __num[28] = {
@@ -130,10 +131,8 @@ namespace tr1
*/
template<typename _Tp>
inline _Tp
- __bernoulli(const int __n)
- {
- return __bernoulli_series<_Tp>(__n);
- }
+ __bernoulli(int __n)
+ { return __bernoulli_series<_Tp>(__n); }
/**
@@ -146,7 +145,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __log_gamma_bernoulli(const _Tp __x)
+ __log_gamma_bernoulli(_Tp __x)
{
_Tp __lg = (__x - _Tp(0.5L)) * std::log(__x) - __x
+ _Tp(0.5L) * std::log(_Tp(2)
@@ -174,7 +173,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __log_gamma_lanczos(const _Tp __x)
+ __log_gamma_lanczos(_Tp __x)
{
const _Tp __xm1 = __x - _Tp(1);
@@ -218,7 +217,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __log_gamma(const _Tp __x)
+ __log_gamma(_Tp __x)
{
if (__x > _Tp(0.5L))
return __log_gamma_lanczos(__x);
@@ -245,7 +244,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __log_gamma_sign(const _Tp __x)
+ __log_gamma_sign(_Tp __x)
{
if (__x > _Tp(0))
return _Tp(1);
@@ -276,7 +275,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __log_bincoef(const unsigned int __n, const unsigned int __k)
+ __log_bincoef(unsigned int __n, unsigned int __k)
{
// Max e exponent before overflow.
static const _Tp __max_bincoeff
@@ -307,7 +306,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __bincoef(const unsigned int __n, const unsigned int __k)
+ __bincoef(unsigned int __n, unsigned int __k)
{
// Max e exponent before overflow.
static const _Tp __max_bincoeff
@@ -330,10 +329,8 @@ namespace tr1
*/
template<typename _Tp>
inline _Tp
- __gamma(const _Tp __x)
- {
- return std::exp(__log_gamma(__x));
- }
+ __gamma(_Tp __x)
+ { return std::exp(__log_gamma(__x)); }
/**
@@ -351,7 +348,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __psi_series(const _Tp __x)
+ __psi_series(_Tp __x)
{
_Tp __sum = -__numeric_constants<_Tp>::__gamma_e() - _Tp(1) / __x;
const unsigned int __max_iter = 100000;
@@ -381,7 +378,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __psi_asymp(const _Tp __x)
+ __psi_asymp(_Tp __x)
{
_Tp __sum = std::log(__x) - _Tp(0.5L) / __x;
const _Tp __xx = __x * __x;
@@ -412,7 +409,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __psi(const _Tp __x)
+ __psi(_Tp __x)
{
const int __n = static_cast<int>(__x + 0.5L);
const _Tp __eps = _Tp(4) * std::numeric_limits<_Tp>::epsilon();
@@ -441,7 +438,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __psi(const unsigned int __n, const _Tp __x)
+ __psi(unsigned int __n, _Tp __x)
{
if (__x <= _Tp(0))
std::__throw_domain_error(__N("Argument out of range "
diff --git a/libstdc++-v3/include/tr1/hypergeometric.tcc b/libstdc++-v3/include/tr1/hypergeometric.tcc
index cfe03a96622..14f7258ac4b 100644
--- a/libstdc++-v3/include/tr1/hypergeometric.tcc
+++ b/libstdc++-v3/include/tr1/hypergeometric.tcc
@@ -75,7 +75,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __conf_hyperg_series(const _Tp __a, const _Tp __c, const _Tp __x)
+ __conf_hyperg_series(_Tp __a, _Tp __c, _Tp __x)
{
const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
@@ -112,7 +112,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __conf_hyperg_luke(const _Tp __a, const _Tp __c, const _Tp __xin)
+ __conf_hyperg_luke(_Tp __a, _Tp __c, _Tp __xin)
{
const _Tp __big = std::pow(std::numeric_limits<_Tp>::max(), _Tp(0.16L));
const int __nmax = 20000;
@@ -218,8 +218,8 @@ namespace tr1
* @return The confluent hypergeometric function.
*/
template<typename _Tp>
- inline _Tp
- __conf_hyperg(const _Tp __a, const _Tp __c, const _Tp __x)
+ _Tp
+ __conf_hyperg(_Tp __a, _Tp __c, _Tp __x)
{
#if _GLIBCXX_USE_C99_MATH_TR1
const _Tp __c_nint = std::tr1::nearbyint(__c);
@@ -263,8 +263,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __hyperg_series(const _Tp __a, const _Tp __b,
- const _Tp __c, const _Tp __x)
+ __hyperg_series(_Tp __a, _Tp __b, _Tp __c, _Tp __x)
{
const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
@@ -297,8 +296,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __hyperg_luke(const _Tp __a, const _Tp __b, const _Tp __c,
- const _Tp __xin)
+ __hyperg_luke(_Tp __a, _Tp __b, _Tp __c, _Tp __xin)
{
const _Tp __big = std::pow(std::numeric_limits<_Tp>::max(), _Tp(0.16L));
const int __nmax = 20000;
@@ -432,8 +430,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __hyperg_reflect(const _Tp __a, const _Tp __b, const _Tp __c,
- const _Tp __x)
+ __hyperg_reflect(_Tp __a, _Tp __b, _Tp __c, _Tp __x)
{
const _Tp __d = __c - __a - __b;
const int __intd = std::floor(__d + _Tp(0.5L));
@@ -722,8 +719,8 @@ namespace tr1
* @return The confluent hypergeometric function.
*/
template<typename _Tp>
- inline _Tp
- __hyperg(const _Tp __a, const _Tp __b, const _Tp __c, const _Tp __x)
+ _Tp
+ __hyperg(_Tp __a, _Tp __b, _Tp __c, _Tp __x)
{
#if _GLIBCXX_USE_C99_MATH_TR1
const _Tp __a_nint = std::tr1::nearbyint(__a);
diff --git a/libstdc++-v3/include/tr1/legendre_function.tcc b/libstdc++-v3/include/tr1/legendre_function.tcc
index 89bf26790f9..bfecf00af59 100644
--- a/libstdc++-v3/include/tr1/legendre_function.tcc
+++ b/libstdc++-v3/include/tr1/legendre_function.tcc
@@ -72,7 +72,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __poly_legendre_p(const unsigned int __l, const _Tp __x)
+ __poly_legendre_p(unsigned int __l, _Tp __x)
{
if ((__x < _Tp(-1)) || (__x > _Tp(+1)))
@@ -129,8 +129,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __assoc_legendre_p(const unsigned int __l, const unsigned int __m,
- const _Tp __x)
+ __assoc_legendre_p(unsigned int __l, unsigned int __m, _Tp __x)
{
if (__x < _Tp(-1) || __x > _Tp(+1))
@@ -209,8 +208,7 @@ namespace tr1
*/
template <typename _Tp>
_Tp
- __sph_legendre(const unsigned int __l, const unsigned int __m,
- const _Tp __theta)
+ __sph_legendre(unsigned int __l, unsigned int __m, _Tp __theta)
{
if (__isnan(__theta))
return std::numeric_limits<_Tp>::quiet_NaN();
diff --git a/libstdc++-v3/include/tr1/modified_bessel_func.tcc b/libstdc++-v3/include/tr1/modified_bessel_func.tcc
index 8e4d5b9c749..3d1fb904a03 100644
--- a/libstdc++-v3/include/tr1/modified_bessel_func.tcc
+++ b/libstdc++-v3/include/tr1/modified_bessel_func.tcc
@@ -77,7 +77,7 @@ namespace tr1
*/
template <typename _Tp>
void
- __bessel_ik(const _Tp __nu, const _Tp __x,
+ __bessel_ik(_Tp __nu, _Tp __x,
_Tp & __Inu, _Tp & __Knu, _Tp & __Ipnu, _Tp & __Kpnu)
{
if (__x == _Tp(0))
@@ -132,7 +132,7 @@ namespace tr1
}
if (__i > __max_iter)
std::__throw_runtime_error(__N("Argument x too large "
- "in __bessel_jn; "
+ "in __bessel_ik; "
"try asymptotic expansion."));
_Tp __Inul = __fp_min;
_Tp __Ipnul = __h * __Inul;
@@ -185,7 +185,7 @@ namespace tr1
}
if (__i > __max_iter)
std::__throw_runtime_error(__N("Bessel k series failed to converge "
- "in __bessel_jn."));
+ "in __bessel_ik."));
__Kmu = __sum;
__Knu1 = __sum1 * __xi2;
}
@@ -221,7 +221,7 @@ namespace tr1
}
if (__i > __max_iter)
std::__throw_runtime_error(__N("Steed's method failed "
- "in __bessel_jn."));
+ "in __bessel_ik."));
__h = __a1 * __h;
__Kmu = std::sqrt(__numeric_constants<_Tp>::__pi() / (_Tp(2) * __x))
* std::exp(-__x) / __s;
@@ -261,7 +261,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __cyl_bessel_i(const _Tp __nu, const _Tp __x)
+ __cyl_bessel_i(_Tp __nu, _Tp __x)
{
if (__nu < _Tp(0) || __x < _Tp(0))
std::__throw_domain_error(__N("Bad argument "
@@ -297,7 +297,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __cyl_bessel_k(const _Tp __nu, const _Tp __x)
+ __cyl_bessel_k(_Tp __nu, _Tp __x)
{
if (__nu < _Tp(0) || __x < _Tp(0))
std::__throw_domain_error(__N("Bad argument "
@@ -331,7 +331,7 @@ namespace tr1
*/
template <typename _Tp>
void
- __sph_bessel_ik(const unsigned int __n, const _Tp __x,
+ __sph_bessel_ik(unsigned int __n, _Tp __x,
_Tp & __i_n, _Tp & __k_n, _Tp & __ip_n, _Tp & __kp_n)
{
const _Tp __nu = _Tp(__n) + _Tp(0.5L);
@@ -366,8 +366,7 @@ namespace tr1
*/
template <typename _Tp>
void
- __airy(const _Tp __x,
- _Tp & __Ai, _Tp & __Bi, _Tp & __Aip, _Tp & __Bip)
+ __airy(_Tp __x, _Tp & __Ai, _Tp & __Bi, _Tp & __Aip, _Tp & __Bip)
{
const _Tp __absx = std::abs(__x);
const _Tp __rootx = std::sqrt(__absx);
diff --git a/libstdc++-v3/include/tr1/poly_hermite.tcc b/libstdc++-v3/include/tr1/poly_hermite.tcc
index 3be3d6da30a..1f05f79dd91 100644
--- a/libstdc++-v3/include/tr1/poly_hermite.tcc
+++ b/libstdc++-v3/include/tr1/poly_hermite.tcc
@@ -66,7 +66,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __poly_hermite_recursion(const unsigned int __n, const _Tp __x)
+ __poly_hermite_recursion(unsigned int __n, _Tp __x)
{
// Compute H_0.
_Tp __H_0 = 1;
@@ -108,7 +108,7 @@ namespace tr1
*/
template<typename _Tp>
inline _Tp
- __poly_hermite(const unsigned int __n, const _Tp __x)
+ __poly_hermite(unsigned int __n, _Tp __x)
{
if (__isnan(__x))
return std::numeric_limits<_Tp>::quiet_NaN();
diff --git a/libstdc++-v3/include/tr1/poly_laguerre.tcc b/libstdc++-v3/include/tr1/poly_laguerre.tcc
index 066888a4d95..99d4a153984 100644
--- a/libstdc++-v3/include/tr1/poly_laguerre.tcc
+++ b/libstdc++-v3/include/tr1/poly_laguerre.tcc
@@ -67,8 +67,7 @@ namespace tr1
*/
template<typename _Tpa, typename _Tp>
_Tp
- __poly_laguerre_large_n(const unsigned __n, const _Tpa __alpha1,
- const _Tp __x)
+ __poly_laguerre_large_n(unsigned __n, _Tpa __alpha1, _Tp __x)
{
const _Tp __a = -_Tp(__n);
const _Tp __b = _Tp(__alpha1) + _Tp(1);
@@ -122,8 +121,7 @@ namespace tr1
*/
template<typename _Tpa, typename _Tp>
_Tp
- __poly_laguerre_hyperg(const unsigned int __n, const _Tpa __alpha1,
- const _Tp __x)
+ __poly_laguerre_hyperg(unsigned int __n, _Tpa __alpha1, _Tp __x)
{
const _Tp __b = _Tp(__alpha1) + _Tp(1);
const _Tp __mx = -__x;
@@ -179,8 +177,7 @@ namespace tr1
*/
template<typename _Tpa, typename _Tp>
_Tp
- __poly_laguerre_recursion(const unsigned int __n,
- const _Tpa __alpha1, const _Tp __x)
+ __poly_laguerre_recursion(unsigned int __n, _Tpa __alpha1, _Tp __x)
{
// Compute l_0.
_Tp __l_0 = _Tp(1);
@@ -238,9 +235,8 @@ namespace tr1
* degree @f$ \alpha @f$, and argument x.
*/
template<typename _Tpa, typename _Tp>
- inline _Tp
- __poly_laguerre(const unsigned int __n, const _Tpa __alpha1,
- const _Tp __x)
+ _Tp
+ __poly_laguerre(unsigned int __n, _Tpa __alpha1, _Tp __x)
{
if (__x < _Tp(0))
std::__throw_domain_error(__N("Negative argument "
@@ -292,11 +288,8 @@ namespace tr1
*/
template<typename _Tp>
inline _Tp
- __assoc_laguerre(const unsigned int __n, const unsigned int __m,
- const _Tp __x)
- {
- return __poly_laguerre<unsigned int, _Tp>(__n, __m, __x);
- }
+ __assoc_laguerre(unsigned int __n, unsigned int __m, _Tp __x)
+ { return __poly_laguerre<unsigned int, _Tp>(__n, __m, __x); }
/**
@@ -315,10 +308,8 @@ namespace tr1
*/
template<typename _Tp>
inline _Tp
- __laguerre(const unsigned int __n, const _Tp __x)
- {
- return __poly_laguerre<unsigned int, _Tp>(__n, 0, __x);
- }
+ __laguerre(unsigned int __n, _Tp __x)
+ { return __poly_laguerre<unsigned int, _Tp>(__n, 0, __x); }
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std::tr1::__detail
diff --git a/libstdc++-v3/include/tr1/riemann_zeta.tcc b/libstdc++-v3/include/tr1/riemann_zeta.tcc
index 4a1e462e713..4023204c543 100644
--- a/libstdc++-v3/include/tr1/riemann_zeta.tcc
+++ b/libstdc++-v3/include/tr1/riemann_zeta.tcc
@@ -70,7 +70,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __riemann_zeta_sum(const _Tp __s)
+ __riemann_zeta_sum(_Tp __s)
{
// A user shouldn't get to this.
if (__s < _Tp(1))
@@ -107,7 +107,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __riemann_zeta_alt(const _Tp __s)
+ __riemann_zeta_alt(_Tp __s)
{
_Tp __sgn = _Tp(1);
_Tp __zeta = _Tp(0);
@@ -149,7 +149,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __riemann_zeta_glob(const _Tp __s)
+ __riemann_zeta_glob(_Tp __s)
{
_Tp __zeta = _Tp(0);
@@ -244,7 +244,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __riemann_zeta_product(const _Tp __s)
+ __riemann_zeta_product(_Tp __s)
{
static const _Tp __prime[] = {
_Tp(2), _Tp(3), _Tp(5), _Tp(7), _Tp(11), _Tp(13), _Tp(17), _Tp(19),
@@ -285,7 +285,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __riemann_zeta(const _Tp __s)
+ __riemann_zeta(_Tp __s)
{
if (__isnan(__s))
return std::numeric_limits<_Tp>::quiet_NaN();
@@ -357,7 +357,7 @@ namespace tr1
*/
template<typename _Tp>
_Tp
- __hurwitz_zeta_glob(const _Tp __a, const _Tp __s)
+ __hurwitz_zeta_glob(_Tp __a, _Tp __s)
{
_Tp __zeta = _Tp(0);
@@ -422,10 +422,8 @@ namespace tr1
*/
template<typename _Tp>
inline _Tp
- __hurwitz_zeta(const _Tp __a, const _Tp __s)
- {
- return __hurwitz_zeta_glob(__a, __s);
- }
+ __hurwitz_zeta(_Tp __a, _Tp __s)
+ { return __hurwitz_zeta_glob(__a, __s); }
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std::tr1::__detail
diff --git a/libstdc++-v3/include/tr1/special_function_util.h b/libstdc++-v3/include/tr1/special_function_util.h
index 3bb36a19ee8..abec0506c01 100644
--- a/libstdc++-v3/include/tr1/special_function_util.h
+++ b/libstdc++-v3/include/tr1/special_function_util.h
@@ -107,30 +107,22 @@ namespace tr1
/// out of intrinsics, this will disappear completely in favor of
/// std::isnan.
template<typename _Tp>
- inline bool __isnan(const _Tp __x)
- {
- return std::isnan(__x);
- }
+ inline bool __isnan(_Tp __x)
+ { return std::isnan(__x); }
#else
template<typename _Tp>
inline bool __isnan(const _Tp __x)
- {
- return __builtin_isnan(__x);
- }
+ { return __builtin_isnan(__x); }
template<>
- inline bool __isnan<float>(const float __x)
- {
- return __builtin_isnanf(__x);
- }
+ inline bool __isnan<float>(float __x)
+ { return __builtin_isnanf(__x); }
template<>
- inline bool __isnan<long double>(const long double __x)
- {
- return __builtin_isnanl(__x);
- }
+ inline bool __isnan<long double>(long double __x)
+ { return __builtin_isnanl(__x); }
#endif
diff --git a/libstdc++-v3/src/c++11/hashtable_c++0x.cc b/libstdc++-v3/src/c++11/hashtable_c++0x.cc
index 7617c58576b..b6a56bcc809 100644
--- a/libstdc++-v3/src/c++11/hashtable_c++0x.cc
+++ b/libstdc++-v3/src/c++11/hashtable_c++0x.cc
@@ -94,4 +94,11 @@ namespace __detail
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace __detail
+
+ // Instantiations.
+ template
+ const unsigned long*
+ lower_bound<const unsigned long*, size_t>(const unsigned long*,
+ const unsigned long*,
+ const size_t&);
} // namespace std
diff --git a/libstdc++-v3/testsuite/27_io/basic_ios/pr56193.cc b/libstdc++-v3/testsuite/27_io/basic_ios/pr56193.cc
new file mode 100644
index 00000000000..79793e26756
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/basic_ios/pr56193.cc
@@ -0,0 +1,31 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++11" }
+
+// 2013-02-06 Edward Smith-Rowland <3dw4rd@verizon.net>
+//
+// Copyright (C) 2013 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <iostream>
+
+// PR libstdc++/56193
+void
+test01()
+{
+ std::cout << std::cout; // { dg-error "cannot bind" }
+}
+// { dg-error "initializing argument" "" { target *-*-* } 602 }
diff --git a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/pr56216.cc b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/pr56216.cc
new file mode 100644
index 00000000000..41afe5e37f6
--- /dev/null
+++ b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/pr56216.cc
@@ -0,0 +1,47 @@
+// 2013-02-08 Edward Smith-Rowland <3dw4rd@verizon.net>
+//
+// Copyright (C) 2013 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// PR libstdc++/56216 - Crash of Bessel functions at x==0!
+
+#include <testsuite_hooks.h>
+#include <tr1/cmath>
+
+void
+test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ double j0 = std::tr1::cyl_bessel_j(0.0, 0.0);
+ double i0 = std::tr1::cyl_bessel_i(0.0, 0.0);
+ double j1 = std::tr1::cyl_bessel_j(1.0, 0.0);
+ double i1 = std::tr1::cyl_bessel_i(1.0, 0.0);
+
+ VERIFY(j0 == 1.0);
+ VERIFY(i0 == 1.0);
+ VERIFY(j1 == 0.0);
+ VERIFY(i1 == 0.0);
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}